diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..97a2bb84 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": ["next", "next/core-web-vitals"] +} diff --git a/.gitattributes b/.gitattributes index e69de29b..26d8ef74 100644 --- a/.gitattributes +++ b/.gitattributes @@ -0,0 +1 @@ +*.html linguist-generated=true diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 00000000..bceabfb4 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,37 @@ +# Basic set up for three package managers + +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'monthly' + + # Maintain dependencies for npm + - package-ecosystem: 'npm' + directory: '/' + schedule: + interval: 'monthly' + + groups: + dependencies: + patterns: + - '@chakra-ui*' + - '@emotion*' + - '@mdx-js*' + - '@next*' + - 'apexcharts' + - 'd3' + - 'date*' + - 'framer*' + - 'isomorphic*' + - 'next*' + - 'react*' + - 'rehype*' + - 'swr' + dev-dependencies: + patterns: + - '@types/*' + - 'eslint*' + - 'playwright' diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..f7d228af --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,54 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: [main] + pull_request: + branches: [main] + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment +concurrency: + group: 'pages' + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build with Next.js + run: npm run build + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./out + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + if: github.ref == 'refs/heads/main' + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml index 8ecafdab..f78aab5e 100644 --- a/.github/workflows/linkcheck.yml +++ b/.github/workflows/linkcheck.yml @@ -37,23 +37,23 @@ jobs: if: env.lychee_exit_code != 0 uses: actions-cool/issues-helper@v3 with: - actions: "update-issue" + actions: 'update-issue' token: ${{ secrets.GITHUB_TOKEN }} issue-number: ${{ env.LINK_TRACKING_ISSUE_NUMBER }} - state: "open" + state: 'open' body: ${{ steps.readReport.outputs.FILE_CONTENT }} - update-mode: "replace" + update-mode: 'replace' - name: Update link tracking issue (no invalid links) if: env.lychee_exit_code == 0 uses: actions-cool/issues-helper@v3 with: - actions: "update-issue" + actions: 'update-issue' token: ${{ secrets.GITHUB_TOKEN }} issue-number: ${{ env.LINK_TRACKING_ISSUE_NUMBER }} - state: "closed" - body: "No invalid links found! 🤖" - update-mode: "replace" + state: 'closed' + body: 'No invalid links found! 🤖' + update-mode: 'replace' - name: Upload artifact uses: actions/upload-artifact@v3 diff --git a/.gitignore b/.gitignore index 6a6b5e9f..97cbfcf2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,41 @@ -.idea* -.DS_Store \ No newline at end of file +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Jupyter Notebook +.ipynb_checkpoints + +.yarn +.vscode/ + +public/atom.xml +public/rss.json +public/rss.xml diff --git a/.imgbotconfig b/.imgbotconfig new file mode 100644 index 00000000..c9bf9d5a --- /dev/null +++ b/.imgbotconfig @@ -0,0 +1,4 @@ +{ + "ignoredFiles": ["public/parcels-assets/*", "public/cards/*"], + "schedule": "monthly" +} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3df55fac..50661092 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,9 +1,44 @@ repos: - - repo: https://github.com/psf/black - rev: "25.1.0" + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: - - id: black - - repo: https://github.com/rbubley/mirrors-prettier # Update mirror as official mirror is deprecated - rev: v3.5.3 + - id: trailing-whitespace + exclude: \.html$ + - id: end-of-file-fixer + exclude: \.html$ + - id: check-added-large-files + args: ['--maxkb=20000'] + - id: check-yaml + - id: double-quote-string-fixer + exclude: \.html$ + + - repo: https://github.com/pre-commit/mirrors-prettier + rev: 'v4.0.0-alpha.8' hooks: - id: prettier + exclude: \.html$ + + files: "\\.(\ + css|less|scss\ + |graphql|gql\ + |html\ + |js|jsx\ + |json\ + |ts|tsx\ + |vue\ + |yaml|yml\ + )$" + - repo: https://github.com/pre-commit/mirrors-prettier + rev: 'v4.0.0-alpha.8' + hooks: + - id: prettier + + name: prettier-markdown + entry: prettier --write --parser mdx + files: "\\.(\ + |md|markdown|mdown|mkdn\ + |mdx\ + )$" + # exclude files ending with .html + exclude: \.html$ diff --git a/.prettierignore b/.prettierignore index d2eb85c1..824a4db2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,4 @@ -* - -# Ignore all except... -!index.html -!utrechtteam.html +node_modules +**/node_modules +**/lib +.next/ diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..ff572f83 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "tabWidth": 2, + "semi": false, + "singleQuote": true, + "printWidth": 80, + "quoteProps": "as-needed", + "jsxSingleQuote": true, + "importOrder": ["^components/(.*)$", "^data/(.*)$", "^lib/(.*)$", "^[./]"], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f5904da3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,207 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, and + distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by the + copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all other + entities that control, are controlled by, or are under common control with + that entity. For the purposes of this definition, "control" means (i) the + power, direct or indirect, to cause the direction or management of such + entity, whether by contract or otherwise, or (ii) ownership of + fifty percent (50%) or more of the outstanding shares, or (iii) beneficial + ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity exercising + permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation source, + and configuration files. + + "Object" form shall mean any form resulting from mechanical transformation + or translation of a Source form, including but not limited to compiled + object code, generated documentation, and conversions to + other media types. + + "Work" shall mean the work of authorship, whether in Source or Object + form, made available under the License, as indicated by a copyright notice + that is included in or attached to the work (an example is provided in the + Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object form, + that is based on (or derived from) the Work and for which the editorial + revisions, annotations, elaborations, or other modifications represent, + as a whole, an original work of authorship. For the purposes of this + License, Derivative Works shall not include works that remain separable + from, or merely link (or bind by name) to the interfaces of, the Work and + Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including the original + version of the Work and any modifications or additions to that Work or + Derivative Works thereof, that is intentionally submitted to Licensor for + inclusion in the Work by the copyright owner or by an individual or + Legal Entity authorized to submit on behalf of the copyright owner. + For the purposes of this definition, "submitted" means any form of + electronic, verbal, or written communication sent to the Licensor or its + representatives, including but not limited to communication on electronic + mailing lists, source code control systems, and issue tracking systems + that are managed by, or on behalf of, the Licensor for the purpose of + discussing and improving the Work, but excluding communication that is + conspicuously marked or otherwise designated in writing by the copyright + owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity on + behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. + + Subject to the terms and conditions of this License, each Contributor + hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable copyright license to reproduce, prepare + Derivative Works of, publicly display, publicly perform, sublicense, + and distribute the Work and such Derivative Works in + Source or Object form. + +3. Grant of Patent License. + + Subject to the terms and conditions of this License, each Contributor + hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, + royalty-free, irrevocable (except as stated in this section) patent + license to make, have made, use, offer to sell, sell, import, and + otherwise transfer the Work, where such license applies only to those + patent claims licensable by such Contributor that are necessarily + infringed by their Contribution(s) alone or by combination of their + Contribution(s) with the Work to which such Contribution(s) was submitted. + If You institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work or a + Contribution incorporated within the Work constitutes direct or + contributory patent infringement, then any patent licenses granted to + You under this License for that Work shall terminate as of the date such + litigation is filed. + +4. Redistribution. + + You may reproduce and distribute copies of the Work or Derivative Works + thereof in any medium, with or without modifications, and in Source or + Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a + copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You + distribute, all copyright, patent, trademark, and attribution notices from + the Source form of the Work, excluding those notices that do not pertain + to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable copy + of the attribution notices contained within such NOTICE file, excluding + those notices that do not pertain to any part of the Derivative Works, + in at least one of the following places: within a NOTICE text file + distributed as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, within a + display generated by the Derivative Works, if and wherever such + third-party notices normally appear. The contents of the NOTICE file are + for informational purposes only and do not modify the License. + You may add Your own attribution notices within Derivative Works that You + distribute, alongside or as an addendum to the NOTICE text from the Work, + provided that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and may + provide additional or different license terms and conditions for use, + reproduction, or distribution of Your modifications, or for any such + Derivative Works as a whole, provided Your use, reproduction, and + distribution of the Work otherwise complies with the conditions + stated in this License. + +5. Submission of Contributions. + + Unless You explicitly state otherwise, any Contribution intentionally + submitted for inclusion in the Work by You to the Licensor shall be under + the terms and conditions of this License, without any additional + terms or conditions. Notwithstanding the above, nothing herein shall + supersede or modify the terms of any separate license agreement you may + have executed with Licensor regarding such Contributions. + +6. Trademarks. + + This License does not grant permission to use the trade names, trademarks, + service marks, or product names of the Licensor, except as required for + reasonable and customary use in describing the origin of the Work and + reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + + Unless required by applicable law or agreed to in writing, Licensor + provides the Work (and each Contributor provides its Contributions) + on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied, including, without limitation, any warranties + or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS + FOR A PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any risks + associated with Your exercise of permissions under this License. + +8. Limitation of Liability. + + In no event and under no legal theory, whether in tort + (including negligence), contract, or otherwise, unless required by + applicable law (such as deliberate and grossly negligent acts) or agreed + to in writing, shall any Contributor be liable to You for damages, + including any direct, indirect, special, incidental, or consequential + damages of any character arising as a result of this License or out of + the use or inability to use the Work (including but not limited to damages + for loss of goodwill, work stoppage, computer failure or malfunction, + or any and all other commercial damages or losses), even if such + Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + + While redistributing the Work or Derivative Works thereof, You may choose + to offer, and charge a fee for, acceptance of support, warranty, + indemnity, or other liability obligations and/or rights consistent with + this License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf of any + other Contributor, and only if You agree to indemnify, defend, and hold + each Contributor harmless for any liability incurred by, or claims + asserted against, such Contributor by reason of your accepting any such + warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + + To apply the Apache License to your work, attach the following boilerplate + notice, with the fields enclosed by brackets "[]" replaced with your own + identifying information. (Don't include the brackets!) The text should be + enclosed in the appropriate comment syntax for the file format. We also + recommend that a file or class name and description of purpose be included + on the same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2025 OceanParcels + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. diff --git a/README.md b/README.md old mode 100755 new mode 100644 index b864d444..adc9e8db --- a/README.md +++ b/README.md @@ -1,9 +1,47 @@ -# Repository for the OceanParcels.org website +# OceanParcels Website -This git repository holds the code for the oceanparcels website +Website for the Parcels project. -## Copyright and License +## Overview -Content copyright the OceanParcels project, licensed under a CC-BY license. +This project is built using the following tools/technologies: -Layout is based on the [Modern Business](https://github.com/StartBootstrap/startbootstrap-modern-business/tree/master) theme, which is copyrighted 2013-2017 by Blackrock Digital LLC and released under the [MIT](https://github.com/StartBootstrap/startbootstrap-modern-business/blob/master/LICENSE) license. +1. [Next.js](https://nextjs.org/) +2. [Chakra UI](https://chakra-ui.com/) + +This project uses a combination of Javascript and Typescript (Javascript - as that was the language of the original website, and Typescript - to enforce typing for the data files). + +## Requirements + +1. [Node.js](https://nodejs.org/) +2. [npm](https://www.npmjs.com/) + +## Installation for local development + +### 1. Clone the repository + +```bash +git clone https://github.com/OceanParcels/oceanparcels_website +``` + +### 2. Install dependencies + +```bash +npm install +``` + +### 3. Run the development server + +```bash +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `src/pages/index.js`. The page auto-updates as you edit the file. + +## Acknowledgements + +This website was built using the Xarray website (licensed under Apache 2.0) as a starting point. See [licenses/xarray.dev](./licenses/xarray.dev-license) for more details. + +Any edits are licensed under the [Apache 2.0 license](./LICENSE). diff --git a/TrAtlDrifters.json b/TrAtlDrifters.json deleted file mode 100644 index 01a20f1a..00000000 --- a/TrAtlDrifters.json +++ /dev/null @@ -1 +0,0 @@ -{"drifter_1": [["2019-07-20T18:46:00", 6.99878, -29.91771], ["2019-07-20T19:05:56", 6.99525, -29.91513], ["2019-07-20T19:35:19", 6.98882, -29.91025], ["2019-07-20T20:04:49", 6.98243, -29.90597], ["2019-07-20T20:34:49", 6.97655, -29.90271], ["2019-07-20T21:05:58", 6.97117, -29.89978], ["2019-07-20T21:34:21", 6.96602, -29.89719], ["2019-07-20T23:03:07", 6.95064, -29.88733], ["2019-07-20T23:33:07", 6.94622, -29.88398], ["2019-07-21T00:03:07", 6.94343, -29.88141], ["2019-07-21T00:34:29", 6.94126, -29.87893], ["2019-07-21T01:04:29", 6.93924, -29.87653], ["2019-07-21T02:32:26", 6.93622, -29.86786], ["2019-07-21T03:02:27", 6.93581, -29.86486], ["2019-07-21T03:32:27", 6.93637, -29.86203], ["2019-07-21T06:59:58", 6.95256, -29.84344], ["2019-07-21T08:01:25", 6.95332, -29.83661], ["2019-07-21T08:28:22", 6.95326, -29.83353], ["2019-07-21T08:58:22", 6.95244, -29.83035], ["2019-07-21T09:27:31", 6.95038, -29.82753], ["2019-07-21T09:57:31", 6.94961, -29.82538], ["2019-07-21T10:27:31", 6.94849, -29.82263], ["2019-07-21T11:26:47", 6.94633, -29.81553], ["2019-07-21T11:56:47", 6.94607, -29.81244], ["2019-07-21T12:26:33", 6.94651, -29.80862], ["2019-07-21T13:56:57", 6.95035, -29.79354], ["2019-07-21T14:25:46", 6.95223, -29.78839], ["2019-07-21T14:56:57", 6.95426, -29.7829], ["2019-07-21T15:26:56", 6.95652, -29.77697], ["2019-07-21T15:56:56", 6.95884, -29.76959], ["2019-07-21T16:54:34", 6.96133, -29.75711], ["2019-07-21T17:23:54", 6.96297, -29.74962], ["2019-07-21T17:53:54", 6.96563, -29.74421], ["2019-07-21T18:23:54", 6.96808, -29.74069], ["2019-07-21T19:52:45", 6.97432, -29.72836], ["2019-07-21T20:22:45", 6.97698, -29.72433], ["2019-07-21T20:52:45", 6.9799, -29.71927], ["2019-07-21T22:51:06", 6.98808, -29.69198], ["2019-07-21T23:21:06", 6.9892, -29.68589], ["2019-07-21T23:51:06", 6.98984, -29.6792], ["2019-07-22T00:20:36", 6.99149, -29.67172], ["2019-07-22T00:50:36", 6.99376, -29.66537], ["2019-07-22T01:22:57", 6.99779, -29.65845], ["2019-07-22T03:18:52", 7.01418, -29.63058], ["2019-07-22T05:47:29", 7.03277, -29.59125]], "drifter_2": [["2019-07-20T18:46:00", 6.99878, -29.91771], ["2019-07-20T19:37:00", 6.98829, -29.90997], ["2019-07-20T20:07:00", 6.98177, -29.90576], ["2019-07-20T20:37:00", 6.97611, -29.9025], ["2019-07-20T23:06:28", 6.95002, -29.88673], ["2019-07-20T23:36:28", 6.94633, -29.88381], ["2019-07-21T00:06:28", 6.9432, -29.88089], ["2019-07-21T03:34:36", 6.93675, -29.86139], ["2019-07-21T04:04:15", 6.93753, -29.85982], ["2019-07-21T04:34:15", 6.93998, -29.85785], ["2019-07-21T05:33:51", 6.94575, -29.85236], ["2019-07-21T12:01:00", 6.94629, -29.81131], ["2019-07-21T13:32:25", 6.94902, -29.79665], ["2019-07-21T14:02:25", 6.95074, -29.79184], ["2019-07-21T14:32:25", 6.95289, -29.78635], ["2019-07-21T17:58:54", 6.96636, -29.74298], ["2019-07-21T18:28:54", 6.96872, -29.7392], ["2019-07-21T18:58:54", 6.97031, -29.7356], ["2019-07-21T19:29:33", 6.97225, -29.73175], ["2019-07-21T19:58:18", 6.97494, -29.72752], ["2019-07-21T20:28:18", 6.97803, -29.72246], ["2019-07-21T20:58:18", 6.98086, -29.71783], ["2019-07-21T21:59:26", 6.98624, -29.70472], ["2019-07-21T22:29:26", 6.98787, -29.69734], ["2019-07-21T22:59:26", 6.98864, -29.6897], ["2019-07-22T00:27:28", 6.99208, -29.66946], ["2019-07-22T01:56:25", 7.0036, -29.65205], ["2019-07-22T02:26:25", 7.00858, -29.64536], ["2019-07-22T02:56:25", 7.01266, -29.63712], ["2019-07-22T03:25:21", 7.01499, -29.62778], ["2019-07-22T06:24:13", 7.03823, -29.58093], ["2019-07-22T07:23:58", 7.04612, -29.56509], ["2019-07-22T07:53:58", 7.0496, -29.55685], ["2019-07-22T08:23:58", 7.05312, -29.54913], ["2019-07-22T08:53:21", 7.05681, -29.5418], ["2019-07-22T09:25:28", 7.0609, -29.53412], ["2019-07-22T09:53:21", 7.06561, -29.52893], ["2019-07-22T10:23:14", 7.07053, -29.52402], ["2019-07-22T13:23:28", 7.11236, -29.5023], ["2019-07-22T13:53:28", 7.12004, -29.49878], ["2019-07-22T14:23:28", 7.12991, -29.49603], ["2019-07-22T14:52:25", 7.13912, -29.4925], ["2019-07-22T15:22:25", 7.14912, -29.48718], ["2019-07-22T16:50:36", 7.17569, -29.46806], ["2019-07-22T17:20:36", 7.18299, -29.46162], ["2019-07-22T17:50:36", 7.18896, -29.45596], ["2019-07-22T18:20:14", 7.19508, -29.45065], ["2019-07-22T18:50:14", 7.20066, -29.44473], ["2019-07-22T19:20:26", 7.20668, -29.43855], ["2019-07-22T19:50:26", 7.21243, -29.43349], ["2019-07-22T20:20:26", 7.22003, -29.42645], ["2019-07-22T20:50:55", 7.22676, -29.41941], ["2019-07-22T21:20:55", 7.23457, -29.41211], ["2019-07-22T21:49:58", 7.24072, -29.40536], ["2019-07-22T22:19:58", 7.24737, -29.39703], ["2019-07-23T00:20:32", 7.26731, -29.3573], ["2019-07-23T02:48:26", 7.2981, -29.30466], ["2019-07-23T05:16:51", 7.31694, -29.24878], ["2019-07-23T05:46:27", 7.32004, -29.23648], ["2019-07-23T06:16:27", 7.32339, -29.22446], ["2019-07-23T07:47:01", 7.3318, -29.18622], ["2019-07-23T14:45:28", 7.33055, -29.01465], ["2019-07-23T15:12:43", 7.3294, -29.00188], ["2019-07-23T15:42:43", 7.32713, -28.9884], ["2019-07-23T17:42:08", 7.31799, -28.93427], ["2019-07-23T19:11:27", 7.30449, -28.89601], ["2019-07-23T19:41:27", 7.29758, -28.88322], ["2019-07-23T20:11:27", 7.29033, -28.87369], ["2019-07-23T21:41:54", 7.2766, -28.84187], ["2019-07-23T22:11:54", 7.27433, -28.83183], ["2019-07-23T22:41:54", 7.27257, -28.82144], ["2019-07-23T23:43:12", 7.27432, -28.80093], ["2019-07-24T00:39:42", 7.27901, -28.78192], ["2019-07-24T02:09:15", 7.28385, -28.75024], ["2019-07-24T02:38:48", 7.28485, -28.73975], ["2019-07-24T03:08:48", 7.28558, -28.73117], ["2019-07-24T04:10:30", 7.28791, -28.71381], ["2019-07-24T06:37:34", 7.292, -28.67236], ["2019-07-24T11:05:27", 7.28944, -28.57922], ["2019-07-24T11:35:18", 7.28861, -28.5687], ["2019-07-24T15:33:58", 7.28661, -28.49728], ["2019-07-24T17:33:10", 7.30084, -28.46378], ["2019-07-24T18:05:11", 7.30642, -28.45599], ["2019-07-24T18:32:47", 7.31122, -28.44973], ["2019-07-24T19:02:47", 7.31555, -28.44321], ["2019-07-24T19:33:45", 7.31859, -28.43631], ["2019-07-24T20:33:29", 7.32301, -28.42267], ["2019-07-24T22:01:31", 7.32926, -28.40046], ["2019-07-24T22:31:31", 7.32947, -28.39162], ["2019-07-24T23:01:31", 7.32994, -28.38226], ["2019-07-25T01:30:08", 7.34188, -28.34142], ["2019-07-25T02:00:30", 7.34455, -28.33661], ["2019-07-25T02:30:08", 7.34715, -28.33112], ["2019-07-25T03:29:14", 7.3534, -28.31484], ["2019-07-25T03:59:14", 7.35713, -28.30643], ["2019-07-25T04:29:14", 7.36031, -28.29965], ["2019-07-25T04:59:26", 7.36281, -28.29166], ["2019-07-25T05:29:26", 7.36611, -28.28308], ["2019-07-25T06:58:27", 7.37554, -28.26074], ["2019-07-25T07:58:05", 7.38402, -28.24591], ["2019-07-25T10:27:15", 7.40835, -28.20935], ["2019-07-25T12:56:00", 7.42805, -28.17301], ["2019-07-25T13:26:00", 7.43041, -28.16657], ["2019-07-25T13:56:00", 7.43268, -28.16168], ["2019-07-25T14:56:05", 7.43991, -28.14828], ["2019-07-25T20:24:28", 7.49933, -28.07285], ["2019-07-25T21:52:28", 7.50971, -28.05314], ["2019-07-25T22:22:28", 7.51469, -28.04687], ["2019-07-25T22:52:28", 7.51984, -28.0394], ["2019-07-26T00:21:41", 7.53547, -28.0117], ["2019-07-26T00:51:41", 7.53835, -28.00303], ["2019-07-26T01:21:41", 7.54041, -27.99393], ["2019-07-26T02:21:22", 7.54567, -27.97794], ["2019-07-26T03:50:49", 7.56255, -27.95966], ["2019-07-26T04:20:28", 7.56863, -27.95163], ["2019-07-26T04:50:28", 7.57378, -27.94348], ["2019-07-26T07:19:58", 7.59491, -27.90499], ["2019-07-26T07:49:58", 7.59882, -27.89795], ["2019-07-26T08:19:58", 7.60191, -27.88928], ["2019-07-26T09:48:34", 7.60884, -27.86055], ["2019-07-26T10:18:34", 7.61232, -27.85171], ["2019-07-26T10:48:34", 7.6164, -27.84433], ["2019-07-26T11:19:00", 7.61933, -27.83679], ["2019-07-26T11:48:11", 7.62251, -27.82883], ["2019-07-26T12:17:53", 7.62543, -27.82075], ["2019-07-26T12:47:53", 7.62831, -27.8132], ["2019-07-26T13:17:36", 7.63097, -27.80437], ["2019-07-26T13:47:36", 7.63209, -27.79587], ["2019-07-26T14:17:59", 7.63187, -27.7843], ["2019-07-26T14:47:16", 7.63113, -27.77289], ["2019-07-26T15:17:26", 7.63002, -27.76152], ["2019-07-26T15:47:26", 7.62805, -27.75071], ["2019-07-26T16:17:26", 7.62642, -27.73929], ["2019-07-26T16:46:40", 7.62577, -27.72882], ["2019-07-26T17:16:55", 7.62455, -27.71927], ["2019-07-26T17:46:03", 7.62324, -27.70975], ["2019-07-26T18:16:03", 7.62097, -27.69911], ["2019-07-26T18:46:03", 7.61921, -27.6889], ["2019-07-26T19:16:30", 7.61634, -27.67822], ["2019-07-26T19:45:47", 7.61215, -27.66861], ["2019-07-26T20:15:26", 7.60694, -27.65923], ["2019-07-26T20:45:26", 7.60196, -27.65039], ["2019-07-26T21:15:28", 7.59751, -27.64098], ["2019-07-26T21:45:28", 7.59343, -27.63308], ["2019-07-26T22:15:28", 7.58935, -27.62527], ["2019-07-26T22:45:05", 7.58545, -27.61789], ["2019-07-26T23:15:05", 7.58137, -27.60956], ["2019-07-26T23:44:34", 7.57695, -27.60071], ["2019-07-27T00:14:57", 7.57243, -27.59076], ["2019-07-27T00:43:52", 7.56805, -27.58131], ["2019-07-27T01:13:52", 7.56329, -27.57316], ["2019-07-27T01:43:52", 7.55668, -27.56586], ["2019-07-27T02:13:25", 7.54964, -27.55866], ["2019-07-27T02:43:25", 7.54247, -27.55231], ["2019-07-27T03:13:26", 7.53509, -27.54585], ["2019-07-27T03:43:26", 7.52754, -27.5395], ["2019-07-27T04:13:26", 7.51879, -27.53229], ["2019-07-27T04:42:55", 7.51044, -27.52464], ["2019-07-27T05:12:55", 7.50203, -27.51666], ["2019-07-27T05:42:28", 7.49455, -27.50909], ["2019-07-27T06:12:28", 7.48773, -27.50214], ["2019-07-27T06:41:55", 7.48067, -27.49622], ["2019-07-27T07:12:05", 7.47364, -27.48935], ["2019-07-27T07:41:36", 7.46748, -27.48218], ["2019-07-27T08:11:56", 7.4618, -27.47525], ["2019-07-27T08:41:02", 7.45671, -27.46938], ["2019-07-27T09:11:02", 7.45126, -27.46423], ["2019-07-27T09:41:02", 7.44701, -27.45831], ["2019-07-27T10:10:45", 7.44328, -27.45082], ["2019-07-27T10:40:45", 7.4392, -27.44318], ["2019-07-27T11:10:59", 7.435, -27.43536], ["2019-07-27T12:10:26", 7.42679, -27.42179], ["2019-07-27T12:40:26", 7.4228, -27.41655], ["2019-07-27T13:10:26", 7.41911, -27.41089], ["2019-07-27T13:39:57", 7.41604, -27.40643], ["2019-07-27T14:09:57", 7.41325, -27.40128], ["2019-07-27T14:39:24", 7.41028, -27.396], ["2019-07-27T15:09:24", 7.40796, -27.38922], ["2019-07-27T15:38:44", 7.40536, -27.38138], ["2019-07-27T16:38:12", 7.39775, -27.36866], ["2019-07-27T17:08:12", 7.39376, -27.36325], ["2019-07-27T17:38:12", 7.39067, -27.35904], ["2019-07-27T18:08:25", 7.38675, -27.35358], ["2019-07-27T18:37:56", 7.38328, -27.3486], ["2019-07-27T19:07:56", 7.37993, -27.34406], ["2019-07-27T19:37:56", 7.37791, -27.34003], ["2019-07-27T20:07:56", 7.37499, -27.33548], ["2019-07-27T21:36:42", 7.36587, -27.32317], ["2019-07-27T22:06:42", 7.36377, -27.3212], ["2019-07-27T22:36:42", 7.36218, -27.31888], ["2019-07-27T23:06:55", 7.36035, -27.31592], ["2019-07-28T00:06:27", 7.35679, -27.31075], ["2019-07-28T00:36:27", 7.35456, -27.30783], ["2019-07-28T01:06:27", 7.35203, -27.3038], ["2019-07-28T01:35:38", 7.35068, -27.30084], ["2019-07-28T02:05:56", 7.34989, -27.29813], ["2019-07-28T02:35:11", 7.34902, -27.29575], ["2019-07-28T03:04:55", 7.34852, -27.29231], ["2019-07-28T03:34:55", 7.34758, -27.28888], ["2019-07-28T04:04:55", 7.34711, -27.2851], ["2019-07-28T04:34:55", 7.34701, -27.2811], ["2019-07-28T05:04:55", 7.34735, -27.27655], ["2019-07-28T05:33:51", 7.34807, -27.27294], ["2019-07-28T06:03:51", 7.3482, -27.26968], ["2019-07-28T06:33:51", 7.3488, -27.26599], ["2019-07-28T07:33:18", 7.35044, -27.25785], ["2019-07-28T08:03:18", 7.35168, -27.25425], ["2019-07-28T08:33:18", 7.35159, -27.24979], ["2019-07-28T09:03:54", 7.35145, -27.2464], ["2019-07-28T10:23:29", 7.35399, -27.2392], ["2019-07-28T10:53:07", 7.35587, -27.23617], ["2019-07-28T11:23:07", 7.35947, -27.23334], ["2019-07-28T11:52:48", 7.36395, -27.22986], ["2019-07-28T12:23:08", 7.36947, -27.22537], ["2019-07-28T12:52:44", 7.37495, -27.22015], ["2019-07-28T13:22:34", 7.37982, -27.21527], ["2019-07-28T13:52:34", 7.38368, -27.21072], ["2019-07-28T15:21:57", 7.39258, -27.18867], ["2019-07-28T15:51:57", 7.39537, -27.18155], ["2019-07-28T16:21:57", 7.39893, -27.17554], ["2019-07-28T16:51:56", 7.4028, -27.16956], ["2019-07-28T17:21:56", 7.40748, -27.16269], ["2019-07-28T17:50:47", 7.41153, -27.15415], ["2019-07-28T18:20:47", 7.41389, -27.14557], ["2019-07-28T18:50:47", 7.41483, -27.13699], ["2019-07-28T19:20:57", 7.41591, -27.12811], ["2019-07-28T19:50:25", 7.41646, -27.11908], ["2019-07-28T20:20:27", 7.41574, -27.10869], ["2019-07-28T20:50:27", 7.416, -27.09916], ["2019-07-28T21:20:27", 7.41763, -27.08972], ["2019-07-28T21:49:43", 7.42041, -27.08112], ["2019-07-28T22:20:27", 7.4237, -27.07153], ["2019-07-28T22:49:14", 7.42797, -27.0632], ["2019-07-28T23:19:27", 7.43293, -27.05514], ["2019-07-28T23:49:27", 7.43752, -27.04767], ["2019-07-29T00:19:27", 7.44297, -27.03986], ["2019-07-29T00:48:32", 7.44975, -27.03326], ["2019-07-29T01:18:57", 7.45753, -27.02612], ["2019-07-29T01:48:37", 7.46438, -27.01953], ["2019-07-29T02:18:37", 7.47086, -27.01215], ["2019-07-29T02:47:51", 7.47629, -27.00368], ["2019-07-29T03:17:51", 7.48114, -26.99458], ["2019-07-29T03:47:51", 7.48608, -26.98608], ["2019-07-29T04:47:09", 7.49721, -26.96936], ["2019-07-29T05:17:09", 7.50236, -26.96164], ["2019-07-29T05:47:09", 7.50704, -26.9552], ["2019-07-29T06:17:26", 7.51107, -26.94861], ["2019-07-29T06:47:06", 7.51495, -26.94106], ["2019-07-29T07:17:06", 7.5183, -26.93188], ["2019-07-29T07:46:24", 7.51986, -26.92165], ["2019-07-29T08:16:24", 7.52188, -26.91238], ["2019-07-29T08:45:34", 7.52427, -26.90248], ["2019-07-29T09:15:34", 7.52564, -26.89064], ["2019-07-29T09:45:34", 7.5274, -26.87897], ["2019-07-29T10:15:56", 7.52979, -26.86804], ["2019-07-29T10:45:09", 7.53282, -26.85834], ["2019-07-29T12:15:10", 7.54265, -26.82463], ["2019-07-29T12:45:10", 7.54587, -26.81364], ["2019-07-29T13:15:10", 7.54965, -26.80231], ["2019-07-29T14:14:26", 7.55964, -26.77856], ["2019-07-29T14:44:26", 7.56393, -26.76569], ["2019-07-29T15:14:26", 7.56891, -26.75427], ["2019-07-29T15:43:46", 7.57255, -26.74307], ["2019-07-29T16:13:57", 7.57528, -26.73181], ["2019-07-29T16:42:51", 7.57668, -26.72233], ["2019-07-29T17:12:51", 7.5787, -26.714], ["2019-07-29T17:42:51", 7.57977, -26.7049], ["2019-07-29T18:12:56", 7.58065, -26.69458], ["2019-07-29T18:42:28", 7.58082, -26.68475], ["2019-07-29T19:12:08", 7.58005, -26.67513], ["2019-07-29T19:42:08", 7.57945, -26.66577], ["2019-07-29T20:11:56", 7.57924, -26.6554], ["2019-07-29T20:41:56", 7.57941, -26.64536], ["2019-07-29T21:11:56", 7.57941, -26.63583], ["2019-07-29T21:41:17", 7.57876, -26.6268], ["2019-07-29T22:11:28", 7.5787, -26.61508], ["2019-07-29T22:41:23", 7.5796, -26.6024], ["2019-07-29T23:11:23", 7.58003, -26.58841], ["2019-07-29T23:40:17", 7.57958, -26.57533], ["2019-07-30T00:10:17", 7.57911, -26.56185], ["2019-07-30T00:40:17", 7.57842, -26.54932], ["2019-07-30T01:09:57", 7.57851, -26.53653], ["2019-07-30T01:39:57", 7.57821, -26.52451], ["2019-07-30T02:09:58", 7.57629, -26.51191], ["2019-07-30T02:39:58", 7.57414, -26.49938], ["2019-07-30T03:09:58", 7.57311, -26.48642], ["2019-07-30T03:39:37", 7.57236, -26.47427], ["2019-07-30T04:09:37", 7.57026, -26.46182], ["2019-07-30T04:39:07", 7.56696, -26.45086], ["2019-07-30T05:09:07", 7.5646, -26.43979], ["2019-07-30T06:08:24", 7.56099, -26.41887], ["2019-07-30T06:38:17", 7.55969, -26.40918], ["2019-07-30T07:08:24", 7.5588, -26.39999], ["2019-07-30T08:37:41", 7.5553, -26.37473], ["2019-07-30T09:07:41", 7.55453, -26.36743], ["2019-07-30T09:37:41", 7.55492, -26.35971], ["2019-07-30T10:07:58", 7.55469, -26.35223], ["2019-07-30T10:37:23", 7.55488, -26.3446], ["2019-07-30T11:07:25", 7.55539, -26.33566], ["2019-07-30T11:37:25", 7.55539, -26.32716], ["2019-07-30T12:07:25", 7.5559, -26.31866], ["2019-07-30T12:37:06", 7.55561, -26.30867], ["2019-07-30T13:07:06", 7.55454, -26.29837], ["2019-07-30T13:36:54", 7.55416, -26.28818], ["2019-07-30T14:06:54", 7.55334, -26.27728], ["2019-07-30T14:35:49", 7.55369, -26.26812], ["2019-07-30T15:05:49", 7.55395, -26.25988], ["2019-07-30T15:35:49", 7.55361, -26.25241], ["2019-07-30T16:05:25", 7.55383, -26.24413], ["2019-07-30T16:35:25", 7.55477, -26.23615], ["2019-07-30T17:05:27", 7.55568, -26.22841], ["2019-07-30T17:35:27", 7.55564, -26.22043], ["2019-07-30T18:05:27", 7.555, -26.21039], ["2019-07-30T18:35:08", 7.55379, -26.2005], ["2019-07-30T19:05:08", 7.55173, -26.19037], ["2019-07-30T19:34:03", 7.55001, -26.18072], ["2019-07-30T20:04:03", 7.54907, -26.17179], ["2019-07-30T20:34:03", 7.54886, -26.16269], ["2019-07-30T21:03:37", 7.54858, -26.15362], ["2019-07-30T21:33:37", 7.54862, -26.14529], ["2019-07-30T22:33:16", 7.54918, -26.13089], ["2019-07-30T23:03:30", 7.54848, -26.12352], ["2019-07-30T23:33:30", 7.54663, -26.11657], ["2019-07-31T00:03:30", 7.54423, -26.10962], ["2019-07-31T00:33:25", 7.54088, -26.10279], ["2019-07-31T01:03:25", 7.53758, -26.09567], ["2019-07-31T03:02:38", 7.52594, -26.06762], ["2019-07-31T03:32:25", 7.52223, -26.06094], ["2019-07-31T04:02:38", 7.51796, -26.05466], ["2019-07-31T04:32:06", 7.51409, -26.04782], ["2019-07-31T05:01:47", 7.5099, -26.04158], ["2019-07-31T05:31:47", 7.50685, -26.03583], ["2019-07-31T06:01:25", 7.50426, -26.02954], ["2019-07-31T06:31:25", 7.50147, -26.02448], ["2019-07-31T07:01:10", 7.4992, -26.01883], ["2019-07-31T07:31:10", 7.4983, -26.01291], ["2019-07-31T08:01:07", 7.49825, -26.00679], ["2019-07-31T08:31:07", 7.49786, -26.00147], ["2019-07-31T09:01:07", 7.49756, -25.99615], ["2019-07-31T09:30:33", 7.49739, -25.99054], ["2019-07-31T10:00:56", 7.4974, -25.98474], ["2019-07-31T10:59:57", 7.49854, -25.97364], ["2019-07-31T11:29:57", 7.49815, -25.96935], ["2019-07-31T11:59:57", 7.49673, -25.96429], ["2019-07-31T12:29:27", 7.49484, -25.95993], ["2019-07-31T12:59:06", 7.49223, -25.95539], ["2019-07-31T13:29:06", 7.49026, -25.95084], ["2019-07-31T13:58:57", 7.48831, -25.9468], ["2019-07-31T14:28:57", 7.48634, -25.94199], ["2019-07-31T14:58:57", 7.48484, -25.93701], ["2019-07-31T15:28:55", 7.48359, -25.93242], ["2019-07-31T15:58:55", 7.48226, -25.92899], ["2019-07-31T16:28:25", 7.48144, -25.92589], ["2019-07-31T16:58:25", 7.4814, -25.92297], ["2019-07-31T18:27:18", 7.48546, -25.90521], ["2019-07-31T20:26:01", 7.49041, -25.87849], ["2019-07-31T20:56:01", 7.49105, -25.87128], ["2019-07-31T21:26:01", 7.49122, -25.86356], ["2019-07-31T21:55:38", 7.49113, -25.85562], ["2019-07-31T22:25:38", 7.49104, -25.84918], ["2019-07-31T22:55:28", 7.49288, -25.84417], ["2019-07-31T23:25:28", 7.49503, -25.83919], ["2019-07-31T23:55:28", 7.4961, -25.83301], ["2019-08-01T00:24:44", 7.49619, -25.82565], ["2019-08-01T00:54:57", 7.49614, -25.81885], ["2019-08-01T01:24:15", 7.49597, -25.81349], ["2019-08-01T01:54:15", 7.49567, -25.8092], ["2019-08-01T02:24:15", 7.49528, -25.80499], ["2019-08-01T02:53:56", 7.49528, -25.80005], ["2019-08-01T03:23:56", 7.49549, -25.79456], ["2019-08-01T03:53:32", 7.49606, -25.78819], ["2019-08-01T04:23:32", 7.49636, -25.78201], ["2019-08-01T04:53:28", 7.49639, -25.77648], ["2019-08-01T05:23:02", 7.49718, -25.77142], ["2019-08-01T05:53:28", 7.49815, -25.76584], ["2019-08-01T06:22:36", 7.49967, -25.75922], ["2019-08-01T06:52:36", 7.50224, -25.75235], ["2019-08-01T08:21:19", 7.51365, -25.7336], ["2019-08-01T08:51:19", 7.51721, -25.72794], ["2019-08-01T09:21:19", 7.52039, -25.7215], ["2019-08-01T10:20:39", 7.52709, -25.70469], ["2019-08-01T10:50:39", 7.53035, -25.69551], ["2019-08-01T11:20:39", 7.53327, -25.68787], ["2019-08-01T11:50:08", 7.53602, -25.68069], ["2019-08-01T12:20:08", 7.53911, -25.67468], ["2019-08-01T12:50:32", 7.54138, -25.66901], ["2019-08-01T13:19:40", 7.54359, -25.66296], ["2019-08-01T13:49:10", 7.54498, -25.65613], ["2019-08-01T14:19:10", 7.54571, -25.64969], ["2019-08-01T14:48:41", 7.54664, -25.64324], ["2019-08-01T15:18:41", 7.54763, -25.63586], ["2019-08-01T16:48:36", 7.55011, -25.61227], ["2019-08-01T17:17:49", 7.55127, -25.60485], ["2019-08-01T17:47:49", 7.55226, -25.59755], ["2019-08-01T18:17:49", 7.55355, -25.59189], ["2019-08-01T18:47:27", 7.55488, -25.58721], ["2019-08-01T19:17:27", 7.55557, -25.58206], ["2019-08-01T19:47:27", 7.55608, -25.57511], ["2019-08-01T20:17:27", 7.5575, -25.5685], ["2019-08-01T20:47:27", 7.5602, -25.56241], ["2019-08-01T23:36:09", 7.57224, -25.5278], ["2019-08-02T02:05:24", 7.56944, -25.48341], ["2019-08-02T02:35:24", 7.56695, -25.47448], ["2019-08-02T03:05:24", 7.56455, -25.46573], ["2019-08-02T03:34:39", 7.56397, -25.45807], ["2019-08-02T05:24:26", 7.56536, -25.43135], ["2019-08-02T05:54:26", 7.56566, -25.42594], ["2019-08-02T06:24:26", 7.56669, -25.42139], ["2019-08-02T06:53:49", 7.56769, -25.41754], ["2019-08-02T07:52:57", 7.56993, -25.40911], ["2019-08-02T08:22:57", 7.5713, -25.40465], ["2019-08-02T08:52:57", 7.57173, -25.3989], ["2019-08-02T09:22:41", 7.56973, -25.39269], ["2019-08-02T09:52:41", 7.56797, -25.38754], ["2019-08-02T10:22:54", 7.56566, -25.38143], ["2019-08-02T10:52:54", 7.56309, -25.37508], ["2019-08-02T11:22:54", 7.55944, -25.36899], ["2019-08-02T11:52:09", 7.55658, -25.36309], ["2019-08-02T12:22:09", 7.55353, -25.35605], ["2019-08-02T12:51:54", 7.55189, -25.34962], ["2019-08-02T13:21:54", 7.54996, -25.34232], ["2019-08-02T13:51:16", 7.54826, -25.33472], ["2019-08-02T14:20:57", 7.54726, -25.32645], ["2019-08-02T14:50:57", 7.54623, -25.3183], ["2019-08-02T15:20:31", 7.54535, -25.30942], ["2019-08-02T15:50:31", 7.54355, -25.30075], ["2019-08-02T16:49:42", 7.53989, -25.28101], ["2019-08-02T17:19:42", 7.5374, -25.26959], ["2019-08-02T17:49:42", 7.53654, -25.25903], ["2019-08-02T18:19:55", 7.53605, -25.24866], ["2019-08-02T20:48:47", 7.53494, -25.20219], ["2019-08-02T21:18:47", 7.5355, -25.19489], ["2019-08-02T21:48:47", 7.53726, -25.18777], ["2019-08-02T22:48:03", 7.54158, -25.17209], ["2019-08-02T23:18:03", 7.54261, -25.16351], ["2019-08-02T23:48:03", 7.54317, -25.15527], ["2019-08-03T01:17:35", 7.54204, -25.13201], ["2019-08-03T01:47:35", 7.53985, -25.12454], ["2019-08-03T02:17:35", 7.53775, -25.11682], ["2019-08-03T02:47:04", 7.53725, -25.10861], ["2019-08-03T03:17:29", 7.53654, -25.09988], ["2019-08-03T03:46:22", 7.53529, -25.09202], ["2019-08-03T04:16:22", 7.53469, -25.08507], ["2019-08-03T04:46:22", 7.53512, -25.07855], ["2019-08-03T05:15:58", 7.53483, -25.07122], ["2019-08-03T05:45:58", 7.53526, -25.06375], ["2019-08-03T06:15:28", 7.53594, -25.05544], ["2019-08-03T06:45:28", 7.53573, -25.04703], ["2019-08-03T07:15:23", 7.53553, -25.03837], ["2019-08-03T07:45:23", 7.53626, -25.03116], ["2019-08-03T08:15:23", 7.53742, -25.02438], ["2019-08-03T08:44:57", 7.53912, -25.01656], ["2019-08-03T09:14:57", 7.54071, -25.00772], ["2019-08-03T09:44:57", 7.54258, -24.99903], ["2019-08-03T10:14:57", 7.54417, -24.98959], ["2019-08-03T10:43:47", 7.547, -24.98036], ["2019-08-03T11:13:47", 7.54876, -24.96989], ["2019-08-03T11:43:47", 7.55009, -24.95993], ["2019-08-03T13:13:56", 7.55564, -24.92957], ["2019-08-03T13:43:25", 7.55793, -24.92022], ["2019-08-03T14:13:25", 7.56046, -24.91052], ["2019-08-03T14:43:25", 7.56414, -24.90035], ["2019-08-03T15:13:25", 7.56826, -24.89108], ["2019-08-03T16:12:55", 7.57767, -24.8713], ["2019-08-03T16:42:55", 7.58248, -24.86263], ["2019-08-03T17:12:55", 7.58677, -24.85345], ["2019-08-03T17:42:56", 7.59194, -24.84496], ["2019-08-03T18:12:56", 7.59726, -24.83578], ["2019-08-03T18:42:14", 7.60261, -24.82697], ["2019-08-03T19:11:48", 7.60788, -24.81734], ["2019-08-03T19:41:48", 7.61324, -24.80756], ["2019-08-03T20:11:22", 7.61791, -24.79797], ["2019-08-03T20:41:22", 7.62199, -24.78973], ["2019-08-03T21:11:38", 7.62666, -24.78018], ["2019-08-03T21:41:02", 7.63152, -24.77017], ["2019-08-03T22:10:40", 7.63572, -24.75925], ["2019-08-03T22:40:40", 7.63902, -24.74886], ["2019-08-03T23:10:40", 7.64172, -24.73822], ["2019-08-03T23:40:29", 7.64481, -24.72762], ["2019-08-04T00:10:29", 7.64841, -24.71603], ["2019-08-04T00:39:46", 7.65288, -24.70511], ["2019-08-04T01:09:32", 7.65841, -24.69509], ["2019-08-04T01:39:32", 7.66455, -24.68582], ["2019-08-04T02:09:57", 7.67111, -24.67563], ["2019-08-04T02:39:22", 7.67704, -24.66534], ["2019-08-04T03:08:58", 7.68254, -24.65464], ["2019-08-04T03:38:58", 7.68692, -24.64383], ["2019-08-04T04:09:27", 7.69192, -24.63242], ["2019-08-04T04:38:39", 7.69694, -24.62136], ["2019-08-04T05:08:39", 7.70222, -24.61072], ["2019-08-04T07:07:56", 7.72402, -24.57271], ["2019-08-04T07:37:56", 7.7311, -24.56516], ["2019-08-04T08:07:56", 7.73857, -24.55563], ["2019-08-04T08:37:12", 7.74602, -24.54596], ["2019-08-04T10:36:00", 7.77739, -24.50687], ["2019-08-04T11:06:00", 7.78619, -24.49631], ["2019-08-04T11:36:00", 7.79486, -24.48618], ["2019-08-04T12:06:27", 7.80458, -24.47571], ["2019-08-04T13:05:26", 7.8227, -24.45468], ["2019-08-04T13:35:26", 7.83171, -24.44421], ["2019-08-04T14:05:26", 7.84107, -24.43271], ["2019-08-04T14:35:26", 7.85035, -24.42151], ["2019-08-04T15:05:26", 7.85945, -24.40872], ["2019-08-04T15:34:47", 7.86807, -24.39548], ["2019-08-04T16:04:37", 7.87565, -24.38133], ["2019-08-04T16:34:37", 7.88265, -24.367], ["2019-08-04T17:04:35", 7.88956, -24.35236], ["2019-08-04T17:34:35", 7.89595, -24.33725], ["2019-08-04T18:34:26", 7.90404, -24.30807], ["2019-08-04T19:04:26", 7.90708, -24.29283], ["2019-08-04T19:34:26", 7.90983, -24.27781], ["2019-08-04T20:04:26", 7.91262, -24.26227], ["2019-08-04T20:34:25", 7.91549, -24.24862], ["2019-08-04T21:04:25", 7.91922, -24.23523], ["2019-08-04T22:32:43", 7.93033, -24.19498], ["2019-08-04T23:02:43", 7.93222, -24.18236], ["2019-08-04T23:32:43", 7.93115, -24.17249], ["2019-08-05T00:32:32", 7.92563, -24.14771], ["2019-08-05T01:03:26", 7.92235, -24.13465], ["2019-08-05T01:33:26", 7.91892, -24.12298], ["2019-08-05T02:03:26", 7.91613, -24.11105], ["2019-08-05T02:31:57", 7.91361, -24.10002], ["2019-08-05T03:01:57", 7.91185, -24.08929], ["2019-08-05T06:30:24", 7.91038, -23.98379], ["2019-08-05T07:00:24", 7.91141, -23.96783], ["2019-08-05T07:30:24", 7.9127, -23.95221], ["2019-08-05T08:00:02", 7.91349, -23.93601], ["2019-08-05T08:30:02", 7.91542, -23.92099], ["2019-08-05T08:59:54", 7.91708, -23.90512], ["2019-08-05T09:29:54", 7.91734, -23.88898], ["2019-08-05T12:00:01", 7.90665, -23.80145], ["2019-08-05T13:28:15", 7.88858, -23.74811], ["2019-08-05T13:58:15", 7.88158, -23.7294], ["2019-08-05T14:28:15", 7.87411, -23.71198], ["2019-08-05T14:58:59", 7.86668, -23.69385], ["2019-08-05T15:28:59", 7.8605, -23.6772], ["2019-08-05T15:58:59", 7.8535, -23.66046], ["2019-08-05T19:26:44", 7.81303, -23.55859], ["2019-08-05T22:56:34", 7.78615, -23.47107], ["2019-08-06T01:55:35", 7.76503, -23.41183], ["2019-08-06T03:23:37", 7.75518, -23.38829], ["2019-08-06T03:53:37", 7.75102, -23.38099], ["2019-08-06T04:23:37", 7.7457, -23.37387], ["2019-08-06T05:23:22", 7.73365, -23.3587], ["2019-08-06T06:23:01", 7.71885, -23.34445], ["2019-08-06T07:52:35", 7.69656, -23.32141], ["2019-08-06T09:21:46", 7.68241, -23.30008], ["2019-08-06T09:51:46", 7.67988, -23.2939], ["2019-08-06T10:21:46", 7.67911, -23.28824], ["2019-08-06T11:53:27", 7.67897, -23.26632], ["2019-08-06T12:23:27", 7.67884, -23.25885], ["2019-08-06T12:53:27", 7.67798, -23.25027], ["2019-08-06T13:20:38", 7.6775, -23.24319], ["2019-08-06T13:50:04", 7.6759, -23.23517], ["2019-08-06T14:20:04", 7.6729, -23.22736], ["2019-08-06T14:50:04", 7.66951, -23.22247], ["2019-08-06T15:49:12", 7.65882, -23.21225], ["2019-08-06T16:19:12", 7.65105, -23.20538], ["2019-08-06T16:49:12", 7.64393, -23.19843], ["2019-08-06T18:19:00", 7.62079, -23.17676], ["2019-08-06T18:49:00", 7.61397, -23.17024], ["2019-08-06T19:19:00", 7.60676, -23.16397], ["2019-08-06T20:18:53", 7.59355, -23.14957], ["2019-08-06T20:46:53", 7.58866, -23.14132], ["2019-08-06T21:16:53", 7.58428, -23.13325], ["2019-08-06T21:46:53", 7.58033, -23.12561], ["2019-08-06T22:16:24", 7.57584, -23.11776], ["2019-08-06T22:46:24", 7.57185, -23.11115], ["2019-08-07T04:43:50", 7.53979, -23.03958], ["2019-08-07T07:12:53", 7.537, -23.01587], ["2019-08-07T13:41:56", 7.52594, -22.9393], ["2019-08-07T15:10:10", 7.52482, -22.91704], ["2019-08-07T15:40:10", 7.52207, -22.90983], ["2019-08-07T16:10:10", 7.51718, -22.90271], ["2019-08-07T22:07:41", 7.46766, -22.82593], ["2019-08-07T23:40:05", 7.4484, -22.80462], ["2019-08-08T00:10:05", 7.44437, -22.79381], ["2019-08-08T00:40:05", 7.44102, -22.78308], ["2019-08-08T07:07:30", 7.43542, -22.67642], ["2019-08-08T07:34:15", 7.43597, -22.67031], ["2019-08-08T08:04:15", 7.43576, -22.66422], ["2019-08-08T11:32:46", 7.43558, -22.63605], ["2019-08-08T13:02:09", 7.44471, -22.63255], ["2019-08-08T13:32:09", 7.44862, -22.63006], ["2019-08-08T14:02:09", 7.4515, -22.62646], ["2019-08-08T20:02:11", 7.5265, -22.54517], ["2019-08-09T00:31:00", 7.5995, -22.47546], ["2019-08-09T01:29:27", 7.61479, -22.461], ["2019-08-09T01:59:05", 7.62249, -22.4533], ["2019-08-09T02:29:05", 7.63026, -22.4454], ["2019-08-09T06:27:38", 7.66124, -22.35583], ["2019-08-09T07:26:59", 7.66041, -22.32581], ["2019-08-09T07:58:30", 7.66012, -22.31009], ["2019-08-09T08:28:30", 7.65913, -22.29541], ["2019-08-09T08:58:30", 7.65771, -22.27902], ["2019-08-09T09:26:01", 7.65597, -22.26501], ["2019-08-09T09:56:01", 7.65528, -22.25119], ["2019-08-09T11:25:55", 7.65601, -22.20346], ["2019-08-09T11:55:55", 7.65567, -22.18792], ["2019-08-09T12:25:55", 7.6555, -22.17075], ["2019-08-09T12:55:13", 7.65519, -22.15482], ["2019-08-09T16:24:26", 7.64474, -22.06723], ["2019-08-09T17:23:25", 7.64243, -22.04232], ["2019-08-09T17:53:25", 7.64243, -22.0309], ["2019-08-09T18:23:25", 7.64166, -22.01871], ["2019-08-09T18:52:43", 7.64095, -22.00671], ["2019-08-09T19:22:16", 7.63931, -21.99495], ["2019-08-09T19:52:16", 7.63734, -21.98508], ["2019-08-09T20:21:59", 7.63349, -21.97556], ["2019-08-09T20:51:44", 7.62837, -21.96649], ["2019-08-09T21:21:59", 7.6222, -21.95599], ["2019-08-09T21:51:16", 7.61532, -21.94611], ["2019-08-09T22:21:28", 7.60824, -21.93573], ["2019-08-09T22:50:36", 7.60076, -21.92508], ["2019-08-09T23:20:36", 7.59437, -21.91401], ["2019-08-09T23:50:36", 7.58918, -21.90302], ["2019-08-10T00:20:05", 7.58379, -21.89116], ["2019-08-10T00:50:05", 7.57911, -21.88095], ["2019-08-10T03:19:07", 7.56143, -21.84203], ["2019-08-10T03:49:07", 7.558, -21.83637], ["2019-08-10T04:19:07", 7.555, -21.82959], ["2019-08-10T04:48:24", 7.55269, -21.82245], ["2019-08-10T06:17:55", 7.54898, -21.80101], ["2019-08-10T06:47:55", 7.54683, -21.79457], ["2019-08-10T07:17:55", 7.5434, -21.78839], ["2019-08-10T07:46:37", 7.54052, -21.78292], ["2019-08-10T08:16:37", 7.53683, -21.77794], ["2019-08-10T08:46:37", 7.5331, -21.77313], ["2019-08-10T09:16:12", 7.52869, -21.7679], ["2019-08-10T09:46:12", 7.52418, -21.76395], ["2019-08-10T11:15:37", 7.51258, -21.75423], ["2019-08-10T11:45:37", 7.51121, -21.75191], ["2019-08-10T12:15:37", 7.51078, -21.75079], ["2019-08-10T13:44:37", 7.51424, -21.74652], ["2019-08-10T14:14:57", 7.51684, -21.74481], ["2019-08-10T14:44:37", 7.51849, -21.74249], ["2019-08-10T15:13:58", 7.52223, -21.73926], ["2019-08-10T15:43:58", 7.52764, -21.73608], ["2019-08-10T16:43:39", 7.53827, -21.72754], ["2019-08-10T17:13:27", 7.54235, -21.72303], ["2019-08-10T17:43:27", 7.54673, -21.71891], ["2019-08-10T18:13:27", 7.5527, -21.71393], ["2019-08-10T18:42:55", 7.55834, -21.70963], ["2019-08-10T20:30:56", 7.57705, -21.69224], ["2019-08-10T21:00:56", 7.58211, -21.68829], ["2019-08-10T21:30:56", 7.58627, -21.68546], ["2019-08-10T22:00:57", 7.58982, -21.68187], ["2019-08-10T22:30:57", 7.59308, -21.67844], ["2019-08-10T22:59:47", 7.59593, -21.67506], ["2019-08-10T23:29:47", 7.59717, -21.67197], ["2019-08-10T23:59:47", 7.59854, -21.6694], ["2019-08-11T00:29:56", 7.60076, -21.66754], ["2019-08-11T00:59:28", 7.60338, -21.66605], ["2019-08-11T01:29:04", 7.60659, -21.66402], ["2019-08-11T01:59:04", 7.61092, -21.66248], ["2019-08-11T02:28:59", 7.61592, -21.66059], ["2019-08-11T02:58:40", 7.62144, -21.65982], ["2019-08-11T03:28:59", 7.62785, -21.65802], ["2019-08-11T03:58:31", 7.63449, -21.65607], ["2019-08-11T04:28:56", 7.64181, -21.65399], ["2019-08-11T04:58:19", 7.6485, -21.65219], ["2019-08-11T05:28:02", 7.65507, -21.6503], ["2019-08-11T05:58:02", 7.66099, -21.64893], ["2019-08-11T06:28:26", 7.66526, -21.64877], ["2019-08-11T06:57:35", 7.67058, -21.6492], ["2019-08-11T07:56:46", 7.68283, -21.64878], ["2019-08-11T08:27:29", 7.68825, -21.64853], ["2019-08-11T08:56:46", 7.69219, -21.64801], ["2019-08-11T09:26:58", 7.69916, -21.64722], ["2019-08-11T09:56:58", 7.70467, -21.64673], ["2019-08-11T10:26:58", 7.71128, -21.64673], ["2019-08-11T10:56:08", 7.71894, -21.64496], ["2019-08-11T11:25:49", 7.72684, -21.64191], ["2019-08-11T11:55:49", 7.73426, -21.63968], ["2019-08-11T12:25:58", 7.74294, -21.63715], ["2019-08-11T12:55:28", 7.75125, -21.63388], ["2019-08-11T13:54:47", 7.76212, -21.62391], ["2019-08-11T14:24:47", 7.76671, -21.61902], ["2019-08-11T14:54:47", 7.77207, -21.61584], ["2019-08-11T15:24:16", 7.77806, -21.61182], ["2019-08-11T15:54:16", 7.78394, -21.6077], ["2019-08-11T16:23:55", 7.78982, -21.6045], ["2019-08-11T16:53:55", 7.79621, -21.60107], ["2019-08-11T17:23:54", 7.80324, -21.59686], ["2019-08-11T17:53:54", 7.80835, -21.59291], ["2019-08-11T18:23:54", 7.81436, -21.58896], ["2019-08-11T18:53:03", 7.82087, -21.58496], ["2019-08-11T19:22:37", 7.83, -21.57988], ["2019-08-11T19:52:37", 7.84056, -21.57516], ["2019-08-11T20:22:37", 7.8509, -21.57095], ["2019-08-11T20:51:58", 7.86043, -21.56778], ["2019-08-11T21:22:08", 7.87114, -21.56519], ["2019-08-11T22:21:31", 7.89548, -21.55953], ["2019-08-11T22:51:31", 7.90677, -21.55747], ["2019-08-11T23:21:31", 7.91771, -21.55515], ["2019-08-11T23:51:15", 7.92778, -21.55321], ["2019-08-12T00:21:15", 7.93666, -21.55106], ["2019-08-12T00:50:57", 7.94595, -21.54837], ["2019-08-12T01:20:57", 7.95638, -21.54605], ["2019-08-12T01:49:51", 7.96654, -21.54198], ["2019-08-12T02:19:51", 7.97598, -21.53692], ["2019-08-12T02:49:51", 7.98564, -21.5322], ["2019-08-12T03:19:58", 7.9975, -21.52747], ["2019-08-12T06:48:30", 8.08324, -21.48444], ["2019-08-12T08:18:27", 8.11178, -21.45609], ["2019-08-12T08:47:43", 8.12215, -21.44788], ["2019-08-12T09:17:54", 8.13223, -21.43927], ["2019-08-12T09:47:58", 8.14281, -21.42982], ["2019-08-12T10:17:58", 8.15143, -21.42004], ["2019-08-12T10:46:41", 8.15874, -21.41025], ["2019-08-12T11:16:41", 8.16663, -21.39986], ["2019-08-12T11:46:41", 8.17467, -21.38947], ["2019-08-12T13:16:26", 8.19989, -21.3572], ["2019-08-12T13:46:26", 8.20706, -21.3463], ["2019-08-12T14:16:26", 8.21371, -21.33514], ["2019-08-12T14:45:55", 8.22068, -21.32436], ["2019-08-12T15:15:55", 8.22866, -21.31363], ["2019-08-12T15:45:26", 8.23624, -21.30352], ["2019-08-12T16:15:26", 8.24332, -21.29279], ["2019-08-12T16:44:25", 8.24982, -21.28178], ["2019-08-12T17:14:25", 8.25639, -21.26976], ["2019-08-12T17:44:25", 8.26232, -21.25809], ["2019-08-12T19:13:56", 8.2767, -21.22186], ["2019-08-12T19:43:56", 8.28125, -21.21062], ["2019-08-12T20:13:56", 8.28576, -21.19852], ["2019-08-12T20:42:49", 8.28867, -21.18674], ["2019-08-12T21:13:25", 8.29045, -21.17438], ["2019-08-12T21:42:49", 8.29224, -21.16254], ["2019-08-12T22:13:09", 8.29385, -21.14938], ["2019-08-13T00:12:28", 8.29599, -21.10083], ["2019-08-13T00:42:28", 8.29776, -21.09087], ["2019-08-13T01:12:28", 8.29978, -21.08109], ["2019-08-13T01:41:43", 8.3023, -21.07318], ["2019-08-13T02:11:25", 8.30463, -21.06436], ["2019-08-13T02:41:25", 8.30711, -21.05475], ["2019-08-13T03:11:39", 8.31077, -21.04514], ["2019-08-13T03:41:07", 8.3145, -21.03482], ["2019-08-13T04:10:58", 8.31739, -21.0232], ["2019-08-13T04:40:49", 8.31826, -21.01151], ["2019-08-13T05:10:58", 8.3195, -20.99908], ["2019-08-13T05:40:09", 8.32016, -20.98596], ["2019-08-13T06:10:26", 8.32013, -20.97208], ["2019-08-13T06:39:34", 8.31917, -20.95935], ["2019-08-13T07:09:57", 8.3187, -20.94724], ["2019-08-13T07:38:38", 8.31816, -20.93499], ["2019-08-13T08:08:38", 8.31687, -20.92203], ["2019-08-13T08:38:38", 8.31528, -20.91293], ["2019-08-13T09:08:57", 8.31255, -20.905], ["2019-08-13T09:38:18", 8.30974, -20.89752], ["2019-08-13T11:07:56", 8.30312, -20.8739], ["2019-08-13T11:37:56", 8.30188, -20.86549], ["2019-08-13T12:07:56", 8.30016, -20.85699], ["2019-08-13T12:37:15", 8.29979, -20.84906], ["2019-08-13T13:07:27", 8.29993, -20.84121], ["2019-08-13T13:37:27", 8.29932, -20.83374], ["2019-08-13T14:07:27", 8.29899, -20.82593], ["2019-08-13T14:36:43", 8.29895, -20.81677], ["2019-08-13T16:36:04", 8.29521, -20.77682], ["2019-08-13T17:06:04", 8.29311, -20.76738], ["2019-08-13T17:36:04", 8.29144, -20.75888], ["2019-08-13T18:06:28", 8.28958, -20.7511], ["2019-08-13T18:35:39", 8.28815, -20.74442], ["2019-08-13T19:05:25", 8.28633, -20.73737], ["2019-08-13T19:35:25", 8.2837, -20.73059], ["2019-08-13T20:05:25", 8.28045, -20.72321], ["2019-08-13T20:35:07", 8.27746, -20.71595], ["2019-08-13T21:05:07", 8.2753, -20.7084], ["2019-08-13T21:34:32", 8.27326, -20.70087], ["2019-08-13T22:04:57", 8.26972, -20.69278], ["2019-08-13T22:33:57", 8.26702, -20.68503], ["2019-08-13T23:03:57", 8.26474, -20.67765], ["2019-08-13T23:33:57", 8.26252, -20.67001], ["2019-08-14T00:04:25", 8.25914, -20.66257], ["2019-08-14T00:33:40", 8.2562, -20.65604], ["2019-08-14T01:03:24", 8.2524, -20.65026], ["2019-08-14T01:33:24", 8.24919, -20.64468], ["2019-08-14T02:03:24", 8.24464, -20.63919], ["2019-08-14T02:32:53", 8.24098, -20.63435], ["2019-08-14T03:02:53", 8.2375, -20.6286], ["2019-08-14T03:32:53", 8.2341, -20.62311], ["2019-08-14T04:32:16", 8.22835, -20.60946], ["2019-08-14T05:02:16", 8.22551, -20.60242], ["2019-08-14T05:32:16", 8.22289, -20.59555], ["2019-08-14T06:02:36", 8.22016, -20.58868], ["2019-08-14T07:31:19", 8.20862, -20.57093], ["2019-08-14T08:01:19", 8.20433, -20.56707], ["2019-08-14T08:31:19", 8.20193, -20.56415], ["2019-08-14T09:01:39", 8.20085, -20.56052], ["2019-08-14T11:00:25", 8.195, -20.54098], ["2019-08-14T11:30:11", 8.19314, -20.53476], ["2019-08-14T12:00:25", 8.19075, -20.52759], ["2019-08-14T12:29:55", 8.18857, -20.5204], ["2019-08-14T12:59:55", 8.18587, -20.51233], ["2019-08-14T13:29:17", 8.18385, -20.50458], ["2019-08-14T13:58:49", 8.18233, -20.49625], ["2019-08-14T14:28:49", 8.18121, -20.48947], ["2019-08-14T14:58:31", 8.17939, -20.48247], ["2019-08-14T15:28:31", 8.17664, -20.47586], ["2019-08-14T15:58:09", 8.17351, -20.46984], ["2019-08-14T16:28:09", 8.17059, -20.46478], ["2019-08-14T16:58:26", 8.16915, -20.45917], ["2019-08-14T17:27:39", 8.16925, -20.45441], ["2019-08-14T17:57:25", 8.16897, -20.4491], ["2019-08-14T18:27:25", 8.1685, -20.44421], ["2019-08-14T18:57:25", 8.1683, -20.44052], ["2019-08-14T19:26:14", 8.16764, -20.43689], ["2019-08-14T19:56:14", 8.16686, -20.43191], ["2019-08-14T20:26:14", 8.16618, -20.42676], ["2019-08-14T20:55:54", 8.16562, -20.42231], ["2019-08-14T21:25:54", 8.16549, -20.41742], ["2019-08-14T22:25:05", 8.16554, -20.40644], ["2019-08-14T22:55:42", 8.16553, -20.39966], ["2019-08-14T23:25:05", 8.1652, -20.39297], ["2019-08-14T23:55:29", 8.16423, -20.38562], ["2019-08-15T01:54:25", 8.15737, -20.35918], ["2019-08-15T02:24:25", 8.1569, -20.35326], ["2019-08-15T02:54:25", 8.1571, -20.34708], ["2019-08-15T03:23:58", 8.15809, -20.34158], ["2019-08-15T04:23:08", 8.16356, -20.3303], ["2019-08-15T04:53:08", 8.16527, -20.32446], ["2019-08-15T05:23:08", 8.16614, -20.31845], ["2019-08-15T05:52:53", 8.16717, -20.31152], ["2019-08-15T06:22:53", 8.16789, -20.30603], ["2019-08-15T06:53:06", 8.16977, -20.30078], ["2019-08-15T07:22:56", 8.17245, -20.29468], ["2019-08-15T07:52:56", 8.17495, -20.28833], ["2019-08-15T08:22:19", 8.17679, -20.28201], ["2019-08-15T08:52:39", 8.17848, -20.27466], ["2019-08-15T09:21:35", 8.1808, -20.2677], ["2019-08-15T09:51:55", 8.18209, -20.2594], ["2019-08-15T10:21:35", 8.18266, -20.2507], ["2019-08-15T10:51:58", 8.18225, -20.24153], ["2019-08-15T11:21:58", 8.1811, -20.23243], ["2019-08-15T11:51:58", 8.1805, -20.2229], ["2019-08-15T13:20:26", 8.1799, -20.1926], ["2019-08-15T13:50:26", 8.17916, -20.17998], ["2019-08-15T14:20:26", 8.17758, -20.16788], ["2019-08-15T16:49:56", 8.17669, -20.10789], ["2019-08-15T17:19:56", 8.17883, -20.09476], ["2019-08-15T17:49:56", 8.18206, -20.08206], ["2019-08-15T18:19:02", 8.18532, -20.07031], ["2019-08-15T19:18:02", 8.19089, -20.04813], ["2019-08-15T19:48:02", 8.19335, -20.03689], ["2019-08-15T20:18:02", 8.19605, -20.02573], ["2019-08-15T20:47:35", 8.19848, -20.01424], ["2019-08-15T21:17:35", 8.20177, -20.0036], ["2019-08-15T21:47:27", 8.20457, -19.99163], ["2019-08-15T22:17:27", 8.20526, -19.97944], ["2019-08-15T22:47:27", 8.20539, -19.96588], ["2019-08-15T23:16:55", 8.20417, -19.95247], ["2019-08-15T23:46:55", 8.20313, -19.93942], ["2019-08-16T01:15:13", 8.20287, -19.89911], ["2019-08-16T01:45:13", 8.20321, -19.88606], ["2019-08-16T02:15:13", 8.20368, -19.8743], ["2019-08-16T02:45:27", 8.20473, -19.86255], ["2019-08-16T11:43:57", 8.24658, -19.63269], ["2019-08-16T17:09:56", 8.26618, -19.47202], ["2019-08-16T23:08:00", 8.26174, -19.26419], ["2019-08-17T04:36:45", 8.18881, -19.09045], ["2019-08-17T09:05:39", 8.14087, -18.99777], ["2019-08-17T12:33:03", 8.11097, -18.94122], ["2019-08-17T13:03:57", 8.10731, -18.93137], ["2019-08-17T13:31:57", 8.10421, -18.92259], ["2019-08-17T14:01:57", 8.10065, -18.91418], ["2019-08-17T14:31:57", 8.09627, -18.90585], ["2019-08-17T16:01:55", 8.08048, -18.88235], ["2019-08-17T17:01:08", 8.0708, -18.86783], ["2019-08-17T17:30:34", 8.06673, -18.86096], ["2019-08-17T19:00:27", 8.05308, -18.84268], ["2019-08-17T19:30:27", 8.04895, -18.8371], ["2019-08-17T20:00:27", 8.0442, -18.83075], ["2019-08-18T03:56:59", 7.9876, -18.78354], ["2019-08-18T07:25:40", 7.96246, -18.76343], ["2019-08-18T10:23:32", 7.95116, -18.74734], ["2019-08-18T18:50:09", 7.95439, -18.71881], ["2019-08-18T19:19:45", 7.95503, -18.71463], ["2019-08-18T19:49:45", 7.95593, -18.71008], ["2019-08-18T21:20:32", 7.95758, -18.69009], ["2019-08-18T21:52:04", 7.95781, -18.68415], ["2019-08-18T22:22:04", 7.95837, -18.67883], ["2019-08-19T09:44:47", 7.96473, -18.58948], ["2019-08-19T10:14:44", 7.9652, -18.58282], ["2019-08-19T10:44:44", 7.9664, -18.57587], ["2019-08-19T12:15:00", 7.96761, -18.55469], ["2019-08-19T12:43:46", 7.96777, -18.54813], ["2019-08-19T13:14:27", 7.9683, -18.54141], ["2019-08-19T14:42:58", 7.96738, -18.52414], ["2019-08-19T15:12:58", 7.96661, -18.51993], ["2019-08-19T15:42:58", 7.96476, -18.51624], ["2019-08-19T16:13:25", 7.96168, -18.51166], ["2019-08-19T16:42:31", 7.95965, -18.50696], ["2019-08-19T18:41:07", 7.95021, -18.48778], ["2019-08-19T19:11:07", 7.9463, -18.48366], ["2019-08-19T19:41:07", 7.94218, -18.47885], ["2019-08-19T23:10:36", 7.91674, -18.43857], ["2019-08-19T23:39:38", 7.91461, -18.43296], ["2019-08-20T00:09:38", 7.91221, -18.4273], ["2019-08-20T00:39:38", 7.90994, -18.42172], ["2019-08-20T01:09:55", 7.90783, -18.41733], ["2019-08-20T01:39:11", 7.90583, -18.41333], ["2019-08-20T02:08:58", 7.9036, -18.40922], ["2019-08-20T02:38:58", 7.90094, -18.40579], ["2019-08-20T03:08:58", 7.89746, -18.40201], ["2019-08-20T03:38:17", 7.89432, -18.39877], ["2019-08-20T04:08:25", 7.89122, -18.39465], ["2019-08-20T04:37:51", 7.88809, -18.39011], ["2019-08-20T05:07:59", 7.88529, -18.38461], ["2019-08-20T08:37:00", 7.86954, -18.35699], ["2019-08-20T09:07:27", 7.86578, -18.354], ["2019-08-20T10:06:57", 7.85932, -18.34677], ["2019-08-20T12:05:28", 7.85209, -18.33364], ["2019-08-20T12:35:28", 7.85055, -18.33029], ["2019-08-20T13:05:28", 7.84862, -18.32806], ["2019-08-20T15:33:32", 7.83876, -18.30503], ["2019-08-20T16:04:25", 7.83631, -18.30075], ["2019-08-20T16:33:32", 7.83357, -18.29645], ["2019-08-20T20:31:37", 7.82321, -18.26963], ["2019-08-20T21:01:37", 7.82278, -18.26697], ["2019-08-20T21:31:37", 7.82214, -18.26465], ["2019-08-20T22:02:28", 7.82193, -18.26221], ["2019-08-21T01:30:29", 7.82053, -18.22397], ["2019-08-21T01:59:21", 7.81855, -18.21662], ["2019-08-21T02:29:21", 7.81623, -18.20915], ["2019-08-21T02:59:21", 7.81391, -18.2016], ["2019-08-21T03:29:57", 7.81159, -18.19296], ["2019-08-21T05:28:56", 7.80981, -18.16195], ["2019-08-21T05:58:56", 7.81063, -18.1538], ["2019-08-21T06:28:56", 7.81127, -18.14505], ["2019-08-21T14:56:28", 7.80895, -18.0036], ["2019-08-22T03:21:17", 7.75801, -17.74405], ["2019-08-22T04:50:37", 7.74719, -17.71971], ["2019-08-22T05:20:37", 7.74474, -17.71482], ["2019-08-22T05:50:37", 7.74195, -17.70941], ["2019-08-22T06:20:14", 7.73829, -17.70322], ["2019-08-22T06:50:14", 7.73451, -17.69678], ["2019-08-22T09:19:04", 7.71274, -17.66428], ["2019-08-22T09:49:04", 7.70768, -17.65819], ["2019-08-22T10:19:04", 7.70373, -17.65158], ["2019-08-22T10:48:56", 7.69938, -17.64363], ["2019-08-22T11:18:56", 7.6947, -17.6353], ["2019-08-22T11:48:56", 7.69024, -17.62723], ["2019-08-22T12:18:25", 7.68619, -17.61998], ["2019-08-22T12:48:25", 7.6822, -17.61337], ["2019-08-22T13:18:26", 7.67863, -17.60873], ["2019-08-22T13:48:26", 7.67537, -17.60452], ["2019-08-22T14:47:54", 7.67016, -17.59532], ["2019-08-22T15:17:29", 7.66832, -17.59079], ["2019-08-22T15:47:54", 7.66694, -17.58682], ["2019-08-22T16:17:02", 7.66608, -17.58261], ["2019-08-22T16:46:56", 7.66537, -17.5782], ["2019-08-22T17:16:56", 7.66451, -17.57348], ["2019-08-22T17:46:56", 7.66369, -17.56876], ["2019-08-22T18:16:07", 7.66278, -17.56402], ["2019-08-22T18:46:07", 7.66124, -17.55973], ["2019-08-22T19:16:07", 7.65965, -17.55518], ["2019-08-22T20:15:15", 7.65409, -17.54821], ["2019-08-22T20:45:56", 7.65087, -17.5462], ["2019-08-22T21:15:15", 7.64761, -17.54443], ["2019-08-22T21:45:26", 7.64436, -17.54288], ["2019-08-22T22:14:25", 7.64095, -17.54091], ["2019-08-22T22:44:25", 7.63735, -17.54005], ["2019-08-22T23:14:25", 7.63375, -17.53928], ["2019-08-22T23:44:27", 7.63008, -17.53732], ["2019-08-23T00:13:55", 7.62631, -17.53418], ["2019-08-23T00:43:55", 7.62254, -17.53061], ["2019-08-23T01:13:28", 7.61904, -17.52728], ["2019-08-23T01:43:25", 7.6152, -17.52439], ["2019-08-23T02:13:25", 7.6125, -17.52276], ["2019-08-23T02:43:25", 7.60988, -17.52164], ["2019-08-23T03:12:43", 7.6083, -17.521], ["2019-08-23T03:42:54", 7.60711, -17.52032], ["2019-08-23T05:41:55", 7.61139, -17.52522], ["2019-08-23T06:11:55", 7.61422, -17.52651], ["2019-08-23T06:41:55", 7.61825, -17.5278], ["2019-08-23T08:40:58", 7.63445, -17.53078], ["2019-08-23T09:10:58", 7.63788, -17.53129], ["2019-08-23T09:40:58", 7.64084, -17.53189], ["2019-08-23T11:09:39", 7.64889, -17.53354], ["2019-08-23T11:39:39", 7.65099, -17.53388], ["2019-08-23T12:09:39", 7.65374, -17.53345], ["2019-08-23T12:39:54", 7.6578, -17.53296], ["2019-08-23T13:08:58", 7.66233, -17.5336], ["2019-08-23T13:38:58", 7.66662, -17.53463], ["2019-08-23T14:08:58", 7.67091, -17.53635], ["2019-08-23T14:38:43", 7.67557, -17.53862], ["2019-08-23T15:08:43", 7.68068, -17.54059], ["2019-08-23T15:38:30", 7.68683, -17.5432], ["2019-08-23T16:08:30", 7.69288, -17.5462], ["2019-08-23T16:38:27", 7.69978, -17.54899], ["2019-08-23T17:08:27", 7.70639, -17.55079], ["2019-08-23T17:38:27", 7.71364, -17.55191], ["2019-08-23T18:07:57", 7.721, -17.553], ["2019-08-23T18:37:57", 7.72838, -17.55334], ["2019-08-23T19:07:24", 7.73488, -17.55344], ["2019-08-23T20:06:41", 7.75013, -17.55531], ["2019-08-23T20:36:41", 7.7588, -17.55565], ["2019-08-23T21:06:41", 7.76713, -17.55548], ["2019-08-23T21:36:56", 7.77508, -17.55502], ["2019-08-23T22:06:28", 7.78282, -17.55476], ["2019-08-23T22:36:28", 7.79067, -17.5545], ["2019-08-23T23:05:57", 7.79751, -17.55402], ["2019-08-23T23:35:57", 7.80459, -17.55325], ["2019-08-24T00:05:15", 7.81195, -17.55204], ["2019-08-24T00:35:15", 7.81925, -17.5505], ["2019-08-24T01:05:15", 7.8259, -17.54904], ["2019-08-24T01:34:57", 7.83278, -17.5476], ["2019-08-24T02:04:57", 7.8399, -17.54709], ["2019-08-24T02:35:25", 7.84799, -17.54745], ["2019-08-24T03:04:42", 7.85645, -17.54715], ["2019-08-24T05:03:54", 7.89083, -17.54211], ["2019-08-24T05:33:54", 7.89997, -17.54005], ["2019-08-24T06:03:54", 7.90915, -17.53748], ["2019-08-24T06:34:07", 7.91856, -17.53357], ["2019-08-24T07:03:31", 7.92754, -17.52994], ["2019-08-24T07:33:25", 7.93631, -17.52683], ["2019-08-24T08:03:25", 7.94446, -17.5234], ["2019-08-24T08:33:25", 7.95227, -17.51834], ["2019-08-24T09:32:28", 7.96721, -17.5078], ["2019-08-24T10:02:28", 7.97498, -17.50291], ["2019-08-24T10:32:28", 7.98309, -17.49802], ["2019-08-24T11:01:55", 7.99165, -17.49258], ["2019-08-24T11:31:55", 8.0007, -17.48628], ["2019-08-24T12:01:55", 8.00984, -17.48182], ["2019-08-24T12:31:55", 8.01971, -17.47684], ["2019-08-24T13:01:38", 8.02952, -17.47128], ["2019-08-24T13:31:38", 8.04021, -17.4657], ["2019-08-24T14:00:56", 8.05084, -17.45994], ["2019-08-24T14:30:56", 8.06199, -17.45367], ["2019-08-24T15:00:25", 8.07238, -17.44641], ["2019-08-24T15:30:25", 8.08272, -17.4386], ["2019-08-24T16:29:26", 8.10127, -17.42087], ["2019-08-24T16:59:26", 8.10908, -17.41091], ["2019-08-24T17:29:26", 8.11655, -17.40018], ["2019-08-24T17:58:52", 8.12364, -17.38858], ["2019-08-24T19:28:24", 8.13498, -17.3531], ["2019-08-24T19:58:24", 8.1379, -17.34031], ["2019-08-24T20:28:24", 8.14082, -17.32709], ["2019-08-24T20:57:55", 8.14367, -17.31474], ["2019-08-24T21:27:55", 8.14689, -17.30255], ["2019-08-24T22:27:09", 8.15102, -17.27899], ["2019-08-24T22:57:09", 8.15252, -17.26706], ["2019-08-24T23:27:09", 8.15389, -17.25427], ["2019-08-24T23:56:27", 8.15509, -17.24185], ["2019-08-25T00:26:37", 8.15611, -17.22992], ["2019-08-25T00:55:36", 8.15778, -17.21951], ["2019-08-25T01:25:36", 8.1594, -17.20938], ["2019-08-25T01:55:36", 8.16043, -17.19934], ["2019-08-25T02:25:17", 8.16156, -17.18928], ["2019-08-25T02:55:17", 8.16245, -17.17975], ["2019-08-25T03:25:27", 8.16325, -17.16971], ["2019-08-25T03:54:51", 8.16352, -17.15933], ["2019-08-25T04:24:26", 8.16344, -17.14798], ["2019-08-25T04:54:26", 8.16348, -17.13725], ["2019-08-25T05:24:26", 8.16292, -17.12549], ["2019-08-25T05:54:25", 8.16149, -17.11358], ["2019-08-25T06:24:25", 8.16006, -17.10199], ["2019-08-25T06:53:17", 8.1583, -17.09115], ["2019-08-25T07:23:17", 8.15598, -17.07956], ["2019-08-25T07:53:17", 8.15358, -17.06857], ["2019-08-25T08:22:57", 8.1521, -17.05812], ["2019-08-25T08:52:57", 8.15043, -17.04773], ["2019-08-25T09:22:38", 8.14823, -17.03665], ["2019-08-25T09:52:38", 8.14644, -17.02609], ["2019-08-25T10:22:56", 8.14464, -17.01555], ["2019-08-25T10:52:56", 8.14288, -17.00568], ["2019-08-25T11:22:56", 8.14068, -16.99564], ["2019-08-25T11:52:20", 8.13859, -16.98651], ["2019-08-25T12:22:37", 8.13626, -16.97754], ["2019-08-25T14:21:37", 8.12374, -16.94037], ["2019-08-25T14:51:37", 8.12062, -16.93127], ["2019-08-25T15:21:37", 8.11659, -16.92209], ["2019-08-25T16:50:22", 8.10493, -16.8986], ["2019-08-25T17:20:22", 8.10163, -16.89156], ["2019-08-25T17:50:22", 8.09828, -16.88504], ["2019-08-25T19:19:57", 8.08907, -16.86777], ["2019-08-25T19:49:57", 8.08662, -16.86314], ["2019-08-25T20:19:57", 8.08417, -16.85876], ["2019-08-25T20:49:10", 8.08146, -16.85394], ["2019-08-25T21:19:27", 8.07831, -16.84872], ["2019-08-25T21:48:33", 8.0747, -16.84343], ["2019-08-25T22:18:33", 8.07058, -16.83819], ["2019-08-25T22:48:33", 8.06629, -16.83356], ["2019-08-25T23:18:56", 8.06197, -16.82889], ["2019-08-25T23:48:17", 8.05814, -16.82538], ["2019-08-26T01:17:57", 8.04834, -16.81971], ["2019-08-26T01:47:57", 8.04632, -16.81937], ["2019-08-26T02:17:57", 8.04461, -16.81894], ["2019-08-26T02:47:26", 8.04332, -16.81845], ["2019-08-26T03:17:55", 8.04224, -16.81772], ["2019-08-26T03:46:57", 8.0418, -16.81689], ["2019-08-26T04:16:57", 8.04149, -16.8162], ["2019-08-26T04:46:57", 8.0406, -16.815], ["2019-08-26T05:16:54", 8.03928, -16.81358], ["2019-08-26T05:46:29", 8.03785, -16.81223], ["2019-08-26T06:16:54", 8.03594, -16.81067], ["2019-08-26T06:46:00", 8.03423, -16.80902], ["2019-08-26T07:16:00", 8.03346, -16.80722], ["2019-08-26T07:46:00", 8.03276, -16.80447], ["2019-08-26T08:16:26", 8.03095, -16.79929], ["2019-08-26T10:15:26", 8.0282, -16.78455], ["2019-08-26T10:45:26", 8.02833, -16.78223], ["2019-08-26T11:15:26", 8.02884, -16.78043], ["2019-08-26T11:44:54", 8.02999, -16.77985], ["2019-08-26T12:14:54", 8.03171, -16.77899], ["2019-08-26T12:44:01", 8.03327, -16.77869], ["2019-08-26T13:14:01", 8.03503, -16.7786], ["2019-08-26T13:44:01", 8.03755, -16.77869], ["2019-08-26T14:13:36", 8.04113, -16.77813], ["2019-08-26T14:43:36", 8.04401, -16.77676], ["2019-08-26T15:43:12", 8.04941, -16.77368], ["2019-08-26T16:12:54", 8.05274, -16.77154], ["2019-08-26T16:42:54", 8.05626, -16.76965], ["2019-08-26T17:12:54", 8.06004, -16.76819], ["2019-08-26T17:42:25", 8.0642, -16.76712], ["2019-08-26T18:11:51", 8.06825, -16.76586], ["2019-08-26T18:41:51", 8.0718, -16.76474], ["2019-08-26T19:11:25", 8.07518, -16.76336], ["2019-08-26T19:41:25", 8.07879, -16.76199], ["2019-08-26T20:11:26", 8.08282, -16.75998], ["2019-08-26T20:41:02", 8.08691, -16.75787], ["2019-08-26T21:11:26", 8.0911, -16.75586], ["2019-08-26T22:10:24", 8.09939, -16.75238], ["2019-08-26T22:40:24", 8.10369, -16.75109], ["2019-08-26T23:10:24", 8.10854, -16.75058], ["2019-08-26T23:39:56", 8.11341, -16.75095], ["2019-08-27T01:09:28", 8.13283, -16.7507], ["2019-08-27T01:39:28", 8.13944, -16.74898], ["2019-08-27T02:09:28", 8.14601, -16.74683], ["2019-08-27T02:39:08", 8.15174, -16.74383], ["2019-08-27T03:09:08", 8.15762, -16.74023], ["2019-08-27T03:38:09", 8.16302, -16.73564], ["2019-08-27T04:08:09", 8.16844, -16.73015], ["2019-08-27T04:38:09", 8.17393, -16.72534], ["2019-08-27T05:07:36", 8.17916, -16.71995], ["2019-08-27T05:37:36", 8.18359, -16.71463], ["2019-08-27T06:07:10", 8.18812, -16.70857], ["2019-08-27T06:37:10", 8.19186, -16.70316], ["2019-08-27T07:06:50", 8.19537, -16.69714], ["2019-08-27T07:36:50", 8.19863, -16.69122], ["2019-08-27T08:06:55", 8.20236, -16.68576], ["2019-08-27T08:36:26", 8.20581, -16.68118], ["2019-08-27T09:06:37", 8.2098, -16.67755], ["2019-08-27T09:36:05", 8.21367, -16.67447], ["2019-08-27T10:05:51", 8.2181, -16.67073], ["2019-08-27T10:35:51", 8.22325, -16.66644], ["2019-08-27T12:05:57", 8.23931, -16.65054], ["2019-08-27T12:35:57", 8.2448, -16.64445], ["2019-08-27T13:05:57", 8.25038, -16.63715], ["2019-08-27T13:35:05", 8.25609, -16.63031], ["2019-08-27T14:05:26", 8.26219, -16.62329], ["2019-08-27T14:34:43", 8.26779, -16.61606], ["2019-08-27T16:04:25", 8.2867, -16.59349], ["2019-08-27T16:34:25", 8.29155, -16.58482], ["2019-08-27T17:04:25", 8.29609, -16.57718], ["2019-08-27T17:33:39", 8.30045, -16.57034], ["2019-08-27T19:32:49", 8.31762, -16.54139], ["2019-08-27T20:02:49", 8.32144, -16.53246], ["2019-08-27T20:32:49", 8.32474, -16.52319], ["2019-08-27T22:02:27", 8.33385, -16.49406], ["2019-08-27T22:32:07", 8.33768, -16.48465], ["2019-08-27T23:02:27", 8.34162, -16.47501], ["2019-08-27T23:31:56", 8.34573, -16.46541], ["2019-08-28T00:01:56", 8.34908, -16.45563], ["2019-08-28T00:31:28", 8.35182, -16.44604], ["2019-08-28T01:01:11", 8.35402, -16.43673], ["2019-08-28T01:31:11", 8.35548, -16.42798], ["2019-08-28T02:01:28", 8.35651, -16.41907], ["2019-08-28T03:29:56", 8.35553, -16.39215], ["2019-08-28T04:00:27", 8.35436, -16.38272], ["2019-08-28T04:29:56", 8.35364, -16.37378], ["2019-08-28T05:00:08", 8.35345, -16.36475], ["2019-08-28T06:59:28", 8.35084, -16.32812], ["2019-08-28T07:29:05", 8.34922, -16.32022], ["2019-08-28T07:59:28", 8.34789, -16.31241], ["2019-08-28T08:28:39", 8.34632, -16.30527], ["2019-08-28T13:56:56", 8.32067, -16.20316], ["2019-08-28T15:25:52", 8.31714, -16.17768], ["2019-08-28T15:55:52", 8.31311, -16.16953], ["2019-08-28T16:25:52", 8.30757, -16.16086], ["2019-08-28T17:25:28", 8.29393, -16.14465], ["2019-08-28T17:55:26", 8.28651, -16.13638], ["2019-08-28T18:25:26", 8.27905, -16.12857], ["2019-08-28T18:55:26", 8.2714, -16.12067], ["2019-08-28T19:25:01", 8.26348, -16.11322], ["2019-08-28T19:55:25", 8.25589, -16.10492], ["2019-08-28T20:54:56", 8.24386, -16.08923], ["2019-08-28T21:24:17", 8.23816, -16.08271], ["2019-08-28T21:54:17", 8.23237, -16.0761], ["2019-08-28T22:24:17", 8.22678, -16.07001], ["2019-08-28T22:54:39", 8.22129, -16.06378], ["2019-08-28T23:53:56", 8.21271, -16.05251], ["2019-08-29T00:23:56", 8.20936, -16.04693], ["2019-08-29T00:53:56", 8.20627, -16.04187], ["2019-08-29T01:23:28", 8.20382, -16.03715], ["2019-08-29T01:53:28", 8.20125, -16.03217], ["2019-08-29T06:20:55", 8.18037, -15.99062], ["2019-08-29T06:50:55", 8.17761, -15.98513], ["2019-08-29T07:20:55", 8.17432, -15.97989], ["2019-08-29T07:50:39", 8.17134, -15.97538], ["2019-08-29T08:20:39", 8.16855, -15.97272], ["2019-08-29T08:50:24", 8.16489, -15.97002], ["2019-08-29T09:20:24", 8.16151, -15.96753], ["2019-08-29T09:50:24", 8.15765, -15.96393], ["2019-08-29T10:49:56", 8.1506, -15.95752], ["2019-08-29T11:19:08", 8.1478, -15.95514], ["2019-08-29T11:49:26", 8.14504, -15.95294], ["2019-08-29T12:18:18", 8.14106, -15.94928], ["2019-08-29T12:48:18", 8.13655, -15.94422], ["2019-08-29T13:18:18", 8.13222, -15.9407], ["2019-08-29T13:48:26", 8.12914, -15.93851], ["2019-08-29T14:48:09", 8.12543, -15.9331], ["2019-08-29T15:18:09", 8.12423, -15.93138], ["2019-08-29T15:48:09", 8.12269, -15.92966], ["2019-08-29T16:17:24", 8.12104, -15.92842], ["2019-08-29T16:47:57", 8.12016, -15.9277], ["2019-08-29T17:17:24", 8.11932, -15.92679], ["2019-08-29T17:47:10", 8.11924, -15.92504], ["2019-08-29T18:17:10", 8.12048, -15.92358], ["2019-08-29T18:46:55", 8.12238, -15.92301], ["2019-08-29T19:16:55", 8.12561, -15.92224], ["2019-08-29T21:15:56", 8.13902, -15.90801], ["2019-08-29T21:45:56", 8.14108, -15.90338], ["2019-08-29T22:15:56", 8.14207, -15.89883], ["2019-08-29T22:45:58", 8.14209, -15.89432], ["2019-08-30T00:14:58", 8.14134, -15.88028], ["2019-08-30T00:44:58", 8.14178, -15.87547], ["2019-08-30T01:14:58", 8.14298, -15.87152], ["2019-08-30T02:44:26", 8.14811, -15.86244], ["2019-08-30T03:14:26", 8.15047, -15.86021], ["2019-08-30T03:44:26", 8.15372, -15.85721], ["2019-08-30T04:13:53", 8.15766, -15.85437], ["2019-08-30T04:43:30", 8.16222, -15.85129], ["2019-08-30T05:13:30", 8.16728, -15.84854], ["2019-08-30T06:43:59", 8.18272, -15.83835], ["2019-08-30T07:13:21", 8.18891, -15.83359], ["2019-08-30T07:43:56", 8.1953, -15.828], ["2019-08-30T08:12:47", 8.20143, -15.82216], ["2019-08-30T08:42:47", 8.2074, -15.81495], ["2019-08-30T09:12:47", 8.21181, -15.80826], ["2019-08-30T09:48:35", 8.21607, -15.79975], ["2019-08-30T10:18:35", 8.21881, -15.79254], ["2019-08-30T13:09:36", 8.23018, -15.74982], ["2019-08-30T15:51:40", 8.24632, -15.70526], ["2019-08-30T22:20:56", 8.26662, -15.60889], ["2019-08-31T01:30:27", 8.271, -15.56116], ["2019-08-31T03:37:28", 8.26619, -15.53152], ["2019-08-31T04:06:31", 8.26538, -15.52359], ["2019-08-31T06:09:18", 8.26148, -15.48558], ["2019-08-31T06:39:18", 8.25916, -15.47717], ["2019-08-31T07:09:18", 8.25538, -15.46979], ["2019-08-31T07:39:06", 8.25009, -15.46242], ["2019-08-31T08:09:06", 8.24455, -15.45512], ["2019-08-31T08:39:06", 8.23969, -15.44971], ["2019-08-31T09:08:33", 8.23466, -15.44464], ["2019-08-31T09:38:56", 8.22788, -15.44205], ["2019-08-31T10:08:11", 8.22151, -15.43878], ["2019-08-31T11:07:18", 8.20974, -15.42997], ["2019-08-31T11:37:18", 8.20407, -15.42534], ["2019-08-31T12:07:18", 8.19952, -15.42053], ["2019-08-31T13:36:55", 8.18842, -15.40308], ["2019-08-31T14:06:55", 8.18572, -15.39596], ["2019-08-31T14:36:55", 8.18352, -15.38721], ["2019-08-31T18:27:03", 8.16568, -15.30017], ["2019-08-31T18:57:24", 8.15766, -15.29279], ["2019-08-31T20:33:21", 8.12794, -15.27948], ["2019-08-31T21:03:21", 8.11961, -15.27673], ["2019-08-31T21:33:21", 8.11184, -15.2739], ["2019-08-31T22:41:58", 8.09498, -15.2652], ["2019-08-31T23:11:26", 8.08766, -15.26116], ["2019-08-31T23:41:26", 8.08042, -15.25653], ["2019-09-01T03:22:22", 8.04091, -15.18625], ["2019-09-01T09:40:55", 7.96875, -15.11755], ["2019-09-01T10:10:05", 7.96179, -15.11362], ["2019-09-01T12:08:34", 7.93952, -15.09429], ["2019-09-01T12:38:34", 7.93437, -15.08914], ["2019-09-01T13:08:34", 7.92909, -15.08493], ["2019-09-01T15:07:51", 7.913, -15.06671], ["2019-09-01T15:37:51", 7.90957, -15.06268], ["2019-09-01T16:07:51", 7.90687, -15.05847], ["2019-09-01T17:07:30", 7.90254, -15.04882], ["2019-09-01T17:37:30", 7.90009, -15.04496], ["2019-09-01T18:07:30", 7.89739, -15.04196], ["2019-09-02T03:24:53", 7.86387, -14.97528], ["2019-09-02T07:28:57", 7.82714, -14.96841], ["2019-09-02T15:35:48", 7.78259, -14.90866], ["2019-09-02T19:31:56", 7.71326, -14.87863], ["2019-09-03T09:06:55", 7.62302, -14.77414], ["2019-09-03T09:36:00", 7.61825, -14.76962], ["2019-09-03T11:05:26", 7.60514, -14.75536], ["2019-09-03T11:35:20", 7.60143, -14.75012], ["2019-09-03T12:05:26", 7.59686, -14.74557], ["2019-09-03T15:34:23", 7.56241, -14.71765], ["2019-09-03T17:03:37", 7.54697, -14.70786], ["2019-09-03T17:33:37", 7.54113, -14.7052], ["2019-09-03T18:03:37", 7.53697, -14.70297], ["2019-09-03T18:33:02", 7.5354, -14.70062], ["2019-09-03T19:02:58", 7.53373, -14.69889], ["2019-09-03T19:32:58", 7.5318, -14.69786], ["2019-09-03T20:02:58", 7.52983, -14.69632], ["2019-09-03T21:02:25", 7.52365, -14.69373], ["2019-09-03T21:32:07", 7.52122, -14.69284], ["2019-09-03T22:02:25", 7.52051, -14.69125], ["2019-09-03T22:31:30", 7.52053, -14.68947], ["2019-09-03T23:01:30", 7.52057, -14.68767], ["2019-09-03T23:31:30", 7.52023, -14.6857], ["2019-09-04T00:01:18", 7.52025, -14.68313], ["2019-09-04T00:31:18", 7.51965, -14.68073], ["2019-09-04T02:01:55", 7.52143, -14.6724], ["2019-09-04T02:31:55", 7.52134, -14.66974], ["2019-09-04T03:01:55", 7.52258, -14.66794], ["2019-09-04T03:31:57", 7.52246, -14.66639], ["2019-09-04T04:01:57", 7.52272, -14.6651], ["2019-09-04T04:31:07", 7.52254, -14.6631], ["2019-09-04T05:01:07", 7.52258, -14.66224], ["2019-09-04T05:31:07", 7.52305, -14.66138], ["2019-09-04T07:45:21", 7.52548, -14.65511], ["2019-09-04T08:15:21", 7.52642, -14.65408], ["2019-09-04T08:45:21", 7.52754, -14.65228], ["2019-09-04T09:15:27", 7.53014, -14.6507], ["2019-09-04T11:44:16", 7.55052, -14.63867], ["2019-09-04T12:27:08", 7.55878, -14.63425], ["2019-09-04T12:56:26", 7.5646, -14.63083], ["2019-09-04T14:25:55", 7.5875, -14.61998], ["2019-09-04T14:55:55", 7.59407, -14.6168], ["2019-09-04T15:25:55", 7.60137, -14.61337], ["2019-09-04T16:54:34", 7.62117, -14.60339], ["2019-09-04T17:24:34", 7.62855, -14.59987], ["2019-09-04T17:54:34", 7.63593, -14.59592], ["2019-09-04T18:54:14", 7.6519, -14.5867], ["2019-09-04T19:24:08", 7.6595, -14.58076], ["2019-09-04T19:54:08", 7.66628, -14.57389], ["2019-09-04T20:24:08", 7.67297, -14.56668], ["2019-09-04T20:53:29", 7.6796, -14.56055], ["2019-09-04T22:52:30", 7.71308, -14.53876], ["2019-09-04T23:22:30", 7.71977, -14.53361], ["2019-09-04T23:52:30", 7.72719, -14.52795], ["2019-09-05T00:22:39", 7.73233, -14.52106], ["2019-09-05T00:52:27", 7.73757, -14.51363], ["2019-09-05T01:22:27", 7.74302, -14.5047], ["2019-09-05T02:22:00", 7.75411, -14.4846], ["2019-09-05T02:52:00", 7.75844, -14.47559], ["2019-09-05T03:22:00", 7.76235, -14.46701], ["2019-09-05T03:51:08", 7.76582, -14.45914], ["2019-09-05T04:20:56", 7.76876, -14.45125], ["2019-09-05T04:50:56", 7.77194, -14.44241], ["2019-09-05T05:20:56", 7.77645, -14.4328], ["2019-09-05T08:49:03", 7.79411, -14.38638], ["2019-09-05T09:19:26", 7.7961, -14.38065], ["2019-09-05T09:48:53", 7.79793, -14.3746], ["2019-09-05T10:18:57", 7.80018, -14.36846], ["2019-09-05T10:48:43", 7.80277, -14.362], ["2019-09-05T11:18:57", 7.80447, -14.3555], ["2019-09-05T11:48:27", 7.80625, -14.34897], ["2019-09-05T13:18:24", 7.81736, -14.32904], ["2019-09-05T13:48:24", 7.82161, -14.322], ["2019-09-05T14:18:24", 7.82624, -14.31479], ["2019-09-05T14:47:44", 7.82955, -14.30829], ["2019-09-05T16:17:26", 7.83841, -14.28805], ["2019-09-05T16:47:26", 7.84227, -14.27861], ["2019-09-05T17:17:26", 7.84566, -14.26874], ["2019-09-05T18:33:54", 7.85146, -14.24222], ["2019-09-05T19:03:11", 7.85191, -14.23177], ["2019-09-05T19:33:11", 7.8514, -14.22199], ["2019-09-05T20:03:11", 7.84822, -14.21118], ["2019-09-05T20:33:28", 7.84265, -14.19949], ["2019-09-05T21:02:49", 7.83664, -14.18927], ["2019-09-05T22:02:08", 7.82512, -14.17], ["2019-09-05T22:32:08", 7.82027, -14.16116], ["2019-09-05T23:02:08", 7.81499, -14.15292], ["2019-09-05T23:32:28", 7.80883, -14.14508], ["2019-09-06T00:01:51", 7.80342, -14.13773]], "drifter_3": [["2019-07-22T10:28:00", 7.16194, -31.75391], ["2019-07-22T10:35:26", 7.16329, -31.75302], ["2019-07-22T11:34:27", 7.17058, -31.75021], ["2019-07-22T12:34:27", 7.18285, -31.7424], ["2019-07-22T13:34:27", 7.19793, -31.72913], ["2019-07-22T14:33:59", 7.21471, -31.71412], ["2019-07-22T15:33:59", 7.22994, -31.70013], ["2019-07-22T17:33:56", 7.25925, -31.67999], ["2019-07-22T18:34:57", 7.27572, -31.67007], ["2019-07-22T19:32:08", 7.29258, -31.66089], ["2019-07-23T06:29:28", 7.45924, -31.46402], ["2019-07-23T07:28:58", 7.4748, -31.44174], ["2019-07-23T08:28:24", 7.48592, -31.41617], ["2019-07-23T09:27:50", 7.49747, -31.38726], ["2019-07-23T10:27:50", 7.50867, -31.35876], ["2019-07-23T11:27:50", 7.51841, -31.33267], ["2019-07-23T12:26:54", 7.52641, -31.30584], ["2019-07-23T13:26:54", 7.53285, -31.27958], ["2019-07-23T14:26:54", 7.5386, -31.25143], ["2019-07-23T15:26:25", 7.54243, -31.2226], ["2019-07-23T16:25:58", 7.54509, -31.19464], ["2019-07-23T20:25:07", 7.53214, -31.09012], ["2019-07-23T21:24:56", 7.52601, -31.06497], ["2019-07-23T22:24:27", 7.52148, -31.03973], ["2019-07-23T23:24:27", 7.51818, -31.01578], ["2019-07-24T00:23:59", 7.5137, -30.99523], ["2019-07-24T01:23:59", 7.50675, -30.97171], ["2019-07-24T02:23:59", 7.49563, -30.95163], ["2019-07-24T05:23:29", 7.46075, -30.8913], ["2019-07-24T10:21:28", 7.42578, -30.79492], ["2019-07-24T11:20:58", 7.42346, -30.77924], ["2019-07-24T12:19:54", 7.4227, -30.76465], ["2019-07-24T13:19:58", 7.42033, -30.74924], ["2019-07-24T21:16:15", 7.39116, -30.62564], ["2019-07-24T22:16:59", 7.39473, -30.61346], ["2019-07-24T23:16:30", 7.40149, -30.60339], ["2019-07-25T02:15:26", 7.42373, -30.56564], ["2019-07-25T03:14:57", 7.43015, -30.55341], ["2019-07-25T04:14:27", 7.43547, -30.53943], ["2019-07-25T08:13:27", 7.45931, -30.49081], ["2019-07-25T09:13:02", 7.4661, -30.47943], ["2019-07-25T10:14:27", 7.47296, -30.46683], ["2019-07-25T11:11:41", 7.47945, -30.45685], ["2019-07-25T15:13:28", 7.49705, -30.41367], ["2019-07-25T16:09:59", 7.50597, -30.39926], ["2019-07-25T17:10:25", 7.51726, -30.38327], ["2019-07-25T18:09:58", 7.527, -30.36835], ["2019-07-25T19:09:58", 7.53561, -30.35141], ["2019-07-25T20:09:27", 7.54057, -30.3342], ["2019-07-25T21:08:59", 7.54697, -30.31754], ["2019-07-25T22:08:59", 7.55341, -30.30286], ["2019-07-25T23:08:59", 7.55616, -30.28775], ["2019-07-26T00:08:04", 7.55857, -30.27451], ["2019-07-26T08:06:11", 7.56499, -30.15671], ["2019-07-26T09:05:27", 7.5636, -30.13828], ["2019-07-26T10:05:27", 7.5603, -30.11588], ["2019-07-26T11:05:56", 7.55816, -30.09622], ["2019-07-26T12:05:25", 7.55644, -30.0799], ["2019-07-26T13:04:27", 7.55901, -30.06485], ["2019-07-26T14:03:55", 7.56191, -30.04843], ["2019-07-26T15:03:28", 7.56542, -30.03113], ["2019-07-26T17:02:16", 7.56648, -29.99745], ["2019-07-26T18:02:16", 7.56416, -29.9826], ["2019-07-26T19:02:16", 7.56416, -29.96912], ["2019-07-26T20:01:38", 7.56279, -29.95435], ["2019-07-26T21:01:25", 7.56024, -29.94101], ["2019-07-26T22:00:56", 7.5528, -29.92746], ["2019-07-26T23:00:27", 7.5486, -29.91511], ["2019-07-27T00:00:27", 7.54328, -29.90198], ["2019-07-27T00:59:36", 7.53367, -29.88753], ["2019-07-27T01:59:36", 7.52496, -29.87543], ["2019-07-27T02:58:58", 7.51642, -29.86174], ["2019-07-27T03:58:58", 7.50646, -29.84998], ["2019-07-27T04:58:27", 7.49394, -29.83566], ["2019-07-27T05:58:26", 7.48255, -29.82346], ["2019-07-27T07:57:57", 7.45683, -29.80045], ["2019-07-27T08:57:28", 7.44375, -29.79026], ["2019-07-27T09:57:28", 7.43066, -29.78082], ["2019-07-27T10:57:28", 7.41555, -29.77176], ["2019-07-27T11:56:57", 7.39676, -29.75765], ["2019-07-27T12:56:57", 7.37839, -29.74615], ["2019-07-27T14:55:58", 7.35298, -29.72443], ["2019-07-27T15:56:28", 7.34482, -29.71426], ["2019-07-27T16:55:58", 7.33809, -29.70529], ["2019-07-27T17:55:25", 7.33242, -29.69748], ["2019-07-27T18:54:56", 7.32474, -29.68798], ["2019-07-27T19:54:56", 7.31744, -29.67871], ["2019-07-27T20:53:55", 7.31176, -29.67194], ["2019-07-27T21:53:55", 7.30515, -29.66525], ["2019-07-27T22:53:26", 7.29449, -29.65725], ["2019-07-27T23:53:26", 7.28784, -29.65296], ["2019-07-28T00:53:26", 7.28462, -29.64944], ["2019-07-28T01:53:08", 7.2828, -29.64359], ["2019-07-28T02:52:27", 7.28483, -29.63397], ["2019-07-28T03:52:27", 7.28436, -29.62067], ["2019-07-28T04:52:09", 7.2833, -29.60818], ["2019-07-28T05:51:38", 7.2835, -29.59753], ["2019-07-28T06:51:38", 7.28397, -29.58594], ["2019-07-28T07:51:27", 7.28341, -29.57544], ["2019-07-28T08:50:59", 7.27862, -29.56461], ["2019-07-28T09:50:09", 7.27537, -29.55428], ["2019-07-28T10:50:09", 7.27425, -29.54553], ["2019-07-28T11:49:25", 7.27624, -29.53801], ["2019-07-28T12:49:25", 7.28156, -29.52728], ["2019-07-28T13:49:07", 7.28959, -29.51648], ["2019-07-28T14:48:36", 7.29653, -29.50606], ["2019-07-28T15:48:36", 7.30232, -29.49731], ["2019-07-28T16:48:26", 7.30976, -29.48672], ["2019-07-28T17:47:28", 7.31766, -29.47244], ["2019-07-28T18:47:28", 7.32388, -29.45957], ["2019-07-28T19:47:28", 7.32985, -29.44592], ["2019-07-28T20:47:24", 7.336, -29.43154], ["2019-07-28T21:47:24", 7.34184, -29.41901], ["2019-07-28T22:46:55", 7.35159, -29.40573], ["2019-07-28T23:46:41", 7.36263, -29.39337], ["2019-07-29T00:45:58", 7.37545, -29.38082], ["2019-07-29T01:45:58", 7.38695, -29.3676], ["2019-07-29T02:45:58", 7.39914, -29.35284], ["2019-07-29T03:45:55", 7.41053, -29.33856], ["2019-07-29T04:45:39", 7.42206, -29.32364], ["2019-07-29T07:44:27", 7.45176, -29.27365], ["2019-07-29T08:44:27", 7.46082, -29.25777], ["2019-07-29T09:44:27", 7.46691, -29.23932], ["2019-07-29T10:43:58", 7.47133, -29.22153], ["2019-07-29T11:43:24", 7.47732, -29.20515], ["2019-07-29T12:43:24", 7.48183, -29.18884], ["2019-07-29T13:42:26", 7.48758, -29.16978], ["2019-07-29T14:42:26", 7.49543, -29.15176], ["2019-07-29T15:42:26", 7.50586, -29.13382], ["2019-07-29T16:41:27", 7.51848, -29.1169], ["2019-07-29T17:41:27", 7.52771, -29.09793], ["2019-07-29T18:41:23", 7.53658, -29.07785], ["2019-07-29T19:40:56", 7.54649, -29.05786], ["2019-07-30T00:38:58", 7.57509, -28.95773], ["2019-07-30T01:38:54", 7.57862, -28.93634], ["2019-07-30T02:37:38", 7.58071, -28.91761], ["2019-07-30T03:37:38", 7.58165, -28.89727], ["2019-07-30T04:37:38", 7.58547, -28.87796], ["2019-07-30T06:37:27", 7.59725, -28.8338], ["2019-07-30T07:36:25", 7.60503, -28.81303], ["2019-07-30T08:36:25", 7.61061, -28.79535], ["2019-07-30T09:36:25", 7.61322, -28.7774], ["2019-07-30T10:35:57", 7.61878, -28.76065], ["2019-07-30T15:34:08", 7.64351, -28.68402], ["2019-07-30T16:33:54", 7.64366, -28.6749], ["2019-07-30T17:33:24", 7.64501, -28.6633], ["2019-07-30T18:32:54", 7.64387, -28.64877], ["2019-07-30T19:32:54", 7.63842, -28.62808], ["2019-07-31T01:30:28", 7.64663, -28.5181], ["2019-07-31T05:29:27", 7.63475, -28.46677], ["2019-07-31T06:28:56", 7.63222, -28.45419], ["2019-07-31T07:28:29", 7.63007, -28.44089], ["2019-07-31T10:27:25", 7.62557, -28.40308], ["2019-07-31T11:26:38", 7.62291, -28.3883], ["2019-07-31T12:26:38", 7.62089, -28.37534], ["2019-07-31T13:26:38", 7.61995, -28.36487], ["2019-07-31T14:25:56", 7.61945, -28.35495], ["2019-07-31T15:25:56", 7.61928, -28.34671], ["2019-07-31T21:23:58", 7.63198, -28.31366], ["2019-07-31T22:23:38", 7.64084, -28.30984], ["2019-08-01T00:22:58", 7.65313, -28.30145], ["2019-08-01T01:21:56", 7.65566, -28.29614], ["2019-08-01T02:21:56", 7.65532, -28.29288], ["2019-08-01T03:21:28", 7.65637, -28.29117], ["2019-08-01T04:20:57", 7.66158, -28.28751], ["2019-08-01T11:18:59", 7.6928, -28.2565], ["2019-08-01T12:18:29", 7.69883, -28.25299], ["2019-08-01T13:17:56", 7.70595, -28.24496], ["2019-08-01T14:16:55", 7.71448, -28.23641], ["2019-08-01T15:16:55", 7.72504, -28.22766], ["2019-08-01T18:16:25", 7.7754, -28.19568], ["2019-08-01T19:15:56", 7.78684, -28.186], ["2019-08-02T00:13:55", 7.82731, -28.13629], ["2019-08-02T01:13:36", 7.82731, -28.13626], ["2019-08-02T02:13:36", 7.83134, -28.12931], ["2019-08-02T03:13:36", 7.84104, -28.11566], ["2019-08-02T04:13:28", 7.84706, -28.11022], ["2019-08-02T05:13:28", 7.85234, -28.10516], ["2019-08-02T06:12:25", 7.85529, -28.10121], ["2019-08-02T07:12:25", 7.85456, -28.09803], ["2019-08-02T08:12:25", 7.8507, -28.0946], ["2019-08-02T09:11:57", 7.85068, -28.08939], ["2019-08-02T10:11:28", 7.85404, -28.08368], ["2019-08-02T11:11:26", 7.85764, -28.07745], ["2019-08-02T12:09:56", 7.86005, -28.07119], ["2019-08-02T13:09:56", 7.86224, -28.06475], ["2019-08-02T14:09:56", 7.86709, -28.05737], ["2019-08-02T15:09:54", 7.86919, -28.04822], ["2019-08-02T16:09:25", 7.87017, -28.0394], ["2019-08-02T17:08:53", 7.8694, -28.02979], ["2019-08-02T19:07:26", 7.86482, -28.01493], ["2019-08-02T20:07:36", 7.85978, -28.00903], ["2019-08-02T21:07:26", 7.85418, -28.00549], ["2019-08-02T22:06:39", 7.85079, -28.00134], ["2019-08-02T23:06:39", 7.84869, -27.99774], ["2019-08-03T00:06:29", 7.8452, -27.99966], ["2019-08-03T05:04:56", 7.84517, -27.99744], ["2019-08-03T06:04:24", 7.8455, -27.99643], ["2019-08-03T08:03:27", 7.8419, -27.99594], ["2019-08-03T12:02:06", 7.84418, -27.98923], ["2019-08-03T15:01:26", 7.83895, -27.98953], ["2019-08-03T16:00:55", 7.83628, -27.98772], ["2019-08-03T17:00:55", 7.83272, -27.98532], ["2019-08-03T17:59:55", 7.82571, -27.98615], ["2019-08-03T18:59:55", 7.82163, -27.98864], ["2019-08-03T19:59:55", 7.81768, -27.99036], ["2019-08-03T20:59:25", 7.81455, -27.99133], ["2019-08-04T01:57:57", 7.82806, -27.98163], ["2019-08-04T09:55:28", 7.85822, -27.93314], ["2019-08-04T10:55:26", 7.86967, -27.92337], ["2019-08-04T11:54:58", 7.88632, -27.91226], ["2019-08-04T13:53:07", 7.9159, -27.89487], ["2019-08-04T14:52:41", 7.93739, -27.88512], ["2019-08-04T15:52:41", 7.95503, -27.86924], ["2019-08-04T16:52:41", 7.96851, -27.85199], ["2019-08-04T17:52:57", 7.97787, -27.83646], ["2019-08-04T18:52:55", 7.98599, -27.82202], ["2019-08-05T01:50:55", 8.07493, -27.7103], ["2019-08-05T07:48:58", 8.1061, -27.61734], ["2019-08-05T09:47:28", 8.11163, -27.59241], ["2019-08-05T10:47:57", 8.11401, -27.57376], ["2019-08-05T17:45:58", 8.09944, -27.46573], ["2019-08-05T18:44:59", 8.08801, -27.45219], ["2019-08-05T19:44:59", 8.07436, -27.43854], ["2019-08-06T01:43:27", 8.01182, -27.36728], ["2019-08-06T02:40:17", 8.00127, -27.35619], ["2019-08-06T03:40:17", 7.98998, -27.34237], ["2019-08-06T04:40:17", 7.97959, -27.33224], ["2019-08-06T07:39:59", 7.93345, -27.30835], ["2019-08-06T14:37:04", 7.88395, -27.26666], ["2019-08-06T15:36:38", 7.87907, -27.25681], ["2019-08-06T16:36:38", 7.8728, -27.24951], ["2019-08-06T17:35:56", 7.86603, -27.24194], ["2019-08-06T18:35:56", 7.85839, -27.23773], ["2019-08-06T19:35:58", 7.85072, -27.23428], ["2019-08-06T20:35:37", 7.84153, -27.23105], ["2019-08-06T23:34:25", 7.82446, -27.23143], ["2019-08-07T00:34:25", 7.82322, -27.22903], ["2019-08-07T01:34:25", 7.82313, -27.22791], ["2019-08-07T02:33:55", 7.82282, -27.22513], ["2019-08-07T03:33:26", 7.82297, -27.22092], ["2019-08-07T04:32:37", 7.82095, -27.21465], ["2019-08-07T05:32:37", 7.81945, -27.20761], ["2019-08-07T06:32:26", 7.8158, -27.20218], ["2019-08-07T07:32:27", 7.80779, -27.19766], ["2019-08-07T08:31:29", 7.80271, -27.19413], ["2019-08-07T09:31:29", 7.79979, -27.1931], ["2019-08-07T10:31:29", 7.79537, -27.19241], ["2019-08-07T11:31:25", 7.79335, -27.19049], ["2019-08-07T13:29:59", 7.80058, -27.18006], ["2019-08-07T14:30:29", 7.80896, -27.1716], ["2019-08-07T15:29:59", 7.81886, -27.1622], ["2019-08-07T16:29:34", 7.82892, -27.15265], ["2019-08-07T18:29:00", 7.84395, -27.12878], ["2019-08-07T19:27:57", 7.84593, -27.11745], ["2019-08-07T20:27:57", 7.84687, -27.10543], ["2019-08-07T21:27:57", 7.84726, -27.0947], ["2019-08-07T22:28:24", 7.84441, -27.08777], ["2019-08-08T01:26:55", 7.84109, -27.07318], ["2019-08-08T05:25:01", 7.84639, -27.04547], ["2019-08-08T06:24:55", 7.84754, -27.03671], ["2019-08-08T07:24:53", 7.84576, -27.0307], ["2019-08-08T08:24:25", 7.84575, -27.02347], ["2019-08-08T13:22:30", 7.87358, -26.97949], ["2019-08-08T22:19:39", 7.99455, -26.81277], ["2019-08-09T05:19:00", 8.03852, -26.6546], ["2019-08-09T20:12:30", 8.0276, -26.17041], ["2019-08-09T21:12:30", 8.01925, -26.13684], ["2019-08-09T23:10:56", 7.99164, -26.06908], ["2019-08-10T00:10:56", 7.97598, -26.03612], ["2019-08-10T01:10:56", 7.96281, -26.00565], ["2019-08-10T03:10:25", 7.94921, -25.94476], ["2019-08-10T06:32:56", 7.94682, -25.84363], ["2019-08-10T07:32:37", 7.94469, -25.81134], ["2019-08-10T13:30:26", 7.93052, -25.64227], ["2019-08-10T14:29:25", 7.92662, -25.61569], ["2019-08-10T15:29:25", 7.92426, -25.58994], ["2019-08-10T16:29:25", 7.92211, -25.56436], ["2019-08-10T19:14:08", 7.90486, -25.49274], ["2019-08-10T20:13:54", 7.8978, -25.46793], ["2019-08-11T02:11:36", 7.86441, -25.35583], ["2019-08-11T03:11:28", 7.85819, -25.34277], ["2019-08-11T04:11:08", 7.85384, -25.33289], ["2019-08-11T05:10:56", 7.85207, -25.32675], ["2019-08-11T06:10:26", 7.84931, -25.31805], ["2019-08-11T07:10:26", 7.84631, -25.3093], ["2019-08-11T08:08:58", 7.8463, -25.30255], ["2019-08-11T09:08:58", 7.84896, -25.29637], ["2019-08-11T10:08:58", 7.85072, -25.28796], ["2019-08-11T11:08:27", 7.84998, -25.27869], ["2019-08-11T12:07:58", 7.84984, -25.27768], ["2019-08-11T13:07:58", 7.85679, -25.27399], ["2019-08-11T14:06:56", 7.86343, -25.26955], ["2019-08-11T15:06:56", 7.8694, -25.26346], ["2019-08-11T16:05:24", 7.87629, -25.25778], ["2019-08-11T17:05:24", 7.88698, -25.25177], ["2019-08-11T18:05:24", 7.899, -25.24731], ["2019-08-11T19:05:07", 7.91036, -25.2424], ["2019-08-11T20:04:25", 7.92299, -25.23785], ["2019-08-11T21:03:55", 7.93387, -25.23377], ["2019-08-11T22:03:55", 7.9446, -25.22733], ["2019-08-11T23:03:29", 7.95664, -25.22031], ["2019-08-12T00:03:29", 7.9696, -25.21344], ["2019-08-12T01:02:26", 7.98274, -25.20483], ["2019-08-12T04:01:57", 8.02533, -25.16611], ["2019-08-12T05:00:26", 8.0397, -25.1511], ["2019-08-12T06:00:26", 8.05353, -25.13634], ["2019-08-12T07:00:26", 8.06799, -25.11917], ["2019-08-12T12:58:37", 8.13439, -25.0101], ["2019-08-12T13:58:26", 8.14521, -24.98923], ["2019-08-12T14:58:25", 8.15493, -24.96719], ["2019-08-12T15:56:57", 8.16671, -24.94512], ["2019-08-12T16:56:57", 8.17855, -24.92383], ["2019-08-12T17:56:57", 8.19039, -24.90186], ["2019-08-12T18:56:05", 8.19694, -24.87502], ["2019-08-12T19:56:05", 8.20343, -24.85064], ["2019-08-12T20:56:05", 8.206, -24.82669], ["2019-08-12T21:55:27", 8.20758, -24.80387], ["2019-08-12T22:55:27", 8.2093, -24.78387], ["2019-08-12T23:55:27", 8.20977, -24.76215], ["2019-08-13T05:53:08", 8.20578, -24.60904], ["2019-08-13T06:52:56", 8.20313, -24.58728], ["2019-08-13T10:51:27", 8.18896, -24.50055], ["2019-08-13T11:51:27", 8.18235, -24.47949], ["2019-08-13T14:50:07", 8.16977, -24.41852], ["2019-08-13T16:48:53", 8.15903, -24.37672], ["2019-08-13T17:48:53", 8.15621, -24.35458], ["2019-08-13T18:48:53", 8.15029, -24.33347], ["2019-08-13T20:48:01", 8.13841, -24.30112], ["2019-08-13T21:48:01", 8.13162, -24.28773], ["2019-08-13T22:48:01", 8.12252, -24.27451], ["2019-08-13T23:46:27", 8.11215, -24.26121], ["2019-08-14T00:46:27", 8.10382, -24.24533], ["2019-08-14T01:46:27", 8.09498, -24.22937], ["2019-08-14T02:45:56", 8.08567, -24.21225], ["2019-08-14T03:45:38", 8.07797, -24.19653], ["2019-08-14T04:45:08", 8.06831, -24.18207], ["2019-08-14T05:45:08", 8.05835, -24.16885], ["2019-08-14T06:44:53", 8.04696, -24.15663], ["2019-08-14T07:44:53", 8.03584, -24.14496], ["2019-08-14T08:43:57", 8.02608, -24.13187], ["2019-08-14T15:42:07", 7.93493, -24.0459]], "drifter_4": [["2019-07-22T10:28:00", 7.16194, -31.75391], ["2019-07-22T11:35:56", 7.17107, -31.75095], ["2019-07-22T13:35:59", 7.19841, -31.72906], ["2019-07-22T14:34:58", 7.21513, -31.71399], ["2019-07-22T15:35:45", 7.23075, -31.69992], ["2019-07-22T16:33:09", 7.24614, -31.68937], ["2019-07-22T17:33:09", 7.25901, -31.68036], ["2019-07-22T18:33:32", 7.27519, -31.67078], ["2019-07-22T19:33:56", 7.29287, -31.66098], ["2019-07-22T23:31:20", 7.36146, -31.60181], ["2019-07-23T00:31:48", 7.37774, -31.57956], ["2019-07-23T02:31:58", 7.40764, -31.54071], ["2019-07-23T03:29:38", 7.42294, -31.52555], ["2019-07-23T04:29:38", 7.43599, -31.50847], ["2019-07-23T05:29:38", 7.44711, -31.48727], ["2019-07-23T06:29:29", 7.45956, -31.46381], ["2019-07-23T07:29:00", 7.47488, -31.44174], ["2019-07-23T08:29:05", 7.48601, -31.41583], ["2019-07-23T09:28:55", 7.49751, -31.38708], ["2019-07-23T10:28:27", 7.50868, -31.35855], ["2019-07-23T11:28:27", 7.51846, -31.33246], ["2019-07-23T12:27:26", 7.52631, -31.30584], ["2019-07-23T13:27:26", 7.53296, -31.27923], ["2019-07-23T14:27:26", 7.53862, -31.25116], ["2019-07-23T15:26:58", 7.54239, -31.22232], ["2019-07-23T16:27:26", 7.54513, -31.19391], ["2019-07-23T17:26:26", 7.5447, -31.16602], ["2019-07-23T18:26:26", 7.53959, -31.1413], ["2019-07-23T19:25:59", 7.53468, -31.11584], ["2019-07-23T20:25:59", 7.53206, -31.08975], ["2019-07-23T21:25:56", 7.52591, -31.06451], ["2019-07-23T22:25:26", 7.52139, -31.03937], ["2019-07-23T23:25:31", 7.51807, -31.01532], ["2019-07-24T06:22:44", 7.44919, -30.86853], ["2019-07-24T07:23:31", 7.43936, -30.84729], ["2019-07-24T11:22:00", 7.42419, -30.77866], ["2019-07-24T12:21:55", 7.42325, -30.76349], ["2019-07-24T13:21:57", 7.42099, -30.74838], ["2019-07-24T15:19:28", 7.41568, -30.71617], ["2019-07-24T16:20:10", 7.41186, -30.70233], ["2019-07-24T17:19:28", 7.40718, -30.68759], ["2019-07-24T18:18:56", 7.40131, -30.67111], ["2019-07-24T19:19:28", 7.39837, -30.6524], ["2019-07-24T20:19:28", 7.39528, -30.63635], ["2019-07-24T21:19:47", 7.39436, -30.62434], ["2019-07-24T22:17:59", 7.3976, -30.61261], ["2019-07-24T23:19:47", 7.40457, -30.60254], ["2019-07-25T00:16:38", 7.41196, -30.59222], ["2019-07-25T01:16:38", 7.42041, -30.57874], ["2019-07-25T02:16:38", 7.42715, -30.56552], ["2019-07-25T07:13:42", 7.45633, -30.50024], ["2019-07-25T08:14:27", 7.46301, -30.48926], ["2019-07-25T09:14:57", 7.47024, -30.47763], ["2019-07-25T14:12:56", 7.49788, -30.42719], ["2019-07-25T15:10:41", 7.50084, -30.41316], ["2019-07-25T16:10:41", 7.50912, -30.39805], ["2019-07-25T17:10:41", 7.51972, -30.38251], ["2019-07-25T19:09:41", 7.53797, -30.35144], ["2019-07-25T20:08:46", 7.54324, -30.33345], ["2019-07-25T21:08:46", 7.54955, -30.31654], ["2019-07-25T22:08:46", 7.55564, -30.30212], ["2019-07-25T23:09:30", 7.55827, -30.28723], ["2019-07-26T05:07:59", 7.56918, -30.20547], ["2019-07-26T06:06:33", 7.57197, -30.19772], ["2019-07-26T07:06:29", 7.56998, -30.17392], ["2019-07-26T08:06:33", 7.56841, -30.15652], ["2019-07-26T09:06:01", 7.56727, -30.13806], ["2019-07-26T10:05:57", 7.56477, -30.1155], ["2019-07-26T11:05:57", 7.56383, -30.09662], ["2019-07-26T12:05:55", 7.56325, -30.08255], ["2019-07-26T13:06:03", 7.56461, -30.0664], ["2019-07-26T14:06:03", 7.56753, -30.0488], ["2019-07-26T15:04:58", 7.57057, -30.0311], ["2019-07-26T17:04:28", 7.57023, -29.99654], ["2019-07-26T18:04:28", 7.56916, -29.98178], ["2019-07-26T19:04:28", 7.56967, -29.96899], ["2019-07-26T20:03:20", 7.56795, -29.95486], ["2019-07-26T21:03:26", 7.56438, -29.94226], ["2019-07-26T22:02:27", 7.55708, -29.93002], ["2019-07-26T23:01:58", 7.55353, -29.91844], ["2019-07-27T00:01:58", 7.54748, -29.90488], ["2019-07-27T01:01:26", 7.53697, -29.89003], ["2019-07-27T02:01:26", 7.52937, -29.87827], ["2019-07-27T03:00:24", 7.52084, -29.86433], ["2019-07-27T04:00:24", 7.51123, -29.85214], ["2019-07-27T05:00:25", 7.49988, -29.83649], ["2019-07-27T08:59:07", 7.45002, -29.79092], ["2019-07-27T09:58:25", 7.43695, -29.78198], ["2019-07-27T10:58:08", 7.42176, -29.77341], ["2019-07-27T11:57:58", 7.40318, -29.76071], ["2019-07-27T12:57:28", 7.38516, -29.74945], ["2019-07-27T14:56:25", 7.36091, -29.72999], ["2019-07-27T15:57:00", 7.35252, -29.72098], ["2019-07-27T16:56:25", 7.34598, -29.71317], ["2019-07-27T17:55:56", 7.33954, -29.70645], ["2019-07-27T18:55:06", 7.33175, -29.69769], ["2019-07-27T19:55:06", 7.32403, -29.68954], ["2019-07-27T20:53:56", 7.3196, -29.68257], ["2019-07-27T21:53:56", 7.31166, -29.6763], ["2019-07-27T22:53:26", 7.30121, -29.66887], ["2019-07-27T23:53:26", 7.2943, -29.66475], ["2019-07-28T00:53:26", 7.29125, -29.66089], ["2019-07-28T01:52:57", 7.28947, -29.65448], ["2019-07-28T02:52:57", 7.2912, -29.64474], ["2019-07-28T03:52:29", 7.29075, -29.63135], ["2019-07-28T04:52:26", 7.29, -29.61847], ["2019-07-28T05:51:27", 7.29, -29.6084], ["2019-07-28T06:51:27", 7.29086, -29.59741], ["2019-07-28T07:50:57", 7.2897, -29.58752], ["2019-07-28T08:50:28", 7.284, -29.57693], ["2019-07-28T10:50:28", 7.27895, -29.55768], ["2019-07-28T11:49:29", 7.28034, -29.54875], ["2019-07-28T12:49:29", 7.28532, -29.53879], ["2019-07-28T13:48:59", 7.29271, -29.53122], ["2019-07-28T14:48:26", 7.29907, -29.52211], ["2019-07-28T15:48:26", 7.30516, -29.51456], ["2019-07-28T21:46:55", 7.33817, -29.43549], ["2019-07-28T22:46:57", 7.34687, -29.42279], ["2019-07-28T23:47:29", 7.35806, -29.41061], ["2019-07-29T03:43:58", 7.3999, -29.35947], ["2019-07-29T04:44:32", 7.40803, -29.34409], ["2019-07-29T05:44:33", 7.41624, -29.32834], ["2019-07-29T06:43:57", 7.42372, -29.31368], ["2019-07-29T07:43:57", 7.43166, -29.2984], ["2019-07-29T09:42:30", 7.44266, -29.26782], ["2019-07-29T10:41:28", 7.44572, -29.25245], ["2019-07-29T11:41:28", 7.45048, -29.23752], ["2019-07-29T12:41:28", 7.4549, -29.21881], ["2019-07-29T13:42:56", 7.45792, -29.20041], ["2019-07-29T14:40:13", 7.4612, -29.18179], ["2019-07-29T16:39:55", 7.47746, -29.14793], ["2019-07-29T17:39:26", 7.48845, -29.1283], ["2019-07-29T18:39:55", 7.49699, -29.10861], ["2019-07-29T19:38:59", 7.50255, -29.08914], ["2019-07-29T20:38:34", 7.50756, -29.06985], ["2019-07-29T21:38:34", 7.5134, -29.052], ["2019-07-29T22:37:57", 7.51837, -29.03458], ["2019-07-30T01:36:56", 7.52002, -28.97113], ["2019-07-30T02:36:28", 7.52097, -28.95249], ["2019-07-30T03:36:28", 7.52097, -28.93378], ["2019-07-30T04:35:57", 7.52021, -28.91708], ["2019-07-30T06:35:25", 7.52529, -28.8801], ["2019-07-30T07:35:25", 7.53383, -28.86388], ["2019-07-30T08:35:25", 7.53907, -28.8468], ["2019-07-30T09:35:07", 7.54484, -28.83109], ["2019-07-30T10:34:57", 7.54603, -28.81604], ["2019-07-30T11:34:25", 7.54979, -28.80112], ["2019-07-30T12:33:58", 7.5572, -28.78525], ["2019-07-30T13:33:27", 7.56416, -28.76721], ["2019-07-30T14:33:27", 7.57098, -28.75064], ["2019-07-30T15:33:27", 7.57772, -28.73416], ["2019-07-30T17:32:09", 7.58502, -28.71848], ["2019-07-30T18:32:09", 7.59287, -28.69162], ["2019-07-30T19:32:09", 7.59034, -28.66699], ["2019-07-30T20:31:55", 7.5905, -28.64346], ["2019-07-30T21:31:55", 7.59488, -28.61823], ["2019-07-30T22:30:56", 7.59837, -28.59958], ["2019-07-30T23:30:56", 7.60004, -28.58078], ["2019-07-31T00:30:56", 7.60163, -28.56396], ["2019-07-31T06:27:28", 7.59196, -28.47632], ["2019-07-31T07:26:57", 7.59133, -28.45886], ["2019-07-31T08:26:33", 7.59278, -28.44303], ["2019-07-31T09:26:33", 7.59235, -28.4281], ["2019-07-31T15:24:56", 7.58577, -28.34164], ["2019-07-31T21:23:36", 7.59448, -28.29456], ["2019-07-31T22:23:26", 7.59849, -28.29053], ["2019-07-31T23:23:31", 7.60617, -28.28687], ["2019-08-01T00:22:38", 7.61119, -28.28162], ["2019-08-01T01:22:08", 7.61286, -28.27665], ["2019-08-01T02:22:08", 7.61209, -28.27365], ["2019-08-01T03:21:59", 7.61094, -28.27279], ["2019-08-01T04:21:59", 7.61244, -28.26953], ["2019-08-01T05:21:28", 7.61527, -28.26677], ["2019-08-01T06:21:28", 7.61849, -28.26505], ["2019-08-01T07:21:08", 7.62235, -28.2613], ["2019-08-01T08:21:08", 7.62771, -28.25761], ["2019-08-01T09:21:08", 7.63307, -28.25409], ["2019-08-02T04:48:38", 7.78473, -28.11127], ["2019-08-02T05:48:07", 7.79278, -28.10748], ["2019-08-02T10:55:26", 7.8071, -28.08536], ["2019-08-02T11:54:29", 7.80967, -28.07771], ["2019-08-02T12:54:29", 7.81109, -28.07084], ["2019-08-02T13:54:29", 7.81173, -28.06415], ["2019-08-02T14:54:08", 7.81428, -28.05569], ["2019-08-02T16:53:58", 7.8169, -28.03787], ["2019-08-02T17:53:36", 7.81831, -28.03072], ["2019-08-02T18:53:36", 7.81719, -28.02222], ["2019-08-02T19:53:07", 7.81577, -28.01176], ["2019-08-02T20:53:07", 7.81272, -28.00455], ["2019-08-02T21:52:58", 7.80912, -27.99847], ["2019-08-02T22:52:39", 7.80829, -27.99319], ["2019-08-03T01:51:26", 7.79538, -27.98996], ["2019-08-03T03:49:57", 7.79535, -27.98991], ["2019-08-03T04:49:57", 7.79269, -27.98588], ["2019-08-03T05:49:57", 7.78505, -27.97498], ["2019-08-03T06:48:56", 7.78279, -27.97233], ["2019-08-03T07:48:56", 7.77996, -27.97061], ["2019-08-03T08:48:56", 7.77846, -27.96967], ["2019-08-03T09:48:25", 7.77637, -27.96661], ["2019-08-03T10:48:25", 7.77586, -27.96472], ["2019-08-03T11:48:23", 7.77762, -27.96066], ["2019-08-03T12:47:55", 7.77376, -27.95672], ["2019-08-03T13:47:55", 7.77097, -27.95346], ["2019-08-04T08:23:24", 7.76803, -27.76834], ["2019-08-04T09:22:56", 7.77793, -27.75308], ["2019-08-04T13:21:57", 7.85195, -27.7012], ["2019-08-04T14:21:25", 7.86903, -27.68552], ["2019-08-04T15:21:07", 7.88456, -27.66534], ["2019-08-05T00:19:29", 8.01715, -27.5007], ["2019-08-05T01:19:10", 8.03246, -27.47891], ["2019-08-05T02:18:57", 8.04557, -27.45599], ["2019-08-05T03:18:37", 8.05437, -27.43196], ["2019-08-05T04:18:37", 8.05767, -27.40707], ["2019-08-05T05:18:27", 8.05683, -27.38385], ["2019-08-05T06:18:27", 8.0542, -27.36966], ["2019-08-05T09:17:26", 8.06259, -27.34107], ["2019-08-05T10:17:26", 8.06628, -27.32905], ["2019-08-05T11:17:26", 8.07001, -27.31763], ["2019-08-05T12:16:58", 8.07236, -27.30408], ["2019-08-05T13:16:58", 8.07335, -27.28906], ["2019-08-05T18:58:56", 8.02649, -27.19003], ["2019-08-05T20:57:30", 8.00754, -27.15828], ["2019-08-05T21:57:30", 7.99724, -27.14515], ["2019-08-05T22:57:30", 7.98668, -27.13348], ["2019-08-06T05:55:36", 7.91336, -27.07404], ["2019-08-06T06:55:28", 7.90185, -27.0655], ["2019-08-06T07:55:28", 7.88906, -27.0582], ["2019-08-06T08:54:57", 7.87888, -27.05386], ["2019-08-06T09:54:40", 7.87072, -27.05086], ["2019-08-06T10:54:40", 7.86471, -27.04477], ["2019-08-06T11:53:56", 7.85717, -27.03682], ["2019-08-06T12:53:56", 7.85223, -27.02927], ["2019-08-06T13:53:28", 7.84771, -27.02206], ["2019-08-06T14:53:26", 7.84405, -27.01303], ["2019-08-06T17:52:05", 7.83118, -26.98944], ["2019-08-06T18:52:05", 7.82693, -26.98498], ["2019-08-06T19:52:05", 7.82268, -26.9794], ["2019-08-06T21:50:31", 7.81413, -26.9671], ["2019-08-06T22:50:31", 7.81147, -26.96015], ["2019-08-06T23:50:31", 7.81031, -26.95346], ["2019-08-07T00:49:55", 7.806, -26.94411], ["2019-08-07T01:49:55", 7.80321, -26.93604], ["2019-08-07T02:49:02", 7.80323, -26.93596], ["2019-08-07T03:49:02", 7.80435, -26.92866], ["2019-08-07T04:49:02", 7.80757, -26.91965], ["2019-08-07T05:48:40", 7.8057, -26.91565], ["2019-08-07T07:48:28", 7.79811, -26.9054], ["2019-08-07T09:00:57", 7.79257, -26.89789], ["2019-08-07T09:59:55", 7.78716, -26.89226], ["2019-08-07T10:59:55", 7.7857, -26.88565], ["2019-08-07T13:42:57", 7.7909, -26.85605], ["2019-08-07T19:40:42", 7.8385, -26.77637], ["2019-08-07T20:39:57", 7.84122, -26.76035], ["2019-08-08T01:38:28", 7.83268, -26.70508], ["2019-08-08T07:26:54", 7.84482, -26.65359], ["2019-08-08T08:25:58", 7.84654, -26.6376], ["2019-08-08T09:25:58", 7.848, -26.6182], ["2019-08-08T10:25:58", 7.84894, -26.59915], ["2019-08-08T11:24:56", 7.85309, -26.58085], ["2019-08-08T12:24:56", 7.86069, -26.56531], ["2019-08-08T13:24:56", 7.86996, -26.5448], ["2019-08-08T19:23:26", 7.98601, -26.40106], ["2019-08-08T23:21:59", 8.03491, -26.29034], ["2019-08-09T00:21:27", 8.04476, -26.26322], ["2019-08-09T01:21:27", 8.05583, -26.23575], ["2019-08-09T02:20:58", 8.06697, -26.20533], ["2019-08-09T03:20:58", 8.07555, -26.17795], ["2019-08-09T04:20:37", 8.08436, -26.1543], ["2019-08-09T05:20:26", 8.09249, -26.12973], ["2019-08-09T07:19:06", 8.10126, -26.07083], ["2019-08-09T08:19:26", 8.10096, -26.04034], ["2019-08-09T09:19:06", 8.09507, -26.01169], ["2019-08-09T10:18:57", 8.08358, -25.98257], ["2019-08-09T12:18:25", 8.06875, -25.92697], ["2019-08-09T13:18:09", 8.0619, -25.90112], ["2019-08-09T14:17:25", 8.05918, -25.87957], ["2019-08-09T15:17:25", 8.05854, -25.85966], ["2019-08-09T16:17:25", 8.05781, -25.83932], ["2019-08-10T00:15:09", 8.02576, -25.64429], ["2019-08-10T03:47:57", 7.99249, -25.556], ["2019-08-10T04:47:08", 7.98391, -25.53183], ["2019-08-10T15:27:57", 7.89964, -25.33612], ["2019-08-11T05:38:36", 7.8745, -25.21365], ["2019-08-11T06:37:58", 7.87393, -25.20541], ["2019-08-11T07:38:00", 7.87329, -25.20041], ["2019-08-11T12:36:10", 7.90015, -25.17499], ["2019-08-11T13:35:57", 7.91081, -25.17267], ["2019-08-11T14:34:56", 7.92203, -25.16761], ["2019-08-11T15:34:56", 7.93572, -25.16306], ["2019-08-11T16:34:55", 7.94964, -25.15994], ["2019-08-11T17:33:56", 7.96424, -25.15675], ["2019-08-11T18:33:56", 7.97896, -25.15237], ["2019-08-11T19:32:57", 7.99436, -25.14684], ["2019-08-11T20:32:57", 8.00555, -25.1398], ["2019-08-11T21:32:57", 8.01767, -25.13351], ["2019-08-11T22:32:38", 8.0306, -25.12561], ["2019-08-11T23:32:25", 8.04505, -25.11639], ["2019-08-12T00:32:25", 8.06157, -25.10635], ["2019-08-12T01:31:39", 8.07811, -25.0958], ["2019-08-12T02:31:39", 8.09515, -25.0831], ["2019-08-12T03:31:32", 8.10968, -25.07019], ["2019-08-12T09:29:27", 8.18069, -24.96536], ["2019-08-12T10:28:25", 8.18924, -24.94514], ["2019-08-12T11:28:56", 8.19828, -24.92542], ["2019-08-12T12:28:25", 8.2113, -24.90454], ["2019-08-12T13:28:26", 8.22613, -24.88083], ["2019-08-12T14:28:27", 8.24053, -24.85625], ["2019-08-12T15:28:27", 8.25379, -24.83265], ["2019-08-12T16:28:27", 8.26211, -24.80896], ["2019-08-12T17:27:27", 8.26704, -24.78247], ["2019-08-12T18:27:07", 8.27111, -24.7536], ["2019-08-12T19:26:56", 8.2764, -24.72549], ["2019-08-12T23:48:26", 8.29782, -24.61578], ["2019-08-13T00:47:38", 8.29533, -24.59055], ["2019-08-13T01:47:28", 8.29022, -24.56451], ["2019-08-13T05:45:55", 8.26267, -24.4624], ["2019-08-13T06:45:57", 8.25947, -24.43521], ["2019-08-13T07:44:58", 8.25577, -24.40882], ["2019-08-13T08:44:58", 8.25512, -24.38384], ["2019-08-13T09:44:58", 8.25465, -24.36032], ["2019-08-13T11:44:56", 8.25473, -24.31171], ["2019-08-13T15:43:35", 8.23786, -24.21103], ["2019-08-13T19:41:57", 8.19272, -24.12242], ["2019-08-13T20:42:28", 8.18465, -24.10507], ["2019-08-13T21:41:57", 8.17778, -24.08731], ["2019-08-14T00:41:01", 8.14897, -24.03848], ["2019-08-14T01:40:58", 8.138, -24.02383], ["2019-08-14T02:40:27", 8.12702, -24.01025], ["2019-08-14T03:39:26", 8.11841, -23.99551], ["2019-08-14T04:39:26", 8.10918, -23.97886], ["2019-08-14T05:39:26", 8.10012, -23.96521], ["2019-08-14T06:39:07", 8.09178, -23.95197], ["2019-08-14T08:38:58", 8.07432, -23.92154], ["2019-08-14T09:37:57", 8.06467, -23.90684], ["2019-08-14T10:37:57", 8.05335, -23.89577], ["2019-08-14T11:37:57", 8.04236, -23.88684], ["2019-08-14T12:37:56", 8.02969, -23.87561], ["2019-08-14T13:37:54", 8.01512, -23.86197], ["2019-08-14T14:37:07", 8.00089, -23.84906], ["2019-08-14T15:36:36", 7.98831, -23.83477], ["2019-08-14T16:36:36", 7.97934, -23.82327], ["2019-08-14T17:36:25", 7.97437, -23.81107], ["2019-08-14T18:36:08", 7.96959, -23.80008], ["2019-08-14T19:35:56", 7.96358, -23.79191], ["2019-08-14T20:35:56", 7.95667, -23.78522], ["2019-08-14T21:34:57", 7.9474, -23.77639], ["2019-08-14T22:34:57", 7.9371, -23.76806], ["2019-08-14T23:34:57", 7.92637, -23.7587], ["2019-08-15T00:34:27", 7.91784, -23.75171], ["2019-08-15T01:34:07", 7.9124, -23.74338], ["2019-08-15T02:34:07", 7.90935, -23.73694], ["2019-08-15T08:11:56", 7.87958, -23.68326], ["2019-08-15T09:11:26", 7.8738, -23.67415], ["2019-08-15T10:11:26", 7.86796, -23.66394], ["2019-08-15T11:10:38", 7.86544, -23.65431], ["2019-08-15T12:10:38", 7.86218, -23.64427], ["2019-08-15T13:10:38", 7.86029, -23.63474], ["2019-08-15T14:10:26", 7.85513, -23.62305], ["2019-08-15T21:08:53", 7.84377, -23.53308], ["2019-08-15T22:08:33", 7.84545, -23.52022], ["2019-08-15T23:08:33", 7.84678, -23.50812], ["2019-08-16T00:07:26", 7.84734, -23.49644], ["2019-08-16T01:07:26", 7.85318, -23.48502], ["2019-08-16T02:07:25", 7.86385, -23.47311], ["2019-08-16T03:06:56", 7.87398, -23.45893], ["2019-08-16T04:06:56", 7.88248, -23.44254], ["2019-08-16T05:06:55", 7.89025, -23.42191], ["2019-08-16T06:06:28", 7.89672, -23.39825], ["2019-08-16T07:05:59", 7.9038, -23.37349], ["2019-08-16T08:05:59", 7.91389, -23.35272], ["2019-08-16T09:05:38", 7.92286, -23.33514], ["2019-08-16T10:04:57", 7.93092, -23.31696], ["2019-08-16T11:04:57", 7.93568, -23.29688], ["2019-08-16T17:03:35", 7.97453, -23.14462], ["2019-08-16T18:03:07", 7.9767, -23.11892], ["2019-08-16T19:03:07", 7.97872, -23.09592], ["2019-08-16T20:03:07", 7.97941, -23.07034], ["2019-08-17T07:59:11", 7.93151, -22.82278], ["2019-08-17T08:58:28", 7.92808, -22.80071], ["2019-08-17T09:58:28", 7.924, -22.77917], ["2019-08-17T10:58:28", 7.92181, -22.75565], ["2019-08-17T15:57:58", 7.91332, -22.65897], ["2019-08-17T16:57:34", 7.91319, -22.64474], ["2019-08-17T21:56:28", 7.91639, -22.56619], ["2019-08-17T22:56:17", 7.91321, -22.5509], ["2019-08-17T23:56:08", 7.90928, -22.5376], ["2019-08-18T00:55:01", 7.90285, -22.52645], ["2019-08-18T01:55:01", 7.89693, -22.51581], ["2019-08-18T02:55:01", 7.89272, -22.5062], ["2019-08-18T03:54:57", 7.89176, -22.49457], ["2019-08-18T04:54:29", 7.88716, -22.4801], ["2019-08-18T10:52:40", 7.87317, -22.41446], ["2019-08-18T11:51:25", 7.88369, -22.40414], ["2019-08-18T12:51:58", 7.89178, -22.39429], ["2019-08-18T13:51:25", 7.89837, -22.38406], ["2019-08-18T14:50:57", 7.90379, -22.37357], ["2019-08-18T15:50:29", 7.90725, -22.36288], ["2019-08-18T16:50:29", 7.91107, -22.3494], ["2019-08-18T17:49:55", 7.91624, -22.33406], ["2019-08-18T18:49:55", 7.92135, -22.31964], ["2019-08-18T19:49:32", 7.92576, -22.30637], ["2019-08-18T20:49:28", 7.92789, -22.2923], ["2019-08-19T01:47:57", 7.95072, -22.25568], ["2019-08-19T02:46:56", 7.95467, -22.24293], ["2019-08-19T03:46:56", 7.95853, -22.22705], ["2019-08-19T04:46:56", 7.96149, -22.20825], ["2019-08-19T09:45:26", 7.98582, -22.13104], ["2019-08-19T10:45:04", 7.99149, -22.11768], ["2019-08-19T11:44:28", 7.99524, -22.10196], ["2019-08-19T12:44:28", 7.99563, -22.08539], ["2019-08-19T13:44:27", 7.99423, -22.06723], ["2019-08-19T14:43:38", 7.98941, -22.04763], ["2019-08-19T15:43:38", 7.98581, -22.02634], ["2019-08-19T16:43:40", 7.98911, -22.00711], ["2019-08-19T17:43:27", 7.99694, -21.98956], ["2019-08-19T18:43:04", 8.00475, -21.97437], ["2019-08-19T19:43:04", 8.00694, -21.96021], ["2019-08-19T20:43:09", 8.00769, -21.94565], ["2019-08-19T21:43:11", 8.00691, -21.93127], ["2019-08-19T22:43:04", 7.99986, -21.91388], ["2019-08-19T23:41:57", 7.99361, -21.89883], ["2019-08-20T00:42:04", 7.98988, -21.8887], ["2019-08-20T01:41:25", 7.9844, -21.87778], ["2019-08-20T02:40:28", 7.97835, -21.8666], ["2019-08-20T03:40:56", 7.97465, -21.85202], ["2019-08-20T04:40:28", 7.97299, -21.83673], ["2019-08-20T05:40:26", 7.96858, -21.81963], ["2019-08-20T06:40:26", 7.96575, -21.80118], ["2019-08-20T07:39:58", 7.96366, -21.77914], ["2019-08-20T08:39:57", 7.96651, -21.75555], ["2019-08-20T10:39:08", 7.98192, -21.71031], ["2019-08-20T11:39:08", 7.99029, -21.68628], ["2019-08-20T11:39:10", 7.99028, -21.68634], ["2019-08-20T12:39:08", 7.9945, -21.6601], ["2019-08-20T18:37:59", 7.97605, -21.52383], ["2019-08-20T19:37:38", 7.97501, -21.50446], ["2019-08-20T20:36:49", 7.97023, -21.482], ["2019-08-20T21:36:49", 7.96396, -21.45745], ["2019-08-20T22:36:49", 7.96014, -21.43256], ["2019-08-20T23:37:10", 7.95581, -21.41026], ["2019-08-21T00:37:10", 7.95053, -21.38803], ["2019-08-21T01:35:42", 7.94623, -21.36756], ["2019-08-21T02:35:42", 7.94181, -21.34567], ["2019-08-21T03:35:42", 7.93838, -21.32181], ["2019-08-21T04:36:08", 7.93606, -21.29633], ["2019-08-21T10:34:29", 7.90848, -21.14676], ["2019-08-21T11:33:59", 7.90467, -21.12161], ["2019-08-21T12:33:26", 7.90212, -21.0963], ["2019-08-21T13:33:26", 7.89663, -21.0715], ["2019-08-21T14:33:10", 7.89003, -21.04611], ["2019-08-21T15:33:10", 7.88179, -21.01993], ["2019-08-21T16:32:27", 7.87569, -20.99555], ["2019-08-21T17:32:27", 7.87028, -20.97169], ["2019-08-21T18:32:27", 7.86256, -20.9462], ["2019-08-21T22:31:28", 7.83603, -20.84912], ["2019-08-21T23:30:57", 7.83202, -20.82903], ["2019-08-22T00:30:57", 7.82708, -20.80826], ["2019-08-22T05:30:09", 7.77386, -20.69467], ["2019-08-22T06:30:01", 7.76677, -20.67447], ["2019-08-22T07:29:29", 7.76022, -20.65634], ["2019-08-22T08:28:59", 7.75446, -20.64048], ["2019-08-22T09:28:59", 7.74944, -20.62357], ["2019-08-22T10:28:28", 7.74432, -20.60324], ["2019-08-22T11:28:28", 7.74084, -20.58221], ["2019-08-22T12:28:10", 7.73882, -20.56506], ["2019-08-22T16:27:08", 7.69843, -20.51685], ["2019-08-22T17:26:27", 7.68493, -20.50266], ["2019-08-22T18:26:27", 7.67283, -20.48627], ["2019-08-22T19:26:21", 7.66332, -20.46797], ["2019-08-22T20:26:21", 7.65753, -20.449], ["2019-08-22T21:26:21", 7.65714, -20.43381], ["2019-08-23T02:25:28", 7.64565, -20.39203], ["2019-08-23T03:25:09", 7.64565, -20.38165], ["2019-08-23T04:24:59", 7.64314, -20.37137], ["2019-08-23T08:23:27", 7.6369, -20.34052], ["2019-08-23T09:23:56", 7.63787, -20.33414], ["2019-08-23T10:23:30", 7.64121, -20.32867], ["2019-08-23T12:23:22", 7.65266, -20.31464], ["2019-08-23T13:22:56", 7.66137, -20.3046], ["2019-08-23T14:22:56", 7.6697, -20.29499], ["2019-08-23T15:22:56", 7.67691, -20.28546], ["2019-08-23T16:22:29", 7.68091, -20.27338], ["2019-08-23T17:22:09", 7.68486, -20.25979], ["2019-08-23T18:22:09", 7.68907, -20.24734], ["2019-08-23T19:22:30", 7.69309, -20.23822], ["2019-08-23T20:22:05", 7.6982, -20.23068], ["2019-08-23T21:21:40", 7.70731, -20.22299], ["2019-08-23T22:21:41", 7.71791, -20.21417], ["2019-08-23T23:21:08", 7.72637, -20.20562], ["2019-08-24T00:21:08", 7.73431, -20.19592], ["2019-08-24T01:21:56", 7.74342, -20.18463], ["2019-08-24T05:19:27", 7.77514, -20.13663], ["2019-08-24T06:20:26", 7.7848, -20.12228], ["2019-08-24T11:19:56", 7.83114, -20.04019], ["2019-08-24T15:17:27", 7.85504, -19.96683], ["2019-08-24T18:16:08", 7.86689, -19.90319], ["2019-08-24T19:16:08", 7.86813, -19.87976], ["2019-08-24T20:16:08", 7.86929, -19.85547], ["2019-08-24T21:16:30", 7.86813, -19.83148], ["2019-08-25T02:14:58", 7.84173, -19.71707], ["2019-08-25T09:13:06", 7.74961, -19.55511], ["2019-08-25T15:12:33", 7.65485, -19.45361], ["2019-08-25T16:11:00", 7.6406, -19.43818], ["2019-08-25T17:11:00", 7.62755, -19.42393], ["2019-08-25T18:11:00", 7.61819, -19.4126], ["2019-08-25T22:09:59", 7.57211, -19.36831], ["2019-08-25T23:08:47", 7.56143, -19.36295], ["2019-08-26T00:09:59", 7.55013, -19.35492], ["2019-08-26T05:07:57", 7.51343, -19.31378], ["2019-08-26T06:07:35", 7.50836, -19.30737], ["2019-08-26T14:06:23", 7.47932, -19.2467], ["2019-08-26T15:07:16", 7.47336, -19.23792], ["2019-08-26T21:02:55", 7.45618, -19.17783], ["2019-08-27T01:04:12", 7.45413, -19.12885], ["2019-08-27T02:01:39", 7.45295, -19.11877], ["2019-08-27T09:00:24", 7.44266, -19.03601], ["2019-08-27T09:58:48", 7.44397, -19.02105], ["2019-08-27T10:58:48", 7.44792, -19.00818], ["2019-08-27T15:58:43", 7.47188, -18.92236], ["2019-08-28T07:54:37", 7.44392, -18.58499], ["2019-08-28T08:54:41", 7.43675, -18.56238], ["2019-08-28T12:53:01", 7.40528, -18.47559], ["2019-08-28T13:52:35", 7.39926, -18.45142], ["2019-08-28T14:52:28", 7.39296, -18.42795], ["2019-08-28T18:51:57", 7.37972, -18.34525], ["2019-08-28T19:51:00", 7.37918, -18.32849], ["2019-08-28T20:51:11", 7.37971, -18.31127], ["2019-08-28T21:51:11", 7.37889, -18.29187], ["2019-08-28T22:51:11", 7.37584, -18.27118], ["2019-08-28T23:48:49", 7.37232, -18.25266], ["2019-08-29T03:48:30", 7.35607, -18.18243], ["2019-08-29T04:48:37", 7.35106, -18.16824], ["2019-08-29T09:49:33", 7.34262, -18.11584], ["2019-08-29T10:47:23", 7.34327, -18.10792], ["2019-08-29T11:47:23", 7.34499, -18.09796], ["2019-08-30T00:42:07", 7.43205, -17.99219], ["2019-08-30T01:43:11", 7.43848, -17.98376], ["2019-08-30T06:43:17", 7.48305, -17.9458], ["2019-08-30T07:40:28", 7.49666, -17.94144], ["2019-08-30T08:39:55", 7.51374, -17.9376], ["2019-08-30T09:39:55", 7.53241, -17.93245], ["2019-08-30T10:39:55", 7.54988, -17.92807], ["2019-08-30T11:40:29", 7.56816, -17.92122], ["2019-08-30T12:40:29", 7.58451, -17.91324], ["2019-08-30T13:40:29", 7.60112, -17.9032], ["2019-08-30T19:38:30", 7.71232, -17.86115], ["2019-08-30T21:37:37", 7.74678, -17.84744], ["2019-08-30T22:39:09", 7.76017, -17.83566], ["2019-08-30T23:38:17", 7.77017, -17.8208], ["2019-08-31T03:37:38", 7.80864, -17.74664], ["2019-08-31T04:33:53", 7.8162, -17.72678], ["2019-08-31T05:36:57", 7.82788, -17.7049], ["2019-08-31T06:34:17", 7.83868, -17.68788], ["2019-08-31T07:34:17", 7.84838, -17.66943], ["2019-08-31T09:32:13", 7.86595, -17.6326], ["2019-08-31T11:32:04", 7.88141, -17.60163], ["2019-08-31T12:32:04", 7.88523, -17.58197], ["2019-08-31T13:32:04", 7.88853, -17.56128], ["2019-08-31T18:31:30", 7.9173, -17.47162], ["2019-08-31T19:30:07", 7.92111, -17.45508], ["2019-08-31T20:29:30", 7.92395, -17.43976], ["2019-08-31T21:29:30", 7.92588, -17.42628], ["2019-08-31T22:29:30", 7.92644, -17.41229], ["2019-08-31T23:28:56", 7.92659, -17.3986], ["2019-09-01T00:28:56", 7.92333, -17.38736], ["2019-09-01T01:28:08", 7.91962, -17.37819], ["2019-09-01T02:28:08", 7.91443, -17.36823], ["2019-09-01T03:28:08", 7.90829, -17.35776], ["2019-09-01T05:27:07", 7.8963, -17.33737], ["2019-09-01T06:27:07", 7.89141, -17.33059], ["2019-09-01T07:27:07", 7.88896, -17.32587], ["2019-09-01T08:26:26", 7.88866, -17.32477], ["2019-09-01T09:26:26", 7.88922, -17.32468], ["2019-09-01T10:26:27", 7.89002, -17.3248], ["2019-09-01T11:25:57", 7.88915, -17.32689], ["2019-09-01T12:25:57", 7.89078, -17.32663], ["2019-09-01T13:24:54", 7.89251, -17.32056], ["2019-09-01T14:24:54", 7.89436, -17.31387], ["2019-09-01T15:24:27", 7.89361, -17.30865], ["2019-09-01T16:24:27", 7.89202, -17.30081], ["2019-09-02T00:21:56", 7.90739, -17.30667], ["2019-09-02T01:20:40", 7.91323, -17.30944], ["2019-09-02T02:20:40", 7.91778, -17.30953], ["2019-09-02T03:20:40", 7.92306, -17.30884], ["2019-09-02T04:19:26", 7.92689, -17.3088], ["2019-09-02T05:19:26", 7.92706, -17.30554], ["2019-09-02T06:19:26", 7.92899, -17.30194], ["2019-09-02T07:19:27", 7.93249, -17.30264], ["2019-09-02T08:18:28", 7.93599, -17.30327], ["2019-09-02T09:18:28", 7.94041, -17.3067], ["2019-09-02T11:17:26", 7.95536, -17.30598], ["2019-09-02T12:17:26", 7.96137, -17.30684], ["2019-09-02T13:17:26", 7.96605, -17.30804], ["2019-09-02T18:15:56", 7.97584, -17.28516], ["2019-09-02T19:15:27", 7.97138, -17.28001], ["2019-09-02T20:15:27", 7.97142, -17.27829], ["2019-09-02T21:15:09", 7.97358, -17.27629], ["2019-09-02T22:15:09", 7.97482, -17.27234], ["2019-09-02T23:14:38", 7.97498, -17.26827], ["2019-09-03T00:14:38", 7.97717, -17.26535], ["2019-09-03T01:14:27", 7.97845, -17.26126], ["2019-09-03T04:13:37", 7.98593, -17.2446], ["2019-09-03T10:11:56", 7.96339, -17.18439], ["2019-09-03T18:09:26", 7.91656, -17.13965], ["2019-09-03T19:08:54", 7.90566, -17.13611], ["2019-09-03T20:08:26", 7.89827, -17.13482], ["2019-09-03T21:08:26", 7.89188, -17.13113], ["2019-09-03T22:07:43", 7.88633, -17.12989], ["2019-09-03T23:07:43", 7.87869, -17.1304], ["2019-09-04T00:07:27", 7.87144, -17.13013], ["2019-09-04T03:06:54", 7.85612, -17.12939], ["2019-09-04T10:05:26", 7.83745, -17.14716], ["2019-09-04T11:04:56", 7.83777, -17.15323], ["2019-09-04T12:04:56", 7.83691, -17.15726], ["2019-09-04T13:04:10", 7.83719, -17.16123], ["2019-09-04T14:04:10", 7.83848, -17.16956], ["2019-09-04T15:03:59", 7.84102, -17.17853], ["2019-09-04T16:03:56", 7.84899, -17.19128], ["2019-09-04T17:03:07", 7.86057, -17.20214], ["2019-09-04T18:03:07", 7.87353, -17.20746], ["2019-09-04T19:02:55", 7.88583, -17.21323], ["2019-09-04T20:02:35", 7.90164, -17.22576], ["2019-09-04T21:02:35", 7.92091, -17.23477], ["2019-09-05T01:01:00", 8.00996, -17.24533], ["2019-09-05T03:00:28", 8.05265, -17.24191], ["2019-09-05T09:58:27", 8.1633, -17.18265], ["2019-09-05T10:58:28", 8.17824, -17.17184], ["2019-09-05T11:58:00", 8.19166, -17.16144], ["2019-09-05T12:57:55", 8.20553, -17.15186], ["2019-09-05T20:54:56", 8.30866, -17.08313], ["2019-09-05T21:55:10", 8.32011, -17.07078], ["2019-09-05T22:55:10", 8.33337, -17.05765], ["2019-09-06T00:52:59", 8.3553, -17.03189], ["2019-09-06T01:52:59", 8.36576, -17.0215], ["2019-09-06T02:52:59", 8.37598, -17.01257], ["2019-09-06T08:50:57", 8.42817, -16.93384], ["2019-09-06T11:49:08", 8.44641, -16.88997], ["2019-09-06T12:49:08", 8.45069, -16.87478], ["2019-09-06T13:49:08", 8.45349, -16.8595], ["2019-09-06T14:48:57", 8.4567, -16.84271], ["2019-09-06T20:47:27", 8.4543, -16.75275], ["2019-09-06T21:46:55", 8.45046, -16.73846], ["2019-09-06T22:46:55", 8.44621, -16.72284], ["2019-09-06T23:46:38", 8.44152, -16.70547], ["2019-09-07T00:46:27", 8.43777, -16.69162], ["2019-09-07T01:46:26", 8.43242, -16.67834], ["2019-09-07T02:45:58", 8.42444, -16.66374], ["2019-09-07T03:45:58", 8.41779, -16.6476], ["2019-09-07T04:45:58", 8.41118, -16.63232], ["2019-09-07T06:45:26", 8.39411, -16.61113], ["2019-09-07T07:45:26", 8.38402, -16.60375], ["2019-09-07T08:45:26", 8.37664, -16.59714], ["2019-09-07T17:42:56", 8.26852, -16.54056], ["2019-09-07T18:42:11", 8.25483, -16.53502], ["2019-09-07T19:42:27", 8.24366, -16.5307], ["2019-09-07T20:42:11", 8.23316, -16.52609], ["2019-09-08T01:40:19", 8.1877, -16.50998], ["2019-09-08T02:40:39", 8.18479, -16.51089], ["2019-09-08T03:39:07", 8.18214, -16.51312], ["2019-09-08T04:39:07", 8.17909, -16.51492], ["2019-09-08T05:39:07", 8.17557, -16.51492], ["2019-09-08T06:38:36", 8.17193, -16.51498], ["2019-09-08T07:38:36", 8.16924, -16.51301], ["2019-09-08T08:38:36", 8.16691, -16.51138], ["2019-09-08T09:39:25", 8.16469, -16.50753], ["2019-09-08T10:39:25", 8.16379, -16.50641], ["2019-09-08T11:39:25", 8.16362, -16.50787], ["2019-09-08T16:37:27", 8.17357, -16.50461], ["2019-09-08T17:36:27", 8.1768, -16.50229], ["2019-09-08T20:35:26", 8.18838, -16.48433], ["2019-09-08T21:35:26", 8.19211, -16.47592], ["2019-09-08T22:35:26", 8.19593, -16.47043], ["2019-09-08T23:35:38", 8.19834, -16.46567], ["2019-09-09T05:32:59", 8.23113, -16.42633], ["2019-09-09T13:30:58", 8.24829, -16.34457], ["2019-09-09T14:29:58", 8.24642, -16.33032], ["2019-09-09T23:28:04", 8.22335, -16.19736], ["2019-09-10T00:28:27", 8.21766, -16.18225], ["2019-09-10T04:25:40", 8.20273, -16.13895], ["2019-09-10T05:25:27", 8.19588, -16.1293], ["2019-09-10T08:24:09", 8.17444, -16.10765], ["2019-09-10T09:24:09", 8.1653, -16.09941], ["2019-09-10T10:24:09", 8.1577, -16.09177], ["2019-09-10T11:23:54", 8.15152, -16.08231], ["2019-09-10T13:23:25", 8.14347, -16.06494], ["2019-09-10T14:22:54", 8.14016, -16.05701], ["2019-09-10T15:22:54", 8.13738, -16.04834], ["2019-09-10T22:20:41", 8.10326, -15.99405], ["2019-09-10T23:19:57", 8.09838, -15.98902], ["2019-09-11T00:19:57", 8.09319, -15.9873], ["2019-09-11T01:19:29", 8.08906, -15.98627], ["2019-09-11T02:18:58", 8.08647, -15.98535], ["2019-09-11T03:18:28", 8.08548, -15.98448], ["2019-09-11T04:18:28", 8.08552, -15.98328], ["2019-09-11T05:17:28", 8.08555, -15.98322], ["2019-09-11T06:17:28", 8.08723, -15.98296], ["2019-09-11T07:17:28", 8.0892, -15.97815], ["2019-09-11T13:15:36", 8.1023, -15.95471], ["2019-09-11T14:14:26", 8.10835, -15.94905], ["2019-09-11T15:14:26", 8.11487, -15.94296], ["2019-09-11T16:14:26", 8.12101, -15.93524], ["2019-09-11T19:13:26", 8.14209, -15.90729], ["2019-09-11T20:12:56", 8.14607, -15.89539], ["2019-09-11T21:12:56", 8.14929, -15.88294], ["2019-09-11T22:12:56", 8.15044, -15.87195], ["2019-09-12T01:11:57", 8.14872, -15.83746], ["2019-09-12T02:11:27", 8.14845, -15.82625], ["2019-09-12T03:11:27", 8.14879, -15.81415], ["2019-09-12T04:10:54", 8.15098, -15.80142], ["2019-09-12T10:09:27", 8.17188, -15.7294], ["2019-09-12T12:08:38", 8.15728, -15.70389], ["2019-09-12T13:07:56", 8.14889, -15.69315], ["2019-09-12T13:08:26", 8.14894, -15.69321], ["2019-09-12T14:07:56", 8.14134, -15.68285], ["2019-09-12T15:07:56", 8.13683, -15.67349], ["2019-09-12T16:06:58", 8.13406, -15.6634], ["2019-09-12T17:06:58", 8.13336, -15.64992], ["2019-09-12T18:06:58", 8.13341, -15.63705], ["2019-09-12T19:06:36", 8.13508, -15.62463], ["2019-09-12T20:06:27", 8.13476, -15.61212], ["2019-09-12T21:05:57", 8.13028, -15.60045], ["2019-09-12T22:05:57", 8.1213, -15.58646], ["2019-09-12T23:04:58", 8.10853, -15.57333], ["2019-09-13T00:05:27", 8.09373, -15.56351], ["2019-09-13T01:04:58", 8.07746, -15.55994], ["2019-09-13T09:02:38", 8.01884, -15.51498], ["2019-09-13T10:02:27", 8.01535, -15.50391], ["2019-09-13T11:01:56", 8.00769, -15.49787], ["2019-09-13T12:01:56", 7.99271, -15.49933], ["2019-09-13T16:00:57", 7.9586, -15.50378], ["2019-09-13T17:00:24", 7.9534, -15.50406], ["2019-09-13T17:59:55", 7.95067, -15.50263], ["2019-09-13T18:59:55", 7.95016, -15.4986], ["2019-09-13T19:59:59", 7.95233, -15.49374], ["2019-09-13T20:59:56", 7.95928, -15.48547], ["2019-09-13T21:59:11", 7.96712, -15.47419], ["2019-09-13T22:59:11", 7.96884, -15.4675], ["2019-09-13T23:59:11", 7.96253, -15.46613], ["2019-09-14T06:57:56", 7.92226, -15.48755], ["2019-09-14T08:56:57", 7.93492, -15.48129], ["2019-09-14T10:56:25", 7.94677, -15.4689], ["2019-09-14T11:56:26", 7.95248, -15.46088], ["2019-09-14T12:55:08", 7.95752, -15.457], ["2019-09-14T13:55:08", 7.95876, -15.45734], ["2019-09-14T14:55:08", 7.95855, -15.4588], ["2019-09-14T21:52:59", 8.00927, -15.4097], ["2019-09-15T02:51:28", 7.99783, -15.38184], ["2019-09-15T03:51:26", 7.99501, -15.3765], ["2019-09-15T08:49:56", 8.01451, -15.31607], ["2019-09-15T10:48:25", 8.01765, -15.29846], ["2019-09-15T11:48:25", 8.01043, -15.29743], ["2019-09-15T12:48:25", 8.00207, -15.29623], ["2019-09-15T13:48:03", 7.99439, -15.29056], ["2019-09-15T14:48:03", 7.98645, -15.28275], ["2019-09-15T15:48:01", 7.97857, -15.27155], ["2019-09-15T16:47:10", 7.97485, -15.25481], ["2019-09-15T17:47:10", 7.97228, -15.23618], ["2019-09-15T18:47:26", 7.97127, -15.21887], ["2019-09-15T20:47:37", 7.98228, -15.19348], ["2019-09-15T21:45:23", 7.98509, -15.18101], ["2019-09-15T22:45:23", 7.97758, -15.16702], ["2019-09-15T23:45:23", 7.96561, -15.15372], ["2019-09-16T00:45:30", 7.95192, -15.13876], ["2019-09-16T05:44:29", 7.87134, -15.07422], ["2019-09-16T11:43:58", 7.82494, -15.02539], ["2019-09-16T20:42:02", 7.70079, -14.92456], ["2019-09-16T21:42:00", 7.68869, -14.9183], ["2019-09-16T23:41:00", 7.66886, -14.90021], ["2019-09-17T00:39:31", 7.66379, -14.89032], ["2019-09-17T01:39:31", 7.6574, -14.88148], ["2019-09-17T02:39:31", 7.64886, -14.87247], ["2019-09-17T05:40:42", 7.60847, -14.84299], ["2019-09-17T11:37:10", 7.52588, -14.83389], ["2019-09-17T17:36:06", 7.48036, -14.83472], ["2019-09-17T18:35:29", 7.47974, -14.83447], ["2019-09-17T19:35:29", 7.4788, -14.83121], ["2019-09-17T20:34:18", 7.47383, -14.82571], ["2019-09-17T21:34:18", 7.4646, -14.82142], ["2019-09-17T22:34:18", 7.45838, -14.8161], ["2019-09-17T23:33:32", 7.45194, -14.81248], ["2019-09-18T00:33:32", 7.4452, -14.81033], ["2019-09-18T01:33:38", 7.43841, -14.80819], ["2019-09-18T02:33:38", 7.4309, -14.80579], ["2019-09-18T08:43:27", 7.38145, -14.80374], ["2019-09-18T09:42:57", 7.37963, -14.80533], ["2019-09-18T10:42:57", 7.37714, -14.80868], ["2019-09-18T11:42:57", 7.37577, -14.814], ["2019-09-18T17:42:28", 7.36605, -14.84177], ["2019-09-18T20:40:39", 7.37324, -14.83773], ["2019-09-18T21:40:39", 7.37521, -14.83661], ["2019-09-18T22:40:39", 7.37731, -14.83575], ["2019-09-18T23:40:57", 7.37724, -14.83554], ["2019-09-19T01:39:00", 7.37415, -14.83416], ["2019-09-19T02:38:11", 7.37203, -14.83176], ["2019-09-19T03:39:00", 7.36981, -14.82867], ["2019-09-19T04:38:57", 7.36779, -14.82697], ["2019-09-19T13:36:28", 7.38851, -14.78171], ["2019-09-19T17:34:15", 7.39498, -14.74844], ["2019-09-19T18:34:53", 7.39765, -14.73901], ["2019-09-19T19:35:27", 7.40045, -14.72961], ["2019-09-19T20:34:57", 7.40163, -14.72244], ["2019-09-19T21:34:27", 7.40305, -14.71584], ["2019-09-19T22:34:27", 7.40236, -14.707], ["2019-09-20T05:32:54", 7.38139, -14.65674], ["2019-09-20T10:31:00", 7.37332, -14.63348], ["2019-09-20T17:27:41", 7.35798, -14.62308], ["2019-09-20T18:26:58", 7.35747, -14.61981], ["2019-09-20T19:26:58", 7.3573, -14.61715], ["2019-09-20T20:26:58", 7.3555, -14.612], ["2019-09-21T01:25:53", 7.34335, -14.57846], ["2019-09-21T03:24:28", 7.33167, -14.56042], ["2019-09-21T04:24:58", 7.32463, -14.55374], ["2019-09-21T05:24:28", 7.31665, -14.54721], ["2019-09-21T06:23:57", 7.3054, -14.53982], ["2019-09-21T07:23:57", 7.29514, -14.53055], ["2019-09-21T08:23:28", 7.28494, -14.5231], ["2019-09-21T13:22:26", 7.23883, -14.47849], ["2019-09-21T14:21:59", 7.22775, -14.47318], ["2019-09-21T15:20:59", 7.21301, -14.46428], ["2019-09-21T16:20:59", 7.1943, -14.45999], ["2019-09-21T17:20:56", 7.18105, -14.45883], ["2019-09-21T22:18:56", 7.16244, -14.45685], ["2019-09-21T23:19:01", 7.16167, -14.4519], ["2019-09-22T03:17:27", 7.1525, -14.4248], ["2019-09-22T04:17:09", 7.1472, -14.418], ["2019-09-22T05:16:26", 7.14371, -14.41497], ["2019-09-22T06:16:26", 7.1444, -14.41557], ["2019-09-22T07:16:26", 7.14946, -14.41849], ["2019-09-22T08:15:57", 7.15739, -14.4178], ["2019-09-22T09:15:57", 7.16314, -14.41626], ["2019-09-22T14:14:26", 7.18562, -14.41132], ["2019-09-22T15:14:24", 7.18706, -14.40848], ["2019-09-22T16:14:24", 7.18702, -14.40625], ["2019-09-22T17:13:45", 7.18908, -14.40253], ["2019-09-22T18:13:45", 7.19307, -14.39764], ["2019-09-22T20:12:25", 7.20393, -14.38268], ["2019-09-22T21:12:25", 7.20921, -14.37444], ["2019-09-22T22:12:25", 7.20998, -14.36371], ["2019-09-22T23:12:30", 7.21236, -14.35403], ["2019-09-23T00:11:58", 7.2158, -14.34293], ["2019-09-23T01:11:37", 7.21898, -14.32874], ["2019-09-23T02:11:38", 7.21956, -14.31479], ["2019-09-23T06:10:58", 7.21908, -14.2738]], "drifter_5": [["2019-07-23T21:32:00", 6.91487, -34.47964], ["2019-07-23T21:46:24", 6.91421, -34.47717], ["2019-07-24T03:43:59", 6.86178, -34.39658], ["2019-07-24T04:42:25", 6.84651, -34.38155], ["2019-07-24T05:42:25", 6.82853, -34.36859], ["2019-07-24T06:41:36", 6.81202, -34.35306], ["2019-07-24T07:41:36", 6.79438, -34.3389], ["2019-07-24T08:40:40", 6.78022, -34.32289], ["2019-07-24T09:40:40", 6.76859, -34.3077], ["2019-07-24T10:40:40", 6.75233, -34.29337], ["2019-07-24T11:39:57", 6.7371, -34.27917], ["2019-07-24T12:39:55", 6.71989, -34.26575], ["2019-07-24T14:39:00", 6.70559, -34.24625], ["2019-07-24T18:36:55", 6.7019, -34.22429], ["2019-07-24T19:36:55", 6.69941, -34.21545], ["2019-07-24T20:36:55", 6.69585, -34.2067], ["2019-07-24T22:36:27", 6.69842, -34.18704], ["2019-07-24T23:36:06", 6.70477, -34.18536], ["2019-07-25T00:34:52", 6.71653, -34.18221], ["2019-07-25T01:34:52", 6.73039, -34.17749], ["2019-07-25T02:34:57", 6.74579, -34.17288], ["2019-07-25T03:34:09", 6.76491, -34.17111], ["2019-07-25T08:34:26", 6.87285, -34.1409], ["2019-07-25T09:31:26", 6.89346, -34.13721], ["2019-07-25T10:31:26", 6.91559, -34.13568], ["2019-07-25T11:31:08", 6.93905, -34.13474], ["2019-07-25T12:30:57", 6.96401, -34.13065], ["2019-07-25T14:28:55", 7.01366, -34.12687], ["2019-07-25T15:28:55", 7.04117, -34.12618], ["2019-07-25T16:28:55", 7.06971, -34.12524], ["2019-07-25T17:28:08", 7.09787, -34.12549], ["2019-07-25T18:27:54", 7.12399, -34.12524], ["2019-07-25T22:26:26", 7.23273, -34.11691], ["2019-07-25T23:26:26", 7.25956, -34.112], ["2019-07-26T00:25:59", 7.28609, -34.10513], ["2019-07-26T01:25:25", 7.31275, -34.09479], ["2019-07-26T02:24:57", 7.34164, -34.08411], ["2019-07-26T03:23:57", 7.36954, -34.07186], ["2019-07-26T04:23:57", 7.39555, -34.0577], ["2019-07-26T05:23:57", 7.41855, -34.0462], ["2019-07-26T06:23:27", 7.43848, -34.0372], ["2019-07-26T07:22:57", 7.46035, -34.02866], ["2019-07-26T08:22:28", 7.48414, -34.0173], ["2019-07-26T09:21:56", 7.50722, -34.00284], ["2019-07-26T13:20:27", 7.57269, -33.94135], ["2019-07-26T16:18:57", 7.62167, -33.89084], ["2019-07-26T17:17:55", 7.64122, -33.86964], ["2019-07-26T18:17:55", 7.6616, -33.84715], ["2019-07-26T19:17:55", 7.68083, -33.82166], ["2019-07-26T20:16:56", 7.6973, -33.79492], ["2019-07-26T21:15:56", 7.71101, -33.76913], ["2019-07-26T22:15:56", 7.72161, -33.74106], ["2019-07-26T23:15:39", 7.72724, -33.71234], ["2019-07-27T00:15:27", 7.73195, -33.68436], ["2019-07-27T02:14:00", 7.74165, -33.62719], ["2019-07-27T03:14:27", 7.74321, -33.60065], ["2019-07-27T04:14:00", 7.74117, -33.57526], ["2019-07-27T05:13:56", 7.73763, -33.54962], ["2019-07-27T06:13:09", 7.73118, -33.52429], ["2019-07-27T07:12:35", 7.72165, -33.50061], ["2019-07-27T08:12:26", 7.70785, -33.47794], ["2019-07-27T09:11:27", 7.69062, -33.45872], ["2019-07-27T10:11:27", 7.67341, -33.44104], ["2019-07-27T11:11:06", 7.65747, -33.42075], ["2019-07-27T14:16:56", 7.59783, -33.35669], ["2019-07-27T15:16:09", 7.57766, -33.33557], ["2019-07-27T16:16:09", 7.55118, -33.3172], ["2019-07-27T17:15:25", 7.52202, -33.29846], ["2019-07-27T18:15:24", 7.49391, -33.28088], ["2019-07-27T19:14:56", 7.46544, -33.26816], ["2019-07-27T20:14:27", 7.43464, -33.26077], ["2019-07-27T21:12:57", 7.40254, -33.25658], ["2019-07-27T22:12:57", 7.37233, -33.25315], ["2019-07-27T23:12:57", 7.34504, -33.25229], ["2019-07-28T00:11:56", 7.31999, -33.25173], ["2019-07-28T01:11:56", 7.29733, -33.25327], ["2019-07-28T02:11:27", 7.27843, -33.25607], ["2019-07-28T03:11:07", 7.26601, -33.25436], ["2019-07-28T07:09:37", 7.23467, -33.24902], ["2019-07-28T08:08:57", 7.22917, -33.25171], ["2019-07-28T09:08:57", 7.22325, -33.25351], ["2019-07-28T10:08:26", 7.21638, -33.25854], ["2019-07-28T11:07:58", 7.20909, -33.2583], ["2019-07-28T12:07:27", 7.20298, -33.26007], ["2019-07-28T13:07:27", 7.20302, -33.2623], ["2019-07-28T14:07:06", 7.20716, -33.26352], ["2019-07-28T15:06:10", 7.21273, -33.26335], ["2019-07-28T16:06:10", 7.21706, -33.26172], ["2019-07-28T17:05:56", 7.22827, -33.25848], ["2019-07-28T18:05:25", 7.24073, -33.25406], ["2019-07-28T22:04:25", 7.29952, -33.22928], ["2019-07-28T23:03:58", 7.31477, -33.22275], ["2019-07-29T00:03:38", 7.33053, -33.2153], ["2019-07-29T01:03:09", 7.34697, -33.20831], ["2019-07-29T05:01:38", 7.41289, -33.14011], ["2019-07-29T06:01:06", 7.43206, -33.1199], ["2019-07-29T07:00:56", 7.45158, -33.10071], ["2019-07-29T08:00:38", 7.4701, -33.08249], ["2019-07-29T09:00:25", 7.48455, -33.06219], ["2019-07-29T09:59:58", 7.49799, -33.04181], ["2019-07-29T10:58:55", 7.51562, -33.02061], ["2019-07-29T11:59:08", 7.53458, -32.99963], ["2019-07-29T12:58:55", 7.55433, -32.97623], ["2019-07-29T13:58:39", 7.57257, -32.95178], ["2019-07-29T18:56:24", 7.65876, -32.8158], ["2019-07-29T19:55:56", 7.6705, -32.78308], ["2019-07-29T20:55:28", 7.68438, -32.75001], ["2019-07-29T21:55:28", 7.69584, -32.71619], ["2019-07-29T22:54:26", 7.70556, -32.68478], ["2019-07-30T00:53:27", 7.72277, -32.62207], ["2019-07-30T01:52:58", 7.72696, -32.58832], ["2019-07-30T02:52:58", 7.7282, -32.55673], ["2019-07-30T03:52:56", 7.72876, -32.52469], ["2019-07-30T04:51:37", 7.7269, -32.49471], ["2019-07-30T05:51:37", 7.72544, -32.46252], ["2019-07-30T06:51:37", 7.7193, -32.4263], ["2019-07-30T07:50:58", 7.7106, -32.38941], ["2019-07-30T08:50:58", 7.70124, -32.35182], ["2019-07-30T09:50:58", 7.68849, -32.31689], ["2019-07-30T10:50:26", 7.67811, -32.28476], ["2019-07-30T11:49:56", 7.66985, -32.25372], ["2019-07-30T12:49:38", 7.6615, -32.22433], ["2019-07-30T13:47:57", 7.64931, -32.19522], ["2019-07-30T14:48:41", 7.63599, -32.16574], ["2019-07-30T15:47:57", 7.62287, -32.13531], ["2019-07-30T16:47:26", 7.60742, -32.10415], ["2019-07-30T17:47:26", 7.59309, -32.07617], ["2019-07-30T18:47:07", 7.5762, -32.04868], ["2019-07-30T19:46:40", 7.55761, -32.02151], ["2019-07-31T01:44:59", 7.42115, -31.87845], ["2019-07-31T05:42:34", 7.34964, -31.8269], ["2019-07-31T06:43:28", 7.33771, -31.81433], ["2019-07-31T07:44:29", 7.32488, -31.8017], ["2019-07-31T08:41:58", 7.31248, -31.78972], ["2019-07-31T09:41:58", 7.30033, -31.77788], ["2019-07-31T10:41:58", 7.29037, -31.76672], ["2019-07-31T15:40:55", 7.24848, -31.73648], ["2019-07-31T16:38:51", 7.24405, -31.73627], ["2019-07-31T19:38:09", 7.23441, -31.72075], ["2019-07-31T20:38:58", 7.23223, -31.71237], ["2019-07-31T21:38:09", 7.229, -31.70187], ["2019-07-31T22:37:58", 7.22483, -31.69269], ["2019-07-31T23:35:39", 7.22155, -31.68566], ["2019-08-01T00:35:39", 7.21992, -31.68137], ["2019-08-01T04:34:55", 7.2186, -31.67239], ["2019-08-01T05:36:29", 7.22136, -31.67043], ["2019-08-01T06:36:29", 7.22621, -31.66837], ["2019-08-01T07:33:21", 7.23132, -31.66544], ["2019-08-01T12:31:51", 7.25707, -31.6362], ["2019-08-01T13:31:58", 7.26535, -31.63113], ["2019-08-01T20:28:55", 7.31323, -31.59238], ["2019-08-01T21:28:26", 7.32434, -31.58594], ["2019-08-01T22:28:26", 7.33703, -31.57858], ["2019-08-01T23:27:57", 7.35138, -31.57019], ["2019-08-02T00:26:39", 7.36458, -31.56036], ["2019-08-02T01:26:39", 7.37578, -31.54955], ["2019-08-02T02:26:39", 7.38475, -31.53891], ["2019-08-02T03:25:57", 7.3892, -31.52856], ["2019-08-02T04:25:57", 7.39308, -31.51932], ["2019-08-02T05:25:25", 7.39462, -31.51055], ["2019-08-02T06:25:25", 7.39715, -31.50171], ["2019-08-02T07:23:54", 7.40236, -31.49141], ["2019-08-02T08:23:54", 7.40704, -31.48145], ["2019-08-02T09:23:54", 7.41069, -31.47003], ["2019-08-02T10:23:54", 7.4126, -31.45801], ["2019-08-02T11:23:08", 7.41283, -31.44565], ["2019-08-02T12:22:57", 7.41074, -31.43451], ["2019-08-02T13:22:38", 7.40481, -31.42496], ["2019-08-02T14:22:26", 7.39642, -31.41452], ["2019-08-02T15:21:27", 7.38947, -31.40349], ["2019-08-02T16:21:27", 7.38449, -31.39456], ["2019-08-02T17:21:27", 7.37878, -31.38812], ["2019-08-02T18:20:56", 7.37109, -31.3812], ["2019-08-02T19:20:35", 7.3628, -31.37408], ["2019-08-02T20:19:55", 7.35478, -31.36649], ["2019-08-02T21:19:55", 7.34598, -31.35593], ["2019-08-03T01:18:26", 7.30829, -31.31613], ["2019-08-03T02:18:11", 7.29271, -31.30606], ["2019-08-03T03:17:55", 7.27503, -31.29501], ["2019-08-03T04:16:58", 7.25792, -31.28324], ["2019-08-03T05:16:58", 7.24097, -31.27079], ["2019-08-03T06:16:58", 7.22252, -31.25998], ["2019-08-03T07:16:06", 7.20746, -31.24397], ["2019-08-03T08:16:06", 7.19677, -31.22989], ["2019-08-03T09:15:56", 7.18802, -31.21588], ["2019-08-03T10:15:31", 7.17878, -31.20267], ["2019-08-03T11:14:39", 7.16701, -31.18986], ["2019-08-03T12:14:39", 7.15564, -31.17432], ["2019-08-03T13:14:07", 7.14314, -31.1593], ["2019-08-03T14:13:55", 7.13037, -31.14624], ["2019-08-03T15:12:56", 7.11668, -31.13586], ["2019-08-03T16:12:54", 7.10063, -31.12531], ["2019-08-03T17:12:29", 7.08508, -31.11273], ["2019-08-03T18:11:54", 7.06926, -31.09982], ["2019-08-03T19:10:25", 7.05575, -31.08295], ["2019-08-03T20:10:25", 7.04296, -31.06295], ["2019-08-03T21:10:25", 7.02979, -31.04407], ["2019-08-03T22:10:05", 7.01902, -31.02636], ["2019-08-03T23:10:05", 7.00975, -31.00937], ["2019-08-04T00:09:38", 7.00302, -30.99402], ["2019-08-04T01:08:56", 6.99929, -30.97852], ["2019-08-04T02:08:08", 7.00089, -30.96274], ["2019-08-04T03:08:08", 7.00046, -30.95047], ["2019-08-04T04:07:56", 6.99953, -30.94006], ["2019-08-04T05:07:27", 7.00104, -30.92728], ["2019-08-04T06:07:28", 7.00536, -30.91418], ["2019-08-04T07:06:25", 7.01199, -30.90226], ["2019-08-04T08:06:25", 7.01796, -30.88861], ["2019-08-04T10:04:56", 7.03241, -30.86312], ["2019-08-04T11:04:56", 7.04121, -30.85145], ["2019-08-04T12:04:56", 7.05099, -30.84055], ["2019-08-04T13:04:27", 7.06128, -30.8266], ["2019-08-04T14:04:27", 7.07201, -30.81561], ["2019-08-04T15:03:55", 7.08247, -30.80536], ["2019-08-04T16:03:26", 7.09352, -30.79471], ["2019-08-04T20:03:25", 7.12316, -30.75076], ["2019-08-04T21:01:01", 7.12967, -30.73495], ["2019-08-05T01:59:06", 7.14668, -30.64423], ["2019-08-05T02:58:54", 7.15087, -30.62524], ["2019-08-05T03:58:26", 7.15425, -30.60687], ["2019-08-05T04:57:56", 7.1576, -30.58783], ["2019-08-05T05:57:55", 7.15944, -30.56863], ["2019-08-05T06:57:27", 7.15885, -30.55124], ["2019-08-05T07:56:58", 7.15745, -30.53568], ["2019-08-05T08:55:56", 7.1551, -30.51807], ["2019-08-05T09:55:56", 7.15192, -30.49953], ["2019-08-05T10:55:56", 7.1475, -30.4809], ["2019-08-05T13:54:38", 7.13184, -30.42538], ["2019-08-05T14:53:56", 7.12708, -30.40625], ["2019-08-05T15:53:56", 7.12493, -30.38874], ["2019-08-05T16:53:56", 7.12364, -30.36874], ["2019-08-05T17:53:27", 7.11425, -30.34814], ["2019-08-05T18:52:38", 7.10612, -30.32903], ["2019-08-05T19:52:38", 7.09784, -30.30817], ["2019-08-05T20:51:56", 7.09176, -30.28916], ["2019-08-05T21:51:56", 7.08313, -30.27448], ["2019-08-06T01:50:57", 7.03257, -30.20166], ["2019-08-06T07:59:58", 6.96311, -30.11789], ["2019-08-06T08:58:57", 6.94437, -30.10704], ["2019-08-06T09:58:57", 6.92639, -30.09708], ["2019-08-06T13:57:26", 6.87877, -30.05835]], "drifter_6": [["2019-07-23T21:36:00", 6.90495, -34.47952], ["2019-07-23T22:41:57", 6.91199, -34.46561], ["2019-07-23T23:41:27", 6.90579, -34.45123], ["2019-07-24T00:41:33", 6.90007, -34.43683], ["2019-07-24T02:40:26", 6.87577, -34.41153], ["2019-07-24T03:39:24", 6.86264, -34.39768], ["2019-07-24T04:39:24", 6.84741, -34.38257], ["2019-07-24T05:38:57", 6.82958, -34.36942], ["2019-07-24T06:38:36", 6.81297, -34.35391], ["2019-07-24T07:38:33", 6.79541, -34.33951], ["2019-07-24T11:36:29", 6.73792, -34.27982], ["2019-07-24T12:35:58", 6.72081, -34.26648], ["2019-07-24T13:35:58", 6.71033, -34.25403], ["2019-07-24T14:35:26", 6.70689, -34.24658], ["2019-07-24T15:34:56", 6.7091, -34.24057], ["2019-07-24T16:34:56", 6.70884, -34.23788], ["2019-07-24T17:33:28", 6.70439, -34.23465], ["2019-07-24T18:33:28", 6.70362, -34.22487], ["2019-07-24T19:33:28", 6.70126, -34.21594], ["2019-07-24T20:33:09", 6.69806, -34.2067], ["2019-07-24T21:32:56", 6.69783, -34.19556], ["2019-07-24T22:32:16", 6.70071, -34.18643], ["2019-07-25T02:30:40", 6.74891, -34.17194], ["2019-07-25T03:29:58", 6.76879, -34.16991], ["2019-07-25T04:29:58", 6.78892, -34.1627], ["2019-07-25T05:29:58", 6.80952, -34.15558], ["2019-07-25T11:30:58", 6.94423, -34.13303], ["2019-07-25T12:26:52", 6.96754, -34.12888], ["2019-07-25T13:28:28", 6.99135, -34.1265], ["2019-07-25T14:26:57", 7.01595, -34.12527], ["2019-07-25T15:26:57", 7.04359, -34.12398], ["2019-07-25T16:26:57", 7.07161, -34.12244], ["2019-07-25T17:27:26", 7.09929, -34.1232], ["2019-07-25T20:24:36", 7.17251, -34.11984], ["2019-07-26T02:24:25", 7.3337, -34.0787], ["2019-07-26T09:22:00", 7.49476, -33.99692], ["2019-07-26T13:19:33", 7.5615, -33.93457], ["2019-07-26T14:19:29", 7.5775, -33.9184], ["2019-07-26T17:16:59", 7.63221, -33.86624], ["2019-07-26T18:16:59", 7.65178, -33.84495], ["2019-07-26T19:16:59", 7.67053, -33.81989], ["2019-07-26T20:16:59", 7.68744, -33.79211], ["2019-07-26T21:15:58", 7.70183, -33.76544], ["2019-07-26T22:15:58", 7.71453, -33.73755], ["2019-07-26T23:16:25", 7.72191, -33.70712], ["2019-07-27T00:15:55", 7.72746, -33.67892], ["2019-07-27T01:15:38", 7.73301, -33.64944], ["2019-07-27T02:14:59", 7.73782, -33.62085], ["2019-07-27T03:14:59", 7.73928, -33.59381], ["2019-07-27T04:14:58", 7.73632, -33.56717], ["2019-07-27T05:14:25", 7.73181, -33.5408], ["2019-07-27T06:13:57", 7.72594, -33.51538], ["2019-07-27T10:43:00", 7.65876, -33.42102], ["2019-07-27T12:41:25", 7.61983, -33.37809], ["2019-07-27T13:41:25", 7.5997, -33.35629], ["2019-07-27T14:41:25", 7.57987, -33.3356], ["2019-07-27T15:41:07", 7.55676, -33.31519], ["2019-07-27T16:40:39", 7.52788, -33.29779], ["2019-07-27T17:40:27", 7.49869, -33.28003], ["2019-07-27T18:39:59", 7.46986, -33.26483], ["2019-07-27T19:38:58", 7.44036, -33.25487], ["2019-07-27T20:38:58", 7.40899, -33.24929], ["2019-07-27T21:38:58", 7.37698, -33.24594], ["2019-07-27T22:38:29", 7.3465, -33.24338], ["2019-07-27T23:38:00", 7.31902, -33.24414], ["2019-07-28T04:35:57", 7.23827, -33.24008], ["2019-07-28T05:35:40", 7.23178, -33.23859], ["2019-07-28T06:35:28", 7.22454, -33.23828], ["2019-07-28T07:34:56", 7.2184, -33.23953], ["2019-07-28T08:34:56", 7.21356, -33.24048], ["2019-07-28T09:34:30", 7.21143, -33.24097], ["2019-07-28T10:34:28", 7.20285, -33.24393], ["2019-07-28T11:33:26", 7.19508, -33.24436], ["2019-07-28T12:33:26", 7.19053, -33.24496], ["2019-07-28T13:32:57", 7.19127, -33.24686], ["2019-07-28T14:32:29", 7.19602, -33.24701], ["2019-07-28T16:31:26", 7.21109, -33.23889], ["2019-07-28T17:31:26", 7.22336, -33.23383], ["2019-07-28T18:31:26", 7.23842, -33.22842], ["2019-07-28T19:30:56", 7.25502, -33.21986], ["2019-07-28T20:30:56", 7.26922, -33.21497], ["2019-07-28T21:30:10", 7.28261, -33.21093], ["2019-07-28T22:30:10", 7.29523, -33.20767], ["2019-07-28T23:29:27", 7.30989, -33.20378], ["2019-07-29T00:29:27", 7.32482, -33.1976], ["2019-07-29T01:29:16", 7.33979, -33.18942], ["2019-07-29T02:28:27", 7.35414, -33.17323], ["2019-07-29T03:28:27", 7.36676, -33.15546], ["2019-07-29T04:28:10", 7.38312, -33.13589], ["2019-07-29T05:27:57", 7.4023, -33.11487], ["2019-07-29T06:28:10", 7.42221, -33.09402], ["2019-07-29T07:26:56", 7.44348, -33.07401], ["2019-07-29T08:26:56", 7.46253, -33.05315], ["2019-07-29T09:26:56", 7.47596, -33.03101], ["2019-07-29T10:26:28", 7.49255, -33.01062], ["2019-07-29T11:25:25", 7.51208, -32.98961], ["2019-07-29T12:25:25", 7.53251, -32.96609], ["2019-07-29T16:24:08", 7.61246, -32.86252], ["2019-07-29T17:23:57", 7.63064, -32.83527], ["2019-07-29T18:23:27", 7.64681, -32.80661], ["2019-07-29T19:23:27", 7.66213, -32.77478], ["2019-07-29T20:22:26", 7.67534, -32.74432], ["2019-07-29T21:21:56", 7.68974, -32.70956], ["2019-07-29T22:21:00", 7.70236, -32.6764], ["2019-07-29T23:21:00", 7.7139, -32.64473], ["2019-07-30T00:21:00", 7.72343, -32.61237], ["2019-07-30T01:20:33", 7.72917, -32.57799], ["2019-07-30T02:20:33", 7.73247, -32.54349], ["2019-07-30T03:20:09", 7.73438, -32.50916], ["2019-07-30T07:18:58", 7.72605, -32.37775], ["2019-07-30T08:17:56", 7.71704, -32.33996], ["2019-07-30T09:17:56", 7.70768, -32.30297], ["2019-07-30T10:17:56", 7.69729, -32.2695], ["2019-07-30T11:17:25", 7.68634, -32.23956], ["2019-07-30T13:15:55", 7.66919, -32.1862], ["2019-07-30T14:15:55", 7.65644, -32.15976], ["2019-07-30T15:15:55", 7.64322, -32.13187], ["2019-07-30T16:15:37", 7.62953, -32.10175], ["2019-07-30T17:14:55", 7.61539, -32.0728], ["2019-07-30T18:14:55", 7.60119, -32.04276], ["2019-07-30T19:14:38", 7.5845, -32.01419], ["2019-07-30T20:13:35", 7.56387, -31.98542], ["2019-07-30T21:13:35", 7.54331, -31.95735], ["2019-07-30T22:13:35", 7.52009, -31.93134], ["2019-07-30T23:12:57", 7.49643, -31.90817], ["2019-07-31T00:12:28", 7.47314, -31.88666], ["2019-07-31T06:10:57", 7.36648, -31.80307], ["2019-07-31T07:09:42", 7.35722, -31.79086], ["2019-07-31T08:09:29", 7.3447, -31.77826], ["2019-07-31T13:07:28", 7.28598, -31.7244], ["2019-07-31T16:05:58", 7.26522, -31.71706], ["2019-07-31T17:06:58", 7.2623, -31.71344], ["2019-07-31T18:05:58", 7.25956, -31.70779], ["2019-07-31T19:05:28", 7.25474, -31.70358], ["2019-07-31T20:04:10", 7.24914, -31.6954], ["2019-07-31T21:04:10", 7.24429, -31.68647], ["2019-07-31T22:04:10", 7.23991, -31.67694], ["2019-08-01T01:04:55", 7.23101, -31.65879], ["2019-08-01T02:04:55", 7.22869, -31.6581], ["2019-08-01T03:04:55", 7.22753, -31.6575], ["2019-08-01T04:01:22", 7.22883, -31.65469], ["2019-08-01T05:02:57", 7.22924, -31.65323], ["2019-08-01T12:00:00", 7.26232, -31.62442], ["2019-08-01T12:58:37", 7.27112, -31.62186], ["2019-08-01T13:58:37", 7.27987, -31.61911], ["2019-08-01T16:56:20", 7.30403, -31.60662], ["2019-08-01T17:56:20", 7.31008, -31.60078], ["2019-08-01T18:56:20", 7.31849, -31.5946], ["2019-08-01T19:55:56", 7.32746, -31.58826], ["2019-08-01T20:57:38", 7.33885, -31.58197], ["2019-08-01T21:57:38", 7.35263, -31.57716], ["2019-08-01T22:57:38", 7.36821, -31.57004], ["2019-08-01T23:53:27", 7.38239, -31.56226], ["2019-08-02T00:53:28", 7.39545, -31.55164], ["2019-08-02T01:53:10", 7.40522, -31.54187], ["2019-08-02T02:52:56", 7.41133, -31.5325], ["2019-08-02T03:52:29", 7.41467, -31.52405], ["2019-08-02T08:50:28", 7.42645, -31.48068], ["2019-08-02T09:50:30", 7.42712, -31.47174], ["2019-08-02T10:50:05", 7.42715, -31.46176], ["2019-08-02T12:48:58", 7.4207, -31.4447], ["2019-08-02T13:49:45", 7.41232, -31.43844], ["2019-08-02T14:49:45", 7.40219, -31.43192], ["2019-08-02T15:48:29", 7.39351, -31.42496], ["2019-08-02T21:45:56", 7.34279, -31.38263], ["2019-08-02T22:45:29", 7.33405, -31.37411], ["2019-08-02T23:44:57", 7.32471, -31.3653]], "drifter_7": [["2019-07-25T11:14:00", 6.73472, -37.09499], ["2019-07-25T14:55:32", 6.79446, -37.05554], ["2019-07-25T15:55:58", 6.81744, -37.0412], ["2019-07-26T03:54:11", 7.01507, -36.81375], ["2019-07-26T04:50:19", 7.02369, -36.79694], ["2019-07-26T11:50:28", 7.07576, -36.67075], ["2019-07-26T12:47:57", 7.07802, -36.65671], ["2019-07-26T13:47:05", 7.08175, -36.64059], ["2019-07-26T14:47:05", 7.08587, -36.62772], ["2019-07-26T15:46:05", 7.09132, -36.6134], ["2019-07-26T16:46:05", 7.09694, -36.60138], ["2019-07-26T17:48:28", 7.10118, -36.58948], ["2019-07-26T18:46:30", 7.10275, -36.57935], ["2019-07-26T19:46:30", 7.10322, -36.56802], ["2019-07-27T07:40:29", 7.11624, -36.4516], ["2019-07-27T08:39:57", 7.11318, -36.44208], ["2019-07-27T09:39:57", 7.11005, -36.43521], ["2019-07-27T10:40:30", 7.10428, -36.42892], ["2019-07-27T11:40:57", 7.09936, -36.42273], ["2019-07-27T13:40:27", 7.0929, -36.41251], ["2019-07-27T14:38:00", 7.09015, -36.40817], ["2019-07-27T15:38:00", 7.08792, -36.40405], ["2019-07-27T16:37:58", 7.08673, -36.40143], ["2019-07-27T17:36:57", 7.08534, -36.39905], ["2019-07-27T18:36:25", 7.08352, -36.39511], ["2019-07-27T22:34:54", 7.06151, -36.38364], ["2019-07-27T23:34:00", 7.05183, -36.38174], ["2019-07-28T00:34:03", 7.04488, -36.37915], ["2019-07-28T01:33:11", 7.03936, -36.3739], ["2019-07-28T02:32:59", 7.03222, -36.37006], ["2019-07-28T05:31:00", 7.01252, -36.36746], ["2019-07-28T06:31:00", 7.0066, -36.37124], ["2019-07-28T07:31:00", 7.00046, -36.37399], ["2019-07-28T08:30:56", 6.99691, -36.3793], ["2019-07-28T09:31:28", 6.99867, -36.38586], ["2019-07-28T13:31:30", 7.01027, -36.40274], ["2019-07-28T16:28:58", 7.02707, -36.4072], ["2019-07-28T17:27:05", 7.03688, -36.40948], ["2019-07-29T00:24:06", 7.13221, -36.37692], ["2019-07-29T02:22:22", 7.15639, -36.35976], ["2019-07-29T03:22:22", 7.17141, -36.34963], ["2019-07-29T04:22:22", 7.18549, -36.34036], ["2019-07-29T08:21:00", 7.24077, -36.29483], ["2019-07-29T09:20:34", 7.24984, -36.28143], ["2019-07-29T10:21:28", 7.26072, -36.26816], ["2019-07-29T11:19:24", 7.27317, -36.25421], ["2019-07-29T12:19:30", 7.28942, -36.23978], ["2019-07-29T13:21:36", 7.30791, -36.22327], ["2019-07-29T14:17:52", 7.32451, -36.20966], ["2019-07-29T22:15:04", 7.47192, -36.05472], ["2019-07-30T03:14:08", 7.47871, -35.92654], ["2019-07-30T04:14:29", 7.47548, -35.90573], ["2019-07-30T07:10:01", 7.46976, -35.8395], ["2019-07-30T08:10:01", 7.4698, -35.8177], ["2019-07-30T09:10:01", 7.47006, -35.79727], ["2019-07-30T14:07:59", 7.44857, -35.68326], ["2019-07-30T18:08:40", 7.37691, -35.59573], ["2019-07-30T19:06:09", 7.36092, -35.57516], ["2019-07-30T20:08:28", 7.3403, -35.55389], ["2019-07-31T00:07:45", 7.26148, -35.4837], ["2019-07-31T01:05:08", 7.23839, -35.4733], ["2019-07-31T02:04:27", 7.21432, -35.46692], ["2019-07-31T04:03:41", 7.17158, -35.45746], ["2019-07-31T09:00:50", 7.0759, -35.45676], ["2019-07-31T10:03:59", 7.06337, -35.45935], ["2019-07-31T12:02:28", 7.03311, -35.46442], ["2019-07-31T13:00:16", 7.02092, -35.46645], ["2019-07-31T14:00:16", 7.00989, -35.46808], ["2019-07-31T15:00:16", 7.00105, -35.46902], ["2019-07-31T15:58:01", 6.99656, -35.47263], ["2019-07-31T18:57:32", 6.99183, -35.48877], ["2019-07-31T19:55:37", 6.99218, -35.4928], ["2019-07-31T20:55:37", 6.99634, -35.49323], ["2019-07-31T21:55:37", 7.00295, -35.49426], ["2019-07-31T22:55:00", 7.00869, -35.49477], ["2019-07-31T23:55:00", 7.01388, -35.49554], ["2019-08-01T00:54:28", 7.01951, -35.49341], ["2019-08-01T01:53:29", 7.02817, -35.48971], ["2019-08-01T02:53:29", 7.03701, -35.48611], ["2019-08-01T06:52:00", 7.07403, -35.47562], ["2019-08-01T07:52:05", 7.08283, -35.47308], ["2019-08-01T11:49:02", 7.1327, -35.44977], ["2019-08-01T13:48:39", 7.15811, -35.42719], ["2019-08-01T14:48:57", 7.16976, -35.4151], ["2019-08-01T15:47:29", 7.18218, -35.40414], ["2019-08-01T16:47:29", 7.19767, -35.39581], ["2019-08-01T17:47:29", 7.21278, -35.38568], ["2019-08-01T18:46:02", 7.22834, -35.37414], ["2019-08-01T19:46:02", 7.24276, -35.36195], ["2019-08-01T20:46:02", 7.25718, -35.34985], ["2019-08-01T21:45:38", 7.27232, -35.33765], ["2019-08-01T22:45:25", 7.28872, -35.32321], ["2019-08-02T01:43:09", 7.33295, -35.2815], ["2019-08-02T02:43:09", 7.33909, -35.26493], ["2019-08-02T03:43:09", 7.34377, -35.24802], ["2019-08-02T04:42:56", 7.34662, -35.2309], ["2019-08-02T05:42:58", 7.34893, -35.21341], ["2019-08-02T06:42:27", 7.351, -35.19818], ["2019-08-02T07:41:27", 7.35582, -35.18628], ["2019-08-02T08:41:27", 7.36045, -35.17529], ["2019-08-02T09:41:27", 7.36433, -35.16519], ["2019-08-02T10:40:27", 7.36887, -35.15273], ["2019-08-02T11:40:27", 7.37269, -35.13968], ["2019-08-02T12:39:57", 7.37415, -35.12781], ["2019-08-02T13:39:36", 7.36966, -35.11847], ["2019-08-02T14:38:56", 7.35934, -35.11266], ["2019-08-02T15:38:56", 7.35153, -35.1088], ["2019-08-02T16:37:56", 7.34296, -35.10765], ["2019-08-02T17:37:56", 7.33348, -35.10602], ["2019-08-02T18:37:27", 7.32527, -35.10272], ["2019-08-02T19:36:57", 7.31789, -35.0983], ["2019-08-02T20:36:54", 7.31228, -35.09305], ["2019-08-02T21:36:26", 7.31141, -35.08899], ["2019-08-02T22:35:59", 7.31398, -35.08408], ["2019-08-02T23:35:59", 7.31754, -35.0791], ["2019-08-03T00:34:56", 7.32005, -35.07459], ["2019-08-03T01:34:56", 7.3182, -35.0703], ["2019-08-03T02:34:56", 7.31138, -35.06403], ["2019-08-03T03:34:36", 7.29987, -35.05872], ["2019-08-03T04:34:28", 7.28701, -35.05322], ["2019-08-03T05:33:56", 7.27446, -35.0473], ["2019-08-03T06:33:30", 7.25948, -35.04181], ["2019-08-03T07:32:58", 7.24515, -35.0368], ["2019-08-03T08:32:57", 7.23385, -35.03351], ["2019-08-03T09:32:02", 7.22545, -35.03152], ["2019-08-03T10:31:29", 7.21771, -35.02808], ["2019-08-03T11:31:08", 7.20733, -35.02264], ["2019-08-03T12:30:56", 7.19636, -35.01706], ["2019-08-03T13:30:28", 7.18468, -35.01151], ["2019-08-03T14:30:28", 7.17185, -35.0067], ["2019-08-03T15:30:28", 7.15842, -35.00327], ["2019-08-03T16:29:38", 7.14218, -35.00024], ["2019-08-03T17:29:26", 7.12467, -34.99768], ["2019-08-03T18:28:54", 7.10943, -34.99545], ["2019-08-03T19:28:28", 7.0976, -34.99246], ["2019-08-03T20:27:56", 7.08699, -34.98795], ["2019-08-03T22:26:58", 7.06443, -34.9754], ["2019-08-03T23:26:38", 7.05804, -34.97074], ["2019-08-04T00:26:38", 7.05366, -34.96808], ["2019-08-04T06:26:28", 7.09466, -34.9252], ["2019-08-04T07:22:54", 7.10384, -34.91633], ["2019-08-04T08:22:54", 7.11199, -34.90895], ["2019-08-04T09:22:54", 7.1201, -34.90097], ["2019-08-04T11:23:30", 7.13354, -34.87858], ["2019-08-04T12:23:30", 7.14054, -34.86399], ["2019-08-04T13:23:30", 7.14809, -34.84897], ["2019-08-04T14:21:13", 7.15613, -34.83389], ["2019-08-04T20:18:31", 7.20512, -34.74509], ["2019-08-04T22:20:56", 7.21579, -34.70926], ["2019-08-04T23:17:35", 7.22113, -34.69034], ["2019-08-05T00:19:26", 7.22623, -34.66674], ["2019-08-05T01:19:26", 7.22885, -34.64408], ["2019-08-05T02:19:26", 7.2313, -34.62091], ["2019-08-05T11:14:59", 7.17959, -34.42426], ["2019-08-05T12:12:12", 7.17246, -34.40445], ["2019-08-05T19:10:58", 7.1431, -34.26077], ["2019-08-05T20:10:29", 7.12811, -34.24138], ["2019-08-05T21:10:29", 7.11064, -34.22327], ["2019-08-05T22:09:58", 7.09412, -34.20709], ["2019-08-06T02:06:44", 7.03894, -34.1532], ["2019-08-06T04:08:57", 7.02738, -34.13281], ["2019-08-06T05:05:45", 7.02339, -34.12402], ["2019-08-06T06:08:29", 7.01719, -34.10039], ["2019-08-06T08:08:29", 7.0132, -34.09164], ["2019-08-06T10:04:31", 7.0139, -34.07378], ["2019-08-06T11:04:31", 7.01214, -34.06537], ["2019-08-06T16:02:41", 6.97439, -34.01013], ["2019-08-06T17:02:28", 6.96359, -34.00092], ["2019-08-06T18:01:57", 6.95248, -33.99457], ["2019-08-06T19:00:56", 6.94175, -33.98715], ["2019-08-06T20:00:56", 6.93257, -33.98114], ["2019-08-06T20:59:42", 6.9254, -33.97351], ["2019-08-06T22:00:49", 6.91737, -33.96609], ["2019-08-06T22:59:42", 6.91115, -33.95935], ["2019-08-06T23:59:01", 6.90507, -33.95205], ["2019-08-07T00:59:01", 6.89786, -33.94553], ["2019-08-07T01:58:28", 6.89187, -33.93719], ["2019-08-07T02:57:39", 6.88612, -33.92688], ["2019-08-07T03:57:28", 6.88183, -33.91507], ["2019-08-07T04:56:30", 6.87976, -33.90313], ["2019-08-07T05:56:30", 6.8792, -33.89257], ["2019-08-07T06:56:30", 6.8762, -33.88416], ["2019-08-07T07:55:57", 6.87492, -33.87422], ["2019-08-07T08:55:57", 6.87449, -33.86478], ["2019-08-07T11:54:27", 6.87201, -33.83279], ["2019-08-07T12:53:27", 6.87367, -33.81965], ["2019-08-07T13:53:27", 6.87586, -33.80557], ["2019-08-07T14:52:58", 6.87814, -33.79002], ["2019-08-07T15:52:58", 6.88213, -33.77148], ["2019-08-07T16:52:28", 6.88686, -33.75232], ["2019-08-07T20:50:56", 6.89881, -33.70715], ["2019-08-07T21:50:29", 6.90337, -33.69681], ["2019-08-07T22:50:16", 6.90746, -33.68463], ["2019-08-07T23:49:25", 6.91479, -33.67209], ["2019-08-08T00:49:25", 6.92552, -33.65784], ["2019-08-08T01:48:00", 6.93351, -33.64823], ["2019-08-08T02:48:00", 6.94154, -33.63905], ["2019-08-08T03:48:00", 6.95094, -33.62927], ["2019-08-08T04:47:35", 6.95894, -33.61856], ["2019-08-08T05:47:26", 6.96812, -33.60675], ["2019-08-08T06:46:55", 6.97897, -33.59593], ["2019-08-08T07:46:55", 6.99279, -33.5834], ["2019-08-08T09:46:10", 7.02025, -33.56519], ["2019-08-08T10:45:37", 7.03361, -33.55796], ["2019-08-08T11:45:37", 7.04357, -33.55084], ["2019-08-08T15:44:29", 7.09818, -33.49582], ["2019-08-08T16:43:47", 7.1185, -33.47491], ["2019-08-08T17:43:47", 7.14017, -33.45534], ["2019-08-08T18:43:47", 7.15892, -33.43826], ["2019-08-08T19:42:42", 7.17692, -33.42026], ["2019-08-08T20:42:25", 7.19322, -33.40305], ["2019-08-08T21:41:20", 7.20839, -33.38549], ["2019-08-08T22:41:20", 7.22114, -33.36566], ["2019-08-09T00:39:20", 7.24072, -33.33061], ["2019-08-09T01:39:58", 7.25126, -33.31384], ["2019-08-09T02:39:20", 7.26038, -33.29388], ["2019-08-09T03:38:39", 7.27191, -33.27271], ["2019-08-09T04:38:27", 7.28406, -33.24924], ["2019-08-09T05:37:58", 7.29789, -33.22464], ["2019-08-09T07:37:28", 7.32598, -33.17151], ["2019-08-09T08:35:37", 7.33756, -33.14618], ["2019-08-09T09:35:37", 7.34932, -33.12112], ["2019-08-09T10:35:37", 7.36099, -33.09546], ["2019-08-09T11:35:25", 7.37083, -33.07135], ["2019-08-09T12:34:25", 7.37919, -33.04762], ["2019-08-09T13:34:25", 7.38683, -33.02359], ["2019-08-09T14:33:28", 7.39552, -32.99983], ["2019-08-09T15:33:28", 7.4026, -32.97751], ["2019-08-09T16:32:38", 7.40733, -32.95653], ["2019-08-09T17:32:38", 7.41149, -32.9361], ["2019-08-09T18:31:58", 7.41459, -32.91501], ["2019-08-09T19:31:41", 7.41386, -32.89438], ["2019-08-09T20:31:07", 7.41088, -32.87634], ["2019-08-10T00:29:57", 7.38788, -32.79144], ["2019-08-10T01:29:56", 7.38304, -32.76999], ["2019-08-10T02:29:30", 7.37496, -32.75266], ["2019-08-10T03:28:56", 7.36644, -32.73534], ["2019-08-10T04:28:56", 7.35653, -32.71774], ["2019-08-10T05:28:57", 7.34743, -32.70165], ["2019-08-10T06:28:57", 7.3376, -32.68723], ["2019-08-10T07:28:25", 7.32696, -32.67621], ["2019-08-10T08:27:55", 7.31553, -32.6665], ["2019-08-10T09:27:26", 7.30418, -32.66074], ["2019-08-10T10:27:26", 7.29422, -32.65732], ["2019-08-10T15:24:56", 7.26232, -32.6431], ["2019-08-10T16:24:28", 7.25614, -32.63901], ["2019-08-10T17:24:08", 7.24995, -32.63693], ["2019-08-10T21:22:57", 7.22445, -32.63879], ["2019-08-10T22:22:10", 7.22451, -32.63956], ["2019-08-10T23:20:57", 7.22516, -32.64344], ["2019-08-11T00:21:28", 7.23112, -32.64273], ["2019-08-11T01:20:57", 7.23375, -32.64438], ["2019-08-11T02:20:07", 7.23594, -32.6466], ["2019-08-11T03:20:07", 7.24015, -32.64832], ["2019-08-11T06:00:57", 7.25886, -32.64426], ["2019-08-11T07:00:10", 7.26486, -32.64429], ["2019-08-11T12:25:57", 7.3145, -32.65701], ["2019-08-11T14:24:26", 7.33182, -32.64695], ["2019-08-11T15:24:26", 7.34225, -32.63914], ["2019-08-11T16:24:26", 7.34834, -32.63416], ["2019-08-11T17:23:55", 7.35739, -32.62531], ["2019-08-11T18:23:27", 7.36341, -32.61459], ["2019-08-11T19:22:37", 7.37174, -32.60559], ["2019-08-11T20:22:26", 7.3829, -32.5979], ["2019-08-11T21:20:58", 7.39503, -32.58949], ["2019-08-11T22:20:58", 7.40623, -32.58211], ["2019-08-11T23:20:58", 7.41739, -32.57507], ["2019-08-12T00:20:33", 7.42687, -32.56662], ["2019-08-12T01:19:54", 7.43553, -32.55838], ["2019-08-12T02:19:31", 7.44516, -32.54764], ["2019-08-12T03:18:58", 7.45567, -32.53586], ["2019-08-12T04:17:58", 7.46763, -32.52426], ["2019-08-12T05:17:58", 7.47694, -32.51362], ["2019-08-12T06:17:58", 7.48381, -32.50323], ["2019-08-12T08:16:35", 7.48785, -32.49135], ["2019-08-12T09:16:35", 7.49004, -32.47882], ["2019-08-12T10:16:35", 7.48661, -32.45367], ["2019-08-12T11:15:57", 7.48896, -32.4438], ["2019-08-12T12:15:57", 7.49746, -32.4426], ["2019-08-12T13:14:55", 7.50725, -32.44147], ["2019-08-12T14:14:55", 7.5124, -32.44001], ["2019-08-12T15:14:55", 7.5206, -32.43735], ["2019-08-12T16:13:25", 7.53462, -32.43572], ["2019-08-12T17:13:25", 7.549, -32.43289], ["2019-08-12T18:13:25", 7.56183, -32.42517]], "drifter_8": [["2019-07-25T11:14:00", 6.73472, -37.09499], ["2019-07-25T16:43:26", 6.83607, -37.0278], ["2019-07-25T17:39:47", 6.85723, -37.01182], ["2019-07-25T18:39:47", 6.87877, -36.99216], ["2019-07-25T19:39:47", 6.89971, -36.96899], ["2019-07-26T02:40:30", 7.00104, -36.8349], ["2019-07-26T03:36:35", 7.01152, -36.81781], ["2019-07-26T08:36:11", 7.05783, -36.72653], ["2019-07-26T10:35:30", 7.07389, -36.69009], ["2019-07-26T12:33:58", 7.0767, -36.65945], ["2019-07-26T16:31:29", 7.09494, -36.60312], ["2019-07-26T23:31:18", 7.09832, -36.53531], ["2019-07-27T01:28:04", 7.10417, -36.51566], ["2019-07-27T08:26:36", 7.11367, -36.44321], ["2019-07-27T13:22:10", 7.09235, -36.41196], ["2019-07-27T14:21:58", 7.0894, -36.40784], ["2019-07-27T15:21:58", 7.08683, -36.40295], ["2019-07-27T16:21:26", 7.08536, -36.39926], ["2019-07-27T17:20:38", 7.08424, -36.39737], ["2019-07-27T18:20:10", 7.08298, -36.39334], ["2019-07-27T22:19:00", 7.06332, -36.38046], ["2019-07-27T23:18:08", 7.05504, -36.37772], ["2019-07-28T04:15:56", 7.01903, -36.36526], ["2019-07-28T05:14:59", 7.01419, -36.36454], ["2019-07-28T06:14:59", 7.00934, -36.36737], ["2019-07-28T07:15:01", 7.004, -36.37021], ["2019-07-28T08:15:13", 6.99987, -36.37375], ["2019-07-28T13:13:30", 7.01368, -36.39658], ["2019-07-28T14:12:16", 7.01754, -36.39618], ["2019-07-28T21:08:28", 7.09361, -36.39819], ["2019-07-29T00:08:57", 7.13324, -36.37375], ["2019-07-29T04:07:56", 7.18551, -36.33762], ["2019-07-29T05:06:28", 7.19975, -36.32489], ["2019-07-29T08:05:59", 7.24027, -36.29037], ["2019-07-29T09:05:59", 7.25014, -36.2787], ["2019-07-29T10:05:59", 7.25958, -36.2666], ["2019-07-29T14:03:30", 7.3205, -36.20819], ["2019-07-29T15:01:45", 7.33868, -36.19451], ["2019-07-29T16:01:45", 7.35769, -36.1776], ["2019-07-29T17:01:45", 7.37456, -36.16052], ["2019-07-30T00:59:27", 7.47922, -35.97729], ["2019-07-30T08:56:27", 7.464, -35.79739], ["2019-07-30T09:54:57", 7.4646, -35.77536], ["2019-07-30T14:53:27", 7.432, -35.66132], ["2019-07-30T15:52:55", 7.41393, -35.63846], ["2019-07-30T16:52:28", 7.39388, -35.61658], ["2019-07-30T17:52:29", 7.37513, -35.59589], ["2019-07-30T18:51:27", 7.35742, -35.57339], ["2019-07-30T19:51:27", 7.33927, -35.55356], ["2019-07-30T20:51:27", 7.31936, -35.53287], ["2019-07-30T21:50:56", 7.30221, -35.51334], ["2019-07-30T22:50:28", 7.28393, -35.49626], ["2019-07-30T23:50:28", 7.26221, -35.48038], ["2019-07-31T00:50:27", 7.23834, -35.46872], ["2019-07-31T01:49:24", 7.21531, -35.46021], ["2019-07-31T02:48:58", 7.19271, -35.45594], ["2019-07-31T03:48:58", 7.17211, -35.45105], ["2019-07-31T04:46:56", 7.15304, -35.44825], ["2019-07-31T05:46:56", 7.13454, -35.44662], ["2019-07-31T06:47:28", 7.11174, -35.4462], ["2019-07-31T07:48:00", 7.08951, -35.44824], ["2019-07-31T12:44:26", 7.01825, -35.45862], ["2019-07-31T13:44:27", 7.00693, -35.46094], ["2019-07-31T14:43:56", 6.9963, -35.4625], ["2019-07-31T15:43:56", 6.99115, -35.46671], ["2019-07-31T16:42:57", 6.98846, -35.47246], ["2019-07-31T17:42:57", 6.98769, -35.48001], ["2019-07-31T18:42:58", 6.98754, -35.48486], ["2019-07-31T19:40:56", 6.98731, -35.49013], ["2019-07-31T20:40:56", 6.99031, -35.4903], ["2019-07-31T21:40:56", 6.99576, -35.49133], ["2019-07-31T22:40:27", 7.00171, -35.49109], ["2019-08-01T03:38:56", 7.03615, -35.47839], ["2019-08-01T04:38:28", 7.04757, -35.47531], ["2019-08-01T05:37:58", 7.05672, -35.47153], ["2019-08-01T06:37:58", 7.06346, -35.46878], ["2019-08-01T07:37:56", 7.07133, -35.46594], ["2019-08-01T08:37:25", 7.08007, -35.46237], ["2019-08-01T09:36:53", 7.09195, -35.45688], ["2019-08-01T11:35:26", 7.1211, -35.44323], ["2019-08-01T12:35:56", 7.13467, -35.43179], ["2019-08-01T13:35:26", 7.14741, -35.41989], ["2019-08-01T19:33:27", 7.23016, -35.35425], ["2019-08-01T20:32:56", 7.24294, -35.34192], ["2019-08-02T00:31:27", 7.30145, -35.28812], ["2019-08-02T01:30:08", 7.31312, -35.27353], ["2019-08-02T02:30:08", 7.3208, -35.25662], ["2019-08-02T03:29:36", 7.32502, -35.24033], ["2019-08-02T04:29:26", 7.32852, -35.22403], ["2019-08-02T06:27:39", 7.3332, -35.19364], ["2019-08-02T07:27:39", 7.33741, -35.18171], ["2019-08-02T08:27:39", 7.34093, -35.17038], ["2019-08-02T09:27:26", 7.34245, -35.16016], ["2019-08-02T10:26:58", 7.34554, -35.14737], ["2019-08-02T11:26:26", 7.34889, -35.13416], ["2019-08-02T13:24:27", 7.34829, -35.11337], ["2019-08-02T14:24:55", 7.34276, -35.10663], ["2019-08-02T15:24:27", 7.33202, -35.10187], ["2019-08-02T16:23:58", 7.32405, -35.09933], ["2019-08-02T17:23:58", 7.31444, -35.09641], ["2019-08-02T18:23:56", 7.30379, -35.09219], ["2019-08-02T19:23:07", 7.29716, -35.08725], ["2019-08-02T23:21:26", 7.29407, -35.06747], ["2019-08-03T00:20:57", 7.29426, -35.06165], ["2019-08-03T06:18:06", 7.24392, -35.0209], ["2019-08-03T07:17:25", 7.23031, -35.0159], ["2019-08-03T08:17:25", 7.21859, -35.01358], ["2019-08-03T09:16:56", 7.20946, -35.01196], ["2019-08-03T10:16:27", 7.20082, -35.00867], ["2019-08-03T11:16:06", 7.19112, -35.00452], ["2019-08-03T12:15:08", 7.18095, -34.999], ["2019-08-03T13:15:08", 7.17048, -34.99376], ["2019-08-03T14:15:08", 7.15906, -34.98904], ["2019-08-03T15:15:26", 7.14634, -34.98544], ["2019-08-03T16:14:23", 7.1335, -34.98249], ["2019-08-03T17:14:23", 7.11805, -34.97949], ["2019-08-03T18:13:54", 7.1024, -34.97571], ["2019-08-03T19:12:58", 7.0906, -34.97254], ["2019-08-03T20:12:58", 7.07897, -34.96713], ["2019-08-03T21:12:25", 7.06759, -34.96048], ["2019-08-03T22:11:56", 7.05685, -34.95424], ["2019-08-03T23:11:56", 7.04818, -34.94849], ["2019-08-04T00:10:58", 7.04307, -34.94309], ["2019-08-04T01:10:58", 7.04041, -34.93768], ["2019-08-04T03:09:27", 7.05096, -34.92572], ["2019-08-04T04:09:27", 7.0577, -34.91791], ["2019-08-04T05:09:27", 7.06766, -34.9101], ["2019-08-04T06:08:57", 7.07809, -34.9017], ["2019-08-04T08:08:09", 7.09585, -34.8862], ["2019-08-04T10:06:25", 7.11205, -34.86899], ["2019-08-04T11:06:57", 7.11892, -34.85748], ["2019-08-04T12:06:25", 7.12613, -34.8429], ["2019-08-04T13:05:27", 7.1331, -34.82862], ["2019-08-04T14:05:27", 7.14082, -34.81326], ["2019-08-04T15:05:07", 7.14933, -34.79517], ["2019-08-04T16:04:25", 7.15854, -34.77835], ["2019-08-04T17:04:07", 7.17017, -34.76358], ["2019-08-04T18:03:28", 7.18156, -34.74912], ["2019-08-04T19:03:28", 7.18971, -34.73487], ["2019-08-04T20:03:28", 7.19259, -34.71976], ["2019-08-04T21:02:57", 7.19556, -34.70129], ["2019-08-04T22:02:28", 7.20006, -34.68234], ["2019-08-04T23:01:27", 7.20537, -34.66267], ["2019-08-05T00:01:27", 7.21056, -34.64078], ["2019-08-05T01:01:05", 7.21548, -34.61626], ["2019-08-05T02:01:05", 7.219, -34.59283], ["2019-08-05T03:00:25", 7.22147, -34.57071], ["2019-08-05T03:59:55", 7.22453, -34.54733], ["2019-08-05T04:59:36", 7.22639, -34.52216], ["2019-08-05T05:59:24", 7.22403, -34.49561], ["2019-08-05T06:59:27", 7.21629, -34.46829], ["2019-08-05T07:58:56", 7.2067, -34.44293], ["2019-08-05T08:57:26", 7.19691, -34.41976], ["2019-08-05T09:57:26", 7.18687, -34.39968], ["2019-08-05T10:57:26", 7.17678, -34.37814], ["2019-08-05T11:56:57", 7.16566, -34.3558], ["2019-08-05T15:54:25", 7.14986, -34.27377], ["2019-08-05T16:54:25", 7.14986, -34.25532], ["2019-08-05T17:54:25", 7.14621, -34.23489], ["2019-08-05T18:53:54", 7.13791, -34.21341], ["2019-08-05T19:53:27", 7.12438, -34.19421], ["2019-08-05T20:53:27", 7.10902, -34.17584], ["2019-08-06T01:51:27", 7.03409, -34.10913], ["2019-08-06T02:51:04", 7.02515, -34.09964], ["2019-08-06T12:46:26", 6.99302, -34.00848], ["2019-08-06T13:46:30", 6.98559, -33.99664], ["2019-08-06T14:45:32", 6.97537, -33.98682], ["2019-08-06T15:45:32", 6.96662, -33.97772], ["2019-08-06T16:46:26", 6.95701, -33.96991], ["2019-08-06T17:44:13", 6.9478, -33.96497], ["2019-08-06T22:43:31", 6.90879, -33.92862], ["2019-08-06T23:42:31", 6.90418, -33.9205], ["2019-08-07T06:39:26", 6.87317, -33.85287], ["2019-08-07T07:38:56", 6.87084, -33.84238], ["2019-08-07T08:38:12", 6.87002, -33.83264], ["2019-08-07T09:37:41", 6.87182, -33.82095], ["2019-08-07T11:35:56", 6.87733, -33.79272], ["2019-08-07T12:35:56", 6.88372, -33.77521], ["2019-08-07T13:35:56", 6.88827, -33.75925], ["2019-08-07T14:35:25", 6.89235, -33.74588], ["2019-08-07T17:34:27", 6.9121, -33.69327], ["2019-08-07T18:32:55", 6.91828, -33.68145], ["2019-08-07T19:32:55", 6.92403, -33.67218], ["2019-08-07T20:31:57", 6.92739, -33.66137], ["2019-08-07T21:31:57", 6.93112, -33.64987], ["2019-08-07T22:31:24", 6.9341, -33.6376], ["2019-08-07T23:30:56", 6.93995, -33.62619], ["2019-08-08T00:30:26", 6.94875, -33.61672], ["2019-08-08T01:30:27", 6.95956, -33.61002], ["2019-08-08T02:30:26", 6.97016, -33.60376], ["2019-08-08T03:28:37", 6.97649, -33.59808], ["2019-08-08T04:28:37", 6.98233, -33.59173], ["2019-08-08T05:28:37", 6.98782, -33.58426], ["2019-08-08T06:28:25", 6.99446, -33.57568], ["2019-08-08T07:27:55", 7.00543, -33.56696], ["2019-08-08T08:26:57", 7.01783, -33.55837], ["2019-08-08T09:26:57", 7.03032, -33.55099], ["2019-08-08T10:26:57", 7.04348, -33.54361], ["2019-08-08T11:25:55", 7.05394, -33.5376], ["2019-08-08T12:25:55", 7.06227, -33.53116], ["2019-08-08T13:25:25", 7.07395, -33.51932], ["2019-08-08T15:24:26", 7.09969, -33.48651], ["2019-08-08T17:22:57", 7.13935, -33.44585], ["2019-08-08T18:22:57", 7.15935, -33.42851], ["2019-08-08T19:22:57", 7.17622, -33.4104], ["2019-08-08T20:22:25", 7.19197, -33.39377], ["2019-08-08T21:22:06", 7.20674, -33.37686], ["2019-08-08T22:20:55", 7.22186, -33.35673], ["2019-08-08T23:20:55", 7.23448, -33.33699], ["2019-08-09T00:20:55", 7.24508, -33.32111], ["2019-08-09T01:20:27", 7.25571, -33.30612], ["2019-08-09T02:19:28", 7.26489, -33.28748], ["2019-08-09T03:19:28", 7.27575, -33.26688], ["2019-08-09T04:18:57", 7.28739, -33.24423], ["2019-08-09T05:18:37", 7.29937, -33.22055], ["2019-08-09T06:18:09", 7.31452, -33.19485], ["2019-08-09T10:15:57", 7.36434, -33.09305], ["2019-08-09T11:15:27", 7.37559, -33.06897], ["2019-08-09T13:13:24", 7.3936, -33.02297], ["2019-08-09T14:13:24", 7.40017, -33.00048], ["2019-08-09T15:13:24", 7.40686, -32.97937], ["2019-08-09T16:12:08", 7.41354, -32.95834], ["2019-08-09T17:12:08", 7.42032, -32.93877], ["2019-08-09T18:12:08", 7.42427, -32.918], ["2019-08-09T19:11:27", 7.42463, -32.89793], ["2019-08-09T20:11:27", 7.42321, -32.87991], ["2019-08-10T00:10:25", 7.40207, -32.7959], ["2019-08-10T01:09:55", 7.39666, -32.77484], ["2019-08-10T02:09:27", 7.38836, -32.75781], ["2019-08-10T06:08:55", 7.34942, -32.69611], ["2019-08-10T07:08:27", 7.33796, -32.68472], ["2019-08-10T08:07:56", 7.32572, -32.67514], ["2019-08-10T09:07:26", 7.31251, -32.66666], ["2019-08-10T10:07:25", 7.30058, -32.66248], ["2019-08-10T11:07:08", 7.29131, -32.65927], ["2019-08-10T15:05:54", 7.26452, -32.64819], ["2019-08-10T16:05:27", 7.25685, -32.64252], ["2019-08-10T17:04:25", 7.25051, -32.63961], ["2019-08-10T18:04:25", 7.24214, -32.63712], ["2019-08-10T19:03:56", 7.23234, -32.63797], ["2019-08-10T20:03:56", 7.22474, -32.64097], ["2019-08-10T21:03:56", 7.22208, -32.64337], ["2019-08-10T22:03:28", 7.22227, -32.64362], ["2019-08-10T23:02:55", 7.22075, -32.64798], ["2019-08-11T01:01:57", 7.22812, -32.65112], ["2019-08-11T04:59:56", 7.24926, -32.65018], ["2019-08-11T05:58:39", 7.25448, -32.64828], ["2019-08-11T06:58:39", 7.26169, -32.64716], ["2019-08-11T07:58:25", 7.26755, -32.64954], ["2019-08-11T08:57:56", 7.27398, -32.65289], ["2019-08-11T09:56:29", 7.28368, -32.65465], ["2019-08-11T10:56:29", 7.29432, -32.65628], ["2019-08-11T11:56:29", 7.30677, -32.65628], ["2019-08-11T13:54:25", 7.32508, -32.64924], ["2019-08-11T14:54:56", 7.33716, -32.63904], ["2019-08-11T15:54:25", 7.34396, -32.63251], ["2019-08-11T17:53:28", 7.35892, -32.61505], ["2019-08-11T18:52:25", 7.36629, -32.6039], ["2019-08-11T19:52:25", 7.37539, -32.59549], ["2019-08-11T20:51:57", 7.38599, -32.58801], ["2019-08-11T21:51:30", 7.39779, -32.5805], ["2019-08-11T22:51:30", 7.40891, -32.57217], ["2019-08-11T23:50:54", 7.41917, -32.56451], ["2019-08-12T00:49:28", 7.4283, -32.55559], ["2019-08-12T01:49:28", 7.43667, -32.54675], ["2019-08-12T02:49:28", 7.44525, -32.53525], ["2019-08-12T03:49:11", 7.45724, -32.5239], ["2019-08-12T04:49:02", 7.46725, -32.51242], ["2019-08-12T05:48:08", 7.47566, -32.50239], ["2019-08-12T06:48:08", 7.48163, -32.49295], ["2019-08-12T10:46:26", 7.47986, -32.44586], ["2019-08-12T11:47:27", 7.48542, -32.43979], ["2019-08-12T12:46:26", 7.49282, -32.43994], ["2019-08-12T18:44:59", 7.56424, -32.41693], ["2019-08-13T01:41:27", 7.62302, -32.35623], ["2019-08-13T02:41:27", 7.6287, -32.35043], ["2019-08-13T03:40:56", 7.63459, -32.34271], ["2019-08-13T04:40:08", 7.64023, -32.33241], ["2019-08-13T05:40:08", 7.64233, -32.32443], ["2019-08-13T06:40:08", 7.6443, -32.31653], ["2019-08-13T07:38:57", 7.64623, -32.30732], ["2019-08-13T08:38:57", 7.65014, -32.30063], ["2019-08-13T09:38:40", 7.65069, -32.29773], ["2019-08-13T10:38:08", 7.65392, -32.29031], ["2019-08-13T14:36:25", 7.67762, -32.26633], ["2019-08-13T21:27:25", 7.72917, -32.21497], ["2019-08-14T06:55:28", 7.79468, -32.14661], ["2019-08-14T07:54:57", 7.8017, -32.14197], ["2019-08-14T13:12:27", 7.86937, -32.09818], ["2019-08-14T14:11:56", 7.88183, -32.08786]], "drifter_10": [["2019-07-26T11:13:00", 6.73059, -39.91316], ["2019-07-26T11:50:58", 6.73905, -39.89841], ["2019-07-26T16:47:43", 6.78698, -39.78897], ["2019-07-28T11:39:01", 6.72848, -38.81662], ["2019-07-28T12:36:11", 6.72056, -38.78894], ["2019-07-28T13:35:50", 6.71321, -38.75726], ["2019-07-28T14:35:50", 6.70913, -38.72894]], "drifter_9": [["2019-07-26T11:13:00", 6.73059, -39.91316], ["2019-07-26T11:50:56", 6.73908, -39.89841], ["2019-07-26T19:48:42", 6.81726, -39.71793], ["2019-07-26T20:46:34", 6.82579, -39.69644], ["2019-07-26T22:45:40", 6.84232, -39.65302]], "drifter_11": [["2019-07-28T21:48:00", 7.99583, -45.24221], ["2019-07-28T22:08:11", 7.99453, -45.24432], ["2019-07-28T23:05:26", 7.99602, -45.24887], ["2019-07-29T04:04:30", 8.01408, -45.27454], ["2019-07-29T05:04:10", 8.02051, -45.2785], ["2019-07-29T06:04:05", 8.0268, -45.2822], ["2019-07-29T12:59:19", 8.09897, -45.27985], ["2019-07-29T14:59:00", 8.1294, -45.26044], ["2019-07-29T15:59:00", 8.14605, -45.24902], ["2019-07-29T20:58:25", 8.2135, -45.20206], ["2019-07-29T21:56:23", 8.2257, -45.19705], ["2019-07-30T02:56:01", 8.29524, -45.15045], ["2019-07-30T03:56:25", 8.30629, -45.13699], ["2019-07-30T04:54:04", 8.31789, -45.12421], ["2019-07-30T05:54:10", 8.32526, -45.1094], ["2019-07-30T06:54:10", 8.33178, -45.09524], ["2019-07-30T07:54:10", 8.33752, -45.07816], ["2019-07-30T08:52:58", 8.34103, -45.06177], ["2019-07-30T09:53:58", 8.34413, -45.04512], ["2019-07-30T10:53:58", 8.34847, -45.02881], ["2019-07-30T15:50:59", 8.35436, -44.95294], ["2019-07-30T16:51:57", 8.35642, -44.93484], ["2019-07-30T17:49:27", 8.3553, -44.91739], ["2019-07-30T18:49:27", 8.35389, -44.89825], ["2019-07-30T19:48:37", 8.35347, -44.88049], ["2019-07-30T20:48:56", 8.352, -44.86496], ["2019-07-30T21:47:27", 8.35051, -44.85046], ["2019-07-30T22:47:27", 8.34751, -44.83698], ["2019-07-30T23:46:59", 8.34178, -44.82608], ["2019-07-31T00:46:29", 8.33283, -44.81604], ["2019-07-31T01:46:29", 8.32475, -44.80869], ["2019-07-31T02:46:27", 8.32063, -44.80429], ["2019-07-31T06:44:27", 8.30786, -44.79337], ["2019-07-31T07:44:13", 8.30368, -44.79593], ["2019-07-31T08:44:00", 8.29796, -44.79953], ["2019-07-31T11:41:53", 8.29041, -44.81264], ["2019-07-31T12:41:53", 8.29111, -44.81315], ["2019-07-31T13:41:53", 8.29171, -44.81152], ["2019-07-31T14:41:56", 8.28984, -44.81195], ["2019-07-31T15:41:25", 8.28946, -44.81448], ["2019-07-31T16:40:56", 8.28877, -44.81778], ["2019-07-31T17:40:25", 8.28979, -44.82187], ["2019-07-31T18:39:56", 8.29218, -44.828], ["2019-07-31T19:38:31", 8.2959, -44.8332], ["2019-07-31T20:38:31", 8.29801, -44.83886], ["2019-07-31T21:38:31", 8.29827, -44.84607], ["2019-07-31T22:38:36", 8.3018, -44.85403], ["2019-07-31T23:37:58", 8.30788, -44.86011], ["2019-08-01T00:37:58", 8.31269, -44.86432], ["2019-08-01T02:35:58", 8.32252, -44.87219], ["2019-08-01T03:35:58", 8.32231, -44.87571], ["2019-08-01T04:35:58", 8.32114, -44.88077]], "drifter_12": [["2019-07-28T21:48:00", 7.99583, -45.24221], ["2019-07-29T02:10:54", 8.00343, -45.2674], ["2019-07-29T03:10:11", 8.0089, -45.27011], ["2019-07-29T04:10:11", 8.01413, -45.27466], ["2019-07-29T05:07:14", 8.02077, -45.27853], ["2019-07-29T08:07:28", 8.04566, -45.28802], ["2019-07-29T09:07:28", 8.05463, -45.28888], ["2019-07-29T10:07:28", 8.06373, -45.28879], ["2019-07-29T14:03:26", 8.11523, -45.27078], ["2019-07-29T15:01:14", 8.13045, -45.25988], ["2019-07-29T16:01:14", 8.1472, -45.24812], ["2019-07-29T17:01:14", 8.16106, -45.23602], ["2019-07-29T19:59:34", 8.20015, -45.20792], ["2019-07-30T02:58:40", 8.29631, -45.15045], ["2019-07-30T06:55:28", 8.33256, -45.09479], ["2019-07-30T07:54:28", 8.33785, -45.0784], ["2019-07-30T08:54:26", 8.34158, -45.06198], ["2019-07-30T09:53:59", 8.34477, -45.04578], ["2019-07-30T10:52:58", 8.34901, -45.02969], ["2019-07-30T12:54:26", 8.35364, -44.99802], ["2019-07-30T13:50:56", 8.3553, -44.9847], ["2019-07-30T14:50:56", 8.35487, -44.96959], ["2019-07-30T15:50:56", 8.35521, -44.95328], ["2019-07-30T16:50:27", 8.35685, -44.93622], ["2019-07-30T17:50:27", 8.35582, -44.91843], ["2019-07-30T18:50:56", 8.35407, -44.89917], ["2019-07-30T19:48:40", 8.35378, -44.8819], ["2019-07-30T20:49:29", 8.35241, -44.8665], ["2019-07-30T21:48:56", 8.35063, -44.85214], ["2019-07-30T22:49:29", 8.34731, -44.83835], ["2019-07-30T23:46:42", 8.34174, -44.82764], ["2019-07-31T00:47:13", 8.33334, -44.81696], ["2019-07-31T01:46:14", 8.3251, -44.80907], ["2019-07-31T02:46:14", 8.32114, -44.80469], ["2019-07-31T06:43:38", 8.30918, -44.79376], ["2019-07-31T07:42:57", 8.30472, -44.79636], ["2019-07-31T08:42:26", 8.29913, -44.80005], ["2019-07-31T09:41:57", 8.29537, -44.80408], ["2019-07-31T10:41:29", 8.29196, -44.80881], ["2019-07-31T13:39:08", 8.29153, -44.81176], ["2019-07-31T14:39:40", 8.2897, -44.81241], ["2019-07-31T15:39:08", 8.28908, -44.81485], ["2019-07-31T16:38:55", 8.28789, -44.81815], ["2019-07-31T17:37:57", 8.28886, -44.82208], ["2019-07-31T18:37:27", 8.29088, -44.8282], ["2019-07-31T19:37:27", 8.2944, -44.83344], ["2019-07-31T20:36:36", 8.29644, -44.83917], ["2019-07-31T21:36:36", 8.297, -44.84595], ["2019-07-31T22:36:26", 8.30045, -44.85406], ["2019-07-31T23:35:38", 8.30646, -44.85983], ["2019-08-01T00:35:28", 8.31119, -44.86392], ["2019-08-01T01:34:27", 8.31622, -44.86777], ["2019-08-01T02:34:09", 8.32102, -44.87167], ["2019-08-01T03:32:57", 8.32077, -44.87516], ["2019-08-01T04:32:57", 8.31931, -44.8804], ["2019-08-01T05:32:28", 8.32108, -44.88658], ["2019-08-01T06:32:28", 8.32571, -44.89224], ["2019-08-01T07:31:37", 8.33224, -44.89713], ["2019-08-01T08:31:25", 8.34002, -44.90024], ["2019-08-01T10:30:57", 8.35365, -44.9111], ["2019-08-01T11:29:56", 8.36129, -44.91733], ["2019-08-01T12:29:56", 8.36884, -44.9248], ["2019-08-01T13:28:56", 8.37594, -44.93173], ["2019-08-01T14:28:29", 8.37923, -44.93927], ["2019-08-01T18:26:55", 8.3825, -44.94794], ["2019-08-01T19:25:09", 8.38263, -44.94659], ["2019-08-01T20:25:09", 8.384, -44.94753], ["2019-08-01T21:25:09", 8.38563, -44.9483], ["2019-08-01T22:24:59", 8.3878, -44.94684], ["2019-08-01T23:24:28", 8.39071, -44.94757], ["2019-08-02T00:23:28", 8.39396, -44.94879], ["2019-08-02T01:22:25", 8.39594, -44.94783], ["2019-08-02T02:22:25", 8.39809, -44.94431], ["2019-08-02T03:22:25", 8.39903, -44.94165], ["2019-08-02T04:21:58", 8.39753, -44.9393], ["2019-08-02T05:21:28", 8.39772, -44.93472], ["2019-08-02T06:20:57", 8.40154, -44.93011], ["2019-08-02T07:21:27", 8.40921, -44.92413], ["2019-08-02T08:18:57", 8.42129, -44.91704], ["2019-08-02T09:19:28", 8.43336, -44.91077], ["2019-08-02T10:18:57", 8.44699, -44.90485], ["2019-08-02T11:18:26", 8.46017, -44.89716], ["2019-08-02T12:17:27", 8.47138, -44.88863], ["2019-08-02T13:17:27", 8.48215, -44.88065], ["2019-08-02T14:16:56", 8.49646, -44.87305], ["2019-08-02T18:14:56", 8.52549, -44.83548], ["2019-08-02T19:14:38", 8.53204, -44.82663], ["2019-08-02T20:14:09", 8.53985, -44.81763], ["2019-08-02T21:13:07", 8.54932, -44.81002], ["2019-08-02T22:13:07", 8.55927, -44.80453], ["2019-08-02T23:11:58", 8.57065, -44.79805], ["2019-08-03T00:11:58", 8.58228, -44.79118], ["2019-08-03T01:11:58", 8.59043, -44.78552], ["2019-08-03T02:10:58", 8.59839, -44.78127], ["2019-08-03T03:10:58", 8.60702, -44.77792], ["2019-08-03T04:10:26", 8.61506, -44.77475], ["2019-08-03T05:10:26", 8.62081, -44.77243], ["2019-08-03T06:08:56", 8.62721, -44.77015], ["2019-08-03T07:08:56", 8.63516, -44.76723], ["2019-08-03T08:08:56", 8.64413, -44.7644], ["2019-08-03T09:08:26", 8.65391, -44.76141], ["2019-08-03T10:07:57", 8.66351, -44.75909], ["2019-08-03T11:07:37", 8.67266, -44.75571], ["2019-08-03T12:07:25", 8.68551, -44.75262], ["2019-08-03T13:06:55", 8.70016, -44.74841], ["2019-08-03T14:06:26", 8.71094, -44.74323], ["2019-08-03T15:05:54", 8.71796, -44.73807], ["2019-08-03T16:04:56", 8.72275, -44.73542], ["2019-08-03T17:04:56", 8.72859, -44.73413], ["2019-08-03T18:03:56", 8.73498, -44.73346], ["2019-08-03T19:03:56", 8.74343, -44.73209], ["2019-08-03T20:03:38", 8.75155, -44.72995], ["2019-08-03T21:02:59", 8.75838, -44.72612], ["2019-08-03T22:02:59", 8.76417, -44.72372], ["2019-08-03T23:01:58", 8.7738, -44.72141], ["2019-08-04T00:01:58", 8.78115, -44.71729], ["2019-08-04T01:01:08", 8.78669, -44.71325], ["2019-08-04T02:01:08", 8.79132, -44.70862], ["2019-08-04T04:02:28", 8.79965, -44.69876], ["2019-08-04T05:02:28", 8.80082, -44.6937], ["2019-08-04T06:01:29", 8.80134, -44.68978], ["2019-08-04T07:01:29", 8.79932, -44.68497], ["2019-08-04T08:00:58", 8.79601, -44.68152], ["2019-08-04T09:00:24", 8.79135, -44.68039], ["2019-08-04T10:00:24", 8.78776, -44.68039], ["2019-08-04T11:58:24", 8.78069, -44.68017], ["2019-08-04T12:58:24", 8.77781, -44.68257], ["2019-08-04T13:58:24", 8.77468, -44.68463], ["2019-08-04T14:57:55", 8.77079, -44.68311], ["2019-08-04T15:57:24", 8.7692, -44.67679], ["2019-08-04T17:55:24", 8.76703, -44.66775], ["2019-08-04T18:55:54", 8.76229, -44.66711], ["2019-08-04T19:55:24", 8.75522, -44.67084], ["2019-08-04T20:54:56", 8.75254, -44.67551], ["2019-08-04T21:54:40", 8.75097, -44.68048], ["2019-08-04T22:53:57", 8.74531, -44.68635], ["2019-08-04T23:53:57", 8.74217, -44.68832], ["2019-08-05T00:52:27", 8.74215, -44.68834], ["2019-08-05T01:52:27", 8.73823, -44.69855], ["2019-08-05T02:51:57", 8.73457, -44.70804], ["2019-08-05T03:50:28", 8.73413, -44.71672], ["2019-08-05T04:50:28", 8.73396, -44.72419], ["2019-08-05T05:50:28", 8.73379, -44.73303], ["2019-08-05T06:49:36", 8.73342, -44.74171], ["2019-08-05T07:49:36", 8.73501, -44.74866], ["2019-08-05T08:49:07", 8.73884, -44.75677], ["2019-08-05T09:48:28", 8.74306, -44.7652], ["2019-08-05T10:47:27", 8.74318, -44.77225], ["2019-08-05T11:47:27", 8.74283, -44.78109], ["2019-08-05T12:47:27", 8.74602, -44.79062], ["2019-08-05T13:46:23", 8.74874, -44.80034], ["2019-08-05T14:46:23", 8.75259, -44.81004], ["2019-08-05T15:46:23", 8.76019, -44.81931], ["2019-08-05T19:40:26", 8.77802, -44.8494], ["2019-08-05T21:38:29", 8.78714, -44.86665], ["2019-08-05T22:38:29", 8.79388, -44.87601], ["2019-08-05T23:38:29", 8.80275, -44.88425], ["2019-08-06T00:37:56", 8.81522, -44.89133], ["2019-08-06T01:37:38", 8.82954, -44.89813], ["2019-08-06T04:35:37", 8.86328, -44.90322], ["2019-08-06T05:35:37", 8.87318, -44.90425], ["2019-08-06T06:35:37", 8.88164, -44.90665], ["2019-08-06T07:35:27", 8.89282, -44.90933], ["2019-08-06T08:34:57", 8.90424, -44.90952], ["2019-08-06T09:34:25", 8.91464, -44.90725], ["2019-08-06T10:34:25", 8.92048, -44.90442], ["2019-08-06T11:32:56", 8.92947, -44.90322], ["2019-08-06T12:32:56", 8.93715, -44.90408], ["2019-08-06T13:32:56", 8.94375, -44.90897], ["2019-08-06T14:31:39", 8.95228, -44.91441], ["2019-08-06T15:31:39", 8.96155, -44.91904], ["2019-08-06T16:31:28", 8.96988, -44.92322], ["2019-08-06T17:29:57", 8.98049, -44.92929], ["2019-08-06T18:29:57", 8.99243, -44.93693], ["2019-08-06T19:29:57", 9.00672, -44.94165], ["2019-08-06T20:29:37", 9.01814, -44.94357], ["2019-08-06T21:28:57", 9.02643, -44.94492], ["2019-08-06T22:28:28", 9.0337, -44.94742], ["2019-08-06T23:28:04", 9.04182, -44.95001], ["2019-08-07T00:27:26", 9.05095, -44.95276], ["2019-08-07T01:26:57", 9.06245, -44.95288], ["2019-08-07T02:26:27", 9.0726, -44.95535], ["2019-08-07T03:26:26", 9.08055, -44.95657], ["2019-08-07T04:25:58", 9.08731, -44.95786], ["2019-08-07T05:25:25", 9.09301, -44.95892], ["2019-08-07T06:24:57", 9.09727, -44.95871], ["2019-08-07T08:24:08", 9.10434, -44.95697], ["2019-08-07T09:22:54", 9.10721, -44.95457], ["2019-08-07T10:22:54", 9.10807, -44.95337], ["2019-08-07T11:22:28", 9.10703, -44.95413], ["2019-08-07T12:21:27", 9.10506, -44.95636], ["2019-08-07T13:21:27", 9.10279, -44.95825], ["2019-08-07T14:19:54", 9.10294, -44.96155], ["2019-08-07T15:19:54", 9.09882, -44.9637], ["2019-08-07T16:19:54", 9.09423, -44.96619], ["2019-08-07T17:19:27", 9.08858, -44.96945], ["2019-08-07T18:18:07", 9.08807, -44.97221], ["2019-08-07T19:18:07", 9.08331, -44.9729], ["2019-08-07T20:18:07", 9.07438, -44.97281], ["2019-08-07T21:17:56", 9.06387, -44.97607], ["2019-08-07T23:16:38", 9.04172, -44.98975], ["2019-08-08T00:16:38", 9.03194, -44.9985], ["2019-08-08T01:16:38", 9.0219, -45.00562], ["2019-08-08T02:16:11", 9.00895, -45.01462], ["2019-08-08T03:16:00", 8.99566, -45.02457], ["2019-08-08T04:15:08", 8.98473, -45.03788], ["2019-08-08T05:15:08", 8.97743, -45.05084], ["2019-08-08T06:14:27", 8.97067, -45.06609], ["2019-08-08T07:14:27", 8.96651, -45.0842], ["2019-08-08T08:13:58", 8.96228, -45.09985], ["2019-08-08T09:12:58", 8.95879, -45.11679], ["2019-08-08T10:12:58", 8.95393, -45.13533], ["2019-08-08T11:12:58", 8.94806, -45.15335], ["2019-08-08T12:12:26", 8.94078, -45.17154], ["2019-08-08T13:12:06", 8.93333, -45.18881], ["2019-08-08T14:10:56", 8.92872, -45.20622], ["2019-08-08T15:10:56", 8.92692, -45.22433], ["2019-08-08T16:10:56", 8.92498, -45.24493], ["2019-08-08T17:10:26", 8.92292, -45.26767], ["2019-08-08T18:09:57", 8.92355, -45.29111], ["2019-08-08T19:09:24", 8.92941, -45.31027], ["2019-08-08T20:07:58", 8.93801, -45.32681], ["2019-08-08T21:07:58", 8.94363, -45.34123], ["2019-08-08T22:07:58", 8.94951, -45.3541], ["2019-08-08T23:07:30", 8.95442, -45.36563], ["2019-08-09T00:06:58", 8.95756, -45.37573], ["2019-08-09T01:06:25", 8.95914, -45.38602], ["2019-08-09T02:06:25", 8.96158, -45.39786], ["2019-08-09T03:06:08", 8.96486, -45.40927], ["2019-08-09T04:05:36", 8.97052, -45.41776], ["2019-08-09T05:04:27", 8.97122, -45.42683], ["2019-08-09T06:04:27", 8.96972, -45.43859], ["2019-08-09T07:04:27", 8.97062, -45.44983], ["2019-08-09T08:03:58", 8.97503, -45.45859], ["2019-08-09T09:03:25", 8.98465, -45.46448], ["2019-08-09T10:02:06", 8.99358, -45.46746], ["2019-08-09T11:02:06", 9.0013, -45.47321], ["2019-08-09T12:01:36", 9.00765, -45.47937], ["2019-08-09T13:01:26", 9.01394, -45.48706], ["2019-08-09T14:00:56", 9.01638, -45.49518], ["2019-08-09T15:00:56", 9.01983, -45.50134], ["2019-08-09T15:59:55", 9.02, -45.50555], ["2019-08-09T16:59:26", 9.01704, -45.51245], ["2019-08-09T17:58:55", 9.0149, -45.51907], ["2019-08-09T18:58:26", 9.01216, -45.52786], ["2019-08-09T22:57:27", 9.03416, -45.55167], ["2019-08-09T23:56:28", 9.04364, -45.55505], ["2019-08-10T00:55:57", 9.05003, -45.55896], ["2019-08-10T01:54:29", 9.05602, -45.56344], ["2019-08-10T02:54:29", 9.06151, -45.5661], ["2019-08-10T03:54:29", 9.06579, -45.56833], ["2019-08-10T04:53:27", 9.07119, -45.57046], ["2019-08-10T05:53:27", 9.07797, -45.572], ["2019-08-10T06:53:27", 9.08501, -45.5726], ["2019-08-10T07:56:28", 9.09043, -45.57233], ["2019-08-10T08:55:26", 9.09455, -45.57184], ["2019-08-10T09:54:55", 9.09744, -45.5672], ["2019-08-10T10:54:07", 9.10464, -45.56241], ["2019-08-10T11:54:07", 9.11156, -45.55606], ["2019-08-10T12:53:36", 9.11511, -45.55133], ["2019-08-10T13:53:28", 9.11581, -45.55081], ["2019-08-10T14:52:56", 9.11576, -45.55148], ["2019-08-10T19:50:56", 9.11374, -45.56097], ["2019-08-10T20:50:26", 9.11176, -45.56192], ["2019-08-10T21:49:56", 9.10768, -45.5607], ["2019-08-11T00:32:58", 9.09657, -45.55377], ["2019-08-11T01:32:26", 9.09404, -45.55164], ["2019-08-11T06:17:58", 9.06137, -45.55469], ["2019-08-11T08:16:58", 9.04508, -45.55453], ["2019-08-11T09:16:56", 9.03609, -45.55548], ["2019-08-11T10:15:38", 9.02453, -45.55515], ["2019-08-11T11:15:38", 9.0138, -45.55549], ["2019-08-11T12:15:38", 9.00093, -45.55652], ["2019-08-11T13:14:55", 8.98565, -45.56042], ["2019-08-11T14:14:55", 8.97167, -45.56656], ["2019-08-11T15:14:25", 8.95759, -45.57471], ["2019-08-11T16:14:26", 8.9427, -45.58356], ["2019-08-11T17:12:53", 8.92718, -45.58932], ["2019-08-11T18:12:53", 8.91156, -45.59464], ["2019-08-11T19:12:53", 8.89057, -45.60013], ["2019-08-11T20:11:30", 8.86729, -45.60668], ["2019-08-11T21:11:30", 8.84575, -45.61707], ["2019-08-11T22:10:58", 8.82475, -45.62863], ["2019-08-11T23:10:29", 8.80547, -45.64194], ["2019-08-12T00:09:58", 8.79076, -45.65805], ["2019-08-12T01:08:55", 8.77758, -45.67353], ["2019-08-12T02:09:27", 8.76582, -45.69296], ["2019-08-12T03:08:55", 8.75719, -45.71481], ["2019-08-12T04:08:26", 8.75217, -45.7384], ["2019-08-12T05:07:59", 8.7489, -45.76302], ["2019-08-12T06:07:59", 8.7462, -45.78448], ["2019-08-12T07:07:29", 8.74527, -45.80408], ["2019-08-12T08:07:28", 8.74211, -45.82224], ["2019-08-12T09:06:57", 8.73901, -45.83978], ["2019-08-12T10:05:54", 8.73565, -45.8555], ["2019-08-12T11:04:27", 8.73208, -45.87096], ["2019-08-12T12:04:55", 8.73156, -45.88492], ["2019-08-12T13:04:27", 8.73218, -45.89954], ["2019-08-12T14:03:56", 8.7356, -45.91565], ["2019-08-12T15:03:28", 8.73983, -45.93091], ["2019-08-12T16:02:55", 8.74376, -45.94687], ["2019-08-12T17:02:08", 8.74804, -45.96258], ["2019-08-12T18:02:08", 8.75259, -45.9794], ["2019-08-12T19:01:39", 8.75784, -45.99814], ["2019-08-12T20:01:25", 8.76238, -46.0141], ["2019-08-12T21:00:56", 8.77452, -46.0307], ["2019-08-12T22:00:28", 8.78762, -46.04611], ["2019-08-12T22:58:56", 8.79912, -46.05697], ["2019-08-12T23:58:56", 8.81229, -46.06675], ["2019-08-13T00:58:56", 8.82431, -46.0755], ["2019-08-13T01:58:39", 8.83746, -46.08337], ["2019-08-13T02:58:29", 8.851, -46.0889], ["2019-08-13T03:58:01", 8.86201, -46.09042], ["2019-08-13T04:57:26", 8.87449, -46.09143], ["2019-08-13T08:55:58", 8.90427, -46.0997], ["2019-08-13T09:55:27", 8.91011, -46.09814], ["2019-08-13T10:55:25", 8.91657, -46.09381], ["2019-08-13T11:53:57", 8.92796, -46.09309], ["2019-08-13T12:53:57", 8.94164, -46.09009], ["2019-08-13T13:53:28", 8.95478, -46.0861], ["2019-08-13T14:53:28", 8.96826, -46.08292], ["2019-08-13T15:53:24", 8.97823, -46.07758], ["2019-08-13T16:52:37", 8.98391, -46.07172], ["2019-08-13T17:52:26", 8.98712, -46.06577], ["2019-08-13T18:51:56", 8.98893, -46.06024], ["2019-08-13T19:51:56", 8.98523, -46.05148], ["2019-08-13T21:50:38", 8.98091, -46.03006], ["2019-08-13T22:49:31", 8.98147, -46.02576], ["2019-08-13T23:49:31", 8.98071, -46.0231], ["2019-08-14T00:48:26", 8.9826, -46.01962], ["2019-08-14T01:47:56", 8.98663, -46.01486], ["2019-08-14T02:47:08", 8.98825, -46.01065], ["2019-08-14T03:47:08", 8.98722, -46.00464], ["2019-08-14T04:46:29", 8.98258, -45.99824], ["2019-08-14T05:46:29", 8.97606, -45.99017], ["2019-08-14T06:45:57", 8.97279, -45.98242], ["2019-08-14T07:44:54", 8.96995, -45.97577], ["2019-08-14T08:44:25", 8.96611, -45.96942], ["2019-08-14T09:43:56", 8.96085, -45.9646], ["2019-08-14T10:43:55", 8.95384, -45.96097], ["2019-08-14T12:41:58", 8.94154, -45.95617], ["2019-08-14T13:41:58", 8.93486, -45.95274], ["2019-08-14T14:41:58", 8.93014, -45.95059], ["2019-08-14T15:41:39", 8.92706, -45.95004], ["2019-08-14T16:40:56", 8.92019, -45.94992], ["2019-08-14T17:40:25", 8.91268, -45.94702], ["2019-08-14T19:39:04", 8.8915, -45.9449], ["2019-08-14T20:39:04", 8.87935, -45.94456], ["2019-08-14T21:39:04", 8.86875, -45.94696], ["2019-08-14T22:38:02", 8.8567, -45.95025], ["2019-08-14T23:38:02", 8.8452, -45.95334], ["2019-08-15T00:38:02", 8.83494, -45.95935], ["2019-08-15T01:37:38", 8.82408, -45.96497], ["2019-08-15T02:37:26", 8.81429, -45.97275], ["2019-08-15T03:36:28", 8.80705, -45.98147], ["2019-08-15T04:36:28", 8.79945, -45.98782], ["2019-08-15T05:35:58", 8.79362, -45.9924], ["2019-08-15T06:35:27", 8.78977, -45.9971], ["2019-08-15T07:34:58", 8.78594, -46.00348], ["2019-08-15T08:34:29", 8.78126, -46.00854], ["2019-08-15T09:34:27", 8.77547, -46.01447], ["2019-08-15T10:33:56", 8.77169, -46.02143], ["2019-08-15T11:33:56", 8.7699, -46.02701], ["2019-08-15T12:32:56", 8.76872, -46.03174], ["2019-08-15T13:31:53", 8.76837, -46.03854], ["2019-08-15T14:31:53", 8.77064, -46.04772], ["2019-08-15T15:31:53", 8.77506, -46.05502], ["2019-08-15T16:31:24", 8.78238, -46.06317], ["2019-08-15T17:30:37", 8.79125, -46.07147], ["2019-08-15T18:29:28", 8.79936, -46.07739], ["2019-08-15T19:29:28", 8.80605, -46.08443], ["2019-08-15T20:29:28", 8.81094, -46.09061], ["2019-08-15T21:29:27", 8.81642, -46.09619], ["2019-08-15T22:28:28", 8.82203, -46.10181], ["2019-08-15T23:27:26", 8.82844, -46.10793], ["2019-08-16T00:27:26", 8.83385, -46.11377], ["2019-08-16T01:26:26", 8.84008, -46.11839], ["2019-08-16T02:26:26", 8.84909, -46.12277], ["2019-08-16T03:26:28", 8.85685, -46.12576], ["2019-08-16T04:25:20", 8.8678, -46.12844], ["2019-08-16T05:25:20", 8.88312, -46.13187], ["2019-08-16T07:26:26", 8.91291, -46.13184], ["2019-08-16T09:22:42", 8.9418, -46.13065], ["2019-08-16T10:22:42", 8.95425, -46.12799], ["2019-08-16T11:22:42", 8.96557, -46.12567], ["2019-08-16T12:22:35", 8.97791, -46.12314], ["2019-08-16T13:22:06", 8.98905, -46.11703], ["2019-08-16T14:21:58", 8.9977, -46.10947], ["2019-08-16T15:21:27", 9.00719, -46.10132], ["2019-08-16T16:20:56", 9.01688, -46.09168], ["2019-08-16T17:20:56", 9.02877, -46.0849], ["2019-08-16T18:20:27", 9.04025, -46.08017], ["2019-08-16T19:19:57", 9.05208, -46.07614], ["2019-08-16T20:19:06", 9.06387, -46.06827], ["2019-08-16T21:18:40", 9.07264, -46.05859], ["2019-08-16T22:18:07", 9.0787, -46.04831], ["2019-08-16T23:17:29", 9.07591, -46.03854], ["2019-08-17T00:16:58", 9.0718, -46.02884], ["2019-08-17T01:16:28", 9.06783, -46.0191], ["2019-08-17T02:16:27", 9.06636, -46.01089], ["2019-08-17T03:15:56", 9.06645, -46.00317], ["2019-08-17T04:15:27", 9.065, -45.99457], ["2019-08-17T05:15:09", 9.0639, -45.98654], ["2019-08-17T06:14:27", 9.06413, -45.97922], ["2019-08-17T07:13:29", 9.06237, -45.97095], ["2019-08-17T08:13:29", 9.05962, -45.95953], ["2019-08-17T09:13:08", 9.05448, -45.94867], ["2019-08-17T10:12:06", 9.04865, -45.93947], ["2019-08-17T11:12:06", 9.04221, -45.93011], ["2019-08-17T12:11:56", 9.03368, -45.92075], ["2019-08-17T13:11:24", 9.0218, -45.91125], ["2019-08-17T15:09:27", 8.9989, -45.90206], ["2019-08-17T16:09:27", 8.9892, -45.90043], ["2019-08-17T17:09:27", 8.97873, -45.89734], ["2019-08-17T18:09:08", 8.96838, -45.89285], ["2019-08-17T19:08:36", 8.95594, -45.88828], ["2019-08-17T20:08:07", 8.94089, -45.88589], ["2019-08-17T21:06:27", 8.92484, -45.88426], ["2019-08-17T22:06:27", 8.90837, -45.88134], ["2019-08-17T23:06:27", 8.89283, -45.88074], ["2019-08-18T00:06:24", 8.87762, -45.88309], ["2019-08-18T01:05:56", 8.86246, -45.88641], ["2019-08-18T02:05:26", 8.8514, -45.89285], ["2019-08-18T03:04:55", 8.8423, -45.90265], ["2019-08-18T04:04:56", 8.83001, -45.9129], ["2019-08-18T05:04:26", 8.81551, -45.92657], ["2019-08-18T06:02:28", 8.8003, -45.94136], ["2019-08-18T07:02:56", 8.78534, -45.95557], ["2019-08-18T08:02:28", 8.77223, -45.96814], ["2019-08-18T09:02:08", 8.76737, -45.98019], ["2019-08-18T10:01:25", 8.7599, -45.99184], ["2019-08-18T11:01:25", 8.75089, -46.00497], ["2019-08-18T12:00:38", 8.74094, -46.01917], ["2019-08-18T12:59:56", 8.73185, -46.03488], ["2019-08-18T13:59:26", 8.72322, -46.04996], ["2019-08-18T14:58:56", 8.71688, -46.06664], ["2019-08-18T15:58:56", 8.71366, -46.08398], ["2019-08-18T16:58:25", 8.71151, -46.1004], ["2019-08-18T17:57:56", 8.7097, -46.11646], ["2019-08-18T18:57:26", 8.70675, -46.13351], ["2019-08-18T21:56:24", 8.69773, -46.18011], ["2019-08-19T03:01:29", 8.72244, -46.25729], ["2019-08-19T04:00:37", 8.72882, -46.26779], ["2019-08-19T05:00:27", 8.73515, -46.27744], ["2019-08-19T05:59:57", 8.74286, -46.28769], ["2019-08-19T06:59:27", 8.7486, -46.29623], ["2019-08-19T10:57:28", 8.77427, -46.31757], ["2019-08-19T11:56:58", 8.78651, -46.32251], ["2019-08-19T12:55:56", 8.79762, -46.32251], ["2019-08-19T13:55:56", 8.80993, -46.31976], ["2019-08-19T14:55:53", 8.82567, -46.31436], ["2019-08-19T15:55:05", 8.84167, -46.30737], ["2019-08-19T16:54:25", 8.85798, -46.29785], ["2019-08-19T17:53:58", 8.87434, -46.28564], ["2019-08-19T18:53:26", 8.88906, -46.27258], ["2019-08-19T19:52:38", 8.90471, -46.26067], ["2019-08-19T20:52:38", 8.91621, -46.24805], ["2019-08-19T21:52:08", 8.92713, -46.23679], ["2019-08-19T22:50:57", 8.93683, -46.2245], ["2019-08-19T23:50:57", 8.94468, -46.21085], ["2019-08-20T00:50:57", 8.95257, -46.1972], ["2019-08-20T01:50:37", 8.95825, -46.18311], ["2019-08-20T02:50:08", 8.96405, -46.16895], ["2019-08-20T03:49:58", 8.97084, -46.15369], ["2019-08-20T04:48:55", 8.97583, -46.13926], ["2019-08-20T05:48:55", 8.97772, -46.12347], ["2019-08-20T06:48:36", 8.97668, -46.10675], ["2019-08-20T07:47:39", 8.97929, -46.09097], ["2019-08-20T08:47:39", 8.98126, -46.07458], ["2019-08-20T09:47:27", 8.98029, -46.05884], ["2019-08-20T10:46:56", 8.97451, -46.04227], ["2019-08-20T11:46:27", 8.96866, -46.0256], ["2019-08-20T12:45:57", 8.9635, -46.01044], ["2019-08-20T13:45:26", 8.9566, -45.99582]], "drifter_13": [["2019-07-30T17:09:00", 8.367, -45.081], ["2019-07-30T17:20:39", 8.35984, -45.06042], ["2019-07-30T18:20:39", 8.36143, -45.04102], ["2019-08-02T08:44:29", 8.44994, -44.93231], ["2019-08-02T09:43:57", 8.46372, -44.92496], ["2019-08-02T10:43:57", 8.47845, -44.91812], ["2019-08-02T11:43:07", 8.49286, -44.91121], ["2019-08-02T12:43:07", 8.50505, -44.90469], ["2019-08-03T19:51:00", 8.81349, -44.72992], ["2019-08-03T20:50:56", 8.81396, -44.73038], ["2019-08-03T21:50:25", 8.8141, -44.73038], ["2019-08-03T22:50:01", 8.81429, -44.7308], ["2019-08-03T23:49:59", 8.81891, -44.73254], ["2019-08-04T00:49:29", 8.82147, -44.73346], ["2019-08-04T01:48:58", 8.82198, -44.73471], ["2019-08-04T02:48:59", 8.82293, -44.73599], ["2019-08-04T03:48:24", 8.82258, -44.73693], ["2019-08-04T04:48:24", 8.82065, -44.73599], ["2019-08-04T05:47:57", 8.81556, -44.73419], ["2019-08-04T06:47:55", 8.81007, -44.73337], ["2019-08-04T07:47:26", 8.80409, -44.73343], ["2019-08-04T08:47:27", 8.79823, -44.73529], ["2019-08-04T09:46:27", 8.79157, -44.73768], ["2019-08-04T10:46:27", 8.78303, -44.7406], ["2019-08-04T11:46:27", 8.77621, -44.74429], ["2019-08-04T12:45:57", 8.77096, -44.74908], ["2019-08-04T14:45:27", 8.75791, -44.75428], ["2019-08-04T15:45:27", 8.75301, -44.75342], ["2019-08-04T16:45:27", 8.74963, -44.75308], ["2019-08-04T17:44:54", 8.74766, -44.75385], ["2019-08-04T18:44:25", 8.74548, -44.75641], ["2019-08-04T19:43:25", 8.74208, -44.76071], ["2019-08-04T20:43:25", 8.74066, -44.76698], ["2019-08-04T21:43:25", 8.74169, -44.77136], ["2019-08-04T22:43:28", 8.74386, -44.77301], ["2019-08-04T23:43:00", 8.74098, -44.77383], ["2019-08-05T00:42:27", 8.73926, -44.77331], ["2019-08-05T01:42:27", 8.73837, -44.7746], ["2019-08-05T02:41:57", 8.73452, -44.78214], ["2019-08-05T03:41:26", 8.73326, -44.78949], ["2019-08-05T04:40:58", 8.73293, -44.79651], ["2019-08-05T06:40:09", 8.73418, -44.8106], ["2019-08-05T07:40:09", 8.73474, -44.81678], ["2019-08-05T08:40:09", 8.73667, -44.82184], ["2019-08-05T09:39:56", 8.74001, -44.82581], ["2019-08-05T10:39:27", 8.74067, -44.82932]], "drifter_14": [["2019-08-04T10:48:00", 8.41891, -49.72757], ["2019-08-04T11:10:04", 8.41549, -49.7254], ["2019-08-04T11:40:04", 8.41347, -49.7236], ["2019-08-04T12:11:01", 8.4125, -49.72134], ["2019-08-04T13:11:56", 8.40671, -49.71664], ["2019-08-04T14:39:27", 8.39966, -49.71111], ["2019-08-04T15:09:00", 8.39554, -49.70941], ["2019-08-04T15:39:27", 8.38941, -49.70767], ["2019-08-04T16:38:56", 8.37954, -49.70749], ["2019-08-04T18:08:08", 8.35919, -49.7099], ["2019-08-04T18:37:54", 8.34838, -49.71108], ["2019-08-04T19:07:54", 8.33691, -49.71194], ["2019-08-04T20:07:18", 8.3101, -49.71449], ["2019-08-04T20:37:18", 8.30868, -49.71466], ["2019-08-04T21:07:18", 8.30336, -49.71509], ["2019-08-05T03:05:21", 8.24859, -49.74249], ["2019-08-05T03:35:07", 8.24451, -49.75087], ["2019-08-05T04:05:07", 8.23983, -49.75928], ["2019-08-05T04:34:55", 8.23438, -49.76833], ["2019-08-05T05:04:55", 8.23014, -49.77588], ["2019-08-05T05:37:01", 8.22627, -49.78259], ["2019-08-05T06:34:30", 8.22095, -49.79508], ["2019-08-05T07:07:00", 8.21724, -49.80133], ["2019-08-05T07:34:30", 8.2131, -49.80676], ["2019-08-05T09:05:55", 8.20233, -49.81903], ["2019-08-05T14:02:22", 8.22261, -49.86066], ["2019-08-05T14:33:13", 8.22542, -49.86832], ["2019-08-05T15:02:02", 8.23, -49.87503], ["2019-08-05T15:32:56", 8.23522, -49.88129], ["2019-08-05T16:32:58", 8.24573, -49.88899], ["2019-08-05T17:02:58", 8.25221, -49.89088], ["2019-08-05T17:32:58", 8.2592, -49.89328], ["2019-08-05T18:00:51", 8.26415, -49.89505], ["2019-08-05T18:30:51", 8.26754, -49.89642], ["2019-08-05T20:00:57", 8.27514, -49.90189], ["2019-08-05T20:45:31", 8.28013, -49.90057], ["2019-08-05T21:00:56", 8.28228, -49.9], ["2019-08-05T21:30:56", 8.28627, -49.89974], ["2019-08-05T22:00:56", 8.28979, -49.89948], ["2019-08-05T23:01:42", 8.29687, -49.89993], ["2019-08-06T00:31:26", 8.30392, -49.89908], ["2019-08-06T01:29:04", 8.3094, -49.89828], ["2019-08-06T01:29:59", 8.31048, -49.89954], ["2019-08-06T02:29:59", 8.31323, -49.89911], ["2019-08-06T02:58:32", 8.31349, -49.89929], ["2019-08-06T03:29:58", 8.31417, -49.89993], ["2019-08-06T04:28:45", 8.31685, -49.89997], ["2019-08-06T04:58:10", 8.31765, -49.9006], ["2019-08-06T05:28:45", 8.31844, -49.90143], ["2019-08-06T05:57:38", 8.31812, -49.90005], ["2019-08-06T06:28:41", 8.31695, -49.89767], ["2019-08-06T07:57:14", 8.31033, -49.88962], ["2019-08-06T09:58:58", 8.29416, -49.88327], ["2019-08-06T10:56:05", 8.29135, -49.88101], ["2019-08-06T14:27:11", 8.28522, -49.87775], ["2019-08-06T17:54:57", 8.29153, -49.88138], ["2019-08-06T19:23:22", 8.29702, -49.88005], ["2019-08-06T19:53:22", 8.29831, -49.87868], ["2019-08-06T20:23:22", 8.29908, -49.87671], ["2019-08-06T20:44:57", 8.29912, -49.87497], ["2019-08-06T20:52:52", 8.29895, -49.87415], ["2019-08-06T21:22:52", 8.29895, -49.87132], ["2019-08-06T21:52:52", 8.29879, -49.86926], ["2019-08-06T22:22:42", 8.29862, -49.86728], ["2019-08-07T00:22:10", 8.30348, -49.85873], ["2019-08-07T01:22:35", 8.31453, -49.85577], ["2019-08-07T02:23:25", 8.32586, -49.84979], ["2019-08-07T03:51:28", 8.34394, -49.84082], ["2019-08-07T05:20:59", 8.35952, -49.83353], ["2019-08-07T09:19:36", 8.37951, -49.82022], ["2019-08-07T10:50:22", 8.38167, -49.81134], ["2019-08-07T11:19:06", 8.38322, -49.80829], ["2019-08-07T12:48:34", 8.39179, -49.79808], ["2019-08-07T13:18:34", 8.39321, -49.79482], ["2019-08-07T13:48:34", 8.39457, -49.79156], ["2019-08-07T14:19:17", 8.39671, -49.78845], ["2019-08-07T14:49:17", 8.39842, -49.78622], ["2019-08-07T15:18:07", 8.39964, -49.78288], ["2019-08-07T15:48:07", 8.40085, -49.77825], ["2019-08-07T16:18:07", 8.40204, -49.77542], ["2019-08-07T16:50:44", 8.40368, -49.77161], ["2019-08-07T19:19:37", 8.39907, -49.75433], ["2019-08-07T19:49:37", 8.39525, -49.75098], ["2019-08-07T20:19:37", 8.39272, -49.74866], ["2019-08-07T22:46:30", 8.37947, -49.73943], ["2019-08-07T23:15:55", 8.3767, -49.73709], ["2019-08-07T23:46:30", 8.37312, -49.73514], ["2019-08-08T00:17:10", 8.36963, -49.73433], ["2019-08-08T00:47:10", 8.3652, -49.73193], ["2019-08-08T01:15:57", 8.36195, -49.72906], ["2019-08-08T01:45:57", 8.358, -49.72485], ["2019-08-08T02:15:05", 8.35457, -49.72095], ["2019-08-08T02:44:39", 8.35211, -49.71607], ["2019-08-08T03:14:39", 8.35105, -49.71255], ["2019-08-08T03:44:24", 8.35201, -49.70759], ["2019-08-08T04:14:24", 8.35398, -49.7027], ["2019-08-08T04:44:40", 8.35586, -49.69965], ["2019-08-08T05:14:11", 8.35652, -49.69504], ["2019-08-08T05:44:28", 8.35718, -49.69092], ["2019-08-08T06:14:28", 8.35787, -49.68747], ["2019-08-08T06:44:28", 8.35863, -49.68369], ["2019-08-08T07:13:39", 8.35796, -49.68024], ["2019-08-08T12:12:47", 8.27959, -49.66415], ["2019-08-08T15:43:25", 8.2218, -49.66949], ["2019-08-08T18:10:53", 8.16384, -49.70088], ["2019-08-08T18:40:53", 8.15062, -49.70929], ["2019-08-08T19:10:53", 8.13779, -49.71753], ["2019-08-08T19:42:27", 8.12346, -49.72656], ["2019-08-08T20:15:01", 8.10164, -49.73742], ["2019-08-08T20:45:01", 8.10096, -49.73776], ["2019-08-08T21:09:54", 8.09534, -49.74089], ["2019-08-08T21:39:54", 8.08907, -49.74544], ["2019-08-08T22:09:54", 8.08272, -49.74973], ["2019-08-08T22:40:26", 8.07535, -49.75476], ["2019-08-08T23:09:40", 8.0679, -49.75922], ["2019-08-09T01:38:32", 8.01943, -49.78603], ["2019-08-09T02:08:32", 8.01073, -49.79324], ["2019-08-09T02:38:32", 8.0027, -49.80011], ["2019-08-09T03:07:58", 7.99315, -49.80731], ["2019-08-09T03:37:58", 7.98624, -49.8134], ["2019-08-09T04:07:58", 7.98036, -49.82001], ["2019-08-09T04:38:30", 7.97615, -49.82556], ["2019-08-09T06:36:44", 7.96427, -49.84471], ["2019-08-09T07:06:44", 7.96114, -49.85012], ["2019-08-09T07:36:44", 7.95801, -49.85501], ["2019-08-09T08:07:28", 7.95363, -49.85989], ["2019-08-09T14:04:53", 7.93147, -49.90048], ["2019-08-09T15:04:40", 7.93185, -49.90341], ["2019-08-09T17:04:58", 7.93203, -49.8996], ["2019-08-09T20:45:04", 7.93904, -49.88895], ["2019-08-09T21:02:37", 7.93971, -49.88613], ["2019-08-09T21:32:37", 7.9419, -49.88132], ["2019-08-09T22:35:59", 7.9532, -49.87567], ["2019-08-10T00:02:56", 7.96877, -49.86764], ["2019-08-10T00:32:56", 7.97482, -49.86446], ["2019-08-10T01:02:56", 7.97933, -49.86017], ["2019-08-10T01:31:33", 7.98373, -49.85501], ["2019-08-10T02:01:11", 7.98897, -49.84865], ["2019-08-10T02:31:11", 7.99305, -49.84247], ["2019-08-10T03:01:25", 7.99618, -49.83581], ["2019-08-10T03:31:25", 7.99858, -49.83015], ["2019-08-10T04:01:25", 8.00226, -49.82346], ["2019-08-10T05:01:02", 8.00963, -49.809], ["2019-08-10T05:31:02", 8.01285, -49.80162], ["2019-08-10T06:01:02", 8.01706, -49.79398], ["2019-08-10T06:30:05", 8.01898, -49.78714], ["2019-08-10T07:29:51", 8.02211, -49.77176], ["2019-08-10T07:59:38", 8.02338, -49.76388], ["2019-08-10T08:29:38", 8.02532, -49.75693], ["2019-08-10T08:59:38", 8.02582, -49.74908], ["2019-08-10T09:29:38", 8.02549, -49.7417], ["2019-08-10T10:59:28", 8.02258, -49.71561], ["2019-08-10T11:28:45", 8.02264, -49.706], ["2019-08-10T11:59:31", 8.0226, -49.6962], ["2019-08-10T12:28:45", 8.02328, -49.68652], ["2019-08-10T12:59:26", 8.02426, -49.67688], ["2019-08-10T13:28:26", 8.02553, -49.66678], ["2019-08-10T15:58:57", 8.0279, -49.61847], ["2019-08-10T16:28:57", 8.02721, -49.60989], ["2019-08-10T16:58:57", 8.02524, -49.60114], ["2019-08-10T17:27:52", 8.02363, -49.59329], ["2019-08-10T17:59:29", 8.02255, -49.58496], ["2019-08-10T18:27:42", 8.02154, -49.57822], ["2019-08-10T19:57:28", 8.00974, -49.54382], ["2019-08-10T20:27:28", 8.00914, -49.54185], ["2019-08-10T20:57:28", 8.0078, -49.53799], ["2019-08-10T21:26:32", 8.0031, -49.52872], ["2019-08-10T22:27:09", 7.99381, -49.51001], ["2019-08-10T22:57:09", 7.9896, -49.50168], ["2019-08-10T23:27:09", 7.98475, -49.49344], ["2019-08-10T23:56:26", 7.97973, -49.4855], ["2019-08-11T00:26:26", 7.97411, -49.47769], ["2019-08-11T00:55:24", 7.9686, -49.47055], ["2019-08-11T02:54:32", 7.95674, -49.44124], ["2019-08-11T03:24:32", 7.95374, -49.43326], ["2019-08-11T03:54:32", 7.95044, -49.42682], ["2019-08-11T04:25:25", 7.94729, -49.41965], ["2019-08-11T04:55:07", 7.94497, -49.41301], ["2019-08-11T05:25:07", 7.94055, -49.40649], ["2019-08-11T06:53:29", 7.92428, -49.38924], ["2019-08-11T07:23:29", 7.91977, -49.38418], ["2019-08-11T07:53:29", 7.91561, -49.37946], ["2019-08-11T08:24:02", 7.91075, -49.37512], ["2019-08-11T08:53:05", 7.9061, -49.37152], ["2019-08-11T09:24:16", 7.90103, -49.36795], ["2019-08-11T09:54:13", 7.89643, -49.36466], ["2019-08-11T10:24:13", 7.89085, -49.36191], ["2019-08-11T10:52:23", 7.88528, -49.35959], ["2019-08-11T11:22:49", 7.87902, -49.35669], ["2019-08-11T11:52:02", 7.87279, -49.35272], ["2019-08-11T12:23:58", 7.86644, -49.34735], ["2019-08-11T12:51:36", 7.86093, -49.34369], ["2019-08-11T13:21:19", 7.85536, -49.34064], ["2019-08-11T14:51:13", 7.83682, -49.33215], ["2019-08-11T15:20:29", 7.83097, -49.32965], ["2019-08-11T15:53:30", 7.8243, -49.32599], ["2019-08-11T16:49:59", 7.8152, -49.3194], ["2019-08-11T17:22:58", 7.81161, -49.3168], ["2019-08-11T19:19:25", 7.80364, -49.31024], ["2019-08-11T19:50:30", 7.80247, -49.30914], ["2019-08-11T20:19:16", 7.80201, -49.30841], ["2019-08-11T21:18:44", 7.80193, -49.30741], ["2019-08-11T21:48:44", 7.80193, -49.30681], ["2019-08-11T22:18:44", 7.80214, -49.30518], ["2019-08-11T22:49:06", 7.80126, -49.30328], ["2019-08-11T23:18:26", 7.8016, -49.30231], ["2019-08-11T23:49:58", 7.80217, -49.3013], ["2019-08-12T01:17:50", 7.79808, -49.297], ["2019-08-12T03:17:01", 7.79571, -49.28743], ["2019-08-12T03:47:01", 7.79571, -49.28228], ["2019-08-12T04:17:01", 7.79562, -49.27704], ["2019-08-12T04:46:53", 7.79663, -49.27255], ["2019-08-12T05:49:16", 7.79909, -49.26431], ["2019-08-12T06:46:18", 7.79975, -49.25729], ["2019-08-12T09:45:19", 7.81323, -49.24091], ["2019-08-12T12:46:29", 7.82589, -49.23938], ["2019-08-12T13:14:39", 7.82662, -49.24072], ["2019-08-12T15:15:57", 7.8349, -49.24326], ["2019-08-12T17:43:13", 7.8618, -49.23986], ["2019-08-12T18:13:13", 7.86983, -49.239], ["2019-08-12T18:43:13", 7.8776, -49.23849], ["2019-08-12T19:42:58", 7.89649, -49.23447], ["2019-08-12T20:42:49", 7.91654, -49.22723], ["2019-08-12T22:13:37", 7.94448, -49.21652], ["2019-08-12T23:43:07", 7.97128, -49.20892], ["2019-08-13T00:13:07", 7.97969, -49.20635], ["2019-08-13T00:43:07", 7.98853, -49.20352], ["2019-08-13T01:43:30", 8.00487, -49.1972], ["2019-08-13T02:11:20", 8.0121, -49.19379], ["2019-08-13T06:41:30", 8.06727, -49.1481], ["2019-08-13T07:09:46", 8.07182, -49.14209], ["2019-08-13T08:09:25", 8.08311, -49.13129], ["2019-08-13T10:38:53", 8.12512, -49.10452], ["2019-08-13T11:10:00", 8.13301, -49.09755], ["2019-08-13T11:38:36", 8.1401, -49.09088], ["2019-08-13T12:10:00", 8.14652, -49.08356], ["2019-08-13T13:10:05", 8.1584, -49.06735], ["2019-08-13T13:38:14", 8.16329, -49.05821], ["2019-08-13T14:08:14", 8.16865, -49.048], ["2019-08-13T14:38:44", 8.17348, -49.03723], ["2019-08-13T15:38:00", 8.18154, -49.01446], ["2019-08-13T16:08:00", 8.18463, -49.00476], ["2019-08-13T16:38:00", 8.18793, -48.99515], ["2019-08-13T17:07:59", 8.19049, -48.98625], ["2019-08-13T17:37:59", 8.19234, -48.97784], ["2019-08-13T18:06:55", 8.19389, -48.97052], ["2019-08-13T19:44:36", 8.19594, -48.94463], ["2019-08-13T20:14:36", 8.19379, -48.93871], ["2019-08-13T20:44:36", 8.1934, -48.93759], ["2019-08-13T21:05:56", 8.19234, -48.93356], ["2019-08-13T21:35:56", 8.19102, -48.92807], ["2019-08-13T23:05:23", 8.19093, -48.91096], ["2019-08-13T23:35:23", 8.19295, -48.90495], ["2019-08-14T00:05:23", 8.19373, -48.89929], ["2019-08-14T01:34:37", 8.19828, -48.88653], ["2019-08-14T02:04:37", 8.20124, -48.88378], ["2019-08-14T02:34:37", 8.20295, -48.88086], ["2019-08-14T04:04:00", 8.20731, -48.86731], ["2019-08-14T04:34:00", 8.20667, -48.86276], ["2019-08-14T05:04:00", 8.20551, -48.85898], ["2019-08-14T05:35:28", 8.20395, -48.85416], ["2019-08-14T07:33:00", 8.19701, -48.83675], ["2019-08-14T08:03:00", 8.19598, -48.83237], ["2019-08-14T08:33:00", 8.19482, -48.82791], ["2019-08-14T09:02:58", 8.19436, -48.82336], ["2019-08-14T09:33:29", 8.19396, -48.81943], ["2019-08-14T10:32:30", 8.1907, -48.81312], ["2019-08-14T11:02:30", 8.18886, -48.81072], ["2019-08-14T11:32:30", 8.18684, -48.80789], ["2019-08-14T12:02:02", 8.18542, -48.80515], ["2019-08-14T12:32:23", 8.18392, -48.80252], ["2019-08-14T13:01:59", 8.18275, -48.80016], ["2019-08-14T13:31:59", 8.18069, -48.79733], ["2019-08-14T14:01:36", 8.17793, -48.79597], ["2019-08-14T14:31:36", 8.17423, -48.7946], ["2019-08-14T15:01:36", 8.17089, -48.7934], ["2019-08-14T15:31:00", 8.16722, -48.79261], ["2019-08-14T16:01:00", 8.16339, -48.79175], ["2019-08-14T16:30:54", 8.15975, -48.78999], ["2019-08-14T17:00:44", 8.15738, -48.78821], ["2019-08-14T17:30:54", 8.1537, -48.7869], ["2019-08-14T18:30:55", 8.14532, -48.78455], ["2019-08-14T19:00:25", 8.14119, -48.78461], ["2019-08-14T19:30:25", 8.1363, -48.78461], ["2019-08-14T19:59:45", 8.13044, -48.7847], ["2019-08-14T20:15:28", 8.12335, -48.78502], ["2019-08-14T20:45:28", 8.12215, -48.78519], ["2019-08-14T20:59:17", 8.11996, -48.78555], ["2019-08-14T21:29:26", 8.11527, -48.78662], ["2019-08-14T21:59:07", 8.11205, -48.78793], ["2019-08-14T22:29:06", 8.10896, -48.7891], ["2019-08-14T22:59:06", 8.106, -48.79004], ["2019-08-14T23:28:36", 8.10346, -48.79068], ["2019-08-14T23:58:36", 8.10122, -48.79214], ["2019-08-15T00:29:00", 8.09947, -48.7934], ["2019-08-15T00:58:09", 8.09749, -48.79401], ["2019-08-15T01:27:35", 8.09657, -48.79691], ["2019-08-15T01:57:35", 8.09601, -48.80017], ["2019-08-15T02:27:56", 8.09451, -48.80267], ["2019-08-15T02:57:12", 8.09131, -48.80453], ["2019-08-15T03:27:28", 8.08897, -48.80536], ["2019-08-15T03:56:56", 8.08724, -48.80706], ["2019-08-15T04:26:56", 8.08571, -48.80878], ["2019-08-15T04:56:26", 8.08381, -48.81161], ["2019-08-15T05:26:26", 8.08158, -48.81461], ["2019-08-15T05:55:56", 8.0789, -48.81686], ["2019-08-15T06:26:07", 8.07543, -48.81937], ["2019-08-15T06:55:28", 8.07128, -48.82199], ["2019-08-15T07:25:06", 8.06767, -48.82516], ["2019-08-15T07:55:06", 8.06601, -48.82748], ["2019-08-15T08:25:24", 8.06461, -48.82916], ["2019-08-15T08:54:55", 8.06297, -48.83066], ["2019-08-15T09:25:27", 8.06325, -48.83273], ["2019-08-15T09:54:45", 8.06551, -48.83685], ["2019-08-15T10:24:56", 8.0693, -48.8414], ["2019-08-15T10:54:28", 8.07371, -48.84637], ["2019-08-15T11:24:12", 8.07802, -48.85194], ["2019-08-15T11:54:12", 8.08175, -48.85666], ["2019-08-15T12:23:49", 8.08808, -48.86364], ["2019-08-15T12:53:49", 8.09427, -48.87042], ["2019-08-15T13:23:57", 8.10211, -48.87697], ["2019-08-15T13:53:30", 8.10961, -48.88095], ["2019-08-15T14:23:57", 8.11713, -48.88315], ["2019-08-15T14:53:16", 8.1241, -48.88406], ["2019-08-15T15:23:28", 8.13078, -48.88492], ["2019-08-15T15:52:55", 8.13706, -48.88623], ["2019-08-15T16:23:29", 8.14439, -48.88724], ["2019-08-15T17:52:23", 8.16597, -48.88895], ["2019-08-15T18:21:56", 8.17206, -48.88962], ["2019-08-15T18:51:56", 8.17721, -48.89005], ["2019-08-15T19:21:56", 8.18188, -48.89014], ["2019-08-15T19:51:33", 8.18579, -48.88873], ["2019-08-15T20:21:18", 8.19261, -48.88671], ["2019-08-15T20:51:18", 8.19325, -48.88654], ["2019-08-15T21:20:55", 8.19746, -48.88636], ["2019-08-15T21:50:55", 8.20154, -48.88687], ["2019-08-15T22:21:29", 8.20606, -48.88794], ["2019-08-15T22:50:41", 8.2109, -48.88956], ["2019-08-15T23:21:25", 8.21674, -48.8905], ["2019-08-15T23:50:26", 8.22336, -48.89124], ["2019-08-16T00:20:26", 8.22981, -48.89124], ["2019-08-16T00:50:08", 8.23663, -48.89076], ["2019-08-16T01:20:08", 8.24259, -48.8905], ["2019-08-16T01:49:41", 8.24782, -48.88913], ["2019-08-16T02:19:56", 8.25313, -48.88718], ["2019-08-16T02:49:29", 8.25703, -48.88507], ["2019-08-16T03:19:36", 8.26013, -48.8819], ["2019-08-16T03:49:01", 8.2637, -48.8779], ["2019-08-16T04:19:01", 8.26748, -48.87327], ["2019-08-16T04:49:01", 8.27143, -48.86829], ["2019-08-16T05:19:28", 8.27589, -48.86353], ["2019-08-16T05:48:41", 8.27957, -48.86005], ["2019-08-16T06:18:55", 8.28363, -48.85544], ["2019-08-16T06:48:14", 8.28738, -48.85107], ["2019-08-16T07:17:54", 8.29132, -48.84748], ["2019-08-16T07:47:54", 8.29458, -48.84482], ["2019-08-16T08:18:24", 8.29662, -48.84186], ["2019-08-16T08:47:30", 8.29823, -48.83844], ["2019-08-16T09:17:39", 8.30029, -48.83585], ["2019-08-16T09:47:11", 8.30321, -48.83466], ["2019-08-16T10:17:27", 8.30572, -48.83276], ["2019-08-16T10:47:27", 8.30799, -48.83079], ["2019-08-16T11:17:27", 8.30846, -48.82916], ["2019-08-16T11:46:43", 8.30894, -48.82675], ["2019-08-16T12:16:24", 8.30829, -48.82471], ["2019-08-16T12:46:24", 8.30863, -48.82368], ["2019-08-16T13:16:24", 8.30902, -48.82291], ["2019-08-16T13:46:02", 8.30749, -48.82312], ["2019-08-16T14:16:25", 8.30725, -48.82285], ["2019-08-16T14:45:52", 8.30716, -48.82285], ["2019-08-16T15:16:30", 8.30704, -48.82327], ["2019-08-16T16:45:06", 8.31198, -48.82163], ["2019-08-16T17:15:56", 8.31359, -48.81937], ["2019-08-16T17:45:06", 8.31438, -48.81699], ["2019-08-16T18:15:27", 8.3149, -48.814], ["2019-08-16T18:44:44", 8.31474, -48.81091], ["2019-08-16T19:14:28", 8.31473, -48.80683], ["2019-08-16T19:44:28", 8.31426, -48.80331], ["2019-08-16T20:14:58", 8.31237, -48.79965], ["2019-08-16T20:44:19", 8.31124, -48.79556], ["2019-08-16T21:14:25", 8.31087, -48.79141], ["2019-08-16T21:44:01", 8.31136, -48.78876], ["2019-08-16T22:14:26", 8.30993, -48.78619], ["2019-08-16T22:43:29", 8.30911, -48.78403], ["2019-08-16T23:13:29", 8.30721, -48.78266], ["2019-08-16T23:43:29", 8.30631, -48.78317], ["2019-08-17T00:13:07", 8.305, -48.78339], ["2019-08-17T00:43:07", 8.30315, -48.78339], ["2019-08-17T01:13:09", 8.3007, -48.78383], ["2019-08-17T01:42:49", 8.29836, -48.78418], ["2019-08-17T02:13:09", 8.29594, -48.78503], ["2019-08-17T02:42:36", 8.29271, -48.78552], ["2019-08-17T03:13:26", 8.28897, -48.78482], ["2019-08-17T03:42:55", 8.28542, -48.78496], ["2019-08-17T04:12:55", 8.28182, -48.78479], ["2019-08-17T04:42:16", 8.27809, -48.78455], ["2019-08-17T05:11:52", 8.27413, -48.78352], ["2019-08-17T05:41:52", 8.27087, -48.7818], ["2019-08-17T06:11:55", 8.26704, -48.78079], ["2019-08-17T06:41:28", 8.26413, -48.78052], ["2019-08-17T07:11:06", 8.26152, -48.78018], ["2019-08-17T07:41:06", 8.2589, -48.78018], ["2019-08-17T08:11:26", 8.25557, -48.78021], ["2019-08-17T08:40:51", 8.25263, -48.77924], ["2019-08-17T09:10:33", 8.25062, -48.77695], ["2019-08-17T09:40:33", 8.24766, -48.77515], ["2019-08-17T10:10:14", 8.24349, -48.77416], ["2019-08-17T10:40:14", 8.23936, -48.77399], ["2019-08-17T11:09:56", 8.23386, -48.77423], ["2019-08-17T12:09:56", 8.23043, -48.77432], ["2019-08-17T12:39:27", 8.22788, -48.77512], ["2019-08-17T13:09:27", 8.22569, -48.77615], ["2019-08-17T13:38:58", 8.22429, -48.77795], ["2019-08-17T14:08:42", 8.22247, -48.7788], ["2019-08-17T14:38:42", 8.22076, -48.7782], ["2019-08-17T15:08:32", 8.21725, -48.77746], ["2019-08-17T15:38:32", 8.21355, -48.77737], ["2019-08-17T16:08:18", 8.20889, -48.77708], ["2019-08-17T16:38:18", 8.20378, -48.77759], ["2019-08-17T17:08:27", 8.19914, -48.77847], ["2019-08-17T17:38:24", 8.19444, -48.77883], ["2019-08-17T18:08:24", 8.18981, -48.77866], ["2019-08-17T18:38:06", 8.18472, -48.7783], ["2019-08-17T19:08:06", 8.17966, -48.77847], ["2019-08-17T19:37:06", 8.17456, -48.77938], ["2019-08-17T20:07:36", 8.16987, -48.77985], ["2019-08-17T20:37:06", 8.16577, -48.7804], ["2019-08-17T20:45:26", 8.16447, -48.78094], ["2019-08-17T21:07:01", 8.16127, -48.78219], ["2019-08-17T21:37:01", 8.15668, -48.78339], ["2019-08-17T23:36:26", 8.13144, -48.79193], ["2019-08-18T00:06:26", 8.12476, -48.79459], ["2019-08-18T00:36:26", 8.11905, -48.79691], ["2019-08-18T02:05:50", 8.11064, -48.80191], ["2019-08-18T02:36:27", 8.11009, -48.80658], ["2019-08-18T03:05:36", 8.11035, -48.81161], ["2019-08-18T03:35:56", 8.10979, -48.8165], ["2019-08-18T04:05:27", 8.10865, -48.81922], ["2019-08-18T04:35:27", 8.10856, -48.82162], ["2019-08-18T05:05:24", 8.10774, -48.82445], ["2019-08-18T05:35:24", 8.10671, -48.82574], ["2019-08-18T06:04:57", 8.10355, -48.82551], ["2019-08-18T06:34:57", 8.10025, -48.82611], ["2019-08-18T07:05:27", 8.0996, -48.82704], ["2019-08-18T07:35:27", 8.10145, -48.82764], ["2019-08-18T08:04:26", 8.10258, -48.82874], ["2019-08-18T08:35:53", 8.10323, -48.83014], ["2019-08-18T10:03:35", 8.10424, -48.83355], ["2019-08-18T10:33:35", 8.10385, -48.83501], ["2019-08-18T11:03:35", 8.10252, -48.8363], ["2019-08-18T11:34:28", 8.10068, -48.83643], ["2019-08-18T12:34:25", 8.09814, -48.83755], ["2019-08-18T14:02:43", 8.09176, -48.84694], ["2019-08-18T14:33:59", 8.08956, -48.85184], ["2019-08-18T15:02:43", 8.08681, -48.85501], ["2019-08-18T16:02:26", 8.08353, -48.86166], ["2019-08-18T16:33:57", 8.08146, -48.86404], ["2019-08-18T17:02:08", 8.07921, -48.86636], ["2019-08-18T17:32:26", 8.0771, -48.86917], ["2019-08-18T18:01:57", 8.07687, -48.87132], ["2019-08-18T18:31:57", 8.07673, -48.87329], ["2019-08-18T19:01:33", 8.07804, -48.87518], ["2019-08-18T19:32:02", 8.07892, -48.87579], ["2019-08-18T20:01:19", 8.0783, -48.87711], ["2019-08-18T20:31:56", 8.07827, -48.87878], ["2019-08-18T20:44:54", 8.07878, -48.88], ["2019-08-18T21:00:47", 8.07971, -48.88205], ["2019-08-18T21:30:47", 8.08048, -48.88574], ["2019-08-18T22:00:47", 8.08078, -48.88763], ["2019-08-18T22:31:10", 8.08065, -48.89151], ["2019-08-18T23:00:24", 8.07916, -48.89464], ["2019-08-18T23:31:03", 8.07691, -48.89734], ["2019-08-19T00:00:24", 8.0747, -48.90048], ["2019-08-19T00:30:26", 8.0732, -48.90264], ["2019-08-19T01:00:26", 8.07346, -48.9047], ["2019-08-19T01:30:26", 8.0747, -48.90753], ["2019-08-19T01:59:59", 8.07653, -48.90955], ["2019-08-19T02:30:26", 8.07909, -48.91174], ["2019-08-19T02:59:52", 8.0824, -48.9137], ["2019-08-19T03:30:27", 8.08618, -48.91647], ["2019-08-19T03:59:41", 8.09004, -48.91742], ["2019-08-19T04:29:26", 8.09365, -48.91855], ["2019-08-19T04:59:26", 8.09614, -48.92035], ["2019-08-19T05:29:06", 8.09869, -48.92165], ["2019-08-19T05:59:06", 8.10041, -48.92096], ["2019-08-19T06:29:58", 8.10242, -48.91852], ["2019-08-19T06:58:49", 8.10321, -48.91534], ["2019-08-19T07:29:08", 8.10394, -48.91196], ["2019-08-19T07:58:35", 8.10486, -48.90833], ["2019-08-19T08:28:58", 8.10608, -48.90509], ["2019-08-19T09:00:26", 8.10754, -48.90193], ["2019-08-19T09:30:26", 8.10853, -48.89764], ["2019-08-19T09:57:51", 8.1092, -48.89367], ["2019-08-19T10:27:51", 8.10834, -48.88904], ["2019-08-19T10:58:58", 8.10664, -48.88464], ["2019-08-19T13:28:26", 8.10326, -48.8669], ["2019-08-19T13:58:26", 8.1069, -48.86355], ["2019-08-19T14:28:26", 8.11257, -48.85934], ["2019-08-19T14:56:12", 8.11647, -48.85388], ["2019-08-19T15:26:00", 8.11691, -48.84787], ["2019-08-19T15:56:26", 8.11713, -48.84158], ["2019-08-19T16:25:39", 8.11682, -48.83548], ["2019-08-19T16:56:56", 8.11738, -48.82822], ["2019-08-19T17:25:55", 8.11808, -48.81966], ["2019-08-19T17:55:55", 8.11825, -48.80927], ["2019-08-19T18:54:57", 8.11572, -48.7882], ["2019-08-19T19:24:57", 8.11509, -48.77842], ["2019-08-19T19:54:57", 8.11422, -48.76984], ["2019-08-19T20:45:25", 8.11536, -48.75464], ["2019-08-19T20:54:58", 8.11547, -48.75165], ["2019-08-19T21:23:52", 8.11623, -48.74173], ["2019-08-19T21:53:31", 8.11722, -48.73219], ["2019-08-19T22:23:31", 8.1174, -48.72421], ["2019-08-19T22:53:41", 8.11727, -48.71613], ["2019-08-19T23:23:05", 8.11703, -48.7085], ["2019-08-20T00:22:28", 8.11637, -48.69497], ["2019-08-20T00:52:28", 8.11547, -48.68845], ["2019-08-20T01:22:28", 8.11453, -48.68176], ["2019-08-20T01:52:57", 8.11351, -48.67374], ["2019-08-20T03:21:45", 8.11205, -48.64979], ["2019-08-20T03:51:45", 8.11205, -48.64138], ["2019-08-20T04:21:45", 8.11128, -48.63297], ["2019-08-20T04:51:48", 8.11134, -48.62424], ["2019-08-20T05:22:06", 8.11233, -48.61542], ["2019-08-20T05:51:39", 8.11318, -48.60709], ["2019-08-20T06:21:39", 8.114, -48.59885], ["2019-08-20T06:51:02", 8.11544, -48.59064], ["2019-08-20T07:20:41", 8.11655, -48.58209], ["2019-08-20T07:50:41", 8.11694, -48.57385], ["2019-08-20T08:20:28", 8.11623, -48.56589], ["2019-08-20T08:50:28", 8.11378, -48.55817], ["2019-08-20T09:20:54", 8.10943, -48.55099], ["2019-08-20T09:50:25", 8.10438, -48.5444], ["2019-08-20T10:20:25", 8.09923, -48.54037], ["2019-08-20T10:49:56", 8.09409, -48.53693], ["2019-08-20T11:20:23", 8.0885, -48.53073], ["2019-08-20T11:49:40", 8.08389, -48.52362], ["2019-08-20T12:19:21", 8.07954, -48.51553], ["2019-08-20T12:49:21", 8.07499, -48.50763], ["2019-08-20T13:19:40", 8.07058, -48.4989], ["2019-08-20T13:48:58", 8.06671, -48.49014], ["2019-08-20T14:19:08", 8.06345, -48.48282], ["2019-08-20T14:48:56", 8.0607, -48.47635], ["2019-08-20T15:18:56", 8.05843, -48.46991], ["2019-08-20T15:48:12", 8.05613, -48.46335], ["2019-08-20T16:18:25", 8.0543, -48.45682], ["2019-08-20T16:47:59", 8.05269, -48.44916], ["2019-08-20T17:18:25", 8.0505, -48.4411], ["2019-08-20T17:47:48", 8.04789, -48.43335], ["2019-08-20T19:17:27", 8.03917, -48.40796], ["2019-08-20T19:47:27", 8.03677, -48.40118], ["2019-08-20T20:17:27", 8.03337, -48.39371], ["2019-08-20T20:44:41", 8.03041, -48.38736], ["2019-08-20T21:16:58", 8.02823, -48.38007], ["2019-08-20T21:46:28", 8.02584, -48.37308], ["2019-08-20T22:16:10", 8.0225, -48.36639], ["2019-08-20T22:46:10", 8.01795, -48.36047], ["2019-08-20T23:15:47", 8.01136, -48.35533], ["2019-08-20T23:45:47", 8.00535, -48.35095], ["2019-08-21T00:15:36", 7.99966, -48.34633], ["2019-08-21T00:45:36", 7.99545, -48.34067], ["2019-08-21T01:15:36", 7.99056, -48.33475], ["2019-08-21T01:45:09", 7.98528, -48.33026], ["2019-08-21T02:15:26", 7.97957, -48.32474], ["2019-08-21T02:45:23", 7.97346, -48.3193], ["2019-08-21T03:15:23", 7.96689, -48.31509], ["2019-08-21T03:44:42", 7.9614, -48.31119], ["2019-08-21T04:14:57", 7.95589, -48.30695], ["2019-08-21T04:44:24", 7.95023, -48.30258], ["2019-08-21T05:14:57", 7.94565, -48.29953], ["2019-08-21T05:44:07", 7.94135, -48.2963], ["2019-08-21T06:14:26", 7.93711, -48.29102], ["2019-08-21T07:13:57", 7.92881, -48.28218], ["2019-08-21T07:43:57", 7.9249, -48.27875], ["2019-08-21T08:13:57", 7.92027, -48.276], ["2019-08-21T08:43:18", 7.9155, -48.27402], ["2019-08-21T09:13:26", 7.90964, -48.27234], ["2019-08-21T09:42:50", 7.90197, -48.27078], ["2019-08-21T10:12:56", 7.89382, -48.26895], ["2019-08-21T10:42:57", 7.88681, -48.26914], ["2019-08-21T11:12:57", 7.88024, -48.26965], ["2019-08-21T11:42:09", 7.87479, -48.27026], ["2019-08-21T12:12:26", 7.86992, -48.27011], ["2019-08-21T12:41:49", 7.86631, -48.26993], ["2019-08-21T13:12:06", 7.86165, -48.27069], ["2019-08-21T13:41:57", 7.85715, -48.27471], ["2019-08-21T14:11:57", 7.85307, -48.27634], ["2019-08-21T14:41:27", 7.85026, -48.27939], ["2019-08-21T15:11:07", 7.84909, -48.28307], ["2019-08-21T15:41:07", 7.84909, -48.28625], ["2019-08-21T16:11:25", 7.84873, -48.29062], ["2019-08-21T16:40:57", 7.8501, -48.29653], ["2019-08-21T17:10:57", 7.85306, -48.30511], ["2019-08-21T17:40:35", 7.85695, -48.31257], ["2019-08-21T18:10:35", 7.8612, -48.3172], ["2019-08-21T18:40:08", 7.8658, -48.32001], ["2019-08-21T19:09:51", 7.8702, -48.32058], ["2019-08-21T19:39:51", 7.87415, -48.32101], ["2019-08-21T20:09:37", 7.88283, -48.31931], ["2019-08-21T20:39:37", 7.88313, -48.31931], ["2019-08-21T20:44:53", 7.88393, -48.31906], ["2019-08-21T21:39:41", 7.89221, -48.31482], ["2019-08-21T22:09:17", 7.89653, -48.31456], ["2019-08-21T22:39:17", 7.90125, -48.31516], ["2019-08-21T23:09:35", 7.90669, -48.31485], ["2019-08-21T23:39:05", 7.91085, -48.31256], ["2019-08-22T00:08:52", 7.91474, -48.31059], ["2019-08-22T00:38:52", 7.9174, -48.30862], ["2019-08-22T01:09:27", 7.92146, -48.30734], ["2019-08-22T01:38:57", 7.9248, -48.30552], ["2019-08-22T02:08:57", 7.92759, -48.302], ["2019-08-22T02:38:31", 7.9311, -48.29933], ["2019-08-22T03:08:31", 7.93612, -48.29538], ["2019-08-22T03:38:28", 7.94008, -48.29181], ["2019-08-22T04:08:28", 7.94377, -48.28821], ["2019-08-22T04:37:24", 7.94577, -48.2851], ["2019-08-22T05:07:12", 7.9491, -48.28047], ["2019-08-22T05:37:12", 7.95275, -48.27747], ["2019-08-22T06:06:57", 7.95741, -48.27647], ["2019-08-22T06:36:57", 7.96303, -48.27518], ["2019-08-22T07:36:39", 7.97313, -48.26376], ["2019-08-22T08:07:29", 7.97744, -48.25662], ["2019-08-22T10:05:36", 7.98485, -48.22317], ["2019-08-22T10:35:36", 7.98429, -48.21313], ["2019-08-22T11:05:36", 7.98399, -48.20377], ["2019-08-22T11:36:55", 7.98243, -48.19406], ["2019-08-22T12:07:25", 7.98007, -48.18652], ["2019-08-22T12:37:25", 7.97805, -48.17734], ["2019-08-22T13:35:21", 7.97254, -48.16336], ["2019-08-22T14:05:35", 7.97055, -48.1568], ["2019-08-22T14:35:28", 7.96814, -48.15205], ["2019-08-22T15:05:28", 7.96398, -48.14639], ["2019-08-22T15:34:33", 7.96141, -48.13934], ["2019-08-22T16:04:58", 7.95912, -48.13458], ["2019-08-22T17:04:27", 7.95475, -48.12513], ["2019-08-22T17:34:07", 7.95254, -48.12094], ["2019-08-22T18:04:27", 7.95063, -48.11603], ["2019-08-22T18:34:26", 7.9482, -48.10964], ["2019-08-22T19:04:26", 7.94554, -48.10303], ["2019-08-22T19:33:19", 7.94399, -48.09607], ["2019-08-22T20:04:28", 7.94239, -48.08835], ["2019-08-22T20:33:29", 7.94063, -48.07704], ["2019-08-22T21:03:29", 7.9402, -48.07086], ["2019-08-22T21:32:40", 7.93934, -48.06067], ["2019-08-22T22:02:59", 7.93845, -48.0506], ["2019-08-22T22:32:22", 7.93862, -48.04065], ["2019-08-22T23:03:28", 7.93954, -48.02917], ["2019-08-22T23:32:46", 7.93783, -48.01692], ["2019-08-23T00:02:46", 7.93538, -48.00525], ["2019-08-23T00:32:08", 7.93342, -47.99469], ["2019-08-23T01:02:30", 7.92979, -47.9838], ["2019-08-23T01:31:32", 7.92573, -47.97409], ["2019-08-23T02:01:58", 7.92051, -47.9628], ["2019-08-23T02:31:15", 7.91505, -47.95114], ["2019-08-23T03:01:58", 7.90859, -47.93961], ["2019-08-23T03:32:27", 7.90186, -47.92801], ["2019-08-23T04:02:27", 7.89401, -47.91522], ["2019-08-23T04:31:57", 7.88745, -47.90376], ["2019-08-23T05:01:57", 7.8802, -47.8938], ["2019-08-23T06:01:57", 7.86667, -47.87152], ["2019-08-23T06:30:10", 7.86154, -47.86111], ["2019-08-23T06:59:48", 7.8554, -47.84861], ["2019-08-23T07:29:48", 7.84948, -47.83737], ["2019-08-23T07:59:33", 7.84122, -47.82481], ["2019-08-23T08:29:33", 7.83504, -47.8158], ["2019-08-23T08:59:03", 7.82739, -47.80294], ["2019-08-23T09:29:03", 7.81842, -47.78912], ["2019-08-23T09:59:03", 7.80997, -47.77856], ["2019-08-23T10:28:52", 7.80154, -47.7676], ["2019-08-23T10:58:52", 7.79279, -47.75644], ["2019-08-23T12:29:04", 7.76592, -47.72507], ["2019-08-23T12:59:04", 7.75837, -47.71529], ["2019-08-23T13:29:04", 7.74914, -47.70267], ["2019-08-23T13:58:14", 7.74079, -47.69125], ["2019-08-23T14:29:27", 7.73121, -47.67963], ["2019-08-23T15:57:30", 7.7039, -47.6434], ["2019-08-23T16:27:30", 7.69497, -47.63027], ["2019-08-23T16:57:30", 7.6866, -47.61765], ["2019-08-23T17:27:20", 7.67761, -47.60458], ["2019-08-23T17:59:57", 7.66829, -47.59158], ["2019-08-23T18:26:37", 7.66052, -47.58017], ["2019-08-23T18:56:37", 7.65383, -47.56558], ["2019-08-23T20:56:13", 7.62968, -47.51358], ["2019-08-23T21:25:50", 7.62431, -47.49978], ["2019-08-23T21:58:27", 7.61778, -47.48505], ["2019-08-23T22:25:50", 7.61195, -47.4718], ["2019-08-23T23:26:30", 7.59885, -47.44318], ["2019-08-24T00:27:01", 7.5875, -47.41501], ["2019-08-24T00:55:15", 7.5834, -47.40054], ["2019-08-24T01:25:00", 7.57969, -47.38537], ["2019-08-24T01:55:00", 7.57553, -47.37164], ["2019-08-24T02:25:27", 7.57073, -47.35737], ["2019-08-24T02:55:27", 7.56571, -47.34235], ["2019-08-24T03:24:37", 7.5628, -47.32709], ["2019-08-24T03:54:38", 7.56019, -47.31269], ["2019-08-24T04:24:38", 7.55693, -47.29758], ["2019-08-24T04:54:16", 7.55493, -47.28257], ["2019-08-24T05:24:16", 7.55253, -47.26901], ["2019-08-24T05:54:11", 7.54902, -47.25429], ["2019-08-24T06:24:11", 7.54494, -47.24219], ["2019-08-24T06:54:11", 7.54108, -47.2294], ["2019-08-24T07:23:37", 7.53705, -47.21664], ["2019-08-24T07:53:37", 7.53323, -47.20316], ["2019-08-24T08:23:29", 7.52914, -47.1899], ["2019-08-24T08:53:29", 7.52451, -47.17694], ["2019-08-24T09:22:46", 7.52155, -47.16431], ["2019-08-24T09:52:56", 7.51792, -47.15262], ["2019-08-24T10:22:27", 7.5136, -47.14014], ["2019-08-24T11:22:03", 7.50771, -47.117], ["2019-08-24T11:51:46", 7.50548, -47.10483], ["2019-08-24T12:21:46", 7.50368, -47.09204], ["2019-08-24T12:51:56", 7.50293, -47.07852], ["2019-08-24T13:21:22", 7.50178, -47.06665], ["2019-08-24T13:51:07", 7.49975, -47.05432], ["2019-08-24T14:21:07", 7.49816, -47.04196], ["2019-08-24T14:50:39", 7.49594, -47.02927], ["2019-08-24T15:20:39", 7.49487, -47.01794], ["2019-08-24T15:50:20", 7.49432, -47.00534], ["2019-08-24T16:20:20", 7.49411, -46.99478], ["2019-08-24T16:50:57", 7.49528, -46.98386], ["2019-08-24T17:20:02", 7.49738, -46.97446], ["2019-08-24T17:49:42", 7.50107, -46.96431], ["2019-08-24T18:19:42", 7.50403, -46.95401], ["2019-08-24T18:49:27", 7.50718, -46.94435], ["2019-08-24T19:19:27", 7.50933, -46.93396], ["2019-08-24T19:49:56", 7.51014, -46.92349], ["2019-08-24T20:19:13", 7.50954, -46.9136], ["2019-08-24T20:45:01", 7.50782, -46.90451], ["2019-08-24T20:50:56", 7.50759, -46.90253], ["2019-08-24T21:18:48", 7.50694, -46.8941], ["2019-08-24T21:48:48", 7.50608, -46.8844], ["2019-08-24T22:18:34", 7.50622, -46.87513], ["2019-08-24T22:48:34", 7.50673, -46.86603], ["2019-08-24T23:18:58", 7.50587, -46.85608], ["2019-08-24T23:48:23", 7.50533, -46.84741], ["2019-08-25T00:18:58", 7.50526, -46.84003], ["2019-08-25T00:48:26", 7.505, -46.83254], ["2019-08-25T01:18:26", 7.5047, -46.82413], ["2019-08-25T02:17:55", 7.50401, -46.80692], ["2019-08-25T03:17:28", 7.50686, -46.79141], ["2019-08-25T03:47:08", 7.50867, -46.78363], ["2019-08-25T04:17:28", 7.51051, -46.77545], ["2019-08-25T04:46:53", 7.5126, -46.76819], ["2019-08-25T06:46:29", 7.52899, -46.73425], ["2019-08-25T07:17:29", 7.53377, -46.72723], ["2019-08-25T07:46:22", 7.53809, -46.72101], ["2019-08-25T08:16:08", 7.54335, -46.71506], ["2019-08-25T08:46:08", 7.54691, -46.70819], ["2019-08-25T09:45:50", 7.55308, -46.69275], ["2019-08-25T11:45:14", 7.56748, -46.66736], ["2019-08-25T16:13:55", 7.60529, -46.61093], ["2019-08-25T19:44:58", 7.65323, -46.57471], ["2019-08-25T23:12:34", 7.68502, -46.52805], ["2019-08-25T23:41:52", 7.68923, -46.52039], ["2019-08-26T00:12:34", 7.69352, -46.51303], ["2019-08-26T02:12:10", 7.7115, -46.48424], ["2019-08-26T02:42:10", 7.71708, -46.47694], ["2019-08-26T03:12:10", 7.72395, -46.46887], ["2019-08-26T04:11:28", 7.7366, -46.45636], ["2019-08-26T05:09:41", 7.74864, -46.44193], ["2019-08-26T05:39:49", 7.75403, -46.43634], ["2019-08-26T06:09:41", 7.75838, -46.43051], ["2019-08-26T06:42:28", 7.76446, -46.42349], ["2019-08-26T08:12:28", 7.77826, -46.40506], ["2019-08-26T11:10:31", 7.80317, -46.36957], ["2019-08-26T11:40:31", 7.80836, -46.36416], ["2019-08-26T12:10:31", 7.80982, -46.35403], ["2019-08-26T14:37:20", 7.81003, -46.30197], ["2019-08-26T15:36:54", 7.80965, -46.2814], ["2019-08-26T17:06:32", 7.81372, -46.24674], ["2019-08-26T17:36:32", 7.81548, -46.23635], ["2019-08-26T18:06:32", 7.81814, -46.22717], ["2019-08-26T18:36:11", 7.82096, -46.21704], ["2019-08-26T19:06:11", 7.82289, -46.20743], ["2019-08-26T19:44:39", 7.82954, -46.17902], ["2019-08-26T20:14:39", 7.82984, -46.1773], ["2019-08-26T20:44:39", 7.83005, -46.17593], ["2019-08-26T21:05:36", 7.83142, -46.16876], ["2019-08-26T21:35:26", 7.83357, -46.15869], ["2019-08-26T22:05:32", 7.83608, -46.14703], ["2019-08-26T22:35:32", 7.83853, -46.13596], ["2019-08-26T23:05:32", 7.83892, -46.12497], ["2019-08-26T23:34:34", 7.83853, -46.11462], ["2019-08-27T00:05:06", 7.83793, -46.10425], ["2019-08-27T00:33:58", 7.83585, -46.09612], ["2019-08-27T01:03:58", 7.83375, -46.08831], ["2019-08-27T01:33:58", 7.83122, -46.0817], ["2019-08-27T02:04:29", 7.82754, -46.07388], ["2019-08-27T04:32:49", 7.80656, -46.03723], ["2019-08-27T05:02:49", 7.8015, -46.03105], ["2019-08-27T05:32:49", 7.79704, -46.0253], ["2019-08-27T06:32:30", 7.78936, -46.01453], ["2019-08-27T07:31:52", 7.78319, -46.00362], ["2019-08-27T08:01:52", 7.77933, -45.99967], ["2019-08-27T08:31:52", 7.77538, -45.99701], ["2019-08-27T09:02:28", 7.773, -45.99377], ["2019-08-27T09:31:59", 7.77038, -45.98953], ["2019-08-27T10:01:59", 7.76699, -45.98309], ["2019-08-27T12:30:39", 7.73665, -45.9673], ["2019-08-27T13:00:39", 7.72609, -45.96404], ["2019-08-27T13:30:39", 7.71626, -45.96155], ["2019-08-27T14:00:34", 7.70474, -45.95853], ["2019-08-27T14:30:22", 7.69354, -45.95551], ["2019-08-27T15:00:22", 7.68371, -45.95328], ["2019-08-27T15:30:36", 7.67408, -45.95088], ["2019-08-27T16:00:36", 7.66614, -45.94882], ["2019-08-27T16:30:27", 7.65971, -45.94666], ["2019-08-27T17:00:02", 7.65332, -45.94479], ["2019-08-27T17:59:52", 7.64078, -45.94632], ["2019-08-27T19:45:11", 7.63478, -45.96567], ["2019-08-27T20:15:11", 7.63512, -45.96713], ["2019-08-27T20:45:11", 7.63555, -45.9679], ["2019-08-27T20:58:50", 7.63639, -45.96953], ["2019-08-27T21:28:50", 7.63652, -45.97253], ["2019-08-27T21:59:11", 7.63588, -45.97514], ["2019-08-27T22:29:11", 7.63481, -45.97668], ["2019-08-27T22:59:11", 7.63335, -45.97745], ["2019-08-27T23:59:00", 7.6302, -45.98135], ["2019-08-28T00:29:00", 7.62771, -45.98401], ["2019-08-28T00:59:00", 7.62453, -45.9859], ["2019-08-28T01:27:48", 7.62178, -45.98776], ["2019-08-28T01:57:22", 7.62005, -45.98923], ["2019-08-28T02:27:22", 7.61846, -45.99146], ["2019-08-28T02:56:57", 7.61663, -45.99329], ["2019-08-28T03:26:57", 7.61461, -45.99509], ["2019-08-28T04:56:45", 7.6124, -46.00664], ["2019-08-28T05:26:45", 7.61287, -46.01119], ["2019-08-28T05:56:45", 7.61553, -46.01651], ["2019-08-28T06:26:32", 7.61877, -46.02309], ["2019-08-28T06:56:32", 7.62302, -46.03073], ["2019-08-28T07:26:01", 7.62948, -46.04004], ["2019-08-28T07:56:01", 7.63553, -46.04742], ["2019-08-28T08:25:22", 7.64132, -46.05179], ["2019-08-28T08:55:32", 7.64917, -46.05573], ["2019-08-28T09:25:08", 7.65676, -46.06006], ["2019-08-28T14:53:56", 7.76492, -46.0881], ["2019-08-28T15:25:27", 7.77539, -46.08951], ["2019-08-28T15:53:48", 7.78538, -46.08963], ["2019-08-28T16:23:56", 7.79763, -46.08907], ["2019-08-28T16:53:56", 7.81068, -46.08838], ["2019-08-28T17:23:56", 7.8242, -46.08572], ["2019-08-28T18:23:56", 7.8505, -46.08398], ["2019-08-28T18:53:56", 7.86247, -46.08123], ["2019-08-28T19:23:56", 7.87427, -46.0784], ["2019-08-28T19:52:14", 7.88528, -46.07684], ["2019-08-28T20:25:29", 7.89676, -46.07394], ["2019-08-28T20:52:30", 7.90648, -46.07166], ["2019-08-28T21:22:30", 7.91712, -46.06806], ["2019-08-28T21:52:30", 7.92673, -46.06308], ["2019-08-28T23:22:11", 7.95976, -46.04804], ["2019-08-28T23:52:11", 7.97075, -46.04126], ["2019-08-29T00:22:11", 7.98045, -46.03268], ["2019-08-29T00:51:08", 7.98947, -46.02524], ["2019-08-29T01:21:08", 7.99848, -46.01743], ["2019-08-29T01:50:14", 8.00758, -46.00957], ["2019-08-29T02:20:14", 8.01698, -46.00116], ["2019-08-29T02:50:14", 8.02561, -45.99292], ["2019-08-29T04:49:50", 8.05537, -45.95627], ["2019-08-29T05:20:01", 8.06304, -45.94799], ["2019-08-29T05:50:01", 8.07154, -45.94069], ["2019-08-29T06:20:01", 8.07874, -45.93091], ["2019-08-29T06:48:47", 8.08311, -45.92199], ["2019-08-29T07:18:47", 8.08564, -45.91538], ["2019-08-29T07:48:47", 8.08689, -45.91092], ["2019-08-29T08:19:09", 8.08672, -45.90662], ["2019-08-29T09:47:59", 8.08801, -45.89134], ["2019-08-29T10:17:59", 8.08998, -45.88533], ["2019-08-29T10:47:59", 8.09088, -45.87958], ["2019-08-29T11:17:30", 8.09159, -45.87524], ["2019-08-29T11:47:59", 8.09249, -45.86975], ["2019-08-29T13:16:45", 8.1, -45.85906], ["2019-08-29T13:46:45", 8.10237, -45.85563], ["2019-08-29T14:16:45", 8.10296, -45.8522], ["2019-08-29T14:47:09", 8.10417, -45.84866], ["2019-08-29T15:16:35", 8.10547, -45.84723], ["2019-08-29T15:46:21", 8.10615, -45.84528], ["2019-08-29T16:16:21", 8.10774, -45.84296], ["2019-08-29T16:46:26", 8.10903, -45.84045], ["2019-08-29T17:16:04", 8.1095, -45.83792], ["2019-08-29T17:46:26", 8.10741, -45.8353], ["2019-08-29T18:15:56", 8.10558, -45.83334], ["2019-08-29T18:46:29", 8.10365, -45.83197], ["2019-08-29T19:15:48", 8.10591, -45.83099], ["2019-08-29T19:46:08", 8.10979, -45.82993], ["2019-08-29T20:15:39", 8.11314, -45.82919], ["2019-08-29T20:45:35", 8.11622, -45.82827], ["2019-08-29T21:15:35", 8.11965, -45.82681], ["2019-08-29T21:45:15", 8.1231, -45.82438], ["2019-08-29T22:15:15", 8.12555, -45.82352], ["2019-08-29T22:45:37", 8.12811, -45.82346], ["2019-08-29T23:15:05", 8.12961, -45.82339], ["2019-08-29T23:45:26", 8.13184, -45.82358], ["2019-08-30T00:14:39", 8.13423, -45.82343], ["2019-08-30T00:44:39", 8.13771, -45.82309], ["2019-08-30T01:14:39", 8.14131, -45.823], ["2019-08-30T01:44:17", 8.14486, -45.82254], ["2019-08-30T02:14:17", 8.14799, -45.82108], ["2019-08-30T02:44:25", 8.15147, -45.81879], ["2019-08-30T03:44:30", 8.15241, -45.81534], ["2019-08-30T04:13:45", 8.1494, -45.81564], ["2019-08-30T04:43:25", 8.14612, -45.81726], ["2019-08-30T05:13:25", 8.14087, -45.82104], ["2019-08-30T05:43:55", 8.13607, -45.82516], ["2019-08-30T06:13:05", 8.13214, -45.83002], ["2019-08-30T06:43:26", 8.12939, -45.83527], ["2019-08-30T07:12:21", 8.12665, -45.84171], ["2019-08-30T07:42:59", 8.12705, -45.84695], ["2019-08-30T08:12:21", 8.12721, -45.85107], ["2019-08-30T08:42:27", 8.12752, -45.85321], ["2019-08-30T09:11:57", 8.12871, -45.85501], ["2019-08-30T09:42:27", 8.13083, -45.85733], ["2019-08-30T10:11:44", 8.13278, -45.85837], ["2019-08-30T10:41:19", 8.13465, -45.86007], ["2019-08-30T11:11:19", 8.13559, -45.8605], ["2019-08-30T11:41:02", 8.13779, -45.86319], ["2019-08-30T12:11:02", 8.14006, -45.86688], ["2019-08-30T12:40:44", 8.14167, -45.87192], ["2019-08-30T13:10:44", 8.14213, -45.8757], ["2019-08-30T13:40:57", 8.1425, -45.87946], ["2019-08-30T14:10:55", 8.14433, -45.88401], ["2019-08-30T14:40:55", 8.14673, -45.88864], ["2019-08-30T15:10:26", 8.14927, -45.8927], ["2019-08-30T15:40:26", 8.15094, -45.89639], ["2019-08-30T16:09:48", 8.15257, -45.90112], ["2019-08-30T16:39:57", 8.15573, -45.90555], ["2019-08-30T17:09:21", 8.15666, -45.90894], ["2019-08-30T17:39:01", 8.15197, -45.91325], ["2019-08-30T18:09:01", 8.14661, -45.9184], ["2019-08-30T18:38:42", 8.14533, -45.92349], ["2019-08-30T19:08:42", 8.14683, -45.92606], ["2019-08-30T19:38:57", 8.15035, -45.92731], ["2019-08-30T20:08:16", 8.1533, -45.92831], ["2019-08-30T20:14:36", 8.15626, -45.92998], ["2019-08-30T20:44:36", 8.15665, -45.93015], ["2019-08-30T21:07:53", 8.15879, -45.93048], ["2019-08-30T21:37:58", 8.16236, -45.9314], ["2019-08-30T22:07:43", 8.16656, -45.93341], ["2019-08-30T22:38:06", 8.17176, -45.93567], ["2019-08-30T23:07:13", 8.17831, -45.93785], ["2019-08-30T23:37:13", 8.18308, -45.93948], ["2019-08-31T00:07:13", 8.18793, -45.94205], ["2019-08-31T00:37:28", 8.19051, -45.94443], ["2019-08-31T01:06:56", 8.19154, -45.94492], ["2019-08-31T01:37:24", 8.1952, -45.94717], ["2019-08-31T02:06:39", 8.199, -45.9502], ["2019-08-31T02:36:58", 8.20227, -45.95422], ["2019-08-31T03:06:30", 8.204, -45.95856], ["2019-08-31T03:36:30", 8.20649, -45.96371], ["2019-08-31T04:06:03", 8.21003, -45.96924], ["2019-08-31T04:36:27", 8.21292, -45.97507], ["2019-08-31T05:05:51", 8.21704, -45.98096], ["2019-08-31T05:36:26", 8.21956, -45.9852], ["2019-08-31T06:05:11", 8.22322, -45.98901], ["2019-08-31T06:35:55", 8.22789, -45.99319], ["2019-08-31T07:05:11", 8.23079, -45.99622], ["2019-08-31T07:34:48", 8.2318, -46.00111], ["2019-08-31T08:04:48", 8.233, -46.00549], ["2019-08-31T08:34:54", 8.23382, -46.00882], ["2019-08-31T09:04:32", 8.23628, -46.01062], ["2019-08-31T09:34:56", 8.23916, -46.01129], ["2019-08-31T10:04:16", 8.24206, -46.01233], ["2019-08-31T10:34:26", 8.2455, -46.01331], ["2019-08-31T11:04:27", 8.24879, -46.01484], ["2019-08-31T11:34:27", 8.25231, -46.01776], ["2019-08-31T12:03:56", 8.25433, -46.02151], ["2019-08-31T12:33:56", 8.25728, -46.0264], ["2019-08-31T13:03:19", 8.25841, -46.03052], ["2019-08-31T13:33:27", 8.26022, -46.03329], ["2019-08-31T14:02:59", 8.26338, -46.03723], ["2019-08-31T14:32:46", 8.26854, -46.04076], ["2019-08-31T15:02:46", 8.27177, -46.04428], ["2019-08-31T15:32:25", 8.27538, -46.04767], ["2019-08-31T16:02:25", 8.27826, -46.05136], ["2019-08-31T16:32:38", 8.28004, -46.05606], ["2019-08-31T17:02:09", 8.28125, -46.05905], ["2019-08-31T17:32:25", 8.28138, -46.06232], ["2019-08-31T18:02:09", 8.28064, -46.06622], ["2019-08-31T18:32:09", 8.2784, -46.07068], ["2019-08-31T19:01:37", 8.27877, -46.07428], ["2019-08-31T19:31:56", 8.27865, -46.07733], ["2019-08-31T20:01:30", 8.28032, -46.08075], ["2019-08-31T20:31:55", 8.28279, -46.08408], ["2019-08-31T20:45:22", 8.28363, -46.08505], ["2019-08-31T21:01:57", 8.28484, -46.08563], ["2019-08-31T21:31:57", 8.28586, -46.08795], ["2019-08-31T22:01:12", 8.28691, -46.08841], ["2019-08-31T22:30:46", 8.28795, -46.08964], ["2019-08-31T23:00:46", 8.28954, -46.09076], ["2019-08-31T23:30:56", 8.29133, -46.09171], ["2019-09-01T00:00:25", 8.29222, -46.09122], ["2019-09-01T00:30:56", 8.29374, -46.09134], ["2019-09-01T01:00:13", 8.2954, -46.09137], ["2019-09-01T01:30:24", 8.29712, -46.09222], ["2019-09-01T02:00:23", 8.29907, -46.09368], ["2019-09-01T02:30:23", 8.30152, -46.09497], ["2019-09-01T02:59:43", 8.30457, -46.09747], ["2019-09-01T03:29:57", 8.3073, -46.10016], ["2019-09-01T03:59:27", 8.3089, -46.10187], ["2019-09-01T04:29:55", 8.3111, -46.10458], ["2019-09-01T04:59:08", 8.31344, -46.10843], ["2019-09-01T05:28:58", 8.31579, -46.11157], ["2019-09-01T05:58:58", 8.3191, -46.11389], ["2019-09-01T06:29:05", 8.32152, -46.116], ["2019-09-01T06:59:05", 8.32449, -46.1196], ["2019-09-01T07:29:05", 8.32591, -46.12149], ["2019-09-01T07:58:56", 8.3275, -46.12258], ["2019-09-01T08:28:56", 8.33071, -46.12112], ["2019-09-01T09:57:51", 8.3476, -46.11428], ["2019-09-01T10:27:51", 8.35352, -46.11248], ["2019-09-01T10:57:51", 8.35737, -46.10922], ["2019-09-01T11:27:35", 8.36068, -46.10747], ["2019-09-01T11:57:35", 8.36274, -46.10593], ["2019-09-01T12:27:16", 8.36639, -46.10543], ["2019-09-01T12:57:16", 8.37144, -46.10629], ["2019-09-01T13:27:26", 8.37523, -46.1058], ["2019-09-01T13:57:25", 8.37838, -46.10597], ["2019-09-01T14:27:25", 8.38095, -46.10477], ["2019-09-01T14:56:31", 8.38227, -46.10248], ["2019-09-01T15:26:04", 8.38288, -46.10124], ["2019-09-01T15:56:04", 8.38301, -46.09961], ["2019-09-01T16:26:27", 8.38364, -46.09653], ["2019-09-01T16:55:49", 8.38216, -46.09357], ["2019-09-01T17:25:56", 8.37782, -46.09055], ["2019-09-01T17:55:36", 8.37246, -46.08845], ["2019-09-01T18:25:36", 8.36872, -46.08759], ["2019-09-01T18:55:11", 8.36712, -46.08673], ["2019-09-01T19:25:26", 8.36574, -46.08463], ["2019-09-01T19:54:45", 8.36572, -46.08157], ["2019-09-01T20:14:52", 8.36761, -46.07932], ["2019-09-01T20:44:52", 8.36778, -46.07855], ["2019-09-01T20:54:24", 8.36797, -46.07785], ["2019-09-01T21:24:56", 8.37038, -46.07373], ["2019-09-01T22:24:24", 8.38166, -46.06326], ["2019-09-01T22:53:57", 8.38556, -46.05767], ["2019-09-01T23:23:57", 8.38955, -46.05484], ["2019-09-01T23:53:27", 8.39259, -46.05173], ["2019-09-02T00:23:27", 8.39525, -46.0495], ["2019-09-02T00:52:55", 8.39833, -46.04693], ["2019-09-02T01:22:55", 8.40173, -46.04333], ["2019-09-02T01:52:27", 8.40494, -46.04056], ["2019-09-02T02:22:09", 8.40919, -46.03886], ["2019-09-02T02:52:09", 8.41224, -46.03534], ["2019-09-02T03:21:53", 8.41578, -46.0314], ["2019-09-02T03:51:53", 8.41724, -46.02814], ["2019-09-02T04:22:08", 8.41369, -46.02686], ["2019-09-02T04:51:42", 8.40812, -46.02768], ["2019-09-02T05:21:56", 8.40227, -46.02539], ["2019-09-02T05:51:38", 8.39625, -46.02214], ["2019-09-02T06:21:38", 8.39333, -46.01776], ["2019-09-02T06:51:05", 8.39262, -46.01669], ["2019-09-02T07:21:26", 8.39274, -46.0166], ["2019-09-02T08:20:38", 8.39255, -46.01798], ["2019-09-02T08:50:28", 8.39642, -46.01822], ["2019-09-02T09:20:38", 8.39826, -46.01627], ["2019-09-02T09:50:14", 8.40161, -46.01636], ["2019-09-02T10:20:36", 8.40441, -46.01614], ["2019-09-02T10:50:07", 8.40802, -46.01443], ["2019-09-02T11:20:08", 8.41137, -46.01039], ["2019-09-02T11:50:08", 8.41258, -46.00679], ["2019-09-02T12:20:08", 8.41583, -46.00241], ["2019-09-02T12:49:34", 8.41961, -45.99863], ["2019-09-02T13:19:57", 8.42465, -45.995], ["2019-09-02T13:49:20", 8.42928, -45.99341], ["2019-09-02T14:19:37", 8.43338, -45.99213], ["2019-09-02T14:49:14", 8.43642, -45.99155], ["2019-09-02T15:19:39", 8.43491, -45.99319], ["2019-09-02T15:49:02", 8.43305, -45.99567], ["2019-09-02T16:19:24", 8.43204, -45.99771], ["2019-09-02T16:48:46", 8.43473, -45.99976], ["2019-09-02T17:19:26", 8.4384, -46.00113], ["2019-09-02T17:48:39", 8.44145, -46.00269], ["2019-09-02T18:18:57", 8.4444, -46.00253], ["2019-09-02T18:48:56", 8.44752, -46.00208], ["2019-09-02T19:18:56", 8.45048, -46.00165], ["2019-09-02T19:48:25", 8.45334, -46.00243], ["2019-09-02T20:18:25", 8.45736, -46.00397], ["2019-09-02T20:47:22", 8.46082, -46.00528], ["2019-09-02T21:18:08", 8.46382, -46.00644], ["2019-09-02T21:47:22", 8.467, -46.00931], ["2019-09-02T22:46:46", 8.47293, -46.01093], ["2019-09-02T23:16:33", 8.47827, -46.01187], ["2019-09-02T23:46:33", 8.48239, -46.01178], ["2019-09-03T00:17:02", 8.48687, -46.01022], ["2019-09-03T00:46:22", 8.4909, -46.00891], ["2019-09-03T01:16:38", 8.49532, -46.00778], ["2019-09-03T02:16:06", 8.50281, -46.00615], ["2019-09-03T02:46:06", 8.5062, -46.00503], ["2019-09-03T03:16:06", 8.50902, -46.00546], ["2019-09-03T03:45:55", 8.51108, -46.00539], ["2019-09-03T04:15:55", 8.51258, -46.00522], ["2019-09-03T04:45:26", 8.51411, -46.00443], ["2019-09-03T05:15:57", 8.51704, -46.00427], ["2019-09-03T05:45:28", 8.52009, -46.00342], ["2019-09-03T06:15:28", 8.52447, -46.00308], ["2019-09-03T06:44:49", 8.5283, -46.00363], ["2019-09-03T07:14:55", 8.53232, -46.00519], ["2019-09-03T07:44:35", 8.53581, -46.00659], ["2019-09-03T08:14:52", 8.53679, -46.00684], ["2019-09-03T08:44:14", 8.54115, -46.00809], ["2019-09-03T09:14:25", 8.54432, -46.00809], ["2019-09-03T09:44:25", 8.54766, -46.00826], ["2019-09-03T10:14:25", 8.55439, -46.01041], ["2019-09-03T10:43:56", 8.56, -46.01296], ["2019-09-03T11:13:56", 8.56408, -46.01553], ["2019-09-03T11:43:38", 8.56879, -46.01882], ["2019-09-03T12:13:38", 8.57274, -46.02139], ["2019-09-03T12:43:03", 8.57568, -46.02298], ["2019-09-03T13:13:27", 8.58048, -46.02472], ["2019-09-03T13:42:45", 8.58294, -46.02686], ["2019-09-03T14:42:09", 8.58522, -46.039], ["2019-09-03T15:12:39", 8.58878, -46.04254], ["2019-09-03T15:42:09", 8.5953, -46.04483], ["2019-09-03T16:12:25", 8.60446, -46.04626], ["2019-09-03T16:42:08", 8.61341, -46.04727], ["2019-09-03T17:12:08", 8.62238, -46.04718], ["2019-09-03T17:41:28", 8.63064, -46.04835], ["2019-09-03T18:11:28", 8.63945, -46.04989], ["2019-09-03T18:41:28", 8.64575, -46.05246], ["2019-09-03T19:11:15", 8.65166, -46.05369], ["2019-09-03T19:41:15", 8.65884, -46.05661], ["2019-09-03T20:10:53", 8.67517, -46.06235], ["2019-09-03T20:40:53", 8.67573, -46.06244], ["2019-09-03T20:45:12", 8.67661, -46.06247], ["2019-09-03T21:11:10", 8.68117, -46.06262], ["2019-09-03T21:40:30", 8.68645, -46.06387], ["2019-09-03T22:10:11", 8.69286, -46.06641], ["2019-09-03T22:40:11", 8.69801, -46.07001], ["2019-09-03T23:10:26", 8.70411, -46.07571], ["2019-09-03T23:39:54", 8.71075, -46.08221], ["2019-09-04T00:09:58", 8.7177, -46.08784], ["2019-09-04T00:39:40", 8.725, -46.09369], ["2019-09-04T01:09:58", 8.73311, -46.10123], ["2019-09-04T01:39:26", 8.74224, -46.10754], ["2019-09-04T02:09:54", 8.7543, -46.11298], ["2019-09-04T02:39:13", 8.76646, -46.11789], ["2019-09-04T03:09:26", 8.77765, -46.11996], ["2019-09-04T03:38:51", 8.78871, -46.12265], ["2019-09-04T04:09:04", 8.7978, -46.12561], ["2019-09-04T04:38:29", 8.80511, -46.1272], ["2019-09-04T05:08:27", 8.81203, -46.12629], ["2019-09-04T05:38:10", 8.82024, -46.12387], ["2019-09-04T06:08:27", 8.82967, -46.12097], ["2019-09-04T06:37:56", 8.83873, -46.11929], ["2019-09-04T07:37:11", 8.85313, -46.1179], ["2019-09-04T08:08:55", 8.86081, -46.11743], ["2019-09-04T08:37:11", 8.86974, -46.11713], ["2019-09-04T09:06:53", 8.87834, -46.1171], ["2019-09-04T09:36:53", 8.88491, -46.11847], ["2019-09-04T10:36:15", 8.89417, -46.1217], ["2019-09-04T11:06:15", 8.89884, -46.1235], ["2019-09-04T11:36:15", 8.90366, -46.12753], ["2019-09-04T14:05:30", 8.93843, -46.15393], ["2019-09-04T14:36:21", 8.95645, -46.16751], ["2019-09-04T15:36:21", 8.96477, -46.17249], ["2019-09-04T16:05:26", 8.97405, -46.17795], ["2019-09-04T16:35:26", 8.98568, -46.1843], ["2019-09-04T18:04:42", 9.01164, -46.19073], ["2019-09-04T18:35:58", 9.02288, -46.19162], ["2019-09-04T19:04:42", 9.03403, -46.19244], ["2019-09-04T20:04:21", 9.06971, -46.18971], ["2019-09-04T20:45:16", 9.07213, -46.1893], ["2019-09-04T21:04:21", 9.07868, -46.18808], ["2019-09-04T21:35:29", 9.08841, -46.18691], ["2019-09-04T22:04:09", 9.09615, -46.186], ["2019-09-04T22:35:29", 9.1043, -46.18597], ["2019-09-04T23:04:02", 9.11342, -46.18906], ["2019-09-04T23:34:02", 9.12377, -46.19507], ["2019-09-05T00:03:26", 9.13269, -46.19858], ["2019-09-05T00:34:28", 9.14119, -46.20261], ["2019-09-05T01:04:55", 9.14807, -46.20571], ["2019-09-05T01:34:55", 9.15408, -46.20837], ["2019-09-05T02:03:28", 9.15926, -46.21076], ["2019-09-05T02:33:28", 9.16519, -46.21265], ["2019-09-05T03:03:28", 9.17017, -46.21548], ["2019-09-05T03:32:29", 9.17581, -46.21831], ["2019-09-05T04:02:29", 9.18216, -46.2226], ["2019-09-05T05:31:07", 9.2048, -46.24282], ["2019-09-05T06:01:07", 9.21274, -46.24745], ["2019-09-05T06:31:07", 9.21978, -46.25131], ["2019-09-05T07:02:26", 9.22788, -46.25546], ["2019-09-05T07:30:49", 9.23511, -46.2587], ["2019-09-05T09:30:20", 9.26895, -46.27411], ["2019-09-05T10:01:26", 9.27368, -46.27676], ["2019-09-05T11:00:59", 9.28067, -46.2785], ["2019-09-05T11:29:24", 9.28806, -46.28018], ["2019-09-05T12:00:26", 9.29514, -46.27853], ["2019-09-05T12:29:24", 9.30223, -46.27924], ["2019-09-05T12:59:39", 9.30739, -46.28046], ["2019-09-05T13:29:06", 9.31424, -46.28311], ["2019-09-05T13:59:26", 9.32281, -46.28752], ["2019-09-05T14:29:26", 9.32945, -46.28915], ["2019-09-05T14:59:26", 9.33718, -46.29181], ["2019-09-05T15:28:33", 9.34763, -46.29614], ["2019-09-05T15:58:57", 9.35807, -46.29901], ["2019-09-05T16:28:40", 9.36619, -46.30043], ["2019-09-05T16:58:40", 9.37473, -46.30249], ["2019-09-05T17:28:07", 9.3838, -46.3049], ["2019-09-05T17:57:39", 9.39244, -46.30762], ["2019-09-05T18:27:39", 9.40098, -46.30865], ["2019-09-05T18:58:30", 9.41122, -46.30978], ["2019-09-05T19:26:57", 9.42184, -46.31016], ["2019-09-05T19:56:57", 9.43099, -46.30844], ["2019-09-05T20:26:57", 9.43957, -46.30835], ["2019-09-05T20:45:08", 9.44487, -46.30936], ["2019-09-05T20:57:33", 9.44847, -46.31024], ["2019-09-05T21:26:34", 9.4565, -46.31186], ["2019-09-05T21:58:27", 9.46635, -46.31674], ["2019-09-05T22:26:25", 9.47073, -46.31836], ["2019-09-05T22:57:15", 9.47424, -46.32129], ["2019-09-05T23:27:15", 9.47763, -46.32309], ["2019-09-05T23:55:31", 9.48118, -46.32465], ["2019-09-06T00:25:31", 9.48586, -46.3274], ["2019-09-06T00:55:31", 9.49006, -46.32834], ["2019-09-06T01:25:35", 9.4963, -46.32927], ["2019-09-06T01:55:35", 9.50235, -46.32901], ["2019-09-06T02:24:57", 9.50981, -46.32871], ["2019-09-06T02:54:57", 9.5181, -46.32751], ["2019-09-06T03:24:28", 9.52585, -46.32452], ["2019-09-06T03:54:13", 9.53462, -46.32104], ["2019-09-06T04:24:13", 9.54346, -46.31821], ["2019-09-06T04:54:27", 9.55097, -46.31384], ["2019-09-06T05:24:07", 9.55869, -46.31068], ["2019-09-06T05:54:07", 9.56387, -46.3075], ["2019-09-06T06:23:39", 9.56621, -46.30563], ["2019-09-06T06:53:55", 9.56714, -46.30588], ["2019-09-06T07:23:36", 9.56484, -46.30545], ["2019-09-06T07:53:36", 9.56101, -46.30588], ["2019-09-06T08:23:18", 9.55969, -46.30515], ["2019-09-06T08:53:57", 9.55997, -46.3053], ["2019-09-06T09:23:10", 9.56068, -46.30557], ["2019-09-06T09:52:50", 9.55938, -46.30548], ["2019-09-06T10:22:50", 9.55835, -46.30591], ["2019-09-06T10:52:18", 9.55688, -46.30713], ["2019-09-06T11:22:18", 9.55674, -46.3085], ["2019-09-06T11:52:37", 9.55687, -46.30884], ["2019-09-06T12:22:05", 9.5585, -46.30737], ["2019-09-06T12:52:28", 9.56373, -46.30682], ["2019-09-06T13:21:50", 9.57044, -46.30582], ["2019-09-06T13:51:41", 9.57504, -46.30338], ["2019-09-06T14:21:41", 9.5792, -46.30209], ["2019-09-06T14:51:58", 9.58545, -46.30115], ["2019-09-06T15:21:29", 9.59015, -46.29698], ["2019-09-06T15:51:29", 9.5932, -46.29346], ["2019-09-06T16:21:07", 9.59276, -46.29344], ["2019-09-06T16:51:07", 9.59422, -46.29636], ["2019-09-06T17:20:39", 9.59688, -46.29916], ["2019-09-06T17:50:32", 9.59732, -46.30173], ["2019-09-06T18:20:32", 9.60106, -46.30817], ["2019-09-06T18:50:58", 9.59685, -46.30771], ["2019-09-06T19:20:11", 9.59425, -46.3107], ["2019-09-06T19:50:28", 9.58954, -46.31396], ["2019-09-06T20:19:55", 9.58571, -46.31754], ["2019-09-06T20:45:32", 9.58314, -46.32059], ["2019-09-06T20:50:08", 9.58264, -46.32111], ["2019-09-06T21:20:46", 9.58015, -46.32491], ["2019-09-06T21:50:46", 9.57933, -46.32877], ["2019-09-06T22:19:22", 9.57855, -46.33044], ["2019-09-06T22:50:03", 9.5794, -46.33429], ["2019-09-06T23:19:06", 9.57757, -46.33682], ["2019-09-06T23:49:29", 9.57729, -46.33926], ["2019-09-07T00:18:51", 9.57876, -46.34128], ["2019-09-07T00:48:33", 9.58042, -46.34372], ["2019-09-07T01:18:33", 9.58149, -46.34818], ["2019-09-07T02:18:18", 9.58883, -46.35968], ["2019-09-07T02:48:05", 9.59464, -46.36511], ["2019-09-07T03:18:05", 9.5997, -46.37], ["2019-09-07T03:48:58", 9.60478, -46.3739], ["2019-09-07T04:17:35", 9.60993, -46.37901], ["2019-09-07T04:47:35", 9.61482, -46.38476], ["2019-09-07T05:17:35", 9.61924, -46.39111], ["2019-09-07T06:16:51", 9.63002, -46.40422], ["2019-09-07T06:47:28", 9.63502, -46.41013], ["2019-09-07T07:16:51", 9.63843, -46.41632], ["2019-09-07T07:46:56", 9.64301, -46.42198], ["2019-09-07T08:16:31", 9.64788, -46.42804], ["2019-09-07T08:46:56", 9.65025, -46.43185], ["2019-09-07T09:16:16", 9.65235, -46.43405], ["2019-09-07T09:46:27", 9.65588, -46.43915], ["2019-09-07T10:16:00", 9.65928, -46.44247], ["2019-09-07T10:46:27", 9.66203, -46.44525], ["2019-09-07T11:15:44", 9.66639, -46.44925], ["2019-09-07T11:45:58", 9.67223, -46.45444], ["2019-09-07T12:15:57", 9.67887, -46.46014], ["2019-09-07T12:45:57", 9.68432, -46.46555], ["2019-09-07T13:15:15", 9.69197, -46.47104], ["2019-09-07T13:45:15", 9.69853, -46.4743], ["2019-09-07T14:15:15", 9.70579, -46.47842], ["2019-09-07T14:44:55", 9.71411, -46.48337], ["2019-09-07T15:14:55", 9.7218, -46.48672], ["2019-09-07T15:44:35", 9.73185, -46.49067], ["2019-09-07T16:14:35", 9.74348, -46.49359], ["2019-09-07T19:13:18", 9.80617, -46.51529], ["2019-09-07T20:12:54", 9.81822, -46.52286], ["2019-09-07T20:45:59", 9.82405, -46.52673], ["2019-09-07T21:41:51", 9.83801, -46.53322], ["2019-09-07T22:11:51", 9.84599, -46.53545], ["2019-09-07T22:41:51", 9.85263, -46.53622], ["2019-09-07T23:11:34", 9.86074, -46.5395], ["2019-09-07T23:41:36", 9.86952, -46.54291], ["2019-09-08T00:11:34", 9.87928, -46.54739], ["2019-09-08T02:40:51", 9.92784, -46.55971], ["2019-09-08T03:10:51", 9.93493, -46.56237], ["2019-09-08T03:40:51", 9.94248, -46.56494], ["2019-09-08T04:10:39", 9.94909, -46.56709], ["2019-09-08T04:40:39", 9.95458, -46.56906], ["2019-09-08T08:40:56", 10.00196, -46.59418], ["2019-09-08T10:08:24", 10.01705, -46.61083], ["2019-09-08T10:38:33", 10.02223, -46.61578], ["2019-09-08T11:08:24", 10.0273, -46.62027], ["2019-09-08T11:38:56", 10.03317, -46.62524], ["2019-09-08T12:07:31", 10.03706, -46.6304], ["2019-09-08T12:37:31", 10.04371, -46.63761], ["2019-09-08T13:07:31", 10.05259, -46.64508], ["2019-09-08T14:37:57", 10.07531, -46.66763], ["2019-09-08T17:06:27", 10.10842, -46.70322], ["2019-09-08T18:35:36", 10.13311, -46.71504], ["2019-09-08T19:05:36", 10.14358, -46.71839], ["2019-09-08T19:35:36", 10.15401, -46.72165], ["2019-09-08T20:06:58", 10.16373, -46.72446], ["2019-09-08T20:35:27", 10.17242, -46.72638], ["2019-09-08T21:05:18", 10.18338, -46.72902], ["2019-09-08T21:35:18", 10.19304, -46.73099], ["2019-09-08T22:05:34", 10.20381, -46.73334], ["2019-09-08T22:34:58", 10.21399, -46.7345], ["2019-09-08T23:05:42", 10.22411, -46.7345], ["2019-09-09T01:34:17", 10.27052, -46.73132], ["2019-09-09T02:04:27", 10.28251, -46.72946], ["2019-09-09T02:34:27", 10.29354, -46.72749], ["2019-09-09T03:04:27", 10.3047, -46.72534], ["2019-09-09T03:33:59", 10.31659, -46.72319], ["2019-09-09T04:03:59", 10.32848, -46.7207], ["2019-09-09T04:33:10", 10.33919, -46.71707], ["2019-09-09T05:03:27", 10.3491, -46.71262], ["2019-09-09T05:32:47", 10.35929, -46.70892], ["2019-09-09T06:02:22", 10.36876, -46.70263], ["2019-09-09T06:32:22", 10.3785, -46.69714], ["2019-09-09T08:01:55", 10.40813, -46.67882], ["2019-09-09T08:31:55", 10.41504, -46.67195], ["2019-09-09T09:01:55", 10.42276, -46.6662], ["2019-09-09T09:31:25", 10.43033, -46.6609], ["2019-09-09T10:01:25", 10.43823, -46.65704], ["2019-09-09T10:31:55", 10.44782, -46.654], ["2019-09-09T11:01:55", 10.4567, -46.64902], ["2019-09-09T11:30:23", 10.46571, -46.64388], ["2019-09-09T12:00:23", 10.47588, -46.63899], ["2019-09-09T12:30:23", 10.48451, -46.63272], ["2019-09-09T13:00:08", 10.49594, -46.62684], ["2019-09-09T13:30:08", 10.50826, -46.62109], ["2019-09-09T14:01:57", 10.52158, -46.61533], ["2019-09-09T16:30:55", 10.57689, -46.57944], ["2019-09-09T17:01:26", 10.58527, -46.57047], ["2019-09-09T17:31:26", 10.59411, -46.55948], ["2019-09-09T17:58:58", 10.60183, -46.54984], ["2019-09-09T18:28:58", 10.6099, -46.53945], ["2019-09-09T18:58:58", 10.61986, -46.52829], ["2019-09-09T19:28:21", 10.62914, -46.51672], ["2019-09-09T20:28:15", 10.64727, -46.48247], ["2019-09-09T21:00:36", 10.65128, -46.47586], ["2019-09-09T21:28:15", 10.65769, -46.46222], ["2019-09-09T21:58:29", 10.66497, -46.44661], ["2019-09-09T22:28:29", 10.67089, -46.43073], ["2019-09-09T22:57:31", 10.67625, -46.41541], ["2019-09-10T00:26:38", 10.68935, -46.37057], ["2019-09-10T00:56:42", 10.69321, -46.35767], ["2019-09-10T01:26:38", 10.69544, -46.34491], ["2019-09-10T04:55:59", 10.67575, -46.25217], ["2019-09-10T05:59:28", 10.66551, -46.22696], ["2019-09-10T06:55:21", 10.66031, -46.20856], ["2019-09-10T07:25:57", 10.66017, -46.19994], ["2019-09-10T07:55:57", 10.65905, -46.19204], ["2019-09-10T08:25:57", 10.65755, -46.18268], ["2019-09-10T15:52:27", 10.61247, -46.02921], ["2019-09-10T17:21:58", 10.59925, -46.00108], ["2019-09-10T17:51:58", 10.59294, -45.9913], ["2019-09-10T18:21:58", 10.58796, -45.98392], ["2019-09-10T18:51:32", 10.58232, -45.9759], ["2019-09-10T19:21:32", 10.57588, -45.96903], ["2019-09-10T19:51:32", 10.56983, -45.96259], ["2019-09-10T20:21:20", 10.55791, -45.95234], ["2019-09-10T20:51:20", 10.55697, -45.95114], ["2019-09-10T21:22:02", 10.55235, -45.9446], ["2019-09-10T21:52:02", 10.54896, -45.93928], ["2019-09-10T22:22:02", 10.54463, -45.9343], ["2019-09-10T22:50:43", 10.54029, -45.92853], ["2019-09-10T23:22:00", 10.53728, -45.92218], ["2019-09-11T00:22:11", 10.5312, -45.91278], ["2019-09-11T00:50:23", 10.52857, -45.90866], ["2019-09-11T02:21:59", 10.52705, -45.89139], ["2019-09-11T04:51:28", 10.52543, -45.87207], ["2019-09-11T05:19:24", 10.52289, -45.86899], ["2019-09-11T06:49:12", 10.51556, -45.86044], ["2019-09-11T07:18:55", 10.5123, -45.85809], ["2019-09-11T07:48:55", 10.51071, -45.85706], ["2019-09-11T08:51:11", 10.50634, -45.85083], ["2019-09-11T09:18:22", 10.50519, -45.8475], ["2019-09-11T09:48:15", 10.50385, -45.84433], ["2019-09-11T10:19:33", 10.50266, -45.84149], ["2019-09-11T10:47:51", 10.5014, -45.84021], ["2019-09-11T10:49:24", 10.49844, -45.83799], ["2019-09-11T11:49:24", 10.4972, -45.83679], ["2019-09-11T14:17:14", 10.49551, -45.82455], ["2019-09-11T14:47:14", 10.49422, -45.82429], ["2019-09-11T15:17:14", 10.49366, -45.82489], ["2019-09-11T16:17:10", 10.49431, -45.82764], ["2019-09-11T16:45:43", 10.49513, -45.82906], ["2019-09-11T17:15:43", 10.49539, -45.83], ["2019-09-11T17:45:43", 10.4947, -45.83017], ["2019-09-11T20:15:09", 10.48921, -45.819], ["2019-09-11T20:45:01", 10.49008, -45.81524], ["2019-09-11T21:15:01", 10.49244, -45.81146], ["2019-09-11T21:44:59", 10.49362, -45.80716], ["2019-09-11T22:45:32", 10.49787, -45.80251], ["2019-09-11T23:15:32", 10.50019, -45.79976], ["2019-09-11T23:45:32", 10.50251, -45.79727], ["2019-09-12T00:43:57", 10.50527, -45.79111], ["2019-09-12T01:13:38", 10.50584, -45.7879], ["2019-09-12T01:43:57", 10.5063, -45.78442], ["2019-09-12T02:13:14", 10.50652, -45.78165], ["2019-09-12T02:43:30", 10.50792, -45.77905], ["2019-09-12T03:13:58", 10.50996, -45.77575], ["2019-09-12T03:43:58", 10.51155, -45.77283], ["2019-09-12T05:12:17", 10.51827, -45.76231], ["2019-09-12T05:42:17", 10.5211, -45.75871], ["2019-09-12T06:12:17", 10.52234, -45.75485], ["2019-09-12T06:43:07", 10.52289, -45.75104], ["2019-09-12T07:11:57", 10.52197, -45.74594], ["2019-09-12T07:42:25", 10.52237, -45.74112], ["2019-09-12T09:11:03", 10.52579, -45.72609], ["2019-09-12T09:41:03", 10.53064, -45.72137], ["2019-09-12T09:41:58", 10.53064, -45.72141], ["2019-09-12T10:11:03", 10.53562, -45.71674], ["2019-09-12T12:40:41", 10.54701, -45.68574], ["2019-09-12T13:10:41", 10.54808, -45.67913], ["2019-09-12T13:40:41", 10.54774, -45.67252], ["2019-09-12T14:10:26", 10.54824, -45.66608], ["2019-09-12T14:40:26", 10.54906, -45.6593], ["2019-09-12T16:09:20", 10.54594, -45.63934], ["2019-09-12T16:39:08", 10.54204, -45.63257], ["2019-09-12T17:09:08", 10.53809, -45.62656], ["2019-09-12T17:38:54", 10.53562, -45.62017], ["2019-09-12T18:08:54", 10.53326, -45.61545], ["2019-09-12T20:38:28", 10.51687, -45.58789], ["2019-09-12T21:06:48", 10.51347, -45.58267], ["2019-09-12T21:36:48", 10.51004, -45.57855], ["2019-09-12T22:06:48", 10.50656, -45.57443], ["2019-09-13T00:38:28", 10.48557, -45.54724], ["2019-09-13T01:05:59", 10.48175, -45.5419], ["2019-09-13T01:38:28", 10.47626, -45.53625], ["2019-09-13T04:04:51", 10.45507, -45.50845], ["2019-09-13T04:36:28", 10.45047, -45.50302], ["2019-09-13T07:03:46", 10.42355, -45.47862], ["2019-09-13T07:33:46", 10.42106, -45.47244], ["2019-09-13T08:03:46", 10.41776, -45.46652], ["2019-09-13T08:34:57", 10.41401, -45.4601], ["2019-09-13T09:04:57", 10.41041, -45.45392], ["2019-09-13T10:33:13", 10.39724, -45.43982], ["2019-09-13T12:03:27", 10.38257, -45.42809], ["2019-09-13T12:33:27", 10.37699, -45.42517], ["2019-09-13T13:03:27", 10.37094, -45.42148], ["2019-09-13T13:32:23", 10.36624, -45.41931], ["2019-09-13T15:32:27", 10.34908, -45.4124], ["2019-09-13T16:01:48", 10.34659, -45.41129], ["2019-09-13T16:32:27", 10.34505, -45.40948], ["2019-09-13T17:01:30", 10.34326, -45.40842], ["2019-09-13T17:33:57", 10.34248, -45.40753], ["2019-09-13T18:31:02", 10.34299, -45.4046], ["2019-09-13T19:45:16", 10.347, -45.39352], ["2019-09-13T20:33:27", 10.34703, -45.39352], ["2019-09-13T20:45:16", 10.34644, -45.39258], ["2019-09-13T23:30:30", 10.33101, -45.3772], ["2019-09-14T01:00:03", 10.32388, -45.3718], ["2019-09-14T03:59:34", 10.31527, -45.37732], ["2019-09-14T06:28:44", 10.31546, -45.38007], ["2019-09-14T07:01:29", 10.31851, -45.37943], ["2019-09-14T07:28:24", 10.32169, -45.37854], ["2019-09-14T07:59:14", 10.32544, -45.37674], ["2019-09-14T08:29:14", 10.3287, -45.37399], ["2019-09-14T10:58:34", 10.34171, -45.35773], ["2019-09-14T11:26:47", 10.34175, -45.3558], ["2019-09-14T11:56:47", 10.34081, -45.35391], ["2019-09-14T12:26:47", 10.34081, -45.35254], ["2019-09-14T12:58:28", 10.34086, -45.35217], ["2019-09-14T14:55:52", 10.34669, -45.35718], ["2019-09-14T15:28:00", 10.34857, -45.35882], ["2019-09-14T15:58:00", 10.35213, -45.36028], ["2019-09-14T16:28:00", 10.35771, -45.36157], ["2019-09-14T17:25:12", 10.37221, -45.36041], ["2019-09-14T17:56:40", 10.37622, -45.35942], ["2019-09-14T18:26:40", 10.3833, -45.35822], ["2019-09-14T18:56:40", 10.38969, -45.35565], ["2019-09-14T19:54:50", 10.40233, -45.34644], ["2019-09-14T21:53:50", 10.4257, -45.33087], ["2019-09-14T22:23:50", 10.42995, -45.32666], ["2019-09-15T00:23:50", 10.44446, -45.30466], ["2019-09-15T01:54:01", 10.44802, -45.28948], ["2019-09-15T02:24:01", 10.44798, -45.28356], ["2019-09-15T02:54:01", 10.45013, -45.27798], ["2019-09-15T03:22:09", 10.45225, -45.2731], ["2019-09-15T03:52:02", 10.45477, -45.26813], ["2019-09-15T04:23:34", 10.45675, -45.26489], ["2019-09-15T11:23:38", 10.50541, -45.18015], ["2019-09-15T11:50:11", 10.50603, -45.17368], ["2019-09-15T12:20:00", 10.50519, -45.16547], ["2019-09-15T12:50:00", 10.50429, -45.15869], ["2019-09-15T13:49:31", 10.50299, -45.14187], ["2019-09-15T14:19:38", 10.50067, -45.13477], ["2019-09-15T14:49:31", 10.49827, -45.12668], ["2019-09-15T15:21:27", 10.49604, -45.1178], ["2019-09-15T19:18:33", 10.47751, -45.06229], ["2019-09-15T21:48:13", 10.47015, -45.03128], ["2019-09-16T00:18:37", 10.45131, -44.99866], ["2019-09-16T03:48:32", 10.4349, -44.96866], ["2019-09-16T04:16:25", 10.43513, -44.96183], ["2019-09-16T04:46:25", 10.43552, -44.95453], ["2019-09-16T05:17:12", 10.43512, -44.9465], ["2019-09-16T05:45:42", 10.4335, -44.93757], ["2019-09-16T06:17:28", 10.43042, -44.92734], ["2019-09-16T06:45:42", 10.42706, -44.91852], ["2019-09-16T09:14:39", 10.41657, -44.8743], ["2019-09-16T09:45:26", 10.41283, -44.86526], ["2019-09-16T10:14:39", 10.40906, -44.85748], ["2019-09-16T11:45:32", 10.39394, -44.8339], ["2019-09-16T12:15:32", 10.38918, -44.82592], ["2019-09-16T12:45:32", 10.38424, -44.81802], ["2019-09-16T13:15:57", 10.3788, -44.81045], ["2019-09-16T13:45:57", 10.37348, -44.80212], ["2019-09-16T14:13:40", 10.36794, -44.79446], ["2019-09-16T15:43:15", 10.34342, -44.76911], ["2019-09-16T16:13:15", 10.33394, -44.76001], ["2019-09-16T16:43:15", 10.32583, -44.75143], ["2019-09-16T17:13:43", 10.31794, -44.74344], ["2019-09-16T17:42:27", 10.31078, -44.73624], ["2019-09-16T18:12:27", 10.3073, -44.72817], ["2019-09-16T18:42:27", 10.30421, -44.71924], ["2019-09-16T20:12:09", 10.28153, -44.67881], ["2019-09-16T20:42:09", 10.28144, -44.67855], ["2019-09-16T21:12:09", 10.27702, -44.66748], ["2019-09-17T01:10:33", 10.23822, -44.60266], ["2019-09-17T02:10:09", 10.22923, -44.58713], ["2019-09-17T02:40:30", 10.22405, -44.5797], ["2019-09-17T03:10:30", 10.21864, -44.57275], ["2019-09-17T03:40:30", 10.21272, -44.56528], ["2019-09-17T04:10:30", 10.20683, -44.5576], ["2019-09-17T04:40:30", 10.20147, -44.54919], ["2019-09-17T05:09:26", 10.1974, -44.54236], ["2019-09-17T05:42:52", 10.19515, -44.53412], ["2019-09-17T06:09:10", 10.19176, -44.52597], ["2019-09-17T06:39:32", 10.18674, -44.51689], ["2019-09-17T07:09:32", 10.18065, -44.50668], ["2019-09-17T09:38:09", 10.1476, -44.44986], ["2019-09-17T12:07:12", 10.12015, -44.40585], ["2019-09-17T17:08:29", 10.10062, -44.31516], ["2019-09-17T18:35:34", 10.11373, -44.28186], ["2019-09-17T19:05:39", 10.11418, -44.27127], ["2019-09-17T19:35:34", 10.11313, -44.25955], ["2019-09-17T19:42:46", 10.10998, -44.23656], ["2019-09-17T20:12:46", 10.10998, -44.2363], ["2019-09-17T20:42:46", 10.11028, -44.23373], ["2019-09-17T21:07:02", 10.11086, -44.22421], ["2019-09-18T02:34:08", 10.11412, -44.10779], ["2019-09-18T03:03:33", 10.11453, -44.09569], ["2019-09-18T03:33:33", 10.115, -44.08608], ["2019-09-18T04:03:33", 10.11723, -44.07578], ["2019-09-18T04:35:52", 10.12055, -44.06223], ["2019-09-18T07:32:22", 10.12574, -43.9921], ["2019-09-18T08:02:17", 10.12418, -43.98114], ["2019-09-18T08:33:28", 10.12374, -43.96783], ["2019-09-18T09:01:57", 10.12016, -43.95685], ["2019-09-18T09:31:49", 10.11672, -43.94492], ["2019-09-18T10:01:49", 10.11367, -43.93411], ["2019-09-18T11:33:29", 10.10463, -43.90372], ["2019-09-18T12:01:12", 10.10408, -43.89505], ["2019-09-18T12:33:29", 10.10485, -43.88544], ["2019-09-18T14:01:28", 10.10728, -43.86211], ["2019-09-18T14:31:28", 10.11131, -43.85507], ["2019-09-18T15:01:28", 10.11474, -43.84717], ["2019-09-18T22:28:30", 10.0929, -43.74063], ["2019-09-19T00:58:07", 10.07087, -43.70877], ["2019-09-19T01:58:30", 10.06302, -43.69513], ["2019-09-19T02:28:30", 10.06122, -43.68886], ["2019-09-19T02:58:30", 10.05843, -43.68277], ["2019-09-19T03:27:50", 10.05322, -43.67746], ["2019-09-19T04:28:59", 10.04217, -43.66846], ["2019-09-19T05:57:20", 10.02325, -43.66022], ["2019-09-19T06:58:53", 10.00848, -43.66324], ["2019-09-19T16:23:44", 9.85802, -43.70163], ["2019-09-19T16:54:58", 9.84737, -43.70344], ["2019-09-19T17:24:58", 9.83771, -43.70473], ["2019-09-19T17:54:58", 9.82651, -43.70636], ["2019-09-19T18:23:07", 9.8171, -43.70776], ["2019-09-19T19:22:40", 9.79983, -43.71133], ["2019-09-19T19:52:34", 9.79146, -43.71451], ["2019-09-19T20:51:58", 9.77492, -43.72548], ["2019-09-19T21:21:58", 9.76746, -43.73243], ["2019-09-19T21:51:58", 9.76174, -43.73749], ["2019-09-19T22:21:50", 9.75972, -43.74332], ["2019-09-19T22:51:44", 9.75998, -43.7494], ["2019-09-19T23:21:44", 9.75878, -43.75421], ["2019-09-19T23:51:24", 9.75519, -43.75791], ["2019-09-20T00:21:24", 9.75455, -43.76212], ["2019-09-20T00:51:06", 9.75118, -43.76749], ["2019-09-20T01:21:06", 9.75067, -43.77127], ["2019-09-20T01:51:28", 9.75003, -43.77484], ["2019-09-20T02:23:00", 9.75027, -43.77859], ["2019-09-20T02:53:00", 9.75189, -43.78314], ["2019-09-20T03:20:40", 9.75164, -43.78662], ["2019-09-20T03:50:40", 9.74841, -43.78937], ["2019-09-20T04:21:00", 9.74621, -43.79125], ["2019-09-20T04:51:00", 9.74515, -43.79074], ["2019-09-20T05:21:00", 9.74335, -43.78928], ["2019-09-20T05:49:50", 9.74119, -43.78809], ["2019-09-20T06:49:07", 9.73856, -43.7832], ["2019-09-20T07:19:07", 9.73972, -43.78148], ["2019-09-20T07:49:07", 9.73945, -43.77985], ["2019-09-20T08:19:31", 9.73883, -43.7791], ["2019-09-20T08:49:31", 9.74166, -43.77756], ["2019-09-20T09:19:31", 9.74771, -43.77567], ["2019-09-20T09:49:58", 9.74979, -43.7756], ["2019-09-20T10:19:58", 9.75327, -43.77646], ["2019-09-20T10:48:10", 9.7593, -43.77744], ["2019-09-20T11:17:49", 9.7669, -43.77896], ["2019-09-20T11:48:00", 9.77431, -43.77954], ["2019-09-20T12:17:49", 9.7802, -43.7793], ["2019-09-20T12:47:32", 9.78364, -43.77873], ["2019-09-20T13:17:48", 9.78726, -43.77798], ["2019-09-20T13:47:32", 9.79252, -43.77667], ["2019-09-20T15:20:00", 9.8065, -43.77269], ["2019-09-20T15:50:46", 9.80791, -43.77054], ["2019-09-20T16:20:00", 9.80999, -43.76797], ["2019-09-20T16:46:47", 9.80951, -43.76508], ["2019-09-20T17:16:32", 9.81209, -43.76163], ["2019-09-20T17:48:14", 9.81307, -43.75775], ["2019-09-20T18:47:40", 9.81742, -43.74927], ["2019-09-20T19:17:40", 9.81814, -43.74524], ["2019-09-20T19:47:40", 9.82067, -43.74121], ["2019-09-20T20:15:51", 9.8228, -43.73865], ["2019-09-20T20:45:35", 9.82535, -43.73699], ["2019-09-20T21:15:35", 9.82981, -43.73553], ["2019-09-21T04:43:19", 9.88796, -43.69022], ["2019-09-21T07:12:22", 9.88809, -43.67086], ["2019-09-21T07:42:22", 9.88865, -43.66708], ["2019-09-21T08:12:22", 9.89286, -43.66382], ["2019-09-21T09:41:50", 9.89511, -43.65283], ["2019-09-21T10:11:18", 9.90085, -43.6468], ["2019-09-21T10:41:18", 9.90527, -43.64174], ["2019-09-21T11:11:18", 9.9078, -43.63779], ["2019-09-21T11:42:03", 9.91325, -43.63336], ["2019-09-21T13:43:59", 9.9148, -43.6156], ["2019-09-21T14:12:04", 9.91507, -43.60867], ["2019-09-21T14:40:16", 9.91867, -43.59875], ["2019-09-21T15:12:04", 9.92412, -43.58755], ["2019-09-21T15:39:47", 9.92592, -43.57777], ["2019-09-21T16:09:47", 9.92634, -43.56799], ["2019-09-21T18:38:29", 9.9063, -43.53425], ["2019-09-21T19:08:29", 9.90016, -43.53082], ["2019-09-21T19:38:29", 9.89085, -43.52893], ["2019-09-21T22:09:02", 9.84243, -43.51541], ["2019-09-21T22:37:27", 9.83405, -43.5119], ["2019-09-21T23:09:02", 9.82539, -43.50897], ["2019-09-22T00:10:27", 9.81103, -43.50415], ["2019-09-22T01:38:28", 9.78684, -43.5004], ["2019-09-22T02:08:16", 9.78015, -43.49856], ["2019-09-22T02:38:16", 9.76989, -43.49847], ["2019-09-22T04:08:46", 9.75146, -43.50233], ["2019-09-22T04:36:22", 9.74611, -43.50632], ["2019-09-22T05:08:46", 9.7376, -43.51074], ["2019-09-22T05:35:47", 9.73035, -43.51361], ["2019-09-22T06:07:57", 9.72098, -43.5155], ["2019-09-22T06:37:57", 9.71003, -43.51782], ["2019-09-22T10:04:21", 9.66186, -43.54297], ["2019-09-22T10:35:29", 9.65621, -43.5477], ["2019-09-22T11:35:04", 9.64296, -43.55548], ["2019-09-22T13:03:36", 9.62387, -43.56909], ["2019-09-22T13:33:36", 9.61764, -43.57493], ["2019-09-22T14:03:36", 9.61464, -43.57956], ["2019-09-22T20:01:35", 9.57015, -43.65668], ["2019-09-22T21:03:06", 9.56747, -43.67038], ["2019-09-22T21:31:09", 9.56701, -43.67786], ["2019-09-22T22:03:06", 9.56514, -43.68497], ["2019-09-22T22:30:30", 9.56398, -43.69133], ["2019-09-22T23:00:30", 9.56865, -43.69699], ["2019-09-22T23:33:58", 9.57113, -43.70401], ["2019-09-23T00:00:58", 9.57382, -43.70971], ["2019-09-23T00:30:58", 9.57626, -43.71615], ["2019-09-23T01:00:58", 9.57884, -43.72156], ["2019-09-23T01:29:45", 9.5791, -43.72775], ["2019-09-23T02:00:59", 9.58013, -43.73434], ["2019-09-23T02:29:34", 9.57949, -43.74008], ["2019-09-23T03:29:03", 9.58299, -43.75366], ["2019-09-23T04:00:31", 9.58253, -43.7619], ["2019-09-23T04:29:03", 9.58282, -43.7692], ["2019-09-23T04:59:29", 9.58575, -43.7767], ["2019-09-23T05:28:38", 9.58531, -43.78389], ["2019-09-23T06:00:30", 9.5877, -43.78952], ["2019-09-23T06:28:38", 9.59131, -43.79358], ["2019-09-23T06:59:38", 9.59507, -43.79844], ["2019-09-23T07:28:19", 9.6003, -43.80225], ["2019-09-23T07:59:38", 9.60598, -43.80737], ["2019-09-23T08:28:04", 9.61364, -43.80957], ["2019-09-23T08:57:46", 9.61877, -43.81244], ["2019-09-23T09:27:46", 9.62165, -43.81381], ["2019-09-23T09:58:58", 9.624, -43.81595], ["2019-09-23T10:58:39", 9.63411, -43.81607], ["2019-09-23T11:28:39", 9.63763, -43.8159], ["2019-09-23T11:58:39", 9.6433, -43.81393], ["2019-09-23T12:28:00", 9.64821, -43.81358], ["2019-09-23T12:58:00", 9.6516, -43.81418], ["2019-09-23T15:55:36", 9.65198, -43.81422], ["2019-09-23T16:25:50", 9.65067, -43.81454], ["2019-09-23T16:55:36", 9.64936, -43.81268], ["2019-09-23T17:26:59", 9.64727, -43.81171], ["2019-09-23T18:54:55", 9.64926, -43.80563], ["2019-09-23T19:54:55", 9.66915, -43.78669], ["2019-09-23T19:55:29", 9.65968, -43.79541], ["2019-09-23T20:38:27", 9.67089, -43.78494], ["2019-09-23T20:54:55", 9.6731, -43.78043], ["2019-09-23T21:23:59", 9.67496, -43.77284], ["2019-09-23T21:53:59", 9.67706, -43.76383], ["2019-09-23T22:23:59", 9.67706, -43.75714], ["2019-09-23T22:53:35", 9.6814, -43.74755], ["2019-09-23T23:23:35", 9.68577, -43.73828], ["2019-09-23T23:53:59", 9.68404, -43.73025], ["2019-09-24T00:23:59", 9.68289, -43.71909], ["2019-09-24T00:52:59", 9.68351, -43.70807], ["2019-09-24T01:22:52", 9.67894, -43.69605], ["2019-09-24T01:52:52", 9.67465, -43.68378], ["2019-09-24T02:52:52", 9.66583, -43.65982], ["2019-09-24T03:22:34", 9.65715, -43.64851], ["2019-09-24T03:52:34", 9.65033, -43.6377], ["2019-09-24T04:22:26", 9.64298, -43.6282], ["2019-09-24T04:52:11", 9.63385, -43.61767], ["2019-09-24T05:22:11", 9.62693, -43.60806], ["2019-09-24T07:51:23", 9.58477, -43.55887], ["2019-09-24T08:21:08", 9.57574, -43.55076], ["2019-09-24T08:51:08", 9.56959, -43.54321], ["2019-09-24T09:20:33", 9.56274, -43.53417], ["2019-09-24T09:50:33", 9.55519, -43.52722], ["2019-09-24T11:20:11", 9.52821, -43.49991], ["2019-09-24T11:51:06", 9.516, -43.49039], ["2019-09-24T12:19:41", 9.50414, -43.4806], ["2019-09-24T12:49:41", 9.49179, -43.47099], ["2019-09-24T13:19:41", 9.48105, -43.46103], ["2019-09-24T13:49:27", 9.46796, -43.44969], ["2019-09-24T14:19:27", 9.45534, -43.43982], ["2019-09-24T14:49:13", 9.44143, -43.43036], ["2019-09-24T15:19:13", 9.42976, -43.42169], ["2019-09-24T15:49:58", 9.4177, -43.41367], ["2019-09-24T16:18:59", 9.40668, -43.40662], ["2019-09-24T16:51:28", 9.39845, -43.39792], ["2019-09-24T17:18:30", 9.3897, -43.39126], ["2019-09-24T17:48:30", 9.37782, -43.38525], ["2019-09-24T18:18:59", 9.36788, -43.37823], ["2019-09-24T19:18:38", 9.34901, -43.36859], ["2019-09-24T19:47:59", 9.34038, -43.36356], ["2019-09-24T20:17:59", 9.33167, -43.35721], ["2019-09-24T21:17:27", 9.31302, -43.34848], ["2019-09-24T21:46:54", 9.30278, -43.3447], ["2019-09-24T22:16:39", 9.29334, -43.33889], ["2019-09-24T22:46:39", 9.28428, -43.33383], ["2019-09-24T23:16:19", 9.27422, -43.32854], ["2019-09-24T23:46:19", 9.26432, -43.32288], ["2019-09-25T00:16:27", 9.25389, -43.31638], ["2019-09-25T00:46:00", 9.24541, -43.31046], ["2019-09-25T01:15:58", 9.23652, -43.30576], ["2019-09-25T01:45:58", 9.22888, -43.30233], ["2019-09-25T02:15:58", 9.22021, -43.29984], ["2019-09-25T02:45:35", 9.21144, -43.29721], ["2019-09-25T03:15:35", 9.20135, -43.29498], ["2019-09-25T03:45:58", 9.19059, -43.29223], ["2019-09-25T04:15:58", 9.17797, -43.29111], ["2019-09-25T04:44:51", 9.16714, -43.29016], ["2019-09-25T05:16:00", 9.15588, -43.28796], ["2019-09-25T06:14:59", 9.13542, -43.28107], ["2019-09-25T06:44:19", 9.1258, -43.277], ["2019-09-25T07:16:56", 9.11617, -43.27292], ["2019-09-25T07:44:19", 9.10983, -43.26953], ["2019-09-25T08:14:03", 9.10305, -43.26461], ["2019-09-25T08:44:03", 9.09511, -43.2586], ["2019-09-25T09:14:03", 9.08785, -43.25354], ["2019-09-25T09:43:48", 9.08085, -43.24887], ["2019-09-25T10:13:48", 9.0748, -43.24518], ["2019-09-25T10:44:29", 9.06654, -43.24008], ["2019-09-25T11:13:20", 9.05946, -43.2363], ["2019-09-25T11:44:10", 9.05139, -43.23272], ["2019-09-25T12:12:53", 9.04461, -43.22937], ["2019-09-25T12:44:10", 9.03757, -43.22516], ["2019-09-25T13:43:29", 9.02325, -43.21751], ["2019-09-25T14:13:29", 9.01634, -43.21425], ["2019-09-25T14:43:29", 9.00969, -43.21185], ["2019-09-25T16:11:34", 8.99424, -43.20279], ["2019-09-25T17:11:15", 8.98415, -43.19336], ["2019-09-25T18:41:17", 8.97167, -43.17596], ["2019-09-25T19:12:00", 8.9686, -43.17027], ["2019-09-25T19:42:00", 8.9662, -43.16418], ["2019-09-25T20:40:58", 8.96142, -43.15247], ["2019-09-25T21:10:58", 8.95975, -43.14526], ["2019-09-25T21:40:58", 8.9573, -43.13788], ["2019-09-26T00:40:33", 8.95252, -43.09875], ["2019-09-26T01:41:28", 8.94014, -43.08868], ["2019-09-26T02:11:01", 8.93435, -43.08358], ["2019-09-26T02:41:01", 8.92821, -43.07766], ["2019-09-26T03:11:01", 8.92272, -43.07028], ["2019-09-26T03:37:35", 8.91834, -43.06403], ["2019-09-26T04:39:29", 8.91062, -43.04568], ["2019-09-26T05:06:55", 8.90968, -43.03882], ["2019-09-26T05:36:55", 8.90818, -43.03281], ["2019-09-26T06:08:59", 8.90618, -43.02573], ["2019-09-26T13:04:32", 8.9209, -42.88666], ["2019-09-26T14:03:39", 8.92531, -42.8669], ["2019-09-26T14:33:39", 8.92652, -42.85789], ["2019-09-26T15:03:39", 8.92634, -42.84836], ["2019-09-26T15:36:32", 8.92606, -42.83893], ["2019-09-26T16:03:44", 8.92596, -42.8309], ["2019-09-26T16:34:59", 8.92597, -42.82139], ["2019-09-26T17:04:59", 8.92727, -42.81152], ["2019-09-26T17:32:58", 8.92974, -42.80281], ["2019-09-26T18:02:58", 8.93317, -42.79337], ["2019-09-26T18:32:58", 8.93703, -42.7847], ["2019-09-26T20:02:16", 8.95119, -42.74533], ["2019-09-26T20:32:16", 8.95182, -42.74387], ["2019-09-26T21:02:16", 8.95539, -42.7352], ["2019-09-26T21:32:07", 8.96102, -42.72464], ["2019-09-26T22:02:57", 8.96646, -42.7142], ["2019-09-27T01:30:45", 9.00416, -42.62689], ["2019-09-27T03:00:21", 9.01824, -42.57562], ["2019-09-27T03:01:55", 9.0228, -42.55634], ["2019-09-27T04:01:55", 9.02558, -42.53668], ["2019-09-27T08:58:29", 9.03162, -42.36639], ["2019-09-27T10:57:47", 9.03265, -42.32565], ["2019-09-27T11:27:07", 9.03382, -42.31571], ["2019-09-27T11:57:07", 9.0345, -42.30696], ["2019-09-27T12:27:07", 9.03545, -42.29675], ["2019-09-27T14:26:14", 9.03965, -42.26505], ["2019-09-27T14:56:14", 9.04003, -42.26042], ["2019-09-27T15:26:14", 9.03909, -42.25647], ["2019-09-27T15:56:00", 9.03877, -42.25115], ["2019-09-27T16:26:00", 9.03834, -42.24557], ["2019-09-27T16:57:12", 9.03791, -42.23914], ["2019-09-27T17:28:16", 9.03708, -42.23378], ["2019-09-27T17:58:16", 9.03511, -42.22717], ["2019-09-27T18:25:32", 9.03297, -42.2198], ["2019-09-27T18:55:32", 9.03116, -42.2113], ["2019-09-27T21:25:58", 9.03126, -42.17331], ["2019-09-27T22:55:01", 9.02581, -42.15354], ["2019-09-27T23:25:01", 9.02379, -42.14659], ["2019-09-27T23:55:01", 9.02103, -42.13809], ["2019-09-28T00:24:27", 9.01816, -42.1315], ["2019-09-28T00:54:27", 9.01554, -42.12747], ["2019-09-28T01:54:06", 9.01033, -42.11986], ["2019-09-28T02:24:06", 9.00712, -42.11729], ["2019-09-28T02:54:06", 9.00376, -42.11334], ["2019-09-28T04:23:24", 8.99726, -42.10965], ["2019-09-28T05:23:03", 8.99048, -42.11157], ["2019-09-28T05:51:16", 8.98703, -42.11345], ["2019-09-28T06:21:16", 8.98338, -42.11542], ["2019-09-28T06:51:16", 8.97905, -42.11722], ["2019-09-28T07:22:04", 8.97539, -42.11938], ["2019-09-28T07:52:04", 8.97316, -42.12067], ["2019-09-28T08:22:04", 8.97049, -42.12067], ["2019-09-28T08:50:37", 8.96791, -42.12082], ["2019-09-28T09:22:26", 8.96542, -42.12106], ["2019-09-28T10:19:42", 8.9647, -42.1203], ["2019-09-28T10:51:30", 8.96362, -42.11896], ["2019-09-28T11:19:42", 8.96251, -42.11807], ["2019-09-28T11:49:17", 8.9634, -42.11683], ["2019-09-28T12:19:17", 8.96439, -42.11511], ["2019-09-28T12:49:14", 8.96411, -42.11471], ["2019-09-28T13:19:14", 8.96278, -42.11557], ["2019-09-28T14:48:20", 8.95523, -42.12346], ["2019-09-28T15:18:30", 8.95288, -42.12701], ["2019-09-28T15:48:20", 8.95068, -42.13101], ["2019-09-28T18:18:39", 8.94872, -42.15378], ["2019-09-28T18:48:39", 8.94786, -42.1579], ["2019-09-28T19:18:39", 8.94571, -42.16159], ["2019-09-28T21:16:40", 8.93591, -42.17335], ["2019-09-28T21:46:40", 8.93385, -42.1761], ["2019-09-28T22:16:40", 8.93146, -42.17902], ["2019-09-28T22:47:54", 8.93027, -42.18213], ["2019-09-29T01:15:47", 8.93352, -42.20215], ["2019-09-29T01:45:17", 8.93617, -42.20756], ["2019-09-29T02:15:17", 8.93922, -42.21357], ["2019-09-29T02:45:17", 8.94231, -42.2182], ["2019-09-29T05:15:30", 8.96063, -42.2374], ["2019-09-29T08:15:29", 8.98185, -42.25339], ["2019-09-29T08:43:25", 8.98699, -42.25535], ["2019-09-29T09:13:25", 8.99145, -42.25629], ["2019-09-29T09:44:58", 8.99609, -42.25677], ["2019-09-29T10:13:04", 9.00144, -42.25674], ["2019-09-29T11:42:36", 9.01624, -42.25897], ["2019-09-29T12:13:59", 9.02017, -42.26178], ["2019-09-29T12:42:32", 9.02355, -42.26385], ["2019-09-29T17:11:51", 9.05239, -42.25778], ["2019-09-29T17:40:45", 9.05508, -42.25635], ["2019-09-29T23:38:37", 9.0947, -42.22318], ["2019-09-30T00:08:18", 9.09643, -42.21682], ["2019-09-30T00:38:18", 9.09756, -42.21227], ["2019-09-30T01:08:18", 9.0988, -42.20901], ["2019-09-30T01:40:00", 9.09859, -42.20599], ["2019-09-30T02:07:55", 9.09983, -42.20312], ["2019-09-30T02:37:55", 9.10077, -42.19934], ["2019-09-30T04:07:09", 9.09834, -42.18764], ["2019-09-30T04:37:09", 9.09906, -42.18369], ["2019-09-30T05:07:09", 9.09825, -42.1806], ["2019-09-30T07:35:24", 9.0934, -42.15456], ["2019-09-30T08:05:24", 9.09525, -42.15138], ["2019-09-30T08:35:24", 9.09451, -42.14743], ["2019-09-30T10:36:00", 9.09395, -42.13269], ["2019-09-30T11:34:18", 9.09162, -42.12323], ["2019-09-30T12:04:18", 9.09162, -42.11722], ["2019-09-30T12:34:18", 9.09282, -42.11087], ["2019-09-30T13:07:00", 9.09432, -42.10397], ["2019-09-30T13:33:43", 9.09535, -42.0976], ["2019-09-30T15:03:18", 9.10474, -42.07599], ["2019-09-30T15:04:57", 9.10478, -42.07595], ["2019-09-30T15:34:57", 9.10821, -42.06874], ["2019-09-30T16:04:57", 9.11262, -42.0611], ["2019-09-30T19:01:47", 9.14708, -42.02823], ["2019-09-30T19:31:47", 9.1515, -42.02463], ["2019-09-30T20:01:47", 9.15635, -42.02008], ["2019-09-30T20:09:11", 9.16065, -42.01592], ["2019-09-30T20:39:11", 9.16137, -42.01523], ["2019-09-30T21:01:27", 9.16391, -42.01276], ["2019-09-30T22:30:53", 9.16987, -42.00382], ["2019-09-30T23:00:53", 9.17065, -42.00116], ["2019-09-30T23:30:53", 9.17129, -41.99979], ["2019-10-01T00:02:45", 9.17165, -41.99906], ["2019-10-01T00:32:45", 9.17281, -41.99872], ["2019-10-01T05:00:26", 9.18909, -41.9819], ["2019-10-01T05:29:16", 9.1914, -41.9812], ["2019-10-01T05:58:53", 9.19408, -41.98095], ["2019-10-01T06:28:53", 9.19614, -41.98035], ["2019-10-01T08:28:18", 9.2075, -41.97241], ["2019-10-01T10:27:36", 9.21671, -41.96405], ["2019-10-01T10:58:41", 9.2187, -41.96243], ["2019-10-01T11:27:17", 9.21912, -41.96133], ["2019-10-01T11:58:04", 9.21977, -41.96045], ["2019-10-01T14:27:30", 9.24346, -41.95224], ["2019-10-01T14:56:17", 9.2491, -41.95148], ["2019-10-01T15:28:01", 9.25404, -41.9512], ["2019-10-01T16:25:53", 9.26623, -41.94998], ["2019-10-01T16:57:19", 9.27225, -41.95053], ["2019-10-01T20:39:38", 9.29477, -41.95792], ["2019-10-01T20:54:19", 9.29566, -41.95944], ["2019-10-01T21:24:19", 9.29875, -41.96167], ["2019-10-01T21:54:58", 9.30232, -41.96444], ["2019-10-01T22:24:58", 9.30592, -41.96693], ["2019-10-01T22:54:58", 9.31209, -41.9689], ["2019-10-01T23:54:29", 9.32548, -41.97202], ["2019-10-02T02:52:30", 9.36969, -41.98495], ["2019-10-02T03:22:04", 9.38033, -41.9844], ["2019-10-02T03:52:04", 9.38655, -41.98371], ["2019-10-02T04:22:04", 9.39551, -41.98071], ["2019-10-02T06:22:59", 9.42102, -41.9696], ["2019-10-02T06:51:26", 9.42586, -41.96704], ["2019-10-02T07:22:56", 9.42772, -41.96484], ["2019-10-02T07:51:07", 9.43024, -41.96405], ["2019-10-02T08:50:46", 9.43727, -41.96368], ["2019-10-02T09:20:18", 9.44106, -41.96454], ["2019-10-02T09:50:18", 9.44299, -41.96548], ["2019-10-02T10:21:32", 9.44398, -41.96716], ["2019-10-02T10:49:59", 9.44576, -41.96756], ["2019-10-02T11:21:30", 9.44843, -41.96686], ["2019-10-02T13:19:19", 9.46312, -41.9679], ["2019-10-02T17:18:59", 9.49353, -41.95978], ["2019-10-02T20:16:45", 9.52605, -41.931], ["2019-10-02T20:48:00", 9.52682, -41.93054], ["2019-10-02T21:16:45", 9.52952, -41.92877], ["2019-10-02T21:46:41", 9.53265, -41.92701], ["2019-10-02T22:16:41", 9.53514, -41.92529], ["2019-10-02T23:48:41", 9.53755, -41.9199], ["2019-10-03T00:16:02", 9.53736, -41.91779], ["2019-10-03T00:48:41", 9.53614, -41.91586], ["2019-10-03T03:15:04", 9.52116, -41.90805], ["2019-10-03T08:13:25", 9.46719, -41.90836], ["2019-10-03T15:12:05", 9.43688, -41.95538], ["2019-10-03T16:11:44", 9.42526, -41.97095], ["2019-10-03T16:41:44", 9.42085, -41.97739], ["2019-10-03T18:11:09", 9.41541, -41.99729], ["2019-10-03T18:41:09", 9.41502, -42.00338], ["2019-10-03T19:11:09", 9.41206, -42.01196], ["2019-10-03T19:41:41", 9.41421, -42.01636], ["2019-10-03T20:11:41", 9.41489, -42.02228], ["2019-10-03T20:39:09", 9.41728, -42.02838], ["2019-10-03T20:40:00", 9.41736, -42.02847], ["2019-10-03T21:39:21", 9.42389, -42.04135], ["2019-10-03T22:09:21", 9.42852, -42.04435], ["2019-10-03T22:39:21", 9.42951, -42.04941], ["2019-10-04T03:38:06", 9.4463, -42.10397], ["2019-10-04T07:36:36", 9.446, -42.14099], ["2019-10-04T08:08:31", 9.44609, -42.14766], ["2019-10-04T08:38:31", 9.44862, -42.15393], ["2019-10-04T09:36:21", 9.45703, -42.16354], ["2019-10-04T10:07:59", 9.46099, -42.16788], ["2019-10-04T13:05:12", 9.47514, -42.1897], ["2019-10-04T13:34:42", 9.48005, -42.19251], ["2019-10-04T14:04:42", 9.48485, -42.19483], ["2019-10-04T14:34:42", 9.48602, -42.19861], ["2019-10-04T16:33:41", 9.48259, -42.21741], ["2019-10-04T17:03:41", 9.48409, -42.2187], ["2019-10-04T17:33:41", 9.48452, -42.21964], ["2019-10-04T20:02:53", 9.48748, -42.23672], ["2019-10-04T21:32:29", 9.49342, -42.24813], ["2019-10-04T22:02:29", 9.49475, -42.25062], ["2019-10-04T22:32:29", 9.49531, -42.25568], ["2019-10-04T23:32:02", 9.50041, -42.2616], ["2019-10-05T02:01:15", 9.51155, -42.27195], ["2019-10-05T02:31:15", 9.51242, -42.27144], ["2019-10-05T03:01:15", 9.51075, -42.27264], ["2019-10-05T06:02:09", 9.51059, -42.27887], ["2019-10-05T06:30:05", 9.51112, -42.28203], ["2019-10-05T07:00:05", 9.51781, -42.28186], ["2019-10-05T09:29:30", 9.53776, -42.28845], ["2019-10-05T09:59:01", 9.5436, -42.28772], ["2019-10-05T10:31:00", 9.55158, -42.28799], ["2019-10-05T10:59:01", 9.56052, -42.28635], ["2019-10-05T14:29:59", 9.61998, -42.27759], ["2019-10-05T17:29:29", 9.6486, -42.26016], ["2019-10-05T18:26:28", 9.65354, -42.25053], ["2019-10-05T18:56:28", 9.65625, -42.24701], ["2019-10-05T19:26:28", 9.65706, -42.24744], ["2019-10-05T20:55:49", 9.6639, -42.25216], ["2019-10-05T21:25:49", 9.66883, -42.25302], ["2019-10-05T21:55:49", 9.67403, -42.25302], ["2019-10-05T22:55:46", 9.68403, -42.24918], ["2019-10-06T00:25:22", 9.70923, -42.2374], ["2019-10-06T00:56:31", 9.71346, -42.23329], ["2019-10-06T01:26:31", 9.71505, -42.22977], ["2019-10-06T03:56:23", 9.72206, -42.21262], ["2019-10-06T04:24:00", 9.72325, -42.20995], ["2019-10-06T04:54:00", 9.72655, -42.20566], ["2019-10-06T08:23:10", 9.74485, -42.17946], ["2019-10-06T08:55:08", 9.7448, -42.17712], ["2019-10-06T09:23:10", 9.74399, -42.1756], ["2019-10-06T09:53:34", 9.7408, -42.17536], ["2019-10-06T10:23:34", 9.73621, -42.1763], ["2019-10-06T11:25:01", 9.72378, -42.17959], ["2019-10-06T11:55:01", 9.7204, -42.18182], ["2019-10-06T12:25:01", 9.71602, -42.18491], ["2019-10-06T12:52:21", 9.71299, -42.18478], ["2019-10-06T13:22:14", 9.70975, -42.18497], ["2019-10-06T13:53:59", 9.7059, -42.18698], ["2019-10-06T15:51:02", 9.69668, -42.20615], ["2019-10-06T16:21:02", 9.69604, -42.21078], ["2019-10-06T21:19:26", 9.73779, -42.25446], ["2019-10-06T22:20:00", 9.74682, -42.2682], ["2019-10-06T22:50:00", 9.75155, -42.27498], ["2019-10-06T23:20:00", 9.75717, -42.28253], ["2019-10-07T00:18:10", 9.76734, -42.29741], ["2019-10-07T00:48:10", 9.77163, -42.30325], ["2019-10-07T01:18:10", 9.7721, -42.3096], ["2019-10-07T03:17:15", 9.78555, -42.33251], ["2019-10-07T03:47:15", 9.79285, -42.33551], ["2019-10-07T06:15:46", 9.81587, -42.34636], ["2019-10-07T06:45:46", 9.82046, -42.34782], ["2019-10-07T07:15:46", 9.82522, -42.34833], ["2019-10-07T07:45:22", 9.82737, -42.35102], ["2019-10-07T08:15:22", 9.83062, -42.35471], ["2019-10-07T09:46:29", 9.84275, -42.36328], ["2019-10-07T10:16:41", 9.84713, -42.36391], ["2019-10-07T10:46:41", 9.85056, -42.3652], ["2019-10-07T12:16:02", 9.86151, -42.3707], ["2019-10-07T16:12:16", 9.90895, -42.38687], ["2019-10-07T17:11:30", 9.92155, -42.39122], ["2019-10-07T17:41:30", 9.92468, -42.39234], ["2019-10-07T18:11:30", 9.92484, -42.39346], ["2019-10-07T19:12:23", 9.92815, -42.39389], ["2019-10-07T19:41:59", 9.93139, -42.39368], ["2019-10-07T21:10:43", 9.94321, -42.38846], ["2019-10-07T22:10:32", 9.94139, -42.3855], ["2019-10-07T23:13:25", 9.94136, -42.38541], ["2019-10-07T23:43:25", 9.94037, -42.38704], ["2019-10-08T00:13:25", 9.93905, -42.38953], ["2019-10-08T01:41:16", 9.93488, -42.39423], ["2019-10-08T06:37:20", 9.92658, -42.40466], ["2019-10-08T10:08:04", 9.92613, -42.40149], ["2019-10-08T10:36:46", 9.92475, -42.40271], ["2019-10-08T11:06:21", 9.92357, -42.40299], ["2019-10-08T11:36:21", 9.92516, -42.40265], ["2019-10-08T12:06:54", 9.92502, -42.40201], ["2019-10-08T12:36:07", 9.92568, -42.40237], ["2019-10-08T13:06:06", 9.92348, -42.40465], ["2019-10-08T13:36:06", 9.92301, -42.40748], ["2019-10-08T14:06:06", 9.92357, -42.41177], ["2019-10-08T14:35:08", 9.92458, -42.41591], ["2019-10-08T15:05:08", 9.92647, -42.42003], ["2019-10-08T15:35:08", 9.92981, -42.42389], ["2019-10-08T16:04:41", 9.92908, -42.42871], ["2019-10-08T16:34:41", 9.92822, -42.43317], ["2019-10-08T17:04:23", 9.9285, -42.43662], ["2019-10-08T17:34:23", 9.9297, -42.44022], ["2019-10-08T18:04:39", 9.93173, -42.44376], ["2019-10-08T18:34:20", 9.93314, -42.44884], ["2019-10-08T19:04:20", 9.93645, -42.45193], ["2019-10-08T20:33:22", 9.93361, -42.45793], ["2019-10-08T21:03:55", 9.93337, -42.45822], ["2019-10-08T21:33:22", 9.93237, -42.46008], ["2019-10-09T00:03:28", 9.93485, -42.46698], ["2019-10-09T00:32:58", 9.93562, -42.46964], ["2019-10-09T01:02:58", 9.93918, -42.47256], ["2019-10-09T01:32:27", 9.94452, -42.47486], ["2019-10-09T02:02:27", 9.95362, -42.47443], ["2019-10-09T02:32:05", 9.96275, -42.47318], ["2019-10-09T03:03:58", 9.97697, -42.46542], ["2019-10-09T03:31:59", 9.98207, -42.46344], ["2019-10-09T04:02:09", 9.98865, -42.46077], ["2019-10-09T04:32:09", 9.99471, -42.46008], ["2019-10-09T05:01:24", 10.00134, -42.45859], ["2019-10-09T05:30:59", 10.00414, -42.4559], ["2019-10-09T06:00:59", 10.00504, -42.45444], ["2019-10-09T07:00:27", 10.00801, -42.45207], ["2019-10-09T07:30:27", 10.00784, -42.45044], ["2019-10-09T08:00:27", 10.00853, -42.44907], ["2019-10-09T08:29:47", 10.00647, -42.44707], ["2019-10-09T08:59:47", 10.00484, -42.44484], ["2019-10-09T09:29:47", 10.00287, -42.44312], ["2019-10-09T10:00:43", 10.00309, -42.44156], ["2019-10-09T10:29:23", 10.00501, -42.43996], ["2019-10-09T10:59:23", 10.00668, -42.43902], ["2019-10-09T11:29:23", 10.00994, -42.43893], ["2019-10-09T11:59:13", 10.01534, -42.4377], ["2019-10-09T12:29:13", 10.01744, -42.43753], ["2019-10-09T12:59:26", 10.01941, -42.43656], ["2019-10-09T13:29:26", 10.01962, -42.43716], ["2019-10-09T13:59:26", 10.01735, -42.43707], ["2019-10-09T14:28:55", 10.01662, -42.43649], ["2019-10-09T14:59:25", 10.01606, -42.43414], ["2019-10-09T15:29:27", 10.01589, -42.43203], ["2019-10-09T15:59:27", 10.01649, -42.43134], ["2019-10-09T16:28:43", 10.01444, -42.4317], ["2019-10-09T16:58:43", 10.01053, -42.4317], ["2019-10-09T17:27:52", 10.00658, -42.4325], ["2019-10-09T17:57:31", 10.00282, -42.4325], ["2019-10-09T18:27:31", 10.00003, -42.43207], ["2019-10-09T18:57:16", 9.99741, -42.4294], ["2019-10-09T19:27:16", 9.99701, -42.42691], ["2019-10-09T19:57:25", 9.99206, -42.42022], ["2019-10-09T20:39:07", 9.99257, -42.4194], ["2019-10-09T20:57:25", 9.99159, -42.41721], ["2019-10-09T21:27:09", 9.99065, -42.41382], ["2019-10-09T21:57:09", 9.98859, -42.40979], ["2019-10-09T22:56:29", 9.98675, -42.40186], ["2019-10-09T23:26:29", 9.98525, -42.39868], ["2019-10-09T23:56:29", 9.9825, -42.39636], ["2019-10-10T00:25:55", 9.98412, -42.39432], ["2019-10-10T00:56:09", 9.98695, -42.39175], ["2019-10-10T01:25:32", 9.98621, -42.39056], ["2019-10-10T01:55:14", 9.98542, -42.38902], ["2019-10-10T02:25:14", 9.98606, -42.38602], ["2019-10-10T02:55:28", 9.98359, -42.38269], ["2019-10-10T03:25:11", 9.98005, -42.38052], ["2019-10-10T03:55:27", 9.97861, -42.3793], ["2019-10-10T04:25:02", 9.97725, -42.37869], ["2019-10-10T04:55:25", 9.97547, -42.37817], ["2019-10-10T05:24:50", 9.97245, -42.37738], ["2019-10-10T05:55:07", 9.96921, -42.37561], ["2019-10-10T06:24:27", 9.96818, -42.37315], ["2019-10-10T06:54:27", 9.96488, -42.37272], ["2019-10-10T07:24:27", 9.96183, -42.37195], ["2019-10-10T07:54:55", 9.95963, -42.37057], ["2019-10-10T08:24:14", 9.9574, -42.36966], ["2019-10-10T08:54:27", 9.95562, -42.36713], ["2019-10-10T09:24:06", 9.9529, -42.3667], ["2019-10-10T09:53:49", 9.95144, -42.36523], ["2019-10-10T10:23:49", 9.95123, -42.3642], ["2019-10-10T10:53:59", 9.94936, -42.3631], ["2019-10-10T11:23:59", 9.94833, -42.36241], ["2019-10-10T11:53:59", 9.95205, -42.36121], ["2019-10-10T12:23:53", 9.95543, -42.35985], ["2019-10-10T12:53:53", 9.95672, -42.35959], ["2019-10-10T14:22:45", 9.97265, -42.35709], ["2019-10-10T14:52:45", 9.98076, -42.35658], ["2019-10-10T15:22:45", 9.99123, -42.35349], ["2019-10-10T16:22:33", 10.01165, -42.35504], ["2019-10-10T16:52:20", 10.01966, -42.35651], ["2019-10-10T17:22:20", 10.02494, -42.35797], ["2019-10-10T17:52:20", 10.02949, -42.3584], ["2019-10-10T18:22:28", 10.03247, -42.35945], ["2019-10-10T18:52:28", 10.03432, -42.35825], ["2019-10-10T19:21:58", 10.03401, -42.35667], ["2019-10-10T19:51:58", 10.03302, -42.35495], ["2019-10-10T20:21:27", 10.03256, -42.35297], ["2019-10-10T20:38:55", 10.0328, -42.35117], ["2019-10-10T20:51:54", 10.03343, -42.34937], ["2019-10-10T22:20:24", 10.03492, -42.3371], ["2019-10-10T22:50:24", 10.03406, -42.33392], ["2019-10-10T23:20:24", 10.03427, -42.33109], ["2019-10-10T23:50:38", 10.03367, -42.32907], ["2019-10-11T00:20:11", 10.03511, -42.32422], ["2019-10-11T00:50:28", 10.03599, -42.32111], ["2019-10-11T01:20:26", 10.03767, -42.31902], ["2019-10-11T01:50:26", 10.04037, -42.31696], ["2019-10-11T02:20:26", 10.04205, -42.31531], ["2019-10-11T02:50:26", 10.0439, -42.31445], ["2019-10-11T03:19:58", 10.04405, -42.31576], ["2019-10-11T03:49:58", 10.04521, -42.31705], ["2019-10-11T04:19:36", 10.0445, -42.31849], ["2019-10-11T04:49:36", 10.04261, -42.31995], ["2019-10-11T05:19:03", 10.0409, -42.32114], ["2019-10-11T05:49:26", 10.0409, -42.32275], ["2019-10-11T06:18:42", 10.03995, -42.32437], ["2019-10-11T06:48:58", 10.0384, -42.3241], ["2019-10-11T07:18:56", 10.03518, -42.32299], ["2019-10-11T07:48:56", 10.03205, -42.32248], ["2019-10-11T08:18:13", 10.02962, -42.3219], ["2019-10-11T08:48:27", 10.02618, -42.32159], ["2019-10-11T09:18:25", 10.02338, -42.32014], ["2019-10-11T09:48:25", 10.02128, -42.3186], ["2019-10-11T10:17:56", 10.02029, -42.31769], ["2019-10-11T10:47:56", 10.0205, -42.31778], ["2019-10-11T11:17:12", 10.01909, -42.31808], ["2019-10-11T11:46:57", 10.01771, -42.31941], ["2019-10-11T12:16:57", 10.01471, -42.32053], ["2019-10-11T13:16:36", 10.00648, -42.323], ["2019-10-11T13:46:16", 10.0007, -42.3244], ["2019-10-11T14:16:16", 9.99491, -42.32697], ["2019-10-11T14:46:25", 9.98832, -42.33051], ["2019-10-11T15:15:52", 9.98377, -42.3365], ["2019-10-11T15:45:52", 9.97889, -42.34216], ["2019-10-11T16:15:40", 9.97517, -42.34706], ["2019-10-11T16:45:40", 9.97302, -42.35135], ["2019-10-11T17:14:46", 9.97311, -42.35726], ["2019-10-11T17:44:46", 9.97375, -42.3643], ["2019-10-11T18:14:46", 9.97481, -42.36902], ["2019-10-11T18:44:39", 9.97476, -42.3736], ["2019-10-11T19:44:18", 9.97634, -42.38342], ["2019-10-11T20:14:02", 9.97525, -42.39348], ["2019-10-11T20:44:02", 9.97508, -42.39468], ["2019-10-11T21:14:01", 9.97377, -42.40049], ["2019-10-11T21:44:01", 9.97098, -42.40598], ["2019-10-11T22:14:21", 9.96813, -42.41171], ["2019-10-11T22:43:32", 9.96435, -42.41653], ["2019-10-11T23:14:15", 9.96132, -42.42233], ["2019-10-12T00:15:18", 9.9534, -42.43359], ["2019-10-12T02:11:51", 9.94905, -42.46174], ["2019-10-12T02:41:51", 9.94829, -42.46869], ["2019-10-12T03:11:51", 9.94652, -42.4765], ["2019-10-12T04:11:42", 9.94942, -42.49356], ["2019-10-12T06:43:58", 9.97101, -42.53504], ["2019-10-12T07:13:58", 9.97401, -42.54165], ["2019-10-12T07:43:58", 9.97865, -42.54749], ["2019-10-12T08:12:55", 9.9818, -42.55191], ["2019-10-12T08:42:55", 9.98612, -42.5574], ["2019-10-12T09:12:55", 9.99055, -42.56332], ["2019-10-12T09:40:56", 9.99497, -42.56833], ["2019-10-12T10:10:56", 9.99862, -42.57357], ["2019-10-12T10:40:56", 10.00124, -42.57855], ["2019-10-12T12:39:58", 10.01268, -42.59671], ["2019-10-12T13:09:58", 10.01783, -42.60049], ["2019-10-12T13:39:58", 10.02513, -42.60349], ["2019-10-12T14:08:53", 10.03425, -42.6059], ["2019-10-12T16:37:57", 10.08036, -42.61108], ["2019-10-12T19:36:38", 10.0962, -42.5946], ["2019-10-12T20:06:38", 10.09659, -42.59357], ["2019-10-12T20:36:38", 10.09689, -42.59323], ["2019-10-12T23:05:39", 10.10838, -42.59394], ["2019-10-12T23:35:39", 10.11705, -42.59291], ["2019-10-13T00:05:39", 10.12203, -42.59042], ["2019-10-13T02:36:28", 10.11033, -42.57047], ["2019-10-13T03:05:59", 10.1054, -42.56937], ["2019-10-13T03:35:59", 10.10051, -42.56808], ["2019-10-13T04:04:33", 10.09685, -42.56802], ["2019-10-13T04:34:15", 10.09262, -42.56792], ["2019-10-13T05:04:15", 10.08807, -42.56818], ["2019-10-13T05:34:23", 10.08143, -42.56793], ["2019-10-13T07:33:22", 10.04897, -42.56487], ["2019-10-13T08:03:22", 10.04077, -42.56676], ["2019-10-13T08:33:22", 10.033, -42.56891], ["2019-10-13T12:32:28", 9.97819, -42.59967], ["2019-10-13T13:02:20", 9.97751, -42.60361], ["2019-10-13T13:33:26", 9.97824, -42.60742], ["2019-10-13T14:01:47", 9.98007, -42.60947], ["2019-10-13T15:01:30", 9.98372, -42.61716], ["2019-10-13T16:01:10", 9.98797, -42.6254], ["2019-10-13T19:00:58", 10.00257, -42.65216], ["2019-10-13T19:30:58", 10.00566, -42.65628], ["2019-10-13T20:00:58", 10.00832, -42.66083], ["2019-10-13T20:39:17", 10.01126, -42.66696], ["2019-10-13T23:58:14", 10.03785, -42.69073], ["2019-10-14T03:57:35", 10.09535, -42.70831], ["2019-10-14T04:57:13", 10.11333, -42.71243], ["2019-10-14T06:56:53", 10.13914, -42.71475], ["2019-10-14T09:27:44", 10.16919, -42.72071], ["2019-10-14T09:57:44", 10.17691, -42.72131], ["2019-10-14T10:27:44", 10.18875, -42.72217], ["2019-10-14T10:55:38", 10.20174, -42.72272], ["2019-10-14T11:25:28", 10.21333, -42.72214], ["2019-10-14T11:57:45", 10.22291, -42.72031], ["2019-10-14T12:55:02", 10.24074, -42.7164], ["2019-10-14T14:24:19", 10.26359, -42.7066], ["2019-10-14T14:55:57", 10.27089, -42.70204], ["2019-10-14T15:25:57", 10.28093, -42.69741], ["2019-10-14T15:55:57", 10.29376, -42.6908], ["2019-10-14T16:27:28", 10.30353, -42.68482], ["2019-10-14T16:57:28", 10.31362, -42.67795], ["2019-10-14T18:22:50", 10.32152, -42.66491], ["2019-10-14T18:55:44", 10.32305, -42.66226], ["2019-10-14T19:22:50", 10.32478, -42.66113], ["2019-10-14T19:52:43", 10.32662, -42.66107], ["2019-10-14T20:08:51", 10.32739, -42.66081], ["2019-10-14T20:38:51", 10.32743, -42.66064], ["2019-10-14T21:53:57", 10.32493, -42.6592], ["2019-10-14T22:23:57", 10.32437, -42.65817], ["2019-10-14T22:53:57", 10.3251, -42.65594], ["2019-10-14T23:21:51", 10.3249, -42.65396], ["2019-10-15T00:22:30", 10.32507, -42.64969], ["2019-10-15T00:51:28", 10.32667, -42.64685], ["2019-10-15T01:53:58", 10.33339, -42.63737], ["2019-10-15T02:23:58", 10.33554, -42.63205], ["2019-10-15T02:53:58", 10.337, -42.62604], ["2019-10-15T03:23:06", 10.3359, -42.62056], ["2019-10-15T03:53:06", 10.33461, -42.61438], ["2019-10-15T04:21:05", 10.33259, -42.60887], ["2019-10-15T04:51:05", 10.32946, -42.60441], ["2019-10-15T05:21:05", 10.32714, -42.60089], ["2019-10-15T07:53:00", 10.31515, -42.5946], ["2019-10-15T08:49:12", 10.30625, -42.59668], ["2019-10-15T09:19:12", 10.30166, -42.59865], ["2019-10-15T09:49:12", 10.29827, -42.60037], ["2019-10-15T10:19:00", 10.29531, -42.60226], ["2019-10-15T17:19:25", 10.28283, -42.63239], ["2019-10-15T17:46:53", 10.28213, -42.63528], ["2019-10-15T19:16:30", 10.27236, -42.65076], ["2019-10-15T20:46:22", 10.26654, -42.6723], ["2019-10-15T21:16:10", 10.26647, -42.68005], ["2019-10-15T21:46:10", 10.26832, -42.68692], ["2019-10-15T22:15:39", 10.27104, -42.69507], ["2019-10-15T22:45:39", 10.27104, -42.70099], ["2019-10-16T01:45:18", 10.27237, -42.73538], ["2019-10-16T02:14:48", 10.27339, -42.74023], ["2019-10-16T03:44:17", 10.27838, -42.75373], ["2019-10-16T04:14:17", 10.27928, -42.75759], ["2019-10-16T04:44:17", 10.28168, -42.76025], ["2019-10-16T05:17:29", 10.28687, -42.76429], ["2019-10-16T05:47:29", 10.29112, -42.76944], ["2019-10-16T06:16:28", 10.29255, -42.77354], ["2019-10-16T06:46:28", 10.29598, -42.77766], ["2019-10-16T07:16:28", 10.29873, -42.78195], ["2019-10-16T07:43:12", 10.29903, -42.78605], ["2019-10-16T08:13:12", 10.30019, -42.7912], ["2019-10-16T13:12:05", 10.32168, -42.84933], ["2019-10-16T15:13:13", 10.34237, -42.86636], ["2019-10-16T20:39:34", 10.40263, -42.88879], ["2019-10-16T20:40:13", 10.40264, -42.88864], ["2019-10-17T01:10:04", 10.42939, -42.90305], ["2019-10-17T01:39:07", 10.43272, -42.90375], ["2019-10-17T03:10:29", 10.45115, -42.90729], ["2019-10-17T04:10:29", 10.45677, -42.90823], ["2019-10-17T07:39:28", 10.48178, -42.89188], ["2019-10-17T11:05:57", 10.49209, -42.8884], ["2019-10-17T12:05:47", 10.50042, -42.88641], ["2019-10-17T12:37:29", 10.50661, -42.88428], ["2019-10-17T13:05:35", 10.51153, -42.88281], ["2019-10-17T14:36:28", 10.52455, -42.8783], ["2019-10-17T15:05:01", 10.52481, -42.8775], ["2019-10-17T15:37:17", 10.5242, -42.87673], ["2019-10-17T16:07:17", 10.5251, -42.87544], ["2019-10-17T16:37:17", 10.52536, -42.87424], ["2019-10-17T18:34:07", 10.52397, -42.87402], ["2019-10-17T19:03:48", 10.52576, -42.8734], ["2019-10-17T19:33:48", 10.52662, -42.8728], ["2019-10-17T20:03:48", 10.52632, -42.87289], ["2019-10-17T20:40:17", 10.52565, -42.87396], ["2019-10-18T02:02:07", 10.50132, -42.88101], ["2019-10-18T02:31:47", 10.50063, -42.88158], ["2019-10-18T03:01:47", 10.49973, -42.88218], ["2019-10-18T03:31:47", 10.49681, -42.88278], ["2019-10-18T06:32:31", 10.48989, -42.88239], ["2019-10-18T07:00:27", 10.48643, -42.88313], ["2019-10-18T07:30:27", 10.48544, -42.88425], ["2019-10-18T08:29:59", 10.47817, -42.88831], ["2019-10-18T08:59:59", 10.47521, -42.8902], ["2019-10-18T09:29:59", 10.47105, -42.89355], ["2019-10-18T09:59:47", 10.46498, -42.89747], ["2019-10-18T10:29:47", 10.46133, -42.90065], ["2019-10-18T10:59:47", 10.45953, -42.90314], ["2019-10-18T11:30:30", 10.45891, -42.90707], ["2019-10-18T13:29:16", 10.44713, -42.92662], ["2019-10-18T13:59:16", 10.44893, -42.93065], ["2019-10-18T14:29:16", 10.44906, -42.9328], ["2019-10-18T15:29:00", 10.44658, -42.93756], ["2019-10-18T15:58:48", 10.44686, -42.93973], ["2019-10-18T16:28:26", 10.44611, -42.94199], ["2019-10-18T16:58:26", 10.44581, -42.94379], ["2019-10-18T17:27:51", 10.4453, -42.94513], ["2019-10-18T17:57:51", 10.44414, -42.94659], ["2019-10-18T18:27:51", 10.44358, -42.94788], ["2019-10-18T21:26:52", 10.44917, -42.95584], ["2019-10-19T01:28:00", 10.44151, -42.99323], ["2019-10-19T01:55:48", 10.44271, -42.99829], ["2019-10-19T02:25:26", 10.44571, -43.00214], ["2019-10-19T02:55:26", 10.4479, -43.0054], ["2019-10-19T03:25:26", 10.44902, -43.00763], ["2019-10-19T04:26:30", 10.45192, -43.01219], ["2019-10-19T04:56:30", 10.45321, -43.01511], ["2019-10-19T05:26:30", 10.45514, -43.01889], ["2019-10-19T06:57:33", 10.45844, -43.02817], ["2019-10-19T08:24:02", 10.466, -43.0399], ["2019-10-19T08:54:02", 10.47197, -43.04093], ["2019-10-19T09:24:02", 10.47407, -43.04376], ["2019-10-19T09:53:49", 10.47825, -43.0481], ["2019-10-19T10:23:49", 10.48074, -43.05179], ["2019-10-19T10:55:03", 10.48081, -43.0556], ["2019-10-19T11:25:03", 10.47836, -43.06049], ["2019-10-19T12:53:55", 10.47157, -43.07715], ["2019-10-19T13:23:55", 10.47084, -43.08127], ["2019-10-19T13:53:55", 10.46762, -43.08771], ["2019-10-19T16:24:00", 10.45932, -43.12116], ["2019-10-19T16:54:00", 10.46095, -43.127], ["2019-10-19T17:24:00", 10.46563, -43.13095], ["2019-10-19T17:52:31", 10.46594, -43.13504], ["2019-10-19T19:37:05", 10.47189, -43.15105], ["2019-10-19T20:07:05", 10.4718, -43.15174], ["2019-10-19T20:37:05", 10.47159, -43.15225], ["2019-10-19T20:54:30", 10.47265, -43.15314], ["2019-10-19T21:24:30", 10.47467, -43.15649], ["2019-10-19T21:50:40", 10.4744, -43.15961], ["2019-10-19T23:20:30", 10.47508, -43.17374], ["2019-10-19T23:50:30", 10.47662, -43.17752], ["2019-10-20T00:22:30", 10.47731, -43.18118], ["2019-10-20T00:52:30", 10.47718, -43.18564], ["2019-10-20T01:20:04", 10.47886, -43.1886], ["2019-10-20T02:49:08", 10.48977, -43.19898], ["2019-10-20T03:19:08", 10.4911, -43.20155], ["2019-10-20T03:49:08", 10.4941, -43.20309], ["2019-10-20T04:21:10", 10.49737, -43.20374], ["2019-10-20T05:18:13", 10.50133, -43.20456], ["2019-10-20T05:48:13", 10.50021, -43.20482], ["2019-10-20T06:18:13", 10.50141, -43.20413], ["2019-10-20T08:17:41", 10.50176, -43.20761], ["2019-10-20T08:48:08", 10.50158, -43.20868], ["2019-10-20T09:18:39", 10.50148, -43.20948], ["2019-10-20T09:48:39", 10.50092, -43.21042], ["2019-10-20T11:19:05", 10.49924, -43.21172], ["2019-10-20T11:49:05", 10.49765, -43.21369], ["2019-10-20T12:19:05", 10.49602, -43.21463], ["2019-10-20T13:19:26", 10.49248, -43.21765], ["2019-10-20T18:14:40", 10.48549, -43.23196], ["2019-10-20T18:44:31", 10.48889, -43.23276], ["2019-10-20T19:14:58", 10.49449, -43.2319], ["2019-10-20T19:47:28", 10.49626, -43.23188], ["2019-10-20T20:17:28", 10.49484, -43.23248], ["2019-10-20T20:43:57", 10.49498, -43.23291], ["2019-10-20T23:43:06", 10.48627, -43.2475], ["2019-10-21T00:44:53", 10.47951, -43.25354], ["2019-10-21T01:44:07", 10.46836, -43.26438], ["2019-10-21T02:44:07", 10.46239, -43.2691], ["2019-10-21T03:13:36", 10.4574, -43.27298], ["2019-10-21T03:44:31", 10.45304, -43.27713], ["2019-10-21T04:14:31", 10.45253, -43.28314], ["2019-10-21T05:40:58", 10.45921, -43.29143], ["2019-10-21T06:10:58", 10.46015, -43.29564], ["2019-10-21T06:40:58", 10.45839, -43.30148], ["2019-10-21T07:40:54", 10.46014, -43.3114], ["2019-10-21T10:39:40", 10.46997, -43.33844], ["2019-10-21T11:09:40", 10.46997, -43.34307], ["2019-10-21T11:39:40", 10.47182, -43.34796], ["2019-10-21T13:09:04", 10.47669, -43.36275], ["2019-10-21T13:39:04", 10.48111, -43.36841], ["2019-10-21T14:09:04", 10.48497, -43.37433], ["2019-10-21T14:38:49", 10.49002, -43.38016], ["2019-10-21T15:08:49", 10.49551, -43.38531], ["2019-10-21T15:38:35", 10.50319, -43.39111], ["2019-10-21T16:08:35", 10.51255, -43.3966], ["2019-10-21T16:38:35", 10.52409, -43.40192], ["2019-10-21T20:36:56", 10.6055, -43.41043], ["2019-10-21T20:37:17", 10.60558, -43.41043], ["2019-10-21T21:07:05", 10.61146, -43.41068], ["2019-10-21T21:38:29", 10.61859, -43.40864], ["2019-10-21T22:08:29", 10.62468, -43.4077], ["2019-10-21T22:38:29", 10.62635, -43.40598], ["2019-10-21T23:06:12", 10.62789, -43.40408], ["2019-10-21T23:37:39", 10.62911, -43.40266], ["2019-10-22T00:07:39", 10.63156, -43.40094], ["2019-10-22T04:37:12", 10.65331, -43.38428], ["2019-10-22T05:04:08", 10.65755, -43.38223], ["2019-10-22T05:34:29", 10.66161, -43.37982], ["2019-10-22T06:04:29", 10.66646, -43.37759], ["2019-10-22T06:33:38", 10.6703, -43.37622], ["2019-10-22T09:32:36", 10.7033, -43.35675], ["2019-10-22T10:02:27", 10.70598, -43.35335], ["2019-10-22T10:32:27", 10.71134, -43.35138], ["2019-10-22T11:04:29", 10.71816, -43.3472], ["2019-10-22T12:32:04", 10.73151, -43.33507], ["2019-10-22T13:02:04", 10.73653, -43.33086], ["2019-10-22T13:32:04", 10.7385, -43.32657], ["2019-10-22T14:31:43", 10.73959, -43.31833], ["2019-10-22T15:01:07", 10.73756, -43.3152], ["2019-10-22T15:31:07", 10.73554, -43.3134], ["2019-10-22T16:01:07", 10.73468, -43.31125], ["2019-10-22T17:59:51", 10.73047, -43.30678], ["2019-10-22T18:29:51", 10.73086, -43.30618], ["2019-10-22T19:01:27", 10.73328, -43.30544], ["2019-10-22T19:31:27", 10.73495, -43.30458], ["2019-10-22T20:01:27", 10.73697, -43.30338], ["2019-10-22T20:29:08", 10.73637, -43.30258], ["2019-10-22T20:59:08", 10.73779, -43.30035], ["2019-10-22T23:28:33", 10.73812, -43.27768], ["2019-10-22T23:58:33", 10.73855, -43.26893], ["2019-10-23T00:28:33", 10.74164, -43.26129], ["2019-10-23T00:58:24", 10.74103, -43.25571], ["2019-10-23T01:28:13", 10.73721, -43.25198], ["2019-10-23T01:58:13", 10.73197, -43.25052], ["2019-10-23T03:57:42", 10.70877, -43.24359], ["2019-10-23T04:57:02", 10.69573, -43.24159], ["2019-10-23T05:29:34", 10.6867, -43.24231], ["2019-10-23T05:57:02", 10.67843, -43.24399], ["2019-10-23T07:56:20", 10.652, -43.2547], ["2019-10-23T07:57:57", 10.64711, -43.2595], ["2019-10-23T08:57:57", 10.64089, -43.26379], ["2019-10-23T09:25:58", 10.63514, -43.26862], ["2019-10-23T10:27:30", 10.62382, -43.27728], ["2019-10-23T10:57:14", 10.61648, -43.2879], ["2019-10-23T11:57:14", 10.61227, -43.29279], ["2019-10-23T12:55:05", 10.61084, -43.29932], ["2019-10-23T13:25:05", 10.60633, -43.30378], ["2019-10-23T13:55:05", 10.60036, -43.30936], ["2019-10-23T14:24:41", 10.5939, -43.31647], ["2019-10-23T15:24:26", 10.58442, -43.33084], ["2019-10-23T15:54:09", 10.58164, -43.33848], ["2019-10-23T16:24:09", 10.58014, -43.34483], ["2019-10-23T16:54:09", 10.57937, -43.35187], ["2019-10-23T17:24:48", 10.58, -43.3588], ["2019-10-23T17:53:54", 10.57678, -43.36639], ["2019-10-23T20:23:27", 10.57149, -43.40631], ["2019-10-23T20:52:58", 10.56849, -43.41635], ["2019-10-23T21:22:58", 10.56531, -43.42605], ["2019-10-23T21:52:58", 10.56505, -43.43506], ["2019-10-23T22:55:07", 10.56799, -43.45283], ["2019-10-23T23:25:07", 10.56842, -43.46141], ["2019-10-23T23:55:07", 10.56782, -43.47308], ["2019-10-24T00:22:07", 10.56938, -43.48206], ["2019-10-24T04:53:17", 10.58816, -43.56415], ["2019-10-24T05:20:30", 10.59321, -43.57013], ["2019-10-24T07:20:10", 10.62133, -43.5972], ["2019-10-24T07:50:31", 10.62793, -43.60551], ["2019-10-24T08:20:31", 10.63312, -43.61212], ["2019-10-24T08:50:31", 10.63891, -43.62045], ["2019-10-24T09:20:48", 10.64743, -43.62816], ["2019-10-24T09:50:48", 10.65764, -43.63434], ["2019-10-24T10:22:47", 10.6664, -43.64017], ["2019-10-24T10:52:47", 10.67803, -43.64712], ["2019-10-24T11:22:47", 10.68751, -43.65381], ["2019-10-24T11:50:00", 10.69657, -43.65922], ["2019-10-24T12:20:00", 10.70691, -43.66403], ["2019-10-24T14:52:05", 10.76469, -43.68564], ["2019-10-24T16:17:57", 10.79739, -43.69396], ["2019-10-24T16:47:57", 10.80666, -43.69508], ["2019-10-24T17:17:57", 10.81666, -43.69577], ["2019-10-24T19:47:27", 10.86577, -43.68442], ["2019-10-25T01:47:30", 10.91469, -43.66092], ["2019-10-25T02:17:01", 10.91978, -43.65547], ["2019-10-25T03:17:01", 10.92266, -43.65375], ["2019-10-25T03:46:56", 10.92532, -43.65092], ["2019-10-25T04:16:56", 10.92854, -43.64783], ["2019-10-25T04:45:22", 10.93002, -43.64523], ["2019-10-25T05:15:22", 10.93328, -43.64257], ["2019-10-25T05:45:22", 10.93431, -43.64008], ["2019-10-25T06:16:55", 10.93864, -43.63727], ["2019-10-25T06:46:55", 10.94229, -43.63495], ["2019-10-25T07:16:55", 10.94581, -43.63126], ["2019-10-25T07:44:53", 10.94806, -43.62943], ["2019-10-25T08:14:48", 10.95155, -43.62628], ["2019-10-25T08:47:21", 10.96059, -43.61993], ["2019-10-25T11:45:17", 10.97076, -43.5979], ["2019-10-25T12:46:40", 10.96508, -43.59128], ["2019-10-25T12:47:07", 10.96839, -43.59293], ["2019-10-25T13:46:40", 10.96414, -43.58853], ["2019-10-25T14:16:24", 10.96019, -43.58749], ["2019-10-25T14:46:25", 10.95763, -43.58642], ["2019-10-25T15:16:25", 10.9548, -43.58539], ["2019-10-25T17:42:18", 10.95342, -43.58398], ["2019-10-25T18:12:11", 10.95668, -43.58231], ["2019-10-25T18:43:05", 10.95961, -43.58148], ["2019-10-25T19:11:40", 10.96017, -43.58167], ["2019-10-25T19:41:59", 10.96037, -43.58194], ["2019-10-25T20:41:17", 10.95938, -43.58341], ["2019-10-25T21:11:17", 10.95711, -43.5841], ["2019-10-25T21:41:17", 10.95342, -43.58496], ["2019-10-25T22:10:38", 10.95071, -43.58575], ["2019-10-25T22:41:27", 10.94853, -43.58417], ["2019-10-25T23:10:20", 10.94431, -43.58304], ["2019-10-26T00:40:41", 10.93033, -43.58537], ["2019-10-26T01:09:53", 10.92485, -43.5864], ["2019-10-26T01:40:41", 10.9193, -43.58649], ["2019-10-26T02:09:32", 10.91438, -43.58829], ["2019-10-26T04:08:33", 10.89402, -43.59869], ["2019-10-26T04:38:33", 10.89016, -43.60281], ["2019-10-26T05:08:33", 10.88651, -43.60538], ["2019-10-26T05:38:57", 10.88273, -43.60849], ["2019-10-26T06:37:48", 10.87541, -43.61608], ["2019-10-26T07:07:48", 10.87438, -43.61977], ["2019-10-26T07:37:48", 10.87116, -43.62329], ["2019-10-26T08:08:54", 10.86849, -43.62817], ["2019-10-26T08:37:33", 10.865, -43.63232], ["2019-10-26T09:06:53", 10.86048, -43.63679], ["2019-10-26T09:36:53", 10.85773, -43.63971], ["2019-10-26T10:06:53", 10.8543, -43.64374], ["2019-10-26T10:37:09", 10.85023, -43.64743], ["2019-10-26T11:37:09", 10.84409, -43.6553], ["2019-10-26T12:36:57", 10.83853, -43.66493], ["2019-10-26T13:06:16", 10.83498, -43.66965], ["2019-10-26T13:36:57", 10.83188, -43.67566], ["2019-10-26T14:06:08", 10.82788, -43.68121], ["2019-10-26T14:36:25", 10.82355, -43.68814], ["2019-10-26T15:06:11", 10.82083, -43.69606], ["2019-10-26T15:36:11", 10.81911, -43.70413], ["2019-10-26T16:05:38", 10.81772, -43.7124], ["2019-10-26T16:35:22", 10.81761, -43.72204], ["2019-10-26T17:05:22", 10.81692, -43.73062], ["2019-10-26T17:35:37", 10.81617, -43.73886], ["2019-10-26T18:05:05", 10.81563, -43.74731], ["2019-10-26T18:35:27", 10.8169, -43.75482], ["2019-10-26T19:04:24", 10.81986, -43.7624], ["2019-10-26T19:34:24", 10.82325, -43.76884], ["2019-10-26T20:04:24", 10.82724, -43.77365], ["2019-10-26T20:36:26", 10.83003, -43.77924], ["2019-10-26T21:04:02", 10.83258, -43.78436], ["2019-10-26T21:33:56", 10.83433, -43.79016], ["2019-10-26T22:04:56", 10.83532, -43.79657], ["2019-10-27T01:02:22", 10.84475, -43.83664], ["2019-10-27T01:33:27", 10.84671, -43.84402], ["2019-10-27T02:02:22", 10.84796, -43.8508], ["2019-10-27T03:31:34", 10.85093, -43.86866], ["2019-10-27T04:01:34", 10.85338, -43.87407], ["2019-10-27T04:31:34", 10.85754, -43.87939], ["2019-10-27T08:00:51", 10.88115, -43.9086], ["2019-10-27T08:30:42", 10.88843, -43.9119], ["2019-10-27T09:01:30", 10.89527, -43.91476], ["2019-10-27T10:01:29", 10.90836, -43.91806], ["2019-10-27T10:30:11", 10.91388, -43.91977], ["2019-10-27T11:00:04", 10.92028, -43.92223], ["2019-10-27T11:30:04", 10.925, -43.92438], ["2019-10-27T12:59:48", 10.93642, -43.9342], ["2019-10-27T14:29:10", 10.94776, -43.94381], ["2019-10-27T14:59:10", 10.95338, -43.94707], ["2019-10-27T15:29:10", 10.95797, -43.95093], ["2019-10-27T15:59:03", 10.96239, -43.95518], ["2019-10-27T16:29:03", 10.96724, -43.95612], ["2019-10-27T16:59:02", 10.9718, -43.95758], ["2019-10-27T20:27:57", 10.9965, -43.97369], ["2019-10-28T00:56:20", 11.03918, -43.98773], ["2019-10-28T02:55:36", 11.03843, -43.98501], ["2019-10-28T03:25:36", 11.03483, -43.98381], ["2019-10-28T03:55:36", 11.0323, -43.98364], ["2019-10-28T04:26:40", 11.02677, -43.98462], ["2019-10-28T04:56:40", 11.02115, -43.98788], ["2019-10-28T06:53:58", 10.99975, -44.00911], ["2019-10-28T07:23:58", 10.99696, -44.01615], ["2019-10-28T07:53:58", 10.99705, -44.02216], ["2019-10-28T09:24:29", 10.99884, -44.04026], ["2019-10-28T09:54:29", 11.00176, -44.04584], ["2019-10-28T10:24:29", 11.00433, -44.05099], ["2019-10-28T10:54:04", 11.00371, -44.05581], ["2019-10-28T11:24:04", 10.99959, -44.06216], ["2019-10-28T13:52:04", 10.98691, -44.08743], ["2019-10-28T14:21:51", 10.98256, -44.09295], ["2019-10-28T14:51:51", 10.97844, -44.09784], ["2019-10-28T15:21:50", 10.97397, -44.10364], ["2019-10-28T17:21:14", 10.96027, -44.1283], ["2019-10-28T17:50:43", 10.95899, -44.13589], ["2019-10-28T18:20:43", 10.9583, -44.14361], ["2019-10-28T18:50:43", 10.95791, -44.15228], ["2019-10-28T19:36:52", 10.96994, -44.18002], ["2019-10-28T20:06:52", 10.9729, -44.18345], ["2019-10-28T20:36:52", 10.97384, -44.18439], ["2019-10-28T21:20:20", 10.98432, -44.19479], ["2019-10-28T21:50:02", 10.99376, -44.20088], ["2019-10-28T22:20:02", 11.00127, -44.20526], ["2019-10-28T23:49:27", 11.02527, -44.21085], ["2019-10-29T00:19:27", 11.03154, -44.21119], ["2019-10-29T00:49:27", 11.03549, -44.21222], ["2019-10-29T02:18:55", 11.0424, -44.22099], ["2019-10-29T02:48:55", 11.04433, -44.22288], ["2019-10-29T03:18:55", 11.04399, -44.22485], ["2019-10-29T05:47:51", 11.03838, -44.25512], ["2019-10-29T06:17:51", 11.03593, -44.26199], ["2019-10-29T07:17:06", 11.02611, -44.2782], ["2019-10-29T07:47:06", 11.02598, -44.28558], ["2019-10-29T08:17:06", 11.0268, -44.29245], ["2019-10-29T10:48:58", 11.05949, -44.31686], ["2019-10-29T12:18:34", 11.0933, -44.31606], ["2019-10-29T13:18:34", 11.10137, -44.31503], ["2019-10-29T17:14:34", 11.13974, -44.31839], ["2019-10-29T17:45:56", 11.14375, -44.31781], ["2019-10-29T18:14:03", 11.14668, -44.31729], ["2019-10-29T18:45:30", 11.14838, -44.31665], ["2019-10-29T22:12:51", 11.14259, -44.30887], ["2019-10-29T22:46:00", 11.14024, -44.30304], ["2019-10-29T23:42:03", 11.13477, -44.2949], ["2019-10-30T00:12:03", 11.12953, -44.2913], ["2019-10-30T00:42:03", 11.12794, -44.28821], ["2019-10-30T01:14:03", 11.12673, -44.28649], ["2019-10-30T01:44:03", 11.1251, -44.28555], ["2019-10-30T02:41:23", 11.12625, -44.28424], ["2019-10-30T05:10:50", 11.12411, -44.27368], ["2019-10-30T05:40:14", 11.12278, -44.26959], ["2019-10-30T06:10:14", 11.11905, -44.26564], ["2019-10-30T06:40:14", 11.11519, -44.26169], ["2019-10-30T07:09:58", 11.11027, -44.25807], ["2019-10-30T07:39:58", 11.10392, -44.25601], ["2019-10-30T08:41:28", 11.08845, -44.25235], ["2019-10-30T09:09:06", 11.07948, -44.25085], ["2019-10-30T09:39:06", 11.06811, -44.25008], ["2019-10-30T10:09:06", 11.05699, -44.24948], ["2019-10-30T10:38:39", 11.04833, -44.24894], ["2019-10-30T11:08:39", 11.04138, -44.25006], ["2019-10-30T11:41:05", 11.03573, -44.2524], ["2019-10-30T12:08:24", 11.03134, -44.25366], ["2019-10-30T12:41:05", 11.02904, -44.25644], ["2019-10-30T13:08:01", 11.02776, -44.25925], ["2019-10-30T15:37:31", 11.03025, -44.27008], ["2019-10-30T16:07:02", 11.02576, -44.2718], ["2019-10-30T16:37:02", 11.01954, -44.27386], ["2019-10-30T19:07:12", 10.974, -44.29318], ["2019-10-30T19:36:43", 10.96574, -44.29843], ["2019-10-30T20:07:12", 10.95868, -44.30408], ["2019-10-30T20:35:52", 10.95456, -44.30944], ["2019-10-30T21:05:52", 10.95108, -44.3145], ["2019-10-30T21:35:52", 10.947, -44.31888], ["2019-10-30T22:06:28", 10.94599, -44.32272], ["2019-10-31T02:33:57", 10.9362, -44.35837], ["2019-10-31T03:05:14", 10.93415, -44.36166], ["2019-10-31T03:33:57", 10.93187, -44.36481], ["2019-10-31T04:03:40", 10.92946, -44.36887], ["2019-10-31T04:33:40", 10.9283, -44.37213], ["2019-10-31T06:33:08", 10.91774, -44.39041], ["2019-10-31T07:03:59", 10.91805, -44.39432], ["2019-10-31T09:32:13", 10.92162, -44.41141], ["2019-10-31T10:01:24", 10.92276, -44.41563], ["2019-10-31T10:31:24", 10.92229, -44.41906], ["2019-10-31T11:01:24", 10.92212, -44.42172], ["2019-10-31T11:31:13", 10.9212, -44.42493], ["2019-10-31T12:03:34", 10.92201, -44.42834], ["2019-10-31T14:00:29", 10.91956, -44.44325], ["2019-10-31T14:30:29", 10.9193, -44.4472], ["2019-10-31T15:00:19", 10.91809, -44.45222], ["2019-10-31T15:30:19", 10.91826, -44.45651], ["2019-10-31T18:33:10", 10.90692, -44.4685], ["2019-10-31T19:03:10", 10.89928, -44.46773], ["2019-10-31T19:33:10", 10.90902, -44.48575], ["2019-10-31T22:01:56", 10.90958, -44.49709], ["2019-10-31T22:31:56", 10.90816, -44.49958], ["2019-10-31T23:01:56", 10.90919, -44.50327], ["2019-11-01T00:29:04", 10.91642, -44.51455], ["2019-11-01T00:59:04", 10.91775, -44.51918], ["2019-11-01T01:29:04", 10.91711, -44.52545], ["2019-11-01T01:57:37", 10.9187, -44.53116], ["2019-11-01T02:30:59", 10.92073, -44.53726], ["2019-11-01T02:57:07", 10.92197, -44.54205], ["2019-11-01T03:59:01", 10.92395, -44.55487], ["2019-11-01T04:56:36", 10.9256, -44.56384], ["2019-11-01T05:26:08", 10.92753, -44.56799], ["2019-11-01T05:56:08", 10.92912, -44.57142], ["2019-11-01T06:26:08", 10.92886, -44.57571], ["2019-11-01T07:27:58", 10.92661, -44.58646], ["2019-11-01T07:57:58", 10.92043, -44.59221], ["2019-11-01T08:27:58", 10.91906, -44.59882], ["2019-11-01T08:55:34", 10.91904, -44.60437], ["2019-11-01T09:25:38", 10.91817, -44.61093], ["2019-11-01T09:56:59", 10.92033, -44.6171], ["2019-11-01T10:25:04", 10.92163, -44.62155], ["2019-11-01T12:54:17", 10.93251, -44.6478], ["2019-11-01T13:25:43", 10.93572, -44.65576], ["2019-11-01T13:53:44", 10.93846, -44.66281], ["2019-11-01T14:25:31", 10.94426, -44.67539], ["2019-11-01T15:25:31", 10.94696, -44.68243], ["2019-11-01T15:53:09", 10.95014, -44.68924], ["2019-11-01T16:23:09", 10.95233, -44.69662], ["2019-11-01T17:52:25", 10.9599, -44.71686], ["2019-11-01T20:24:24", 10.97549, -44.74045], ["2019-11-01T20:54:24", 10.97631, -44.74294], ["2019-11-01T21:24:24", 10.97828, -44.74689], ["2019-11-01T22:51:54", 10.97989, -44.75665], ["2019-11-01T23:21:54", 10.98135, -44.76], ["2019-11-01T23:51:54", 10.98362, -44.76498], ["2019-11-02T00:20:21", 10.98556, -44.76943], ["2019-11-02T00:50:21", 10.98835, -44.77535], ["2019-11-02T01:20:21", 10.99161, -44.7811], ["2019-11-02T01:50:07", 10.9942, -44.7859], ["2019-11-02T02:20:07", 10.99502, -44.78976], ["2019-11-02T02:52:31", 10.99728, -44.79425], ["2019-11-02T03:19:44", 10.99937, -44.79852], ["2019-11-02T04:49:15", 11.00062, -44.81615], ["2019-11-02T05:19:15", 11.00169, -44.82156], ["2019-11-02T05:50:59", 11.00296, -44.82646], ["2019-11-02T06:20:59", 11.00678, -44.83084], ["2019-11-02T07:50:05", 11.0137, -44.84082], ["2019-11-02T08:20:05", 11.01537, -44.84434], ["2019-11-02T08:50:05", 11.01747, -44.84863], ["2019-11-02T09:47:31", 11.01923, -44.85641], ["2019-11-02T10:49:06", 11.01725, -44.86517], ["2019-11-02T12:49:12", 11.01704, -44.88195], ["2019-11-02T13:19:12", 11.0182, -44.88693], ["2019-11-02T13:46:47", 11.02036, -44.89175], ["2019-11-02T14:47:34", 11.02713, -44.90315], ["2019-11-02T15:17:34", 11.02953, -44.90864], ["2019-11-02T15:47:34", 11.02996, -44.91422], ["2019-11-02T16:16:14", 11.02952, -44.91885], ["2019-11-02T16:48:42", 11.02827, -44.92319], ["2019-11-02T17:15:48", 11.02763, -44.92749], ["2019-11-02T18:17:59", 11.02556, -44.93715], ["2019-11-02T18:47:59", 11.02668, -44.94058], ["2019-11-02T19:17:59", 11.0284, -44.9429], ["2019-11-02T19:45:01", 11.02884, -44.94473], ["2019-11-02T20:14:43", 11.02949, -44.94834], ["2019-11-02T20:44:43", 11.02996, -44.94971], ["2019-11-02T21:14:33", 11.0306, -44.9523], ["2019-11-03T00:13:40", 11.03313, -44.9725], ["2019-11-03T01:13:23", 11.03807, -44.98123], ["2019-11-03T01:43:23", 11.0391, -44.98544], ["2019-11-03T02:13:23", 11.04253, -44.98965], ["2019-11-03T02:42:57", 11.04339, -44.99342], ["2019-11-03T03:12:57", 11.04493, -44.99651], ["2019-11-03T03:42:57", 11.04527, -44.99994], ["2019-11-03T04:14:29", 11.04492, -45.0025], ["2019-11-03T04:43:32", 11.04401, -45.00576], ["2019-11-03T05:13:32", 11.04324, -45.00833], ["2019-11-03T06:42:33", 11.04184, -45.01447], ["2019-11-03T07:12:33", 11.04227, -45.01756], ["2019-11-03T07:42:33", 11.04158, -45.02151], ["2019-11-03T08:11:06", 11.04092, -45.02396], ["2019-11-03T08:42:12", 11.04152, -45.02744], ["2019-11-03T09:11:21", 11.04233, -45.03079], ["2019-11-03T10:40:23", 11.03725, -45.04013], ["2019-11-03T11:11:58", 11.03587, -45.04477], ["2019-11-03T12:41:54", 11.03203, -45.05853], ["2019-11-03T15:09:25", 11.0287, -45.08481], ["2019-11-03T18:08:55", 11.03224, -45.1178], ["2019-11-03T18:38:24", 11.03325, -45.12477], ["2019-11-03T19:08:24", 11.03548, -45.13104], ["2019-11-03T19:40:30", 11.03506, -45.13769], ["2019-11-03T20:10:30", 11.0363, -45.14481], ["2019-11-03T20:38:03", 11.03808, -45.15051], ["2019-11-03T21:37:39", 11.04091, -45.16374], ["2019-11-03T22:07:39", 11.04233, -45.16966], ["2019-11-03T22:37:39", 11.04469, -45.1767], ["2019-11-04T02:36:28", 11.04495, -45.22607], ["2019-11-04T03:36:17", 11.04257, -45.24149], ["2019-11-04T04:36:28", 11.04431, -45.25778], ["2019-11-04T07:07:27", 11.05791, -45.29541], ["2019-11-04T09:03:30", 11.07381, -45.32672], ["2019-11-04T09:35:59", 11.07892, -45.33582], ["2019-11-04T10:06:08", 11.08269, -45.34336], ["2019-11-04T10:36:08", 11.08604, -45.35134], ["2019-11-04T11:06:08", 11.09003, -45.35992], ["2019-11-04T11:32:40", 11.0937, -45.36691], ["2019-11-04T12:32:19", 11.10085, -45.38322], ["2019-11-04T13:02:19", 11.10523, -45.38949], ["2019-11-04T13:32:19", 11.10926, -45.39627], ["2019-11-04T14:01:44", 11.11418, -45.40369], ["2019-11-04T14:31:44", 11.1171, -45.40935], ["2019-11-04T15:01:44", 11.12268, -45.4151], ["2019-11-04T16:01:33", 11.13376, -45.42648], ["2019-11-04T16:31:01", 11.13925, -45.4315], ["2019-11-04T17:03:00", 11.14522, -45.43674], ["2019-11-04T17:31:01", 11.15037, -45.44077], ["2019-11-04T18:03:07", 11.15764, -45.44562], ["2019-11-04T18:33:07", 11.16382, -45.44922], ["2019-11-04T19:00:44", 11.17046, -45.453], ["2019-11-04T21:59:56", 11.20476, -45.47977], ["2019-11-04T23:03:11", 11.21101, -45.48959], ["2019-11-04T23:33:11", 11.21346, -45.49268], ["2019-11-05T00:59:41", 11.22982, -45.50384], ["2019-11-05T01:59:41", 11.23227, -45.50693], ["2019-11-05T03:57:16", 11.24344, -45.51977], ["2019-11-05T04:27:16", 11.24529, -45.52449], ["2019-11-05T04:57:16", 11.24645, -45.52887], ["2019-11-05T05:56:56", 11.24982, -45.53659], ["2019-11-05T06:28:59", 11.25235, -45.54037], ["2019-11-05T06:56:38", 11.25533, -45.54471], ["2019-11-05T07:28:59", 11.25857, -45.54913], ["2019-11-05T08:25:45", 11.2656, -45.55945], ["2019-11-05T08:55:45", 11.26706, -45.564], ["2019-11-05T09:25:45", 11.26852, -45.56683], ["2019-11-05T09:56:07", 11.27348, -45.57253], ["2019-11-05T10:56:07", 11.27477, -45.57596], ["2019-11-05T13:25:36", 11.27934, -45.60138], ["2019-11-05T13:56:58", 11.2811, -45.6075], ["2019-11-05T14:26:58", 11.28367, -45.61557], ["2019-11-05T15:53:32", 11.29367, -45.63651], ["2019-11-05T16:23:32", 11.29573, -45.64192], ["2019-11-05T16:53:32", 11.29749, -45.64801], ["2019-11-05T17:53:27", 11.30386, -45.66147], ["2019-11-05T22:21:52", 11.34084, -45.70996], ["2019-11-05T23:51:18", 11.35568, -45.72614], ["2019-11-06T03:50:19", 11.40491, -45.77914], ["2019-11-06T04:20:07", 11.41031, -45.78571], ["2019-11-06T04:51:52", 11.4162, -45.79242], ["2019-11-06T05:19:57", 11.42195, -45.79849], ["2019-11-06T06:22:09", 11.43574, -45.81021], ["2019-11-06T08:49:05", 11.46018, -45.83289], ["2019-11-06T09:48:35", 11.46645, -45.84106], ["2019-11-06T10:18:35", 11.47023, -45.84501], ["2019-11-06T10:48:35", 11.47409, -45.8475], ["2019-11-06T11:18:26", 11.47517, -45.84866], ["2019-11-06T14:47:24", 11.49899, -45.86905], ["2019-11-06T15:16:43", 11.50375, -45.87318], ["2019-11-06T15:46:43", 11.50735, -45.87678], ["2019-11-06T16:16:43", 11.5113, -45.88004], ["2019-11-06T19:45:41", 11.54239, -45.90512], ["2019-11-06T20:18:58", 11.54648, -45.91003], ["2019-11-06T22:16:29", 11.54924, -45.92785], ["2019-11-06T22:44:39", 11.54948, -45.93207], ["2019-11-06T23:16:29", 11.55117, -45.93652], ["2019-11-06T23:44:19", 11.55431, -45.94128], ["2019-11-07T02:45:06", 11.55724, -45.97711], ["2019-11-07T03:13:22", 11.56002, -45.98471], ["2019-11-07T05:45:23", 11.56196, -46.01901], ["2019-11-07T06:15:23", 11.56398, -46.02648], ["2019-11-07T06:45:23", 11.56351, -46.03232], ["2019-11-07T07:12:19", 11.56457, -46.03757], ["2019-11-07T08:15:06", 11.56703, -46.04944], ["2019-11-07T13:10:37", 11.60347, -46.1062], ["2019-11-07T13:40:16", 11.60762, -46.11033], ["2019-11-07T14:12:59", 11.60863, -46.11542], ["2019-11-07T14:40:16", 11.60732, -46.11917], ["2019-11-07T15:42:31", 11.60904, -46.12759], ["2019-11-07T16:09:20", 11.6082, -46.13215], ["2019-11-07T16:39:20", 11.60803, -46.13824], ["2019-11-07T18:08:39", 11.60408, -46.14823], ["2019-11-07T18:38:39", 11.60352, -46.15089], ["2019-11-07T19:08:39", 11.60202, -46.15338], ["2019-11-07T20:38:07", 11.59541, -46.16267], ["2019-11-07T21:08:07", 11.59215, -46.16645], ["2019-11-07T21:38:07", 11.59, -46.16937], ["2019-11-07T22:09:24", 11.58753, -46.17172], ["2019-11-07T22:37:46", 11.58729, -46.17297], ["2019-11-08T00:38:59", 11.58813, -46.16381], ["2019-11-08T01:38:59", 11.58792, -46.16501], ["2019-11-08T03:38:29", 11.58119, -46.16001], ["2019-11-08T04:08:29", 11.58076, -46.15872], ["2019-11-08T04:38:29", 11.58029, -46.15829], ["2019-11-08T05:05:13", 11.57918, -46.15851], ["2019-11-08T06:34:59", 11.57504, -46.16019], ["2019-11-08T07:05:31", 11.57497, -46.16139], ["2019-11-08T07:35:31", 11.57428, -46.16336], ["2019-11-08T09:04:40", 11.56973, -46.16946], ["2019-11-08T10:07:58", 11.5625, -46.17441], ["2019-11-08T11:34:28", 11.55426, -46.18402], ["2019-11-08T12:04:28", 11.55349, -46.18814], ["2019-11-08T12:34:28", 11.55139, -46.19174], ["2019-11-08T13:03:06", 11.54801, -46.19459], ["2019-11-08T13:33:06", 11.54582, -46.19682], ["2019-11-08T14:03:06", 11.54307, -46.19897], ["2019-11-08T19:04:21", 11.52116, -46.23923], ["2019-11-08T19:35:24", 11.51893, -46.24405], ["2019-11-08T20:01:40", 11.51717, -46.24796], ["2019-11-08T23:33:35", 11.50365, -46.28464], ["2019-11-08T23:59:44", 11.50136, -46.28915], ["2019-11-09T04:29:10", 11.49158, -46.34219], ["2019-11-09T05:57:50", 11.4904, -46.36493], ["2019-11-09T07:27:17", 11.48612, -46.38836], ["2019-11-09T07:57:17", 11.48548, -46.39557], ["2019-11-09T08:27:17", 11.48535, -46.40338], ["2019-11-09T09:56:58", 11.48866, -46.42328], ["2019-11-09T12:28:28", 11.49648, -46.46152], ["2019-11-09T12:58:28", 11.49824, -46.47002], ["2019-11-09T13:28:28", 11.50034, -46.47946], ["2019-11-09T14:55:25", 11.51011, -46.50599], ["2019-11-09T15:25:25", 11.51466, -46.51457], ["2019-11-09T15:55:25", 11.51904, -46.52332], ["2019-11-09T16:27:56", 11.52359, -46.53271], ["2019-11-09T17:24:34", 11.53298, -46.54862], ["2019-11-09T17:54:34", 11.53877, -46.55634], ["2019-11-09T18:24:34", 11.54358, -46.56235], ["2019-11-09T19:32:07", 11.56307, -46.58294], ["2019-11-09T20:02:07", 11.57157, -46.58912], ["2019-11-09T20:32:07", 11.57342, -46.59006], ["2019-11-09T22:23:13", 11.60476, -46.60559], ["2019-11-09T22:53:13", 11.61073, -46.60825], ["2019-11-09T23:22:48", 11.61787, -46.61093], ["2019-11-09T23:52:48", 11.62577, -46.61299], ["2019-11-10T00:22:48", 11.63332, -46.61514], ["2019-11-10T00:52:39", 11.64146, -46.61853], ["2019-11-10T01:24:20", 11.64805, -46.6211], ["2019-11-10T01:54:20", 11.65483, -46.62376], ["2019-11-10T02:24:20", 11.66067, -46.62616], ["2019-11-10T02:51:55", 11.66705, -46.62921], ["2019-11-10T03:21:52", 11.67398, -46.63245], ["2019-11-10T03:51:28", 11.68138, -46.63469], ["2019-11-10T04:21:28", 11.68722, -46.63623], ["2019-11-10T05:50:49", 11.70689, -46.63945], ["2019-11-10T06:20:49", 11.7138, -46.63945], ["2019-11-10T06:50:49", 11.72049, -46.64005], ["2019-11-10T09:21:13", 11.75189, -46.64343], ["2019-11-10T09:49:55", 11.75683, -46.64264], ["2019-11-10T10:21:13", 11.76168, -46.6424], ["2019-11-10T11:22:27", 11.76973, -46.64334], ["2019-11-10T11:49:28", 11.77217, -46.64349], ["2019-11-10T12:50:26", 11.77703, -46.64343], ["2019-11-10T13:49:58", 11.77995, -46.64422], ["2019-11-10T14:18:49", 11.77993, -46.6445], ["2019-11-10T14:49:58", 11.77897, -46.64465], ["2019-11-10T15:18:43", 11.7789, -46.64502], ["2019-11-10T15:48:29", 11.778, -46.64599], ["2019-11-10T16:18:29", 11.7774, -46.64719], ["2019-11-10T18:17:37", 11.76812, -46.64852], ["2019-11-10T18:50:33", 11.76495, -46.64774], ["2019-11-10T19:17:37", 11.76211, -46.64697], ["2019-11-10T20:47:07", 11.75654, -46.64853], ["2019-11-10T22:46:48", 11.75436, -46.65457], ["2019-11-10T22:49:42", 11.75295, -46.65477], ["2019-11-10T23:49:42", 11.75291, -46.65674], ["2019-11-11T00:16:26", 11.75168, -46.65851], ["2019-11-11T00:48:02", 11.75091, -46.66027], ["2019-11-11T01:18:02", 11.75001, -46.66284], ["2019-11-11T01:45:38", 11.74835, -46.66498], ["2019-11-11T02:15:38", 11.74689, -46.66644], ["2019-11-11T02:45:19", 11.74521, -46.66914], ["2019-11-11T03:15:19", 11.74414, -46.67129], ["2019-11-11T03:45:19", 11.74277, -46.67429], ["2019-11-11T04:46:40", 11.73752, -46.67953], ["2019-11-11T05:46:06", 11.72713, -46.6853], ["2019-11-11T07:14:20", 11.71238, -46.70132], ["2019-11-11T08:43:29", 11.70086, -46.7191], ["2019-11-11T09:13:29", 11.69618, -46.72622], ["2019-11-11T09:43:29", 11.69318, -46.733], ["2019-11-11T16:11:50", 11.67877, -46.82382], ["2019-11-11T17:41:04", 11.68602, -46.85363], ["2019-11-11T18:11:04", 11.69048, -46.86376], ["2019-11-11T18:41:04", 11.69473, -46.87372], ["2019-11-12T04:08:23", 11.82831, -47.01712], ["2019-11-12T04:37:45", 11.83496, -47.02092], ["2019-11-12T05:07:45", 11.84002, -47.02521], ["2019-11-12T05:37:45", 11.84556, -47.0289], ["2019-11-12T06:07:25", 11.85258, -47.03227], ["2019-11-12T06:37:25", 11.85945, -47.0351], ["2019-11-12T07:07:00", 11.86633, -47.03911], ["2019-11-12T07:37:00", 11.87436, -47.0422], ["2019-11-12T08:07:00", 11.88208, -47.04495], ["2019-11-12T08:40:30", 11.88879, -47.04583], ["2019-11-12T09:10:30", 11.89707, -47.0466], ["2019-11-12T09:36:41", 11.90353, -47.04697], ["2019-11-12T10:36:30", 11.91819, -47.04613], ["2019-11-12T11:06:37", 11.92364, -47.04425], ["2019-11-12T11:36:30", 11.92986, -47.04184], ["2019-11-12T12:06:17", 11.93599, -47.03948], ["2019-11-12T12:36:17", 11.94131, -47.03699], ["2019-11-12T13:38:01", 11.95139, -47.03177], ["2019-11-12T14:05:56", 11.95388, -47.02927], ["2019-11-12T15:07:42", 11.96133, -47.02101], ["2019-11-12T16:07:42", 11.96373, -47.01749], ["2019-11-12T16:35:11", 11.96668, -47.01523], ["2019-11-12T17:38:25", 11.97438, -47.01157], ["2019-11-12T19:32:24", 11.99267, -47.00706], ["2019-11-12T20:02:24", 11.99606, -47.00569], ["2019-11-12T20:32:24", 11.99679, -47.00543], ["2019-11-13T06:01:16", 11.98519, -46.96439], ["2019-11-13T07:00:37", 11.97701, -46.96763], ["2019-11-13T07:30:37", 11.97272, -46.97046], ["2019-11-13T11:01:58", 11.9561, -46.99277], ["2019-11-13T11:29:13", 11.95394, -46.99582], ["2019-11-13T12:00:57", 11.95192, -46.99908], ["2019-11-13T12:30:57", 11.9499, -47.00217], ["2019-11-13T13:58:00", 11.9429, -47.01117], ["2019-11-13T14:28:16", 11.94103, -47.01437], ["2019-11-13T14:58:00", 11.93921, -47.01752], ["2019-11-13T18:27:35", 11.9321, -47.03882], ["2019-11-13T20:32:38", 11.93367, -47.06195], ["2019-11-13T20:56:18", 11.93336, -47.066], ["2019-11-13T21:26:18", 11.93272, -47.07063], ["2019-11-13T21:56:18", 11.93246, -47.07458], ["2019-11-13T23:25:42", 11.93253, -47.08549], ["2019-11-13T23:26:36", 11.93253, -47.08548], ["2019-11-13T23:55:42", 11.9327, -47.08884], ["2019-11-14T02:27:00", 11.92996, -47.10593], ["2019-11-14T02:57:00", 11.92846, -47.10988], ["2019-11-14T03:27:00", 11.9273, -47.11469], ["2019-11-14T04:54:00", 11.93244, -47.12994], ["2019-11-14T05:24:00", 11.93501, -47.13457], ["2019-11-14T05:54:00", 11.93909, -47.13989], ["2019-11-14T06:26:29", 11.94365, -47.14523], ["2019-11-14T06:53:52", 11.94751, -47.14932], ["2019-11-14T08:23:12", 11.96044, -47.1626], ["2019-11-14T11:52:59", 11.99447, -47.17905], ["2019-11-14T12:22:59", 11.99855, -47.18171], ["2019-11-14T12:52:59", 12.0037, -47.18454], ["2019-11-14T14:21:29", 12.01846, -47.19275], ["2019-11-14T16:20:36", 12.03832, -47.19513], ["2019-11-14T16:51:38", 12.05011, -47.19772], ["2019-11-14T17:51:38", 12.05565, -47.19858], ["2019-11-14T19:19:28", 12.07122, -47.20428], ["2019-11-14T20:22:48", 12.08359, -47.20676], ["2019-11-14T20:48:51", 12.08834, -47.20719], ["2019-11-14T21:18:51", 12.09366, -47.20685], ["2019-11-15T00:51:42", 12.13128, -47.19107], ["2019-11-15T01:47:49", 12.13938, -47.18613], ["2019-11-15T02:17:38", 12.14361, -47.18373], ["2019-11-15T02:47:38", 12.14721, -47.1821], ["2019-11-15T03:20:26", 12.15011, -47.17987], ["2019-11-15T03:50:26", 12.15238, -47.17764], ["2019-11-15T04:16:57", 12.15378, -47.17554], ["2019-11-15T04:46:57", 12.15511, -47.17374], ["2019-11-15T05:46:45", 12.15691, -47.16998], ["2019-11-15T06:19:28", 12.15639, -47.16846], ["2019-11-15T08:15:57", 12.15257, -47.16385], ["2019-11-15T11:15:59", 12.14642, -47.16117], ["2019-11-15T11:45:59", 12.14548, -47.16177], ["2019-11-15T12:15:59", 12.14428, -47.16254], ["2019-11-15T15:13:37", 12.14464, -47.17486], ["2019-11-15T15:43:37", 12.14507, -47.17769], ["2019-11-15T16:13:37", 12.14481, -47.17966], ["2019-11-15T16:43:21", 12.14409, -47.18198], ["2019-11-15T17:42:52", 12.14403, -47.18845], ["2019-11-15T19:14:47", 12.14334, -47.20026], ["2019-11-15T19:44:47", 12.14317, -47.20344], ["2019-11-15T20:14:47", 12.14283, -47.2067], ["2019-11-15T20:31:52", 12.14285, -47.20834], ["2019-11-15T20:42:21", 12.14291, -47.20932], ["2019-11-15T21:12:09", 12.14356, -47.21237], ["2019-11-15T23:12:49", 12.14852, -47.22668], ["2019-11-16T00:41:15", 12.15474, -47.2388], ["2019-11-16T02:11:53", 12.16131, -47.25338], ["2019-11-16T02:41:53", 12.16234, -47.25819], ["2019-11-16T03:11:53", 12.16401, -47.26343], ["2019-11-16T03:40:15", 12.16575, -47.26822], ["2019-11-16T04:09:58", 12.16739, -47.27351], ["2019-11-16T04:39:58", 12.16846, -47.27832], ["2019-11-16T05:09:48", 12.1697, -47.28293], ["2019-11-16T10:37:56", 12.18191, -47.33487], ["2019-11-16T11:40:30", 12.19287, -47.34616], ["2019-11-16T12:07:33", 12.19759, -47.3511], ["2019-11-16T14:07:08", 12.21673, -47.36954], ["2019-11-16T17:05:58", 12.25848, -47.39261], ["2019-11-16T19:06:30", 12.28318, -47.40289], ["2019-11-16T19:35:09", 12.28828, -47.40533], ["2019-11-17T03:35:39", 12.35925, -47.40302], ["2019-11-17T04:02:47", 12.36066, -47.40106], ["2019-11-17T06:32:03", 12.36258, -47.39139], ["2019-11-17T15:02:37", 12.32532, -47.42468], ["2019-11-17T17:30:11", 12.31714, -47.44678], ["2019-11-17T19:30:59", 12.31251, -47.47079], ["2019-11-17T19:57:57", 12.31002, -47.48157], ["2019-11-17T20:27:57", 12.30981, -47.48226], ["2019-11-17T20:57:57", 12.30869, -47.48715], ["2019-11-17T21:27:36", 12.30738, -47.49434], ["2019-11-17T21:57:36", 12.30622, -47.49966], ["2019-11-17T22:27:36", 12.30545, -47.50601], ["2019-11-17T23:57:04", 12.30571, -47.52545], ["2019-11-18T00:27:04", 12.3061, -47.53232], ["2019-11-18T00:57:04", 12.30722, -47.53824], ["2019-11-18T01:27:56", 12.30978, -47.5448], ["2019-11-18T01:57:56", 12.31266, -47.55081], ["2019-11-18T02:26:31", 12.31535, -47.55582], ["2019-11-18T02:56:04", 12.31778, -47.56068], ["2019-11-18T03:26:04", 12.31984, -47.56497], ["2019-11-18T04:58:59", 12.32132, -47.5766], ["2019-11-18T05:55:18", 12.32171, -47.5835], ["2019-11-18T07:24:28", 12.32146, -47.5962], ["2019-11-18T07:54:28", 12.32228, -47.60152], ["2019-11-18T08:24:28", 12.32344, -47.60727], ["2019-11-18T09:56:07", 12.33134, -47.63459], ["2019-11-18T10:56:07", 12.33254, -47.64154], ["2019-11-18T11:52:45", 12.34009, -47.65484], ["2019-11-18T12:26:12", 12.34429, -47.6622], ["2019-11-18T12:52:45", 12.34863, -47.66806], ["2019-11-18T17:22:03", 12.40538, -47.72058], ["2019-11-18T19:50:27", 12.43114, -47.74479], ["2019-11-18T20:20:27", 12.43153, -47.74548], ["2019-11-18T20:50:27", 12.43316, -47.74771], ["2019-11-18T21:51:35", 12.43726, -47.75269], ["2019-11-19T00:21:27", 12.44852, -47.77023], ["2019-11-19T00:49:39", 12.4516, -47.77325], ["2019-11-19T01:19:39", 12.45409, -47.77634], ["2019-11-19T01:51:17", 12.45614, -47.77924], ["2019-11-19T03:48:41", 12.46418, -47.789], ["2019-11-19T05:18:22", 12.47286, -47.79501], ["2019-11-19T07:47:42", 12.48371, -47.80951], ["2019-11-19T09:19:41", 12.48794, -47.82247], ["2019-11-19T09:49:41", 12.48854, -47.82659], ["2019-11-19T10:19:41", 12.4888, -47.83105], ["2019-11-19T12:17:01", 12.49151, -47.84433], ["2019-11-19T12:46:46", 12.4906, -47.8468], ["2019-11-19T13:17:36", 12.48866, -47.84958], ["2019-11-19T15:15:36", 12.47833, -47.85757], ["2019-11-19T15:44:56", 12.47553, -47.86049], ["2019-11-19T16:14:56", 12.47403, -47.86358], ["2019-11-19T16:44:56", 12.47244, -47.86676], ["2019-11-19T17:44:36", 12.46915, -47.87421], ["2019-11-19T18:14:36", 12.46773, -47.87842], ["2019-11-19T18:44:36", 12.46644, -47.88245], ["2019-11-19T19:14:16", 12.4644, -47.88732], ["2019-11-19T19:44:16", 12.46255, -47.89127], ["2019-11-19T20:14:16", 12.46023, -47.89651], ["2019-11-19T23:14:31", 12.44802, -47.93283], ["2019-11-20T01:14:56", 12.44307, -47.96057], ["2019-11-20T01:43:09", 12.44267, -47.96631], ["2019-11-20T02:13:48", 12.44267, -47.9726], ["2019-11-20T02:43:48", 12.44284, -47.97878], ["2019-11-20T03:13:48", 12.44361, -47.98505], ["2019-11-20T03:42:41", 12.44476, -47.99106], ["2019-11-20T04:12:19", 12.44612, -47.99823], ["2019-11-20T04:42:19", 12.44689, -48.00458], ["2019-11-20T10:40:22", 12.46503, -48.10208], ["2019-11-20T12:09:56", 12.47059, -48.12454], ["2019-11-20T16:08:39", 12.49261, -48.17703], ["2019-11-20T17:08:04", 12.50099, -48.18867], ["2019-11-20T17:40:58", 12.50664, -48.19473], ["2019-11-20T18:08:04", 12.5109, -48.19922], ["2019-11-20T18:38:07", 12.51488, -48.20413], ["2019-11-20T19:09:27", 12.51915, -48.20889], ["2019-11-21T01:38:32", 12.54278, -48.25269], ["2019-11-21T04:04:44", 12.54217, -48.26957], ["2019-11-21T04:34:44", 12.54286, -48.27335], ["2019-11-21T05:04:44", 12.54398, -48.2767], ["2019-11-21T05:34:37", 12.54606, -48.27969], ["2019-11-21T06:34:18", 12.55257, -48.28693], ["2019-11-21T07:04:18", 12.55587, -48.29062], ["2019-11-21T12:32:06", 12.58256, -48.32584], ["2019-11-21T13:03:14", 12.58558, -48.32926], ["2019-11-21T13:33:14", 12.58712, -48.33304], ["2019-11-21T14:03:14", 12.58858, -48.33707], ["2019-11-21T16:30:20", 12.59769, -48.35343], ["2019-11-21T17:00:20", 12.59846, -48.35643], ["2019-11-21T17:30:20", 12.59897, -48.35995], ["2019-11-21T19:29:39", 12.60609, -48.38106], ["2019-11-21T20:28:16", 12.60655, -48.38159], ["2019-11-21T20:29:39", 12.60665, -48.38174], ["2019-11-21T21:02:29", 12.6101, -48.38426], ["2019-11-21T21:32:29", 12.61332, -48.38641], ["2019-11-22T00:00:13", 12.62217, -48.39778], ["2019-11-22T01:00:13", 12.6253, -48.39975], ["2019-11-22T01:28:32", 12.62543, -48.40045], ["2019-11-22T03:27:56", 12.62166, -48.40701], ["2019-11-22T03:59:22", 12.62181, -48.41028], ["2019-11-22T04:27:37", 12.62344, -48.41379], ["2019-11-22T04:57:20", 12.62595, -48.41735], ["2019-11-22T05:27:20", 12.62874, -48.42087], ["2019-11-22T05:57:20", 12.63093, -48.42447], ["2019-11-22T07:28:07", 12.63544, -48.43478], ["2019-11-22T10:55:50", 12.642, -48.44778], ["2019-11-22T11:25:50", 12.64286, -48.44907], ["2019-11-22T11:55:50", 12.64368, -48.45096], ["2019-11-22T13:28:44", 12.646, -48.45847], ["2019-11-22T13:58:44", 12.64651, -48.46147], ["2019-11-22T14:28:44", 12.64741, -48.46439], ["2019-11-22T16:25:49", 12.657, -48.47809], ["2019-11-22T18:23:31", 12.67296, -48.49603], ["2019-11-22T18:53:31", 12.67841, -48.50032], ["2019-11-22T19:23:31", 12.68485, -48.5047], ["2019-11-22T19:54:33", 12.6908, -48.50815], ["2019-11-22T20:22:50", 12.69658, -48.51164], ["2019-11-22T20:52:50", 12.70001, -48.51404], ["2019-11-22T21:22:50", 12.70336, -48.51593], ["2019-11-22T21:54:28", 12.70677, -48.51785], ["2019-11-22T23:54:11", 12.71635, -48.5214], ["2019-11-23T00:24:11", 12.71734, -48.52209], ["2019-11-23T00:54:11", 12.71751, -48.52295], ["2019-11-23T04:20:28", 12.73045, -48.53418], ["2019-11-23T06:51:13", 12.74106, -48.54523], ["2019-11-23T07:20:41", 12.743, -48.5464], ["2019-11-23T07:50:41", 12.74532, -48.54794], ["2019-11-23T10:48:35", 12.75315, -48.5513], ["2019-11-23T11:20:58", 12.75376, -48.55179], ["2019-11-23T11:48:26", 12.75296, -48.55267], ["2019-11-23T12:49:59", 12.74989, -48.55463], ["2019-11-23T15:17:06", 12.74805, -48.56738], ["2019-11-23T16:46:45", 12.75226, -48.57916], ["2019-11-23T17:16:36", 12.75317, -48.58398], ["2019-11-23T17:46:36", 12.7548, -48.58698], ["2019-11-23T19:17:20", 12.76384, -48.59973], ["2019-11-23T19:48:22", 12.7665, -48.60386], ["2019-11-23T20:18:22", 12.76955, -48.60858], ["2019-11-23T20:45:51", 12.77194, -48.61273], ["2019-11-23T22:49:00", 12.7824, -48.62982], ["2019-11-24T02:44:21", 12.79085, -48.64914], ["2019-11-24T03:14:08", 12.78992, -48.65173], ["2019-11-24T05:47:05", 12.79697, -48.66992], ["2019-11-24T06:16:11", 12.79843, -48.67394], ["2019-11-24T06:46:11", 12.79937, -48.67832], ["2019-11-24T07:16:11", 12.80079, -48.68356], ["2019-11-24T08:44:00", 12.80717, -48.69815], ["2019-11-24T09:11:59", 12.80948, -48.70352], ["2019-11-24T09:44:29", 12.81243, -48.70868], ["2019-11-24T10:11:59", 12.816, -48.71262], ["2019-11-24T13:43:28", 12.84314, -48.73648], ["2019-11-24T14:10:28", 12.84578, -48.73921], ["2019-11-24T14:40:28", 12.8481, -48.74213], ["2019-11-24T16:12:57", 12.85777, -48.76114], ["2019-11-24T17:12:57", 12.86039, -48.76517], ["2019-11-24T20:27:46", 12.88504, -48.79062], ["2019-11-24T21:42:22", 12.89517, -48.79697], ["2019-11-24T22:12:56", 12.89766, -48.79947], ["2019-11-24T23:41:59", 12.90391, -48.80826], ["2019-11-25T09:35:31", 12.93841, -48.87445], ["2019-11-25T12:35:57", 12.94881, -48.89615], ["2019-11-25T14:34:30", 12.95587, -48.91196], ["2019-11-25T20:32:39", 12.99606, -48.94376], ["2019-11-26T00:01:36", 12.99964, -48.95129], ["2019-11-26T04:59:36", 12.99732, -48.98145], ["2019-11-26T08:28:49", 13.00754, -48.9946], ["2019-11-26T08:59:46", 13.00707, -48.99673], ["2019-11-26T09:58:03", 13.00587, -49.00252], ["2019-11-26T10:28:03", 13.00591, -49.00509], ["2019-11-26T10:58:03", 13.0066, -49.00827], ["2019-11-26T11:27:57", 13.00671, -49.01287], ["2019-11-26T11:57:57", 13.00598, -49.01596], ["2019-11-26T14:30:34", 13.0028, -49.03946], ["2019-11-26T14:58:28", 13.00296, -49.04428], ["2019-11-26T15:27:07", 13.00295, -49.04858], ["2019-11-26T16:27:43", 13.0026, -49.05729], ["2019-11-26T16:57:43", 13.00209, -49.06141], ["2019-11-26T17:27:43", 13.00188, -49.0657], ["2019-11-26T17:57:30", 13.00214, -49.0697], ["2019-11-26T18:27:30", 13.00313, -49.07339], ["2019-11-26T18:56:18", 13.00453, -49.07568], ["2019-11-26T19:26:03", 13.00667, -49.07908], ["2019-11-26T19:56:03", 13.0086, -49.08243], ["2019-11-26T21:25:57", 13.01415, -49.09332], ["2019-11-26T21:55:57", 13.01475, -49.09624], ["2019-11-26T22:25:57", 13.01514, -49.09976], ["2019-11-26T22:56:58", 13.01544, -49.10352], ["2019-11-26T23:25:46", 13.01629, -49.1077], ["2019-11-26T23:57:19", 13.0169, -49.11209], ["2019-11-27T03:24:52", 13.01861, -49.14413], ["2019-11-27T03:54:28", 13.0211, -49.14895], ["2019-11-27T04:24:28", 13.0235, -49.15247], ["2019-11-27T05:25:59", 13.02943, -49.15749], ["2019-11-27T05:55:59", 13.03145, -49.15895], ["2019-11-27T06:25:59", 13.03347, -49.16092], ["2019-11-27T06:53:51", 13.03587, -49.16293], ["2019-11-27T08:56:26", 13.04902, -49.17259], ["2019-11-27T09:26:26", 13.05215, -49.17551], ["2019-11-27T09:56:26", 13.05545, -49.17963], ["2019-11-27T10:22:50", 13.05794, -49.18307], ["2019-11-27T10:52:29", 13.06032, -49.18591], ["2019-11-27T15:21:38", 13.0698, -49.21579], ["2019-11-27T18:22:09", 13.07494, -49.22327], ["2019-11-27T19:20:38", 13.07896, -49.22603], ["2019-11-27T19:50:38", 13.08106, -49.22792], ["2019-11-27T20:20:38", 13.08295, -49.22998], ["2019-11-27T20:51:35", 13.08525, -49.23255], ["2019-11-27T21:21:35", 13.08701, -49.23547], ["2019-11-27T21:51:35", 13.08817, -49.23959], ["2019-11-27T22:21:07", 13.08876, -49.2426], ["2019-11-27T22:51:07", 13.08927, -49.24603], ["2019-11-28T00:22:07", 13.09296, -49.25558], ["2019-11-28T00:49:24", 13.09453, -49.25787], ["2019-11-28T01:19:22", 13.09563, -49.26019], ["2019-11-28T01:48:53", 13.09631, -49.26227], ["2019-11-28T02:19:08", 13.09663, -49.26312], ["2019-11-28T02:48:53", 13.09807, -49.26425], ["2019-11-28T04:50:30", 13.10107, -49.26602], ["2019-11-28T05:18:07", 13.10209, -49.26611], ["2019-11-28T06:19:25", 13.10714, -49.26706], ["2019-11-28T07:20:55", 13.1129, -49.26736], ["2019-11-28T12:45:46", 13.11289, -49.27933], ["2019-11-28T13:16:30", 13.11214, -49.28082], ["2019-11-28T13:46:30", 13.11137, -49.28305], ["2019-11-28T21:15:32", 13.12191, -49.32654], ["2019-11-28T21:43:26", 13.12264, -49.33112], ["2019-11-28T22:13:18", 13.1227, -49.3363], ["2019-11-29T00:12:44", 13.12213, -49.35544], ["2019-11-29T00:43:15", 13.12067, -49.35825], ["2019-11-29T01:12:44", 13.11866, -49.36127], ["2019-11-29T01:45:57", 13.11679, -49.36444], ["2019-11-29T02:41:49", 13.11476, -49.37099], ["2019-11-29T03:11:49", 13.11437, -49.37502], ["2019-11-29T03:41:49", 13.11377, -49.37811], ["2019-11-29T04:11:40", 13.11282, -49.3812], ["2019-11-29T04:44:32", 13.11205, -49.38425], ["2019-11-29T05:11:27", 13.11264, -49.38706], ["2019-11-29T05:41:27", 13.11491, -49.38989], ["2019-11-29T08:10:44", 13.12933, -49.40521], ["2019-11-29T08:41:36", 13.13434, -49.40963], ["2019-11-29T09:41:36", 13.1379, -49.41229], ["2019-11-29T10:09:52", 13.13973, -49.41422], ["2019-11-29T10:39:37", 13.14214, -49.41738], ["2019-11-29T11:09:37", 13.14411, -49.4203], ["2019-11-29T11:39:37", 13.1472, -49.42416], ["2019-11-29T17:07:45", 13.17913, -49.45483], ["2019-11-29T17:40:31", 13.18381, -49.45657], ["2019-11-29T18:07:32", 13.1871, -49.45737], ["2019-11-29T18:37:05", 13.18986, -49.45709], ["2019-11-29T19:07:05", 13.19316, -49.4558], ["2019-11-29T19:37:05", 13.19565, -49.45477], ["2019-11-30T04:04:20", 13.22847, -49.45984], ["2019-11-30T06:33:34", 13.24019, -49.46024], ["2019-11-30T07:05:57", 13.24229, -49.45864], ["2019-11-30T07:35:57", 13.24392, -49.45718], ["2019-11-30T08:02:49", 13.24542, -49.45593], ["2019-11-30T10:01:58", 13.24737, -49.45303], ["2019-11-30T10:31:42", 13.24877, -49.45219], ["2019-11-30T11:01:42", 13.24937, -49.4515], ["2019-11-30T11:31:42", 13.24933, -49.45099], ["2019-11-30T13:32:44", 13.2492, -49.45175], ["2019-11-30T14:00:35", 13.24963, -49.45288], ["2019-11-30T14:34:31", 13.25062, -49.45444], ["2019-11-30T15:00:35", 13.25298, -49.4552], ["2019-11-30T16:02:37", 13.25748, -49.45782], ["2019-11-30T18:00:08", 13.25771, -49.46115], ["2019-11-30T18:30:44", 13.25638, -49.46121], ["2019-11-30T19:00:44", 13.25578, -49.46198], ["2019-11-30T19:28:50", 13.25466, -49.46213], ["2019-11-30T20:19:05", 13.25307, -49.46143], ["2019-12-01T04:28:27", 13.26893, -49.50485], ["2019-12-01T05:59:00", 13.26863, -49.51502], ["2019-12-01T06:29:00", 13.2682, -49.51751], ["2019-12-01T06:59:00", 13.26936, -49.52026], ["2019-12-01T09:26:23", 13.27202, -49.53812], ["2019-12-01T14:24:18", 13.30508, -49.58182], ["2019-12-01T14:53:54", 13.30877, -49.58559], ["2019-12-01T15:25:57", 13.3123, -49.58878], ["2019-12-01T15:53:54", 13.31589, -49.59186], ["2019-12-01T16:24:22", 13.32017, -49.59449], ["2019-12-01T16:54:22", 13.32489, -49.59732], ["2019-12-01T17:23:20", 13.32968, -49.60035], ["2019-12-01T17:53:20", 13.33359, -49.60395], ["2019-12-01T18:23:20", 13.33677, -49.60635], ["2019-12-01T21:52:49", 13.34747, -49.61459], ["2019-12-02T04:50:10", 13.37367, -49.63748], ["2019-12-02T05:21:37", 13.37485, -49.63956], ["2019-12-02T06:20:31", 13.37452, -49.64307], ["2019-12-02T06:49:00", 13.37339, -49.64526], ["2019-12-02T07:19:00", 13.37129, -49.64775], ["2019-12-02T07:49:00", 13.36854, -49.65015], ["2019-12-02T08:22:19", 13.36643, -49.65357], ["2019-12-02T08:52:19", 13.36446, -49.65717], ["2019-12-02T09:18:40", 13.36389, -49.66089], ["2019-12-02T15:16:44", 13.3564, -49.70746], ["2019-12-02T15:46:16", 13.35694, -49.7141], ["2019-12-02T16:16:16", 13.35715, -49.71942], ["2019-12-02T16:46:16", 13.35848, -49.72534], ["2019-12-02T17:47:20", 13.36079, -49.73802], ["2019-12-02T18:17:20", 13.36092, -49.74437], ["2019-12-02T18:47:20", 13.36036, -49.75098], ["2019-12-02T19:18:21", 13.36005, -49.75808], ["2019-12-02T19:48:21", 13.36104, -49.76529], ["2019-12-02T23:44:59", 13.37051, -49.80908], ["2019-12-03T00:17:30", 13.37271, -49.81421], ["2019-12-03T00:44:53", 13.37486, -49.81888], ["2019-12-03T03:45:31", 13.40558, -49.85313], ["2019-12-03T04:45:31", 13.41034, -49.85828], ["2019-12-03T07:14:36", 13.43089, -49.87088], ["2019-12-03T07:42:49", 13.43408, -49.87375], ["2019-12-03T15:42:41", 13.47321, -49.91382], ["2019-12-04T00:40:10", 13.50976, -49.94272], ["2019-12-04T01:06:43", 13.51063, -49.94453], ["2019-12-04T01:36:43", 13.51114, -49.94702], ["2019-12-04T03:06:21", 13.51463, -49.95294], ["2019-12-04T17:32:23", 13.51309, -50.07846], ["2019-12-04T18:02:11", 13.51477, -50.08405], ["2019-12-05T02:31:15", 13.56696, -50.16931], ["2019-12-05T06:29:14", 13.59694, -50.1991], ["2019-12-05T06:59:03", 13.60286, -50.20034], ["2019-12-05T07:29:03", 13.60775, -50.20154], ["2019-12-05T08:58:06", 13.62196, -50.20698], ["2019-12-05T09:28:06", 13.62548, -50.20904], ["2019-12-05T09:58:06", 13.62836, -50.21161], ["2019-12-05T13:30:42", 13.65178, -50.22693], ["2019-12-05T20:29:00", 13.68564, -50.24692], ["2019-12-05T20:55:19", 13.68821, -50.24884], ["2019-12-05T21:25:04", 13.69063, -50.2515], ["2019-12-05T23:53:56", 13.69949, -50.2579], ["2019-12-06T00:23:56", 13.70082, -50.25824], ["2019-12-06T00:53:44", 13.70227, -50.25812], ["2019-12-06T01:56:11", 13.70362, -50.25888], ["2019-12-06T02:23:06", 13.70356, -50.26017], ["2019-12-06T02:53:06", 13.70339, -50.26154], ["2019-12-06T03:52:57", 13.70337, -50.26553], ["2019-12-06T06:51:50", 13.7133, -50.28351], ["2019-12-06T10:23:05", 13.7273, -50.3042], ["2019-12-06T19:18:57", 13.76219, -50.37292], ["2019-12-06T23:47:43", 13.79293, -50.39868], ["2019-12-07T02:45:07", 13.80722, -50.41241], ["2019-12-07T03:15:07", 13.80855, -50.41687], ["2019-12-07T03:45:07", 13.81061, -50.42279], ["2019-12-07T17:10:52", 13.92725, -50.49506], ["2019-12-08T04:37:30", 13.97467, -50.54199], ["2019-12-08T05:07:06", 13.97538, -50.5465], ["2019-12-08T05:37:06", 13.97611, -50.5495], ["2019-12-08T06:06:58", 13.9767, -50.55276], ["2019-12-08T10:35:40", 13.99597, -50.58066], ["2019-12-08T11:35:03", 14.00352, -50.58429], ["2019-12-08T12:04:52", 14.0075, -50.58545], ["2019-12-08T12:34:45", 14.01104, -50.58646], ["2019-12-08T13:04:45", 14.0134, -50.58749], ["2019-12-08T18:03:28", 14.03096, -50.60956], ["2019-12-08T19:32:31", 14.03695, -50.61829], ["2019-12-09T00:00:50", 14.05002, -50.63489], ["2019-12-09T00:30:16", 14.05159, -50.63716], ["2019-12-09T01:00:16", 14.05296, -50.63939], ["2019-12-09T01:30:16", 14.05489, -50.64188], ["2019-12-09T01:59:57", 14.05592, -50.64415], ["2019-12-09T02:29:57", 14.05686, -50.64664], ["2019-12-09T02:59:45", 14.05757, -50.65006], ["2019-12-09T03:29:45", 14.05821, -50.65349], ["2019-12-09T03:59:45", 14.05958, -50.65692], ["2019-12-09T11:00:23", 14.08124, -50.71182], ["2019-12-09T18:55:15", 14.11232, -50.75659], ["2019-12-09T23:54:18", 14.11679, -50.79712], ["2019-12-10T00:54:46", 14.11948, -50.8103], ["2019-12-10T04:22:28", 14.13446, -50.84683], ["2019-12-10T08:25:09", 14.15187, -50.88727], ["2019-12-10T10:50:41", 14.16663, -50.91394], ["2019-12-10T11:24:24", 14.17083, -50.92059], ["2019-12-10T13:20:36", 14.18679, -50.94103], ["2019-12-10T13:50:36", 14.191, -50.94566], ["2019-12-10T14:20:36", 14.19538, -50.95029], ["2019-12-10T18:20:01", 14.22173, -50.98273], ["2019-12-10T21:47:03", 14.24745, -51.01068], ["2019-12-10T22:20:05", 14.25112, -51.0141], ["2019-12-10T23:45:59", 14.26055, -51.02129], ["2019-12-11T00:15:59", 14.26244, -51.02386], ["2019-12-11T00:45:59", 14.2639, -51.02643], ["2019-12-11T01:48:30", 14.26535, -51.03036], ["2019-12-11T03:17:36", 14.26764, -51.03732], ["2019-12-11T04:14:50", 14.26907, -51.04153], ["2019-12-11T05:16:47", 14.27445, -51.05232], ["2019-12-11T06:16:47", 14.27544, -51.05472], ["2019-12-11T09:17:35", 14.28861, -51.07516], ["2019-12-11T11:43:18", 14.30001, -51.09189], ["2019-12-11T17:13:00", 14.31214, -51.12546], ["2019-12-11T18:41:28", 14.31598, -51.138], ["2019-12-11T20:11:09", 14.32256, -51.15161], ["2019-12-11T20:43:55", 14.32596, -51.15738], ["2019-12-12T01:41:03", 14.34878, -51.19653], ["2019-12-12T02:09:31", 14.34902, -51.20004], ["2019-12-12T06:09:27", 14.35428, -51.23334], ["2019-12-12T08:07:56", 14.36785, -51.25673], ["2019-12-12T08:37:56", 14.37042, -51.26102], ["2019-12-12T09:08:11", 14.37313, -51.26552], ["2019-12-12T09:38:11", 14.37575, -51.26981], ["2019-12-12T12:06:17", 14.39531, -51.28595], ["2019-12-12T15:37:01", 14.42624, -51.314], ["2019-12-12T16:34:36", 14.43163, -51.32013], ["2019-12-12T18:34:08", 14.44706, -51.33212], ["2019-12-12T19:03:47", 14.45161, -51.3361], ["2019-12-12T19:33:47", 14.45526, -51.3385], ["2019-12-12T20:34:35", 14.46321, -51.34335], ["2019-12-13T00:31:52", 14.4934, -51.36215], ["2019-12-13T03:00:58", 14.5078, -51.37051], ["2019-12-13T04:30:29", 14.51322, -51.37457], ["2019-12-13T05:30:28", 14.51443, -51.37558], ["2019-12-13T05:59:51", 14.51515, -51.3777], ["2019-12-13T06:29:51", 14.51571, -51.37959], ["2019-12-13T06:59:51", 14.51562, -51.38174], ["2019-12-13T08:59:07", 14.51296, -51.39783], ["2019-12-13T10:31:38", 14.51509, -51.4222], ["2019-12-13T11:31:38", 14.51526, -51.42838], ["2019-12-13T15:30:43", 14.52748, -51.47821], ["2019-12-13T16:26:57", 14.53036, -51.49103], ["2019-12-13T17:56:22", 14.53492, -51.50985], ["2019-12-13T18:26:22", 14.53724, -51.51697], ["2019-12-13T18:56:22", 14.53913, -51.52289], ["2019-12-14T01:24:11", 14.58855, -51.62805], ["2019-12-14T04:53:20", 14.62332, -51.67017], ["2019-12-14T05:23:30", 14.62723, -51.67584], ["2019-12-14T05:53:30", 14.63041, -51.6815], ["2019-12-14T06:23:30", 14.6335, -51.68674], ["2019-12-14T08:22:13", 14.64542, -51.70935], ["2019-12-14T08:51:25", 14.64784, -51.71557], ["2019-12-14T09:21:25", 14.64964, -51.72115], ["2019-12-14T09:51:25", 14.6517, -51.72656], ["2019-12-14T10:20:54", 14.65385, -51.73198], ["2019-12-14T10:50:54", 14.65557, -51.73653], ["2019-12-14T11:20:54", 14.65759, -51.74219], ["2019-12-14T12:20:41", 14.66201, -51.75619], ["2019-12-14T12:50:41", 14.66566, -51.7646], ["2019-12-14T13:20:41", 14.66862, -51.77155], ["2019-12-14T13:50:38", 14.67113, -51.77957], ["2019-12-14T15:19:41", 14.68318, -51.80483], ["2019-12-14T15:52:19", 14.68806, -51.81393], ["2019-12-14T16:19:41", 14.69253, -51.82123], ["2019-12-14T16:51:29", 14.69709, -51.82881], ["2019-12-14T17:21:29", 14.70177, -51.83679], ["2019-12-14T17:49:09", 14.70559, -51.84335], ["2019-12-14T18:18:57", 14.70951, -51.85089], ["2019-12-14T19:22:28", 14.7161, -51.867], ["2019-12-14T22:18:02", 14.72782, -51.91577], ["2019-12-15T03:16:03", 14.73569, -52.00967], ["2019-12-15T05:45:32", 14.73713, -52.04694], ["2019-12-15T06:15:18", 14.73577, -52.05606], ["2019-12-15T06:45:18", 14.7341, -52.06439], ["2019-12-15T07:17:13", 14.73165, -52.07345], ["2019-12-15T07:47:13", 14.72847, -52.08298], ["2019-12-15T08:15:02", 14.72628, -52.09122], ["2019-12-15T13:14:55", 14.71498, -52.17807], ["2019-12-16T02:42:47", 14.7157, -52.39816], ["2019-12-16T03:09:30", 14.71682, -52.40295], ["2019-12-16T03:39:30", 14.71798, -52.40836], ["2019-12-16T05:39:33", 14.72081, -52.43442], ["2019-12-16T06:09:33", 14.72124, -52.44], ["2019-12-16T07:40:37", 14.72301, -52.46703], ["2019-12-16T08:40:37", 14.72344, -52.47278], ["2019-12-16T15:06:55", 14.75733, -52.55789], ["2019-12-16T19:38:57", 14.76006, -52.62231], ["2019-12-16T22:04:46", 14.76746, -52.66229], ["2019-12-16T23:34:20", 14.77168, -52.68158], ["2019-12-17T06:03:17", 14.76863, -52.75726], ["2019-12-17T07:04:15", 14.7664, -52.78243], ["2019-12-17T08:04:15", 14.76494, -52.78912], ["2019-12-17T10:31:16", 14.76558, -52.82538], ["2019-12-17T11:03:34", 14.76615, -52.83264], ["2019-12-17T14:01:53", 14.77377, -52.87332], ["2019-12-17T14:30:12", 14.77495, -52.88031], ["2019-12-17T18:02:29", 14.78074, -52.94092], ["2019-12-17T18:28:52", 14.7818, -52.94727], ["2019-12-17T20:31:34", 14.79101, -52.97881], ["2019-12-17T21:31:34", 14.79277, -52.98499], ["2019-12-17T21:57:47", 14.79482, -52.99036], ["2019-12-17T22:29:00", 14.79679, -52.99698], ["2019-12-17T22:59:00", 14.79902, -53.0029], ["2019-12-18T02:27:01", 14.81296, -53.0466], ["2019-12-18T07:26:49", 14.81352, -53.11703], ["2019-12-18T07:55:33", 14.81443, -53.12326], ["2019-12-18T14:53:33", 14.84782, -53.19791], ["2019-12-18T15:55:37", 14.84605, -53.20959], ["2019-12-18T17:25:30", 14.84651, -53.23114], ["2019-12-18T17:52:49", 14.84697, -53.23773], ["2019-12-18T18:52:24", 14.85064, -53.26273], ["2019-12-18T19:22:24", 14.8509, -53.26385], ["2019-12-18T19:52:24", 14.85133, -53.26608], ["2019-12-19T10:47:46", 14.91364, -53.43732], ["2019-12-19T14:18:58", 14.93615, -53.46268], ["2019-12-20T01:13:57", 14.94088, -53.56509], ["2019-12-20T20:08:30", 14.97839, -53.76645], ["2019-12-21T00:37:33", 14.98547, -53.80969], ["2019-12-21T04:36:43", 15.00337, -53.83698], ["2019-12-21T08:06:48", 15.00343, -53.86188], ["2019-12-21T14:03:48", 14.99871, -53.90359], ["2019-12-22T02:29:52", 14.98587, -54.02313], ["2019-12-22T11:00:59", 14.99073, -54.10376], ["2019-12-22T18:55:36", 14.9866, -54.1673], ["2019-12-22T19:25:13", 14.98975, -54.17366], ["2019-12-22T19:55:13", 14.99065, -54.17538], ["2019-12-23T01:53:56", 14.99905, -54.21851], ["2019-12-23T02:23:52", 14.99924, -54.22177], ["2019-12-23T09:51:57", 15.00972, -54.26324], ["2019-12-23T19:41:28", 14.99657, -54.32367], ["2019-12-24T03:48:16", 14.98516, -54.38989], ["2019-12-24T14:46:29", 15.02884, -54.50201], ["2019-12-24T15:13:13", 15.0309, -54.50568], ["2019-12-26T06:33:00", 15.33205, -54.7309], ["2019-12-26T17:58:01", 15.46342, -54.82471], ["2019-12-26T21:27:13", 15.51948, -54.84421], ["2019-12-27T00:59:44", 15.56193, -54.85989], ["2019-12-27T06:55:03", 15.60869, -54.87683], ["2019-12-27T12:27:02", 15.64308, -54.91748], ["2019-12-27T19:38:34", 15.72121, -55.00571], ["2019-12-27T19:51:07", 15.7237, -55.00857], ["2019-12-27T20:21:07", 15.72924, -55.01466], ["2019-12-27T20:51:07", 15.73512, -55.02084], ["2019-12-28T19:14:59", 15.93974, -55.26721], ["2019-12-29T06:10:01", 16.01529, -55.34586], ["2019-12-30T23:57:14", 16.40633, -55.56259], ["2019-12-31T10:57:30", 16.48387, -55.64749], ["2020-01-01T01:52:01", 16.58696, -55.80444], ["2020-01-01T14:17:09", 16.62113, -55.86685], ["2020-01-01T17:44:53", 16.63493, -55.89514], ["2020-01-01T19:38:03", 16.63815, -55.91028], ["2020-01-02T04:43:53", 16.64736, -56.00754], ["2020-01-02T05:12:21", 16.64994, -56.01141], ["2020-01-02T23:09:49", 16.62549, -56.15594], ["2020-01-03T04:36:41", 16.58088, -56.18289], ["2020-01-03T16:02:32", 16.51113, -56.24368], ["2020-01-03T16:32:07", 16.51032, -56.24695], ["2020-01-03T17:02:07", 16.50938, -56.25107], ["2020-01-03T17:32:07", 16.50826, -56.2551], ["2020-01-03T19:01:31", 16.50019, -56.26761], ["2020-01-04T02:33:01", 16.45414, -56.33041], ["2020-01-04T15:26:47", 16.3668, -56.39279], ["2020-01-04T17:25:15", 16.34975, -56.40955], ["2020-01-04T17:54:40", 16.34425, -56.4156], ["2020-01-04T18:24:40", 16.33944, -56.42006], ["2020-01-04T18:54:40", 16.33506, -56.42358], ["2020-01-04T19:06:19", 16.33037, -56.4274], ["2020-01-04T19:36:19", 16.32951, -56.42834], ["2020-01-04T21:23:38", 16.31883, -56.44074], ["2020-01-04T21:53:38", 16.31647, -56.4428], ["2020-01-04T22:23:38", 16.31437, -56.44443], ["2020-01-05T20:48:59", 16.2304, -56.58447], ["2020-01-06T12:43:08", 16.24337, -56.60831], ["2020-01-06T15:12:47", 16.24813, -56.59732], ["2020-01-06T16:42:07", 16.24413, -56.5939], ["2020-01-06T18:41:32", 16.23597, -56.59262], ["2020-01-07T03:10:57", 16.19713, -56.61774], ["2020-01-07T03:38:51", 16.19484, -56.61926], ["2020-01-08T06:34:01", 16.20243, -56.76599], ["2020-01-08T08:31:21", 16.20123, -56.77347], ["2020-01-08T09:01:21", 16.20046, -56.7757], ["2020-01-08T11:00:52", 16.19663, -56.7858], ["2020-01-09T04:55:04", 16.1967, -56.93317], ["2020-01-09T06:54:47", 16.20112, -56.95526], ["2020-01-09T15:52:14", 16.19873, -57.05371], ["2020-01-09T16:22:07", 16.19832, -57.05942], ["2020-01-10T01:49:45", 16.21661, -57.14499], ["2020-01-10T02:51:19", 16.21702, -57.15427], ["2020-01-10T10:16:47", 16.20506, -57.21524], ["2020-01-10T11:46:11", 16.19857, -57.22797], ["2020-01-10T23:45:28", 16.15787, -57.36557], ["2020-01-11T02:12:21", 16.17101, -57.3996], ["2020-01-11T06:11:38", 16.18565, -57.43356], ["2020-01-11T09:40:33", 16.19821, -57.45782], ["2020-01-11T17:08:27", 16.23395, -57.50775], ["2020-01-12T17:31:56", 16.28591, -57.71774], ["2020-01-13T01:29:35", 16.271, -57.78644], ["2020-01-13T03:28:58", 16.26657, -57.80377], ["2020-01-13T08:58:59", 16.24468, -57.85245], ["2020-01-13T19:54:12", 16.24543, -57.95386], ["2020-01-13T23:24:28", 16.24227, -57.98569], ["2020-01-14T06:52:16", 16.2231, -58.05115], ["2020-01-14T07:20:37", 16.22203, -58.05637], ["2020-01-14T08:50:01", 16.22024, -58.07239], ["2020-01-14T09:20:44", 16.2201, -58.07815], ["2020-01-14T09:50:44", 16.2201, -58.0833], ["2020-01-14T10:20:44", 16.22027, -58.08871], ["2020-01-14T10:49:27", 16.2205, -58.09427], ["2020-01-14T15:51:29", 16.21341, -58.15097], ["2020-01-14T21:47:41", 16.21981, -58.21652], ["2020-01-14T22:16:56", 16.22011, -58.22061], ["2020-01-14T22:46:56", 16.22101, -58.22507], ["2020-01-15T00:48:20", 16.2246, -58.24318], ["2020-01-15T01:18:20", 16.22554, -58.2479], ["2020-01-15T01:48:20", 16.22726, -58.25339], ["2020-01-15T02:45:33", 16.22925, -58.26196], ["2020-01-15T08:13:57", 16.24152, -58.30838], ["2020-01-15T13:42:30", 16.22782, -58.34686], ["2020-01-15T17:44:43", 16.20774, -58.38419], ["2020-01-16T00:40:00", 16.16852, -58.44803], ["2020-01-16T02:10:34", 16.16027, -58.46396], ["2020-01-16T03:40:13", 16.14435, -58.49049], ["2020-01-16T04:40:13", 16.1407, -58.49658], ["2020-01-16T09:39:14", 16.09068, -58.55365], ["2020-01-16T13:06:52", 16.05909, -58.58167], ["2020-01-16T14:36:03", 16.04932, -58.59599], ["2020-01-16T15:06:03", 16.04743, -58.60002], ["2020-01-16T15:36:03", 16.04606, -58.60431], ["2020-01-16T23:04:16", 16.01044, -58.67169], ["2020-01-16T23:33:58", 16.00675, -58.67768], ["2020-01-17T00:03:58", 16.0031, -58.68446], ["2020-01-17T00:33:58", 16.00027, -58.69141], ["2020-01-17T04:03:01", 15.98466, -58.73901], ["2020-01-17T06:02:35", 15.97347, -58.76877], ["2020-01-17T07:32:35", 15.96649, -58.79086], ["2020-01-17T11:31:10", 15.94646, -58.84537], ["2020-01-17T12:30:43", 15.94215, -58.86044], ["2020-01-17T13:00:43", 15.94009, -58.86997], ["2020-01-17T13:30:43", 15.93807, -58.87744], ["2020-01-17T18:29:44", 15.92864, -58.9736], ["2020-01-17T23:58:34", 15.93316, -59.05566], ["2020-01-18T03:28:41", 15.93104, -59.11005], ["2020-01-18T16:23:19", 15.92915, -59.28015], ["2020-01-18T18:22:22", 15.9306, -59.3063], ["2020-01-19T03:49:54", 15.90725, -59.42224], ["2020-01-19T08:48:16", 15.85702, -59.46841], ["2020-01-19T09:50:05", 15.84752, -59.48178], ["2020-01-19T21:13:53", 15.83455, -59.62466], ["2020-01-19T23:44:11", 15.8228, -59.65921], ["2020-01-20T00:14:05", 15.82161, -59.66499], ["2020-01-20T00:44:05", 15.82071, -59.67151], ["2020-01-20T02:12:27", 15.81987, -59.68954], ["2020-01-20T02:42:27", 15.82064, -59.69546], ["2020-01-20T03:12:27", 15.82068, -59.70078], ["2020-01-20T05:41:35", 15.8225, -59.72802], ["2020-01-20T06:11:35", 15.82211, -59.73334], ["2020-01-20T06:41:35", 15.82147, -59.73737], ["2020-01-20T14:09:43", 15.79984, -59.7879], ["2020-01-20T14:39:59", 15.79763, -59.78961], ["2020-01-20T18:08:37", 15.77866, -59.81235], ["2020-01-21T18:35:57", 15.65994, -59.98727], ["2020-01-22T17:25:32", 15.66368, -60.17642], ["2020-01-22T18:21:03", 15.66641, -60.18964], ["2020-01-22T18:51:03", 15.6671, -60.19299], ["2020-01-22T19:21:03", 15.66727, -60.19333], ["2020-01-23T00:23:42", 15.68101, -60.24307], ["2020-01-23T00:53:03", 15.68182, -60.2481], ["2020-01-23T01:23:03", 15.68289, -60.25179], ["2020-01-23T01:53:03", 15.68461, -60.25565], ["2020-01-23T19:13:30", 15.78168, -60.36273], ["2020-01-23T19:17:05", 15.78206, -60.36273], ["2020-01-24T07:16:55", 15.85351, -60.42365], ["2020-01-24T07:43:08", 15.85543, -60.42584], ["2020-01-24T21:08:07", 15.93648, -60.54776], ["2020-01-24T22:09:17", 15.94855, -60.55386], ["2020-01-25T02:07:42", 15.98218, -60.577], ["2020-01-25T04:08:27", 15.99534, -60.59075], ["2020-01-25T04:38:27", 15.99873, -60.5935], ["2020-01-25T05:08:27", 16.00238, -60.59625], ["2020-01-25T09:34:59", 16.04038, -60.60391], ["2020-01-25T10:35:59", 16.0495, -60.60367], ["2020-01-25T12:03:50", 16.06004, -60.60212], ["2020-01-25T12:33:50", 16.06309, -60.60143], ["2020-01-25T13:03:50", 16.06541, -60.60092], ["2020-01-25T16:32:48", 16.07288, -60.60645], ["2020-01-25T17:02:43", 16.07334, -60.60873], ["2020-01-26T03:59:06", 16.12562, -60.67001], ["2020-01-26T16:00:07", 16.16865, -60.73663], ["2020-01-26T16:26:17", 16.17013, -60.73935], ["2020-01-26T18:13:44", 16.18072, -60.75095], ["2020-01-26T18:43:44", 16.18149, -60.75146], ["2020-01-26T19:13:44", 16.18213, -60.7518], ["2020-01-27T03:23:04", 16.26091, -60.77945], ["2020-01-27T04:22:31", 16.26713, -60.77948], ["2020-01-27T04:52:31", 16.2694, -60.77939], ["2020-01-27T05:22:31", 16.27116, -60.77939], ["2020-01-27T12:21:40", 16.29285, -60.80618], ["2020-01-27T19:21:06", 16.36774, -60.83978], ["2020-01-27T23:17:24", 16.42, -60.84933], ["2020-01-28T01:17:06", 16.43707, -60.85458], ["2020-01-28T01:48:33", 16.44101, -60.85577], ["2020-01-28T02:18:33", 16.44466, -60.85671], ["2020-01-28T02:48:33", 16.44878, -60.858], ["2020-01-28T03:46:08", 16.4565, -60.86189], ["2020-01-28T04:16:08", 16.46139, -60.86464], ["2020-01-28T04:46:08", 16.46572, -60.86661], ["2020-01-28T21:11:10", 16.59305, -60.95398], ["2020-01-28T23:41:34", 16.61583, -60.96396], ["2020-01-29T00:11:34", 16.62034, -60.96508], ["2020-01-29T00:41:34", 16.62566, -60.96671], ["2020-01-29T04:39:27", 16.66151, -60.96976], ["2020-01-29T05:08:33", 16.66513, -60.96879], ["2020-01-29T05:39:28", 16.66847, -60.96759], ["2020-01-29T06:08:33", 16.67157, -60.96579], ["2020-01-29T08:37:47", 16.68386, -60.95627], ["2020-01-29T09:07:47", 16.68583, -60.95533], ["2020-01-29T09:37:47", 16.68772, -60.95456], ["2020-01-29T19:34:24", 16.764, -60.98788], ["2020-01-29T20:05:07", 16.76986, -60.99002], ["2020-01-29T20:35:07", 16.77552, -60.99182], ["2020-01-29T21:05:07", 16.78144, -60.99405], ["2020-01-29T22:34:04", 16.79932, -61.00098], ["2020-01-30T03:34:29", 16.87367, -61.03702], ["2020-01-30T05:33:30", 16.89901, -61.04889], ["2020-01-30T15:00:48", 16.97269, -61.11713], ["2020-01-30T18:58:35", 16.99634, -61.15369], ["2020-01-30T22:27:47", 17.01546, -61.18262], ["2020-01-31T03:56:44", 17.03035, -61.22119], ["2020-01-31T13:24:09", 17.04786, -61.29788], ["2020-02-01T00:20:18", 17.08957, -61.39185], ["2020-02-01T00:49:48", 17.09108, -61.39508], ["2020-02-01T01:19:48", 17.09211, -61.39868], ["2020-02-01T01:49:48", 17.0928, -61.40228], ["2020-02-01T03:50:59", 17.09511, -61.4201], ["2020-02-01T04:18:52", 17.09518, -61.42365], ["2020-02-01T04:48:52", 17.09475, -61.42803], ["2020-02-01T05:18:52", 17.09505, -61.43146], ["2020-02-01T09:48:37", 17.09431, -61.46274], ["2020-02-01T15:45:47", 17.09003, -61.5126], ["2020-02-01T19:44:34", 17.09039, -61.556], ["2020-02-02T09:14:09", 17.19622, -61.67694], ["2020-02-02T17:10:37", 17.23443, -61.72046], ["2020-02-02T17:37:57", 17.23589, -61.72205], ["2020-02-02T23:08:58", 17.26659, -61.74933], ["2020-02-02T23:36:09", 17.26929, -61.75107], ["2020-02-03T10:05:40", 17.29947, -61.75565], ["2020-02-03T17:32:30", 17.3092, -61.77972], ["2020-02-03T21:03:20", 17.32189, -61.80368], ["2020-02-03T21:29:43", 17.32388, -61.80688], ["2020-02-04T02:30:36", 17.33385, -61.83212], ["2020-02-04T08:27:09", 17.3292, -61.86377], ["2020-02-05T00:51:11", 17.37559, -61.98996], ["2020-02-05T15:20:23", 17.38342, -62.06476], ["2020-02-05T16:48:45", 17.3829, -62.07712], ["2020-02-06T00:17:15", 17.41595, -62.13461], ["2020-02-06T02:16:59", 17.41138, -62.1391], ["2020-02-06T07:41:04", 17.42225, -62.1745], ["2020-02-06T13:39:35", 17.44459, -62.20639], ["2020-02-06T19:07:58", 17.47272, -62.24915], ["2020-02-06T20:37:29", 17.48936, -62.25369], ["2020-02-07T02:05:55", 17.49916, -62.27481], ["2020-02-07T06:04:21", 17.51351, -62.31042], ["2020-02-07T06:34:21", 17.519, -62.31463], ["2020-02-07T07:04:21", 17.52402, -62.31763], ["2020-02-07T13:05:34", 17.56157, -62.35056], ["2020-02-07T13:35:56", 17.56156, -62.35343], ["2020-02-07T14:05:56", 17.5619, -62.35721], ["2020-02-07T22:02:12", 17.60435, -62.39572], ["2020-02-08T00:28:44", 17.59516, -62.41849], ["2020-02-08T00:59:29", 17.59387, -62.42483], ["2020-02-08T01:29:29", 17.5931, -62.43161], ["2020-02-08T12:55:02", 17.59235, -62.54532], ["2020-02-09T04:23:41", 17.6343, -62.69318], ["2020-02-09T06:21:16", 17.63784, -62.69921], ["2020-02-09T06:51:16", 17.63848, -62.70178], ["2020-02-09T07:21:16", 17.63938, -62.70538], ["2020-02-09T07:49:26", 17.64002, -62.70881], ["2020-02-09T08:19:26", 17.64058, -62.71353], ["2020-02-09T08:49:26", 17.64071, -62.71765], ["2020-02-09T12:21:42", 17.64943, -62.74771], ["2020-02-09T13:47:36", 17.65048, -62.75568], ["2020-02-10T06:45:31", 17.70886, -62.9003], ["2020-02-11T03:10:26", 17.77144, -63.06195], ["2020-02-11T03:36:36", 17.77441, -63.06607], ["2020-02-11T04:06:33", 17.77733, -63.07037], ["2020-02-11T06:07:31", 17.78802, -63.08908], ["2020-02-11T07:38:00", 17.78971, -63.10501], ["2020-02-11T08:05:33", 17.79, -63.10999], ["2020-02-11T08:35:33", 17.78987, -63.11548], ["2020-02-11T09:37:42", 17.78856, -63.13261], ["2020-02-11T10:37:42", 17.78732, -63.13776], ["2020-02-11T11:04:59", 17.78777, -63.14288], ["2020-02-11T11:34:48", 17.78843, -63.14816], ["2020-02-11T21:02:06", 17.81518, -63.26093], ["2020-02-12T00:31:24", 17.82883, -63.31351], ["2020-02-12T01:01:24", 17.83291, -63.32192], ["2020-02-12T01:31:24", 17.83651, -63.32861], ["2020-02-12T02:01:15", 17.84053, -63.33557], ["2020-02-12T02:30:43", 17.84436, -63.34167], ["2020-02-12T03:00:43", 17.84766, -63.34716], ["2020-02-12T03:30:43", 17.85028, -63.35214], ["2020-02-12T07:01:29", 17.85401, -63.37585], ["2020-02-12T19:26:11", 17.85469, -63.5144], ["2020-02-12T20:25:36", 17.85686, -63.52559], ["2020-02-12T20:55:36", 17.85793, -63.52971], ["2020-02-12T21:25:36", 17.85883, -63.53366], ["2020-02-12T22:25:20", 17.86057, -63.54244], ["2020-02-12T22:55:20", 17.86096, -63.54596], ["2020-02-13T00:56:05", 17.86256, -63.56255], ["2020-02-13T01:26:05", 17.86256, -63.5665], ["2020-02-13T01:56:05", 17.8635, -63.57062], ["2020-02-13T02:24:11", 17.86434, -63.57416], ["2020-02-13T05:56:38", 17.8684, -63.60373], ["2020-02-13T09:54:35", 17.85902, -63.63937], ["2020-02-13T11:23:54", 17.85642, -63.65475], ["2020-02-13T16:20:40", 17.85074, -63.70105], ["2020-02-13T16:50:27", 17.85094, -63.70543], ["2020-02-13T17:20:27", 17.85115, -63.70929], ["2020-02-13T17:49:55", 17.85134, -63.71307], ["2020-02-13T19:19:14", 17.85294, -63.72626], ["2020-02-13T19:49:14", 17.85294, -63.73004], ["2020-02-13T20:21:29", 17.85274, -63.73439], ["2020-02-13T20:51:29", 17.85317, -63.73877], ["2020-02-13T22:20:26", 17.85385, -63.75241], ["2020-02-14T04:19:13", 17.87782, -63.80469], ["2020-02-14T04:46:53", 17.8793, -63.80905], ["2020-02-14T06:16:02", 17.87891, -63.82431], ["2020-02-14T06:46:02", 17.87822, -63.82834], ["2020-02-14T07:15:55", 17.87722, -63.83264], ["2020-02-14T09:47:30", 17.86935, -63.85338], ["2020-02-14T10:17:30", 17.86853, -63.85698], ["2020-02-14T10:47:30", 17.86759, -63.8605], ["2020-02-14T11:16:42", 17.86671, -63.86426], ["2020-02-14T11:46:42", 17.86585, -63.86812], ["2020-02-14T12:16:42", 17.86508, -63.87207], ["2020-02-14T15:17:00", 17.86814, -63.89957], ["2020-02-15T06:40:02", 17.88503, -64.03992], ["2020-02-15T07:09:43", 17.88524, -64.04482], ["2020-02-15T07:39:43", 17.88588, -64.04868], ["2020-02-15T09:10:41", 17.88612, -64.06492], ["2020-02-15T09:40:41", 17.88526, -64.06964], ["2020-02-15T10:10:41", 17.88483, -64.07419], ["2020-02-15T11:08:18", 17.88503, -64.08264], ["2020-02-15T12:38:00", 17.8841, -64.09542], ["2020-02-15T13:08:00", 17.88453, -64.0986], ["2020-02-15T13:38:00", 17.8847, -64.10144], ["2020-02-15T21:38:41", 17.91366, -64.14258], ["2020-02-16T03:04:41", 17.93533, -64.16598], ["2020-02-16T07:06:43", 17.96149, -64.17859], ["2020-02-16T07:33:24", 17.96379, -64.1795], ["2020-02-16T08:03:24", 17.96555, -64.18002], ["2020-02-16T08:33:09", 17.96703, -64.18071], ["2020-02-16T09:03:09", 17.96879, -64.18115], ["2020-02-16T10:32:38", 17.97376, -64.18478], ["2020-02-16T14:01:55", 17.98871, -64.19177], ["2020-02-17T03:28:20", 18.02044, -64.26218], ["2020-02-17T07:30:00", 18.03526, -64.26806], ["2020-02-17T15:58:12", 18.01176, -64.30629], ["2020-02-17T18:24:46", 18.01126, -64.32071], ["2020-02-17T18:54:46", 18.01117, -64.32346], ["2020-02-24T00:13:02", 17.9202, -65.17901], ["2020-02-24T00:41:50", 17.91904, -65.17737], ["2020-02-24T01:13:13", 17.91755, -65.1756], ["2020-02-24T01:41:25", 17.91595, -65.17398], ["2020-02-24T02:41:06", 17.91057, -65.17117], ["2020-02-24T03:10:50", 17.90805, -65.17062], ["2020-02-24T03:40:50", 17.9056, -65.17062], ["2020-02-24T04:11:10", 17.90222, -65.17108], ["2020-02-24T04:40:30", 17.89872, -65.17236], ["2020-02-24T05:10:58", 17.89473, -65.1744], ["2020-02-24T05:40:39", 17.89095, -65.17725], ["2020-02-24T06:10:39", 17.8873, -65.18085], ["2020-02-24T06:40:29", 17.88447, -65.18483], ["2020-02-24T07:10:29", 17.88198, -65.18921], ["2020-02-24T07:39:52", 17.87959, -65.1937], ["2020-02-24T08:09:37", 17.87744, -65.19806], ["2020-02-24T08:39:37", 17.87602, -65.20218], ["2020-02-24T09:39:32", 17.87395, -65.21048], ["2020-02-24T10:09:20", 17.87317, -65.21397], ["2020-02-24T10:39:20", 17.87197, -65.21732], ["2020-02-24T11:09:39", 17.87081, -65.22046], ["2020-02-24T11:39:28", 17.86931, -65.22338], ["2020-02-24T12:09:28", 17.86755, -65.22571], ["2020-02-24T12:38:54", 17.86568, -65.22799], ["2020-02-24T15:08:53", 17.85112, -65.24447], ["2020-02-24T15:38:53", 17.84824, -65.24833], ["2020-02-24T16:08:53", 17.84489, -65.25305], ["2020-02-24T16:38:29", 17.84131, -65.2578], ["2020-02-24T17:08:29", 17.83758, -65.26321], ["2020-02-24T17:38:26", 17.83416, -65.26895], ["2020-02-24T18:08:26", 17.83146, -65.27539], ["2020-02-24T18:18:08", 17.83062, -65.27768], ["2020-02-24T18:38:28", 17.82852, -65.28234], ["2020-02-24T19:08:28", 17.82603, -65.28903], ["2020-02-24T19:37:28", 17.82417, -65.29572], ["2020-02-24T22:08:13", 17.81012, -65.33096], ["2020-02-24T22:38:13", 17.80677, -65.33681], ["2020-02-24T23:08:13", 17.80334, -65.3429], ["2020-02-25T02:06:04", 17.78093, -65.38373], ["2020-02-25T02:37:28", 17.77629, -65.39203], ["2020-02-25T03:05:49", 17.77221, -65.39966], ["2020-02-25T04:35:02", 17.76306, -65.42515], ["2020-02-25T05:05:02", 17.76001, -65.43407], ["2020-02-25T05:35:02", 17.75756, -65.44223], ["2020-02-25T06:04:41", 17.755, -65.45144], ["2020-02-25T06:34:41", 17.75277, -65.45909], ["2020-02-25T07:04:41", 17.75075, -65.4675], ["2020-02-25T09:07:57", 17.73845, -65.49799], ["2020-02-25T11:33:24", 17.72379, -65.5322], ["2020-02-25T12:33:21", 17.71949, -65.54626], ["2020-02-25T13:32:26", 17.71491, -65.55941], ["2020-02-25T14:02:26", 17.7107, -65.56516], ["2020-02-25T14:32:26", 17.70302, -65.5722], ["2020-02-25T15:03:11", 17.69406, -65.57993], ["2020-02-25T15:32:20", 17.68489, -65.58795], ["2020-02-25T16:01:51", 17.67535, -65.59725], ["2020-02-25T16:31:51", 17.66591, -65.60532], ["2020-02-25T17:02:09", 17.65573, -65.61395], ["2020-02-25T17:31:37", 17.64582, -65.62282], ["2020-02-25T18:02:05", 17.63573, -65.63235], ["2020-02-25T18:18:13", 17.63035, -65.63754], ["2020-02-25T18:31:25", 17.62621, -65.64178], ["2020-02-25T19:01:41", 17.61647, -65.65131], ["2020-02-25T19:31:03", 17.60669, -65.66135], ["2020-02-25T20:01:27", 17.59658, -65.67249], ["2020-02-25T20:30:42", 17.58679, -65.68369], ["2020-02-25T21:00:57", 17.57721, -65.69501], ["2020-02-25T21:30:33", 17.56881, -65.70523], ["2020-02-25T22:01:00", 17.5604, -65.71581], ["2020-02-25T22:30:21", 17.55256, -65.72635], ["2020-02-25T23:00:41", 17.54455, -65.73727], ["2020-02-25T23:30:04", 17.53626, -65.74841], ["2020-02-26T00:00:30", 17.52718, -65.75951], ["2020-02-26T00:29:56", 17.51837, -65.76978], ["2020-02-26T01:00:41", 17.50961, -65.78043], ["2020-02-26T01:29:53", 17.50267, -65.78922], ["2020-02-26T02:00:58", 17.49496, -65.79926], ["2020-02-26T02:29:40", 17.48854, -65.80822], ["2020-02-26T02:59:57", 17.483, -65.8172], ["2020-02-26T04:59:09", 17.4694, -65.84936], ["2020-02-26T05:29:09", 17.46665, -65.85683], ["2020-02-26T05:59:09", 17.46425, -65.86404], ["2020-02-26T06:28:33", 17.46236, -65.87079], ["2020-02-26T06:58:12", 17.46011, -65.8779], ["2020-02-26T07:28:12", 17.45805, -65.88424], ["2020-02-26T07:57:46", 17.45584, -65.89109], ["2020-02-26T08:27:46", 17.45339, -65.89771], ["2020-02-26T08:57:28", 17.45082, -65.90501], ["2020-02-26T09:27:28", 17.44842, -65.91195], ["2020-02-26T09:58:04", 17.44582, -65.91943], ["2020-02-26T10:27:22", 17.44333, -65.92673], ["2020-02-26T10:57:45", 17.44116, -65.93445], ["2020-02-26T14:26:16", 17.41835, -65.97995], ["2020-02-26T15:25:45", 17.41142, -65.99285], ["2020-02-26T15:55:45", 17.40773, -66.00057], ["2020-02-26T16:25:45", 17.40455, -66.00726], ["2020-02-26T16:56:13", 17.40096, -66.01428], ["2020-02-26T17:25:32", 17.39755, -66.02109], ["2020-02-26T17:48:31", 17.39153, -66.03206], ["2020-02-26T18:18:31", 17.39063, -66.0336], ["2020-02-26T18:25:17", 17.38974, -66.03522], ["2020-02-26T18:55:28", 17.38595, -66.04267], ["2020-02-26T19:24:55", 17.38211, -66.0491], ["2020-02-26T19:55:28", 17.37797, -66.05562], ["2020-02-26T20:26:30", 17.37351, -66.0618], ["2020-02-26T20:56:30", 17.3684, -66.06824], ["2020-02-26T23:26:31", 17.34008, -66.09708], ["2020-02-27T02:22:56", 17.29979, -66.12719], ["2020-02-27T02:52:56", 17.29331, -66.13208], ["2020-02-27T04:22:30", 17.27522, -66.14935], ["2020-02-27T04:52:04", 17.26994, -66.15579], ["2020-02-27T05:24:27", 17.26422, -66.16262], ["2020-02-27T05:52:04", 17.25883, -66.16824], ["2020-02-27T10:50:38", 17.20237, -66.22357], ["2020-02-27T11:20:38", 17.19696, -66.2282], ["2020-02-27T11:50:38", 17.19125, -66.23309], ["2020-02-27T13:20:12", 17.17563, -66.24872], ["2020-02-27T13:53:28", 17.17026, -66.25467], ["2020-02-27T15:49:29", 17.1524, -66.27527], ["2020-02-27T16:50:34", 17.14489, -66.28583], ["2020-02-27T19:18:28", 17.12473, -66.3129], ["2020-02-27T19:50:00", 17.11699, -66.32773], ["2020-02-27T20:50:00", 17.11308, -66.33417], ["2020-02-27T22:49:59", 17.10072, -66.36114], ["2020-02-27T23:19:59", 17.09763, -66.36733], ["2020-02-27T23:49:59", 17.09398, -66.37454], ["2020-02-28T00:17:11", 17.09077, -66.38104], ["2020-02-28T01:18:30", 17.08325, -66.39572], ["2020-02-28T01:46:24", 17.08006, -66.40215], ["2020-02-28T02:16:24", 17.07714, -66.40928], ["2020-02-28T02:46:24", 17.07461, -66.41623], ["2020-02-28T03:16:59", 17.07131, -66.4241], ["2020-02-28T03:46:05", 17.06858, -66.43146], ["2020-02-28T04:16:41", 17.06527, -66.43921], ["2020-02-28T04:46:35", 17.06168, -66.44678], ["2020-02-28T05:17:37", 17.05781, -66.45468], ["2020-02-28T05:45:25", 17.05361, -66.4616], ["2020-02-28T06:15:03", 17.0492, -66.46944], ["2020-02-28T06:45:41", 17.04507, -66.47732], ["2020-02-28T07:15:03", 17.04122, -66.48488], ["2020-02-28T07:46:02", 17.03766, -66.49303], ["2020-02-28T08:14:46", 17.03409, -66.50085], ["2020-02-28T08:45:13", 17.03044, -66.5094], ["2020-02-28T09:14:47", 17.02755, -66.51833], ["2020-02-28T09:45:05", 17.02435, -66.52685], ["2020-02-28T10:15:05", 17.02139, -66.53492], ["2020-02-28T10:45:05", 17.01817, -66.54282], ["2020-02-28T11:14:14", 17.01447, -66.55045], ["2020-02-28T11:45:17", 17.01155, -66.55856], ["2020-02-28T12:13:50", 17.00871, -66.56561], ["2020-02-28T12:44:32", 17.00616, -66.57321], ["2020-02-28T13:13:54", 17.00432, -66.58085], ["2020-02-28T13:43:54", 17.00217, -66.58926], ["2020-02-28T17:13:33", 16.98462, -66.66395], ["2020-02-28T17:43:33", 16.9826, -66.67468], ["2020-02-28T18:13:33", 16.98256, -66.67554], ["2020-02-28T18:17:40", 16.98231, -66.67703], ["2020-02-28T18:42:19", 16.98065, -66.68655], ["2020-02-28T19:12:02", 16.97805, -66.69825], ["2020-02-28T19:42:02", 16.97552, -66.70889], ["2020-02-28T20:12:27", 16.97289, -66.72009], ["2020-02-28T22:43:00", 16.96372, -66.77746], ["2020-02-28T23:12:59", 16.96321, -66.78843], ["2020-02-28T23:42:59", 16.963, -66.80054], ["2020-02-29T00:40:36", 16.96322, -66.82353], ["2020-02-29T01:10:36", 16.96322, -66.83401], ["2020-02-29T01:40:36", 16.96283, -66.84524], ["2020-02-29T02:10:57", 16.96209, -66.85706], ["2020-02-29T07:39:41", 16.95627, -66.99097], ["2020-02-29T09:08:07", 16.94907, -67.02012], ["2020-02-29T09:38:07", 16.94641, -67.0293], ["2020-02-29T10:08:07", 16.94392, -67.03754], ["2020-02-29T10:38:37", 16.94178, -67.0462], ["2020-02-29T11:08:01", 16.93936, -67.0545], ["2020-02-29T11:37:48", 16.93717, -67.06303], ["2020-02-29T12:07:48", 16.93447, -67.07153], ["2020-02-29T16:06:15", 16.92367, -67.14438], ["2020-02-29T16:36:26", 16.92394, -67.15558], ["2020-02-29T17:06:10", 16.92419, -67.16536], ["2020-02-29T17:36:10", 16.92329, -67.17162], ["2020-02-29T18:05:24", 16.92079, -67.17847], ["2020-02-29T18:35:24", 16.91946, -67.18138], ["2020-02-29T19:05:24", 16.91658, -67.18585], ["2020-02-29T21:05:10", 16.90334, -67.20775], ["2020-02-29T23:37:13", 16.88458, -67.24393], ["2020-03-01T11:01:25", 16.84472, -67.39807], ["2020-03-01T15:00:09", 16.82819, -67.45627], ["2020-03-01T18:00:28", 16.82155, -67.51053], ["2020-03-01T18:29:42", 16.82041, -67.52051], ["2020-03-01T18:59:42", 16.82007, -67.53167], ["2020-03-01T19:29:42", 16.81951, -67.54076], ["2020-03-01T20:30:05", 16.81849, -67.56076], ["2020-03-01T21:59:18", 16.81652, -67.58859], ["2020-03-01T22:59:04", 16.81498, -67.60654], ["2020-03-02T16:25:28", 16.87819, -67.86362], ["2020-03-02T17:56:26", 16.88707, -67.88876], ["2020-03-02T18:57:30", 16.89167, -67.90407], ["2020-03-02T20:24:48", 16.90056, -67.92645], ["2020-03-02T20:54:48", 16.90313, -67.93297], ["2020-03-02T21:24:48", 16.90729, -67.94052], ["2020-03-03T03:54:43", 16.9722, -68.00922], ["2020-03-03T04:22:22", 16.97679, -68.0133], ["2020-03-03T04:52:22", 16.98074, -68.01639], ["2020-03-03T05:53:11", 16.98654, -68.02521], ["2020-03-03T06:53:12", 16.98865, -68.03545], ["2020-03-03T07:23:12", 16.99015, -68.04017], ["2020-03-03T07:53:12", 16.99208, -68.04575], ["2020-03-03T08:21:19", 16.99355, -68.05112], ["2020-03-03T09:50:49", 17.00191, -68.06856], ["2020-03-03T10:20:36", 17.00651, -68.07456], ["2020-03-03T10:50:36", 17.01089, -68.08014], ["2020-03-03T11:21:29", 17.01552, -68.0862], ["2020-03-03T11:50:41", 17.02021, -68.09121], ["2020-03-03T12:20:41", 17.02553, -68.0961], ["2020-03-03T14:18:54", 17.04614, -68.11423], ["2020-03-03T14:48:54", 17.05052, -68.11852], ["2020-03-03T15:18:54", 17.0549, -68.12341], ["2020-03-03T17:47:49", 17.0784, -68.15569], ["2020-03-03T18:17:59", 17.07959, -68.15723], ["2020-03-03T18:47:49", 17.08466, -68.16367], ["2020-03-03T19:17:21", 17.0903, -68.17107], ["2020-03-03T19:47:21", 17.09554, -68.17776], ["2020-03-03T20:17:21", 17.10185, -68.18497], ["2020-03-03T20:47:33", 17.10748, -68.19275], ["2020-03-03T21:16:54", 17.11268, -68.19983], ["2020-03-03T21:47:59", 17.11843, -68.20708], ["2020-03-03T22:16:32", 17.12404, -68.2132], ["2020-03-03T22:48:29", 17.12985, -68.22], ["2020-03-03T23:16:29", 17.13469, -68.22543], ["2020-03-04T02:15:36", 17.17168, -68.25241], ["2020-03-04T02:45:14", 17.17915, -68.25708], ["2020-03-04T03:15:14", 17.18743, -68.26163], ["2020-03-04T03:45:14", 17.19511, -68.26678], ["2020-03-04T12:44:03", 17.29622, -68.3461], ["2020-03-04T13:13:22", 17.30159, -68.34802], ["2020-03-04T13:43:22", 17.30708, -68.34914], ["2020-03-05T14:39:41", 17.50061, -68.44022], ["2020-03-06T18:03:50", 17.86199, -68.55185], ["2020-03-07T06:00:49", 17.94512, -68.67007], ["2020-03-07T20:28:12", 17.90629, -68.70944], ["2020-03-07T20:56:38", 17.90707, -68.7135], ["2020-03-07T22:56:02", 17.9085, -68.72817], ["2020-03-08T03:56:34", 17.90087, -68.75317], ["2020-03-08T04:24:56", 17.8996, -68.75388], ["2020-03-08T06:57:05", 17.8902, -68.75599], ["2020-03-08T07:27:05", 17.88771, -68.75693], ["2020-03-08T07:57:05", 17.88531, -68.7583], ["2020-03-08T08:23:52", 17.88252, -68.759], ["2020-03-08T08:53:44", 17.87859, -68.75964], ["2020-03-08T11:23:06", 17.85572, -68.76208], ["2020-03-08T13:25:25", 17.8316, -68.76105], ["2020-03-08T20:20:25", 17.75923, -68.80141], ["2020-03-08T21:20:17", 17.74757, -68.80826], ["2020-03-08T22:49:54", 17.72561, -68.82117], ["2020-03-08T23:51:37", 17.70545, -68.83367], ["2020-03-09T00:21:37", 17.69674, -68.84019], ["2020-03-09T00:51:37", 17.68593, -68.8486], ["2020-03-09T01:20:28", 17.67721, -68.85711], ["2020-03-09T01:50:28", 17.66755, -68.86647], ["2020-03-09T02:20:28", 17.65811, -68.87676], ["2020-03-09T02:49:59", 17.64878, -68.88624], ["2020-03-09T03:19:59", 17.63968, -68.89783], ["2020-03-09T03:48:44", 17.63208, -68.90875], ["2020-03-09T06:18:05", 17.59282, -68.96035], ["2020-03-09T06:49:59", 17.58457, -68.97125], ["2020-03-09T07:19:02", 17.57757, -68.98058], ["2020-03-09T07:47:36", 17.57024, -68.99036], ["2020-03-09T08:19:02", 17.56178, -69.0004], ["2020-03-09T09:46:50", 17.54114, -69.02951], ["2020-03-09T10:16:28", 17.5335, -69.03939], ["2020-03-09T10:46:28", 17.52578, -69.04746], ["2020-03-09T11:16:28", 17.5187, -69.0562], ["2020-03-09T14:45:38", 17.46932, -69.10715], ["2020-03-09T16:14:54", 17.44652, -69.12739], ["2020-03-09T16:44:54", 17.44008, -69.13391], ["2020-03-09T17:14:54", 17.43373, -69.14069], ["2020-03-09T17:44:42", 17.4216, -69.15485], ["2020-03-09T18:14:42", 17.42053, -69.15588], ["2020-03-09T18:16:09", 17.42023, -69.15616], ["2020-03-09T22:13:42", 17.3662, -69.22314], ["2020-03-09T23:16:02", 17.35138, -69.24444], ["2020-03-10T00:16:02", 17.34572, -69.25165], ["2020-03-10T12:39:18", 17.22865, -69.28046], ["2020-03-10T15:38:19", 17.19518, -69.28106], ["2020-03-10T16:08:19", 17.1899, -69.28149], ["2020-03-10T16:38:19", 17.18514, -69.28149], ["2020-03-10T20:37:25", 17.14777, -69.28452], ["2020-03-10T22:37:02", 17.12816, -69.29639], ["2020-03-11T00:09:40", 17.11544, -69.30664], ["2020-03-11T04:35:21", 17.0892, -69.34247], ["2020-03-11T14:32:32", 17.0907, -69.38205], ["2020-03-11T15:02:40", 17.09255, -69.38467], ["2020-03-11T16:05:42", 17.09831, -69.388], ["2020-03-11T16:35:42", 17.10088, -69.388], ["2020-03-11T17:05:42", 17.10539, -69.38715], ["2020-03-11T17:31:52", 17.10858, -69.38607], ["2020-03-11T18:01:52", 17.11184, -69.38495], ["2020-03-11T20:31:05", 17.12135, -69.37752], ["2020-03-11T21:01:05", 17.12238, -69.37555], ["2020-03-11T21:31:05", 17.12341, -69.37366], ["2020-03-11T22:33:16", 17.12416, -69.36901], ["2020-03-11T23:03:16", 17.12446, -69.36686], ["2020-03-11T23:33:16", 17.12412, -69.3642], ["2020-03-12T00:01:45", 17.1231, -69.36197], ["2020-03-12T00:31:45", 17.12164, -69.35965], ["2020-03-12T01:01:45", 17.11958, -69.35733], ["2020-03-12T01:29:26", 17.11683, -69.35545], ["2020-03-12T01:59:26", 17.11365, -69.35348], ["2020-03-12T03:30:04", 17.10437, -69.34685], ["2020-03-12T04:00:04", 17.10141, -69.3447], ["2020-03-12T04:30:04", 17.09819, -69.34213], ["2020-03-12T08:29:35", 17.0645, -69.31268], ["2020-03-12T09:27:08", 17.05414, -69.30412], ["2020-03-12T09:57:08", 17.05041, -69.30146], ["2020-03-12T10:27:08", 17.0459, -69.2988], ["2020-03-12T13:26:15", 17.02059, -69.28514], ["2020-03-12T13:56:15", 17.01746, -69.28445], ["2020-03-12T14:26:15", 17.01407, -69.28394], ["2020-03-12T14:56:59", 17.01016, -69.28357], ["2020-03-12T16:55:02", 16.99842, -69.27921], ["2020-03-12T17:27:30", 16.99561, -69.27725], ["2020-03-12T17:55:02", 16.9934, -69.2757], ["2020-03-12T18:25:18", 16.98621, -69.26958], ["2020-03-12T19:25:18", 16.98501, -69.26864], ["2020-03-12T21:53:45", 16.97478, -69.26214], ["2020-03-12T22:23:45", 16.97319, -69.26137], ["2020-03-12T22:53:45", 16.97165, -69.26085], ["2020-03-13T03:52:30", 16.95203, -69.24854], ["2020-03-13T07:21:21", 16.93603, -69.22668], ["2020-03-13T07:50:58", 16.93212, -69.22508], ["2020-03-13T08:20:58", 16.9286, -69.22439], ["2020-03-13T08:50:58", 16.92603, -69.22345], ["2020-03-13T09:20:44", 16.9237, -69.22221], ["2020-03-13T09:50:44", 16.92194, -69.22101], ["2020-03-13T10:20:29", 16.92028, -69.21965], ["2020-03-13T10:50:29", 16.91882, -69.21802], ["2020-03-13T14:18:58", 16.90883, -69.1953], ["2020-03-13T14:48:58", 16.90608, -69.19152], ["2020-03-13T15:18:58", 16.90316, -69.18859], ["2020-03-13T17:12:19", 16.88802, -69.17109], ["2020-03-13T17:42:19", 16.88678, -69.17006], ["2020-03-13T18:12:19", 16.88614, -69.16946], ["2020-03-13T20:17:44", 16.8697, -69.16258], ["2020-03-13T20:47:44", 16.86575, -69.16137], ["2020-03-13T21:17:44", 16.8624, -69.16052], ["2020-03-13T21:48:00", 16.85872, -69.15983], ["2020-03-13T22:18:00", 16.85494, -69.15897], ["2020-03-13T23:47:51", 16.84251, -69.15273], ["2020-03-14T00:17:51", 16.83839, -69.14999], ["2020-03-14T00:47:51", 16.83376, -69.14716], ["2020-03-14T01:15:39", 16.82975, -69.14397], ["2020-03-14T01:47:48", 16.82673, -69.14145], ["2020-03-14T02:15:39", 16.82387, -69.13925], ["2020-03-14T02:45:29", 16.82052, -69.13672], ["2020-03-14T04:15:08", 16.80878, -69.12775], ["2020-03-14T06:16:27", 16.79203, -69.11578], ["2020-03-14T09:15:31", 16.7596, -69.10157], ["2020-03-14T09:43:31", 16.75283, -69.09963], ["2020-03-14T10:15:31", 16.74475, -69.09711], ["2020-03-14T14:45:59", 16.67843, -69.08945], ["2020-03-14T15:15:48", 16.67327, -69.08848], ["2020-03-14T15:45:48", 16.66692, -69.08754], ["2020-03-14T16:15:48", 16.66031, -69.08728], ["2020-03-14T16:45:39", 16.65483, -69.08713], ["2020-03-15T08:41:14", 16.46357, -69.14785], ["2020-03-15T18:35:50", 16.37043, -69.18994], ["2020-03-15T21:05:08", 16.34216, -69.20953], ["2020-03-15T22:04:53", 16.33294, -69.21572], ["2020-03-15T23:37:56", 16.32044, -69.22499], ["2020-03-16T00:07:56", 16.31692, -69.22817], ["2020-03-16T00:37:56", 16.31203, -69.23135], ["2020-03-16T03:03:33", 16.29912, -69.2439], ["2020-03-16T03:33:29", 16.29671, -69.24657], ["2020-03-16T13:00:26", 16.19632, -69.29595], ["2020-03-16T14:29:54", 16.18449, -69.30886], ["2020-03-16T14:59:54", 16.1811, -69.31264], ["2020-03-16T15:29:54", 16.17797, -69.31616], ["2020-03-16T18:59:10", 16.15255, -69.34146], ["2020-03-16T19:31:30", 16.14772, -69.34531], ["2020-03-16T19:58:51", 16.14363, -69.34918], ["2020-03-16T22:28:15", 16.11635, -69.3672], ["2020-03-16T22:58:15", 16.11056, -69.37157], ["2020-03-16T23:28:15", 16.1052, -69.37604], ["2020-03-16T23:59:23", 16.10023, -69.38118], ["2020-03-17T00:29:23", 16.09585, -69.38607], ["2020-03-17T00:59:23", 16.09126, -69.39148], ["2020-03-17T01:27:36", 16.08735, -69.39685], ["2020-03-17T01:56:49", 16.084, -69.40297], ["2020-03-17T02:26:49", 16.0804, -69.40898], ["2020-03-17T02:56:49", 16.07761, -69.41473], ["2020-03-17T06:27:59", 16.05407, -69.46222], ["2020-03-17T06:55:07", 16.05276, -69.46742], ["2020-03-17T07:25:07", 16.05079, -69.4718], ["2020-03-17T09:25:58", 16.04377, -69.48828], ["2020-03-17T09:54:19", 16.04224, -69.49249], ["2020-03-17T11:23:23", 16.03538, -69.50568], ["2020-03-17T11:53:23", 16.03246, -69.50894], ["2020-03-17T12:23:23", 16.02907, -69.51297], ["2020-03-17T14:24:10", 16.01782, -69.53185], ["2020-03-17T14:56:00", 16.01545, -69.54572], ["2020-03-17T15:56:00", 16.01442, -69.5513], ["2020-03-17T16:52:31", 16.01157, -69.5642], ["2020-03-17T17:22:31", 16.0099, -69.57201], ["2020-03-17T17:52:31", 16.00866, -69.57913], ["2020-03-18T03:20:01", 15.99551, -69.68463], ["2020-03-18T05:49:24", 15.98215, -69.70502], ["2020-03-18T06:49:18", 15.97485, -69.71567], ["2020-03-18T12:17:25", 15.94663, -69.79971], ["2020-03-18T12:49:27", 15.94428, -69.80637], ["2020-03-18T13:47:01", 15.94288, -69.81838], ["2020-03-18T15:15:53", 15.94017, -69.83687], ["2020-03-18T15:45:53", 15.93948, -69.84184], ["2020-03-18T16:15:53", 15.93871, -69.84683], ["2020-03-18T17:48:12", 15.93089, -69.86821], ["2020-03-18T18:48:12", 15.92892, -69.87302], ["2020-03-18T21:16:21", 15.92493, -69.90828], ["2020-03-18T21:44:09", 15.92565, -69.91558], ["2020-03-18T23:15:20", 15.92698, -69.93973], ["2020-03-18T23:45:20", 15.92651, -69.94823], ["2020-03-19T00:15:20", 15.92664, -69.95724], ["2020-03-19T01:44:00", 15.92677, -69.98054], ["2020-03-19T02:14:00", 15.92668, -69.98707], ["2020-03-19T02:44:00", 15.92719, -69.99368], ["2020-03-19T03:45:29", 15.92736, -70.00717], ["2020-03-19T04:42:07", 15.92788, -70.01889], ["2020-03-19T06:11:25", 15.92953, -70.03543], ["2020-03-19T07:12:29", 15.93071, -70.04373], ["2020-03-19T07:42:29", 15.93114, -70.04904], ["2020-03-19T08:12:29", 15.93118, -70.05334], ["2020-03-19T12:12:29", 15.93601, -70.09644], ["2020-03-19T18:02:56", 15.96659, -70.15741], ["2020-03-19T19:09:29", 15.97382, -70.16986], ["2020-03-19T19:39:29", 15.97665, -70.17484], ["2020-03-19T20:09:29", 15.97953, -70.18042], ["2020-03-20T00:38:04", 16.01262, -70.21262], ["2020-03-20T01:06:59", 16.01577, -70.21523], ["2020-03-20T01:36:59", 16.0189, -70.21798], ["2020-03-20T02:06:59", 16.02229, -70.22055], ["2020-03-20T02:36:01", 16.02569, -70.22302], ["2020-03-20T03:07:00", 16.0283, -70.2261], ["2020-03-20T14:32:43", 16.08405, -70.2994], ["2020-03-20T16:03:34", 16.09395, -70.30619], ["2020-03-20T16:33:34", 16.09717, -70.30859], ["2020-03-20T17:03:34", 16.09953, -70.31116], ["2020-03-20T18:03:40", 16.10403, -70.31775], ["2020-03-20T20:31:03", 16.11689, -70.34113], ["2020-03-21T01:59:35", 16.15889, -70.38336], ["2020-03-21T07:58:52", 16.20312, -70.42037], ["2020-03-21T08:27:29", 16.20512, -70.42346], ["2020-03-21T08:59:04", 16.20828, -70.42761], ["2020-03-21T09:26:58", 16.21099, -70.43104], ["2020-03-21T09:56:58", 16.21296, -70.43396], ["2020-03-21T12:30:02", 16.23489, -70.44833], ["2020-03-21T12:57:11", 16.23882, -70.45038], ["2020-03-21T13:27:11", 16.24294, -70.45192], ["2020-03-21T13:57:11", 16.24685, -70.45398], ["2020-03-21T14:27:14", 16.25044, -70.45621], ["2020-03-21T14:57:14", 16.25452, -70.45844], ["2020-03-21T16:26:28", 16.26883, -70.46595], ["2020-03-21T16:56:28", 16.27312, -70.46904], ["2020-03-21T17:26:28", 16.27758, -70.4729], ["2020-03-21T19:25:25", 16.29372, -70.49011], ["2020-03-21T19:55:25", 16.29758, -70.49491], ["2020-03-21T20:25:25", 16.30217, -70.50024], ["2020-03-21T23:52:37", 16.33335, -70.52728], ["2020-03-22T00:22:08", 16.3372, -70.53051], ["2020-03-22T00:52:08", 16.34085, -70.53291], ["2020-03-22T01:22:08", 16.34424, -70.53497], ["2020-03-22T04:51:13", 16.36485, -70.55707], ["2020-03-22T05:20:44", 16.36973, -70.56278], ["2020-03-22T05:50:44", 16.37325, -70.56741], ["2020-03-22T09:49:19", 16.41341, -70.61638], ["2020-03-22T10:19:19", 16.4195, -70.62282], ["2020-03-22T10:49:19", 16.42486, -70.62823], ["2020-03-22T18:02:46", 16.51441, -70.7326], ["2020-03-22T18:16:44", 16.51807, -70.73676], ["2020-03-22T18:49:32", 16.54009, -70.76349], ["2020-03-22T19:49:32", 16.54374, -70.76761], ["2020-03-22T20:15:29", 16.54979, -70.77695], ["2020-03-22T20:45:29", 16.55773, -70.78845], ["2020-03-22T23:46:31", 16.61283, -70.86382], ["2020-03-23T00:43:39", 16.63185, -70.889], ["2020-03-23T01:13:39", 16.64194, -70.9029], ["2020-03-23T01:43:39", 16.65121, -70.91586], ["2020-03-23T03:43:17", 16.68565, -70.97604], ["2020-03-23T06:12:42", 16.71505, -71.05655], ["2020-03-23T06:42:42", 16.71994, -71.07226], ["2020-03-23T07:12:42", 16.72488, -71.0878], ["2020-03-23T07:45:34", 16.72917, -71.10449], ["2020-03-23T08:12:24", 16.73168, -71.11803], ["2020-03-23T08:42:24", 16.7334, -71.13245], ["2020-03-23T12:41:22", 16.72146, -71.2366], ["2020-03-23T19:12:55", 16.64219, -71.37954], ["2020-03-23T20:08:46", 16.62602, -71.39923], ["2020-03-23T21:39:10", 16.59867, -71.43216], ["2020-03-23T22:08:10", 16.59031, -71.44307], ["2020-03-23T22:41:28", 16.58038, -71.4559], ["2020-03-24T00:08:00", 16.55371, -71.48797], ["2020-03-24T00:38:00", 16.54547, -71.49758], ["2020-03-24T01:08:00", 16.53697, -71.50745], ["2020-03-24T03:07:58", 16.50028, -71.54263], ["2020-03-24T04:06:09", 16.4802, -71.55607], ["2020-03-24T04:36:09", 16.47033, -71.56106], ["2020-03-24T05:06:09", 16.45887, -71.56638], ["2020-03-24T05:38:28", 16.44651, -71.57196], ["2020-03-24T07:35:21", 16.39731, -71.59511], ["2020-03-24T08:05:21", 16.38572, -71.6006], ["2020-03-24T08:35:21", 16.37272, -71.60678], ["2020-03-24T21:30:53", 15.98694, -71.75629], ["2020-03-24T23:30:41", 15.93029, -71.78234], ["2020-03-25T05:29:06", 15.76906, -71.84634], ["2020-03-25T06:28:47", 15.73784, -71.85825], ["2020-03-25T06:58:47", 15.72548, -71.86331], ["2020-03-25T14:29:29", 15.52526, -71.96935], ["2020-03-25T14:58:00", 15.51436, -71.97812], ["2020-03-25T15:28:00", 15.50213, -71.98809], ["2020-03-25T15:58:00", 15.48921, -71.99899], ["2020-03-25T19:27:31", 15.40628, -72.07373], ["2020-03-26T13:48:33", 14.96621, -72.58884], ["2020-03-26T15:18:38", 14.94199, -72.63279], ["2020-03-26T15:48:38", 14.93439, -72.64772], ["2020-03-26T16:18:38", 14.92705, -72.66394], ["2020-03-26T18:47:02", 14.89611, -72.74051], ["2020-03-26T19:48:41", 14.8854, -72.77283], ["2020-03-26T23:46:17", 14.85982, -72.89874], ["2020-03-27T01:49:16", 14.85205, -72.95892], ["2020-03-27T02:18:03", 14.85054, -72.97159], ["2020-03-27T02:45:03", 14.84895, -72.98618], ["2020-03-27T03:18:03", 14.84779, -73.00189], ["2020-03-27T07:13:53", 14.84478, -73.1102], ["2020-03-27T08:13:57", 14.84478, -73.13853], ["2020-03-27T08:43:57", 14.84487, -73.15192], ["2020-03-27T09:43:04", 14.84596, -73.18159], ["2020-03-27T10:13:04", 14.84626, -73.19481], ["2020-03-27T10:43:04", 14.84699, -73.2088], ["2020-03-27T11:16:05", 14.84815, -73.2244], ["2020-03-27T12:12:41", 14.85137, -73.25134], ["2020-03-27T12:44:30", 14.85376, -73.26657], ["2020-03-27T14:41:38", 14.86545, -73.32252], ["2020-03-27T15:11:38", 14.86944, -73.3378], ["2020-03-27T15:41:38", 14.8724, -73.34963], ["2020-03-27T16:11:58", 14.8761, -73.36311], ["2020-03-27T16:41:58", 14.87975, -73.37649], ["2020-03-27T17:52:19", 14.88833, -73.40778], ["2020-03-27T18:12:01", 14.89054, -73.41632], ["2020-03-27T18:42:01", 14.89427, -73.43048], ["2020-03-27T19:12:01", 14.89822, -73.44559], ["2020-03-27T19:40:07", 14.9018, -73.45941], ["2020-03-27T20:10:07", 14.90583, -73.47563], ["2020-03-27T20:40:07", 14.90888, -73.48911], ["2020-03-27T21:11:31", 14.91228, -73.50429], ["2020-03-27T21:41:31", 14.9158, -73.52016], ["2020-03-27T22:12:30", 14.91894, -73.53479], ["2020-03-27T22:42:30", 14.92319, -73.55161], ["2020-03-27T23:11:06", 14.92695, -73.56567], ["2020-03-27T23:41:06", 14.93111, -73.58069], ["2020-03-28T00:11:06", 14.936, -73.59665], ["2020-03-28T00:39:11", 14.94028, -73.611], ["2020-03-28T01:09:11", 14.94577, -73.62627], ["2020-03-28T01:38:52", 14.9516, -73.64242], ["2020-03-28T02:08:52", 14.95761, -73.65701], ["2020-03-28T02:38:24", 14.9645, -73.67353], ["2020-03-28T03:08:24", 14.97077, -73.68752], ["2020-03-28T03:38:24", 14.97798, -73.70245], ["2020-03-28T05:11:00", 15.00738, -73.7604], ["2020-03-28T06:11:00", 15.01498, -73.77466], ["2020-03-28T12:36:59", 15.11587, -73.94534], ["2020-03-28T14:07:32", 15.14387, -73.98437], ["2020-03-28T14:37:32", 15.15293, -73.99809], ["2020-03-28T15:07:32", 15.16297, -74.01345], ["2020-03-28T17:35:32", 15.21553, -74.0931], ["2020-03-28T18:05:32", 15.21939, -74.09902], ["2020-03-28T18:35:32", 15.23063, -74.11481], ["2020-03-29T03:32:59", 15.44687, -74.36041], ["2020-03-29T05:00:32", 15.48774, -74.3968], ["2020-03-29T05:30:32", 15.50422, -74.40916], ["2020-03-29T06:00:32", 15.51903, -74.41989], ["2020-03-29T10:32:00", 15.64494, -74.52084], ["2020-03-29T12:59:23", 15.71858, -74.57611], ["2020-03-30T02:56:47", 16.13123, -74.84045], ["2020-03-30T04:26:22", 16.17392, -74.86349], ["2020-03-30T04:56:22", 16.18594, -74.86967], ["2020-03-30T05:26:22", 16.19804, -74.87618], ["2020-03-30T05:56:18", 16.21082, -74.88336], ["2020-03-30T06:26:18", 16.22112, -74.88928], ["2020-03-30T07:55:28", 16.25443, -74.90952], ["2020-03-30T08:25:28", 16.26529, -74.91673], ["2020-03-30T08:55:28", 16.27542, -74.92334], ["2020-03-30T09:25:09", 16.28704, -74.93089], ["2020-03-30T09:55:09", 16.29768, -74.9375], ["2020-03-30T12:27:29", 16.36083, -74.97372], ["2020-03-30T12:55:44", 16.37167, -74.97985], ["2020-03-30T13:24:25", 16.38363, -74.98614], ["2020-03-30T13:55:44", 16.39579, -74.99307], ["2020-03-30T14:54:01", 16.41966, -75.00718], ["2020-03-30T15:24:01", 16.43035, -75.01303], ["2020-03-30T15:54:01", 16.44164, -75.0199], ["2020-03-30T18:23:01", 16.49399, -75.05667], ["2020-03-30T20:22:06", 16.53918, -75.0892], ["2020-03-30T21:21:35", 16.56516, -75.10529], ["2020-03-30T21:51:35", 16.57632, -75.1113], ["2020-03-30T22:21:35", 16.58842, -75.11731], ["2020-03-30T22:54:09", 16.60168, -75.12384], ["2020-03-30T23:21:04", 16.61305, -75.12949], ["2020-03-30T23:51:04", 16.62558, -75.13525], ["2020-03-31T01:20:24", 16.66216, -75.1514], ["2020-03-31T01:50:24", 16.67435, -75.1568], ["2020-03-31T02:20:24", 16.68388, -75.16119], ["2020-03-31T04:49:32", 16.73617, -75.18216], ["2020-03-31T05:19:32", 16.74561, -75.18499], ["2020-03-31T05:49:32", 16.75617, -75.18756], ["2020-03-31T10:18:21", 16.83957, -75.2034], ["2020-03-31T13:19:25", 16.89143, -75.21523], ["2020-03-31T13:49:25", 16.89907, -75.21704], ["2020-03-31T14:19:25", 16.90731, -75.21893], ["2020-03-31T16:51:52", 16.96337, -75.23222], ["2020-03-31T17:21:52", 16.96341, -75.23222], ["2020-03-31T17:51:52", 16.96513, -75.23273], ["2020-03-31T19:17:42", 16.98806, -75.23824], ["2020-03-31T19:48:20", 16.99459, -75.23905], ["2020-03-31T20:18:20", 17.00159, -75.23965], ["2020-03-31T20:48:20", 17.00996, -75.23999], ["2020-03-31T22:13:35", 17.03057, -75.24061], ["2020-03-31T22:43:35", 17.03701, -75.24018], ["2020-03-31T23:13:35", 17.04456, -75.23984], ["2020-04-01T00:13:25", 17.06059, -75.2413], ["2020-04-01T13:13:28", 17.25297, -75.17722], ["2020-04-01T13:43:42", 17.26081, -75.17344], ["2020-04-01T14:13:42", 17.2666, -75.17077], ["2020-04-01T14:43:42", 17.2757, -75.16768], ["2020-04-01T15:10:33", 17.28305, -75.16479], ["2020-04-01T15:40:13", 17.29261, -75.16211], ["2020-04-01T16:10:13", 17.303, -75.15885], ["2020-04-01T16:40:13", 17.31193, -75.15628], ["2020-04-01T19:39:27", 17.37428, -75.13614], ["2020-04-01T20:09:27", 17.38132, -75.13193], ["2020-04-01T21:38:46", 17.39765, -75.11698], ["2020-04-01T22:08:46", 17.4019, -75.11286], ["2020-04-01T22:38:46", 17.40568, -75.10934], ["2020-04-01T23:08:38", 17.4099, -75.10569], ["2020-04-01T23:38:38", 17.41406, -75.10294], ["2020-04-02T01:08:42", 17.42738, -75.09643], ["2020-04-02T01:38:42", 17.43184, -75.09489], ["2020-04-02T02:08:42", 17.43699, -75.0936], ["2020-04-02T03:09:04", 17.44751, -75.09195], ["2020-04-02T03:38:13", 17.45268, -75.09121], ["2020-04-02T04:08:13", 17.45809, -75.09027], ["2020-04-02T06:06:36", 17.47455, -75.08358], ["2020-04-02T06:36:36", 17.47794, -75.08126], ["2020-04-02T07:06:36", 17.48154, -75.07886], ["2020-04-02T07:36:58", 17.48441, -75.0755], ["2020-04-02T08:05:53", 17.48704, -75.07159], ["2020-04-02T08:35:53", 17.4897, -75.06721], ["2020-04-02T09:05:53", 17.49185, -75.06326], ["2020-04-02T10:05:58", 17.49766, -75.0545], ["2020-04-02T10:35:58", 17.50096, -75.05107], ["2020-04-02T11:05:58", 17.50499, -75.04712], ["2020-04-02T11:35:11", 17.50916, -75.04309], ["2020-04-02T12:05:11", 17.51349, -75.0387], ["2020-04-02T12:35:11", 17.51765, -75.03442], ["2020-04-02T13:05:39", 17.52215, -75.03015], ["2020-04-02T13:34:46", 17.52659, -75.02615], ["2020-04-02T14:05:28", 17.53145, -75.02203], ["2020-04-02T14:34:46", 17.5365, -75.01833], ["2020-04-02T15:05:04", 17.54161, -75.01468], ["2020-04-02T16:34:10", 17.55706, -75.00403], ["2020-04-02T17:04:10", 17.56144, -75.00033], ["2020-04-02T18:33:26", 17.57317, -74.99006], ["2020-04-02T19:03:26", 17.57725, -74.9862], ["2020-04-02T19:33:26", 17.58098, -74.98199], ["2020-04-02T20:03:12", 17.58508, -74.97718], ["2020-04-02T20:33:12", 17.58851, -74.9722], ["2020-04-02T21:03:29", 17.59219, -74.96677], ["2020-04-02T21:33:29", 17.59648, -74.96153], ["2020-04-02T22:03:29", 17.60159, -74.95612], ["2020-04-02T22:32:52", 17.60703, -74.95056], ["2020-04-02T23:03:11", 17.61263, -74.94409], ["2020-04-02T23:32:41", 17.61797, -74.93719], ["2020-04-03T00:02:41", 17.62368, -74.92981], ["2020-04-03T01:01:57", 17.63486, -74.91468], ["2020-04-03T01:31:35", 17.64013, -74.90796], ["2020-04-03T02:01:57", 17.64529, -74.9006], ["2020-04-03T04:01:04", 17.66608, -74.87485], ["2020-04-03T05:00:33", 17.67717, -74.86008], ["2020-04-03T06:00:10", 17.6881, -74.8428], ["2020-04-03T06:30:10", 17.69368, -74.83387], ["2020-04-03T07:00:10", 17.69947, -74.82477], ["2020-04-05T05:17:59", 17.99394, -74.05331], ["2020-04-05T05:47:33", 17.99331, -74.04554], ["2020-04-05T06:17:33", 17.99207, -74.03842], ["2020-04-05T08:48:58", 17.97969, -74.00668], ["2020-04-05T09:17:30", 17.97699, -74.00129], ["2020-04-05T09:47:30", 17.97424, -73.9958], ["2020-04-05T10:17:30", 17.97158, -73.99005], ["2020-04-05T11:18:29", 17.96488, -73.97906], ["2020-04-05T11:45:54", 17.9616, -73.97356], ["2020-04-05T12:15:54", 17.9583, -73.96738], ["2020-04-05T12:46:42", 17.95459, -73.96062], ["2020-04-05T13:16:44", 17.95069, -73.95438], ["2020-04-05T13:46:44", 17.9464, -73.94768], ["2020-04-05T14:45:07", 17.94003, -73.93547], ["2020-04-05T15:15:07", 17.93703, -73.93109], ["2020-04-05T15:45:07", 17.93411, -73.92697], ["2020-04-05T16:16:58", 17.93116, -73.92361], ["2020-04-05T18:14:16", 17.92315, -73.91188], ["2020-04-05T18:44:16", 17.92139, -73.90973], ["2020-04-05T19:14:16", 17.91946, -73.90792], ["2020-04-05T20:14:43", 17.91716, -73.90403], ["2020-04-05T20:44:43", 17.91656, -73.90232], ["2020-04-05T21:14:43", 17.916, -73.90009], ["2020-04-05T21:43:24", 17.91504, -73.89788], ["2020-04-05T22:13:24", 17.9141, -73.89488], ["2020-04-05T22:43:24", 17.91294, -73.89136], ["2020-04-05T23:12:59", 17.91178, -73.88597], ["2020-04-05T23:42:59", 17.91028, -73.88065], ["2020-04-06T00:12:44", 17.90875, -73.87456], ["2020-04-06T00:42:44", 17.90721, -73.86787], ["2020-04-06T01:12:44", 17.90588, -73.86169], ["2020-04-06T02:14:12", 17.90229, -73.84793], ["2020-04-06T03:42:59", 17.89552, -73.83279], ["2020-04-06T04:12:59", 17.89325, -73.8291], ["2020-04-06T04:42:59", 17.89059, -73.8255], ["2020-04-06T05:43:01", 17.88677, -73.81896], ["2020-04-06T06:10:59", 17.88504, -73.81583], ["2020-04-06T06:40:59", 17.88311, -73.81258], ["2020-04-06T07:10:59", 17.88058, -73.80965], ["2020-04-06T10:39:48", 17.85998, -73.78729], ["2020-04-06T11:09:39", 17.85706, -73.78283], ["2020-04-06T12:11:58", 17.85065, -73.77348], ["2020-04-06T12:41:58", 17.84769, -73.76909], ["2020-04-06T13:11:58", 17.84464, -73.76403], ["2020-04-06T14:08:29", 17.83916, -73.75559], ["2020-04-06T14:38:29", 17.83624, -73.75138], ["2020-04-06T15:08:29", 17.83384, -73.74786], ["2020-04-06T16:10:23", 17.82496, -73.73766], ["2020-04-06T17:10:23", 17.82208, -73.73363], ["2020-04-06T17:37:51", 17.8195, -73.73029], ["2020-04-06T21:39:24", 17.80078, -73.70471], ["2020-04-06T23:35:52", 17.79159, -73.68832], ["2020-04-07T00:05:52", 17.78987, -73.68326], ["2020-04-07T00:35:52", 17.78841, -73.67838], ["2020-04-07T01:05:25", 17.78616, -73.67335], ["2020-04-07T01:35:25", 17.78376, -73.6694], ["2020-04-07T02:05:17", 17.78084, -73.66558], ["2020-04-07T03:08:00", 17.774, -73.65877], ["2020-04-07T03:38:00", 17.76979, -73.65551], ["2020-04-07T04:08:00", 17.76537, -73.65173], ["2020-04-07T05:04:11", 17.75747, -73.64476], ["2020-04-07T05:34:11", 17.75301, -73.6397], ["2020-04-07T06:04:11", 17.74889, -73.63498], ["2020-04-07T06:34:29", 17.74405, -73.6294], ["2020-04-07T07:04:29", 17.73894, -73.62356], ["2020-04-07T07:34:29", 17.73323, -73.61754], ["2020-04-07T08:36:30", 17.7212, -73.60605], ["2020-04-07T10:33:13", 17.6991, -73.58728], ["2020-04-07T11:06:28", 17.69454, -73.58242], ["2020-04-07T11:36:28", 17.6887, -73.57693], ["2020-04-07T14:02:03", 17.66389, -73.55292], ["2020-04-07T15:33:31", 17.64836, -73.53833], ["2020-04-07T16:03:59", 17.64417, -73.5338], ["2020-04-07T16:33:59", 17.64009, -73.52916], ["2020-04-07T17:01:36", 17.63671, -73.52469], ["2020-04-07T17:31:15", 17.63165, -73.51642], ["2020-04-07T18:01:15", 17.63015, -73.51385], ["2020-04-07T20:00:44", 17.6202, -73.49164], ["2020-04-07T21:00:14", 17.61539, -73.47995], ["2020-04-07T21:30:14", 17.61299, -73.47436], ["2020-04-07T23:59:30", 17.59818, -73.44516], ["2020-04-08T00:31:56", 17.5944, -73.43962], ["2020-04-08T01:01:56", 17.59019, -73.43378], ["2020-04-08T02:30:01", 17.57924, -73.41991], ["2020-04-08T03:00:01", 17.57611, -73.4157], ["2020-04-08T03:30:01", 17.57263, -73.41107], ["2020-04-08T03:58:33", 17.56937, -73.40634], ["2020-04-08T04:29:26", 17.56656, -73.40079], ["2020-04-08T05:00:59", 17.56356, -73.39484], ["2020-04-08T05:30:59", 17.56038, -73.38763], ["2020-04-08T06:27:47", 17.55481, -73.37477], ["2020-04-08T06:57:47", 17.55142, -73.36756], ["2020-04-08T07:27:47", 17.54803, -73.36121], ["2020-04-08T08:01:02", 17.5436, -73.35431], ["2020-04-08T08:27:21", 17.5397, -73.34936], ["2020-04-08T08:57:21", 17.53528, -73.34439], ["2020-04-08T12:26:02", 17.50807, -73.32192], ["2020-04-08T12:57:29", 17.50607, -73.31968], ["2020-04-08T13:27:29", 17.50465, -73.31686], ["2020-04-08T13:56:29", 17.5037, -73.31391], ["2020-04-08T14:26:29", 17.50267, -73.31082], ["2020-04-08T14:56:29", 17.50125, -73.30704], ["2020-04-08T15:25:08", 17.50014, -73.30304], ["2020-04-08T15:56:01", 17.49919, -73.29852], ["2020-04-08T16:47:42", 17.49382, -73.28478], ["2020-04-08T17:17:42", 17.49292, -73.28229], ["2020-04-08T17:47:42", 17.49253, -73.28143], ["2020-04-08T17:54:19", 17.49201, -73.28055], ["2020-04-08T18:24:19", 17.49012, -73.27704], ["2020-04-08T18:55:22", 17.4875, -73.27329], ["2020-04-08T19:25:22", 17.48308, -73.26873], ["2020-04-08T19:53:25", 17.47794, -73.26587], ["2020-04-08T20:23:25", 17.47129, -73.2639], ["2020-04-08T20:53:25", 17.46404, -73.26321], ["2020-04-08T21:23:13", 17.45457, -73.26167], ["2020-04-08T21:53:13", 17.44582, -73.26004], ["2020-04-08T23:52:41", 17.40939, -73.25333], ["2020-04-09T02:51:42", 17.36787, -73.24182], ["2020-04-09T06:50:38", 17.3333, -73.2059], ["2020-04-09T14:18:41", 17.28192, -73.15317], ["2020-04-09T14:48:29", 17.27963, -73.15197], ["2020-04-09T15:18:29", 17.27847, -73.15085], ["2020-04-09T18:18:57", 17.28481, -73.14116], ["2020-04-09T18:48:57", 17.287, -73.13901], ["2020-04-09T19:18:57", 17.28988, -73.13634], ["2020-04-09T20:46:42", 17.29635, -73.12808], ["2020-04-09T21:16:42", 17.29751, -73.12576], ["2020-04-10T01:18:11", 17.29243, -73.11275], ["2020-04-10T01:47:39", 17.29018, -73.11217], ["2020-04-10T02:17:39", 17.28761, -73.11148], ["2020-04-10T02:47:39", 17.28469, -73.11002], ["2020-04-10T03:14:37", 17.28377, -73.10946], ["2020-04-10T03:44:37", 17.28317, -73.10852], ["2020-04-10T18:40:50", 17.23701, -73.05252], ["2020-04-10T20:12:30", 17.24292, -73.0484], ["2020-04-10T20:40:13", 17.24514, -73.04602], ["2020-04-10T21:12:30", 17.24803, -73.043], ["2020-04-11T13:35:17", 17.28587, -72.96588], ["2020-04-11T19:33:17", 17.3056, -72.95699], ["2020-04-11T22:34:59", 17.33161, -72.95706], ["2020-04-11T23:02:18", 17.33565, -72.95596], ["2020-04-11T23:32:18", 17.34007, -72.95511], ["2020-04-12T00:02:07", 17.34566, -72.95435], ["2020-04-12T00:32:07", 17.34957, -72.95367], ["2020-04-12T01:31:27", 17.35712, -72.95097], ["2020-04-12T02:01:27", 17.36042, -72.94934], ["2020-04-12T02:31:27", 17.3636, -72.94754], ["2020-04-12T05:30:33", 17.38774, -72.94392], ["2020-04-12T06:00:33", 17.39263, -72.94435], ["2020-04-12T06:30:33", 17.39812, -72.94504], ["2020-04-12T07:30:21", 17.40984, -72.94757], ["2020-04-12T14:57:51", 17.49785, -72.99683], ["2020-04-12T18:59:01", 17.53799, -73.07201], ["2020-04-12T19:56:39", 17.54554, -73.08832], ["2020-04-12T20:26:21", 17.54875, -73.09627], ["2020-04-12T20:56:21", 17.55137, -73.10263], ["2020-04-12T22:25:52", 17.55817, -73.11835], ["2020-04-12T22:55:52", 17.55993, -73.12358], ["2020-04-12T23:25:52", 17.56109, -73.12814], ["2020-04-13T02:54:41", 17.55375, -73.16449], ["2020-04-13T04:24:15", 17.54589, -73.18094], ["2020-04-13T07:23:16", 17.52647, -73.2029], ["2020-04-13T07:53:16", 17.52184, -73.20513], ["2020-04-13T08:23:16", 17.51815, -73.20632], ["2020-04-13T12:51:58", 17.46887, -73.21191], ["2020-04-13T13:21:31", 17.46209, -73.21274], ["2020-04-13T13:51:31", 17.45497, -73.21402], ["2020-04-13T14:21:31", 17.44909, -73.21514], ["2020-04-13T16:53:49", 17.4164, -73.22821], ["2020-04-13T17:06:11", 17.40948, -73.23217], ["2020-04-13T17:36:11", 17.40836, -73.23303], ["2020-04-13T19:20:06", 17.39222, -73.24213], ["2020-04-13T20:19:46", 17.38456, -73.24628], ["2020-04-13T20:49:38", 17.38089, -73.24755], ["2020-04-13T21:19:06", 17.37728, -73.24757], ["2020-04-13T21:49:06", 17.37475, -73.24697], ["2020-04-13T22:19:06", 17.37196, -73.24679], ["2020-04-14T01:50:57", 17.35221, -73.2402], ["2020-04-14T03:17:15", 17.34209, -73.23829], ["2020-04-14T03:47:15", 17.339, -73.23786], ["2020-04-14T04:17:15", 17.336, -73.23699], ["2020-04-14T04:49:58", 17.33323, -73.23651], ["2020-04-14T05:17:00", 17.33115, -73.23584], ["2020-04-14T07:46:21", 17.32022, -73.2305], ["2020-04-14T10:17:42", 17.30905, -73.21719], ["2020-04-14T10:45:02", 17.30685, -73.21473], ["2020-04-14T11:15:02", 17.30488, -73.21164], ["2020-04-14T16:13:37", 17.28838, -73.19131], ["2020-04-14T16:43:14", 17.28649, -73.1936], ["2020-04-14T17:13:14", 17.2861, -73.19377], ["2020-04-14T17:43:14", 17.28571, -73.19403], ["2020-04-14T18:16:28", 17.28399, -73.19485], ["2020-04-14T19:12:58", 17.28264, -73.19727], ["2020-04-14T19:44:11", 17.28252, -73.19861], ["2020-04-14T20:12:58", 17.28289, -73.19958], ["2020-04-14T21:46:13", 17.28491, -73.20071], ["2020-04-15T01:11:58", 17.29127, -73.18933], ["2020-04-15T01:45:13", 17.29216, -73.18619], ["2020-04-15T05:10:40", 17.2951, -73.16904], ["2020-04-15T05:43:00", 17.29523, -73.16797], ["2020-04-15T08:10:03", 17.29925, -73.16821], ["2020-04-15T08:41:56", 17.30106, -73.16804], ["2020-04-15T09:11:56", 17.3023, -73.16786], ["2020-04-15T09:41:56", 17.30346, -73.16718], ["2020-04-15T11:09:02", 17.30991, -73.16354], ["2020-04-15T11:39:02", 17.31214, -73.1626], ["2020-04-15T12:11:36", 17.31451, -73.16162], ["2020-04-15T13:38:19", 17.31987, -73.15841], ["2020-04-15T14:08:19", 17.3209, -73.15764], ["2020-04-15T14:38:19", 17.32159, -73.15652], ["2020-04-15T15:37:43", 17.32486, -73.15416], ["2020-04-15T19:38:57", 17.34184, -73.16186], ["2020-04-15T22:05:54", 17.35668, -73.1735], ["2020-04-15T22:35:54", 17.35887, -73.17505], ["2020-04-15T23:05:54", 17.3626, -73.17737], ["2020-04-16T00:35:25", 17.37716, -73.18177], ["2020-04-16T01:05:25", 17.38252, -73.18297], ["2020-04-16T01:35:25", 17.38724, -73.18416], ["2020-04-16T03:05:09", 17.4008, -73.1838], ["2020-04-16T03:35:09", 17.40531, -73.18371], ["2020-04-16T04:05:09", 17.40909, -73.18371], ["2020-04-16T04:36:27", 17.41331, -73.18441], ["2020-04-16T05:06:27", 17.41786, -73.18518], ["2020-04-16T05:34:45", 17.42204, -73.1861], ["2020-04-16T06:04:28", 17.42673, -73.1881], ["2020-04-16T06:34:28", 17.43098, -73.19016], ["2020-04-16T07:04:18", 17.43598, -73.19266], ["2020-04-16T07:37:29", 17.44196, -73.19595], ["2020-04-16T10:05:31", 17.46834, -73.20901], ["2020-04-16T10:35:31", 17.47396, -73.21141], ["2020-04-16T11:05:31", 17.4804, -73.21381], ["2020-04-16T14:02:42", 17.515, -73.22504], ["2020-04-16T15:06:06", 17.52668, -73.23157], ["2020-04-16T21:31:40", 17.62306, -73.31607], ["2020-04-16T21:59:40", 17.62989, -73.32361], ["2020-04-16T22:29:40", 17.63689, -73.33132], ["2020-04-16T23:01:02", 17.64342, -73.33942], ["2020-04-17T00:59:01", 17.66624, -73.36948], ["2020-04-17T01:28:55", 17.67115, -73.3776], ["2020-04-17T01:58:55", 17.6754, -73.38507], ["2020-04-17T02:29:42", 17.67994, -73.39337], ["2020-04-17T05:27:25", 17.69255, -73.43944], ["2020-04-17T05:57:32", 17.69212, -73.44589], ["2020-04-17T06:27:25", 17.69143, -73.45352], ["2020-04-17T06:58:40", 17.6902, -73.46222], ["2020-04-17T07:28:59", 17.6885, -73.47059], ["2020-04-17T07:58:59", 17.68644, -73.47986], ["2020-04-19T03:48:28", 17.13009, -73.92822], ["2020-04-19T06:15:29", 17.08868, -73.93035], ["2020-04-19T06:47:46", 17.07965, -73.93106], ["2020-04-19T08:44:55", 17.04471, -73.93388], ["2020-04-19T09:14:55", 17.03535, -73.93482], ["2020-04-19T09:44:55", 17.02668, -73.93594], ["2020-04-19T11:13:43", 16.99915, -73.93929], ["2020-04-19T11:43:43", 16.98949, -73.94041], ["2020-04-19T12:13:43", 16.98035, -73.9411], ["2020-04-19T12:43:19", 16.97043, -73.94242], ["2020-04-19T13:13:19", 16.96125, -73.94379], ["2020-04-19T13:42:55", 16.9506, -73.94562], ["2020-04-19T14:13:07", 16.94159, -73.9472], ["2020-04-19T14:42:55", 16.9315, -73.94846], ["2020-04-19T15:46:00", 16.90054, -73.95439], ["2020-04-19T16:46:00", 16.8905, -73.95551], ["2020-04-19T17:03:59", 16.87676, -73.95903], ["2020-04-19T17:33:59", 16.87487, -73.95963], ["2020-04-19T17:43:29", 16.87212, -73.96062], ["2020-04-19T18:13:29", 16.86294, -73.96447], ["2020-04-19T19:43:00", 16.83966, -73.97705], ["2020-04-19T21:10:52", 16.81779, -73.99173], ["2020-04-19T21:40:52", 16.81097, -73.9967], ["2020-04-19T22:10:52", 16.80526, -74.00143], ["2020-04-19T22:42:31", 16.79899, -74.00655], ["2020-04-19T23:14:22", 16.79367, -74.01016], ["2020-04-19T23:42:31", 16.78869, -74.01282], ["2020-04-20T00:12:28", 16.78332, -74.01492], ["2020-04-20T00:40:59", 16.77818, -74.01667], ["2020-04-20T01:10:59", 16.77307, -74.01814], ["2020-04-20T01:40:59", 16.76745, -74.01917], ["2020-04-20T02:09:42", 16.7617, -74.01956], ["2020-04-20T03:09:18", 16.74999, -74.02011], ["2020-04-20T05:08:31", 16.72403, -74.01957], ["2020-04-20T05:38:53", 16.71686, -74.01953], ["2020-04-20T06:08:31", 16.70867, -74.02051], ["2020-04-20T06:40:16", 16.69962, -74.02112], ["2020-04-20T07:08:12", 16.69114, -74.02198], ["2020-04-20T07:38:12", 16.68281, -74.02343], ["2020-04-20T08:09:21", 16.67287, -74.02533], ["2020-04-20T08:39:21", 16.66442, -74.02705], ["2020-04-20T09:09:21", 16.65481, -74.02902], ["2020-04-20T09:39:06", 16.64651, -74.03095], ["2020-04-20T10:09:06", 16.63698, -74.03283], ["2020-04-20T14:37:59", 16.5603, -74.04016], ["2020-04-20T21:34:55", 16.44734, -74.05916], ["2020-04-20T23:35:42", 16.41165, -74.06741], ["2020-04-21T00:03:46", 16.40328, -74.06895], ["2020-04-21T00:33:46", 16.39362, -74.07118], ["2020-04-21T01:03:46", 16.38469, -74.07333], ["2020-04-21T01:34:29", 16.37521, -74.07608], ["2020-04-21T02:04:29", 16.36538, -74.07849], ["2020-04-21T02:33:20", 16.3562, -74.08127], ["2020-04-21T03:03:02", 16.3454, -74.08426], ["2020-04-21T03:33:02", 16.33669, -74.08649], ["2020-04-21T08:32:58", 16.24203, -74.11456], ["2020-04-21T09:03:43", 16.23378, -74.11759], ["2020-04-21T09:33:43", 16.22395, -74.12119], ["2020-04-21T10:30:18", 16.20643, -74.12814], ["2020-04-21T11:00:18", 16.19652, -74.13114], ["2020-04-21T11:30:18", 16.18734, -74.13406], ["2020-04-21T17:28:49", 16.07686, -74.18304], ["2020-04-21T17:34:23", 16.07532, -74.18389], ["2020-04-21T19:57:44", 16.0339, -74.20674], ["2020-04-21T20:27:44", 16.02626, -74.2106], ["2020-04-21T20:57:44", 16.01776, -74.21463], ["2020-04-22T00:58:28", 15.94505, -74.2465], ["2020-04-22T01:26:37", 15.9355, -74.25027], ["2020-04-22T01:58:28", 15.92518, -74.25482], ["2020-04-22T02:26:17", 15.91613, -74.2586], ["2020-04-22T02:56:17", 15.90665, -74.26263], ["2020-04-22T03:26:03", 15.89719, -74.2668], ["2020-04-22T03:56:03", 15.88813, -74.27066], ["2020-04-22T07:24:59", 15.82452, -74.29337], ["2020-04-22T07:54:59", 15.81469, -74.29662], ["2020-04-22T08:24:59", 15.80542, -74.29929], ["2020-04-22T08:56:26", 15.79456, -74.30258], ["2020-04-22T11:53:57", 15.73348, -74.32458], ["2020-04-22T16:22:38", 15.64691, -74.3656], ["2020-04-22T16:55:46", 15.6372, -74.37213], ["2020-04-22T17:04:33", 15.62779, -74.3789], ["2020-04-22T17:34:33", 15.62594, -74.38019], ["2020-04-22T17:52:11", 15.62071, -74.38385], ["2020-04-22T18:51:52", 15.60505, -74.39691], ["2020-04-22T20:20:55", 15.58276, -74.41715], ["2020-04-22T20:50:55", 15.57542, -74.42435], ["2020-04-22T21:20:55", 15.56842, -74.43062], ["2020-04-22T21:50:38", 15.56021, -74.43812], ["2020-04-22T22:20:38", 15.55317, -74.44439], ["2020-04-22T22:50:38", 15.54557, -74.45117], ["2020-04-22T23:20:16", 15.53729, -74.45804], ["2020-04-22T23:50:16", 15.52952, -74.46362], ["2020-04-23T00:49:58", 15.51186, -74.47562], ["2020-04-23T02:50:27", 15.47655, -74.49985], ["2020-04-23T06:20:59", 15.40865, -74.5459], ["2020-04-23T07:49:03", 15.37759, -74.5668], ["2020-04-23T13:46:14", 15.27018, -74.66412], ["2020-04-23T18:15:00", 15.20546, -74.74545], ["2020-04-23T18:46:05", 15.19848, -74.75601], ["2020-04-23T19:14:43", 15.19189, -74.76608], ["2020-04-23T20:14:31", 15.17909, -74.78789], ["2020-04-23T20:44:31", 15.17218, -74.79939], ["2020-04-23T21:14:31", 15.16591, -74.8096], ["2020-04-23T21:44:24", 15.15915, -74.82088], ["2020-04-23T22:17:37", 15.15222, -74.83353], ["2020-04-23T22:44:24", 15.14649, -74.84354], ["2020-04-24T00:13:35", 15.12752, -74.87577], ["2020-04-24T00:43:35", 15.12074, -74.88744], ["2020-04-24T01:13:35", 15.11482, -74.8974], ["2020-04-24T03:44:52", 15.08603, -74.95453], ["2020-04-26T16:24:32", 15.4404, -76.39634], ["2020-04-26T16:54:32", 15.44812, -76.4038], ["2020-04-26T17:56:32", 15.46463, -76.42133], ["2020-04-26T18:25:12", 15.47159, -76.42918], ["2020-04-26T18:55:12", 15.47949, -76.43716], ["2020-04-26T19:25:12", 15.48842, -76.44583], ["2020-04-26T19:54:42", 15.49716, -76.4534], ["2020-04-26T20:24:42", 15.50647, -76.46173], ["2020-04-26T20:53:33", 15.51538, -76.46922], ["2020-04-26T21:23:33", 15.52521, -76.47729], ["2020-04-26T21:53:33", 15.53409, -76.48459], ["2020-04-26T22:22:58", 15.5437, -76.49209], ["2020-04-26T22:54:57", 15.55328, -76.50021], ["2020-04-27T00:51:54", 15.5887, -76.53057], ["2020-04-27T01:23:30", 15.59811, -76.53775], ["2020-04-27T01:51:54", 15.60685, -76.54465], ["2020-04-27T02:24:29", 15.61592, -76.55198], ["2020-04-27T02:54:29", 15.6242, -76.55893], ["2020-04-27T03:24:29", 15.63334, -76.56665], ["2020-04-27T06:50:26", 15.68557, -76.60849], ["2020-04-27T07:22:12", 15.69392, -76.61377], ["2020-04-27T12:49:02", 15.76859, -76.66379], ["2020-04-27T13:20:02", 15.77365, -76.66891], ["2020-04-27T13:50:02", 15.7791, -76.67431], ["2020-04-27T15:17:58", 15.7956, -76.69197], ["2020-04-27T15:47:58", 15.80157, -76.69935], ["2020-04-27T16:17:58", 15.80689, -76.7063], ["2020-04-27T16:50:31", 15.81301, -76.71453], ["2020-04-27T17:20:31", 15.82018, -76.7226], ["2020-04-27T17:27:58", 15.82205, -76.72445], ["2020-04-27T18:48:47", 15.84164, -76.74335], ["2020-04-27T20:46:27", 15.87476, -76.76733], ["2020-04-27T21:16:27", 15.88424, -76.77377], ["2020-04-27T21:46:27", 15.89205, -76.77875], ["2020-04-28T07:46:30", 16.04752, -76.86038], ["2020-04-28T08:43:03", 16.06072, -76.86566], ["2020-04-28T09:42:50", 16.07381, -76.86951], ["2020-04-28T10:12:50", 16.08033, -76.87114], ["2020-04-28T10:42:50", 16.08587, -76.87268], ["2020-04-28T12:12:09", 16.10498, -76.87748], ["2020-04-28T12:42:09", 16.11167, -76.87954], ["2020-04-28T13:12:09", 16.11703, -76.88101], ["2020-04-28T17:40:03", 16.16901, -76.90588], ["2020-04-28T18:40:41", 16.18104, -76.91266], ["2020-04-28T19:10:41", 16.18739, -76.91584], ["2020-04-28T19:40:41", 16.1943, -76.91919], ["2020-04-28T20:42:28", 16.20836, -76.92545], ["2020-04-28T21:09:09", 16.21452, -76.92804], ["2020-04-28T22:08:36", 16.22852, -76.9332], ["2020-04-28T22:38:36", 16.23431, -76.93517], ["2020-04-28T23:08:36", 16.24092, -76.9368], ["2020-04-28T23:41:00", 16.2478, -76.93825], ["2020-04-29T00:11:00", 16.25454, -76.93911], ["2020-04-29T00:41:00", 16.26184, -76.94031], ["2020-04-29T01:38:22", 16.27427, -76.94168], ["2020-04-29T02:07:44", 16.28088, -76.9421], ["2020-04-29T02:37:44", 16.28646, -76.94261], ["2020-04-29T03:07:44", 16.29238, -76.9432], ["2020-04-29T03:37:30", 16.29926, -76.94395], ["2020-04-29T04:07:30", 16.30518, -76.94446], ["2020-04-29T04:38:22", 16.31158, -76.94492], ["2020-04-29T05:08:22", 16.3178, -76.94501], ["2020-04-29T06:37:39", 16.33472, -76.94579], ["2020-04-29T07:07:39", 16.34004, -76.94665], ["2020-04-29T07:37:39", 16.34635, -76.9475], ["2020-04-29T08:36:58", 16.35742, -76.94949], ["2020-04-29T09:05:59", 16.36312, -76.95041], ["2020-04-29T09:35:32", 16.36939, -76.95108], ["2020-04-29T10:05:32", 16.37463, -76.95202], ["2020-04-29T10:35:13", 16.37994, -76.95313], ["2020-04-29T11:05:13", 16.38591, -76.95356], ["2020-04-29T11:35:13", 16.39132, -76.95416], ["2020-04-29T12:08:06", 16.39734, -76.9548], ["2020-04-29T12:38:06", 16.40391, -76.95556], ["2020-04-29T13:04:40", 16.4095, -76.95617], ["2020-04-29T13:34:40", 16.41568, -76.95659], ["2020-04-29T14:06:58", 16.4222, -76.95712], ["2020-04-29T14:36:58", 16.42804, -76.95755], ["2020-04-29T15:06:58", 16.43465, -76.95798], ["2020-04-29T17:03:41", 16.46089, -76.96187], ["2020-04-29T17:23:36", 16.46557, -76.96317], ["2020-04-29T17:33:36", 16.46791, -76.96387], ["2020-04-29T19:34:57", 16.49733, -76.97278], ["2020-04-29T20:04:57", 16.50411, -76.97475], ["2020-04-29T20:34:57", 16.51209, -76.97681], ["2020-04-29T22:32:18", 16.54365, -76.98217], ["2020-04-29T23:05:01", 16.55199, -76.98269], ["2020-04-29T23:32:18", 16.55919, -76.98242], ["2020-04-30T00:02:15", 16.56671, -76.98175], ["2020-04-30T01:01:59", 16.58128, -76.98013], ["2020-04-30T04:00:41", 16.62027, -76.96765], ["2020-04-30T04:30:41", 16.62593, -76.96576], ["2020-04-30T05:00:41", 16.63099, -76.96396], ["2020-04-30T05:30:13", 16.63653, -76.96268], ["2020-04-30T06:00:13", 16.64069, -76.96147], ["2020-04-30T06:30:13", 16.64541, -76.96053], ["2020-04-30T09:29:31", 16.67354, -76.95746], ["2020-04-30T09:59:08", 16.67838, -76.95715], ["2020-04-30T10:29:08", 16.68216, -76.95672], ["2020-04-30T10:59:08", 16.68649, -76.95578], ["2020-04-30T14:00:54", 16.70595, -76.94968], ["2020-04-30T14:31:01", 16.70925, -76.94887], ["2020-04-30T15:01:01", 16.71268, -76.94801], ["2020-04-30T15:31:01", 16.71706, -76.94723], ["2020-04-30T17:26:48", 16.73071, -76.94763], ["2020-04-30T17:56:31", 16.73551, -76.94883], ["2020-04-30T18:26:31", 16.74019, -76.94986], ["2020-04-30T19:28:00", 16.7507, -76.95371], ["2020-04-30T19:58:00", 16.75512, -76.95568], ["2020-04-30T20:28:00", 16.75975, -76.95825], ["2020-04-30T20:55:42", 16.76411, -76.96102], ["2020-04-30T21:58:57", 16.77419, -76.96689], ["2020-04-30T22:28:57", 16.7787, -76.96972], ["2020-04-30T22:58:57", 16.78342, -76.97229], ["2020-04-30T23:25:04", 16.78702, -76.97418], ["2020-05-01T02:23:52", 16.8146, -76.97742], ["2020-05-01T07:24:00", 16.8541, -76.96948], ["2020-05-02T17:22:42", 17.21594, -76.9498], ["2020-05-02T17:42:58", 17.21978, -76.94974], ["2020-05-02T18:12:58", 17.22562, -76.94974], ["2020-05-02T18:44:10", 17.23155, -76.94974], ["2020-05-02T19:14:10", 17.2373, -76.94974], ["2020-05-02T19:44:10", 17.24352, -76.94983], ["2020-05-02T20:13:06", 17.24909, -76.95017], ["2020-05-02T20:43:06", 17.25536, -76.95068], ["2020-05-03T00:12:28", 17.29866, -76.95197], ["2020-05-03T00:43:29", 17.30428, -76.95129], ["2020-05-03T01:13:29", 17.31093, -76.95026], ["2020-05-03T01:40:33", 17.31629, -76.94896], ["2020-05-03T02:10:33", 17.32178, -76.94732], ["2020-05-03T03:10:27", 17.33364, -76.94351], ["2020-05-03T03:40:15", 17.34069, -76.94083], ["2020-05-03T04:10:15", 17.34661, -76.93886], ["2020-05-03T04:39:36", 17.3528, -76.93814], ["2020-05-03T05:09:36", 17.35975, -76.93625], ["2020-05-03T05:39:36", 17.36554, -76.93488], ["2020-05-03T06:11:13", 17.3717, -76.93297], ["2020-05-03T06:41:13", 17.37797, -76.93091], ["2020-05-03T07:10:29", 17.38336, -76.92908], ["2020-05-03T07:40:29", 17.3895, -76.92693], ["2020-05-03T08:10:29", 17.39538, -76.92453], ["2020-05-03T10:38:02", 17.42089, -76.91004], ["2020-05-03T11:08:02", 17.42432, -76.90712], ["2020-05-03T11:38:02", 17.42797, -76.90326], ["2020-05-03T12:07:49", 17.43166, -76.89869], ["2020-05-03T12:37:49", 17.43514, -76.89371], ["2020-05-03T15:07:03", 17.45856, -76.86877], ["2020-05-03T15:36:48", 17.46242, -76.86566], ["2020-05-03T16:06:48", 17.46512, -76.86386], ["2020-05-03T16:23:05", 17.4707, -76.8601], ["2020-05-03T16:53:05", 17.4713, -76.85975], ["2020-05-03T17:23:05", 17.47181, -76.8595], ["2020-05-03T18:08:24", 17.47502, -76.85764], ["2020-05-03T21:38:12", 17.49228, -76.85702], ["2020-05-03T22:05:27", 17.49442, -76.85731], ["2020-05-03T22:35:27", 17.49742, -76.85774], ["2020-05-03T23:05:27", 17.50047, -76.85825], ["2020-05-04T00:05:23", 17.50621, -76.85916], ["2020-05-04T00:35:00", 17.50924, -76.85933], ["2020-05-04T01:05:00", 17.51272, -76.85916], ["2020-05-04T02:33:19", 17.52325, -76.85796], ["2020-05-04T03:05:01", 17.52699, -76.85706], ["2020-05-04T03:35:01", 17.53111, -76.8562], ["2020-05-04T04:02:43", 17.5345, -76.8555], ["2020-05-04T04:32:43", 17.53763, -76.85464], ["2020-05-04T05:05:27", 17.54139, -76.85361], ["2020-05-04T06:02:14", 17.54744, -76.85098], ["2020-05-04T07:01:50", 17.55241, -76.84729], ["2020-05-04T07:31:32", 17.55434, -76.84492], ["2020-05-04T08:01:32", 17.55619, -76.84251], ["2020-05-04T08:31:32", 17.55748, -76.84012], ["2020-05-04T11:31:00", 17.5669, -76.82577], ["2020-05-04T12:01:00", 17.5684, -76.82338], ["2020-05-04T12:31:00", 17.5702, -76.82098], ["2020-05-04T12:59:41", 17.5715, -76.8182], ["2020-05-04T13:29:41", 17.57386, -76.81572], ["2020-05-04T13:59:41", 17.57652, -76.81366], ["2020-05-04T14:32:29", 17.57895, -76.81091], ["2020-05-04T14:59:20", 17.58149, -76.80869], ["2020-05-04T20:00:07", 17.60705, -76.80664], ["2020-05-04T20:31:18", 17.6097, -76.80663], ["2020-05-04T21:01:18", 17.61197, -76.80612], ["2020-05-04T22:57:34", 17.6237, -76.8071], ["2020-05-04T23:26:49", 17.6262, -76.80695], ["2020-05-04T23:57:34", 17.62889, -76.80643], ["2020-05-05T00:58:18", 17.63317, -76.80414], ["2020-05-05T01:28:18", 17.6354, -76.80328], ["2020-05-05T01:58:18", 17.63862, -76.80234], ["2020-05-05T02:25:51", 17.64157, -76.80123], ["2020-05-05T02:55:51", 17.64427, -76.8002], ["2020-05-05T06:54:34", 17.66409, -76.79031], ["2020-05-05T08:24:07", 17.66843, -76.78722], ["2020-05-05T14:22:26", 17.67152, -76.77884], ["2020-05-05T14:52:10", 17.67246, -76.77992], ["2020-05-05T15:25:50", 17.67379, -76.7814], ["2020-05-05T15:52:10", 17.67482, -76.78274], ["2020-05-05T16:23:12", 17.67673, -76.78514], ["2020-05-05T16:53:12", 17.67918, -76.78762], ["2020-05-05T19:21:14", 17.69445, -76.802], ["2020-05-05T20:22:08", 17.70257, -76.80867], ["2020-05-05T20:52:08", 17.70643, -76.81185], ["2020-05-05T21:22:08", 17.70986, -76.81485], ["2020-05-05T23:49:47", 17.72414, -76.82953], ["2020-05-06T04:18:22", 17.73142, -76.86257], ["2020-05-06T04:48:22", 17.73121, -76.86584], ["2020-05-06T05:18:22", 17.7307, -76.86893], ["2020-05-06T05:49:32", 17.7298, -76.87219], ["2020-05-06T10:17:21", 17.71019, -76.90372], ["2020-05-06T10:47:02", 17.70687, -76.90845], ["2020-05-06T11:17:02", 17.70417, -76.91266], ["2020-05-06T12:48:18", 17.69697, -76.92509], ["2020-05-06T13:18:18", 17.69547, -76.92921], ["2020-05-06T13:48:18", 17.69393, -76.93393], ["2020-05-06T14:45:50", 17.69175, -76.94135], ["2020-05-06T15:45:32", 17.68979, -76.9487], ["2020-05-06T16:14:59", 17.68887, -76.9526], ["2020-05-06T16:44:59", 17.6875, -76.95552], ["2020-05-06T17:14:59", 17.6863, -76.95792], ["2020-05-06T17:46:36", 17.68554, -76.96109], ["2020-05-06T18:14:24", 17.68527, -76.96411], ["2020-05-06T18:46:36", 17.68459, -76.96735], ["2020-05-06T19:44:03", 17.6833, -76.97504], ["2020-05-06T20:13:37", 17.68301, -76.98027], ["2020-05-06T20:43:37", 17.6828, -76.98508], ["2020-05-06T22:43:40", 17.6811, -77.00861], ["2020-05-07T02:14:28", 17.67833, -77.04559], ["2020-05-07T05:41:10", 17.67544, -77.06905], ["2020-05-07T06:12:36", 17.67534, -77.07211], ["2020-05-07T06:40:52", 17.67497, -77.07504], ["2020-05-07T07:12:27", 17.67464, -77.07831], ["2020-05-07T07:42:28", 17.67451, -77.08131], ["2020-05-07T08:12:28", 17.67404, -77.08466], ["2020-05-07T09:40:29", 17.67146, -77.09702], ["2020-05-07T10:10:29", 17.66992, -77.10157], ["2020-05-07T10:40:29", 17.66816, -77.10715], ["2020-05-07T12:08:45", 17.66457, -77.12237], ["2020-05-07T12:38:45", 17.6635, -77.12735], ["2020-05-07T13:08:45", 17.66316, -77.13113], ["2020-05-07T13:38:34", 17.66244, -77.13504], ["2020-05-07T14:09:59", 17.66152, -77.13845], ["2020-05-07T14:38:27", 17.66103, -77.14087], ["2020-05-07T15:09:59", 17.66062, -77.14333], ["2020-05-07T16:07:53", 17.66037, -77.14756], ["2020-05-07T16:37:53", 17.66024, -77.14901], ["2020-05-07T17:07:53", 17.65998, -77.15125], ["2020-05-07T17:22:41", 17.66006, -77.1524], ["2020-05-07T17:39:26", 17.66005, -77.15347], ["2020-05-07T18:09:26", 17.66022, -77.15562], ["2020-05-07T18:39:26", 17.66073, -77.1581], ["2020-05-07T19:37:00", 17.66176, -77.16289], ["2020-05-07T20:07:00", 17.6624, -77.16616], ["2020-05-07T20:37:00", 17.66309, -77.16968], ["2020-05-07T22:06:06", 17.66562, -77.18322], ["2020-05-07T22:36:06", 17.66665, -77.18847], ["2020-05-07T23:06:06", 17.66755, -77.19379], ["2020-05-07T23:35:56", 17.66884, -77.19968], ["2020-05-08T00:05:56", 17.66996, -77.20483], ["2020-05-08T02:35:32", 17.67599, -77.22647], ["2020-05-08T04:07:41", 17.67821, -77.23466], ["2020-05-08T04:37:41", 17.67817, -77.23689], ["2020-05-08T05:07:41", 17.67903, -77.23904], ["2020-05-08T05:34:45", 17.67904, -77.24122], ["2020-05-08T06:04:45", 17.67917, -77.24405], ["2020-05-08T06:37:33", 17.67934, -77.24715], ["2020-05-08T07:07:33", 17.67934, -77.25051], ["2020-05-08T07:37:33", 17.67994, -77.25369], ["2020-05-09T21:53:48", 17.76954, -77.61978], ["2020-05-09T22:53:00", 17.77284, -77.63126], ["2020-05-09T23:23:00", 17.77378, -77.63735], ["2020-05-09T23:53:00", 17.77545, -77.6431], ["2020-05-10T00:22:25", 17.77741, -77.64949], ["2020-05-10T00:52:25", 17.77964, -77.65661], ["2020-05-10T01:22:25", 17.7811, -77.66296], ["2020-05-10T01:52:15", 17.78306, -77.67084], ["2020-05-10T02:23:31", 17.78485, -77.6791], ["2020-05-10T02:53:32", 17.78635, -77.68742], ["2020-05-10T03:23:32", 17.7885, -77.69583], ["2020-05-10T05:50:32", 17.79851, -77.74006], ["2020-05-10T06:20:32", 17.80104, -77.74872], ["2020-05-10T06:50:32", 17.80254, -77.75723], ["2020-05-10T07:20:12", 17.80479, -77.76602], ["2020-05-10T07:50:12", 17.80621, -77.77383], ["2020-05-10T08:21:58", 17.80861, -77.78234], ["2020-05-10T08:49:56", 17.81053, -77.78995], ["2020-05-10T09:19:36", 17.81293, -77.79808], ["2020-05-10T09:51:59", 17.81557, -77.80637], ["2020-05-10T10:19:36", 17.81881, -77.81292], ["2020-05-10T12:48:53", 17.8346, -77.85278], ["2020-05-10T13:18:53", 17.83739, -77.86015], ["2020-05-10T13:48:53", 17.84082, -77.86823], ["2020-05-10T14:20:06", 17.8445, -77.87676], ["2020-05-10T14:49:40", 17.84771, -77.88455], ["2020-05-10T15:19:40", 17.85166, -77.89246], ["2020-05-10T15:51:01", 17.85496, -77.90016], ["2020-05-10T16:21:01", 17.85818, -77.90891], ["2020-05-10T17:48:07", 17.86838, -77.93326], ["2020-05-10T18:18:07", 17.87194, -77.94134], ["2020-05-10T18:48:07", 17.87482, -77.94768], ["2020-05-10T19:49:49", 17.8825, -77.95883], ["2020-05-10T20:47:48", 17.88795, -77.96579], ["2020-05-10T21:19:29", 17.89061, -77.96917], ["2020-05-10T21:49:29", 17.89396, -77.97277], ["2020-05-10T22:19:29", 17.89791, -77.97629], ["2020-05-10T23:48:59", 17.9118, -77.98774], ["2020-05-11T00:18:59", 17.91648, -77.99048], ["2020-05-11T00:48:59", 17.9224, -77.99332], ["2020-05-11T01:16:33", 17.92781, -77.9959], ["2020-05-11T02:46:23", 17.94598, -78.00217], ["2020-05-11T03:46:38", 17.95715, -78.00762], ["2020-05-11T04:16:38", 17.96196, -78.01018], ["2020-05-11T04:46:38", 17.96642, -78.01276], ["2020-05-11T05:15:02", 17.97033, -78.01537], ["2020-05-11T05:45:02", 17.97432, -78.01812], ["2020-05-11T06:15:02", 17.97715, -78.02155], ["2020-05-11T06:44:39", 17.98022, -78.02561], ["2020-05-11T07:14:39", 17.98241, -78.02921], ["2020-05-11T07:45:29", 17.98368, -78.03333], ["2020-05-11T08:14:28", 17.98512, -78.03711], ["2020-05-11T08:45:29", 17.98741, -78.04105], ["2020-05-11T09:15:00", 17.98933, -78.04455], ["2020-05-11T09:45:00", 17.99186, -78.04858], ["2020-05-11T10:13:42", 17.99435, -78.05295], ["2020-05-11T10:44:41", 17.99825, -78.05929], ["2020-05-11T11:13:17", 18.00237, -78.0651], ["2020-05-11T11:43:17", 18.00662, -78.07128], ["2020-05-11T12:13:17", 18.01053, -78.07669], ["2020-05-11T13:14:06", 18.02061, -78.08588], ["2020-05-11T14:43:20", 18.03481, -78.09296], ["2020-05-11T15:13:20", 18.03897, -78.0939], ["2020-05-11T15:43:20", 18.043, -78.0946], ["2020-05-11T16:12:21", 18.04672, -78.09515], ["2020-05-11T16:42:57", 18.056, -78.09891], ["2020-05-11T16:43:56", 18.05089, -78.09619], ["2020-05-11T17:22:38", 18.05684, -78.09936], ["2020-05-11T17:42:57", 18.05952, -78.10251], ["2020-05-11T18:11:49", 18.06314, -78.10742], ["2020-05-11T19:42:30", 18.07418, -78.12347], ["2020-05-11T20:10:59", 18.0778, -78.12818], ["2020-05-11T20:40:59", 18.08183, -78.13299], ["2020-05-11T21:10:59", 18.08569, -78.13702], ["2020-05-11T21:42:57", 18.09, -78.14154], ["2020-05-11T22:40:25", 18.09786, -78.14789], ["2020-05-11T23:39:47", 18.10582, -78.15197], ["2020-05-12T00:09:47", 18.1099, -78.15309], ["2020-05-12T00:39:47", 18.11333, -78.15482], ["2020-05-12T01:09:19", 18.11806, -78.15577], ["2020-05-12T01:39:19", 18.12197, -78.15552], ["2020-05-12T02:10:28", 18.12619, -78.15503], ["2020-05-12T02:40:28", 18.12962, -78.1546], ["2020-05-12T03:10:28", 18.13074, -78.15313], ["2020-05-12T04:08:39", 18.13206, -78.14986], ["2020-05-12T04:38:39", 18.13206, -78.14892], ["2020-05-12T05:08:39", 18.1327, -78.14746], ["2020-05-12T05:37:59", 18.13352, -78.146], ["2020-05-12T06:07:43", 18.13431, -78.14472], ["2020-05-12T06:37:43", 18.13508, -78.14343], ["2020-05-12T07:07:36", 18.13601, -78.14256], ["2020-05-12T07:37:36", 18.13657, -78.1423], ["2020-05-12T08:37:30", 18.13739, -78.14304], ["2020-05-12T09:07:30", 18.13633, -78.14252], ["2020-05-12T09:37:25", 18.13522, -78.14192], ["2020-05-12T10:07:25", 18.13488, -78.14175], ["2020-05-12T10:36:28", 18.13424, -78.14181], ["2020-05-12T11:06:28", 18.13317, -78.14215], ["2020-05-12T11:36:28", 18.13231, -78.14215], ["2020-05-12T12:06:12", 18.13158, -78.14205], ["2020-05-12T12:36:12", 18.13038, -78.14145], ["2020-05-12T13:06:00", 18.12807, -78.13988], ["2020-05-12T13:36:00", 18.12738, -78.13885], ["2020-05-12T14:06:28", 18.1273, -78.13798], ["2020-05-12T14:36:28", 18.12683, -78.13746], ["2020-05-12T15:06:28", 18.12606, -78.13643], ["2020-05-12T15:35:42", 18.12626, -78.13562], ["2020-05-12T16:05:57", 18.12812, -78.13614], ["2020-05-12T16:35:28", 18.13098, -78.1376], ["2020-05-12T17:05:28", 18.13536, -78.14078], ["2020-05-12T17:23:08", 18.13828, -78.14306], ["2020-05-12T18:05:26", 18.14503, -78.14946], ["2020-05-12T18:35:26", 18.14975, -78.15402], ["2020-05-12T19:05:26", 18.15426, -78.15805], ["2020-05-12T19:34:42", 18.15862, -78.16113], ["2020-05-12T20:04:56", 18.16274, -78.16357], ["2020-05-12T20:34:25", 18.16466, -78.16544], ["2020-05-12T21:04:01", 18.16272, -78.16604], ["2020-05-12T21:34:01", 18.1598, -78.16544], ["2020-05-12T22:03:43", 18.15813, -78.16467], ["2020-05-12T22:33:43", 18.15701, -78.16278], ["2020-05-12T23:03:56", 18.15531, -78.1611], ["2020-05-12T23:33:56", 18.15346, -78.15998], ["2020-05-13T00:03:56", 18.15286, -78.15774], ["2020-05-13T00:33:30", 18.15307, -78.15485], ["2020-05-13T01:03:30", 18.15367, -78.15228], ["2020-05-13T01:32:37", 18.15396, -78.15038], ["2020-05-13T02:03:10", 18.15368, -78.1489], ["2020-05-13T02:32:37", 18.15345, -78.14755], ["2020-05-13T03:02:59", 18.1524, -78.14642], ["2020-05-13T03:32:16", 18.15024, -78.14575], ["2020-05-13T04:01:54", 18.14766, -78.14516], ["2020-05-13T04:31:54", 18.14547, -78.14465], ["2020-05-13T05:02:00", 18.1429, -78.14437], ["2020-05-13T05:32:00", 18.14084, -78.14394], ["2020-05-13T06:02:00", 18.13882, -78.14324], ["2020-05-13T06:31:29", 18.1374, -78.14331], ["2020-05-13T07:01:29", 18.13633, -78.1434], ["2020-05-13T07:31:09", 18.13545, -78.14393], ["2020-05-13T08:01:09", 18.13481, -78.14462], ["2020-05-13T08:30:36", 18.13392, -78.14532], ["2020-05-13T09:00:17", 18.1329, -78.14599], ["2020-05-13T09:30:17", 18.13166, -78.14642], ["2020-05-13T10:00:11", 18.13043, -78.14743], ["2020-05-13T10:30:11", 18.12949, -78.14829], ["2020-05-13T11:00:11", 18.1288, -78.14941], ["2020-05-13T11:29:31", 18.12799, -78.15063], ["2020-05-13T11:59:57", 18.12712, -78.15208], ["2020-05-13T12:29:57", 18.12609, -78.15345], ["2020-05-13T12:59:57", 18.12497, -78.15491], ["2020-05-13T13:29:13", 18.12364, -78.15573], ["2020-05-13T13:59:25", 18.12186, -78.15619], ["2020-05-13T14:29:25", 18.11993, -78.15636], ["2020-05-13T14:59:25", 18.11787, -78.15662], ["2020-05-13T15:28:58", 18.11622, -78.15713], ["2020-05-13T15:58:58", 18.11532, -78.15756], ["2020-05-13T16:22:33", 18.11739, -78.1586], ["2020-05-13T16:52:33", 18.11915, -78.15869], ["2020-05-13T17:22:33", 18.11966, -78.15869], ["2020-05-13T17:27:56", 18.12015, -78.15875], ["2020-05-13T17:57:30", 18.12303, -78.1591], ["2020-05-13T18:27:30", 18.12565, -78.15927], ["2020-05-13T18:57:01", 18.1288, -78.1594], ["2020-05-13T19:27:01", 18.13163, -78.16], ["2020-05-13T19:56:57", 18.135, -78.16182], ["2020-05-13T20:26:57", 18.13865, -78.16234], ["2020-05-13T20:56:57", 18.14256, -78.16251], ["2020-05-13T21:26:27", 18.14614, -78.16252], ["2020-05-13T21:56:27", 18.14897, -78.16235], ["2020-05-13T22:25:49", 18.15059, -78.16284], ["2020-05-13T22:55:56", 18.15289, -78.16379], ["2020-05-13T23:25:21", 18.15523, -78.16495], ["2020-05-13T23:55:03", 18.15664, -78.16714], ["2020-05-14T00:25:03", 18.15668, -78.16946], ["2020-05-14T00:54:50", 18.15689, -78.17104], ["2020-05-14T01:24:50", 18.1574, -78.17242], ["2020-05-14T01:54:34", 18.15736, -78.17377], ["2020-05-14T02:24:34", 18.15697, -78.17429], ["2020-05-14T02:54:57", 18.15552, -78.17462], ["2020-05-14T03:54:10", 18.14843, -78.17713], ["2020-05-14T04:24:10", 18.14487, -78.17774], ["2020-05-14T04:54:10", 18.14152, -78.17868], ["2020-05-14T05:23:35", 18.13835, -78.17946], ["2020-05-14T05:53:55", 18.13546, -78.18011], ["2020-05-14T06:22:57", 18.13292, -78.18096], ["2020-05-14T06:52:57", 18.13, -78.18156], ["2020-05-14T07:22:57", 18.12717, -78.1825], ["2020-05-14T11:51:58", 18.09523, -78.20309], ["2020-05-14T12:21:25", 18.0934, -78.20731], ["2020-05-14T12:51:26", 18.09215, -78.21201], ["2020-05-14T13:21:06", 18.09076, -78.21661], ["2020-05-14T13:50:48", 18.09052, -78.22166], ["2020-05-14T14:20:48", 18.09138, -78.2269], ["2020-05-14T14:50:31", 18.09287, -78.23269], ["2020-05-14T15:20:31", 18.09484, -78.23853], ["2020-05-14T15:50:28", 18.09658, -78.24433], ["2020-05-14T16:20:28", 18.09851, -78.25], ["2020-05-14T16:50:28", 18.10053, -78.25548], ["2020-05-14T17:20:28", 18.10288, -78.26161], ["2020-05-14T17:50:28", 18.1052, -78.26703], ["2020-05-14T18:20:27", 18.10776, -78.27343], ["2020-05-14T18:50:27", 18.11094, -78.27979], ["2020-05-14T19:49:53", 18.11914, -78.29169], ["2020-05-14T20:19:53", 18.12352, -78.29675], ["2020-05-14T20:49:53", 18.1282, -78.30173], ["2020-05-14T21:19:10", 18.13328, -78.30606], ["2020-05-14T21:49:30", 18.13888, -78.31036], ["2020-05-14T22:19:01", 18.1447, -78.31426], ["2020-05-14T22:48:59", 18.15065, -78.3178], ["2020-05-14T23:18:59", 18.15619, -78.32115], ["2020-05-14T23:48:59", 18.16173, -78.32458], ["2020-05-15T00:18:23", 18.16671, -78.32778], ["2020-05-15T00:47:58", 18.17165, -78.3312], ["2020-05-15T01:17:58", 18.17611, -78.33386], ["2020-05-15T01:48:27", 18.18062, -78.3364], ["2020-05-15T02:17:19", 18.18475, -78.33851], ["2020-05-15T02:47:19", 18.18896, -78.34048], ["2020-05-15T03:17:19", 18.19308, -78.3428], ["2020-05-15T03:47:31", 18.19737, -78.34533], ["2020-05-15T04:16:40", 18.20182, -78.34799], ["2020-05-15T04:46:40", 18.2062, -78.35133], ["2020-05-15T05:16:40", 18.21006, -78.35442], ["2020-05-15T05:46:18", 18.2146, -78.35711], ["2020-05-15T06:16:18", 18.21782, -78.35995], ["2020-05-15T06:45:53", 18.22165, -78.36236], ["2020-05-15T07:15:53", 18.22453, -78.36554], ["2020-05-15T07:46:13", 18.22697, -78.36862]], "drifter_15": [["2019-08-04T10:48:00", 8.41891, -49.72757], ["2019-08-04T11:31:55", 8.4139, -49.72424], ["2019-08-04T12:31:55", 8.41102, -49.71986], ["2019-08-04T13:31:55", 8.40504, -49.71497], ["2019-08-04T14:30:58", 8.4006, -49.71158], ["2019-08-04T15:30:30", 8.39141, -49.70828], ["2019-08-04T16:28:13", 8.38095, -49.70744], ["2019-08-04T17:28:13", 8.36952, -49.70856], ["2019-08-04T18:28:13", 8.35244, -49.71088], ["2019-08-04T23:28:11", 8.26965, -49.72403], ["2019-08-05T06:25:57", 8.22322, -49.79285], ["2019-08-05T10:24:58", 8.20252, -49.82925], ["2019-08-05T14:22:48", 8.22486, -49.86731], ["2019-08-05T15:20:16", 8.23395, -49.88065], ["2019-08-05T16:22:12", 8.24478, -49.88995], ["2019-08-05T17:20:28", 8.25664, -49.89391], ["2019-08-05T18:20:28", 8.26703, -49.89786], ["2019-08-06T01:15:37", 8.30869, -49.89908], ["2019-08-06T11:12:29", 8.29137, -49.88055], ["2019-08-06T12:12:58", 8.28853, -49.87976], ["2019-08-06T16:11:21", 8.28738, -49.87912], ["2019-08-06T20:08:37", 8.29916, -49.87796], ["2019-08-06T22:06:27", 8.2993, -49.868], ["2019-08-06T23:08:30", 8.30017, -49.86301], ["2019-08-07T00:06:27", 8.30269, -49.85916], ["2019-08-07T02:08:30", 8.32307, -49.85114], ["2019-08-07T03:08:30", 8.33557, -49.84479], ["2019-08-07T07:04:10", 8.37073, -49.82834], ["2019-08-07T11:03:58", 8.38283, -49.81024], ["2019-08-07T12:02:46", 8.39476, -49.79674], ["2019-08-07T14:02:46", 8.39662, -49.79056], ["2019-08-07T21:58:31", 8.38378, -49.74283], ["2019-08-07T22:56:36", 8.37925, -49.73879], ["2019-08-07T23:56:36", 8.37332, -49.73467], ["2019-08-08T00:56:36", 8.36561, -49.73132], ["2019-08-08T01:56:43", 8.35826, -49.7243], ["2019-08-08T02:56:48", 8.35261, -49.71613], ["2019-08-08T03:56:58", 8.35333, -49.7074], ["2019-08-08T04:54:50", 8.35471, -49.69919], ["2019-08-08T05:54:41", 8.35455, -49.68997], ["2019-08-08T08:56:30", 8.33216, -49.67041], ["2019-08-09T00:48:02", 8.02722, -49.77008], ["2019-08-09T01:45:10", 8.01019, -49.7821], ["2019-08-09T02:47:18", 7.99202, -49.79568], ["2019-08-09T03:44:35", 7.97854, -49.80807], ["2019-08-09T09:44:27", 7.93758, -49.87051], ["2019-08-09T12:41:05", 7.92266, -49.89008], ["2019-08-09T14:39:58", 7.92097, -49.89697], ["2019-08-09T15:39:30", 7.9214, -49.89664], ["2019-08-09T16:39:30", 7.91994, -49.89389], ["2019-08-09T22:36:11", 7.94093, -49.8721], ["2019-08-09T23:37:23", 7.95239, -49.86639], ["2019-08-10T00:37:23", 7.9623, -49.85892], ["2019-08-10T01:37:23", 7.97002, -49.8475], ["2019-08-10T09:31:46", 8.00503, -49.7392], ["2019-08-10T13:29:29", 8.00845, -49.66248], ["2019-08-10T14:29:11", 8.01066, -49.64331], ["2019-08-10T15:28:04", 8.01038, -49.62375], ["2019-08-10T16:29:01", 8.00783, -49.60461], ["2019-08-10T19:26:58", 7.99985, -49.55984], ["2019-08-11T04:24:30", 7.93395, -49.4129], ["2019-08-11T05:22:06", 7.92516, -49.4014], ["2019-08-11T06:22:31", 7.9151, -49.3888], ["2019-08-11T07:22:31", 7.90532, -49.3779], ["2019-08-11T08:21:52", 7.89548, -49.3684], ["2019-08-11T09:21:52", 7.88458, -49.36136]], "drifter_16": [["2019-08-06T13:27:00", 10.46221, -53.67437], ["2019-08-06T13:50:21", 10.46457, -53.6765], ["2019-08-06T14:20:21", 10.46736, -53.6783], ["2019-08-06T14:50:21", 10.46822, -53.6795], ["2019-08-06T15:19:55", 10.4687, -53.67991], ["2019-08-06T15:49:55", 10.46896, -53.67914], ["2019-08-06T16:20:09", 10.46943, -53.67817], ["2019-08-06T16:50:09", 10.4702, -53.67731], ["2019-08-06T17:19:39", 10.47111, -53.67584], ["2019-08-06T19:49:26", 10.48257, -53.67159], ["2019-08-06T20:19:26", 10.48463, -53.67039], ["2019-08-06T20:49:26", 10.48596, -53.6673], ["2019-08-06T21:53:40", 10.48821, -53.66101], ["2019-08-06T23:18:26", 10.48869, -53.65338], ["2019-08-06T23:49:28", 10.48812, -53.65076], ["2019-08-07T00:18:10", 10.48681, -53.64828], ["2019-08-07T00:48:01", 10.4848, -53.64529], ["2019-08-07T01:18:01", 10.48326, -53.64246], ["2019-08-07T01:48:25", 10.48108, -53.63983], ["2019-08-07T02:17:53", 10.47914, -53.63754], ["2019-08-07T03:47:58", 10.47211, -53.63065], ["2019-08-07T04:17:58", 10.46936, -53.6285], ["2019-08-07T04:47:58", 10.46631, -53.6261], ["2019-08-07T05:17:14", 10.46332, -53.62433], ["2019-08-07T06:47:26", 10.45314, -53.62289], ["2019-08-07T07:16:56", 10.44986, -53.62198], ["2019-08-07T07:46:56", 10.44681, -53.62112], ["2019-08-07T09:16:16", 10.44114, -53.61658], ["2019-08-07T09:45:47", 10.43934, -53.61492], ["2019-08-07T10:16:28", 10.43804, -53.61353], ["2019-08-07T10:45:47", 10.43621, -53.61157], ["2019-08-07T11:15:28", 10.4338, -53.60968], ["2019-08-07T11:45:28", 10.43195, -53.60779], ["2019-08-07T12:45:20", 10.42931, -53.60507], ["2019-08-07T13:47:26", 10.42769, -53.60266], ["2019-08-07T14:17:26", 10.42662, -53.60223], ["2019-08-07T14:47:26", 10.42615, -53.60172], ["2019-08-07T15:16:45", 10.42566, -53.60147], ["2019-08-07T15:44:50", 10.42501, -53.60071], ["2019-08-07T19:13:42", 10.41794, -53.5962], ["2019-08-07T19:43:42", 10.41609, -53.59543], ["2019-08-07T20:13:42", 10.41429, -53.59543], ["2019-08-07T20:43:13", 10.41211, -53.59552], ["2019-08-07T21:13:13", 10.41057, -53.59561], ["2019-08-07T21:24:27", 10.40956, -53.59567], ["2019-08-07T21:54:27", 10.40935, -53.59576], ["2019-08-07T22:12:54", 10.40887, -53.59601], ["2019-08-07T22:43:03", 10.40813, -53.59572], ["2019-08-07T23:13:03", 10.40731, -53.59529], ["2019-08-07T23:43:03", 10.40632, -53.59512], ["2019-08-08T00:12:39", 10.40542, -53.59525], ["2019-08-08T00:43:29", 10.40516, -53.59698], ["2019-08-08T01:43:13", 10.40486, -53.60437], ["2019-08-08T02:11:45", 10.40476, -53.60883], ["2019-08-08T02:41:45", 10.40467, -53.61372], ["2019-08-08T03:11:45", 10.40467, -53.6181], ["2019-08-08T03:43:00", 10.40447, -53.62198], ["2019-08-08T04:11:19", 10.40347, -53.6254], ["2019-08-08T04:41:56", 10.40214, -53.62906], ["2019-08-08T05:10:43", 10.40047, -53.63223], ["2019-08-08T05:40:43", 10.39884, -53.63532], ["2019-08-08T06:10:43", 10.39742, -53.63867], ["2019-08-08T06:42:04", 10.39535, -53.642], ["2019-08-08T07:10:34", 10.39313, -53.64499], ["2019-08-08T07:40:59", 10.39085, -53.64825], ["2019-08-08T08:10:34", 10.38835, -53.6517], ["2019-08-08T08:40:55", 10.3861, -53.6561], ["2019-08-08T09:10:58", 10.38385, -53.66008], ["2019-08-08T09:40:58", 10.38106, -53.66351], ["2019-08-08T10:10:26", 10.37841, -53.6673], ["2019-08-08T10:41:28", 10.3755, -53.67112], ["2019-08-08T11:11:28", 10.37301, -53.67498], ["2019-08-08T11:41:28", 10.37091, -53.67996], ["2019-08-08T12:10:08", 10.36884, -53.68524], ["2019-08-08T13:09:44", 10.36349, -53.69757], ["2019-08-08T15:09:09", 10.35719, -53.72028], ["2019-08-08T15:39:09", 10.35582, -53.725], ["2019-08-08T16:09:09", 10.35462, -53.72946], ["2019-08-08T17:08:42", 10.35119, -53.73721], ["2019-08-08T17:40:22", 10.34878, -53.74045], ["2019-08-08T18:10:22", 10.34689, -53.74594], ["2019-08-08T18:38:59", 10.34552, -53.75031], ["2019-08-08T19:08:59", 10.3429, -53.75537], ["2019-08-08T19:38:59", 10.3405, -53.76129], ["2019-08-08T20:54:25", 10.33228, -53.7823], ["2019-08-08T21:24:25", 10.33155, -53.78402], ["2019-08-08T21:54:25", 10.33104, -53.78522], ["2019-08-08T22:07:27", 10.33012, -53.78781], ["2019-08-09T01:37:28", 10.31692, -53.82768], ["2019-08-09T02:06:31", 10.31553, -53.83395], ["2019-08-09T02:37:28", 10.31378, -53.84073], ["2019-08-09T03:06:25", 10.31197, -53.84705], ["2019-08-09T04:35:59", 10.30854, -53.86823], ["2019-08-09T05:05:54", 10.30822, -53.87679], ["2019-08-09T05:35:54", 10.30788, -53.88443], ["2019-08-09T06:06:57", 10.30803, -53.8924], ["2019-08-09T07:05:59", 10.30941, -53.90658], ["2019-08-09T07:35:36", 10.31037, -53.9126], ["2019-08-09T08:05:59", 10.3116, -53.91876], ["2019-08-09T09:06:27", 10.31526, -53.93076], ["2019-08-09T09:34:53", 10.3178, -53.93683], ["2019-08-09T10:04:38", 10.32078, -53.944], ["2019-08-09T10:34:38", 10.32271, -53.94949], ["2019-08-09T15:05:00", 10.33185, -53.99768], ["2019-08-09T17:02:50", 10.33805, -54.0223], ["2019-08-09T17:32:50", 10.3408, -54.02899], ["2019-08-09T18:02:50", 10.34325, -54.03534], ["2019-08-09T18:33:59", 10.34596, -54.04211], ["2019-08-09T19:02:51", 10.34823, -54.04794], ["2019-08-09T19:34:30", 10.35074, -54.0542], ["2019-08-09T20:02:24", 10.35377, -54.05951], ["2019-08-10T01:01:40", 10.38493, -54.08725], ["2019-08-10T01:32:04", 10.38531, -54.0887], ["2019-08-10T02:01:36", 10.38542, -54.09024], ["2019-08-10T02:32:04", 10.38536, -54.09161], ["2019-08-10T03:31:30", 10.38508, -54.09528], ["2019-08-10T04:01:08", 10.38516, -54.09686], ["2019-08-10T04:31:30", 10.3856, -54.0994], ["2019-08-10T05:00:42", 10.38586, -54.10161], ["2019-08-10T05:31:31", 10.38644, -54.10428], ["2019-08-10T06:00:42", 10.38762, -54.10684], ["2019-08-10T07:30:56", 10.39299, -54.11506], ["2019-08-10T08:00:56", 10.39492, -54.11721], ["2019-08-10T08:30:56", 10.39646, -54.11841], ["2019-08-10T09:00:57", 10.39791, -54.1195], ["2019-08-10T09:30:57", 10.39924, -54.12122], ["2019-08-10T10:59:37", 10.40363, -54.12506], ["2019-08-10T12:29:58", 10.40657, -54.12632], ["2019-08-10T12:59:36", 10.40673, -54.12717], ["2019-08-10T13:29:58", 10.40678, -54.12778], ["2019-08-10T18:28:28", 10.41045, -54.1575], ["2019-08-10T19:28:43", 10.40969, -54.16333], ["2019-08-10T20:56:57", 10.40819, -54.16989], ["2019-08-10T21:26:59", 10.40876, -54.16864], ["2019-08-10T21:56:57", 10.4081, -54.17032], ["2019-08-10T22:27:07", 10.40742, -54.1723], ["2019-08-10T22:57:43", 10.40667, -54.17432], ["2019-08-10T23:26:32", 10.4053, -54.17627], ["2019-08-11T02:26:59", 10.39758, -54.19868], ["2019-08-11T02:56:59", 10.39509, -54.20289], ["2019-08-11T03:26:59", 10.39221, -54.2077], ["2019-08-11T03:55:27", 10.38914, -54.21243], ["2019-08-11T04:26:27", 10.38609, -54.21808], ["2019-08-11T08:56:56", 10.38446, -54.26331], ["2019-08-11T09:24:07", 10.38586, -54.2677], ["2019-08-11T09:54:56", 10.38669, -54.27247], ["2019-08-11T10:24:56", 10.38755, -54.27719], ["2019-08-11T10:54:55", 10.3888, -54.28239], ["2019-08-11T11:24:55", 10.39082, -54.28754], ["2019-08-11T11:56:13", 10.39171, -54.29246], ["2019-08-11T12:26:13", 10.3921, -54.2977], ["2019-08-11T12:54:35", 10.39235, -54.30307], ["2019-08-11T15:23:04", 10.39462, -54.33249], ["2019-08-11T15:54:23", 10.39572, -54.33862], ["2019-08-11T16:22:53", 10.39667, -54.34409], ["2019-08-11T17:25:04", 10.3975, -54.35468], ["2019-08-11T17:53:00", 10.3978, -54.3591], ["2019-08-11T19:22:01", 10.39837, -54.37434], ["2019-08-11T19:53:27", 10.39911, -54.37982], ["2019-08-11T20:22:01", 10.40034, -54.38507], ["2019-08-11T20:51:51", 10.40188, -54.39088], ["2019-08-11T21:21:51", 10.40347, -54.39603], ["2019-08-11T23:23:10", 10.41051, -54.41583], ["2019-08-12T00:22:58", 10.41277, -54.42532], ["2019-08-12T00:51:15", 10.41346, -54.42932], ["2019-08-12T01:22:58", 10.41337, -54.43338], ["2019-08-12T02:51:30", 10.41258, -54.44525], ["2019-08-12T03:21:30", 10.41142, -54.44868], ["2019-08-12T03:51:30", 10.40975, -54.45203], ["2019-08-12T04:21:30", 10.40847, -54.45603], ["2019-08-12T04:51:30", 10.40753, -54.46066], ["2019-08-12T05:50:57", 10.40579, -54.47083], ["2019-08-12T06:20:57", 10.40583, -54.47529], ["2019-08-12T06:50:57", 10.40579, -54.47992], ["2019-08-12T07:19:37", 10.40566, -54.4841], ["2019-08-12T07:50:26", 10.40607, -54.48877], ["2019-08-12T08:51:26", 10.40781, -54.49902], ["2019-08-12T11:18:33", 10.40596, -54.52649], ["2019-08-12T11:49:32", 10.4058, -54.5325], ["2019-08-12T12:18:33", 10.40558, -54.5379], ["2019-08-12T13:48:20", 10.40609, -54.55618], ["2019-08-12T14:18:47", 10.40602, -54.56293], ["2019-08-12T14:48:20", 10.40596, -54.56931], ["2019-08-12T18:47:33", 10.41057, -54.61893], ["2019-08-12T19:19:28", 10.41169, -54.62485], ["2019-08-12T19:47:20", 10.41325, -54.63037], ["2019-08-12T20:17:42", 10.41457, -54.63726], ["2019-08-12T20:47:42", 10.41564, -54.64481], ["2019-08-12T21:17:11", 10.41714, -54.65186], ["2019-08-12T21:46:56", 10.41923, -54.66124], ["2019-08-12T22:16:56", 10.42026, -54.66742], ["2019-08-12T22:46:56", 10.42211, -54.67566], ["2019-08-12T23:17:37", 10.42456, -54.68481], ["2019-08-12T23:46:17", 10.42745, -54.69316], ["2019-08-13T00:17:10", 10.4303, -54.70056], ["2019-08-13T00:46:17", 10.4329, -54.70767], ["2019-08-13T01:15:52", 10.4353, -54.71515], ["2019-08-13T01:45:52", 10.43732, -54.72167], ["2019-08-13T02:15:52", 10.43951, -54.72794], ["2019-08-13T03:48:06", 10.44712, -54.74405], ["2019-08-13T07:16:25", 10.46543, -54.77429], ["2019-08-13T07:44:45", 10.46774, -54.77808], ["2019-08-13T08:44:10", 10.4713, -54.78609], ["2019-08-13T09:14:10", 10.47254, -54.79098], ["2019-08-13T09:44:10", 10.4734, -54.79587], ["2019-08-13T10:43:40", 10.47716, -54.80808], ["2019-08-13T11:14:57", 10.47917, -54.81342], ["2019-08-13T11:43:40", 10.4815, -54.81924], ["2019-08-13T12:13:34", 10.48349, -54.82471], ["2019-08-13T12:43:34", 10.48525, -54.82986], ["2019-08-13T14:44:31", 10.49446, -54.85139], ["2019-08-13T15:14:31", 10.49703, -54.85517], ["2019-08-13T15:44:31", 10.50008, -54.85852], ["2019-08-13T16:12:49", 10.50323, -54.86081], ["2019-08-13T16:43:13", 10.50749, -54.86303], ["2019-08-13T17:13:13", 10.51109, -54.86475], ["2019-08-13T17:43:13", 10.51534, -54.86664], ["2019-08-13T18:12:09", 10.52012, -54.86847], ["2019-08-13T18:41:55", 10.52518, -54.87121], ["2019-08-13T19:11:55", 10.53076, -54.87439], ["2019-08-13T19:43:26", 10.53674, -54.8779], ["2019-08-13T20:11:32", 10.5419, -54.87967], ["2019-08-13T20:42:31", 10.54778, -54.88187], ["2019-08-13T21:11:03", 10.55587, -54.88757], ["2019-08-13T21:41:03", 10.55634, -54.88808], ["2019-08-13T22:11:03", 10.55784, -54.88962], ["2019-08-13T22:41:07", 10.5602, -54.892], ["2019-08-13T23:11:30", 10.56212, -54.8948], ["2019-08-13T23:41:30", 10.56444, -54.89652], ["2019-08-14T00:11:30", 10.56611, -54.89832], ["2019-08-14T00:40:40", 10.56857, -54.90045], ["2019-08-14T01:11:29", 10.57229, -54.90366], ["2019-08-14T01:40:40", 10.57578, -54.90646], ["2019-08-14T02:11:26", 10.57904, -54.90854], ["2019-08-14T02:40:27", 10.5821, -54.91025], ["2019-08-14T03:10:27", 10.58579, -54.91179], ["2019-08-14T03:40:27", 10.58978, -54.91333], ["2019-08-14T05:09:39", 10.60183, -54.91506], ["2019-08-14T05:40:58", 10.60613, -54.91412], ["2019-08-14T06:09:39", 10.60989, -54.91232], ["2019-08-14T08:08:52", 10.62261, -54.90889], ["2019-08-14T08:38:52", 10.62476, -54.90923], ["2019-08-14T09:08:52", 10.62635, -54.91], ["2019-08-14T09:38:44", 10.62655, -54.91122], ["2019-08-14T10:08:39", 10.62617, -54.91293], ["2019-08-14T10:38:39", 10.62505, -54.91473], ["2019-08-14T12:08:59", 10.62179, -54.92313], ["2019-08-14T12:38:59", 10.62029, -54.92639], ["2019-08-14T13:08:59", 10.61913, -54.93008], ["2019-08-14T13:38:23", 10.61769, -54.93427], ["2019-08-14T14:08:27", 10.61575, -54.93869], ["2019-08-14T15:37:59", 10.61375, -54.95047], ["2019-08-14T16:08:58", 10.61341, -54.95419], ["2019-08-14T16:37:42", 10.61389, -54.95703], ["2019-08-14T17:08:58", 10.61538, -54.95908], ["2019-08-14T17:38:41", 10.61763, -54.96114], ["2019-08-14T18:08:41", 10.6202, -54.96432], ["2019-08-14T18:37:36", 10.62226, -54.96805], ["2019-08-14T19:37:16", 10.6268, -54.97534], ["2019-08-14T20:08:29", 10.6286, -54.97858], ["2019-08-14T20:37:04", 10.63024, -54.98102], ["2019-08-14T21:07:58", 10.63039, -54.98389], ["2019-08-14T21:36:40", 10.63006, -54.98685], ["2019-08-14T22:08:29", 10.62903, -54.99014], ["2019-08-14T23:06:23", 10.62595, -54.99695], ["2019-08-14T23:36:08", 10.62351, -55.00068], ["2019-08-15T00:06:08", 10.62188, -55.00351], ["2019-08-15T00:35:57", 10.62001, -55.0075], ["2019-08-15T01:05:57", 10.61911, -55.01093], ["2019-08-15T01:36:59", 10.61865, -55.01453], ["2019-08-15T05:06:27", 10.62039, -55.0434], ["2019-08-15T09:06:12", 10.61161, -55.08423], ["2019-08-15T09:34:38", 10.6088, -55.0899], ["2019-08-15T10:06:28", 10.60494, -55.09622], ["2019-08-15T14:06:36", 10.57672, -55.15604], ["2019-08-15T16:35:06", 10.5723, -55.20007], ["2019-08-15T17:05:06", 10.5723, -55.20848], ["2019-08-15T17:35:06", 10.57204, -55.21698], ["2019-08-15T18:03:02", 10.57134, -55.22424], ["2019-08-15T18:32:52", 10.57006, -55.23244], ["2019-08-15T19:02:52", 10.5683, -55.24128], ["2019-08-15T19:32:52", 10.56671, -55.24875], ["2019-08-15T20:02:30", 10.56547, -55.25727], ["2019-08-15T20:32:30", 10.56448, -55.26491], ["2019-08-15T21:02:30", 10.56349, -55.27341], ["2019-08-15T21:33:30", 10.56213, -55.2822], ["2019-08-15T22:35:00", 10.56178, -55.29903], ["2019-08-15T23:05:00", 10.56169, -55.3071], ["2019-08-15T23:35:00", 10.56169, -55.31714], ["2019-08-16T00:03:26", 10.56166, -55.32598], ["2019-08-16T00:33:26", 10.56235, -55.33542], ["2019-08-16T01:03:26", 10.56364, -55.34546], ["2019-08-16T01:31:29", 10.56501, -55.35459], ["2019-08-16T02:01:29", 10.5666, -55.36489], ["2019-08-16T02:31:29", 10.56853, -55.37442], ["2019-08-16T03:02:27", 10.57186, -55.38406], ["2019-08-16T03:31:22", 10.575, -55.3924], ["2019-08-16T04:01:05", 10.57876, -55.40088], ["2019-08-16T04:31:05", 10.58314, -55.40878], ["2019-08-16T07:01:59", 10.60247, -55.44177], ["2019-08-16T08:30:06", 10.60927, -55.461], ["2019-08-16T09:00:06", 10.61171, -55.46918], ["2019-08-16T09:30:06", 10.6139, -55.47708], ["2019-08-16T09:59:48", 10.61656, -55.48658], ["2019-08-16T10:29:48", 10.61944, -55.49551], ["2019-08-16T11:59:20", 10.63026, -55.52335], ["2019-08-16T12:29:08", 10.63593, -55.53251], ["2019-08-16T12:59:08", 10.64194, -55.53998], ["2019-08-16T16:58:03", 10.7007, -55.58685], ["2019-08-16T17:59:49", 10.71784, -55.59272], ["2019-08-16T18:27:57", 10.72629, -55.59451], ["2019-08-16T18:59:49", 10.73552, -55.59598], ["2019-08-16T19:27:40", 10.74201, -55.59692], ["2019-08-16T20:54:02", 10.76589, -55.59931], ["2019-08-16T21:24:02", 10.76932, -55.59965], ["2019-08-16T21:54:02", 10.77031, -55.59982], ["2019-08-16T21:57:06", 10.7709, -55.59991], ["2019-08-16T22:56:51", 10.78282, -55.603], ["2019-08-17T00:26:59", 10.79791, -55.60469], ["2019-08-17T00:56:59", 10.80237, -55.60435], ["2019-08-17T01:26:59", 10.80606, -55.60358], ["2019-08-17T01:57:27", 10.8088, -55.60187], ["2019-08-17T02:27:27", 10.8112, -55.5993], ["2019-08-17T02:56:10", 10.81291, -55.59692], ["2019-08-17T03:27:25", 10.81448, -55.59412], ["2019-08-17T03:56:07", 10.81577, -55.59164], ["2019-08-17T04:55:52", 10.81738, -55.58644], ["2019-08-17T05:25:52", 10.81811, -55.58292], ["2019-08-17T05:55:52", 10.8188, -55.57932], ["2019-08-17T06:25:49", 10.82025, -55.57526], ["2019-08-17T07:25:32", 10.82474, -55.5672], ["2019-08-17T07:55:28", 10.82746, -55.56362], ["2019-08-17T08:25:28", 10.82896, -55.56002], ["2019-08-17T08:55:28", 10.82986, -55.55719], ["2019-08-17T09:24:53", 10.83052, -55.55499], ["2019-08-17T09:55:26", 10.83067, -55.55322], ["2019-08-17T11:24:06", 10.8264, -55.55037], ["2019-08-17T11:54:06", 10.82421, -55.54977], ["2019-08-17T12:24:06", 10.82258, -55.54977], ["2019-08-17T12:53:53", 10.82024, -55.54939], ["2019-08-17T13:23:53", 10.81711, -55.54922], ["2019-08-17T14:23:35", 10.81045, -55.54753], ["2019-08-17T14:53:35", 10.8062, -55.5465], ["2019-08-17T15:23:35", 10.80195, -55.54547], ["2019-08-17T15:53:21", 10.79755, -55.54464], ["2019-08-17T16:23:21", 10.79463, -55.54395], ["2019-08-17T16:53:12", 10.79164, -55.54321], ["2019-08-17T17:22:58", 10.78919, -55.54285], ["2019-08-17T17:52:58", 10.78614, -55.54285], ["2019-08-17T18:23:09", 10.78296, -55.54272], ["2019-08-17T18:52:46", 10.78026, -55.54279], ["2019-08-17T19:23:09", 10.77788, -55.54352], ["2019-08-17T19:52:37", 10.77531, -55.54474], ["2019-08-17T20:23:09", 10.77221, -55.54663], ["2019-08-17T20:52:27", 10.76805, -55.54834], ["2019-08-17T21:22:58", 10.76024, -55.55223], ["2019-08-17T21:52:58", 10.76007, -55.55232], ["2019-08-17T22:22:58", 10.75608, -55.55481], ["2019-08-17T22:52:09", 10.75203, -55.55774], ["2019-08-17T23:51:50", 10.74281, -55.56476], ["2019-08-18T00:21:34", 10.73783, -55.5683], ["2019-08-18T00:51:34", 10.73289, -55.57242], ["2019-08-18T01:21:56", 10.72775, -55.57721], ["2019-08-18T01:51:26", 10.72321, -55.58192], ["2019-08-18T02:21:26", 10.71879, -55.58673], ["2019-08-18T02:50:53", 10.71422, -55.59079], ["2019-08-18T03:21:09", 10.7097, -55.5954], ["2019-08-18T03:50:22", 10.7063, -55.5995], ["2019-08-18T04:20:22", 10.70342, -55.60285], ["2019-08-18T04:50:22", 10.70037, -55.60654], ["2019-08-18T05:19:58", 10.69639, -55.61065], ["2019-08-18T05:49:58", 10.69261, -55.61417], ["2019-08-18T06:19:37", 10.68864, -55.618], ["2019-08-18T06:49:37", 10.68499, -55.62186], ["2019-08-18T07:20:57", 10.68053, -55.62555], ["2019-08-18T07:49:15", 10.6762, -55.62894], ["2019-08-18T08:19:55", 10.67046, -55.63245], ["2019-08-18T09:48:35", 10.6516, -55.64505], ["2019-08-18T10:48:25", 10.63989, -55.65784], ["2019-08-18T12:19:05", 10.62572, -55.68273], ["2019-08-18T12:49:05", 10.62156, -55.69123], ["2019-08-18T13:19:05", 10.61787, -55.7005], ["2019-08-18T13:47:59", 10.6144, -55.70917], ["2019-08-18T14:18:27", 10.61142, -55.71741], ["2019-08-18T14:47:40", 10.60846, -55.72522], ["2019-08-18T16:18:27", 10.60231, -55.75128], ["2019-08-18T16:48:27", 10.60055, -55.75943], ["2019-08-18T17:18:27", 10.59901, -55.76733], ["2019-08-18T17:47:18", 10.59775, -55.77518], ["2019-08-18T21:46:43", 10.63176, -55.83826], ["2019-08-18T22:46:30", 10.6443, -55.85248], ["2019-08-19T01:45:51", 10.67791, -55.89276], ["2019-08-19T02:15:37", 10.68294, -55.89914], ["2019-08-19T02:45:37", 10.68788, -55.90506], ["2019-08-19T03:45:20", 10.69724, -55.91617], ["2019-08-19T04:14:54", 10.70276, -55.92087], ["2019-08-19T04:44:54", 10.70782, -55.9249], ["2019-08-19T05:16:06", 10.71442, -55.92941], ["2019-08-19T05:44:36", 10.7212, -55.93372], ["2019-08-19T06:44:13", 10.73865, -55.94132], ["2019-08-19T07:14:13", 10.74822, -55.94441], ["2019-08-19T07:44:13", 10.7571, -55.94647], ["2019-08-19T09:14:58", 10.78207, -55.94595], ["2019-08-19T09:43:57", 10.78952, -55.94462], ["2019-08-19T10:13:57", 10.79664, -55.94342], ["2019-08-19T11:42:33", 10.81641, -55.93584], ["2019-08-19T12:12:33", 10.82126, -55.93258], ["2019-08-19T12:42:33", 10.82491, -55.92923], ["2019-08-19T13:12:57", 10.8288, -55.92566], ["2019-08-19T13:42:59", 10.83189, -55.92248], ["2019-08-19T14:12:59", 10.83395, -55.91965], ["2019-08-19T14:42:03", 10.8354, -55.91737], ["2019-08-19T15:12:59", 10.83607, -55.9151], ["2019-08-19T15:42:03", 10.83691, -55.91299], ["2019-08-19T16:12:28", 10.8378, -55.91055], ["2019-08-19T16:41:50", 10.83886, -55.90793], ["2019-08-19T17:12:06", 10.83945, -55.90454], ["2019-08-19T17:41:40", 10.83963, -55.90125], ["2019-08-19T18:11:56", 10.83925, -55.89804], ["2019-08-19T18:41:04", 10.83929, -55.89498], ["2019-08-19T19:11:04", 10.83993, -55.89266], ["2019-08-19T19:41:04", 10.84057, -55.89026], ["2019-08-19T20:11:24", 10.84095, -55.88757], ["2019-08-19T20:40:43", 10.84108, -55.88513], ["2019-08-19T20:54:12", 10.84113, -55.87964], ["2019-08-19T21:24:12", 10.84113, -55.87887], ["2019-08-19T21:54:12", 10.84117, -55.87827], ["2019-08-19T22:10:55", 10.84098, -55.87662], ["2019-08-19T22:40:24", 10.84044, -55.87317], ["2019-08-19T23:10:24", 10.83911, -55.86957], ["2019-08-19T23:39:59", 10.83612, -55.86646], ["2019-08-20T00:10:25", 10.83184, -55.86307], ["2019-08-20T00:39:44", 10.82705, -55.85992], ["2019-08-20T01:09:55", 10.82175, -55.85624], ["2019-08-20T01:39:55", 10.81596, -55.85203], ["2019-08-20T02:09:55", 10.80957, -55.84808], ["2019-08-20T02:39:15", 10.80343, -55.84433], ["2019-08-20T03:09:27", 10.79655, -55.84055], ["2019-08-20T03:39:04", 10.78986, -55.83736], ["2019-08-20T04:09:04", 10.78334, -55.83436], ["2019-08-20T04:39:04", 10.77669, -55.8317], ["2019-08-20T05:39:05", 10.76361, -55.82611], ["2019-08-20T06:08:56", 10.75579, -55.82402], ["2019-08-20T06:38:56", 10.74888, -55.8223], ["2019-08-20T07:09:08", 10.74215, -55.82077], ["2019-08-20T07:38:36", 10.73579, -55.8197], ["2019-08-20T08:08:55", 10.72977, -55.81857], ["2019-08-20T08:38:25", 10.72368, -55.8175], ["2019-08-20T09:08:36", 10.71726, -55.81643], ["2019-08-20T09:38:36", 10.71104, -55.81557], ["2019-08-20T10:08:36", 10.70413, -55.81488], ["2019-08-20T10:38:05", 10.69681, -55.81384], ["2019-08-20T11:07:59", 10.68975, -55.81316], ["2019-08-20T11:37:59", 10.68271, -55.8129], ["2019-08-20T12:08:27", 10.67552, -55.81311], ["2019-08-20T12:37:36", 10.66915, -55.8138], ["2019-08-20T12:37:49", 10.66917, -55.81375], ["2019-08-20T13:07:36", 10.66293, -55.81534], ["2019-08-20T13:37:36", 10.65709, -55.81723], ["2019-08-20T14:07:57", 10.65159, -55.82031], ["2019-08-20T14:37:26", 10.64618, -55.82373], ["2019-08-20T15:07:56", 10.64084, -55.82721], ["2019-08-20T15:36:58", 10.63597, -55.83081], ["2019-08-20T16:07:06", 10.63148, -55.8345], ["2019-08-20T16:36:31", 10.62752, -55.83801], ["2019-08-20T17:06:54", 10.62313, -55.84161], ["2019-08-20T17:36:14", 10.61881, -55.84528], ["2019-08-20T18:06:24", 10.61428, -55.84991], ["2019-08-20T18:36:26", 10.6098, -55.85455], ["2019-08-20T19:06:26", 10.60534, -55.85953], ["2019-08-20T19:35:45", 10.60095, -55.86414], ["2019-08-20T20:05:56", 10.59661, -55.86932], ["2019-08-20T20:35:34", 10.59241, -55.87424], ["2019-08-20T21:05:27", 10.58736, -55.88019], ["2019-08-20T21:35:27", 10.58273, -55.8862], ["2019-08-20T21:53:41", 10.57991, -55.89023], ["2019-08-20T22:05:26", 10.57784, -55.89316], ["2019-08-20T22:35:26", 10.57299, -55.8996], ["2019-08-20T23:05:58", 10.56816, -55.90692], ["2019-08-20T23:35:07", 10.564, -55.91412], ["2019-08-21T00:05:27", 10.56028, -55.92197], ["2019-08-21T00:35:35", 10.55694, -55.92953], ["2019-08-21T01:05:35", 10.55355, -55.93674], ["2019-08-21T02:04:56", 10.5459, -55.95117], ["2019-08-21T02:34:31", 10.54156, -55.95862], ["2019-08-21T03:05:27", 10.53736, -55.96628], ["2019-08-21T03:34:29", 10.53438, -55.97349], ["2019-08-21T04:04:29", 10.53138, -55.98096], ["2019-08-21T04:34:07", 10.5288, -55.98883], ["2019-08-21T05:05:28", 10.52685, -55.99773], ["2019-08-21T05:35:28", 10.52578, -56.0064], ["2019-08-21T06:05:28", 10.52449, -56.01541], ["2019-08-21T06:33:46", 10.52317, -56.02338], ["2019-08-21T07:03:46", 10.52205, -56.03188], ["2019-08-21T07:33:46", 10.52132, -56.03995], ["2019-08-21T08:04:28", 10.51986, -56.04855], ["2019-08-21T08:34:26", 10.51823, -56.05692], ["2019-08-21T09:04:26", 10.51703, -56.06662], ["2019-08-21T09:33:19", 10.51564, -56.07629], ["2019-08-21T10:03:55", 10.51485, -56.08633], ["2019-08-21T10:32:59", 10.51517, -56.09555], ["2019-08-21T11:04:27", 10.51634, -56.10611], ["2019-08-21T15:02:28", 10.52855, -56.17377], ["2019-08-21T15:31:18", 10.53184, -56.18214], ["2019-08-21T16:02:26", 10.53595, -56.19028], ["2019-08-21T16:31:18", 10.54047, -56.19836], ["2019-08-21T17:01:28", 10.54593, -56.20682], ["2019-08-21T17:30:55", 10.55091, -56.21518], ["2019-08-21T18:00:48", 10.55659, -56.22341], ["2019-08-21T18:30:48", 10.56243, -56.23096], ["2019-08-21T19:01:03", 10.56849, -56.23843], ["2019-08-21T19:30:15", 10.57477, -56.24612], ["2019-08-21T20:00:26", 10.58194, -56.25378], ["2019-08-21T21:29:51", 10.60379, -56.27621], ["2019-08-21T21:54:26", 10.60891, -56.28131], ["2019-08-21T22:01:56", 10.61015, -56.28263], ["2019-08-21T22:29:37", 10.61628, -56.28864], ["2019-08-21T23:01:56", 10.62324, -56.29584], ["2019-08-21T23:29:22", 10.62926, -56.30084], ["2019-08-22T01:29:27", 10.65359, -56.32235], ["2019-08-22T01:58:56", 10.65903, -56.32684], ["2019-08-22T02:29:27", 10.66483, -56.33145], ["2019-08-22T03:29:29", 10.67623, -56.33935], ["2019-08-22T03:59:29", 10.68099, -56.34313], ["2019-08-22T04:29:29", 10.68657, -56.34708], ["2019-08-22T05:29:45", 10.69829, -56.35468], ["2019-08-22T05:58:24", 10.70364, -56.35818], ["2019-08-22T06:28:59", 10.7094, -56.36182], ["2019-08-22T06:57:41", 10.71547, -56.36455], ["2019-08-22T07:28:28", 10.72152, -56.36685], ["2019-08-22T07:57:41", 10.72783, -56.36859], ["2019-08-22T08:29:28", 10.73378, -56.37073], ["2019-08-22T08:57:32", 10.73946, -56.37256], ["2019-08-22T09:29:28", 10.74494, -56.37485], ["2019-08-22T10:57:27", 10.75781, -56.37992], ["2019-08-22T11:27:27", 10.76236, -56.38164], ["2019-08-22T11:57:27", 10.76772, -56.38361], ["2019-08-22T12:57:56", 10.77781, -56.38614], ["2019-08-22T13:26:48", 10.78216, -56.38651], ["2019-08-22T13:57:56", 10.78652, -56.38708], ["2019-08-22T14:26:42", 10.79053, -56.38724], ["2019-08-22T14:57:08", 10.79584, -56.38705], ["2019-08-22T15:27:30", 10.80131, -56.38668], ["2019-08-22T15:57:30", 10.80689, -56.38599], ["2019-08-22T16:27:26", 10.8119, -56.38534], ["2019-08-22T16:57:26", 10.81709, -56.3844], ["2019-08-22T17:26:42", 10.82121, -56.38297], ["2019-08-22T17:56:42", 10.82481, -56.38168], ["2019-08-22T18:56:57", 10.82998, -56.37778], ["2019-08-22T19:25:33", 10.83139, -56.37601], ["2019-08-22T19:57:29", 10.83239, -56.37463], ["2019-08-22T20:25:33", 10.83306, -56.37421], ["2019-08-22T20:54:27", 10.83353, -56.3739], ["2019-08-22T21:24:27", 10.83404, -56.37399], ["2019-08-22T21:54:27", 10.83413, -56.37399], ["2019-08-22T22:26:27", 10.83381, -56.37393], ["2019-08-22T22:55:03", 10.83285, -56.37411], ["2019-08-22T23:24:42", 10.83175, -56.37437], ["2019-08-22T23:54:42", 10.83089, -56.37488], ["2019-08-23T00:25:14", 10.82994, -56.37543], ["2019-08-23T00:54:25", 10.82887, -56.37613], ["2019-08-23T01:25:26", 10.82704, -56.37695], ["2019-08-23T03:53:28", 10.81558, -56.37909], ["2019-08-23T04:23:03", 10.81246, -56.37927], ["2019-08-23T04:53:03", 10.80834, -56.3797], ["2019-08-23T05:23:59", 10.80323, -56.37989], ["2019-08-23T05:53:59", 10.79782, -56.37998], ["2019-08-23T06:23:59", 10.79216, -56.38058], ["2019-08-23T07:51:39", 10.77676, -56.38306], ["2019-08-23T08:21:39", 10.77238, -56.3846], ["2019-08-23T08:51:39", 10.76873, -56.38657], ["2019-08-23T09:21:58", 10.76566, -56.3887], ["2019-08-23T10:21:28", 10.76066, -56.39466], ["2019-08-23T10:51:28", 10.75843, -56.39775], ["2019-08-23T11:21:28", 10.7562, -56.40161], ["2019-08-23T11:51:29", 10.75318, -56.40517], ["2019-08-23T12:21:29", 10.74953, -56.40912], ["2019-08-23T12:51:01", 10.74559, -56.41299], ["2019-08-23T13:21:29", 10.74197, -56.41678], ["2019-08-23T15:20:23", 10.72614, -56.43294], ["2019-08-23T15:50:23", 10.72151, -56.43757], ["2019-08-23T16:20:23", 10.71743, -56.44238], ["2019-08-23T16:50:20", 10.7138, -56.44835], ["2019-08-23T17:20:20", 10.71105, -56.45401], ["2019-08-23T17:50:08", 10.70738, -56.46023], ["2019-08-23T18:20:08", 10.70403, -56.46564], ["2019-08-23T18:49:57", 10.70146, -56.4717], ["2019-08-23T19:19:57", 10.69953, -56.47745], ["2019-08-23T19:49:57", 10.69799, -56.48303], ["2019-08-23T20:19:11", 10.69638, -56.48839], ["2019-08-23T20:49:11", 10.69488, -56.49431], ["2019-08-23T21:19:11", 10.69351, -56.50049], ["2019-08-23T21:48:58", 10.69153, -56.50762], ["2019-08-23T22:18:58", 10.69003, -56.51294], ["2019-08-23T22:48:39", 10.68861, -56.51932], ["2019-08-23T23:18:39", 10.68689, -56.52533], ["2019-08-23T23:48:57", 10.68527, -56.53207], ["2019-08-24T00:18:34", 10.68359, -56.53851], ["2019-08-24T00:48:57", 10.68154, -56.54449], ["2019-08-24T01:18:22", 10.67911, -56.55023], ["2019-08-24T01:48:04", 10.67724, -56.55623], ["2019-08-24T02:18:04", 10.67544, -56.56189], ["2019-08-24T02:47:49", 10.67379, -56.56733], ["2019-08-24T03:17:49", 10.67203, -56.57239], ["2019-08-24T03:48:08", 10.67099, -56.57819], ["2019-08-24T04:17:39", 10.6698, -56.58383], ["2019-08-24T04:47:56", 10.66804, -56.58926], ["2019-08-24T05:17:55", 10.66613, -56.59441], ["2019-08-24T05:47:55", 10.66441, -56.60007], ["2019-08-24T06:17:22", 10.66249, -56.6058], ["2019-08-24T06:47:56", 10.66001, -56.61166], ["2019-08-24T07:17:09", 10.65762, -56.61749], ["2019-08-24T07:47:25", 10.65599, -56.62497], ["2019-08-24T08:16:51", 10.65514, -56.63208], ["2019-08-24T08:46:33", 10.65495, -56.63989], ["2019-08-24T09:16:33", 10.65508, -56.64719], ["2019-08-24T09:46:58", 10.65605, -56.65469], ["2019-08-24T10:16:24", 10.6571, -56.66159], ["2019-08-24T10:46:58", 10.65784, -56.66794], ["2019-08-24T11:16:26", 10.65874, -56.67441], ["2019-08-24T11:46:26", 10.65986, -56.68076], ["2019-08-24T12:15:48", 10.66133, -56.68723], ["2019-08-24T12:45:36", 10.66232, -56.69411], ["2019-08-24T13:15:36", 10.66249, -56.70123], ["2019-08-24T13:45:28", 10.66228, -56.70893], ["2019-08-24T14:15:28", 10.66172, -56.71674], ["2019-08-24T14:45:19", 10.66244, -56.72504], ["2019-08-24T15:15:19", 10.6627, -56.73294], ["2019-08-24T15:45:36", 10.66317, -56.74179], ["2019-08-24T16:15:27", 10.66403, -56.75073], ["2019-08-24T16:45:27", 10.66429, -56.75983], ["2019-08-24T17:44:56", 10.66631, -56.77963], ["2019-08-24T18:14:56", 10.66803, -56.78993], ["2019-08-24T18:44:56", 10.67022, -56.80032], ["2019-08-24T19:14:16", 10.67212, -56.81067], ["2019-08-24T19:44:39", 10.67354, -56.82135], ["2019-08-24T20:14:11", 10.67477, -56.83148], ["2019-08-24T20:44:25", 10.67581, -56.84189], ["2019-08-24T21:14:01", 10.67697, -56.85117], ["2019-08-24T21:44:27", 10.67775, -56.85989], ["2019-08-24T22:13:44", 10.67882, -56.86813], ["2019-08-24T22:43:57", 10.67983, -56.87662], ["2019-08-24T23:13:31", 10.68124, -56.8851], ["2019-08-24T23:43:55", 10.68291, -56.89359], ["2019-08-25T00:13:22", 10.68505, -56.90149], ["2019-08-25T00:43:36", 10.68767, -56.90985], ["2019-08-25T01:43:07", 10.69245, -56.92646], ["2019-08-25T02:13:07", 10.69494, -56.93367], ["2019-08-25T02:43:07", 10.69794, -56.94122], ["2019-08-25T03:12:37", 10.70073, -56.94846], ["2019-08-25T03:42:57", 10.70373, -56.95615], ["2019-08-25T04:12:24", 10.70761, -56.96313], ["2019-08-25T04:42:57", 10.71179, -56.97076], ["2019-08-25T05:11:52", 10.71674, -56.97816], ["2019-08-25T05:41:52", 10.72202, -56.9852], ["2019-08-25T06:11:52", 10.7273, -56.99121], ["2019-08-25T06:41:40", 10.7321, -56.99733], ["2019-08-25T07:11:40", 10.73686, -57.00317], ["2019-08-25T07:42:38", 10.74181, -57.00894], ["2019-08-25T08:11:30", 10.74617, -57.01431], ["2019-08-25T08:41:56", 10.7502, -57.01996], ["2019-08-25T09:11:55", 10.7538, -57.02491], ["2019-08-25T09:41:55", 10.75736, -57.02963], ["2019-08-25T10:11:19", 10.76019, -57.03354], ["2019-08-25T10:41:57", 10.76307, -57.03778], ["2019-08-25T11:11:27", 10.76542, -57.04128], ["2019-08-25T11:41:27", 10.76765, -57.0448], ["2019-08-25T15:40:30", 10.78219, -57.07562], ["2019-08-25T16:09:38", 10.78368, -57.08109], ["2019-08-25T17:09:22", 10.78644, -57.0928], ["2019-08-25T18:08:42", 10.7897, -57.10572], ["2019-08-25T18:38:42", 10.79133, -57.11241], ["2019-08-25T19:08:42", 10.79253, -57.11807], ["2019-08-25T21:09:57", 10.79627, -57.13922], ["2019-08-25T21:38:30", 10.79656, -57.14264], ["2019-08-25T21:53:52", 10.79691, -57.14493], ["2019-08-25T22:08:56", 10.7971, -57.14703], ["2019-08-25T23:38:03", 10.79888, -57.16037], ["2019-08-26T00:07:50", 10.79879, -57.16569], ["2019-08-26T00:37:50", 10.79767, -57.17075], ["2019-08-26T01:07:34", 10.7964, -57.17564], ["2019-08-26T01:37:34", 10.79511, -57.18088], ["2019-08-26T02:07:57", 10.79411, -57.18692], ["2019-08-26T02:38:28", 10.7928, -57.19265], ["2019-08-26T03:08:28", 10.7913, -57.19849], ["2019-08-26T04:36:58", 10.79103, -57.21478], ["2019-08-26T05:06:58", 10.79215, -57.21838], ["2019-08-26T05:36:58", 10.79357, -57.22147], ["2019-08-26T06:06:57", 10.79521, -57.22421], ["2019-08-26T06:36:57", 10.79774, -57.22739], ["2019-08-26T09:05:46", 10.81089, -57.23544], ["2019-08-26T10:35:55", 10.8147, -57.23651], ["2019-08-26T12:04:56", 10.81863, -57.23882], ["2019-08-26T12:34:56", 10.82082, -57.24045], ["2019-08-26T13:04:56", 10.82344, -57.24234], ["2019-08-26T17:04:06", 10.83734, -57.25433], ["2019-08-26T17:34:43", 10.83978, -57.25586], ["2019-08-26T19:03:24", 10.84755, -57.26147], ["2019-08-26T19:33:24", 10.8509, -57.26319], ["2019-08-26T20:03:24", 10.85399, -57.26456], ["2019-08-26T20:33:39", 10.85696, -57.26544], ["2019-08-26T21:03:39", 10.85859, -57.26638], ["2019-08-26T21:33:39", 10.86108, -57.26801], ["2019-08-26T21:53:40", 10.86284, -57.26947], ["2019-08-26T22:02:47", 10.86358, -57.27017], ["2019-08-26T22:33:32", 10.8659, -57.27255], ["2019-08-26T23:02:43", 10.86843, -57.27526], ["2019-08-26T23:32:43", 10.87118, -57.27792], ["2019-08-27T00:02:43", 10.8741, -57.28049], ["2019-08-27T00:32:23", 10.87771, -57.28347], ["2019-08-27T01:02:23", 10.88119, -57.28665], ["2019-08-27T01:33:57", 10.885, -57.28952], ["2019-08-27T02:02:06", 10.88814, -57.29158], ["2019-08-27T02:32:06", 10.8911, -57.2939], ["2019-08-27T03:02:06", 10.89355, -57.29596], ["2019-08-27T03:32:04", 10.89639, -57.29916], ["2019-08-27T04:02:28", 10.89925, -57.30234], ["2019-08-27T04:31:59", 10.90195, -57.30515], ["2019-08-27T05:02:28", 10.90547, -57.30835], ["2019-08-27T06:02:58", 10.91354, -57.3161], ["2019-08-27T06:31:38", 10.91729, -57.31931], ["2019-08-27T07:01:30", 10.92087, -57.32237], ["2019-08-27T07:31:30", 10.9237, -57.3252], ["2019-08-27T08:01:21", 10.92697, -57.32839], ["2019-08-27T08:31:21", 10.93191, -57.33208], ["2019-08-27T09:01:21", 10.9359, -57.33551], ["2019-08-27T09:32:30", 10.9403, -57.34085], ["2019-08-27T10:00:44", 10.94501, -57.34466], ["2019-08-27T10:30:44", 10.94986, -57.34826], ["2019-08-27T11:00:44", 10.9551, -57.35135], ["2019-08-27T11:32:00", 10.9604, -57.35515], ["2019-08-27T12:02:00", 10.96478, -57.35858], ["2019-08-27T12:32:00", 10.97032, -57.36313], ["2019-08-27T16:01:55", 11.00491, -57.38849], ["2019-08-27T17:59:02", 11.02556, -57.40143], ["2019-08-27T19:30:27", 11.04145, -57.41019], ["2019-08-27T20:28:35", 11.05025, -57.41568], ["2019-08-27T21:58:26", 11.06347, -57.42529], ["2019-08-27T22:28:26", 11.06712, -57.42838], ["2019-08-27T22:58:26", 11.07094, -57.43173], ["2019-08-27T23:27:51", 11.07447, -57.43555], ["2019-08-27T23:57:37", 11.07792, -57.43937], ["2019-08-28T00:27:37", 11.08101, -57.44263], ["2019-08-28T00:58:26", 11.08429, -57.44574], ["2019-08-28T01:28:56", 11.08705, -57.4484], ["2019-08-28T01:58:56", 11.08945, -57.45175], ["2019-08-28T02:27:31", 11.09086, -57.45475], ["2019-08-28T02:57:31", 11.09236, -57.45853], ["2019-08-28T03:27:31", 11.09463, -57.46231], ["2019-08-28T03:57:33", 11.09644, -57.46587], ["2019-08-28T04:27:33", 11.09863, -57.46973], ["2019-08-28T04:56:26", 11.10117, -57.47314], ["2019-08-28T05:56:02", 11.10588, -57.48059], ["2019-08-28T06:56:53", 11.11073, -57.48683], ["2019-08-28T07:26:53", 11.11373, -57.49001], ["2019-08-28T07:56:53", 11.11652, -57.4931], ["2019-08-28T08:25:35", 11.11873, -57.4957], ["2019-08-28T10:25:27", 11.13123, -57.51049], ["2019-08-28T10:54:59", 11.13399, -57.51404], ["2019-08-28T11:25:27", 11.13672, -57.51761], ["2019-08-28T11:54:46", 11.13944, -57.52069], ["2019-08-28T12:54:38", 11.14527, -57.52783], ["2019-08-28T13:24:09", 11.14764, -57.53151], ["2019-08-28T13:54:09", 11.14957, -57.53503], ["2019-08-28T14:24:59", 11.15215, -57.53906], ["2019-08-28T14:54:35", 11.15448, -57.54306], ["2019-08-28T15:24:35", 11.15727, -57.54752], ["2019-08-28T16:53:22", 11.16649, -57.56119], ["2019-08-28T17:24:33", 11.16958, -57.56628], ["2019-08-28T17:53:00", 11.17305, -57.57077], ["2019-08-28T18:23:41", 11.17726, -57.57614], ["2019-08-28T18:53:41", 11.18104, -57.58138], ["2019-08-28T19:23:41", 11.18507, -57.58704], ["2019-08-28T21:23:01", 11.20846, -57.61321], ["2019-08-28T21:53:01", 11.20889, -57.61364], ["2019-08-28T22:23:01", 11.2134, -57.61819], ["2019-08-28T22:51:45", 11.2179, -57.62222], ["2019-08-28T23:22:56", 11.22261, -57.62646], ["2019-08-28T23:52:56", 11.22643, -57.62981], ["2019-08-29T00:22:56", 11.23051, -57.63376], ["2019-08-29T01:22:27", 11.23799, -57.64096], ["2019-08-29T01:51:11", 11.24061, -57.64429], ["2019-08-29T02:22:00", 11.24294, -57.6474], ["2019-08-29T02:51:11", 11.24443, -57.6503], ["2019-08-29T03:21:01", 11.2461, -57.65364], ["2019-08-29T03:51:01", 11.24739, -57.65613], ["2019-08-29T05:21:16", 11.25128, -57.66302], ["2019-08-29T05:50:31", 11.25342, -57.6651], ["2019-08-29T06:21:26", 11.25577, -57.66727], ["2019-08-29T06:50:58", 11.25899, -57.66987], ["2019-08-29T07:20:58", 11.26294, -57.6727], ["2019-08-29T07:50:14", 11.2672, -57.67563], ["2019-08-29T08:49:49", 11.27708, -57.68198], ["2019-08-29T09:21:23", 11.2822, -57.68381], ["2019-08-29T09:49:49", 11.28631, -57.68533], ["2019-08-29T10:21:27", 11.28957, -57.68602], ["2019-08-29T10:51:27", 11.29257, -57.68602], ["2019-08-29T11:21:27", 11.29592, -57.68585], ["2019-08-29T14:49:00", 11.31257, -57.68985], ["2019-08-29T16:19:41", 11.31884, -57.69764], ["2019-08-29T16:49:41", 11.3209, -57.6997], ["2019-08-29T17:19:41", 11.32343, -57.70227], ["2019-08-29T17:49:38", 11.32558, -57.70495], ["2019-08-29T18:19:38", 11.32854, -57.70718], ["2019-08-29T18:47:59", 11.33087, -57.70856], ["2019-08-29T19:18:04", 11.33358, -57.71048], ["2019-08-29T19:48:11", 11.33614, -57.71227], ["2019-08-29T20:18:11", 11.33854, -57.71356], ["2019-08-29T20:47:38", 11.3414, -57.71484], ["2019-08-29T21:18:29", 11.3447, -57.71622], ["2019-08-29T21:47:35", 11.34788, -57.71759], ["2019-08-29T21:54:00", 11.34851, -57.71786], ["2019-08-29T22:17:59", 11.35089, -57.71921], ["2019-08-29T22:47:31", 11.35351, -57.72098], ["2019-08-29T23:18:47", 11.35602, -57.72296], ["2019-08-30T01:17:26", 11.36332, -57.72723], ["2019-08-30T01:47:27", 11.36397, -57.72875], ["2019-08-30T02:17:27", 11.36457, -57.73038], ["2019-08-30T02:47:56", 11.36506, -57.73186], ["2019-08-30T03:17:56", 11.36553, -57.73358], ["2019-08-30T04:16:59", 11.36602, -57.73579], ["2019-08-30T04:46:59", 11.36568, -57.73656], ["2019-08-30T05:16:59", 11.36495, -57.73785], ["2019-08-30T05:46:07", 11.36415, -57.73956], ["2019-08-30T06:45:52", 11.36403, -57.74496], ["2019-08-30T07:16:25", 11.36458, -57.74853], ["2019-08-30T07:46:25", 11.36552, -57.75196], ["2019-08-30T08:16:25", 11.36719, -57.75522], ["2019-08-30T08:45:28", 11.36958, -57.75772], ["2019-08-30T09:15:28", 11.37215, -57.75995], ["2019-08-30T09:45:26", 11.37476, -57.76177], ["2019-08-30T10:15:26", 11.37768, -57.76349], ["2019-08-30T10:44:37", 11.38009, -57.76538], ["2019-08-30T12:15:29", 11.38907, -57.77063], ["2019-08-30T12:45:32", 11.39155, -57.77172], ["2019-08-30T13:15:32", 11.39417, -57.77335], ["2019-08-30T13:45:54", 11.39675, -57.77522], ["2019-08-30T14:15:54", 11.39915, -57.77728], ["2019-08-30T15:45:09", 11.40387, -57.78177], ["2019-08-30T16:13:38", 11.40552, -57.78311], ["2019-08-30T16:43:38", 11.40672, -57.78534], ["2019-08-30T17:13:29", 11.40808, -57.78802], ["2019-08-30T17:43:29", 11.40993, -57.79102], ["2019-08-30T18:12:33", 11.41218, -57.79425], ["2019-08-30T18:42:56", 11.41476, -57.79739], ["2019-08-30T19:12:55", 11.41786, -57.80099], ["2019-08-30T19:42:55", 11.42146, -57.80408], ["2019-08-30T20:12:05", 11.42526, -57.80704], ["2019-08-30T20:42:28", 11.42989, -57.81059], ["2019-08-30T21:12:28", 11.43457, -57.81368], ["2019-08-30T21:42:28", 11.44011, -57.81711], ["2019-08-30T22:11:36", 11.44616, -57.82022], ["2019-08-30T22:41:58", 11.45272, -57.82336], ["2019-08-30T23:11:21", 11.4592, -57.82666], ["2019-08-30T23:41:38", 11.46608, -57.83026], ["2019-08-31T00:11:03", 11.47303, -57.83328], ["2019-08-31T00:40:41", 11.48024, -57.83582], ["2019-08-31T01:10:41", 11.48685, -57.83771], ["2019-08-31T01:41:24", 11.49325, -57.83966], ["2019-08-31T02:41:00", 11.50635, -57.84244], ["2019-08-31T03:11:00", 11.51163, -57.84356], ["2019-08-31T03:41:00", 11.51708, -57.84442], ["2019-08-31T04:10:07", 11.522, -57.84467], ["2019-08-31T04:40:58", 11.52657, -57.84448], ["2019-08-31T05:10:07", 11.53024, -57.84415], ["2019-08-31T05:40:27", 11.5338, -57.84393], ["2019-08-31T06:10:00", 11.53679, -57.84326], ["2019-08-31T06:39:59", 11.53941, -57.84296], ["2019-08-31T07:09:59", 11.54151, -57.84296], ["2019-08-31T07:40:28", 11.54375, -57.84283], ["2019-08-31T08:09:49", 11.54668, -57.84265], ["2019-08-31T09:09:18", 11.55252, -57.84289], ["2019-08-31T09:40:24", 11.55608, -57.84378], ["2019-08-31T10:09:18", 11.56015, -57.84521], ["2019-08-31T11:39:09", 11.57391, -57.84807], ["2019-08-31T12:09:09", 11.57833, -57.84919], ["2019-08-31T12:39:09", 11.58331, -57.85065], ["2019-08-31T13:08:57", 11.58869, -57.85239], ["2019-08-31T13:38:57", 11.59461, -57.85471], ["2019-08-31T14:08:11", 11.6006, -57.85681], ["2019-08-31T14:38:57", 11.60674, -57.85889], ["2019-08-31T15:07:45", 11.61244, -57.86057], ["2019-08-31T15:37:45", 11.61866, -57.86186], ["2019-08-31T16:07:45", 11.62394, -57.86212], ["2019-08-31T16:37:57", 11.62977, -57.86234], ["2019-08-31T17:07:57", 11.63526, -57.8632], ["2019-08-31T17:37:57", 11.64092, -57.8638], ["2019-08-31T18:07:06", 11.64614, -57.86401], ["2019-08-31T19:07:26", 11.65694, -57.8644], ["2019-08-31T19:37:26", 11.66252, -57.8644], ["2019-08-31T20:07:26", 11.66836, -57.86517], ["2019-08-31T21:35:56", 11.68909, -57.86426], ["2019-08-31T22:05:56", 11.69115, -57.86426], ["2019-08-31T22:35:56", 11.69634, -57.86426], ["2019-08-31T23:06:27", 11.70197, -57.86465], ["2019-09-01T00:35:22", 11.71797, -57.86812], ["2019-09-01T01:05:22", 11.72351, -57.86992], ["2019-09-01T01:35:22", 11.72849, -57.87146], ["2019-09-01T02:05:58", 11.734, -57.87295], ["2019-09-01T02:35:58", 11.73894, -57.87355], ["2019-09-01T03:05:58", 11.74392, -57.87372], ["2019-09-01T04:34:39", 11.75861, -57.87601], ["2019-09-01T06:34:05", 11.77521, -57.87138], ["2019-09-01T07:04:05", 11.77903, -57.86923], ["2019-09-01T07:34:05", 11.78246, -57.867], ["2019-09-01T08:04:03", 11.78613, -57.86572], ["2019-09-01T09:03:52", 11.79388, -57.86475], ["2019-09-01T09:34:26", 11.79818, -57.86453], ["2019-09-01T10:03:41", 11.80196, -57.8645], ["2019-09-01T10:33:29", 11.80533, -57.8646], ["2019-09-01T11:03:29", 11.80825, -57.86511], ["2019-09-01T11:33:30", 11.81192, -57.86618], ["2019-09-01T12:04:26", 11.81583, -57.86743], ["2019-09-01T12:34:27", 11.81902, -57.86882], ["2019-09-01T13:04:27", 11.8225, -57.87097], ["2019-09-01T13:33:14", 11.82683, -57.87347], ["2019-09-01T15:02:56", 11.83823, -57.87823], ["2019-09-01T15:32:30", 11.84171, -57.87997], ["2019-09-01T16:02:56", 11.8448, -57.88226], ["2019-09-01T17:04:14", 11.85161, -57.88708], ["2019-09-01T17:32:17", 11.85485, -57.89001], ["2019-09-01T18:02:17", 11.85845, -57.89233], ["2019-09-01T18:31:43", 11.86234, -57.89395], ["2019-09-01T19:01:43", 11.8668, -57.89618], ["2019-09-01T19:32:30", 11.87194, -57.89923], ["2019-09-01T20:02:00", 11.87704, -57.90231], ["2019-09-01T20:32:00", 11.88228, -57.90591], ["2019-09-01T20:53:47", 11.89344, -57.91212], ["2019-09-01T21:23:47", 11.8967, -57.91366], ["2019-09-01T21:53:47", 11.89773, -57.91409], ["2019-09-01T23:31:49", 11.91544, -57.92197], ["2019-09-02T00:00:42", 11.91979, -57.92355], ["2019-09-02T00:31:49", 11.9242, -57.92514], ["2019-09-02T02:31:55", 11.93485, -57.93253], ["2019-09-02T03:00:15", 11.93614, -57.93478], ["2019-09-02T03:31:55", 11.93785, -57.93768], ["2019-09-02T03:59:56", 11.93898, -57.94012], ["2019-09-02T05:00:24", 11.94238, -57.94475], ["2019-09-02T05:30:24", 11.94431, -57.94655], ["2019-09-02T06:00:24", 11.94701, -57.94861], ["2019-09-02T06:29:12", 11.94953, -57.95004], ["2019-09-02T06:59:30", 11.9526, -57.95209], ["2019-09-02T08:58:58", 11.96896, -57.96121], ["2019-09-02T09:58:56", 11.97861, -57.96637], ["2019-09-02T10:27:57", 11.98285, -57.96893], ["2019-09-02T10:58:56", 11.98719, -57.97229], ["2019-09-02T11:27:34", 11.99124, -57.9754], ["2019-09-02T12:57:39", 12.00312, -57.98638], ["2019-09-02T13:27:39", 12.0063, -57.98998], ["2019-09-02T13:57:39", 12.00913, -57.99393], ["2019-09-02T14:27:30", 12.0108, -57.99768], ["2019-09-02T14:57:30", 12.01243, -58.00189], ["2019-09-02T15:26:26", 12.01448, -58.00609], ["2019-09-02T15:58:02", 12.01699, -58.01111], ["2019-09-02T16:26:26", 12.01954, -58.01578], ["2019-09-02T17:26:11", 12.02534, -58.02637], ["2019-09-02T17:58:28", 12.02828, -58.03154], ["2019-09-02T18:25:52", 12.03108, -58.0358], ["2019-09-02T18:58:28", 12.03467, -58.04141], ["2019-09-02T19:25:24", 12.0378, -58.04581], ["2019-09-02T19:55:24", 12.04179, -58.05087], ["2019-09-02T21:54:08", 12.06773, -58.07333], ["2019-09-02T21:54:53", 12.06789, -58.07339], ["2019-09-02T22:26:08", 12.07593, -58.07999], ["2019-09-02T22:54:43", 12.08352, -58.08554], ["2019-09-02T23:26:02", 12.09201, -58.09088], ["2019-09-02T23:54:19", 12.09915, -58.09529], ["2019-09-03T00:24:19", 12.10559, -58.09907], ["2019-09-03T00:54:19", 12.11173, -58.10156], ["2019-09-03T01:24:41", 12.11728, -58.10286], ["2019-09-03T01:54:07", 12.12188, -58.10355], ["2019-09-03T02:24:41", 12.12608, -58.10449], ["2019-09-03T02:54:01", 12.12988, -58.10471], ["2019-09-03T03:24:32", 12.13288, -58.10605], ["2019-09-03T03:53:49", 12.13534, -58.10797], ["2019-09-03T04:53:30", 12.14092, -58.11164], ["2019-09-03T05:23:30", 12.14461, -58.11447], ["2019-09-03T05:53:30", 12.1486, -58.11713], ["2019-09-03T07:52:47", 12.16551, -58.13257], ["2019-09-03T08:52:33", 12.17441, -58.14188], ["2019-09-03T09:22:58", 12.17989, -58.14761], ["2019-09-03T10:23:42", 12.19297, -58.16174], ["2019-09-03T11:52:03", 12.21257, -58.17389], ["2019-09-03T12:21:46", 12.21919, -58.17843], ["2019-09-03T12:51:46", 12.22391, -58.18246], ["2019-09-03T13:21:46", 12.22932, -58.18658], ["2019-09-03T13:54:05", 12.23457, -58.19025], ["2019-09-03T14:21:25", 12.23765, -58.19363], ["2019-09-03T17:50:31", 12.26542, -58.21246], ["2019-09-03T21:51:05", 12.28508, -58.24527], ["2019-09-03T22:20:02", 12.28585, -58.24866], ["2019-09-03T22:50:37", 12.28653, -58.25165], ["2019-09-03T23:19:30", 12.2877, -58.2552], ["2019-09-03T23:49:30", 12.28929, -58.25923], ["2019-09-04T00:19:30", 12.29165, -58.26395], ["2019-09-04T00:49:23", 12.29461, -58.26852], ["2019-09-04T01:19:23", 12.29658, -58.27109], ["2019-09-04T01:49:06", 12.29898, -58.27376], ["2019-09-04T02:21:00", 12.30188, -58.27676], ["2019-09-04T02:49:06", 12.30478, -58.27994], ["2019-09-04T03:18:52", 12.30826, -58.28372], ["2019-09-04T03:50:09", 12.31291, -58.28815], ["2019-09-04T06:50:58", 12.33722, -58.30948], ["2019-09-04T07:18:52", 12.34014, -58.31247], ["2019-09-04T07:48:52", 12.34173, -58.31487], ["2019-09-04T08:18:52", 12.34306, -58.31805], ["2019-09-04T08:47:52", 12.3452, -58.32175], ["2019-09-04T09:18:18", 12.34757, -58.32541], ["2019-09-04T09:47:32", 12.34984, -58.32904], ["2019-09-04T10:18:21", 12.35207, -58.33223], ["2019-09-04T10:48:21", 12.35409, -58.33395], ["2019-09-04T11:18:21", 12.35619, -58.33661], ["2019-09-04T11:47:10", 12.35822, -58.3396], ["2019-09-04T14:46:13", 12.37436, -58.36874], ["2019-09-04T15:16:13", 12.37758, -58.37492], ["2019-09-04T15:46:13", 12.38101, -58.38016], ["2019-09-04T16:17:29", 12.38515, -58.3851], ["2019-09-04T16:48:28", 12.38969, -58.38961], ["2019-09-04T17:18:28", 12.39574, -58.39648], ["2019-09-04T18:47:04", 12.41286, -58.41574], ["2019-09-04T19:18:11", 12.41806, -58.41947], ["2019-09-04T19:48:11", 12.42372, -58.42453], ["2019-09-04T20:15:15", 12.42731, -58.42707], ["2019-09-04T20:45:15", 12.43117, -58.43042], ["2019-09-04T22:14:56", 12.44021, -58.44654], ["2019-09-04T22:15:28", 12.44015, -58.4465], ["2019-09-04T22:44:56", 12.44278, -58.45178], ["2019-09-04T23:14:56", 12.44475, -58.45667], ["2019-09-04T23:44:11", 12.44633, -58.46225], ["2019-09-05T00:14:11", 12.44822, -58.46937], ["2019-09-05T00:44:11", 12.45002, -58.47641], ["2019-09-05T01:14:25", 12.45272, -58.48505], ["2019-09-05T01:44:03", 12.45663, -58.49261], ["2019-09-05T03:43:47", 12.47892, -58.51493], ["2019-09-05T04:13:47", 12.48484, -58.51965], ["2019-09-05T04:43:47", 12.48986, -58.52454], ["2019-09-05T06:13:12", 12.50905, -58.54101], ["2019-09-05T06:43:12", 12.51609, -58.5459], ["2019-09-05T07:13:12", 12.52141, -58.54813], ["2019-09-05T07:43:55", 12.5257, -58.5513], ["2019-09-05T08:13:01", 12.52863, -58.55466], ["2019-09-05T08:45:57", 12.52887, -58.55756], ["2019-09-05T10:44:02", 12.53426, -58.57089], ["2019-09-05T11:14:02", 12.53606, -58.57346], ["2019-09-05T11:44:02", 12.53868, -58.57681], ["2019-09-05T12:41:49", 12.54377, -58.58087], ["2019-09-05T13:12:24", 12.54586, -58.58234], ["2019-09-05T15:13:26", 12.5567, -58.5943], ["2019-09-05T16:41:58", 12.56555, -58.61166], ["2019-09-05T17:11:13", 12.56784, -58.61578], ["2019-09-05T17:41:13", 12.56977, -58.62119], ["2019-09-05T18:10:08", 12.57142, -58.62716], ["2019-09-05T18:40:08", 12.57318, -58.63377], ["2019-09-05T19:10:08", 12.57455, -58.63995], ["2019-09-05T19:40:41", 12.57642, -58.64673], ["2019-09-05T20:10:02", 12.57754, -58.65268], ["2019-09-05T20:40:02", 12.5787, -58.65989], ["2019-09-05T21:10:02", 12.5793, -58.66641], ["2019-09-05T21:40:14", 12.57907, -58.67133], ["2019-09-05T22:10:44", 12.57977, -58.67575], ["2019-09-05T22:40:44", 12.58127, -58.67953], ["2019-09-05T23:09:43", 12.58106, -58.68488], ["2019-09-05T23:40:40", 12.58228, -58.69019], ["2019-09-06T01:08:43", 12.58179, -58.69728], ["2019-09-06T01:38:43", 12.57922, -58.70037], ["2019-09-06T02:08:43", 12.57587, -58.70303], ["2019-09-06T02:39:32", 12.573, -58.70779], ["2019-09-06T03:08:22", 12.57174, -58.71313], ["2019-09-06T03:38:00", 12.57082, -58.71936], ["2019-09-06T04:08:00", 12.57082, -58.72614], ["2019-09-06T04:38:41", 12.57009, -58.73392], ["2019-09-06T05:07:21", 12.57053, -58.73974], ["2019-09-06T05:38:57", 12.57119, -58.74429], ["2019-09-06T06:07:21", 12.57216, -58.74875], ["2019-09-06T06:37:57", 12.57313, -58.75476], ["2019-09-06T07:07:04", 12.5746, -58.76135], ["2019-09-06T07:37:26", 12.57583, -58.7666], ["2019-09-06T08:07:28", 12.57672, -58.77156], ["2019-09-06T08:37:28", 12.57788, -58.7774], ["2019-09-06T09:06:58", 12.57872, -58.78204], ["2019-09-06T09:36:49", 12.5797, -58.78722], ["2019-09-06T10:06:49", 12.57979, -58.79263], ["2019-09-06T10:36:38", 12.57989, -58.79926], ["2019-09-06T11:06:38", 12.57972, -58.80673], ["2019-09-06T11:37:12", 12.57968, -58.8143], ["2019-09-06T12:06:40", 12.5791, -58.82141], ["2019-09-06T12:37:12", 12.57898, -58.82828], ["2019-09-06T13:06:29", 12.57878, -58.83526], ["2019-09-06T13:36:29", 12.57895, -58.84204], ["2019-09-06T16:05:36", 12.59044, -58.87912], ["2019-09-06T16:35:20", 12.59381, -58.88475], ["2019-09-06T17:05:20", 12.59716, -58.88956], ["2019-09-06T17:35:07", 12.60013, -58.89323], ["2019-09-06T18:05:07", 12.60322, -58.89658], ["2019-09-06T18:35:57", 12.60711, -58.90051], ["2019-09-06T19:05:29", 12.61133, -58.90405], ["2019-09-06T19:35:29", 12.61575, -58.90903], ["2019-09-06T20:04:46", 12.6198, -58.91382], ["2019-09-06T20:35:41", 12.62376, -58.91843], ["2019-09-06T22:34:28", 12.63861, -58.93555], ["2019-09-06T23:34:25", 12.64253, -58.95071], ["2019-09-07T00:04:25", 12.64322, -58.95766], ["2019-09-07T00:34:25", 12.64322, -58.9635], ["2019-09-07T01:03:21", 12.64269, -58.96857], ["2019-09-07T01:33:07", 12.64252, -58.97348], ["2019-09-07T02:03:07", 12.64218, -58.97751], ["2019-09-07T03:32:38", 12.64593, -58.99024], ["2019-09-07T04:02:38", 12.6458, -58.99582], ["2019-09-07T04:32:38", 12.64567, -59.00183], ["2019-09-07T05:03:28", 12.64629, -59.00854], ["2019-09-07T05:32:12", 12.64653, -59.0152], ["2019-09-07T06:02:26", 12.64708, -59.02193], ["2019-09-07T06:32:26", 12.64785, -59.02742], ["2019-09-07T07:02:26", 12.64888, -59.03214], ["2019-09-07T07:31:57", 12.64972, -59.03608], ["2019-09-07T08:01:57", 12.65036, -59.03934], ["2019-09-07T08:31:57", 12.65061, -59.04268], ["2019-09-07T09:01:57", 12.65052, -59.04568], ["2019-09-07T10:31:17", 12.64563, -59.05295], ["2019-09-07T12:01:55", 12.63593, -59.05964], ["2019-09-07T12:30:53", 12.63338, -59.06238], ["2019-09-07T13:01:55", 12.63121, -59.06616], ["2019-09-07T13:31:10", 12.6292, -59.07096], ["2019-09-07T14:01:10", 12.62744, -59.07645], ["2019-09-07T14:30:32", 12.6271, -59.08209], ["2019-09-07T15:01:17", 12.62775, -59.08713], ["2019-09-07T16:29:44", 12.62871, -59.10083], ["2019-09-07T17:00:24", 12.6298, -59.10513], ["2019-09-07T17:29:34", 12.6311, -59.10913], ["2019-09-07T18:00:24", 12.63319, -59.11319], ["2019-09-07T18:29:11", 12.63436, -59.11688], ["2019-09-07T19:00:02", 12.63447, -59.12039], ["2019-09-07T19:58:35", 12.63248, -59.12781], ["2019-09-07T20:28:35", 12.63055, -59.13116], ["2019-09-07T20:58:35", 12.62798, -59.13425], ["2019-09-07T21:29:00", 12.62548, -59.13748], ["2019-09-07T21:58:20", 12.62248, -59.14096], ["2019-09-07T22:57:56", 12.6148, -59.14946], ["2019-09-07T23:27:56", 12.6112, -59.15487], ["2019-09-07T23:57:56", 12.60824, -59.15976], ["2019-09-08T00:28:27", 12.60499, -59.16458], ["2019-09-08T00:57:50", 12.60132, -59.1691], ["2019-09-08T01:28:01", 12.59799, -59.17303], ["2019-09-08T02:27:43", 12.59091, -59.17911], ["2019-09-08T02:56:47", 12.5868, -59.18225], ["2019-09-08T03:27:28", 12.58283, -59.18585], ["2019-09-08T03:56:47", 12.57946, -59.18903], ["2019-09-08T04:26:32", 12.57582, -59.19257], ["2019-09-08T04:56:32", 12.57217, -59.19626], ["2019-09-08T05:26:58", 12.57062, -59.20065], ["2019-09-08T05:56:58", 12.56944, -59.20498], ["2019-09-08T06:26:58", 12.56802, -59.20953], ["2019-09-08T08:26:57", 12.56019, -59.22879], ["2019-09-08T08:55:58", 12.55737, -59.23367], ["2019-09-08T09:56:01", 12.55106, -59.24271], ["2019-09-08T10:25:56", 12.54711, -59.24701], ["2019-09-08T10:55:56", 12.54368, -59.25139], ["2019-09-08T11:25:56", 12.53952, -59.2562], ["2019-09-08T11:55:42", 12.53443, -59.2608], ["2019-09-08T12:25:42", 12.52975, -59.2644], ["2019-09-08T14:55:04", 12.50788, -59.28593], ["2019-09-08T15:25:04", 12.50479, -59.2922], ["2019-09-08T15:55:04", 12.502, -59.29889], ["2019-09-08T17:54:19", 12.4948, -59.33481], ["2019-09-08T18:24:27", 12.49457, -59.34477], ["2019-09-08T18:54:27", 12.49474, -59.35438], ["2019-09-08T19:24:27", 12.495, -59.36313], ["2019-09-08T20:24:25", 12.49606, -59.37997], ["2019-09-08T20:54:25", 12.49597, -59.38812], ["2019-09-08T21:24:25", 12.49584, -59.3967], ["2019-09-08T21:53:28", 12.49604, -59.40396], ["2019-09-08T23:23:56", 12.49554, -59.42463], ["2019-09-08T23:53:56", 12.4946, -59.43124], ["2019-09-09T00:23:56", 12.49387, -59.43896], ["2019-09-09T00:52:46", 12.49306, -59.44733], ["2019-09-09T01:52:41", 12.49235, -59.46417], ["2019-09-09T02:22:27", 12.49213, -59.47236], ["2019-09-09T02:52:27", 12.49187, -59.47931], ["2019-09-09T06:21:25", 12.49669, -59.52829], ["2019-09-09T07:20:56", 12.49712, -59.54145], ["2019-09-09T07:51:59", 12.49737, -59.54803], ["2019-09-09T08:20:56", 12.49759, -59.55475], ["2019-09-09T09:20:44", 12.49827, -59.5686], ["2019-09-09T10:20:41", 12.4974, -59.57977], ["2019-09-09T10:51:11", 12.49713, -59.58649], ["2019-09-09T11:49:54", 12.49702, -59.59875], ["2019-09-09T12:19:54", 12.49681, -59.60441], ["2019-09-09T12:49:54", 12.49638, -59.6105], ["2019-09-09T14:49:14", 12.49776, -59.63505], ["2019-09-09T15:20:57", 12.49888, -59.64169], ["2019-09-09T15:49:14", 12.49931, -59.64749], ["2019-09-09T16:19:07", 12.50015, -59.65447], ["2019-09-09T16:49:07", 12.50122, -59.66168], ["2019-09-09T18:18:10", 12.50667, -59.68372], ["2019-09-09T18:49:11", 12.50876, -59.69067], ["2019-09-09T19:18:10", 12.51096, -59.69788], ["2019-09-09T19:48:27", 12.51355, -59.70562], ["2019-09-09T20:18:27", 12.51574, -59.71369], ["2019-09-09T20:48:27", 12.5184, -59.7215], ["2019-09-09T21:17:44", 12.52133, -59.72916], ["2019-09-09T22:17:31", 12.52835, -59.74377], ["2019-09-09T22:48:57", 12.53199, -59.75226], ["2019-09-09T23:18:57", 12.53469, -59.75964], ["2019-09-09T23:48:57", 12.53735, -59.76685], ["2019-09-10T02:16:23", 12.54721, -59.80096], ["2019-09-10T04:16:59", 12.55396, -59.83044], ["2019-09-10T04:46:29", 12.55741, -59.83868], ["2019-09-10T05:16:29", 12.5617, -59.84735], ["2019-09-10T06:16:30", 12.57214, -59.86511], ["2019-09-10T08:47:28", 12.60687, -59.90782], ["2019-09-10T09:17:28", 12.61464, -59.91409], ["2019-09-10T09:47:28", 12.62292, -59.9213], ["2019-09-10T13:43:44", 12.69393, -59.95944], ["2019-09-10T14:13:24", 12.70264, -59.96521], ["2019-09-10T14:43:24", 12.71032, -59.96976], ["2019-09-10T15:13:22", 12.71902, -59.97491], ["2019-09-10T15:44:15", 12.7278, -59.98184], ["2019-09-10T17:12:32", 12.75505, -59.99842], ["2019-09-10T17:42:32", 12.76436, -60.00374], ["2019-09-10T18:12:32", 12.77359, -60.00949], ["2019-09-10T19:42:59", 12.80468, -60.02679], ["2019-09-10T21:42:28", 12.84152, -60.04068], ["2019-09-10T22:11:37", 12.84956, -60.04355], ["2019-09-10T22:42:56", 12.85764, -60.0459], ["2019-09-10T23:42:29", 12.87453, -60.04849], ["2019-09-11T00:12:29", 12.88217, -60.04849], ["2019-09-11T00:42:29", 12.8905, -60.0484], ["2019-09-11T01:11:02", 12.89802, -60.04774], ["2019-09-11T01:41:02", 12.90583, -60.04723], ["2019-09-11T02:11:02", 12.91274, -60.04749], ["2019-09-11T02:41:30", 12.91964, -60.04828], ["2019-09-11T05:11:59", 12.94691, -60.05042], ["2019-09-11T05:39:57", 12.95103, -60.0502], ["2019-09-11T06:09:45", 12.95525, -60.05053], ["2019-09-11T06:39:45", 12.95941, -60.05122], ["2019-09-11T07:09:45", 12.96332, -60.05182], ["2019-09-11T08:10:36", 12.97291, -60.05326], ["2019-09-11T08:11:29", 12.97288, -60.05325], ["2019-09-11T08:40:36", 12.97699, -60.05369], ["2019-09-11T09:10:36", 12.98193, -60.05429], ["2019-09-11T10:08:51", 12.99129, -60.05521], ["2019-09-11T10:39:43", 12.99551, -60.05615], ["2019-09-11T11:08:51", 12.99927, -60.05692], ["2019-09-11T12:08:10", 13.00717, -60.05841], ["2019-09-11T12:38:10", 13.01073, -60.05884], ["2019-09-11T12:38:56", 13.01071, -60.05881], ["2019-09-11T13:08:10", 13.01429, -60.05893], ["2019-09-11T14:37:39", 13.02451, -60.0607], ["2019-09-11T15:08:28", 13.02784, -60.06122], ["2019-09-11T16:37:23", 13.03825, -60.06406], ["2019-09-11T17:07:59", 13.0421, -60.0662], ["2019-09-11T17:37:59", 13.04515, -60.06869], ["2019-09-11T18:07:59", 13.0488, -60.07178], ["2019-09-11T19:06:58", 13.05776, -60.07764], ["2019-09-11T19:40:02", 13.06297, -60.08124], ["2019-09-11T20:05:52", 13.06774, -60.08463], ["2019-09-11T20:35:52", 13.07263, -60.08875], ["2019-09-11T21:05:40", 13.07788, -60.09348], ["2019-09-11T21:35:40", 13.08183, -60.09769], ["2019-09-11T21:52:15", 13.08412, -60.10028], ["2019-09-12T00:05:29", 13.0987, -60.1213], ["2019-09-12T00:35:29", 13.10102, -60.12542], ["2019-09-12T01:05:29", 13.10321, -60.12988], ["2019-09-12T01:34:47", 13.10477, -60.13391], ["2019-09-12T02:06:07", 13.10606, -60.13803], ["2019-09-12T03:05:02", 13.10623, -60.14492], ["2019-09-12T03:35:02", 13.10559, -60.14758], ["2019-09-12T04:05:02", 13.10482, -60.15161], ["2019-09-12T04:34:01", 13.1036, -60.15549], ["2019-09-12T06:04:06", 13.10051, -60.16261], ["2019-09-12T06:33:29", 13.09975, -60.16602], ["2019-09-12T07:04:06", 13.09867, -60.1705], ["2019-09-12T07:33:27", 13.09854, -60.17563], ["2019-09-12T08:03:19", 13.09896, -60.18106], ["2019-09-12T08:33:19", 13.09978, -60.18518], ["2019-09-12T10:03:26", 13.10463, -60.1973], ["2019-09-12T11:03:58", 13.1097, -60.20474], ["2019-09-12T11:33:25", 13.11216, -60.2077], ["2019-09-12T12:03:25", 13.11431, -60.21045], ["2019-09-12T12:31:55", 13.11599, -60.2135], ["2019-09-12T16:02:07", 13.1288, -60.23543], ["2019-09-12T16:32:07", 13.13159, -60.23843], ["2019-09-12T17:02:07", 13.13472, -60.24161], ["2019-09-12T17:31:04", 13.13807, -60.2453], ["2019-09-12T18:00:50", 13.14132, -60.24984], ["2019-09-12T18:30:50", 13.1442, -60.25473], ["2019-09-12T19:00:59", 13.14695, -60.26068], ["2019-09-12T19:30:59", 13.14914, -60.2666], ["2019-09-12T20:00:59", 13.15133, -60.27338], ["2019-09-12T21:29:53", 13.16149, -60.30205], ["2019-09-12T22:01:30", 13.16282, -60.30414], ["2019-09-12T22:29:53", 13.16685, -60.31107], ["2019-09-12T23:29:37", 13.17558, -60.32428], ["2019-09-13T00:00:01", 13.17999, -60.33002], ["2019-09-13T00:29:16", 13.18518, -60.33624], ["2019-09-13T00:59:31", 13.18955, -60.34204], ["2019-09-13T01:59:05", 13.20056, -60.35266], ["2019-09-13T02:28:58", 13.20738, -60.3572], ["2019-09-13T02:58:58", 13.21498, -60.36218], ["2019-09-13T03:28:22", 13.22263, -60.36731], ["2019-09-13T04:27:54", 13.23787, -60.37988], ["2019-09-13T04:57:54", 13.24607, -60.3864], ["2019-09-13T05:27:54", 13.25452, -60.39224], ["2019-09-13T05:58:28", 13.26245, -60.39789], ["2019-09-13T06:27:34", 13.26915, -60.40246], ["2019-09-13T06:57:34", 13.27627, -60.40692], ["2019-09-13T07:27:34", 13.28339, -60.41104], ["2019-09-13T07:58:25", 13.28973, -60.41461], ["2019-09-13T08:27:23", 13.29518, -60.41711], ["2019-09-13T08:57:56", 13.30096, -60.41838], ["2019-09-13T09:27:56", 13.30581, -60.41924], ["2019-09-13T09:57:56", 13.31066, -60.42078], ["2019-09-13T10:27:11", 13.31526, -60.4223], ["2019-09-13T10:57:08", 13.32032, -60.42332], ["2019-09-13T11:27:08", 13.32508, -60.42383], ["2019-09-13T11:57:58", 13.33042, -60.4249], ["2019-09-13T13:56:19", 13.35439, -60.43081], ["2019-09-13T14:26:57", 13.36213, -60.4324], ["2019-09-13T14:56:19", 13.36993, -60.43433], ["2019-09-13T15:26:57", 13.37799, -60.43735], ["2019-09-13T15:56:55", 13.38647, -60.44112], ["2019-09-13T16:26:55", 13.39535, -60.44412], ["2019-09-13T16:56:04", 13.40328, -60.44675], ["2019-09-13T17:55:49", 13.42073, -60.4531], ["2019-09-13T18:25:49", 13.42854, -60.45628], ["2019-09-13T18:55:49", 13.43558, -60.45834], ["2019-09-13T19:26:30", 13.4419, -60.45959], ["2019-09-13T19:55:38", 13.44727, -60.46033], ["2019-09-13T20:25:57", 13.45254, -60.46091], ["2019-09-13T20:52:01", 13.46554, -60.46482], ["2019-09-13T21:22:01", 13.46992, -60.46602], ["2019-09-13T21:52:01", 13.47074, -60.46619], ["2019-09-13T21:55:09", 13.47132, -60.4664], ["2019-09-13T23:24:59", 13.4876, -60.4701], ["2019-09-13T23:54:59", 13.49314, -60.47044], ["2019-09-14T00:24:59", 13.49906, -60.47147], ["2019-09-14T01:24:57", 13.51044, -60.47501], ["2019-09-14T01:54:21", 13.51577, -60.47646], ["2019-09-14T02:24:21", 13.52131, -60.47715], ["2019-09-14T02:54:21", 13.52603, -60.47775], ["2019-09-14T03:24:35", 13.53169, -60.47836], ["2019-09-14T03:54:06", 13.53731, -60.47925], ["2019-09-14T04:53:49", 13.54761, -60.47797], ["2019-09-14T05:23:32", 13.55218, -60.47616], ["2019-09-14T05:53:32", 13.5557, -60.47479], ["2019-09-14T06:23:58", 13.55866, -60.47345], ["2019-09-14T06:53:18", 13.56176, -60.47153], ["2019-09-14T07:23:36", 13.5651, -60.46973], ["2019-09-14T07:53:03", 13.56923, -60.46866], ["2019-09-14T08:23:24", 13.57317, -60.4675], ["2019-09-14T08:52:48", 13.57725, -60.46585], ["2019-09-14T09:22:55", 13.58082, -60.46409], ["2019-09-14T09:52:55", 13.58421, -60.46229], ["2019-09-14T10:22:55", 13.5873, -60.46109], ["2019-09-14T10:52:28", 13.59047, -60.45975], ["2019-09-14T11:22:55", 13.59342, -60.45877], ["2019-09-14T11:52:57", 13.59663, -60.45792], ["2019-09-14T12:22:57", 13.60032, -60.45758], ["2019-09-14T12:51:57", 13.60465, -60.45712], ["2019-09-14T13:21:34", 13.60961, -60.45623], ["2019-09-14T13:51:34", 13.61476, -60.45477], ["2019-09-14T14:21:57", 13.61986, -60.45325], ["2019-09-14T14:51:16", 13.62429, -60.45242], ["2019-09-14T15:50:42", 13.63524, -60.45259], ["2019-09-14T16:20:42", 13.6403, -60.45147], ["2019-09-14T16:50:42", 13.64476, -60.45044], ["2019-09-14T17:20:56", 13.64938, -60.4487], ["2019-09-14T17:50:55", 13.65381, -60.44754], ["2019-09-14T18:20:55", 13.6584, -60.44565], ["2019-09-14T19:49:48", 13.67002, -60.44183], ["2019-09-14T20:19:36", 13.67341, -60.44264], ["2019-09-14T20:49:36", 13.67616, -60.44067], ["2019-09-14T21:19:58", 13.67842, -60.43759], ["2019-09-14T21:49:15", 13.68063, -60.43546], ["2019-09-14T21:51:35", 13.68082, -60.43536], ["2019-09-14T22:19:58", 13.68328, -60.43329], ["2019-09-14T22:49:27", 13.68567, -60.431], ["2019-09-14T23:19:27", 13.68842, -60.42963], ["2019-09-15T00:19:26", 13.69209, -60.42825], ["2019-09-15T00:49:26", 13.69316, -60.43005], ["2019-09-15T01:19:26", 13.69355, -60.43237], ["2019-09-15T01:48:28", 13.69467, -60.43466], ["2019-09-15T05:18:58", 13.69612, -60.46313], ["2019-09-15T07:47:34", 13.70142, -60.48724], ["2019-09-15T08:48:56", 13.7061, -60.49316], ["2019-09-15T09:17:17", 13.70898, -60.49719], ["2019-09-15T09:48:28", 13.7126, -60.50238], ["2019-09-15T10:48:26", 13.71903, -60.51624], ["2019-09-15T11:47:59", 13.72488, -60.53155], ["2019-09-15T12:17:59", 13.72793, -60.53919], ["2019-09-15T12:47:59", 13.73111, -60.54752], ["2019-09-15T13:15:55", 13.73429, -60.55411], ["2019-09-15T15:15:33", 13.74759, -60.58621], ["2019-09-15T15:45:33", 13.75154, -60.59316], ["2019-09-15T16:15:33", 13.75605, -60.59985], ["2019-09-15T16:47:12", 13.76155, -60.6062], ["2019-09-15T17:44:38", 13.7687, -60.61603], ["2019-09-15T18:14:38", 13.77269, -60.62212], ["2019-09-15T18:44:38", 13.77793, -60.62796], ["2019-09-15T19:15:31", 13.78486, -60.63281], ["2019-09-15T19:44:12", 13.79264, -60.63754], ["2019-09-15T20:43:58", 13.80822, -60.65067], ["2019-09-15T21:51:32", 13.82211, -60.66296], ["2019-09-15T22:44:29", 13.83564, -60.67389], ["2019-09-15T23:14:29", 13.84264, -60.68024], ["2019-09-15T23:44:29", 13.84976, -60.68796], ["2019-09-16T00:13:28", 13.85732, -60.6951], ["2019-09-16T00:43:13", 13.86497, -60.70026], ["2019-09-16T01:13:13", 13.87235, -60.70532], ["2019-09-16T01:44:18", 13.88156, -60.71033], ["2019-09-16T03:44:28", 13.9173, -60.73163], ["2019-09-16T05:42:57", 13.9529, -60.7366], ["2019-09-16T06:12:16", 13.96234, -60.73584], ["2019-09-16T06:42:57", 13.97037, -60.73608], ["2019-09-16T07:12:29", 13.97684, -60.73725], ["2019-09-16T07:42:29", 13.98371, -60.74017], ["2019-09-16T08:12:55", 13.99117, -60.7427], ["2019-09-16T08:42:55", 13.9998, -60.7457], ["2019-09-16T09:11:33", 14.00924, -60.74887], ["2019-09-16T11:11:58", 14.06584, -60.77375], ["2019-09-16T11:41:58", 14.07867, -60.78285], ["2019-09-16T12:11:58", 14.09189, -60.79272], ["2019-09-16T15:10:19", 14.15396, -60.83292], ["2019-09-16T15:40:17", 14.16212, -60.83908], ["2019-09-16T16:11:27", 14.17116, -60.84654], ["2019-09-16T16:41:27", 14.18056, -60.85469], ["2019-09-16T17:11:27", 14.19219, -60.86465], ["2019-09-16T17:39:53", 14.20336, -60.87515], ["2019-09-16T18:39:45", 14.22797, -60.89722], ["2019-09-16T19:10:25", 14.24229, -60.9079], ["2019-09-16T20:11:57", 14.26777, -60.92612], ["2019-09-16T20:41:57", 14.27871, -60.93505], ["2019-09-16T21:11:57", 14.29081, -60.94604], ["2019-09-16T21:39:12", 14.30348, -60.96037], ["2019-09-16T22:09:12", 14.30773, -60.96603], ["2019-09-16T23:38:52", 14.32633, -60.99589], ["2019-09-17T00:08:52", 14.33148, -61.00782], ["2019-09-17T00:38:52", 14.3347, -61.01898], ["2019-09-17T01:38:36", 14.34083, -61.04209], ["2019-09-17T02:08:36", 14.34246, -61.05436], ["2019-09-17T02:38:36", 14.34521, -61.06543], ["2019-09-17T03:38:22", 14.34686, -61.0871], ["2019-09-17T04:08:22", 14.34682, -61.09757], ["2019-09-17T04:38:22", 14.34738, -61.1077], ["2019-09-17T08:09:21", 14.36354, -61.19089], ["2019-09-17T08:37:39", 14.36742, -61.20372], ["2019-09-17T09:07:39", 14.3703, -61.21445], ["2019-09-17T09:37:36", 14.37231, -61.22556], ["2019-09-17T10:37:09", 14.37704, -61.24835], ["2019-09-17T11:08:42", 14.38006, -61.25984], ["2019-09-17T11:38:42", 14.38341, -61.271], ["2019-09-17T12:07:30", 14.38784, -61.28321], ["2019-09-17T12:37:30", 14.39166, -61.29325], ["2019-09-17T13:07:30", 14.39514, -61.30664], ["2019-09-17T14:06:32", 14.40156, -61.33163], ["2019-09-17T14:35:52", 14.40438, -61.34366], ["2019-09-17T15:06:55", 14.4066, -61.35608], ["2019-09-17T15:35:52", 14.40854, -61.36838], ["2019-09-17T20:04:37", 14.41707, -61.46472], ["2019-09-17T20:51:45", 14.43783, -61.4885], ["2019-09-17T21:21:45", 14.4401, -61.49073], ["2019-09-17T21:51:45", 14.44113, -61.4921], ["2019-09-17T22:03:58", 14.44308, -61.49523], ["2019-09-17T22:33:58", 14.44677, -61.50287], ["2019-09-18T03:03:05", 14.45218, -61.57275], ["2019-09-18T03:33:32", 14.4553, -61.58099], ["2019-09-18T04:35:34", 14.46213, -61.59393], ["2019-09-18T06:32:10", 14.47286, -61.61224], ["2019-09-18T08:32:56", 14.48509, -61.62857], ["2019-09-18T11:01:09", 14.48221, -61.65042], ["2019-09-18T11:30:56", 14.48119, -61.65768], ["2019-09-18T12:00:49", 14.47995, -61.66634], ["2019-09-18T12:30:49", 14.47759, -61.67484], ["2019-09-18T13:01:30", 14.47551, -61.68439], ["2019-09-18T15:03:14", 14.47341, -61.71991], ["2019-09-18T15:30:21", 14.47449, -61.72733], ["2019-09-18T18:02:58", 14.48518, -61.76639], ["2019-09-18T18:29:35", 14.48729, -61.77429], ["2019-09-18T18:59:36", 14.4899, -61.78336], ["2019-09-18T19:30:33", 14.49286, -61.79276], ["2019-09-18T19:59:22", 14.49597, -61.80219], ["2019-09-18T20:59:32", 14.50251, -61.82098], ["2019-09-18T21:28:44", 14.5049, -61.82867], ["2019-09-18T21:58:42", 14.50711, -61.83496], ["2019-09-18T22:28:38", 14.50997, -61.83926], ["2019-09-18T23:28:32", 14.5133, -61.84512], ["2019-09-19T00:29:01", 14.51452, -61.84885], ["2019-09-19T00:59:01", 14.51632, -61.85065], ["2019-09-19T01:29:01", 14.5195, -61.854], ["2019-09-19T01:58:00", 14.52228, -61.85794], ["2019-09-19T02:27:48", 14.52451, -61.8618], ["2019-09-19T02:57:48", 14.52601, -61.86523], ["2019-09-19T03:29:27", 14.52822, -61.86853], ["2019-09-19T05:29:56", 14.53745, -61.8838], ["2019-09-19T05:57:13", 14.53869, -61.88785], ["2019-09-19T06:29:56", 14.53882, -61.89264], ["2019-09-19T06:57:26", 14.53949, -61.8967], ["2019-09-19T07:27:26", 14.54035, -61.89953], ["2019-09-19T07:57:26", 14.54117, -61.90176], ["2019-09-19T08:26:21", 14.5424, -61.90448], ["2019-09-19T08:57:16", 14.544, -61.90646], ["2019-09-19T09:26:21", 14.54605, -61.90903], ["2019-09-19T09:56:57", 14.54785, -61.91138], ["2019-09-19T10:26:09", 14.54836, -61.91312], ["2019-09-19T12:57:28", 14.54528, -61.92249], ["2019-09-19T14:26:13", 14.54387, -61.92999], ["2019-09-19T14:56:13", 14.54434, -61.93402], ["2019-09-19T15:26:13", 14.544, -61.93762], ["2019-09-19T15:54:30", 14.54374, -61.94102], ["2019-09-19T16:24:30", 14.54408, -61.94368], ["2019-09-19T16:54:30", 14.54554, -61.94583], ["2019-09-19T17:24:25", 14.54716, -61.94922], ["2019-09-19T17:58:06", 14.54892, -61.95416], ["2019-09-19T18:24:21", 14.5498, -61.95813], ["2019-09-19T18:58:06", 14.55046, -61.96222], ["2019-09-19T19:25:13", 14.5504, -61.96572], ["2019-09-19T19:55:13", 14.55066, -61.96915], ["2019-09-19T20:25:13", 14.55109, -61.97336], ["2019-09-19T20:53:39", 14.55928, -61.98473], ["2019-09-19T20:54:30", 14.5529, -61.97746], ["2019-09-19T21:24:30", 14.55655, -61.98175], ["2019-09-19T21:53:39", 14.56018, -61.9855], ["2019-09-19T22:23:59", 14.5647, -61.98938], ["2019-09-19T22:53:20", 14.5687, -61.99399], ["2019-09-19T23:22:59", 14.57295, -61.99975], ["2019-09-19T23:52:59", 14.57797, -62.00687], ["2019-09-20T00:23:19", 14.58213, -62.01601], ["2019-09-20T00:53:19", 14.58586, -62.02425], ["2019-09-20T01:23:19", 14.59019, -62.03275], ["2019-09-20T02:52:19", 14.60284, -62.05682], ["2019-09-20T03:22:27", 14.60704, -62.06391], ["2019-09-20T03:52:27", 14.61004, -62.06846], ["2019-09-20T04:22:27", 14.61244, -62.07224], ["2019-09-20T04:51:36", 14.61478, -62.07545], ["2019-09-20T05:21:36", 14.61723, -62.07845], ["2019-09-20T05:51:36", 14.61993, -62.08145], ["2019-09-20T06:51:27", 14.62832, -62.08643], ["2019-09-20T07:51:02", 14.63674, -62.09044], ["2019-09-20T08:21:27", 14.64082, -62.09341], ["2019-09-20T08:51:02", 14.64387, -62.09619], ["2019-09-20T11:21:26", 14.66954, -62.10638], ["2019-09-20T11:50:29", 14.67378, -62.10966], ["2019-09-20T12:20:29", 14.67884, -62.11438], ["2019-09-20T12:50:02", 14.68541, -62.11917], ["2019-09-20T13:49:54", 14.69666, -62.13028], ["2019-09-20T14:49:50", 14.7062, -62.14469], ["2019-09-20T15:19:50", 14.71208, -62.15121], ["2019-09-20T15:49:50", 14.71873, -62.15619], ["2019-09-20T16:19:25", 14.72563, -62.16061], ["2019-09-20T16:49:25", 14.73245, -62.16473], ["2019-09-20T17:20:28", 14.74061, -62.16876], ["2019-09-20T18:20:53", 14.75661, -62.17617], ["2019-09-20T18:50:53", 14.76476, -62.17969], ["2019-09-20T19:20:53", 14.77291, -62.18338], ["2019-09-20T19:48:37", 14.78025, -62.18692], ["2019-09-20T22:18:08", 14.81988, -62.20078], ["2019-09-20T22:50:32", 14.82726, -62.20187], ["2019-09-20T23:17:55", 14.83148, -62.2038], ["2019-09-21T00:47:25", 14.83885, -62.21367], ["2019-09-21T01:17:25", 14.83949, -62.21839], ["2019-09-21T01:47:25", 14.83958, -62.22345], ["2019-09-21T02:47:07", 14.84081, -62.23709], ["2019-09-21T03:16:43", 14.84334, -62.24581], ["2019-09-21T03:46:43", 14.84557, -62.25319], ["2019-09-21T04:16:43", 14.84849, -62.26117], ["2019-09-21T04:46:31", 14.85213, -62.26905], ["2019-09-21T05:16:31", 14.85573, -62.27557], ["2019-09-21T06:16:23", 14.86519, -62.28876], ["2019-09-21T14:15:29", 14.89024, -62.37503], ["2019-09-21T18:17:27", 14.87413, -62.43188], ["2019-09-22T00:42:47", 14.86942, -62.49185], ["2019-09-22T01:43:29", 14.86386, -62.50115], ["2019-09-22T02:13:29", 14.8603, -62.50561], ["2019-09-22T02:43:29", 14.85652, -62.51102], ["2019-09-22T03:12:27", 14.85316, -62.51596], ["2019-09-22T03:44:09", 14.84996, -62.52261], ["2019-09-22T04:41:57", 14.84376, -62.5376], ["2019-09-22T06:12:59", 14.83762, -62.55385], ["2019-09-22T06:42:59", 14.83547, -62.55857], ["2019-09-22T07:12:59", 14.83435, -62.56329], ["2019-09-22T07:41:25", 14.83411, -62.56723], ["2019-09-22T08:12:27", 14.83507, -62.57187], ["2019-09-22T08:41:14", 14.83625, -62.57623], ["2019-09-22T09:11:10", 14.83679, -62.57987], ["2019-09-22T09:41:10", 14.83748, -62.58322], ["2019-09-22T10:12:39", 14.83828, -62.58635], ["2019-09-22T10:41:03", 14.83896, -62.58875], ["2019-09-22T11:12:39", 14.8403, -62.59296], ["2019-09-22T13:39:58", 14.84888, -62.60837], ["2019-09-22T14:09:41", 14.85018, -62.61188], ["2019-09-22T14:39:41", 14.85207, -62.61514], ["2019-09-22T15:09:41", 14.85379, -62.61771], ["2019-09-22T16:40:58", 14.8579, -62.6246], ["2019-09-22T17:40:58", 14.85845, -62.62556], ["2019-09-22T18:09:05", 14.859, -62.62692], ["2019-09-22T18:40:58", 14.85957, -62.62933], ["2019-09-22T20:38:43", 14.86133, -62.63687], ["2019-09-22T21:09:19", 14.86346, -62.63791], ["2019-09-23T00:38:41", 14.87787, -62.64111], ["2019-09-23T03:38:27", 14.88596, -62.65137], ["2019-09-23T07:36:23", 14.89776, -62.65436], ["2019-09-23T20:03:34", 15.04488, -62.62152], ["2019-09-23T21:04:31", 15.05247, -62.61078], ["2019-09-24T03:04:23", 15.07882, -62.54379], ["2019-09-24T13:59:38", 15.06957, -62.51996], ["2019-09-24T23:56:00", 15.07314, -62.54858], ["2019-09-25T05:24:36", 15.07786, -62.56284], ["2019-09-25T05:54:24", 15.07879, -62.56653], ["2019-09-25T06:24:24", 15.08012, -62.57202], ["2019-09-25T06:54:24", 15.08192, -62.57794], ["2019-09-25T13:52:59", 15.14311, -62.63513], ["2019-09-25T14:23:28", 15.14736, -62.63556], ["2019-09-25T19:51:29", 15.20842, -62.63535], ["2019-09-26T08:18:02", 15.25645, -62.65231], ["2019-09-26T20:45:27", 15.25374, -62.76849], ["2019-09-26T20:51:53", 15.25077, -62.79034], ["2019-09-26T21:21:53", 15.25077, -62.79085], ["2019-09-26T21:51:53", 15.25077, -62.79282], ["2019-09-26T22:14:54", 15.25167, -62.80071], ["2019-09-26T22:44:54", 15.25382, -62.80981], ["2019-09-26T23:14:56", 15.25629, -62.81986], ["2019-09-26T23:44:56", 15.25878, -62.82904], ["2019-09-27T00:14:56", 15.26093, -62.83685], ["2019-09-27T00:44:26", 15.26254, -62.84314], ["2019-09-27T03:14:26", 15.2684, -62.87523], ["2019-09-27T03:44:26", 15.26952, -62.88158], ["2019-09-27T04:14:26", 15.27021, -62.88776], ["2019-09-27T07:43:05", 15.27479, -62.93057], ["2019-09-27T18:39:48", 15.36463, -63.09189], ["2019-09-27T19:10:25", 15.36971, -63.0946], ["2019-09-27T21:09:59", 15.37322, -63.09646], ["2019-09-27T21:39:59", 15.37262, -63.0962], ["2019-09-27T22:09:59", 15.37082, -63.09543], ["2019-09-27T22:39:02", 15.36793, -63.09409], ["2019-09-27T23:09:27", 15.36435, -63.09282], ["2019-09-27T23:39:27", 15.36044, -63.09222], ["2019-09-28T00:09:27", 15.35576, -63.09119], ["2019-09-28T02:08:40", 15.34018, -63.09894], ["2019-09-28T10:35:58", 15.27761, -63.14105], ["2019-09-28T13:34:59", 15.25839, -63.16632], ["2019-09-28T22:02:37", 15.28452, -63.28177], ["2019-09-29T01:31:56", 15.2923, -63.29855], ["2019-09-29T04:00:43", 15.2895, -63.31021], ["2019-09-29T06:00:06", 15.30042, -63.33014], ["2019-09-29T13:28:29", 15.35321, -63.37247], ["2019-09-29T15:27:58", 15.36473, -63.36938], ["2019-09-29T15:57:38", 15.36655, -63.36808], ["2019-09-29T16:27:38", 15.36809, -63.36722], ["2019-09-29T17:57:58", 15.37555, -63.37576], ["2019-09-29T21:26:21", 15.39677, -63.39862], ["2019-09-29T23:55:41", 15.4064, -63.41803], ["2019-09-30T19:50:55", 15.51449, -63.56421], ["2019-09-30T23:21:33", 15.54828, -63.61826], ["2019-10-01T10:18:04", 15.65886, -63.71439], ["2019-10-01T12:19:00", 15.66941, -63.72348], ["2019-10-01T19:16:02", 15.72479, -63.78333], ["2019-10-01T22:16:18", 15.76094, -63.8056], ["2019-10-01T22:44:32", 15.76478, -63.80822], ["2019-10-01T23:14:32", 15.76911, -63.81131], ["2019-10-01T23:44:32", 15.77173, -63.81354], ["2019-10-02T00:44:18", 15.77746, -63.8168], ["2019-10-02T06:13:13", 15.79323, -63.86002], ["2019-10-02T09:45:28", 15.81054, -63.87512], ["2019-10-02T11:13:58", 15.81353, -63.88043], ["2019-10-02T16:42:29", 15.82905, -63.93564], ["2019-10-02T18:42:00", 15.84533, -63.96472], ["2019-10-02T19:10:49", 15.85012, -63.97128], ["2019-10-02T19:41:57", 15.85594, -63.97832], ["2019-10-02T20:11:57", 15.86212, -63.98364], ["2019-10-02T20:41:57", 15.86967, -63.98785], ["2019-10-03T05:38:37", 15.93417, -64.05591], ["2019-10-03T09:09:58", 15.94764, -64.08217], ["2019-10-03T12:37:39", 15.97198, -64.10037], ["2019-10-03T14:07:20", 15.97574, -64.10602], ["2019-10-03T15:38:01", 15.97971, -64.1149], ["2019-10-03T16:06:54", 15.98092, -64.11752], ["2019-10-03T16:38:01", 15.98228, -64.11972], ["2019-10-03T17:08:12", 15.98355, -64.12193], ["2019-10-03T17:38:12", 15.98484, -64.12399], ["2019-10-03T18:37:02", 15.98677, -64.12811], ["2019-10-03T20:06:10", 15.98736, -64.13369], ["2019-10-03T20:36:10", 15.98616, -64.13575], ["2019-10-03T21:06:10", 15.98569, -64.1391], ["2019-10-03T23:34:45", 15.98881, -64.15363], ["2019-10-04T00:34:10", 15.98934, -64.15913], ["2019-10-04T01:04:10", 15.98801, -64.16189], ["2019-10-04T01:34:10", 15.98672, -64.16455], ["2019-10-04T04:04:05", 15.97399, -64.18156], ["2019-10-04T04:34:05", 15.97223, -64.18585], ["2019-10-04T05:04:05", 15.97, -64.18997], ["2019-10-04T08:32:22", 15.95005, -64.2197], ["2019-10-04T12:01:47", 15.93761, -64.27396], ["2019-10-04T13:30:04", 15.93968, -64.29727], ["2019-10-04T14:00:04", 15.94127, -64.30602], ["2019-10-04T14:30:04", 15.94191, -64.31399], ["2019-10-04T20:58:37", 15.97077, -64.41931], ["2019-10-04T22:58:03", 15.99029, -64.44235], ["2019-10-05T10:26:00", 16.06557, -64.46704], ["2019-10-05T16:26:28", 16.06087, -64.48407], ["2019-10-05T21:25:00", 16.05831, -64.51859], ["2019-10-05T23:23:59", 16.05208, -64.54013], ["2019-10-06T01:23:30", 16.04975, -64.56814], ["2019-10-06T01:53:30", 16.05031, -64.57595], ["2019-10-06T02:23:30", 16.05134, -64.58453], ["2019-10-06T03:52:25", 16.05322, -64.60876], ["2019-10-06T04:52:04", 16.05705, -64.62589], ["2019-10-06T05:22:04", 16.05877, -64.63387], ["2019-10-06T05:52:04", 16.0604, -64.64055], ["2019-10-06T07:22:42", 16.06196, -64.65964], ["2019-10-06T10:50:51", 16.0622, -64.69766], ["2019-10-06T11:50:36", 16.06524, -64.71021], ["2019-10-06T14:20:07", 16.08095, -64.73813], ["2019-10-06T20:48:34", 16.14145, -64.80765], ["2019-10-06T21:18:04", 16.14852, -64.81498], ["2019-10-06T21:52:15", 16.14886, -64.81525], ["2019-10-06T22:18:04", 16.15079, -64.81757], ["2019-10-06T23:48:48", 16.15847, -64.82317], ["2019-10-07T00:17:40", 16.16127, -64.82486], ["2019-10-07T00:48:27", 16.16434, -64.8271], ["2019-10-07T01:18:27", 16.16717, -64.82796], ["2019-10-07T01:48:27", 16.17077, -64.8295], ["2019-10-07T21:44:30", 16.28503, -64.922], ["2019-10-08T09:41:26", 16.40527, -64.99133], ["2019-10-08T11:39:15", 16.43113, -65.01], ["2019-10-08T12:09:15", 16.43873, -65.01488], ["2019-10-08T12:39:15", 16.44504, -65.01891], ["2019-10-08T13:10:01", 16.45326, -65.02218], ["2019-10-08T13:40:01", 16.46051, -65.02502], ["2019-10-08T14:10:01", 16.46712, -65.0282], ["2019-10-08T14:38:44", 16.47327, -65.03122], ["2019-10-08T15:10:00", 16.48065, -65.0336], ["2019-10-08T15:10:57", 16.48067, -65.03364], ["2019-10-08T15:40:57", 16.48788, -65.03588], ["2019-10-08T16:10:57", 16.49659, -65.03845], ["2019-10-08T19:39:00", 16.54782, -65.04483], ["2019-10-08T22:38:27", 16.59743, -65.05083], ["2019-10-08T23:38:28", 16.61129, -65.05255], ["2019-10-09T00:37:59", 16.6248, -65.0535], ["2019-10-09T02:06:04", 16.64526, -65.05396], ["2019-10-09T02:36:46", 16.65195, -65.05444], ["2019-10-09T03:05:51", 16.65823, -65.05493], ["2019-10-09T03:35:39", 16.66536, -65.05521], ["2019-10-09T04:05:39", 16.67158, -65.05521], ["2019-10-09T04:35:24", 16.67803, -65.05502], ["2019-10-09T05:05:24", 16.68412, -65.05408], ["2019-10-09T05:37:30", 16.69016, -65.05343], ["2019-10-09T08:05:40", 16.71245, -65.05607], ["2019-10-09T08:35:40", 16.7164, -65.0571], ["2019-10-09T09:05:40", 16.72146, -65.05737], ["2019-10-09T10:05:56", 16.73096, -65.05807], ["2019-10-09T10:34:11", 16.73475, -65.05743], ["2019-10-09T11:34:42", 16.74281, -65.05645], ["2019-10-09T12:04:42", 16.74637, -65.05654], ["2019-10-09T12:34:42", 16.74989, -65.0574], ["2019-10-09T13:03:50", 16.75427, -65.05875], ["2019-10-09T13:34:42", 16.75838, -65.06085], ["2019-10-09T15:34:59", 16.77462, -65.07227], ["2019-10-09T19:02:12", 16.8076, -65.10323], ["2019-10-09T19:33:08", 16.81252, -65.10863], ["2019-10-09T20:02:12", 16.81765, -65.11404], ["2019-10-09T20:32:55", 16.82362, -65.11978], ["2019-10-09T21:02:58", 16.82894, -65.1251], ["2019-10-09T21:32:58", 16.83422, -65.12982], ["2019-10-09T21:52:19", 16.83778, -65.13245], ["2019-10-10T00:01:19", 16.86281, -65.14843], ["2019-10-10T00:31:29", 16.86948, -65.15146], ["2019-10-10T01:00:58", 16.87499, -65.15375], ["2019-10-10T01:31:29", 16.8812, -65.1561], ["2019-10-10T03:30:15", 16.905, -65.16919], ["2019-10-10T04:00:05", 16.9119, -65.174], ["2019-10-10T04:30:05", 16.91847, -65.17752], ["2019-10-10T05:29:42", 16.93149, -65.18331], ["2019-10-10T07:29:29", 16.95672, -65.19282], ["2019-10-10T07:59:29", 16.962, -65.19531], ["2019-10-10T08:29:29", 16.96698, -65.19788], ["2019-10-10T11:28:01", 17.00041, -65.21365], ["2019-10-10T11:57:42", 17.00648, -65.21604], ["2019-10-10T12:27:42", 17.01129, -65.2175], ["2019-10-10T12:58:43", 17.01627, -65.21942], ["2019-10-10T13:27:34", 17.02055, -65.22125], ["2019-10-10T14:27:32", 17.02826, -65.22521], ["2019-10-10T14:57:58", 17.03196, -65.2275], ["2019-10-10T15:27:58", 17.03591, -65.2305], ["2019-10-10T15:57:58", 17.04042, -65.23428], ["2019-10-10T16:27:04", 17.0449, -65.23831], ["2019-10-10T16:58:10", 17.05072, -65.24271], ["2019-10-10T17:28:07", 17.05281, -65.24548], ["2019-10-10T17:56:53", 17.06341, -65.25233], ["2019-10-10T18:26:53", 17.06985, -65.25696], ["2019-10-10T18:56:28", 17.07704, -65.26255], ["2019-10-10T19:26:28", 17.08451, -65.26813], ["2019-10-10T19:56:59", 17.09265, -65.2737], ["2019-10-10T20:26:15", 17.09977, -65.27826], ["2019-10-10T20:56:31", 17.10691, -65.28194], ["2019-10-10T23:25:36", 17.128, -65.29147], ["2019-10-10T23:56:31", 17.13105, -65.29228], ["2019-10-11T00:26:31", 17.13362, -65.29407], ["2019-10-11T00:56:31", 17.1368, -65.29613], ["2019-10-11T01:25:06", 17.13913, -65.29822], ["2019-10-11T01:56:13", 17.14143, -65.29987], ["2019-10-11T02:25:32", 17.14347, -65.30215], ["2019-10-11T02:55:32", 17.14484, -65.30515], ["2019-10-11T03:24:30", 17.14604, -65.3088], ["2019-10-11T03:54:05", 17.14792, -65.31338], ["2019-10-11T04:24:05", 17.15028, -65.31784], ["2019-10-11T04:53:34", 17.15335, -65.32298], ["2019-10-11T05:23:34", 17.1567, -65.32813], ["2019-10-11T05:54:13", 17.16043, -65.33359], ["2019-10-11T06:23:12", 17.16358, -65.33911], ["2019-10-11T06:53:31", 17.16707, -65.34511], ["2019-10-11T07:22:53", 17.17023, -65.35025], ["2019-10-11T07:53:06", 17.17316, -65.35559], ["2019-10-11T08:22:38", 17.1764, -65.36087], ["2019-10-11T08:52:55", 17.17967, -65.36633], ["2019-10-11T09:22:31", 17.18247, -65.37157], ["2019-10-11T09:52:21", 17.18575, -65.37682], ["2019-10-11T10:22:21", 17.18923, -65.38223], ["2019-10-11T10:52:38", 17.19304, -65.38727], ["2019-10-11T11:22:05", 17.19679, -65.39233], ["2019-10-11T11:52:27", 17.20026, -65.39838], ["2019-10-11T12:51:56", 17.20726, -65.4111], ["2019-10-11T13:21:56", 17.21142, -65.4184], ["2019-10-11T13:51:56", 17.21648, -65.42621], ["2019-10-11T14:21:23", 17.22208, -65.43356], ["2019-10-11T14:51:23", 17.22796, -65.4406], ["2019-10-11T15:21:23", 17.2332, -65.44669], ["2019-10-11T15:51:58", 17.23826, -65.45282], ["2019-10-11T16:21:27", 17.24264, -65.45815], ["2019-10-11T16:51:27", 17.24702, -65.46399], ["2019-10-11T17:20:54", 17.25183, -65.47018], ["2019-10-11T17:51:24", 17.25672, -65.47659], ["2019-10-11T18:20:59", 17.26166, -65.4826], ["2019-10-11T18:50:59", 17.26681, -65.48853], ["2019-10-11T19:20:26", 17.27245, -65.49429], ["2019-10-11T19:50:12", 17.27843, -65.50033], ["2019-10-11T20:20:12", 17.28418, -65.50565], ["2019-10-11T20:49:57", 17.29002, -65.5108], ["2019-10-11T21:19:57", 17.29573, -65.51578], ["2019-10-11T21:52:33", 17.30242, -65.5209], ["2019-10-11T22:19:58", 17.30779, -65.52454], ["2019-10-11T22:50:28", 17.31382, -65.52804], ["2019-10-11T23:19:51", 17.31877, -65.53131], ["2019-10-12T01:19:21", 17.33926, -65.54621], ["2019-10-12T01:49:57", 17.34385, -65.55011], ["2019-10-12T02:19:21", 17.3481, -65.55368], ["2019-10-12T02:49:40", 17.35251, -65.55725], ["2019-10-12T03:19:23", 17.35642, -65.56075], ["2019-10-12T03:49:23", 17.36028, -65.56461], ["2019-10-12T04:18:55", 17.36392, -65.56841], ["2019-10-12T04:48:55", 17.3671, -65.57227], ["2019-10-12T05:18:03", 17.3696, -65.57617], ["2019-10-12T05:48:26", 17.37137, -65.58032], ["2019-10-12T06:18:03", 17.37299, -65.58459], ["2019-10-12T06:47:50", 17.37479, -65.58923], ["2019-10-12T07:17:50", 17.37664, -65.59335], ["2019-10-12T07:48:08", 17.37891, -65.59738], ["2019-10-12T08:17:40", 17.38105, -65.60012], ["2019-10-12T08:48:28", 17.38398, -65.6033], ["2019-10-12T09:17:56", 17.38678, -65.60617], ["2019-10-12T09:47:56", 17.38983, -65.60953], ["2019-10-12T10:17:13", 17.3927, -65.61284], ["2019-10-12T10:47:58", 17.3959, -65.6163], ["2019-10-12T11:17:02", 17.39895, -65.61932], ["2019-10-12T11:46:50", 17.40199, -65.62217], ["2019-10-12T12:16:50", 17.40461, -65.62466], ["2019-10-12T12:47:28", 17.40724, -65.62715], ["2019-10-12T13:17:28", 17.41003, -65.63007], ["2019-10-12T13:47:28", 17.4126, -65.63333], ["2019-10-12T14:16:58", 17.41509, -65.63666], ["2019-10-12T14:46:58", 17.41749, -65.64044], ["2019-10-12T15:16:33", 17.42024, -65.64478], ["2019-10-12T16:16:07", 17.42554, -65.65334], ["2019-10-12T16:46:55", 17.42775, -65.65817], ["2019-10-12T17:16:07", 17.42962, -65.66321], ["2019-10-12T17:46:27", 17.43127, -65.66911], ["2019-10-12T18:16:27", 17.43299, -65.67503], ["2019-10-12T18:46:27", 17.43514, -65.6812], ["2019-10-12T19:16:09", 17.43691, -65.68733], ["2019-10-12T19:46:09", 17.43936, -65.69351], ["2019-10-12T20:15:59", 17.44246, -65.69889], ["2019-10-12T20:45:59", 17.44564, -65.70456], ["2019-10-12T21:15:02", 17.44857, -65.70929], ["2019-10-12T21:21:39", 17.45132, -65.71413], ["2019-10-12T21:51:39", 17.45171, -65.7149], ["2019-10-12T22:14:44", 17.45343, -65.71869], ["2019-10-13T04:13:05", 17.48445, -65.78458], ["2019-10-13T04:42:39", 17.48656, -65.79116], ["2019-10-13T05:12:39", 17.48862, -65.79718], ["2019-10-13T05:42:24", 17.49041, -65.80346], ["2019-10-13T06:12:24", 17.49178, -65.80887], ["2019-10-13T06:42:24", 17.49311, -65.81444], ["2019-10-13T07:12:27", 17.49468, -65.82012], ["2019-10-13T07:42:27", 17.49605, -65.82577], ["2019-10-13T08:11:41", 17.49762, -65.83093], ["2019-10-13T08:41:26", 17.4993, -65.83556], ["2019-10-13T09:11:26", 17.50024, -65.83994], ["2019-10-13T09:41:15", 17.50078, -65.84506], ["2019-10-13T10:11:15", 17.5016, -65.84995], ["2019-10-13T10:41:54", 17.50245, -65.85538], ["2019-10-13T11:11:57", 17.50335, -65.86126], ["2019-10-13T11:41:57", 17.50404, -65.86812], ["2019-10-13T12:10:47", 17.50522, -65.8754], ["2019-10-13T12:41:29", 17.50715, -65.8826], ["2019-10-13T15:40:06", 17.52146, -65.9218], ["2019-10-13T19:09:15", 17.53517, -65.96762], ["2019-10-13T19:39:15", 17.53719, -65.97431], ["2019-10-13T20:09:15", 17.53895, -65.98135], ["2019-10-13T20:39:57", 17.54082, -65.98904], ["2019-10-13T21:09:08", 17.54274, -65.996], ["2019-10-13T21:22:21", 17.54529, -66.0042], ["2019-10-13T21:52:21", 17.54576, -66.00548], ["2019-10-14T01:08:17", 17.55749, -66.04113], ["2019-10-14T01:38:56", 17.55748, -66.04568], ["2019-10-14T02:08:17", 17.55719, -66.05005], ["2019-10-14T03:38:56", 17.55405, -66.06149], ["2019-10-14T04:08:25", 17.55248, -66.06505], ["2019-10-14T04:38:25", 17.55072, -66.06856], ["2019-10-14T05:07:37", 17.5487, -66.0722], ["2019-10-14T05:37:30", 17.54665, -66.07675], ["2019-10-14T06:07:30", 17.54493, -66.0813], ["2019-10-14T07:38:27", 17.5405, -66.09972], ["2019-10-14T08:07:01", 17.53917, -66.10636], ["2019-10-14T08:37:01", 17.5378, -66.11366], ["2019-10-14T09:07:01", 17.53703, -66.12061], ["2019-10-14T10:06:35", 17.53605, -66.13506], ["2019-10-14T10:36:35", 17.53562, -66.14278], ["2019-10-14T11:06:35", 17.53545, -66.15042], ["2019-10-14T12:06:14", 17.53385, -66.16449], ["2019-10-14T12:36:28", 17.53273, -66.17062], ["2019-10-14T13:35:56", 17.5302, -66.18358], ["2019-10-14T14:05:56", 17.52745, -66.18959], ["2019-10-14T14:35:56", 17.52492, -66.19577], ["2019-10-14T15:06:57", 17.52227, -66.2026], ["2019-10-14T15:36:57", 17.52, -66.2086], ["2019-10-14T16:06:57", 17.51712, -66.21572], ["2019-10-14T16:35:36", 17.51537, -66.22264], ["2019-10-14T17:05:36", 17.51357, -66.23062], ["2019-10-14T17:35:07", 17.51154, -66.23856], ["2019-10-14T18:05:58", 17.50932, -66.24688], ["2019-10-14T18:34:45", 17.5074, -66.25476], ["2019-10-14T19:04:45", 17.50598, -66.26327], ["2019-10-14T19:34:45", 17.50413, -66.27142], ["2019-10-14T20:05:28", 17.50228, -66.28012], ["2019-10-14T21:05:13", 17.49684, -66.29604], ["2019-10-14T22:05:30", 17.49215, -66.31287], ["2019-10-14T22:35:30", 17.49103, -66.32068], ["2019-10-14T23:05:30", 17.49039, -66.32892], ["2019-10-14T23:34:25", 17.49015, -66.33642], ["2019-10-15T00:04:58", 17.49001, -66.34372], ["2019-10-15T00:34:16", 17.48989, -66.35107], ["2019-10-15T01:05:27", 17.49031, -66.35919], ["2019-10-15T01:34:04", 17.49141, -66.36622], ["2019-10-15T02:04:04", 17.49253, -66.37257], ["2019-10-15T02:34:04", 17.49274, -66.3772], ["2019-10-15T03:04:57", 17.49199, -66.38077], ["2019-10-15T04:05:28", 17.48874, -66.38593], ["2019-10-15T06:34:56", 17.48237, -66.40009], ["2019-10-15T07:03:05", 17.48025, -66.40308], ["2019-10-15T07:34:56", 17.47752, -66.40694], ["2019-10-15T09:03:59", 17.46856, -66.42216], ["2019-10-15T09:33:59", 17.46543, -66.42834], ["2019-10-15T10:03:59", 17.46251, -66.43546], ["2019-10-15T12:31:50", 17.45118, -66.47107], ["2019-10-15T13:02:58", 17.45025, -66.47766], ["2019-10-15T13:31:50", 17.44895, -66.48352], ["2019-10-15T14:02:58", 17.44746, -66.49008], ["2019-10-15T17:31:16", 17.44217, -66.52204], ["2019-10-15T18:02:27", 17.44236, -66.52478], ["2019-10-15T18:31:16", 17.44264, -66.52737], ["2019-10-15T19:01:59", 17.44318, -66.53052], ["2019-10-15T20:01:30", 17.44346, -66.5376], ["2019-10-15T20:30:33", 17.44286, -66.54105], ["2019-10-15T21:01:29", 17.44238, -66.54523], ["2019-10-15T21:30:33", 17.44184, -66.54938], ["2019-10-15T22:00:56", 17.441, -66.5527], ["2019-10-15T22:30:06", 17.4399, -66.55619], ["2019-10-15T23:00:06", 17.43818, -66.55842], ["2019-10-15T23:30:06", 17.43629, -66.56134], ["2019-10-16T02:59:12", 17.4224, -66.58826], ["2019-10-16T03:58:43", 17.4189, -66.59424], ["2019-10-16T04:28:43", 17.41658, -66.59672], ["2019-10-16T04:58:43", 17.41409, -66.59845], ["2019-10-16T05:29:57", 17.41115, -66.6001], ["2019-10-16T05:59:57", 17.40827, -66.60173], ["2019-10-16T06:29:57", 17.40527, -66.60422], ["2019-10-16T06:58:21", 17.40209, -66.60699], ["2019-10-16T08:28:26", 17.3933, -66.61505], ["2019-10-16T08:57:27", 17.39044, -66.61722], ["2019-10-16T09:28:59", 17.3879, -66.6196], ["2019-10-16T09:57:27", 17.38611, -66.62219], ["2019-10-16T10:57:16", 17.38264, -66.62848], ["2019-10-16T16:56:28", 17.36315, -66.68893], ["2019-10-16T17:25:27", 17.36325, -66.69379], ["2019-10-16T17:55:17", 17.36324, -66.69891], ["2019-10-16T18:25:17", 17.36333, -66.70389], ["2019-10-16T18:55:56", 17.36401, -66.70883], ["2019-10-16T19:25:28", 17.365, -66.71245], ["2019-10-16T19:55:28", 17.36624, -66.71597], ["2019-10-16T20:24:52", 17.36758, -66.7197], ["2019-10-16T20:54:57", 17.37204, -66.73069], ["2019-10-16T21:24:29", 17.37123, -66.72781], ["2019-10-16T21:54:57", 17.37222, -66.73172], ["2019-10-16T22:24:19", 17.37268, -66.73486], ["2019-10-16T22:54:00", 17.37366, -66.73833], ["2019-10-16T23:24:00", 17.37426, -66.74151], ["2019-10-17T00:54:27", 17.37521, -66.75037], ["2019-10-17T01:23:57", 17.37482, -66.75292], ["2019-10-17T01:53:57", 17.37418, -66.75548], ["2019-10-17T02:23:21", 17.37315, -66.75745], ["2019-10-17T02:53:56", 17.37127, -66.75911], ["2019-10-17T03:23:02", 17.36951, -66.76009], ["2019-10-17T03:53:56", 17.36822, -66.76151], ["2019-10-17T04:22:36", 17.3676, -66.76345], ["2019-10-17T04:52:36", 17.36764, -66.76646], ["2019-10-17T05:22:36", 17.36777, -66.76895], ["2019-10-17T05:52:23", 17.36739, -66.77184], ["2019-10-17T06:22:23", 17.36739, -66.7739], ["2019-10-17T08:23:02", 17.36802, -66.7838], ["2019-10-17T08:53:02", 17.36738, -66.78577], ["2019-10-17T09:23:02", 17.36639, -66.7868], ["2019-10-17T09:52:46", 17.36533, -66.78765], ["2019-10-17T10:22:46", 17.36482, -66.78894], ["2019-10-17T10:51:38", 17.36407, -66.79067], ["2019-10-17T12:22:06", 17.35953, -66.79785], ["2019-10-17T13:50:56", 17.35463, -66.80432], ["2019-10-17T14:50:43", 17.35082, -66.80963], ["2019-10-17T15:20:29", 17.34907, -66.81417], ["2019-10-17T15:50:29", 17.34783, -66.81847], ["2019-10-17T16:20:29", 17.34676, -66.82335], ["2019-10-17T16:50:24", 17.34652, -66.82974], ["2019-10-17T17:20:24", 17.34678, -66.8366], ["2019-10-17T17:50:24", 17.34811, -66.84442], ["2019-10-17T18:49:56", 17.35126, -66.86107], ["2019-10-17T19:19:56", 17.35341, -66.86897], ["2019-10-17T19:49:56", 17.35594, -66.87738], ["2019-10-17T20:19:08", 17.35821, -66.88535], ["2019-10-17T20:49:08", 17.36113, -66.89256], ["2019-10-17T21:19:08", 17.36413, -66.89874], ["2019-10-17T21:49:57", 17.36777, -66.90366], ["2019-10-17T23:18:45", 17.37591, -66.91382], ["2019-10-17T23:49:27", 17.37711, -66.91623], ["2019-10-18T00:18:24", 17.37751, -66.918], ["2019-10-18T00:49:03", 17.37731, -66.91998], ["2019-10-18T01:17:39", 17.37652, -66.9224], ["2019-10-18T01:47:39", 17.37562, -66.92446], ["2019-10-18T02:17:39", 17.3745, -66.92661], ["2019-10-18T02:47:05", 17.37349, -66.92975], ["2019-10-18T03:17:19", 17.37375, -66.93237], ["2019-10-18T03:47:05", 17.37358, -66.93523], ["2019-10-18T08:47:31", 17.37447, -66.98267], ["2019-10-18T09:45:10", 17.37259, -66.9905], ["2019-10-18T10:15:10", 17.37143, -66.99402], ["2019-10-18T10:45:10", 17.37092, -66.99771], ["2019-10-18T11:16:18", 17.36983, -67.00098], ["2019-10-18T11:46:30", 17.36734, -67.00345], ["2019-10-18T12:16:30", 17.36554, -67.00705], ["2019-10-18T12:44:26", 17.36397, -67.01085], ["2019-10-18T13:14:23", 17.36243, -67.01535], ["2019-10-18T13:45:59", 17.36034, -67.02054], ["2019-10-18T14:45:27", 17.35673, -67.02979], ["2019-10-18T15:15:27", 17.35557, -67.03451], ["2019-10-18T15:45:27", 17.35471, -67.03949], ["2019-10-18T17:13:34", 17.35399, -67.05504], ["2019-10-18T17:43:34", 17.35403, -67.06028], ["2019-10-18T18:13:34", 17.35369, -67.06491], ["2019-10-18T18:44:07", 17.35387, -67.07077], ["2019-10-18T19:13:13", 17.35359, -67.07678], ["2019-10-18T20:44:53", 17.3527, -67.09671], ["2019-10-18T21:12:57", 17.35244, -67.10266], ["2019-10-18T21:44:53", 17.3521, -67.10863], ["2019-10-18T22:12:41", 17.35182, -67.1131], ["2019-10-18T22:43:27", 17.35169, -67.11761], ["2019-10-18T23:13:27", 17.35182, -67.12164], ["2019-10-18T23:42:12", 17.35149, -67.12512], ["2019-10-19T00:13:57", 17.3506, -67.12961], ["2019-10-19T00:41:55", 17.34959, -67.13367], ["2019-10-19T04:11:14", 17.34353, -67.15326], ["2019-10-19T05:42:55", 17.34196, -67.16135], ["2019-10-19T06:11:21", 17.34202, -67.16446], ["2019-10-19T07:10:32", 17.34305, -67.17198], ["2019-10-19T07:40:32", 17.34326, -67.17533], ["2019-10-19T08:10:32", 17.3436, -67.1791], ["2019-10-19T08:41:42", 17.34374, -67.18253], ["2019-10-19T09:09:57", 17.3435, -67.18564], ["2019-10-19T10:42:04", 17.34607, -67.19644], ["2019-10-19T11:09:13", 17.34756, -67.2002], ["2019-10-19T11:39:13", 17.34958, -67.20441], ["2019-10-19T12:09:59", 17.35201, -67.20824], ["2019-10-19T12:39:59", 17.3551, -67.2121], ["2019-10-19T13:09:59", 17.3581, -67.21588], ["2019-10-19T13:39:55", 17.36074, -67.21911], ["2019-10-19T14:09:55", 17.36293, -67.22177], ["2019-10-19T14:40:25", 17.36418, -67.22338], ["2019-10-19T15:10:25", 17.3653, -67.22528], ["2019-10-19T16:40:11", 17.36966, -67.22958], ["2019-10-19T17:37:50", 17.37137, -67.23291], ["2019-10-19T19:07:27", 17.37476, -67.23447], ["2019-10-19T20:07:21", 17.37472, -67.23578], ["2019-10-19T20:52:14", 17.37385, -67.24196], ["2019-10-19T21:22:14", 17.37376, -67.24231], ["2019-10-19T21:52:14", 17.37376, -67.24274], ["2019-10-19T22:36:55", 17.37321, -67.24481], ["2019-10-19T23:06:45", 17.37415, -67.24544], ["2019-10-19T23:36:45", 17.37539, -67.24561], ["2019-10-20T00:06:39", 17.37756, -67.24597], ["2019-10-20T00:36:36", 17.38135, -67.24606], ["2019-10-20T01:06:36", 17.38508, -67.24512], ["2019-10-20T05:34:51", 17.37982, -67.2226], ["2019-10-20T06:06:28", 17.37694, -67.22107], ["2019-10-20T06:34:51", 17.37415, -67.22002], ["2019-10-20T07:06:01", 17.37178, -67.21935], ["2019-10-20T07:34:35", 17.36942, -67.21881], ["2019-10-20T08:34:40", 17.36255, -67.21639], ["2019-10-20T09:35:28", 17.35403, -67.21753], ["2019-10-20T11:07:53", 17.34267, -67.22033], ["2019-10-20T11:37:53", 17.33915, -67.22291], ["2019-10-20T12:07:53", 17.33627, -67.22488], ["2019-10-20T12:34:55", 17.33441, -67.22708], ["2019-10-20T15:03:33", 17.32704, -67.24782], ["2019-10-20T15:33:58", 17.32588, -67.25223], ["2019-10-20T16:03:58", 17.32489, -67.25592], ["2019-10-20T16:36:11", 17.32365, -67.26031], ["2019-10-20T17:32:55", 17.32247, -67.26868], ["2019-10-20T18:04:28", 17.32238, -67.2741], ["2019-10-20T18:32:50", 17.32275, -67.27887], ["2019-10-20T19:02:46", 17.32336, -67.28382], ["2019-10-20T19:32:46", 17.32405, -67.28931], ["2019-10-21T00:31:31", 17.35164, -67.35787], ["2019-10-21T02:04:41", 17.37108, -67.37692], ["2019-10-21T05:03:41", 17.41333, -67.40799], ["2019-10-21T10:30:26", 17.50285, -67.43591], ["2019-10-21T11:00:14", 17.50937, -67.43407], ["2019-10-21T12:00:00", 17.52014, -67.43051], ["2019-10-21T12:59:40", 17.52891, -67.42944], ["2019-10-21T13:29:38", 17.53313, -67.42967], ["2019-10-21T13:59:38", 17.53665, -67.43017], ["2019-10-21T14:29:56", 17.53989, -67.43066], ["2019-10-21T16:28:43", 17.54896, -67.43313], ["2019-10-21T16:58:43", 17.5505, -67.4345], ["2019-10-21T17:28:43", 17.55222, -67.4357], ["2019-10-21T18:59:14", 17.56027, -67.44359], ["2019-10-21T19:29:14", 17.56319, -67.44651], ["2019-10-21T19:59:14", 17.56637, -67.4502], ["2019-10-21T20:28:17", 17.5698, -67.45377], ["2019-10-22T01:27:39", 17.58437, -67.47498], ["2019-10-22T04:59:26", 17.59225, -67.49216], ["2019-10-22T11:26:59", 17.64254, -67.55115], ["2019-10-22T11:55:27", 17.64826, -67.55322], ["2019-10-22T12:55:11", 17.66161, -67.55652], ["2019-10-22T14:26:26", 17.67975, -67.56277], ["2019-10-22T15:24:21", 17.69199, -67.56914], ["2019-10-22T15:54:21", 17.69684, -67.57223], ["2019-10-22T16:24:21", 17.70195, -67.57559], ["2019-10-22T16:54:57", 17.70797, -67.57953], ["2019-10-22T19:23:39", 17.73973, -67.60272], ["2019-10-22T19:53:39", 17.74681, -67.60762], ["2019-10-22T20:23:39", 17.7523, -67.61199], ["2019-10-22T20:53:18", 17.75805, -67.61685], ["2019-10-22T21:23:18", 17.7632, -67.62139], ["2019-10-22T21:52:54", 17.77016, -67.6264], ["2019-10-22T22:22:54", 17.776, -67.63052], ["2019-10-22T22:52:54", 17.78212, -67.63498], ["2019-10-22T23:23:31", 17.78736, -67.63806], ["2019-10-23T00:26:06", 17.79861, -67.64525], ["2019-10-23T03:21:48", 17.83023, -67.66927], ["2019-10-23T03:52:42", 17.8354, -67.67361], ["2019-10-23T04:21:48", 17.8407, -67.67691], ["2019-10-23T04:51:17", 17.84717, -67.67998], ["2019-10-23T05:21:17", 17.85378, -67.68298], ["2019-10-23T06:51:13", 17.87402, -67.68881], ["2019-10-23T07:21:13", 17.88132, -67.69078], ["2019-10-23T07:51:13", 17.88922, -67.69318], ["2019-10-23T08:21:42", 17.8958, -67.69566], ["2019-10-23T08:51:42", 17.90237, -67.69772], ["2019-10-23T09:20:27", 17.9081, -67.69968], ["2019-10-23T14:19:20", 17.94926, -67.74773], ["2019-10-23T16:18:40", 17.97499, -67.78009], ["2019-10-23T16:48:29", 17.98317, -67.78776], ["2019-10-23T17:18:29", 17.99111, -67.79385], ["2019-10-23T17:49:04", 18.00034, -67.80176], ["2019-10-23T18:19:04", 18.00914, -67.8082], ["2019-10-23T18:49:04", 18.01837, -67.81421], ["2019-10-23T19:18:22", 18.02722, -67.81995], ["2019-10-23T22:17:24", 18.07815, -67.83651], ["2019-10-24T06:47:30", 18.13631, -67.87378], ["2019-10-24T07:15:00", 18.13681, -67.87582], ["2019-10-24T09:44:22", 18.13272, -67.87445], ["2019-10-24T10:14:07", 18.13287, -67.87482], ["2019-10-24T10:44:07", 18.13291, -67.87714], ["2019-10-24T11:14:55", 18.13314, -67.88065], ["2019-10-24T12:14:57", 18.13239, -67.88876], ["2019-10-24T14:14:17", 18.12617, -67.91345], ["2019-10-24T16:42:32", 18.11156, -67.95084], ["2019-10-24T18:42:06", 18.12057, -67.95007], ["2019-10-24T19:12:06", 18.12761, -67.94638], ["2019-10-24T19:42:06", 18.13439, -67.9426], ["2019-10-24T20:11:57", 18.13911, -67.93743], ["2019-10-24T20:41:57", 18.14336, -67.93185], ["2019-10-24T20:51:57", 18.14602, -67.92506], ["2019-10-24T21:41:52", 18.14597, -67.92511], ["2019-10-24T21:51:57", 18.14632, -67.92404], ["2019-10-24T22:12:41", 18.14642, -67.92236], ["2019-10-24T23:12:26", 18.14579, -67.91952], ["2019-10-24T23:41:29", 18.14429, -67.91922], ["2019-10-25T00:12:26", 18.14245, -67.91986], ["2019-10-25T00:41:11", 18.14058, -67.92184], ["2019-10-25T01:12:28", 18.13754, -67.92511], ["2019-10-25T01:41:27", 18.13397, -67.92758], ["2019-10-25T02:11:27", 18.13157, -67.93161], ["2019-10-25T04:11:27", 18.12081, -67.9541], ["2019-10-25T04:40:58", 18.11936, -67.95992], ["2019-10-25T05:10:58", 18.11842, -67.9649], ["2019-10-25T05:40:14", 18.11765, -67.96984], ["2019-10-25T06:11:27", 18.11686, -67.97385], ["2019-10-25T06:39:54", 18.11595, -67.97562], ["2019-10-25T07:10:33", 18.11562, -67.97845], ["2019-10-25T07:39:47", 18.11636, -67.98138], ["2019-10-25T08:09:34", 18.12115, -67.98454], ["2019-10-25T08:39:34", 18.12819, -67.98849], ["2019-10-25T09:39:16", 18.1427, -67.99368], ["2019-10-25T10:10:43", 18.14951, -67.9939], ["2019-10-25T10:40:43", 18.15629, -67.9939], ["2019-10-25T11:39:26", 18.17326, -68.00194], ["2019-10-25T12:08:31", 18.18185, -68.00412], ["2019-10-25T12:39:57", 18.19015, -68.00336], ["2019-10-25T13:08:10", 18.19616, -68.00165], ["2019-10-25T16:38:59", 18.24668, -67.99429], ["2019-10-25T17:08:18", 18.25478, -67.99186], ["2019-10-25T17:38:18", 18.26336, -67.98911], ["2019-10-25T18:06:46", 18.27078, -67.98762], ["2019-10-25T18:36:46", 18.27769, -67.98642], ["2019-10-25T19:06:46", 18.28404, -67.98453], ["2019-10-25T19:36:43", 18.2911, -67.98325], ["2019-10-25T20:06:43", 18.29719, -67.98248], ["2019-10-25T20:36:31", 18.30258, -67.98357], ["2019-10-25T21:06:31", 18.30786, -67.9852], ["2019-10-25T21:36:57", 18.31451, -67.98514], ["2019-10-25T22:36:58", 18.32531, -67.98035], ["2019-10-25T23:05:40", 18.32888, -67.9786], ["2019-10-25T23:35:40", 18.32974, -67.97611], ["2019-10-26T00:05:40", 18.32802, -67.97345], ["2019-10-26T00:35:28", 18.32464, -67.96871], ["2019-10-26T01:05:28", 18.32082, -67.9621], ["2019-10-26T04:35:56", 18.30919, -67.9278], ["2019-10-26T05:04:46", 18.31068, -67.93026], ["2019-10-26T05:34:57", 18.31184, -67.93407], ["2019-10-26T06:34:58", 18.3185, -67.94595], ["2019-10-26T07:34:29", 18.33143, -67.95831], ["2019-10-26T08:04:29", 18.33946, -67.9644], ["2019-10-26T08:34:29", 18.34882, -67.96964], ["2019-10-26T10:03:50", 18.37829, -67.98298], ["2019-10-26T10:33:50", 18.38421, -67.98804], ["2019-10-26T11:03:50", 18.38812, -67.99353], ["2019-10-26T11:33:37", 18.39042, -67.99721], ["2019-10-26T12:03:37", 18.39222, -67.99936], ["2019-10-26T14:33:57", 18.39047, -67.98611], ["2019-10-26T15:02:37", 18.38841, -67.98175], ["2019-10-26T15:33:04", 18.38688, -67.97653], ["2019-10-26T16:34:10", 18.38644, -67.96572], ["2019-10-26T18:03:58", 18.39277, -67.95681], ["2019-10-26T18:32:29", 18.39657, -67.96011], ["2019-10-26T19:02:29", 18.40245, -67.965], ["2019-10-26T19:32:29", 18.41017, -67.97144], ["2019-10-26T20:01:18", 18.41785, -67.97884], ["2019-10-26T20:31:45", 18.42632, -67.98797], ["2019-10-26T22:30:57", 18.47056, -68.01005], ["2019-10-26T23:00:21", 18.47924, -68.01184], ["2019-10-26T23:30:57", 18.48764, -68.01511], ["2019-10-27T00:00:09", 18.49428, -68.01849], ["2019-10-27T00:30:56", 18.50115, -68.02063], ["2019-10-27T00:59:54", 18.50405, -68.02249], ["2019-10-27T01:30:58", 18.50293, -68.02652], ["2019-10-27T01:59:46", 18.5012, -68.02887], ["2019-10-27T02:29:58", 18.49993, -68.03113], ["2019-10-27T02:59:29", 18.49912, -68.03243], ["2019-10-27T03:29:10", 18.49774, -68.03549], ["2019-10-27T03:59:10", 18.4974, -68.03738], ["2019-10-27T04:29:26", 18.49435, -68.0374], ["2019-10-27T04:59:27", 18.49235, -68.03485], ["2019-10-27T05:29:27", 18.49119, -68.03064], ["2019-10-27T05:58:58", 18.49067, -68.02601], ["2019-10-27T06:28:58", 18.48977, -68.02103], ["2019-10-27T06:58:24", 18.48831, -68.01833], ["2019-10-27T07:28:39", 18.48582, -68.0184], ["2019-10-27T07:58:04", 18.48209, -68.02097], ["2019-10-27T08:28:40", 18.47717, -68.02597], ["2019-10-27T08:57:50", 18.47198, -68.03122], ["2019-10-27T09:27:38", 18.46508, -68.03634], ["2019-10-27T09:57:38", 18.46002, -68.03857], ["2019-10-27T10:28:00", 18.4571, -68.04201], ["2019-10-27T10:58:56", 18.45484, -68.04738], ["2019-10-27T11:28:56", 18.45068, -68.05194], ["2019-10-27T11:57:14", 18.44512, -68.05441], ["2019-10-27T12:56:54", 18.42918, -68.05671], ["2019-10-27T13:26:54", 18.41892, -68.061], ["2019-10-27T13:56:54", 18.41072, -68.06502], ["2019-10-27T14:26:34", 18.40334, -68.06797], ["2019-10-27T14:56:34", 18.39772, -68.07123], ["2019-10-27T15:26:56", 18.39163, -68.0708], ["2019-10-27T15:56:25", 18.38733, -68.06822], ["2019-10-27T16:26:25", 18.38106, -68.06426], ["2019-10-27T16:55:56", 18.37349, -68.05777], ["2019-10-27T16:56:09", 18.37345, -68.05784], ["2019-10-27T17:26:09", 18.36693, -68.05844], ["2019-10-27T17:55:56", 18.35972, -68.06156], ["2019-10-27T18:25:56", 18.35247, -68.06482], ["2019-10-27T18:55:27", 18.34875, -68.06735], ["2019-10-27T19:25:10", 18.35152, -68.06931], ["2019-10-27T19:55:10", 18.355, -68.07025], ["2019-10-27T20:25:28", 18.35864, -68.07178], ["2019-10-27T20:54:55", 18.36253, -68.07248], ["2019-10-27T21:25:26", 18.372, -68.07035], ["2019-10-27T21:52:04", 18.37197, -68.07034], ["2019-10-27T22:25:26", 18.37745, -68.0658], ["2019-10-28T00:24:27", 18.37976, -68.0701], ["2019-10-28T00:54:00", 18.37805, -68.07357], ["2019-10-28T01:24:00", 18.375, -68.07477], ["2019-10-28T01:53:55", 18.37139, -68.07579], ["2019-10-28T02:23:55", 18.36766, -68.07639], ["2019-10-28T02:53:05", 18.36514, -68.07501], ["2019-10-28T03:52:43", 18.35541, -68.06771], ["2019-10-28T04:22:42", 18.34862, -68.06531], ["2019-10-28T04:52:42", 18.34098, -68.0635], ["2019-10-28T05:23:08", 18.33332, -68.06328], ["2019-10-28T05:52:43", 18.32726, -68.0639], ["2019-10-28T06:23:27", 18.32419, -68.06134], ["2019-10-28T07:22:55", 18.32852, -68.04944], ["2019-10-28T08:23:11", 18.34208, -68.03928], ["2019-10-28T08:52:19", 18.34703, -68.03641], ["2019-10-28T09:22:55", 18.35254, -68.03686], ["2019-10-28T10:22:27", 18.37174, -68.03921], ["2019-10-28T10:51:53", 18.37915, -68.03842], ["2019-10-28T10:52:27", 18.37916, -68.03834], ["2019-10-28T11:22:27", 18.38538, -68.03775], ["2019-10-28T11:52:27", 18.3888, -68.03715], ["2019-10-28T12:22:27", 18.3906, -68.03775], ["2019-10-28T14:51:06", 18.37616, -68.04507], ["2019-10-28T15:50:53", 18.36736, -68.03958], ["2019-10-28T18:20:26", 18.34434, -68.00836], ["2019-10-28T19:51:44", 18.33959, -67.9931], ["2019-10-28T20:20:02", 18.34333, -67.99121], ["2019-10-28T20:50:26", 18.34947, -67.98935], ["2019-10-28T21:20:28", 18.36663, -67.98549], ["2019-10-28T21:50:28", 18.36762, -67.98532], ["2019-10-28T21:51:30", 18.36786, -67.98523], ["2019-10-28T22:19:34", 18.3772, -67.9826], ["2019-10-28T22:50:29", 18.38759, -67.97787], ["2019-10-28T23:19:14", 18.39679, -67.97366], ["2019-10-29T00:18:56", 18.41152, -67.96283], ["2019-10-29T01:19:56", 18.41886, -67.95358], ["2019-10-29T01:48:31", 18.42292, -67.94998], ["2019-10-29T02:48:14", 18.42789, -67.94217], ["2019-10-29T06:47:23", 18.43318, -67.86841], ["2019-10-29T07:17:12", 18.43277, -67.8575], ["2019-10-29T07:47:12", 18.4359, -67.84763], ["2019-10-29T08:17:43", 18.44064, -67.83719], ["2019-10-29T08:47:12", 18.44555, -67.82809], ["2019-10-29T10:17:43", 18.45224, -67.81332], ["2019-10-29T10:46:17", 18.45313, -67.81167], ["2019-10-29T11:16:17", 18.45407, -67.81176], ["2019-10-29T11:46:17", 18.45729, -67.81262], ["2019-10-29T12:16:06", 18.46301, -67.81482], ["2019-10-29T12:46:58", 18.46891, -67.81741], ["2019-10-29T13:16:04", 18.47427, -67.81964], ["2019-10-29T13:46:25", 18.4788, -67.82232], ["2019-10-29T16:45:34", 18.49777, -67.84197], ["2019-10-29T17:15:34", 18.49863, -67.84643], ["2019-10-29T17:45:34", 18.50017, -67.85089], ["2019-10-29T18:45:28", 18.51078, -67.84877], ["2019-10-29T19:15:28", 18.51597, -67.84636], ["2019-10-29T19:45:28", 18.52082, -67.84457], ["2019-10-29T20:15:26", 18.52574, -67.84199], ["2019-10-29T20:45:26", 18.5308, -67.84045], ["2019-10-29T21:14:06", 18.53624, -67.83954], ["2019-10-29T23:15:00", 18.56235, -67.83887], ["2019-10-30T01:43:27", 18.58973, -67.85974], ["2019-10-30T03:13:58", 18.59041, -67.86914], ["2019-10-30T04:14:12", 18.58642, -67.87521], ["2019-10-30T07:12:19", 18.57037, -67.90528], ["2019-10-30T07:42:19", 18.5687, -67.90821], ["2019-10-30T08:12:19", 18.56857, -67.90958], ["2019-10-30T08:41:49", 18.56914, -67.90973], ["2019-10-30T10:10:58", 18.57343, -67.90412], ["2019-10-30T10:41:22", 18.575, -67.9014], ["2019-10-30T11:10:58", 18.57802, -67.89923], ["2019-10-30T12:10:35", 18.58354, -67.89521], ["2019-10-30T12:40:35", 18.58375, -67.89445], ["2019-10-30T13:10:35", 18.58182, -67.89368], ["2019-10-30T15:09:58", 18.55068, -67.88565], ["2019-10-30T15:41:40", 18.53808, -67.88397], ["2019-10-30T16:11:40", 18.52563, -67.8844], ["2019-10-30T16:41:40", 18.51224, -67.88861], ["2019-10-30T17:10:28", 18.50181, -67.89337], ["2019-10-30T17:40:28", 18.50305, -67.8926], ["2019-10-30T18:10:28", 18.50515, -67.89063], ["2019-10-30T18:39:17", 18.51073, -67.89252], ["2019-10-30T19:09:59", 18.51748, -67.89178], ["2019-10-30T19:39:28", 18.52374, -67.8895], ["2019-10-30T20:10:13", 18.53153, -67.8884], ["2019-10-30T21:10:29", 18.5473, -67.88684], ["2019-10-30T22:39:00", 18.57074, -67.88572], ["2019-10-30T23:09:00", 18.57992, -67.8828], ["2019-10-30T23:39:00", 18.59108, -67.87885], ["2019-10-31T00:08:58", 18.60188, -67.87698], ["2019-10-31T00:38:58", 18.61132, -67.87466], ["2019-10-31T01:08:01", 18.61809, -67.87259], ["2019-10-31T02:38:27", 18.62519, -67.86181], ["2019-10-31T04:07:39", 18.61406, -67.84884], ["2019-10-31T04:37:39", 18.60595, -67.84901], ["2019-10-31T05:07:39", 18.59728, -67.84995], ["2019-10-31T06:37:16", 18.57286, -67.85812], ["2019-10-31T07:07:07", 18.56714, -67.8635], ["2019-10-31T07:37:07", 18.56615, -67.86642], ["2019-10-31T11:37:28", 18.60514, -67.85123], ["2019-10-31T12:35:24", 18.62131, -67.84668], ["2019-10-31T13:04:57", 18.63133, -67.84604], ["2019-10-31T13:34:57", 18.63996, -67.8456], ["2019-10-31T14:04:45", 18.64581, -67.84482], ["2019-10-31T14:34:45", 18.64972, -67.84207], ["2019-10-31T15:05:27", 18.65241, -67.83838], ["2019-10-31T15:35:10", 18.65292, -67.83515], ["2019-10-31T16:05:10", 18.65103, -67.83481], ["2019-10-31T16:34:07", 18.64804, -67.83716], ["2019-10-31T17:04:40", 18.64446, -67.83911], ["2019-10-31T17:34:26", 18.63951, -67.84117], ["2019-10-31T18:04:26", 18.63393, -67.84408], ["2019-10-31T18:33:37", 18.62865, -67.84711], ["2019-10-31T19:04:03", 18.62289, -67.85001], ["2019-10-31T19:33:27", 18.6167, -67.85361], ["2019-10-31T20:03:10", 18.60986, -67.85705], ["2019-10-31T20:33:10", 18.60372, -67.86014], ["2019-10-31T21:02:57", 18.59832, -67.86194], ["2019-10-31T21:32:57", 18.59356, -67.86435], ["2019-10-31T21:52:02", 18.591, -67.86511], ["2019-10-31T22:03:26", 18.58952, -67.86545], ["2019-10-31T22:32:50", 18.58767, -67.86664], ["2019-10-31T23:02:56", 18.58726, -67.86792], ["2019-10-31T23:32:39", 18.58868, -67.86829], ["2019-11-01T00:02:39", 18.5964, -67.86331], ["2019-11-01T00:32:26", 18.60534, -67.85919], ["2019-11-01T01:02:26", 18.61641, -67.85507], ["2019-11-01T01:31:48", 18.6271, -67.85263], ["2019-11-01T02:02:33", 18.63527, -67.8512], ["2019-11-01T02:31:48", 18.63985, -67.85074], ["2019-11-01T03:01:42", 18.64372, -67.84787], ["2019-11-01T03:31:42", 18.64449, -67.84229], ["2019-11-01T04:01:58", 18.64283, -67.83674], ["2019-11-01T04:31:58", 18.64073, -67.83168], ["2019-11-01T05:01:58", 18.63794, -67.828], ["2019-11-01T05:31:21", 18.63446, -67.82544], ["2019-11-01T06:01:56", 18.63003, -67.82132], ["2019-11-01T06:31:12", 18.62564, -67.81961], ["2019-11-01T07:01:24", 18.62139, -67.82074], ["2019-11-01T07:30:45", 18.61642, -67.8224], ["2019-11-01T08:00:45", 18.61299, -67.82377], ["2019-11-01T08:30:45", 18.60951, -67.82617], ["2019-11-01T09:00:58", 18.60685, -67.82898], ["2019-11-01T09:30:27", 18.60404, -67.83264], ["2019-11-01T10:00:54", 18.60186, -67.836], ["2019-11-01T10:30:10", 18.60103, -67.83859], ["2019-11-01T11:00:26", 18.60087, -67.84171], ["2019-11-01T11:29:57", 18.60278, -67.84444], ["2019-11-01T12:00:30", 18.60714, -67.84546], ["2019-11-01T12:29:36", 18.61208, -67.84589], ["2019-11-01T12:59:57", 18.61834, -67.84613], ["2019-11-01T13:29:08", 18.62454, -67.84787], ["2019-11-01T13:59:27", 18.63136, -67.85016], ["2019-11-01T14:28:51", 18.63786, -67.84787], ["2019-11-01T14:59:08", 18.64063, -67.84662], ["2019-11-01T15:28:36", 18.64155, -67.84641], ["2019-11-01T15:58:57", 18.64143, -67.84735], ["2019-11-01T16:28:28", 18.63957, -67.84773], ["2019-11-01T16:58:28", 18.63511, -67.84979], ["2019-11-01T17:28:02", 18.62936, -67.85202], ["2019-11-01T17:58:26", 18.62214, -67.85504], ["2019-11-01T18:27:56", 18.61441, -67.8576], ["2019-11-01T18:58:27", 18.60552, -67.86215], ["2019-11-01T19:27:46", 18.59657, -67.86749], ["2019-11-01T19:57:56", 18.58846, -67.87497], ["2019-11-01T20:27:55", 18.58124, -67.88288], ["2019-11-01T20:57:55", 18.57429, -67.88992], ["2019-11-01T21:21:42", 18.56931, -67.89825], ["2019-11-01T21:51:42", 18.56927, -67.89886], ["2019-11-01T21:57:26", 18.56915, -67.89963], ["2019-11-01T22:27:03", 18.56918, -67.90338], ["2019-11-01T23:26:44", 18.57397, -67.90521], ["2019-11-01T23:56:21", 18.58058, -67.90185], ["2019-11-02T00:26:21", 18.58745, -67.89892], ["2019-11-02T00:56:05", 18.59449, -67.89747], ["2019-11-02T01:26:05", 18.60243, -67.89532], ["2019-11-02T01:56:28", 18.611, -67.89359], ["2019-11-02T02:26:08", 18.6181, -67.89171], ["2019-11-02T02:56:08", 18.62402, -67.89111], ["2019-11-02T03:25:26", 18.62827, -67.89192], ["2019-11-02T03:55:26", 18.6323, -67.89072], ["2019-11-02T04:25:26", 18.63432, -67.88763], ["2019-11-02T04:55:58", 18.63285, -67.88464], ["2019-11-02T05:25:19", 18.62941, -67.88159], ["2019-11-02T05:55:11", 18.62407, -67.87855], ["2019-11-02T06:25:11", 18.6178, -67.87752], ["2019-11-02T06:55:26", 18.60854, -67.87551], ["2019-11-02T07:25:00", 18.59795, -67.87694], ["2019-11-02T07:56:13", 18.58671, -67.88235], ["2019-11-02T08:25:08", 18.57705, -67.88882], ["2019-11-02T08:55:08", 18.56791, -67.89706], ["2019-11-02T09:24:30", 18.56713, -67.90457], ["2019-11-02T11:24:29", 18.58319, -67.91616], ["2019-11-02T11:54:30", 18.5887, -67.91625], ["2019-11-02T12:24:30", 18.59389, -67.91669], ["2019-11-02T12:53:46", 18.59853, -67.91754], ["2019-11-02T16:53:05", 18.6104, -67.93868], ["2019-11-02T17:52:39", 18.60241, -67.94729], ["2019-11-02T18:22:39", 18.59421, -67.95184], ["2019-11-02T18:52:39", 18.58434, -67.95775], ["2019-11-02T19:22:22", 18.57386, -67.96485], ["2019-11-02T19:52:22", 18.56377, -67.97275], ["2019-11-02T20:22:55", 18.55411, -67.98206], ["2019-11-02T20:52:27", 18.54651, -67.99128], ["2019-11-02T21:22:27", 18.5408, -68.00098], ["2019-11-02T21:51:47", 18.53733, -68.00991], ["2019-11-02T22:21:57", 18.53468, -68.0181], ["2019-11-02T22:51:36", 18.53259, -68.02399], ["2019-11-02T23:21:56", 18.53124, -68.02826], ["2019-11-02T23:51:16", 18.52873, -68.03384], ["2019-11-03T00:21:29", 18.52705, -68.04272], ["2019-11-03T00:50:43", 18.52468, -68.05072], ["2019-11-03T01:20:58", 18.52089, -68.05798], ["2019-11-03T01:50:19", 18.51666, -68.066], ["2019-11-03T02:20:55", 18.5124, -68.07364], ["2019-11-03T02:50:19", 18.50761, -68.08127], ["2019-11-03T03:20:40", 18.50264, -68.08932], ["2019-11-03T03:50:25", 18.49666, -68.09473], ["2019-11-03T04:20:25", 18.48623, -68.09885], ["2019-11-03T04:50:04", 18.47372, -68.10312], ["2019-11-03T05:20:58", 18.46098, -68.10809], ["2019-11-03T08:20:27", 18.38659, -68.15817], ["2019-11-03T08:49:34", 18.3765, -68.16946], ["2019-11-03T09:49:24", 18.35738, -68.19414], ["2019-11-03T11:19:42", 18.33717, -68.2202], ["2019-11-03T11:50:27", 18.33114, -68.22999], ["2019-11-03T12:20:27", 18.32685, -68.23651], ["2019-11-03T12:49:02", 18.32303, -68.23968], ["2019-11-03T13:19:02", 18.31943, -68.24225], ["2019-11-03T16:47:49", 18.28651, -68.2435], ["2019-11-03T19:47:16", 18.25208, -68.26907], ["2019-11-03T21:51:59", 18.21217, -68.3084], ["2019-11-04T01:16:14", 18.14043, -68.37273], ["2019-11-04T02:47:29", 18.11218, -68.39359], ["2019-11-04T03:46:28", 18.09696, -68.40259], ["2019-11-04T05:15:22", 18.07113, -68.41925], ["2019-11-04T05:45:22", 18.06104, -68.42715], ["2019-11-04T06:15:22", 18.05267, -68.43359], ["2019-11-04T08:44:54", 18.02083, -68.47391], ["2019-11-04T13:43:58", 18.0093, -68.52563], ["2019-11-04T17:42:58", 17.98927, -68.5704], ["2019-11-04T20:12:54", 17.97165, -68.61297], ["2019-11-04T21:13:28", 17.96438, -68.63129], ["2019-11-04T23:41:27", 17.95042, -68.66579], ["2019-11-05T00:11:27", 17.94905, -68.67231], ["2019-11-05T00:41:27", 17.94742, -68.67789], ["2019-11-05T01:12:30", 17.94555, -68.68301], ["2019-11-05T09:09:31", 17.9322, -68.81183], ["2019-11-05T09:40:28", 17.93384, -68.8197], ["2019-11-05T10:39:56", 17.93605, -68.83338], ["2019-11-05T11:09:56", 17.93652, -68.83888], ["2019-11-05T11:39:56", 17.93794, -68.8435], ["2019-11-05T13:39:28", 17.94715, -68.85941], ["2019-11-05T15:39:31", 17.95841, -68.87558], ["2019-11-05T20:37:57", 17.98262, -68.90384], ["2019-11-05T21:37:37", 17.98401, -68.91305], ["2019-11-05T22:07:37", 17.98435, -68.91502], ["2019-11-05T22:37:37", 17.98444, -68.91965], ["2019-11-06T02:04:34", 17.97522, -68.93715], ["2019-11-06T02:34:34", 17.97346, -68.93818], ["2019-11-06T03:04:34", 17.97106, -68.93886], ["2019-11-06T03:36:04", 17.96832, -68.93967], ["2019-11-06T05:33:37", 17.95653, -68.94177], ["2019-11-06T06:03:48", 17.95308, -68.94202], ["2019-11-06T06:33:37", 17.94932, -68.94271], ["2019-11-06T20:03:27", 17.88633, -69.11618], ["2019-11-06T22:31:59", 17.88446, -69.16074], ["2019-11-06T23:01:59", 17.88403, -69.16855], ["2019-11-06T23:31:59", 17.88291, -69.1767], ["2019-11-07T00:01:31", 17.88186, -69.18416], ["2019-11-07T00:31:31", 17.88083, -69.19223], ["2019-11-07T02:59:54", 17.87927, -69.23111], ["2019-11-07T04:29:02", 17.87896, -69.25585], ["2019-11-07T04:59:02", 17.87875, -69.2634], ["2019-11-07T05:29:02", 17.87901, -69.27087], ["2019-11-07T07:28:41", 17.88685, -69.29868], ["2019-11-07T11:57:29", 17.89545, -69.34448], ["2019-11-07T12:57:28", 17.89491, -69.35136], ["2019-11-07T13:27:28", 17.89474, -69.35539], ["2019-11-07T13:57:28", 17.89491, -69.3602], ["2019-11-07T14:26:24", 17.89522, -69.36511], ["2019-11-07T17:57:08", 17.89842, -69.41309], ["2019-11-07T19:25:30", 17.90358, -69.43111], ["2019-11-07T19:55:30", 17.90508, -69.43729], ["2019-11-07T20:25:30", 17.9068, -69.44244], ["2019-11-07T20:51:44", 17.90934, -69.45383], ["2019-11-07T21:21:44", 17.91007, -69.45804], ["2019-11-07T21:51:44", 17.91024, -69.45898], ["2019-11-08T06:54:28", 17.91056, -69.57764], ["2019-11-08T08:23:00", 17.91094, -69.59702], ["2019-11-08T12:22:02", 17.92005, -69.6561], ["2019-11-08T12:52:58", 17.92161, -69.66436], ["2019-11-08T13:22:58", 17.92341, -69.67191], ["2019-11-08T13:52:58", 17.92547, -69.68066], ["2019-11-08T17:51:44", 17.95187, -69.74026], ["2019-11-08T19:20:23", 17.96533, -69.75658], ["2019-11-08T19:50:23", 17.96919, -69.76182], ["2019-11-08T20:20:23", 17.97258, -69.7662], ["2019-11-08T22:49:29", 17.98731, -69.78659], ["2019-11-08T23:19:29", 17.98988, -69.7908], ["2019-11-08T23:49:29", 17.9922, -69.79483], ["2019-11-09T01:19:58", 17.99796, -69.80887], ["2019-11-09T02:48:40", 18.00195, -69.82074], ["2019-11-09T03:19:56", 18.00284, -69.82465], ["2019-11-09T05:18:37", 18.00585, -69.83938], ["2019-11-09T05:48:24", 18.00696, -69.84312], ["2019-11-09T06:18:24", 18.00786, -69.84647], ["2019-11-09T06:48:24", 18.00906, -69.84981], ["2019-11-09T10:47:06", 18.01061, -69.86996], ["2019-11-09T11:17:06", 18.00997, -69.87314], ["2019-11-09T11:47:06", 18.00967, -69.8764], ["2019-11-09T15:17:29", 17.99988, -69.9043], ["2019-11-09T15:45:58", 17.99791, -69.90788], ["2019-11-09T16:15:58", 17.99619, -69.9127], ["2019-11-09T16:45:58", 17.99525, -69.91733], ["2019-11-09T18:15:19", 17.99613, -69.93223], ["2019-11-09T18:45:19", 17.99776, -69.93798], ["2019-11-09T19:15:19", 17.99926, -69.94373], ["2019-11-09T20:14:53", 18.00215, -69.95491], ["2019-11-09T20:44:53", 18.00322, -69.96015], ["2019-11-09T21:14:53", 18.00434, -69.96487], ["2019-11-09T21:22:14", 18.00539, -69.96974], ["2019-11-09T21:52:14", 18.00556, -69.97042], ["2019-11-09T22:15:28", 18.00631, -69.97348], ["2019-11-09T22:45:28", 18.0076, -69.97726], ["2019-11-09T23:14:23", 18.00888, -69.98041], ["2019-11-09T23:44:59", 18.01071, -69.98345], ["2019-11-10T00:14:23", 18.01219, -69.9859], ["2019-11-10T00:43:57", 18.01363, -69.98824], ["2019-11-10T01:13:57", 18.01475, -69.99014], ["2019-11-10T01:44:55", 18.01514, -69.99144], ["2019-11-10T02:14:55", 18.0151, -69.99238], ["2019-11-10T02:44:55", 18.01531, -69.99307], ["2019-11-10T03:13:38", 18.01599, -69.9937], ["2019-11-10T03:44:10", 18.0165, -69.99505], ["2019-11-10T04:14:10", 18.01719, -69.99677], ["2019-11-10T07:43:13", 18.02381, -70.00982], ["2019-11-10T08:14:22", 18.02446, -70.0125], ["2019-11-10T08:44:22", 18.02476, -70.01542], ["2019-11-10T09:14:22", 18.0239, -70.01833], ["2019-11-10T09:42:59", 18.02292, -70.021], ["2019-11-10T12:11:15", 18.02104, -70.03229], ["2019-11-10T14:41:55", 18.01752, -70.03964], ["2019-11-10T16:09:47", 18.01352, -70.03968], ["2019-11-10T16:39:47", 18.01206, -70.03925], ["2019-11-10T17:09:47", 18.01069, -70.03925], ["2019-11-10T17:39:55", 18.00894, -70.03976], ["2019-11-10T18:10:00", 18.00733, -70.04066], ["2019-11-10T18:40:00", 18.00553, -70.04263], ["2019-11-10T21:38:08", 18.00611, -70.06338], ["2019-11-10T22:08:08", 18.00658, -70.06587], ["2019-11-10T22:38:08", 18.00778, -70.07025], ["2019-11-11T07:06:06", 18.01475, -70.09023], ["2019-11-11T10:35:57", 18.00255, -70.09048], ["2019-11-11T16:35:06", 17.98396, -70.12729], ["2019-11-11T17:34:06", 17.98201, -70.13679], ["2019-11-11T18:04:06", 17.98154, -70.14075], ["2019-11-11T18:34:06", 17.9803, -70.14453], ["2019-11-11T21:02:04", 17.97419, -70.15825], ["2019-11-11T21:32:37", 17.97478, -70.15759], ["2019-11-11T22:02:04", 17.97377, -70.15894], ["2019-11-11T22:32:59", 17.97287, -70.16016], ["2019-11-11T23:02:59", 17.97133, -70.16179], ["2019-11-11T23:32:59", 17.96966, -70.16385], ["2019-11-12T05:01:58", 17.93264, -70.19897], ["2019-11-12T06:30:20", 17.92367, -70.2084], ["2019-11-12T07:59:36", 17.91787, -70.21487], ["2019-11-12T08:29:36", 17.91517, -70.21684], ["2019-11-12T08:59:36", 17.91225, -70.21814], ["2019-11-12T13:29:28", 17.88648, -70.2247], ["2019-11-12T13:58:43", 17.88443, -70.22723], ["2019-11-12T19:58:00", 17.85683, -70.27255], ["2019-11-12T23:26:49", 17.86417, -70.29034], ["2019-11-12T23:58:25", 17.86534, -70.29241], ["2019-11-13T00:28:25", 17.86641, -70.29464], ["2019-11-13T00:58:25", 17.86753, -70.29764], ["2019-11-13T02:56:08", 17.85855, -70.30661], ["2019-11-13T09:24:13", 17.78588, -70.32498], ["2019-11-13T11:54:57", 17.761, -70.33444], ["2019-11-13T16:23:04", 17.72244, -70.36266], ["2019-11-13T18:55:34", 17.70525, -70.37918], ["2019-11-14T00:21:59", 17.67139, -70.40291], ["2019-11-14T09:49:03", 17.57349, -70.46735], ["2019-11-14T15:18:06", 17.52535, -70.52118], ["2019-11-14T16:18:00", 17.51766, -70.52789], ["2019-11-14T22:17:35", 17.46234, -70.58041], ["2019-11-14T23:15:34", 17.45638, -70.5899], ["2019-11-15T03:14:46", 17.43213, -70.61978], ["2019-11-15T04:14:42", 17.42498, -70.62738], ["2019-11-15T04:44:58", 17.42156, -70.63203], ["2019-11-15T05:14:58", 17.41851, -70.63658], ["2019-11-15T05:44:58", 17.41521, -70.64182], ["2019-11-15T18:11:18", 17.29667, -70.7641], ["2019-11-16T03:38:30", 17.25888, -70.85126], ["2019-11-16T05:09:00", 17.25682, -70.86163], ["2019-11-16T06:09:42", 17.25691, -70.86812], ["2019-11-16T09:07:40", 17.25624, -70.87912], ["2019-11-16T14:07:58", 17.22534, -70.88028], ["2019-11-16T17:35:31", 17.19099, -70.90979], ["2019-11-16T18:35:01", 17.1854, -70.92421], ["2019-11-16T19:05:01", 17.18295, -70.93125], ["2019-11-16T19:35:01", 17.18063, -70.93777], ["2019-11-16T22:34:28", 17.17263, -70.9618], ["2019-11-16T23:04:28", 17.17254, -70.96334], ["2019-11-16T23:34:28", 17.1722, -70.96411], ["2019-11-17T01:03:44", 17.16955, -70.96405], ["2019-11-17T02:03:19", 17.16666, -70.96445], ["2019-11-17T02:33:19", 17.1652, -70.96487], ["2019-11-17T03:03:19", 17.16335, -70.96539], ["2019-11-17T03:33:41", 17.16127, -70.96674], ["2019-11-17T04:03:27", 17.15922, -70.96813], ["2019-11-17T04:33:27", 17.15703, -70.96933], ["2019-11-17T05:02:44", 17.15493, -70.97078], ["2019-11-17T06:02:26", 17.15116, -70.97387], ["2019-11-17T06:32:07", 17.14929, -70.97586], ["2019-11-17T07:02:07", 17.14792, -70.97775], ["2019-11-17T07:32:26", 17.14673, -70.97915], ["2019-11-17T08:01:54", 17.14553, -70.98013], ["2019-11-17T10:01:29", 17.13952, -70.9779], ["2019-11-17T10:31:23", 17.13809, -70.97604], ["2019-11-17T11:01:23", 17.13633, -70.97458], ["2019-11-17T11:31:56", 17.13366, -70.9725], ["2019-11-17T12:01:09", 17.13094, -70.9697], ["2019-11-17T12:31:06", 17.12763, -70.96653], ["2019-11-17T13:01:06", 17.12415, -70.96422], ["2019-11-17T13:31:06", 17.11964, -70.96216], ["2019-11-17T14:00:31", 17.1148, -70.96111], ["2019-11-17T14:30:30", 17.11022, -70.96124], ["2019-11-17T15:00:30", 17.10567, -70.96107], ["2019-11-17T15:30:30", 17.10086, -70.96133], ["2019-11-17T15:59:55", 17.09601, -70.96245], ["2019-11-17T16:29:43", 17.09132, -70.96465], ["2019-11-17T16:59:43", 17.08694, -70.96722], ["2019-11-17T17:29:30", 17.08274, -70.97049], ["2019-11-17T17:59:30", 17.07991, -70.97461], ["2019-11-17T18:59:23", 17.07625, -70.98444], ["2019-11-17T19:29:14", 17.075, -70.98851], ["2019-11-17T19:59:14", 17.07427, -70.99194], ["2019-11-17T20:29:27", 17.07393, -70.99509], ["2019-11-17T20:59:10", 17.07364, -70.9975], ["2019-11-17T21:29:10", 17.07313, -70.9993], ["2019-11-17T21:52:19", 17.07215, -70.99991], ["2019-11-17T21:58:31", 17.07185, -70.99997], ["2019-11-17T22:58:13", 17.06762, -70.99921], ["2019-11-17T23:27:51", 17.06561, -70.99843], ["2019-11-17T23:57:51", 17.06402, -70.99791], ["2019-11-18T00:28:09", 17.06197, -70.99741], ["2019-11-18T00:57:42", 17.05975, -70.99686], ["2019-11-18T01:27:56", 17.05693, -70.9967], ["2019-11-18T01:57:56", 17.05418, -70.9967], ["2019-11-18T02:27:56", 17.05191, -70.99722], ["2019-11-18T02:57:23", 17.04899, -70.99773], ["2019-11-18T04:27:26", 17.04032, -71.00211], ["2019-11-18T04:56:37", 17.03771, -71.00355], ["2019-11-18T05:26:37", 17.03518, -71.00519], ["2019-11-18T05:56:37", 17.03325, -71.00751], ["2019-11-18T06:26:58", 17.03152, -71.01016], ["2019-11-18T06:56:11", 17.02995, -71.01242], ["2019-11-18T07:25:44", 17.02816, -71.01533], ["2019-11-18T07:55:44", 17.02679, -71.01868], ["2019-11-18T09:25:56", 17.02542, -71.0257], ["2019-11-18T09:56:28", 17.02504, -71.02719], ["2019-11-18T10:26:28", 17.0241, -71.02856], ["2019-11-18T10:55:27", 17.02262, -71.02905], ["2019-11-18T11:25:27", 17.02069, -71.02896], ["2019-11-18T12:54:39", 17.01482, -71.03005], ["2019-11-18T13:24:39", 17.01267, -71.03022], ["2019-11-18T13:54:39", 17.0104, -71.03082], ["2019-11-18T14:54:28", 17.00507, -71.03352], ["2019-11-18T15:24:28", 17.00189, -71.03592], ["2019-11-18T15:54:28", 16.99833, -71.0378], ["2019-11-18T16:24:26", 16.99535, -71.04027], ["2019-11-18T16:54:26", 16.99278, -71.04216], ["2019-11-18T17:24:26", 16.99008, -71.04388], ["2019-11-18T17:53:36", 16.98819, -71.04673], ["2019-11-18T18:23:36", 16.98652, -71.05016], ["2019-11-18T18:53:36", 16.9851, -71.05316], ["2019-11-18T19:23:58", 16.98358, -71.05658], ["2019-11-18T19:53:37", 16.98215, -71.05938], ["2019-11-18T20:23:26", 16.98061, -71.06233], ["2019-11-18T20:53:26", 16.97915, -71.06525], ["2019-11-18T21:23:57", 16.97822, -71.06824], ["2019-11-18T21:53:02", 16.9773, -71.07056], ["2019-11-18T22:23:02", 16.97627, -71.07236], ["2019-11-18T22:53:02", 16.97494, -71.0733], ["2019-11-18T23:23:26", 16.97264, -71.07333], ["2019-11-19T02:22:58", 16.95685, -71.07529], ["2019-11-19T05:51:45", 16.92755, -71.08731], ["2019-11-19T07:22:58", 16.91699, -71.09802], ["2019-11-19T10:50:49", 16.89275, -71.11227], ["2019-11-19T11:50:32", 16.88657, -71.11609], ["2019-11-19T13:21:28", 16.87689, -71.11818], ["2019-11-19T13:51:28", 16.87256, -71.11818], ["2019-11-19T14:21:28", 16.86788, -71.11792], ["2019-11-19T15:49:28", 16.85437, -71.11819], ["2019-11-19T16:19:28", 16.84845, -71.11931], ["2019-11-19T16:49:28", 16.84274, -71.12094], ["2019-11-19T17:19:12", 16.83666, -71.12376], ["2019-11-19T17:49:12", 16.83065, -71.12667], ["2019-11-19T20:19:28", 16.79775, -71.14713], ["2019-11-20T00:47:25", 16.75764, -71.18762], ["2019-11-20T11:16:02", 16.70039, -71.23349], ["2019-11-20T12:44:43", 16.69468, -71.24187], ["2019-11-20T15:14:31", 16.68724, -71.24695], ["2019-11-20T15:43:58", 16.68515, -71.24724], ["2019-11-20T16:14:31", 16.68218, -71.24738], ["2019-11-20T21:42:12", 16.64358, -71.24515], ["2019-11-20T21:52:24", 16.64201, -71.24551], ["2019-11-20T22:12:08", 16.63888, -71.24625], ["2019-11-20T22:42:08", 16.6348, -71.24754], ["2019-11-20T23:12:08", 16.63141, -71.2496], ["2019-11-20T23:41:35", 16.62797, -71.25171], ["2019-11-21T00:11:26", 16.62449, -71.25348], ["2019-11-21T00:41:26", 16.62101, -71.25442], ["2019-11-21T01:11:26", 16.61732, -71.25519], ["2019-11-21T02:10:58", 16.60873, -71.25488], ["2019-11-21T02:40:58", 16.60525, -71.25454], ["2019-11-21T03:10:58", 16.60165, -71.25403], ["2019-11-21T03:40:16", 16.59775, -71.25302], ["2019-11-21T04:09:59", 16.59318, -71.25166], ["2019-11-21T04:39:59", 16.58889, -71.24994], ["2019-11-21T05:09:47", 16.58429, -71.24771], ["2019-11-21T05:39:47", 16.5797, -71.24548], ["2019-11-21T06:09:36", 16.57474, -71.24281], ["2019-11-21T06:39:36", 16.56972, -71.24075], ["2019-11-21T07:09:36", 16.56474, -71.23929], ["2019-11-21T07:39:09", 16.55941, -71.23865], ["2019-11-21T08:09:09", 16.55353, -71.23856], ["2019-11-21T09:08:56", 16.54174, -71.23956], ["2019-11-21T09:38:22", 16.53621, -71.24128], ["2019-11-21T10:08:22", 16.53093, -71.24317], ["2019-11-21T10:38:22", 16.52574, -71.24557], ["2019-11-21T11:08:29", 16.52064, -71.24841], ["2019-11-21T11:38:29", 16.51652, -71.25158], ["2019-11-21T12:08:29", 16.51214, -71.25561], ["2019-11-21T13:37:15", 16.50113, -71.26414], ["2019-11-21T14:07:15", 16.49761, -71.26636], ["2019-11-21T14:37:15", 16.49413, -71.26833], ["2019-11-21T15:07:27", 16.48982, -71.26938], ["2019-11-21T15:37:00", 16.48546, -71.26987], ["2019-11-21T16:07:27", 16.48042, -71.27023], ["2019-11-21T16:36:44", 16.47471, -71.27042], ["2019-11-21T17:06:26", 16.46905, -71.27106], ["2019-11-21T17:36:26", 16.46326, -71.27158], ["2019-11-22T02:33:58", 16.35781, -71.33694], ["2019-11-22T05:03:58", 16.32455, -71.35849], ["2019-11-22T06:34:29", 16.30142, -71.37336], ["2019-11-22T07:04:29", 16.29451, -71.37842], ["2019-11-22T07:34:29", 16.28704, -71.38442], ["2019-11-22T08:03:26", 16.27993, -71.39067], ["2019-11-22T08:33:26", 16.27311, -71.39727], ["2019-11-22T10:33:30", 16.24821, -71.43295], ["2019-11-22T11:02:13", 16.24298, -71.4436], ["2019-11-22T13:02:25", 16.22362, -71.49061], ["2019-11-22T13:31:58", 16.21958, -71.50189], ["2019-11-22T14:02:25", 16.21598, -71.51412], ["2019-11-22T14:31:13", 16.21317, -71.52545], ["2019-11-22T15:01:13", 16.20978, -71.53652], ["2019-11-22T15:31:13", 16.20665, -71.54648], ["2019-11-22T17:30:45", 16.19428, -71.5882], ["2019-11-22T21:51:52", 16.17656, -71.67252], ["2019-11-23T03:29:09", 16.18515, -71.75732], ["2019-11-23T05:58:36", 16.18759, -71.78821], ["2019-11-23T06:28:24", 16.18846, -71.79506], ["2019-11-23T06:58:24", 16.1894, -71.80132], ["2019-11-23T10:28:28", 16.19755, -71.84576], ["2019-11-23T10:58:28", 16.19898, -71.85002], ["2019-11-23T11:28:28", 16.19941, -71.85345], ["2019-11-24T02:23:56", 16.15183, -71.97696], ["2019-11-24T03:55:58", 16.14405, -71.98826], ["2019-11-24T04:25:58", 16.14143, -71.99247], ["2019-11-24T04:55:58", 16.13843, -71.99719], ["2019-11-24T06:24:25", 16.13059, -72.01123], ["2019-11-24T07:54:28", 16.11952, -72.03431], ["2019-11-24T08:54:28", 16.11699, -72.03964], ["2019-11-24T10:23:28", 16.11038, -72.05692], ["2019-11-24T10:52:09", 16.1085, -72.06241], ["2019-11-24T13:53:36", 16.10203, -72.09578], ["2019-11-24T17:51:07", 16.10366, -72.13943], ["2019-11-24T18:50:38", 16.10286, -72.15029], ["2019-11-24T19:20:38", 16.10222, -72.15604], ["2019-11-24T19:50:38", 16.10171, -72.16162], ["2019-11-24T21:22:56", 16.09869, -72.18129], ["2019-11-25T00:49:32", 16.09259, -72.22037], ["2019-11-25T03:20:05", 16.09448, -72.24745], ["2019-11-25T03:50:05", 16.09478, -72.25071], ["2019-11-25T04:20:05", 16.0962, -72.25595], ["2019-11-25T05:47:58", 16.10027, -72.26478], ["2019-11-25T06:17:58", 16.10083, -72.26718], ["2019-11-25T06:47:58", 16.1016, -72.2694], ["2019-11-25T07:47:24", 16.1018, -72.27506], ["2019-11-25T08:17:24", 16.1018, -72.2784], ["2019-11-25T08:47:24", 16.10171, -72.28116], ["2019-11-25T09:21:01", 16.10064, -72.28528], ["2019-11-25T10:46:35", 16.10555, -72.29306], ["2019-11-25T11:16:35", 16.10641, -72.29572], ["2019-11-25T11:46:35", 16.10637, -72.29931], ["2019-11-25T12:48:36", 16.10781, -72.30826], ["2019-11-25T19:14:37", 16.1216, -72.36389], ["2019-11-25T22:44:46", 16.12028, -72.38324], ["2019-11-26T03:42:43", 16.11246, -72.42819], ["2019-11-26T06:14:29", 16.10897, -72.45878], ["2019-11-26T06:44:29", 16.10781, -72.4648], ["2019-11-26T07:14:29", 16.10609, -72.47098], ["2019-11-26T09:43:13", 16.09722, -72.49289], ["2019-11-26T10:41:14", 16.09206, -72.50111], ["2019-11-26T11:11:14", 16.08927, -72.50566], ["2019-11-26T11:41:14", 16.08618, -72.50995], ["2019-11-26T18:39:47", 16.07989, -72.61133], ["2019-11-26T21:09:56", 16.08457, -72.65469], ["2019-11-27T01:38:32", 16.09119, -72.71451], ["2019-11-27T07:38:30", 16.10108, -72.79755], ["2019-11-27T19:04:57", 16.13946, -72.96289], ["2019-11-27T20:51:59", 16.14887, -73.00891], ["2019-11-27T21:21:59", 16.15007, -73.0132], ["2019-11-27T21:51:59", 16.15063, -73.01483], ["2019-11-27T23:03:58", 16.15727, -73.03785], ["2019-11-27T23:33:58", 16.15963, -73.04679], ["2019-11-28T00:03:58", 16.16268, -73.05606], ["2019-11-28T01:33:47", 16.17181, -73.08114], ["2019-11-28T02:02:22", 16.17514, -73.08969], ["2019-11-28T02:33:47", 16.17872, -73.09866], ["2019-11-28T03:33:31", 16.18468, -73.11487], ["2019-11-28T04:32:30", 16.19275, -73.12945], ["2019-11-28T05:02:30", 16.1964, -73.13641], ["2019-11-28T05:32:30", 16.20103, -73.14319], ["2019-11-28T08:31:30", 16.21829, -73.17695], ["2019-11-28T09:00:44", 16.2205, -73.18344], ["2019-11-28T09:31:30", 16.22284, -73.19128], ["2019-11-28T17:30:29", 16.31126, -73.31067], ["2019-11-28T19:57:58", 16.34006, -73.34564], ["2019-11-28T22:27:27", 16.368, -73.37924], ["2019-11-29T04:56:28", 16.45925, -73.45703], ["2019-11-29T07:56:32", 16.49853, -73.47159], ["2019-11-29T08:24:58", 16.50372, -73.47281], ["2019-11-29T08:54:30", 16.50902, -73.47389], ["2019-11-29T09:24:30", 16.51438, -73.47501], ["2019-11-29T09:54:26", 16.52035, -73.47633], ["2019-11-29T10:24:26", 16.52537, -73.47727], ["2019-11-29T10:54:26", 16.53061, -73.47864], ["2019-11-29T11:24:57", 16.53644, -73.48153], ["2019-11-29T11:54:57", 16.54249, -73.48471], ["2019-11-29T14:23:22", 16.5661, -73.49838], ["2019-11-29T19:22:27", 16.59858, -73.54456], ["2019-11-29T19:52:05", 16.60222, -73.55206], ["2019-11-29T20:22:05", 16.60565, -73.55884], ["2019-11-29T20:51:35", 16.60946, -73.56583], ["2019-11-29T21:21:35", 16.61246, -73.57192], ["2019-11-29T21:51:57", 16.61543, -73.57852], ["2019-11-29T22:21:57", 16.61822, -73.58496], ["2019-11-29T22:51:57", 16.62019, -73.59088], ["2019-11-30T01:20:47", 16.62914, -73.61618], ["2019-11-30T02:20:22", 16.63195, -73.62643], ["2019-11-30T02:50:22", 16.63367, -73.63227], ["2019-11-30T03:20:22", 16.63509, -73.63827], ["2019-11-30T03:50:13", 16.63732, -73.64488], ["2019-11-30T04:20:13", 16.63959, -73.65012], ["2019-11-30T06:51:13", 16.66144, -73.67652], ["2019-11-30T07:21:13", 16.66693, -73.68098], ["2019-11-30T07:51:13", 16.67298, -73.6857], ["2019-11-30T09:19:33", 16.68865, -73.69705], ["2019-11-30T09:50:58", 16.69361, -73.70153], ["2019-11-30T10:19:01", 16.69808, -73.7055], ["2019-11-30T10:49:01", 16.70319, -73.70928], ["2019-11-30T11:19:01", 16.70813, -73.71245], ["2019-11-30T13:49:04", 16.73295, -73.72488], ["2019-11-30T14:50:45", 16.74393, -73.73105], ["2019-11-30T19:16:57", 16.78698, -73.77237], ["2019-11-30T20:47:47", 16.8012, -73.78979], ["2019-11-30T21:16:25", 16.80666, -73.79555], ["2019-12-01T00:45:20", 16.84977, -73.82522], ["2019-12-01T01:15:57", 16.85702, -73.82867], ["2019-12-01T01:45:20", 16.8647, -73.83199], ["2019-12-01T09:43:38", 16.9956, -73.88357], ["2019-12-01T10:13:22", 17.00287, -73.88804], ["2019-12-01T10:43:22", 17.00879, -73.89053], ["2019-12-01T11:13:14", 17.0148, -73.89306], ["2019-12-01T11:43:14", 17.02081, -73.89624], ["2019-12-01T12:43:07", 17.02901, -73.90085], ["2019-12-01T13:14:00", 17.03486, -73.90463], ["2019-12-01T15:13:40", 17.06397, -73.9194], ["2019-12-01T15:43:58", 17.08052, -73.92665], ["2019-12-01T16:43:58", 17.08842, -73.92957], ["2019-12-02T12:10:26", 17.38467, -74.14923], ["2019-12-02T13:38:37", 17.40397, -74.16907], ["2019-12-02T21:51:40", 17.51314, -74.25909], ["2019-12-03T01:05:51", 17.55945, -74.30261], ["2019-12-03T09:36:02", 17.62869, -74.37921], ["2019-12-03T10:33:55", 17.63698, -74.38968], ["2019-12-03T11:33:44", 17.64655, -74.40079], ["2019-12-03T13:03:23", 17.66383, -74.41797], ["2019-12-03T16:32:46", 17.69172, -74.45929], ["2019-12-03T17:03:28", 17.69526, -74.46912], ["2019-12-03T17:32:31", 17.69863, -74.47913], ["2019-12-03T18:03:01", 17.70256, -74.48941], ["2019-12-03T18:33:01", 17.70664, -74.49834], ["2019-12-03T19:03:01", 17.71085, -74.50641], ["2019-12-03T21:02:49", 17.73063, -74.53992], ["2019-12-03T21:34:02", 17.73977, -74.55522], ["2019-12-03T22:04:02", 17.74239, -74.55892], ["2019-12-03T22:34:02", 17.74977, -74.5687], ["2019-12-03T23:01:12", 17.75698, -74.57693], ["2019-12-03T23:31:58", 17.76434, -74.5857], ["2019-12-04T00:01:58", 17.77103, -74.59394], ["2019-12-04T00:31:58", 17.77785, -74.60269], ["2019-12-04T02:31:28", 17.79931, -74.63638], ["2019-12-04T03:03:04", 17.80593, -74.64545], ["2019-12-04T03:33:04", 17.81323, -74.65378], ["2019-12-04T04:03:04", 17.82156, -74.66159], ["2019-12-04T06:00:30", 17.85167, -74.68859], ["2019-12-04T11:59:00", 17.93915, -74.76575], ["2019-12-04T12:27:57", 17.94527, -74.77118], ["2019-12-04T12:57:57", 17.95166, -74.7771], ["2019-12-04T13:27:57", 17.95818, -74.78268], ["2019-12-04T13:59:30", 17.96538, -74.7887], ["2019-12-04T18:57:07", 18.03503, -74.85226], ["2019-12-04T20:26:31", 18.0463, -74.87613], ["2019-12-04T21:26:10", 18.06159, -74.90004], ["2019-12-04T21:56:10", 18.06223, -74.90107], ["2019-12-04T22:26:10", 18.06755, -74.90845], ["2019-12-05T03:27:55", 18.1342, -74.9957], ["2019-12-05T04:24:52", 18.15054, -75.0123], ["2019-12-05T04:54:52", 18.15951, -75.02131], ["2019-12-05T05:24:52", 18.16814, -75.03015], ["2019-12-05T06:55:29", 18.19654, -75.05871], ["2019-12-05T10:23:28", 18.24939, -75.11615], ["2019-12-05T12:53:29", 18.28652, -75.15508], ["2019-12-05T13:23:29", 18.2942, -75.16298], ["2019-12-05T13:53:29", 18.3024, -75.17139], ["2019-12-05T14:53:29", 18.31734, -75.18857], ["2019-12-05T15:22:13", 18.32445, -75.19735], ["2019-12-05T15:52:13", 18.33187, -75.20722], ["2019-12-05T16:22:13", 18.33908, -75.21648], ["2019-12-05T16:52:28", 18.34699, -75.2262], ["2019-12-05T17:22:28", 18.3548, -75.23531], ["2019-12-05T17:52:28", 18.36343, -75.24475], ["2019-12-05T18:21:48", 18.37178, -75.25381], ["2019-12-05T18:53:01", 18.38015, -75.26376], ["2019-12-05T20:52:00", 18.41295, -75.30728], ["2019-12-06T01:20:18", 18.48621, -75.39661], ["2019-12-06T01:51:28", 18.49431, -75.40703], ["2019-12-06T03:51:13", 18.52563, -75.44382], ["2019-12-06T04:21:13", 18.5325, -75.4524], ["2019-12-06T04:51:13", 18.53958, -75.4621], ["2019-12-06T05:20:28", 18.54654, -75.47189], ["2019-12-06T05:50:28", 18.55323, -75.4821], ["2019-12-06T06:20:28", 18.56053, -75.49274], ["2019-12-06T07:48:35", 18.57969, -75.52343], ["2019-12-06T08:18:35", 18.5851, -75.53348], ["2019-12-06T08:48:35", 18.58931, -75.54266], ["2019-12-06T14:17:52", 18.62414, -75.63602], ["2019-12-06T15:50:58", 18.63323, -75.66132], ["2019-12-06T16:17:29", 18.63589, -75.66895], ["2019-12-06T21:52:33", 18.66903, -75.7774], ["2019-12-06T23:45:51", 18.67935, -75.81641], ["2019-12-07T00:45:40", 18.68411, -75.83575], ["2019-12-07T04:14:54", 18.68803, -75.9032], ["2019-12-07T06:44:17", 18.68742, -75.95416], ["2019-12-07T08:14:36", 18.68978, -75.97745], ["2019-12-07T08:44:36", 18.69034, -75.98414], ["2019-12-07T09:14:36", 18.69124, -75.99151], ["2019-12-07T10:43:25", 18.69341, -76.00937], ["2019-12-07T13:43:31", 18.70794, -76.03482], ["2019-12-07T15:12:28", 18.71393, -76.04965], ["2019-12-07T19:13:59", 18.73096, -76.09875], ["2019-12-07T19:42:05", 18.73293, -76.10558], ["2019-12-07T20:12:05", 18.7352, -76.11322], ["2019-12-07T20:42:05", 18.73735, -76.12112], ["2019-12-07T22:42:30", 18.74779, -76.15521], ["2019-12-08T01:39:39", 18.76402, -76.20607], ["2019-12-08T02:09:39", 18.76672, -76.21422], ["2019-12-08T02:39:39", 18.76917, -76.22186], ["2019-12-08T08:09:00", 18.78365, -76.30228], ["2019-12-08T08:38:13", 18.78349, -76.31137], ["2019-12-08T09:07:57", 18.78348, -76.32109], ["2019-12-08T09:37:57", 18.78279, -76.33087], ["2019-12-08T10:37:43", 18.7811, -76.35348], ["2019-12-08T12:09:24", 18.78072, -76.39124], ["2019-12-08T18:35:33", 18.7712, -76.57837], ["2019-12-08T19:07:38", 18.77037, -76.59439], ["2019-12-08T21:04:56", 18.76431, -76.64963], ["2019-12-08T21:34:36", 18.76146, -76.67174], ["2019-12-08T22:04:36", 18.7609, -76.67603], ["2019-12-08T22:34:31", 18.7595, -76.68917], ["2019-12-09T05:32:51", 18.74268, -76.86386], ["2019-12-09T09:02:12", 18.73673, -76.94002], ["2019-12-09T09:32:28", 18.73542, -76.95169], ["2019-12-09T10:01:55", 18.73415, -76.9632], ["2019-12-09T10:32:58", 18.73261, -76.97548], ["2019-12-09T11:01:47", 18.73218, -76.98672], ["2019-12-09T11:32:58", 18.73162, -76.99866], ["2019-12-09T12:02:28", 18.73079, -77.00982], ["2019-12-09T12:32:28", 18.72929, -77.02185], ["2019-12-09T14:32:59", 18.72177, -77.06985], ["2019-12-09T15:31:10", 18.71571, -77.09547], ["2019-12-09T16:01:10", 18.71309, -77.1074], ["2019-12-09T16:31:10", 18.71, -77.12027], ["2019-12-09T17:02:28", 18.70768, -77.13375], ["2019-12-09T17:32:28", 18.70571, -77.14722], ["2019-12-09T18:02:28", 18.70386, -77.16173], ["2019-12-09T21:29:52", 18.70105, -77.25259], ["2019-12-09T21:59:46", 18.70266, -77.26571], ["2019-12-09T22:29:46", 18.70373, -77.27746], ["2019-12-09T23:00:59", 18.70469, -77.28995], ["2019-12-10T00:00:30", 18.70608, -77.31331], ["2019-12-10T00:30:30", 18.70651, -77.32395], ["2019-12-10T01:00:30", 18.70677, -77.33553], ["2019-12-10T04:00:42", 18.70585, -77.39897], ["2019-12-10T04:30:42", 18.70542, -77.40978], ["2019-12-10T05:00:42", 18.70478, -77.42197], ["2019-12-10T05:28:22", 18.70457, -77.4328], ["2019-12-10T05:58:17", 18.70456, -77.44455], ["2019-12-10T06:58:00", 18.70564, -77.46919], ["2019-12-10T07:28:00", 18.70624, -77.48026], ["2019-12-10T08:57:22", 18.70913, -77.51572], ["2019-12-10T10:29:25", 18.71347, -77.55197], ["2019-12-10T11:26:40", 18.71621, -77.57504], ["2019-12-10T11:58:29", 18.71791, -77.58752], ["2019-12-10T12:26:40", 18.72033, -77.59829], ["2019-12-10T15:57:36", 18.73226, -77.67599], ["2019-12-10T16:29:01", 18.73353, -77.68616], ["2019-12-10T16:59:01", 18.73507, -77.69817], ["2019-12-10T18:55:15", 18.74249, -77.74038], ["2019-12-10T19:28:29", 18.74433, -77.75256], ["2019-12-10T19:55:15", 18.74614, -77.7627], ["2019-12-10T21:56:06", 18.75303, -77.80983], ["2019-12-10T23:24:27", 18.75626, -77.84147], ["2019-12-10T23:54:27", 18.75841, -77.85348], ["2019-12-11T00:24:27", 18.76021, -77.86362], ["2019-12-11T01:53:54", 18.76873, -77.89456], ["2019-12-11T02:23:36", 18.77218, -77.90468], ["2019-12-11T02:53:36", 18.77548, -77.91515], ["2019-12-11T03:23:36", 18.77818, -77.92468], ["2019-12-11T03:53:25", 18.78049, -77.93411], ["2019-12-11T04:23:25", 18.78212, -77.94287], ["2019-12-11T06:52:24", 18.78814, -77.98305], ["2019-12-11T07:22:24", 18.78921, -77.99044], ["2019-12-11T07:52:24", 18.79024, -77.99799], ["2019-12-11T08:23:29", 18.79177, -78.00637], ["2019-12-11T11:51:46", 18.80818, -78.0635], ["2019-12-11T12:23:12", 18.81088, -78.07135], ["2019-12-11T14:24:04", 18.81923, -78.10996], ["2019-12-11T15:24:04", 18.82073, -78.11767], ["2019-12-11T15:51:02", 18.82143, -78.12466], ["2019-12-11T16:21:02", 18.8219, -78.13248], ["2019-12-11T16:51:02", 18.8225, -78.14063], ["2019-12-11T19:20:27", 18.82438, -78.18095], ["2019-12-11T19:50:27", 18.82464, -78.1879], ["2019-12-11T20:20:27", 18.82515, -78.19562], ["2019-12-11T22:18:15", 18.82525, -78.22669], ["2019-12-11T22:48:15", 18.82504, -78.23347], ["2019-12-11T23:18:15", 18.82495, -78.24093], ["2019-12-11T23:49:04", 18.82507, -78.2486], ["2019-12-12T00:17:49", 18.82497, -78.25576], ["2019-12-12T00:47:49", 18.82506, -78.2634], ["2019-12-12T01:17:49", 18.82485, -78.27078], ["2019-12-12T03:16:52", 18.82195, -78.29994], ["2019-12-12T03:46:52", 18.82075, -78.30655], ["2019-12-12T04:18:08", 18.81966, -78.31336], ["2019-12-12T04:48:08", 18.81854, -78.3204], ["2019-12-12T06:16:27", 18.81684, -78.33902], ["2019-12-12T06:45:57", 18.81679, -78.34591], ["2019-12-12T07:15:57", 18.81692, -78.35097], ["2019-12-12T07:45:57", 18.81688, -78.35681], ["2019-12-12T08:46:59", 18.81777, -78.36851], ["2019-12-12T09:16:59", 18.81876, -78.37409], ["2019-12-12T09:46:59", 18.8197, -78.37967], ["2019-12-12T10:15:32", 18.82043, -78.38431], ["2019-12-12T14:45:29", 18.82424, -78.42355], ["2019-12-12T17:13:53", 18.82612, -78.44556], ["2019-12-12T22:42:20", 18.84623, -78.49628], ["2019-12-12T23:12:04", 18.84925, -78.50021], ["2019-12-12T23:41:51", 18.85251, -78.50406], ["2019-12-13T00:11:51", 18.85564, -78.50732], ["2019-12-13T00:42:44", 18.85836, -78.51049], ["2019-12-13T01:43:29", 18.86226, -78.51613], ["2019-12-13T02:41:13", 18.86468, -78.52085], ["2019-12-13T03:11:13", 18.86554, -78.52282], ["2019-12-13T03:41:13", 18.86648, -78.52454], ["2019-12-13T06:11:33", 18.86748, -78.53541], ["2019-12-13T06:41:33", 18.86765, -78.53747], ["2019-12-13T07:11:33", 18.86774, -78.5397], ["2019-12-13T13:10:36", 18.884, -78.56665], ["2019-12-13T13:39:59", 18.88652, -78.56854], ["2019-12-13T14:09:59", 18.88909, -78.57034], ["2019-12-13T14:40:12", 18.89127, -78.57207], ["2019-12-13T15:10:12", 18.89324, -78.57404], ["2019-12-13T17:07:22", 18.90075, -78.58466], ["2019-12-13T17:37:22", 18.90255, -78.58826], ["2019-12-13T18:07:22", 18.90414, -78.59195], ["2019-12-13T21:36:50", 18.91664, -78.62137], ["2019-12-13T22:08:58", 18.91874, -78.62627], ["2019-12-13T22:36:33", 18.92017, -78.63039], ["2019-12-14T00:06:10", 18.92644, -78.64324], ["2019-12-14T01:07:06", 18.93154, -78.6515], ["2019-12-14T01:35:42", 18.93394, -78.65558], ["2019-12-14T02:07:06", 18.93621, -78.65991], ["2019-12-14T02:35:25", 18.93855, -78.66403], ["2019-12-14T03:06:17", 18.94112, -78.66827], ["2019-12-14T05:06:12", 18.94915, -78.68549], ["2019-12-14T06:05:01", 18.95265, -78.6932], ["2019-12-14T06:35:01", 18.95462, -78.69707], ["2019-12-14T07:05:01", 18.95681, -78.70102], ["2019-12-14T07:34:24", 18.95876, -78.70499], ["2019-12-14T08:04:10", 18.96144, -78.70872], ["2019-12-14T08:34:10", 18.96371, -78.7131], ["2019-12-14T09:03:56", 18.96603, -78.71775], ["2019-12-14T09:33:56", 18.96848, -78.72238], ["2019-12-14T10:04:08", 18.97148, -78.72732], ["2019-12-14T10:33:47", 18.97472, -78.73196], ["2019-12-14T11:04:25", 18.97859, -78.73681], ["2019-12-14T11:33:56", 18.98306, -78.74164], ["2019-12-14T12:03:56", 18.988, -78.74619], ["2019-12-14T12:33:21", 18.99269, -78.75055], ["2019-12-14T13:03:06", 18.99712, -78.75479], ["2019-12-14T13:33:06", 19.00133, -78.75891], ["2019-12-14T14:02:50", 19.00581, -78.76296], ["2019-12-14T14:32:50", 19.01049, -78.76682], ["2019-12-14T16:02:29", 19.02593, -78.77753], ["2019-12-14T16:32:16", 19.03049, -78.7803], ["2019-12-14T17:02:29", 19.03503, -78.78259], ["2019-12-14T17:32:29", 19.03939, -78.78462], ["2019-12-14T18:02:29", 19.04377, -78.78616], ["2019-12-14T19:01:54", 19.0523, -78.78783], ["2019-12-14T19:31:54", 19.05586, -78.78809], ["2019-12-14T20:01:54", 19.05925, -78.78818], ["2019-12-14T20:31:27", 19.06268, -78.78798], ["2019-12-14T21:01:27", 19.06581, -78.78798], ["2019-12-14T21:30:56", 19.06815, -78.78885], ["2019-12-14T21:47:00", 19.06918, -78.78943], ["2019-12-14T22:30:45", 19.07152, -78.79223], ["2019-12-14T23:00:45", 19.07268, -78.79446], ["2019-12-14T23:30:45", 19.07354, -78.79703], ["2019-12-15T11:28:00", 19.0773, -78.95645], ["2019-12-15T12:58:26", 19.08214, -78.98322], ["2019-12-15T13:28:27", 19.08398, -78.99198], ["2019-12-15T13:58:27", 19.08552, -79.00134], ["2019-12-15T15:27:19", 19.08964, -79.02891], ["2019-12-15T15:57:19", 19.09084, -79.03731], ["2019-12-15T16:27:19", 19.09148, -79.04642], ["2019-12-15T18:26:59", 19.09233, -79.08005], ["2019-12-15T19:26:45", 19.09164, -79.09665], ["2019-12-15T20:29:58", 19.09074, -79.11319], ["2019-12-15T20:56:16", 19.0905, -79.11987], ["2019-12-16T00:27:06", 19.08924, -79.16674], ["2019-12-16T03:24:47", 19.08463, -79.20556], ["2019-12-16T03:54:31", 19.08229, -79.21311], ["2019-12-16T04:24:31", 19.08122, -79.22075], ["2019-12-16T04:54:31", 19.08023, -79.22787], ["2019-12-16T06:24:13", 19.07656, -79.24733], ["2019-12-16T06:54:13", 19.07562, -79.25342], ["2019-12-16T07:24:13", 19.07459, -79.25857], ["2019-12-16T07:54:06", 19.07425, -79.26428], ["2019-12-16T09:53:42", 19.07155, -79.28787], ["2019-12-16T10:23:42", 19.07031, -79.29371], ["2019-12-16T10:53:42", 19.06928, -79.29929], ["2019-12-16T11:24:29", 19.06753, -79.30504], ["2019-12-16T12:24:28", 19.06388, -79.31659], ["2019-12-16T13:24:30", 19.06015, -79.3287], ["2019-12-16T13:52:31", 19.05855, -79.33584], ["2019-12-16T14:22:31", 19.05739, -79.34331], ["2019-12-16T14:52:31", 19.0558, -79.35052], ["2019-12-16T15:52:22", 19.05335, -79.36539], ["2019-12-16T16:22:16", 19.05208, -79.37343], ["2019-12-16T16:52:16", 19.05122, -79.38106], ["2019-12-16T22:20:47", 19.07195, -79.4678], ["2019-12-16T23:20:33", 19.08129, -79.48303], ["2019-12-16T23:52:58", 19.08673, -79.49112], ["2019-12-17T00:20:33", 19.09129, -79.49805], ["2019-12-17T02:21:40", 19.11223, -79.52558], ["2019-12-17T02:51:40", 19.11635, -79.53125], ["2019-12-17T03:21:40", 19.12064, -79.5376], ["2019-12-17T03:49:39", 19.12389, -79.54294], ["2019-12-17T05:19:30", 19.1329, -79.55838], ["2019-12-17T06:51:58", 19.13832, -79.57315], ["2019-12-17T14:48:29", 19.12621, -79.61478], ["2019-12-17T16:49:13", 19.11465, -79.63146], ["2019-12-17T18:45:46", 19.10374, -79.6478], ["2019-12-17T21:46:26", 19.09043, -79.67477], ["2019-12-18T01:14:14", 19.08047, -79.70157], ["2019-12-18T03:43:25", 19.07648, -79.71597], ["2019-12-18T04:13:25", 19.07528, -79.71872], ["2019-12-18T04:43:25", 19.07356, -79.72104], ["2019-12-18T05:43:03", 19.06797, -79.72348], ["2019-12-18T06:14:02", 19.0639, -79.72467], ["2019-12-18T06:44:02", 19.06047, -79.72664], ["2019-12-18T07:14:02", 19.05704, -79.72826], ["2019-12-18T07:43:28", 19.05332, -79.72977], ["2019-12-18T08:13:28", 19.0498, -79.73166], ["2019-12-18T11:12:05", 19.0277, -79.73959], ["2019-12-18T11:41:41", 19.0235, -79.74063], ["2019-12-18T12:11:41", 19.02024, -79.74097], ["2019-12-18T12:42:29", 19.01665, -79.74132], ["2019-12-18T13:12:29", 19.013, -79.74149], ["2019-12-18T13:43:43", 19.00969, -79.74176], ["2019-12-18T14:13:43", 19.00583, -79.74176], ["2019-12-18T18:13:33", 18.97609, -79.7486], ["2019-12-18T18:43:33", 18.97244, -79.74997], ["2019-12-18T19:13:33", 18.96858, -79.75229], ["2019-12-18T19:39:43", 18.96573, -79.75415], ["2019-12-19T00:38:23", 18.94, -79.7784], ["2019-12-19T01:08:19", 18.93766, -79.78079], ["2019-12-19T03:07:57", 18.92975, -79.78738], ["2019-12-19T03:37:33", 18.92741, -79.78769], ["2019-12-19T04:07:33", 18.92471, -79.78769], ["2019-12-19T04:37:33", 18.92171, -79.7876], ["2019-12-19T06:37:06", 18.90757, -79.78529], ["2019-12-19T07:07:59", 18.90377, -79.78448], ["2019-12-19T07:37:06", 18.89946, -79.78366], ["2019-12-19T08:06:50", 18.89529, -79.78292], ["2019-12-19T08:36:50", 18.89164, -79.78259], ["2019-12-19T09:36:15", 18.88401, -79.78179], ["2019-12-19T10:06:15", 18.87998, -79.78136], ["2019-12-19T10:36:15", 18.87573, -79.7811], ["2019-12-19T11:08:02", 18.87098, -79.78055], ["2019-12-19T11:36:00", 18.86678, -79.77988], ["2019-12-19T12:05:52", 18.86196, -79.77872], ["2019-12-19T17:06:27", 18.8071, -79.77764], ["2019-12-19T20:36:27", 18.76753, -79.80676], ["2019-12-19T21:33:40", 18.75756, -79.81903], ["2019-12-19T22:33:27", 18.74772, -79.83392], ["2019-12-20T00:02:51", 18.73298, -79.85944], ["2019-12-20T00:32:51", 18.72804, -79.8687], ["2019-12-20T01:02:51", 18.72349, -79.87781], ["2019-12-20T01:32:29", 18.71847, -79.88802], ["2019-12-20T02:02:29", 18.71409, -79.8966], ["2019-12-20T02:32:29", 18.70881, -79.90561], ["2019-12-20T03:02:18", 18.70261, -79.91454], ["2019-12-20T03:32:18", 18.69664, -79.92252], ["2019-12-20T04:02:21", 18.68994, -79.93111], ["2019-12-20T04:32:21", 18.68307, -79.93686], ["2019-12-20T05:32:53", 18.66833, -79.94816], ["2019-12-20T06:02:53", 18.66099, -79.95245], ["2019-12-20T06:32:53", 18.65254, -79.9569], ["2019-12-20T07:01:35", 18.64359, -79.96051], ["2019-12-20T07:31:58", 18.63312, -79.9646], ["2019-12-20T08:31:40", 18.61116, -79.97526], ["2019-12-20T09:01:40", 18.59829, -79.98085], ["2019-12-20T09:31:40", 18.58378, -79.98557], ["2019-12-20T10:00:47", 18.56961, -79.98923], ["2019-12-20T11:00:33", 18.54093, -79.99719], ["2019-12-20T18:28:36", 18.36068, -80.05734], ["2019-12-20T19:28:29", 18.34148, -80.06464], ["2019-12-20T21:57:51", 18.2919, -80.08691], ["2019-12-21T00:28:27", 18.24008, -80.11069], ["2019-12-21T05:55:55", 18.13484, -80.18478], ["2019-12-21T06:26:58", 18.12621, -80.19315], ["2019-12-21T08:55:04", 18.08528, -80.23428], ["2019-12-21T09:24:53", 18.07719, -80.2431], ["2019-12-21T09:55:56", 18.06906, -80.25217], ["2019-12-21T13:23:51", 18.02212, -80.32022], ["2019-12-21T15:24:11", 18.00014, -80.35903], ["2019-12-21T15:54:11", 17.99559, -80.36864], ["2019-12-21T16:24:11", 17.99061, -80.37851], ["2019-12-21T16:53:01", 17.98607, -80.38791], ["2019-12-21T17:52:51", 17.97747, -80.4077], ["2019-12-22T13:18:29", 17.8785, -80.76587], ["2019-12-22T15:18:31", 17.88511, -80.80085], ["2019-12-22T15:48:31", 17.88683, -80.80866], ["2019-12-22T16:18:31", 17.88949, -80.81699], ["2019-12-22T20:47:57", 17.9193, -80.88959], ["2019-12-22T23:16:26", 17.9361, -80.92953], ["2019-12-22T23:46:26", 17.93898, -80.93691], ["2019-12-23T00:16:26", 17.94164, -80.94403], ["2019-12-23T03:17:24", 17.9559, -80.98878], ["2019-12-23T03:47:24", 17.9583, -80.99677], ["2019-12-23T04:17:24", 17.96109, -81.00381], ["2019-12-23T06:45:26", 17.97738, -81.04031], ["2019-12-23T07:14:28", 17.98096, -81.04718], ["2019-12-23T07:44:28", 17.9862, -81.05439], ["2019-12-23T08:14:28", 17.99079, -81.06091], ["2019-12-23T09:14:06", 17.99866, -81.07415], ["2019-12-23T09:44:06", 18.00222, -81.08033], ["2019-12-23T10:14:06", 18.00552, -81.08694], ["2019-12-23T10:44:54", 18.00854, -81.0935], ["2019-12-23T11:14:31", 18.0113, -81.09981], ["2019-12-23T11:44:31", 18.01413, -81.10745], ["2019-12-23T12:44:30", 18.02095, -81.12072], ["2019-12-23T14:12:53", 18.03094, -81.14178], ["2019-12-23T14:43:29", 18.03483, -81.14939], ["2019-12-23T15:12:42", 18.03843, -81.15646], ["2019-12-23T15:43:29", 18.04234, -81.16415], ["2019-12-23T16:12:30", 18.04605, -81.17175], ["2019-12-23T18:11:54", 18.06504, -81.20325], ["2019-12-23T18:41:55", 18.07044, -81.21039], ["2019-12-23T19:11:55", 18.07598, -81.21717], ["2019-12-23T19:41:55", 18.0822, -81.22369], ["2019-12-23T20:11:21", 18.08827, -81.22955], ["2019-12-23T23:42:05", 18.12977, -81.26047], ["2019-12-24T01:40:09", 18.15177, -81.27231], ["2019-12-24T02:10:09", 18.15619, -81.27481], ["2019-12-24T02:40:09", 18.16108, -81.27746], ["2019-12-24T12:08:33", 18.2053, -81.3096], ["2019-12-24T12:37:24", 18.20511, -81.31147], ["2019-12-24T13:07:24", 18.20438, -81.31336], ["2019-12-24T13:37:24", 18.20395, -81.31473], ["2019-12-24T14:37:08", 18.20288, -81.31833], ["2019-12-24T15:07:08", 18.20172, -81.31995], ["2019-12-24T15:37:08", 18.20043, -81.32192], ["2019-12-24T22:35:00", 18.18589, -81.36255], ["2019-12-25T13:31:05", 18.22164, -81.49887], ["2019-12-25T15:03:28", 18.21968, -81.52078], ["2019-12-25T16:00:31", 18.21635, -81.53568], ["2019-12-25T17:00:25", 18.2114, -81.5517], ["2019-12-25T17:30:03", 18.20788, -81.56035], ["2019-12-25T18:00:03", 18.20445, -81.56722], ["2019-12-25T18:30:03", 18.2002, -81.57477], ["2019-12-25T20:00:58", 18.18505, -81.59822], ["2019-12-25T20:29:48", 18.17958, -81.60599], ["2019-12-25T21:00:58", 18.17338, -81.61453], ["2019-12-25T21:59:59", 18.1626, -81.63048], ["2019-12-25T22:29:59", 18.15771, -81.63856], ["2019-12-25T22:59:59", 18.15308, -81.6474], ["2019-12-26T00:28:55", 18.14197, -81.67171], ["2019-12-26T00:58:51", 18.13888, -81.6799], ["2019-12-26T06:57:30", 18.13091, -81.759], ["2019-12-26T07:28:30", 18.13132, -81.76544], ["2019-12-26T07:58:28", 18.13143, -81.77197], ["2019-12-26T08:28:28", 18.13173, -81.77927], ["2019-12-26T15:55:43", 18.1552, -81.87054], ["2019-12-26T16:57:29", 18.1582, -81.88409], ["2019-12-26T17:25:05", 18.15964, -81.88952], ["2019-12-26T18:54:33", 18.1631, -81.9074], ["2019-12-26T19:25:58", 18.16423, -81.91318], ["2019-12-26T19:54:33", 18.16486, -81.91873], ["2019-12-27T05:22:17", 18.1739, -82.04407], ["2019-12-27T08:55:10", 18.17275, -82.10217], ["2019-12-27T12:52:59", 18.16036, -82.1765], ["2019-12-27T13:22:59", 18.15839, -82.18612], ["2019-12-27T13:52:59", 18.15654, -82.19701], ["2019-12-27T14:20:54", 18.1547, -82.20663], ["2019-12-27T15:50:43", 18.14891, -82.23944], ["2019-12-27T16:50:00", 18.14531, -82.26142], ["2019-12-27T17:20:00", 18.14346, -82.27292], ["2019-12-27T17:50:00", 18.14166, -82.28442], ["2019-12-27T18:19:56", 18.14012, -82.29707], ["2019-12-27T18:49:56", 18.13909, -82.30916], ["2019-12-27T19:19:56", 18.13853, -82.32144], ["2019-12-27T20:47:03", 18.13832, -82.36819], ["2019-12-27T21:17:03", 18.13841, -82.37643], ["2019-12-27T21:47:03", 18.13841, -82.37823], ["2019-12-27T23:19:09", 18.13787, -82.4115], ["2019-12-28T00:18:54", 18.13751, -82.43082], ["2019-12-28T00:48:54", 18.13794, -82.43966], ["2019-12-28T01:18:54", 18.13991, -82.44781], ["2019-12-28T01:48:27", 18.14128, -82.4562], ["2019-12-28T02:18:27", 18.14252, -82.46478], ["2019-12-28T02:47:57", 18.14339, -82.47314], ["2019-12-28T03:18:07", 18.14337, -82.48135], ["2019-12-28T03:47:38", 18.1433, -82.48923], ["2019-12-28T04:47:23", 18.14322, -82.50657], ["2019-12-28T05:17:23", 18.14331, -82.51524], ["2019-12-28T05:47:23", 18.14327, -82.52399], ["2019-12-28T06:17:28", 18.14255, -82.53344], ["2019-12-28T06:47:28", 18.14173, -82.54194], ["2019-12-28T07:17:28", 18.14104, -82.55078], ["2019-12-28T07:46:57", 18.14007, -82.55904], ["2019-12-28T08:16:57", 18.1387, -82.56702], ["2019-12-28T08:46:07", 18.1371, -82.57481], ["2019-12-28T09:16:07", 18.13525, -82.58235], ["2019-12-28T09:46:07", 18.13345, -82.58905], ["2019-12-28T10:15:53", 18.1322, -82.59523], ["2019-12-28T10:45:53", 18.131, -82.6015], ["2019-12-28T11:15:39", 18.13029, -82.60824], ["2019-12-28T11:45:39", 18.12909, -82.61511], ["2019-12-28T13:45:14", 18.12422, -82.65002], ["2019-12-28T16:14:28", 18.11802, -82.70577], ["2019-12-28T16:44:28", 18.11652, -82.71787], ["2019-12-28T17:14:28", 18.11553, -82.73083], ["2019-12-28T18:43:34", 18.11331, -82.76952], ["2019-12-28T19:13:34", 18.1128, -82.7836], ["2019-12-28T19:43:34", 18.11284, -82.79639], ["2019-12-28T23:14:55", 18.12358, -82.88357], ["2019-12-28T23:43:57", 18.12493, -82.89321], ["2019-12-29T00:13:57", 18.12626, -82.90291], ["2019-12-29T00:43:57", 18.12712, -82.91287], ["2019-12-29T01:12:56", 18.12795, -82.92186], ["2019-12-29T01:42:56", 18.12889, -82.93164], ["2019-12-29T02:13:26", 18.12975, -82.94069], ["2019-12-29T02:43:26", 18.13082, -82.95013], ["2019-12-29T03:11:46", 18.13158, -82.95859], ["2019-12-29T03:41:34", 18.13279, -82.96762], ["2019-12-29T04:11:34", 18.13412, -82.97595], ["2019-12-29T05:42:28", 18.13775, -83.00131], ["2019-12-29T06:41:58", 18.14001, -83.01752], ["2019-12-29T12:41:27", 18.13863, -83.11053], ["2019-12-29T13:42:31", 18.13684, -83.12802], ["2019-12-29T15:10:28", 18.13438, -83.15349], ["2019-12-29T15:38:56", 18.13408, -83.16179], ["2019-12-29T16:10:12", 18.13377, -83.17072], ["2019-12-29T16:38:56", 18.13331, -83.17905], ["2019-12-29T18:09:29", 18.13402, -83.20536], ["2019-12-29T18:39:29", 18.13436, -83.21351], ["2019-12-29T19:09:29", 18.13449, -83.22235], ["2019-12-29T19:38:03", 18.1349, -83.23047], ["2019-12-29T20:08:58", 18.13526, -83.23868], ["2019-12-29T20:38:03", 18.13576, -83.24643], ["2019-12-29T21:37:45", 18.13699, -83.26166], ["2019-12-29T22:07:37", 18.13743, -83.26934], ["2019-12-29T22:37:37", 18.1379, -83.27612], ["2019-12-29T23:07:22", 18.13876, -83.28372], ["2019-12-29T23:37:22", 18.13966, -83.29049], ["2019-12-30T01:07:27", 18.14328, -83.3116], ["2019-12-30T01:37:27", 18.14478, -83.31787], ["2019-12-30T02:07:27", 18.14671, -83.32465], ["2019-12-30T02:36:11", 18.14848, -83.3306], ["2019-12-30T03:06:11", 18.1505, -83.33695], ["2019-12-30T03:36:11", 18.15204, -83.34296], ["2019-12-30T04:06:27", 18.15378, -83.34959], ["2019-12-30T04:35:47", 18.15561, -83.35599], ["2019-12-30T05:06:27", 18.15726, -83.36306], ["2019-12-30T06:04:59", 18.15837, -83.37634], ["2019-12-30T06:34:59", 18.15837, -83.38243], ["2019-12-30T07:04:59", 18.15816, -83.38894], ["2019-12-30T08:35:29", 18.15408, -83.40705], ["2019-12-30T09:05:29", 18.15142, -83.41271], ["2019-12-30T09:35:29", 18.14751, -83.41855], ["2019-12-30T19:33:00", 18.02804, -83.56683], ["2019-12-30T20:02:03", 18.02416, -83.57505], ["2019-12-30T20:32:03", 18.01974, -83.58423], ["2019-12-30T21:01:03", 18.01088, -83.60423], ["2019-12-30T21:31:03", 18.01011, -83.60629], ["2019-12-30T22:01:03", 18.00857, -83.61032], ["2019-12-31T00:30:29", 17.99136, -83.65365], ["2019-12-31T01:00:00", 17.98825, -83.66199], ["2019-12-31T01:30:29", 17.98505, -83.67055], ["2019-12-31T04:58:57", 17.96236, -83.72937], ["2019-12-31T05:30:26", 17.95977, -83.73743], ["2019-12-31T06:29:59", 17.95459, -83.75323], ["2019-12-31T06:58:28", 17.95247, -83.76053], ["2019-12-31T08:29:57", 17.94495, -83.78403], ["2019-12-31T09:27:40", 17.93973, -83.79807], ["2019-12-31T10:27:33", 17.93348, -83.81177], ["2019-12-31T14:26:45", 17.89731, -83.87177], ["2019-12-31T15:00:05", 17.89171, -83.88074], ["2019-12-31T15:30:05", 17.88669, -83.89001], ["2019-12-31T17:58:35", 17.86037, -83.94064], ["2019-12-31T19:26:58", 17.84668, -83.97566], ["2019-12-31T19:56:58", 17.8423, -83.98708], ["2019-12-31T20:26:58", 17.83758, -84.00031], ["2019-12-31T21:24:45", 17.82886, -84.02396], ["2020-01-01T00:24:10", 17.80034, -84.09537], ["2020-01-01T00:54:10", 17.79592, -84.10756], ["2020-01-01T01:24:10", 17.79193, -84.11923], ["2020-01-01T01:53:57", 17.78772, -84.13133], ["2020-01-01T02:23:57", 17.78407, -84.14239], ["2020-01-01T05:22:44", 17.76182, -84.20845], ["2020-01-01T05:52:44", 17.758, -84.21926], ["2020-01-01T06:22:44", 17.75409, -84.22922], ["2020-01-01T11:21:43", 17.70269, -84.3219], ["2020-01-01T12:21:26", 17.69029, -84.33947], ["2020-01-01T12:52:58", 17.68346, -84.34892], ["2020-01-01T13:22:58", 17.67719, -84.35776], ["2020-01-01T13:52:58", 17.67007, -84.3678], ["2020-01-01T14:20:41", 17.66443, -84.37645], ["2020-01-01T16:49:40", 17.63671, -84.42398], ["2020-01-01T20:49:30", 17.61012, -84.53317], ["2020-01-01T21:19:30", 17.60991, -84.53532], ["2020-01-01T21:49:30", 17.60978, -84.53644], ["2020-01-02T02:17:53", 17.6111, -84.6564], ["2020-01-02T03:17:36", 17.61568, -84.68455], ["2020-01-02T03:47:36", 17.61856, -84.69862], ["2020-01-02T04:17:36", 17.62144, -84.71133], ["2020-01-02T06:47:09", 17.6406, -84.7775], ["2020-01-02T07:47:03", 17.64867, -84.80194], ["2020-01-02T09:18:00", 17.65925, -84.83899], ["2020-01-02T09:48:00", 17.66268, -84.85057], ["2020-01-02T10:18:00", 17.6665, -84.86337], ["2020-01-02T11:47:46", 17.6837, -84.91262], ["2020-01-02T12:47:46", 17.68713, -84.92404], ["2020-01-02T15:17:00", 17.71384, -84.97949], ["2020-01-03T01:43:25", 17.84068, -85.20663], ["2020-01-03T04:12:14", 17.87004, -85.26367], ["2020-01-03T04:42:14", 17.87686, -85.27585], ["2020-01-03T05:12:14", 17.88308, -85.28693], ["2020-01-03T06:11:56", 17.89597, -85.30991], ["2020-01-03T07:11:45", 17.90919, -85.33157], ["2020-01-03T07:44:25", 17.91659, -85.34259], ["2020-01-03T13:10:24", 17.98937, -85.44284], ["2020-01-03T16:09:49", 18.03568, -85.48978], ["2020-01-03T16:39:41", 18.04282, -85.49759], ["2020-01-03T17:10:26", 18.04974, -85.50627], ["2020-01-03T17:40:26", 18.05549, -85.51416], ["2020-01-03T18:10:26", 18.06193, -85.52301], ["2020-01-03T20:10:59", 18.08847, -85.55734], ["2020-01-03T20:47:25", 18.10965, -85.58065], ["2020-01-03T21:17:25", 18.11004, -85.58108], ["2020-01-03T21:47:25", 18.11133, -85.58237], ["2020-01-03T23:38:20", 18.13609, -85.61035], ["2020-01-04T02:07:53", 18.16507, -85.65411], ["2020-01-04T02:37:53", 18.17091, -85.66355], ["2020-01-04T03:07:53", 18.17619, -85.6723], ["2020-01-04T04:37:28", 18.19347, -85.6994], ["2020-01-04T06:36:55", 18.21734, -85.73648], ["2020-01-04T07:08:59", 18.22441, -85.7463], ["2020-01-04T07:36:39", 18.23077, -85.75476], ["2020-01-04T08:06:39", 18.23712, -85.76412], ["2020-01-04T08:36:18", 18.24347, -85.77415], ["2020-01-04T09:06:18", 18.24948, -85.78317], ["2020-01-04T12:35:06", 18.2915, -85.84738], ["2020-01-04T13:05:06", 18.29734, -85.85509], ["2020-01-04T13:35:06", 18.30395, -85.86368], ["2020-01-04T14:05:59", 18.31062, -85.87213], ["2020-01-04T15:06:30", 18.32329, -85.88855], ["2020-01-04T19:05:58", 18.38184, -85.94864], ["2020-01-05T00:32:11", 18.45463, -86.01546], ["2020-01-05T01:03:16", 18.45903, -86.02039], ["2020-01-05T06:04:00", 18.46322, -86.06319], ["2020-01-05T08:31:29", 18.45568, -86.09143], ["2020-01-05T09:30:27", 18.45305, -86.10278], ["2020-01-05T10:00:27", 18.45193, -86.10809], ["2020-01-05T10:30:27", 18.4509, -86.11462], ["2020-01-05T11:01:35", 18.44961, -86.1232], ["2020-01-05T14:00:31", 18.4494, -86.1741], ["2020-01-05T14:29:07", 18.45167, -86.18298], ["2020-01-05T14:58:50", 18.45369, -86.19426], ["2020-01-05T15:28:50", 18.45592, -86.20499], ["2020-01-05T15:58:55", 18.45733, -86.2175], ["2020-01-05T16:28:55", 18.45939, -86.22951], ["2020-01-05T16:58:55", 18.46098, -86.23965], ["2020-01-05T17:30:41", 18.46362, -86.25252], ["2020-01-05T20:29:59", 18.48576, -86.32495], ["2020-01-05T21:27:31", 18.49918, -86.35615], ["2020-01-05T21:57:31", 18.50107, -86.3601], ["2020-01-05T22:27:31", 18.50678, -86.37152], ["2020-01-06T00:58:58", 18.53944, -86.42804], ["2020-01-06T01:28:58", 18.54605, -86.43868], ["2020-01-06T01:58:58", 18.55283, -86.44992], ["2020-01-06T04:27:26", 18.58686, -86.49643], ["2020-01-06T04:57:28", 18.59378, -86.50454], ["2020-01-06T05:27:28", 18.60146, -86.51245], ["2020-01-06T06:56:01", 18.62376, -86.53261], ["2020-01-06T07:25:32", 18.63203, -86.53953], ["2020-01-06T07:55:32", 18.63954, -86.54468], ["2020-01-06T08:25:32", 18.64774, -86.55025], ["2020-01-06T10:24:59", 18.67968, -86.56811], ["2020-01-06T10:54:59", 18.68788, -86.57241], ["2020-01-06T11:24:59", 18.69492, -86.57593], ["2020-01-06T11:55:31", 18.70218, -86.58014], ["2020-01-06T12:24:33", 18.70944, -86.58494], ["2020-01-06T12:54:33", 18.71734, -86.58992], ["2020-01-06T13:24:33", 18.72502, -86.59421], ["2020-01-06T20:22:51", 18.85048, -86.65475], ["2020-01-06T20:54:57", 18.86011, -86.65761], ["2020-01-06T21:46:40", 18.87505, -86.66195], ["2020-01-06T21:52:36", 18.87686, -86.6624], ["2020-01-06T22:52:25", 18.89544, -86.66772], ["2020-01-07T01:21:32", 18.94118, -86.67972], ["2020-01-07T04:51:56", 19.0101, -86.69324], ["2020-01-07T08:19:19", 19.07944, -86.70648], ["2020-01-07T14:20:55", 19.21347, -86.72098], ["2020-01-07T15:17:52", 19.23594, -86.72145], ["2020-01-07T15:47:52", 19.24834, -86.72171], ["2020-01-07T16:17:52", 19.25967, -86.72171], ["2020-01-07T18:47:24", 19.31878, -86.71919], ["2020-01-07T19:17:24", 19.32977, -86.7185], ["2020-01-07T19:47:24", 19.34179, -86.71738], ["2020-01-07T20:18:00", 19.35412, -86.71643], ["2020-01-07T20:48:00", 19.36541, -86.71505], ["2020-01-07T21:18:00", 19.37683, -86.71326], ["2020-01-07T22:46:42", 19.41036, -86.70697], ["2020-01-07T23:46:24", 19.43303, -86.70401], ["2020-01-08T02:15:12", 19.48862, -86.69437], ["2020-01-08T02:46:29", 19.49942, -86.69266], ["2020-01-08T03:15:12", 19.50994, -86.69119], ["2020-01-08T04:15:06", 19.53181, -86.68875], ["2020-01-08T05:46:28", 19.56835, -86.68892], ["2020-01-08T06:16:28", 19.57977, -86.68841], ["2020-01-08T06:46:28", 19.5926, -86.68781], ["2020-01-08T11:13:24", 19.70793, -86.67767], ["2020-01-08T13:14:17", 19.7661, -86.66728], ["2020-01-08T13:44:17", 19.78073, -86.66472], ["2020-01-08T14:14:17", 19.79549, -86.66128], ["2020-01-08T15:14:00", 19.82354, -86.65545], ["2020-01-08T15:44:00", 19.8371, -86.65313], ["2020-01-08T16:14:00", 19.85212, -86.65021], ["2020-01-08T19:13:02", 19.93983, -86.63959], ["2020-01-08T22:44:46", 20.04243, -86.61221], ["2020-01-09T01:10:29", 20.11361, -86.58588], ["2020-01-09T02:41:26", 20.15596, -86.56556], ["2020-01-09T03:11:26", 20.16926, -86.5592], ["2020-01-09T03:41:26", 20.18325, -86.55252], ["2020-01-09T05:09:31", 20.22233, -86.53362], ["2020-01-09T05:39:31", 20.23645, -86.52598], ["2020-01-09T06:09:31", 20.24774, -86.52032], ["2020-01-09T11:39:59", 20.384, -86.43701], ["2020-01-09T12:07:54", 20.39459, -86.43002], ["2020-01-09T12:37:54", 20.40609, -86.42255], ["2020-01-09T18:37:38", 20.55453, -86.34369], ["2020-01-09T20:05:39", 20.59381, -86.32821], ["2020-01-09T20:35:39", 20.60982, -86.32332], ["2020-01-09T21:05:39", 20.6233, -86.31937], ["2020-01-09T21:47:13", 20.64413, -86.31328], ["2020-01-09T23:08:06", 20.6873, -86.30096], ["2020-01-09T23:36:09", 20.70228, -86.29716], ["2020-01-10T00:06:09", 20.71807, -86.29356], ["2020-01-10T00:36:09", 20.73489, -86.29013], ["2020-01-10T01:05:26", 20.75046, -86.28744], ["2020-01-10T01:35:26", 20.76672, -86.28452], ["2020-01-10T02:35:27", 20.79924, -86.27869], ["2020-01-10T06:03:30", 20.90586, -86.26166], ["2020-01-10T06:33:08", 20.92193, -86.25951], ["2020-01-10T07:03:08", 20.93785, -86.25659], ["2020-01-10T07:33:08", 20.95317, -86.25479], ["2020-01-10T10:02:23", 21.03404, -86.25018], ["2020-01-10T10:32:23", 21.04807, -86.24948], ["2020-01-10T11:02:23", 21.06361, -86.24872], ["2020-01-10T14:05:08", 21.1523, -86.25354], ["2020-01-10T14:31:21", 21.1656, -86.25577], ["2020-01-10T16:30:51", 21.22573, -86.2677], ["2020-01-10T17:00:44", 21.24047, -86.27075], ["2020-01-10T17:30:44", 21.25347, -86.27392], ["2020-01-10T19:00:10", 21.29444, -86.28488], ["2020-01-10T20:29:39", 21.33232, -86.29947], ["2020-01-10T20:59:39", 21.3421, -86.30701], ["2020-01-10T21:29:39", 21.35206, -86.31509], ["2020-01-10T21:46:47", 21.35828, -86.31976], ["2020-01-10T21:59:34", 21.36368, -86.32377], ["2020-01-10T22:29:34", 21.37415, -86.33123], ["2020-01-10T22:59:09", 21.38548, -86.33938], ["2020-01-10T23:29:09", 21.3981, -86.3471], ["2020-01-10T23:59:09", 21.40977, -86.35397], ["2020-01-11T00:59:59", 21.43675, -86.37021], ["2020-01-11T05:29:59", 21.61999, -86.43716], ["2020-01-11T06:58:12", 21.68986, -86.45645], ["2020-01-11T10:57:08", 21.87593, -86.49827], ["2020-01-11T11:27:08", 21.89803, -86.503], ["2020-01-11T11:57:08", 21.92138, -86.50763], ["2020-01-11T18:26:06", 22.26699, -86.65973], ["2020-01-11T19:27:28", 22.31941, -86.69431], ["2020-01-11T19:55:44", 22.34278, -86.71017], ["2020-01-11T20:55:32", 22.39152, -86.74209], ["2020-01-11T21:25:20", 22.42979, -86.76672], ["2020-01-11T21:55:20", 22.43593, -86.77032], ["2020-01-11T22:26:20", 22.45715, -86.7836], ["2020-01-11T22:56:20", 22.47878, -86.79544], ["2020-01-11T23:25:05", 22.49793, -86.80582], ["2020-01-12T00:24:33", 22.53418, -86.82727], ["2020-01-12T00:54:33", 22.55199, -86.83757], ["2020-01-12T01:24:33", 22.56753, -86.84641], ["2020-01-12T01:55:59", 22.58416, -86.85637], ["2020-01-12T02:25:59", 22.59849, -86.86512], ["2020-01-12T02:55:59", 22.61398, -86.87387], ["2020-01-12T03:24:18", 22.62752, -86.88173], ["2020-01-12T03:54:58", 22.64133, -86.88977], ["2020-01-12T05:23:50", 22.67696, -86.91678], ["2020-01-12T07:55:25", 22.73188, -86.96332], ["2020-01-12T08:23:06", 22.74226, -86.97188], ["2020-01-12T08:53:06", 22.75359, -86.98038], ["2020-01-12T09:23:28", 22.76597, -86.98945], ["2020-01-12T09:53:28", 22.77884, -86.99787], ["2020-01-12T10:23:28", 22.79232, -87.00482], ["2020-01-12T13:23:59", 22.85464, -87.05548], ["2020-01-12T13:52:12", 22.86321, -87.06631], ["2020-01-12T14:23:04", 22.87192, -87.07928], ["2020-01-12T17:52:13", 22.92691, -87.18962], ["2020-01-12T18:22:13", 22.93322, -87.20447], ["2020-01-12T18:52:13", 22.94189, -87.22051], ["2020-01-12T19:20:21", 22.94933, -87.23569], ["2020-01-12T19:50:21", 22.95783, -87.25251], ["2020-01-12T20:20:21", 22.96504, -87.26633], ["2020-01-12T20:47:09", 22.98296, -87.29505], ["2020-01-12T21:22:09", 22.98294, -87.29501], ["2020-01-12T21:47:09", 22.9909, -87.30646], ["2020-01-12T22:20:07", 23.00146, -87.3215], ["2020-01-12T22:53:38", 23.0124, -87.33673], ["2020-01-13T01:50:31", 23.07657, -87.40631], ["2020-01-13T02:20:31", 23.08859, -87.4161], ["2020-01-13T02:50:31", 23.10108, -87.4252], ["2020-01-13T06:19:00", 23.18866, -87.4671], ["2020-01-13T14:46:57", 23.29427, -87.50122], ["2020-01-13T15:47:30", 23.30222, -87.5116], ["2020-01-13T16:15:04", 23.3068, -87.51665], ["2020-01-13T16:45:04", 23.31148, -87.5224], ["2020-01-13T17:14:51", 23.31643, -87.52934], ["2020-01-13T17:44:51", 23.32111, -87.53543], ["2020-01-13T18:14:25", 23.32724, -87.54313], ["2020-01-13T18:44:25", 23.33445, -87.55172], ["2020-01-13T19:14:25", 23.34102, -87.55927], ["2020-01-13T20:44:48", 23.36942, -87.58892], ["2020-01-13T21:14:48", 23.37397, -87.59295], ["2020-01-13T21:44:48", 23.37466, -87.59338], ["2020-01-14T02:45:04", 23.40668, -87.63217], ["2020-01-14T03:45:04", 23.41003, -87.6362], ["2020-01-14T15:09:49", 23.3961, -87.70441], ["2020-01-14T20:08:44", 23.38385, -87.74451], ["2020-01-14T23:39:07", 23.3739, -87.78259], ["2020-01-15T00:08:21", 23.37085, -87.7894], ["2020-01-15T00:39:44", 23.36851, -87.79749], ["2020-01-15T01:40:32", 23.36355, -87.81079], ["2020-01-15T02:37:11", 23.35835, -87.82321], ["2020-01-15T03:07:11", 23.35556, -87.83102], ["2020-01-15T03:37:11", 23.35346, -87.83832], ["2020-01-15T04:08:12", 23.35174, -87.84537], ["2020-01-15T05:07:26", 23.3491, -87.85981], ["2020-01-15T05:37:26", 23.34798, -87.86711], ["2020-01-15T06:07:26", 23.34656, -87.87466], ["2020-01-15T08:36:12", 23.34645, -87.90808], ["2020-01-15T09:07:31", 23.347, -87.91446], ["2020-01-15T10:06:38", 23.34758, -87.92661], ["2020-01-15T10:36:38", 23.34758, -87.93227], ["2020-01-15T11:06:38", 23.34728, -87.93845], ["2020-01-15T12:05:59", 23.34542, -87.9494], ["2020-01-15T12:35:59", 23.34473, -87.95541], ["2020-01-15T13:05:59", 23.34361, -87.96133], ["2020-01-15T13:37:58", 23.34262, -87.96793], ["2020-01-15T14:05:02", 23.34181, -87.9743], ["2020-01-15T14:35:02", 23.34069, -87.98099], ["2020-01-15T15:08:36", 23.33934, -87.98867], ["2020-01-15T15:38:36", 23.33805, -87.99733], ["2020-01-15T19:34:31", 23.33137, -88.07339], ["2020-01-15T21:35:59", 23.33568, -88.12485], ["2020-01-15T23:35:32", 23.3372, -88.16525], ["2020-01-16T13:30:56", 23.28569, -88.30301], ["2020-01-16T14:00:10", 23.28384, -88.30649], ["2020-01-16T19:29:04", 23.26218, -88.35471], ["2020-01-16T21:28:39", 23.26022, -88.37344], ["2020-01-16T21:59:41", 23.26001, -88.379], ["2020-01-16T22:29:41", 23.25984, -88.38415], ["2020-01-16T22:59:41", 23.25915, -88.38947], ["2020-01-17T00:28:13", 23.25886, -88.40619], ["2020-01-17T01:27:55", 23.25753, -88.41461], ["2020-01-17T01:30:41", 23.26031, -88.42236], ["2020-01-17T02:30:41", 23.25632, -88.42468], ["2020-01-17T02:57:26", 23.2555, -88.42889], ["2020-01-17T03:58:38", 23.25415, -88.4387], ["2020-01-17T04:28:38", 23.25355, -88.44298], ["2020-01-17T04:58:38", 23.25261, -88.44754], ["2020-01-17T06:30:04", 23.25082, -88.46195], ["2020-01-17T07:00:04", 23.25056, -88.46753], ["2020-01-17T07:30:04", 23.2494, -88.47354], ["2020-01-17T08:26:34", 23.24929, -88.48434], ["2020-01-17T09:26:51", 23.24714, -88.49606], ["2020-01-17T14:27:42", 23.23606, -88.5635], ["2020-01-17T14:54:52", 23.23612, -88.56923], ["2020-01-17T15:24:51", 23.23647, -88.57553], ["2020-01-17T15:55:26", 23.23792, -88.58204], ["2020-01-17T16:25:26", 23.23882, -88.58753], ["2020-01-17T16:55:26", 23.24015, -88.59311], ["2020-01-17T17:24:19", 23.24121, -88.59878], ["2020-01-17T20:53:57", 23.25514, -88.64431], ["2020-01-17T21:23:57", 23.25557, -88.64501], ["2020-01-17T21:53:57", 23.25608, -88.64578], ["2020-01-18T00:54:28", 23.26854, -88.67023], ["2020-01-18T01:22:42", 23.27046, -88.67313], ["2020-01-18T01:54:28", 23.27296, -88.67624], ["2020-01-18T02:22:20", 23.27543, -88.67934], ["2020-01-18T02:52:20", 23.27809, -88.68234], ["2020-01-18T05:21:18", 23.28927, -88.69738], ["2020-01-18T05:51:18", 23.29112, -88.69995], ["2020-01-18T06:21:18", 23.29301, -88.70269], ["2020-01-18T17:18:41", 23.33084, -88.76971], ["2020-01-18T17:48:22", 23.33327, -88.77282], ["2020-01-18T18:18:22", 23.33507, -88.77582], ["2020-01-18T18:49:59", 23.33747, -88.77902], ["2020-01-18T21:20:28", 23.3555, -88.79065], ["2020-01-18T21:47:37", 23.35922, -88.79201], ["2020-01-18T23:47:59", 23.37389, -88.79727], ["2020-01-19T00:16:55", 23.37695, -88.79805], ["2020-01-19T00:46:55", 23.37983, -88.79864], ["2020-01-19T01:16:55", 23.3824, -88.79958], ["2020-01-19T01:46:43", 23.38498, -88.80063], ["2020-01-19T02:16:43", 23.38695, -88.80157], ["2020-01-19T02:47:03", 23.38859, -88.80262], ["2020-01-19T03:17:03", 23.39013, -88.80365], ["2020-01-19T03:47:03", 23.39146, -88.80511], ["2020-01-19T05:46:30", 23.39549, -88.80965], ["2020-01-19T08:45:24", 23.39743, -88.81314], ["2020-01-19T09:16:41", 23.39695, -88.81381], ["2020-01-19T09:45:06", 23.39629, -88.8143], ["2020-01-19T11:44:47", 23.39107, -88.8182], ["2020-01-19T13:15:28", 23.38536, -88.82335], ["2020-01-19T13:45:28", 23.38321, -88.82489], ["2020-01-19T14:15:28", 23.38089, -88.82669], ["2020-01-19T16:15:47", 23.3704, -88.83365], ["2020-01-19T17:13:31", 23.36853, -88.83893], ["2020-01-19T19:44:12", 23.36017, -88.84271], ["2020-01-19T21:12:59", 23.35436, -88.84542], ["2020-01-19T21:42:51", 23.35233, -88.84654], ["2020-01-19T22:12:51", 23.35096, -88.84698], ["2020-01-19T22:43:38", 23.34974, -88.8468], ["2020-01-19T23:12:46", 23.34834, -88.84558], ["2020-01-19T23:43:03", 23.34617, -88.84451], ["2020-01-20T01:42:05", 23.33681, -88.83331], ["2020-01-20T02:12:29", 23.33381, -88.82984], ["2020-01-20T02:42:29", 23.33136, -88.82684], ["2020-01-20T03:12:29", 23.32883, -88.82349], ["2020-01-20T05:11:57", 23.31804, -88.81326], ["2020-01-20T05:41:47", 23.31454, -88.81063], ["2020-01-20T06:11:47", 23.31179, -88.80916], ["2020-01-20T06:41:31", 23.30879, -88.80831], ["2020-01-20T07:41:16", 23.30302, -88.80907], ["2020-01-20T08:41:00", 23.29546, -88.80896], ["2020-01-20T13:41:05", 23.25105, -88.82671], ["2020-01-20T14:11:01", 23.24632, -88.83029], ["2020-01-20T14:39:24", 23.24106, -88.83363], ["2020-01-20T15:09:24", 23.23655, -88.83749], ["2020-01-20T15:39:24", 23.23157, -88.84161], ["2020-01-20T16:09:03", 23.22617, -88.84587], ["2020-01-20T16:39:03", 23.22154, -88.85008], ["2020-01-20T17:09:03", 23.2166, -88.8548], ["2020-01-20T18:38:48", 23.20248, -88.87033], ["2020-01-20T20:39:26", 23.18792, -88.88742], ["2020-01-20T21:09:05", 23.18497, -88.89173], ["2020-01-20T21:39:05", 23.18192, -88.89594], ["2020-01-20T22:09:42", 23.17865, -88.90004], ["2020-01-20T22:39:42", 23.17552, -88.90389], ["2020-01-21T00:10:58", 23.16695, -88.9173], ["2020-01-21T00:37:15", 23.1647, -88.92146], ["2020-01-21T01:07:15", 23.16217, -88.92574], ["2020-01-21T02:37:27", 23.15493, -88.94058], ["2020-01-21T03:38:05", 23.15008, -88.95126], ["2020-01-21T05:07:28", 23.14247, -88.9672], ["2020-01-21T05:37:28", 23.14041, -88.97202], ["2020-01-21T06:07:28", 23.13882, -88.9776], ["2020-01-21T08:06:29", 23.13254, -88.9971], ["2020-01-21T09:35:31", 23.12718, -89.01018], ["2020-01-21T10:06:27", 23.12542, -89.01465], ["2020-01-21T10:35:04", 23.12349, -89.01882], ["2020-01-21T19:33:58", 23.06533, -89.09148], ["2020-01-21T21:06:28", 23.04883, -89.11172], ["2020-01-21T21:36:28", 23.04836, -89.11233], ["2020-01-21T22:06:28", 23.04643, -89.11508], ["2020-01-21T22:33:34", 23.04299, -89.1189], ["2020-01-21T23:03:11", 23.03951, -89.12334], ["2020-01-21T23:33:11", 23.03569, -89.12797], ["2020-01-22T00:03:11", 23.03277, -89.1326], ["2020-01-22T00:35:00", 23.02956, -89.13791], ["2020-01-22T01:02:50", 23.02695, -89.14227], ["2020-01-22T02:03:29", 23.02037, -89.15186], ["2020-01-22T02:32:26", 23.01741, -89.15576], ["2020-01-22T04:03:01", 23.009, -89.1683], ["2020-01-22T04:34:06", 23.00704, -89.17306], ["2020-01-22T05:04:06", 23.00412, -89.17752], ["2020-01-22T05:31:13", 23.00167, -89.18172], ["2020-01-22T06:01:13", 22.99944, -89.1861], ["2020-01-22T06:33:00", 22.99717, -89.1908], ["2020-01-22T07:01:05", 22.99479, -89.19472], ["2020-01-22T07:31:05", 22.99226, -89.19824], ["2020-01-22T09:30:19", 22.98521, -89.21429], ["2020-01-22T10:02:29", 22.98315, -89.21808], ["2020-01-22T10:59:53", 22.98041, -89.22565], ["2020-01-22T14:29:17", 22.97194, -89.25539], ["2020-01-22T18:58:58", 22.9587, -89.297], ["2020-01-22T19:28:58", 22.95707, -89.30155], ["2020-01-22T19:58:58", 22.95557, -89.30661], ["2020-01-22T20:27:44", 22.95438, -89.31188], ["2020-01-22T20:57:44", 22.95296, -89.31737], ["2020-01-22T21:27:44", 22.95086, -89.32165], ["2020-01-23T03:26:38", 22.92966, -89.36391], ["2020-01-23T04:26:28", 22.92806, -89.37021], ["2020-01-23T04:56:28", 22.92746, -89.37313], ["2020-01-23T05:26:28", 22.92737, -89.37569], ["2020-01-23T05:55:48", 22.92723, -89.37836], ["2020-01-23T06:55:40", 22.92776, -89.38385], ["2020-01-23T07:27:30", 22.92795, -89.38713], ["2020-01-23T07:57:30", 22.92838, -89.39013], ["2020-01-23T08:27:30", 22.92881, -89.39331], ["2020-01-23T08:55:31", 22.92892, -89.39597], ["2020-01-23T09:26:00", 22.92898, -89.39932], ["2020-01-23T09:56:00", 22.92984, -89.4025], ["2020-01-23T11:24:55", 22.93271, -89.41115], ["2020-01-23T11:54:55", 22.93378, -89.41433], ["2020-01-23T12:24:55", 22.9346, -89.4169], ["2020-01-23T12:54:40", 22.93604, -89.41976], ["2020-01-23T13:24:40", 22.93814, -89.42388], ["2020-01-23T13:54:40", 22.9396, -89.42654], ["2020-01-23T14:24:38", 22.94122, -89.42914], ["2020-01-23T15:55:57", 22.9465, -89.4357], ["2020-01-23T18:55:26", 22.95996, -89.44708], ["2020-01-23T19:24:10", 22.9627, -89.44893], ["2020-01-23T21:47:30", 22.97632, -89.45871], ["2020-01-23T22:54:26", 22.98271, -89.46231], ["2020-01-23T23:23:44", 22.98544, -89.4639], ["2020-01-24T00:23:23", 22.99018, -89.46753], ["2020-01-24T00:52:57", 22.99288, -89.46942], ["2020-01-24T01:22:57", 22.99537, -89.47131], ["2020-01-24T01:52:46", 22.9982, -89.47307], ["2020-01-24T02:22:46", 23.00082, -89.47461], ["2020-01-24T02:52:57", 23.00362, -89.4758], ["2020-01-24T03:52:29", 23.00946, -89.47915], ["2020-01-24T04:22:29", 23.01221, -89.48061], ["2020-01-24T04:52:29", 23.01521, -89.48224], ["2020-01-24T05:21:54", 23.01807, -89.48383], ["2020-01-24T05:51:40", 23.02126, -89.48546], ["2020-01-24T06:21:40", 23.02401, -89.48699], ["2020-01-24T06:51:38", 23.02657, -89.4883], ["2020-01-24T07:21:38", 23.02902, -89.48924], ["2020-01-24T07:51:38", 23.03142, -89.48993], ["2020-01-24T08:21:27", 23.03369, -89.49073], ["2020-01-24T08:51:27", 23.03626, -89.49124], ["2020-01-24T09:20:42", 23.03873, -89.49182], ["2020-01-24T09:50:55", 23.04123, -89.49254], ["2020-01-24T10:20:27", 23.0432, -89.49338], ["2020-01-24T10:50:26", 23.04552, -89.4941], ["2020-01-24T11:20:26", 23.04767, -89.49478], ["2020-01-24T11:50:26", 23.04956, -89.49572], ["2020-01-24T12:19:59", 23.05154, -89.49684], ["2020-01-24T12:49:59", 23.05334, -89.49814], ["2020-01-24T13:19:59", 23.05497, -89.49951], ["2020-01-24T13:50:27", 23.05678, -89.50131], ["2020-01-24T14:19:55", 23.05828, -89.5033], ["2020-01-24T14:50:25", 23.05989, -89.50548], ["2020-01-24T15:19:41", 23.06184, -89.50797], ["2020-01-24T15:49:58", 23.0636, -89.51076], ["2020-01-24T17:49:28", 23.07213, -89.51956], ["2020-01-24T18:19:30", 23.07388, -89.52144], ["2020-01-24T18:49:30", 23.07573, -89.52298], ["2020-01-24T19:18:43", 23.07738, -89.52472], ["2020-01-24T19:48:34", 23.07895, -89.52678], ["2020-01-24T20:18:34", 23.08054, -89.52893], ["2020-01-24T20:48:57", 23.08218, -89.53137], ["2020-01-24T21:18:19", 23.08319, -89.53363], ["2020-01-24T21:48:41", 23.08379, -89.53581], ["2020-01-24T22:18:08", 23.08426, -89.53802], ["2020-01-24T22:48:41", 23.08481, -89.54053], ["2020-01-24T23:17:52", 23.08546, -89.54318], ["2020-01-24T23:48:30", 23.08605, -89.54562], ["2020-01-25T00:17:42", 23.08665, -89.54831], ["2020-01-25T00:47:57", 23.08738, -89.55121], ["2020-01-25T03:48:58", 23.08933, -89.57259], ["2020-01-25T05:46:47", 23.08695, -89.58691], ["2020-01-25T10:16:38", 23.07436, -89.61801], ["2020-01-25T10:46:38", 23.07324, -89.62136], ["2020-01-25T11:16:38", 23.07221, -89.62479], ["2020-01-25T15:44:26", 23.05917, -89.66632], ["2020-01-25T19:13:46", 23.04443, -89.71185], ["2020-01-25T19:43:46", 23.04207, -89.71872], ["2020-01-25T20:13:46", 23.04014, -89.72516], ["2020-01-25T20:45:26", 23.03659, -89.73714], ["2020-01-25T21:15:26", 23.03509, -89.74245], ["2020-01-25T21:45:26", 23.03505, -89.74332], ["2020-01-26T01:42:42", 23.02095, -89.78024], ["2020-01-26T02:44:27", 23.01922, -89.78815], ["2020-01-26T04:41:49", 23.0163, -89.79993], ["2020-01-26T07:11:24", 23.0076, -89.81125], ["2020-01-26T08:40:53", 23.00149, -89.81811], ["2020-01-26T11:40:08", 22.98887, -89.83606], ["2020-01-26T12:43:28", 22.98589, -89.84204], ["2020-01-26T14:39:37", 22.98073, -89.85399], ["2020-01-26T15:11:29", 22.97968, -89.85724], ["2020-01-26T15:39:37", 22.97867, -89.86017], ["2020-01-26T16:39:03", 22.97689, -89.866], ["2020-01-26T17:09:07", 22.97649, -89.86862], ["2020-01-26T17:39:03", 22.97607, -89.87192], ["2020-01-26T19:40:00", 22.97594, -89.88367], ["2020-01-26T21:46:49", 22.97557, -89.89322], ["2020-01-27T00:08:10", 22.97433, -89.90122], ["2020-01-27T00:38:10", 22.97339, -89.90259], ["2020-01-27T01:08:10", 22.97339, -89.90448], ["2020-01-27T02:08:01", 22.97199, -89.90732], ["2020-01-27T06:38:56", 22.96985, -89.91998], ["2020-01-27T07:36:12", 22.96866, -89.92198], ["2020-01-27T08:06:12", 22.96767, -89.9231], ["2020-01-27T08:36:12", 22.96673, -89.92371], ["2020-01-27T09:06:58", 22.96563, -89.92456], ["2020-01-27T14:05:01", 22.9635, -89.91687], ["2020-01-27T14:34:32", 22.9615, -89.91467], ["2020-01-27T15:34:21", 22.95771, -89.91195], ["2020-01-27T19:33:42", 22.92628, -89.90646], ["2020-01-27T21:05:30", 22.90871, -89.90768], ["2020-01-27T23:02:52", 22.88396, -89.9111], ["2020-01-28T02:06:03", 22.85213, -89.92133], ["2020-01-28T04:04:48", 22.83534, -89.93066], ["2020-01-28T04:32:07", 22.83212, -89.93289], ["2020-01-28T05:01:45", 22.82876, -89.93553], ["2020-01-28T05:31:45", 22.82558, -89.9381], ["2020-01-28T06:01:45", 22.82305, -89.94067], ["2020-01-28T06:32:30", 22.8206, -89.94363], ["2020-01-28T07:02:42", 22.81861, -89.9468], ["2020-01-28T07:32:42", 22.81659, -89.94989], ["2020-01-28T08:02:54", 22.81483, -89.95269], ["2020-01-28T08:31:59", 22.81334, -89.95535], ["2020-01-28T09:01:05", 22.81189, -89.95793], ["2020-01-28T09:31:05", 22.81073, -89.96033], ["2020-01-28T10:01:05", 22.80983, -89.96265], ["2020-01-28T11:32:07", 22.80633, -89.96917], ["2020-01-28T13:00:07", 22.80455, -89.97602], ["2020-01-28T13:30:07", 22.80386, -89.97808], ["2020-01-28T14:00:07", 22.80313, -89.98032], ["2020-01-28T14:29:49", 22.80238, -89.98271], ["2020-01-28T14:59:49", 22.80131, -89.98468], ["2020-01-28T18:59:04", 22.79824, -90.0069], ["2020-01-28T19:30:01", 22.79843, -90.01008], ["2020-01-28T20:00:01", 22.79847, -90.01334], ["2020-01-28T20:28:45", 22.79873, -90.01636], ["2020-01-28T21:00:10", 22.7993, -90.02002], ["2020-01-28T21:46:45", 22.79936, -90.02417], ["2020-01-28T21:58:12", 22.79936, -90.02533], ["2020-01-28T22:28:12", 22.79932, -90.02764], ["2020-01-28T22:57:56", 22.79936, -90.03024], ["2020-01-28T23:27:56", 22.79953, -90.03256], ["2020-01-29T00:27:41", 22.79973, -90.03682], ["2020-01-29T02:58:12", 22.79409, -90.04535], ["2020-01-29T09:25:23", 22.77917, -90.0741], ["2020-01-29T09:55:13", 22.77911, -90.07616], ["2020-01-29T10:25:13", 22.77924, -90.07762], ["2020-01-29T10:55:13", 22.7792, -90.07874], ["2020-01-29T11:25:29", 22.77825, -90.07944], ["2020-01-29T12:24:58", 22.77547, -90.07828], ["2020-01-29T12:54:58", 22.77444, -90.07785], ["2020-01-29T13:24:58", 22.77302, -90.07785], ["2020-01-29T13:54:27", 22.77178, -90.07802], ["2020-01-29T14:24:27", 22.77071, -90.07819], ["2020-01-29T14:53:44", 22.77008, -90.07831], ["2020-01-29T15:24:28", 22.76987, -90.07791], ["2020-01-29T16:24:00", 22.76911, -90.07581], ["2020-01-29T16:53:07", 22.76795, -90.07393], ["2020-01-29T17:23:07", 22.76666, -90.07248], ["2020-01-29T17:53:07", 22.76439, -90.07111], ["2020-01-29T19:22:47", 22.75417, -90.06896], ["2020-01-29T20:52:22", 22.74033, -90.06668], ["2020-01-29T21:22:02", 22.73129, -90.06665], ["2020-01-29T21:52:02", 22.72962, -90.06665], ["2020-01-29T22:21:59", 22.72422, -90.06674], ["2020-01-29T23:21:19", 22.71317, -90.06715], ["2020-01-29T23:53:04", 22.7072, -90.06689], ["2020-01-30T00:21:19", 22.70192, -90.0668], ["2020-01-30T00:52:00", 22.69624, -90.06762], ["2020-01-30T01:21:03", 22.6907, -90.06784], ["2020-01-30T01:51:57", 22.68423, -90.06851], ["2020-01-30T02:20:30", 22.67815, -90.06956], ["2020-01-30T02:53:29", 22.67128, -90.07101], ["2020-01-30T03:20:30", 22.66596, -90.07214], ["2020-01-30T04:22:00", 22.65374, -90.07599], ["2020-01-30T05:21:29", 22.6426, -90.08041], ["2020-01-30T06:50:12", 22.62601, -90.08745], ["2020-01-30T07:20:12", 22.6206, -90.08968], ["2020-01-30T07:50:12", 22.61528, -90.0913], ["2020-01-30T08:20:59", 22.62067, -90.09286], ["2020-01-30T08:50:59", 22.60479, -90.09509], ["2020-01-30T11:18:47", 22.58312, -90.10361], ["2020-01-30T12:48:33", 22.57064, -90.10965], ["2020-01-30T13:18:16", 22.56652, -90.11208], ["2020-01-30T13:48:16", 22.56287, -90.11475], ["2020-01-30T14:18:00", 22.55921, -90.11763], ["2020-01-30T14:48:00", 22.55591, -90.12072], ["2020-01-30T15:18:30", 22.5524, -90.12399], ["2020-01-30T17:16:37", 22.54057, -90.14227], ["2020-01-30T17:46:37", 22.5383, -90.1469], ["2020-01-30T18:16:37", 22.53555, -90.15255], ["2020-01-30T18:47:59", 22.53254, -90.15888], ["2020-01-30T19:17:59", 22.52988, -90.16489], ["2020-01-30T19:47:59", 22.52713, -90.17236], ["2020-01-30T20:15:56", 22.52484, -90.17917], ["2020-01-30T23:15:59", 22.51532, -90.22345], ["2020-01-31T00:16:27", 22.51324, -90.23657], ["2020-01-31T00:44:44", 22.5128, -90.24285], ["2020-01-31T02:47:01", 22.51216, -90.2694], ["2020-01-31T03:14:04", 22.51273, -90.27557], ["2020-01-31T03:44:04", 22.5135, -90.28192], ["2020-01-31T05:16:34", 22.519, -90.3], ["2020-01-31T05:46:34", 22.52106, -90.30531], ["2020-01-31T06:16:34", 22.52329, -90.31107], ["2020-01-31T07:13:14", 22.52777, -90.32084], ["2020-01-31T07:43:14", 22.52983, -90.32581], ["2020-01-31T08:13:14", 22.53146, -90.33011], ["2020-01-31T12:11:45", 22.54041, -90.36199], ["2020-01-31T12:41:33", 22.54181, -90.36612], ["2020-01-31T13:12:39", 22.54302, -90.37072], ["2020-01-31T14:43:26", 22.5494, -90.38191], ["2020-01-31T15:13:26", 22.55262, -90.38482], ["2020-01-31T15:43:26", 22.55575, -90.38843], ["2020-01-31T16:10:41", 22.55791, -90.39142], ["2020-01-31T16:43:31", 22.56053, -90.39436], ["2020-01-31T17:13:31", 22.56375, -90.39685], ["2020-01-31T17:40:25", 22.56628, -90.39832], ["2020-01-31T23:38:44", 22.53491, -90.43182], ["2020-02-01T00:10:10", 22.53148, -90.43646], ["2020-02-01T00:38:31", 22.52839, -90.44077], ["2020-02-01T04:37:44", 22.50712, -90.47418], ["2020-02-01T05:41:26", 22.50422, -90.48154], ["2020-02-01T06:37:34", 22.50078, -90.48699], ["2020-02-01T07:37:20", 22.49622, -90.49023], ["2020-02-01T10:06:38", 22.48066, -90.49493], ["2020-02-01T11:35:58", 22.47089, -90.4973], ["2020-02-01T12:05:58", 22.46746, -90.49833], ["2020-02-01T12:35:58", 22.46437, -90.49902], ["2020-02-01T13:39:13", 22.45767, -90.50027], ["2020-02-01T14:05:59", 22.45445, -90.5004], ["2020-02-01T14:35:59", 22.4508, -90.50109], ["2020-02-01T15:05:59", 22.44715, -90.50238], ["2020-02-01T15:36:28", 22.44331, -90.50373], ["2020-02-01T16:06:28", 22.43923, -90.50476], ["2020-02-01T16:37:59", 22.43542, -90.50548], ["2020-02-01T17:07:59", 22.43113, -90.50702], ["2020-02-01T18:04:37", 22.42454, -90.50995], ["2020-02-01T18:34:37", 22.42089, -90.51175], ["2020-02-01T19:04:37", 22.41754, -90.51355], ["2020-02-01T21:33:48", 22.39865, -90.52464], ["2020-02-01T22:03:48", 22.39552, -90.52679], ["2020-02-01T22:33:48", 22.39183, -90.52954], ["2020-02-01T23:03:28", 22.3881, -90.53234], ["2020-02-01T23:33:28", 22.38492, -90.53474], ["2020-02-02T00:03:28", 22.38157, -90.53757], ["2020-02-02T01:03:18", 22.37497, -90.54349], ["2020-02-02T03:32:42", 22.3612, -90.5571], ["2020-02-02T08:01:37", 22.34541, -90.57962], ["2020-02-02T10:30:47", 22.33871, -90.58578], ["2020-02-02T11:00:39", 22.33783, -90.58678], ["2020-02-02T11:31:59", 22.33626, -90.58786], ["2020-02-02T13:00:10", 22.33099, -90.58765], ["2020-02-02T15:59:40", 22.32111, -90.58771], ["2020-02-02T17:29:05", 22.31674, -90.58752], ["2020-02-02T17:59:06", 22.31541, -90.58768], ["2020-02-02T18:29:05", 22.31382, -90.58786], ["2020-02-02T19:01:42", 22.31179, -90.58841], ["2020-02-02T20:28:26", 22.30792, -90.59043], ["2020-02-02T20:58:26", 22.30663, -90.59103], ["2020-02-02T21:28:26", 22.30534, -90.5918], ["2020-02-02T22:00:28", 22.304, -90.59259], ["2020-02-03T00:30:27", 22.29963, -90.59686], ["2020-02-03T00:57:45", 22.29937, -90.59763], ["2020-02-03T01:27:45", 22.29933, -90.59857], ["2020-02-03T03:57:02", 22.30374, -90.60254], ["2020-02-03T04:27:58", 22.30544, -90.60316], ["2020-02-03T04:57:58", 22.30711, -90.60333], ["2020-02-03T05:27:58", 22.30891, -90.60375], ["2020-02-03T07:27:58", 22.3168, -90.60388], ["2020-02-03T07:56:57", 22.31835, -90.6039], ["2020-02-03T08:26:57", 22.31981, -90.60364], ["2020-02-03T08:56:57", 22.32157, -90.60364], ["2020-02-03T09:25:59", 22.32353, -90.60357], ["2020-02-03T09:55:59", 22.32538, -90.60357], ["2020-02-03T11:25:16", 22.33029, -90.60359], ["2020-02-03T11:55:16", 22.33222, -90.60272], ["2020-02-03T12:25:16", 22.33364, -90.60196], ["2020-02-03T14:54:35", 22.34032, -90.59872], ["2020-02-03T15:24:42", 22.34218, -90.59836], ["2020-02-03T21:26:28", 22.3749, -90.59253], ["2020-02-03T23:52:47", 22.3854, -90.5918], ["2020-02-04T02:21:57", 22.39463, -90.59152], ["2020-02-04T04:52:01", 22.40528, -90.59088], ["2020-02-04T07:50:23", 22.42684, -90.58749], ["2020-02-04T08:22:29", 22.43141, -90.58629], ["2020-02-04T08:50:23", 22.43559, -90.58466], ["2020-02-04T11:51:58", 22.45641, -90.57852], ["2020-02-04T12:22:30", 22.45902, -90.57834], ["2020-02-04T12:52:30", 22.46087, -90.57825], ["2020-02-04T13:22:30", 22.46349, -90.57825], ["2020-02-04T14:48:25", 22.4707, -90.57865], ["2020-02-04T15:18:25", 22.47319, -90.57865], ["2020-02-04T15:48:25", 22.47581, -90.57822], ["2020-02-04T19:17:43", 22.49413, -90.58078], ["2020-02-04T19:48:43", 22.4973, -90.58203], ["2020-02-04T20:18:43", 22.50022, -90.58306], ["2020-02-04T20:48:43", 22.5037, -90.58426], ["2020-02-04T21:05:41", 22.50833, -90.5865], ["2020-02-04T21:35:41", 22.5088, -90.58676], ["2020-02-05T01:16:19", 22.52617, -90.59894], ["2020-02-05T06:14:47", 22.55457, -90.61391], ["2020-02-05T11:43:09", 22.61685, -90.6557], ["2020-02-05T14:13:43", 22.64454, -90.67667], ["2020-02-05T16:12:27", 22.65976, -90.68872], ["2020-02-05T22:13:56", 22.70015, -90.72275], ["2020-02-06T02:10:26", 22.72443, -90.73708], ["2020-02-06T03:10:09", 22.72996, -90.73956], ["2020-02-06T03:43:30", 22.73297, -90.74061], ["2020-02-06T04:13:30", 22.73657, -90.74173], ["2020-02-06T04:39:48", 22.73965, -90.74249], ["2020-02-06T09:10:27", 22.77875, -90.73654], ["2020-02-06T13:08:32", 22.8075, -90.72136], ["2020-02-06T15:36:57", 22.82179, -90.70877], ["2020-02-06T17:09:01", 22.82802, -90.69803], ["2020-02-06T19:05:54", 22.83374, -90.68283], ["2020-02-07T00:36:27", 22.78671, -90.63482], ["2020-02-07T02:36:01", 22.76288, -90.63055], ["2020-02-07T04:35:57", 22.74428, -90.6309], ["2020-02-07T05:03:54", 22.74027, -90.63115], ["2020-02-07T05:35:57", 22.73583, -90.63115], ["2020-02-07T10:32:49", 22.7053, -90.64883], ["2020-02-07T11:34:29", 22.70106, -90.65483], ["2020-02-07T12:04:29", 22.69964, -90.65741], ["2020-02-07T12:34:29", 22.69681, -90.66016], ["2020-02-07T15:01:50", 22.68994, -90.68024], ["2020-02-07T16:31:41", 22.68647, -90.69116], ["2020-02-07T20:30:53", 22.67636, -90.73202], ["2020-02-07T23:00:20", 22.67061, -90.76439], ["2020-02-08T00:00:07", 22.66888, -90.77847], ["2020-02-08T01:00:59", 22.66785, -90.79233], ["2020-02-08T01:59:23", 22.66651, -90.80609], ["2020-02-08T02:29:23", 22.66582, -90.81227], ["2020-02-08T02:59:23", 22.66543, -90.81879], ["2020-02-08T04:29:07", 22.66478, -90.8403], ["2020-02-08T06:31:01", 22.66706, -90.86879], ["2020-02-08T06:58:50", 22.66738, -90.87512], ["2020-02-08T07:28:50", 22.66764, -90.88146], ["2020-02-08T08:28:48", 22.66854, -90.8944], ["2020-02-08T10:29:35", 22.67066, -90.91956], ["2020-02-08T10:59:35", 22.67078, -90.92563], ["2020-02-08T11:57:55", 22.66994, -90.93698], ["2020-02-08T13:27:06", 22.66847, -90.95486], ["2020-02-08T13:57:06", 22.66796, -90.9612], ["2020-02-08T14:27:06", 22.66727, -90.96713], ["2020-02-08T14:56:56", 22.66634, -90.97319], ["2020-02-08T15:26:56", 22.66621, -90.97884], ["2020-02-08T18:55:47", 22.65806, -91.0234], ["2020-02-08T19:25:57", 22.65673, -91.02988], ["2020-02-08T19:55:47", 22.65574, -91.03686], ["2020-02-08T20:25:09", 22.65398, -91.04434], ["2020-02-08T20:55:09", 22.65299, -91.05062], ["2020-02-08T21:25:09", 22.65209, -91.05783], ["2020-02-08T21:55:17", 22.65127, -91.06567], ["2020-02-08T23:24:28", 22.64838, -91.08899], ["2020-02-09T00:24:19", 22.64765, -91.10308], ["2020-02-09T01:25:56", 22.64589, -91.11709], ["2020-02-09T01:53:56", 22.64565, -91.12345], ["2020-02-09T02:23:56", 22.64471, -91.13048], ["2020-02-09T02:54:58", 22.64426, -91.13757], ["2020-02-09T04:53:39", 22.64764, -91.16449], ["2020-02-09T05:23:10", 22.64922, -91.17207], ["2020-02-09T05:53:10", 22.65059, -91.17869], ["2020-02-09T06:23:10", 22.65231, -91.18564], ["2020-02-09T08:52:35", 22.66172, -91.21677], ["2020-02-09T10:22:35", 22.67007, -91.2334], ["2020-02-09T14:54:24", 22.70244, -91.26999], ["2020-02-09T16:23:17", 22.71273, -91.27997], ["2020-02-09T19:20:28", 22.73603, -91.30023], ["2020-02-09T20:20:10", 22.74421, -91.30768], ["2020-02-09T20:50:10", 22.74773, -91.31077], ["2020-02-09T21:20:10", 22.75078, -91.31368], ["2020-02-09T21:52:28", 22.75814, -91.32334], ["2020-02-09T22:52:28", 22.75874, -91.32393], ["2020-02-09T23:51:02", 22.76287, -91.3375], ["2020-02-10T00:51:02", 22.76484, -91.34146], ["2020-02-10T10:47:07", 22.80952, -91.47067], ["2020-02-10T11:49:00", 22.81907, -91.48175], ["2020-02-10T13:49:08", 22.83945, -91.501], ["2020-02-10T14:19:08", 22.84473, -91.50564], ["2020-02-10T14:49:08", 22.8507, -91.51053], ["2020-02-10T15:16:23", 22.85597, -91.51437], ["2020-02-10T21:44:43", 22.91665, -91.56046], ["2020-02-10T22:46:58", 22.92399, -91.56531], ["2020-02-11T05:13:25", 22.94043, -91.6015], ["2020-02-11T08:42:34", 22.9456, -91.6358], ["2020-02-11T14:40:57", 22.99392, -91.70111], ["2020-02-11T17:40:06", 23.03287, -91.73132], ["2020-02-11T18:43:29", 23.04717, -91.73917], ["2020-02-11T19:13:29", 23.05429, -91.7426], ["2020-02-11T19:43:29", 23.06223, -91.74603], ["2020-02-11T23:41:40", 23.10907, -91.7647], ["2020-02-12T01:10:30", 23.11909, -91.76895], ["2020-02-12T02:09:29", 23.12264, -91.77234], ["2020-02-12T04:39:36", 23.12651, -91.78745], ["2020-02-12T05:08:16", 23.12698, -91.79122], ["2020-02-12T05:38:16", 23.12732, -91.79653], ["2020-02-12T06:10:30", 23.1277, -91.80182], ["2020-02-12T06:36:56", 23.1285, -91.80636], ["2020-02-12T07:06:56", 23.12962, -91.81125], ["2020-02-12T15:35:31", 23.20793, -91.9014], ["2020-02-12T19:36:30", 23.27431, -91.91965], ["2020-02-12T23:06:13", 23.322, -91.91504], ["2020-02-13T01:05:01", 23.33808, -91.90888], ["2020-02-13T01:35:01", 23.34053, -91.90698], ["2020-02-13T02:05:01", 23.34255, -91.90536], ["2020-02-13T03:07:15", 23.34433, -91.90299], ["2020-02-13T04:07:15", 23.34605, -91.90213], ["2020-02-13T10:05:19", 23.3505, -91.93329], ["2020-02-13T15:03:06", 23.37918, -91.97113], ["2020-02-13T15:31:39", 23.38307, -91.97418], ["2020-02-13T16:04:00", 23.3878, -91.97781], ["2020-02-13T17:31:00", 23.40278, -91.98748], ["2020-02-13T18:01:00", 23.40823, -91.99005], ["2020-02-13T18:31:00", 23.41364, -91.99227], ["2020-02-13T19:31:15", 23.4245, -91.99404], ["2020-02-13T20:01:15", 23.42956, -91.99516], ["2020-02-13T20:31:15", 23.43514, -91.99576], ["2020-02-13T22:30:21", 23.45525, -91.99442], ["2020-02-14T04:31:55", 23.43461, -92.01157], ["2020-02-14T04:58:06", 23.43222, -92.01486], ["2020-02-14T05:28:06", 23.42965, -92.01898], ["2020-02-14T06:30:07", 23.42205, -92.03424], ["2020-02-14T07:30:07", 23.41999, -92.0387], ["2020-02-14T07:57:43", 23.41782, -92.04398], ["2020-02-14T10:26:46", 23.40592, -92.07277], ["2020-02-14T12:59:01", 23.39782, -92.10348], ["2020-02-14T13:56:11", 23.39652, -92.11548], ["2020-02-15T00:56:17", 23.40232, -92.24374], ["2020-02-15T03:55:29", 23.40366, -92.28146], ["2020-02-15T04:22:13", 23.40421, -92.28737], ["2020-02-15T04:52:13", 23.4052, -92.29355], ["2020-02-15T08:53:29", 23.41629, -92.34235], ["2020-02-15T22:18:50", 23.51232, -92.45264], ["2020-02-15T23:48:40", 23.52245, -92.45792], ["2020-02-16T02:21:42", 23.53247, -92.46518], ["2020-02-16T02:50:30", 23.53361, -92.46693], ["2020-02-16T03:20:30", 23.53455, -92.4689], ["2020-02-16T05:46:51", 23.53887, -92.48187], ["2020-02-16T08:19:59", 23.54499, -92.50388], ["2020-02-24T02:10:21", 24.03684, -91.99091], ["2020-02-25T09:34:11", 24.02365, -91.7836], ["2020-02-25T13:30:32", 23.97674, -91.81186], ["2020-02-25T14:00:32", 23.97382, -91.81607], ["2020-02-25T14:30:32", 23.97103, -91.82053], ["2020-02-25T15:01:01", 23.9682, -91.82486], ["2020-02-25T15:30:26", 23.96532, -91.82904], ["2020-02-25T16:02:34", 23.96239, -91.83353], ["2020-02-25T16:29:55", 23.95997, -91.83698], ["2020-02-25T16:59:48", 23.95739, -91.84014], ["2020-02-25T21:09:28", 23.95722, -91.84003], ["2020-02-25T22:29:30", 23.95783, -91.8319], ["2020-02-26T03:28:09", 23.95864, -91.78137], ["2020-02-26T05:56:51", 23.93843, -91.74811], ["2020-02-26T08:26:11", 23.90852, -91.72278], ["2020-02-26T08:56:34", 23.90291, -91.71884], ["2020-02-26T17:53:24", 23.7415, -91.68765], ["2020-02-27T04:23:36", 23.60083, -91.7392], ["2020-02-27T05:51:28", 23.59069, -91.74254], ["2020-02-27T09:20:10", 23.57351, -91.74945], ["2020-02-27T17:47:11", 23.526, -91.72241], ["2020-02-27T18:18:34", 23.52132, -91.72107], ["2020-02-28T02:14:24", 23.44383, -91.70162], ["2020-02-28T03:44:03", 23.43403, -91.68879], ["2020-02-28T04:14:03", 23.42974, -91.68483], ["2020-02-28T04:44:03", 23.42618, -91.68158], ["2020-02-29T01:09:14", 23.35765, -91.56357], ["2020-03-02T11:28:13", 23.45118, -91.69662], ["2020-03-03T07:56:14", 23.53195, -91.69763], ["2020-03-03T08:22:18", 23.53461, -91.69898], ["2020-03-03T08:52:18", 23.53856, -91.69958], ["2020-03-05T03:14:56", 23.8082, -91.74902], ["2020-03-05T08:46:20", 23.74325, -91.70959], ["2020-03-06T02:09:14", 23.6217, -91.78491], ["2020-03-06T02:42:13", 23.61966, -91.78252], ["2020-03-06T03:12:13", 23.61837, -91.78021], ["2020-03-09T11:47:30", 23.77671, -92.43057], ["2020-03-11T11:02:06", 24.06124, -93.01984], ["2020-03-12T07:59:40", 24.11943, -93.33722], ["2020-03-26T16:54:36", 23.93441, -94.55889], ["2020-03-28T11:17:58", 23.96267, -94.58163], ["2020-03-30T18:06:19", 24.18187, -94.99362], ["2020-03-30T19:04:34", 24.18457, -94.99866], ["2020-03-31T21:00:37", 24.24458, -95.05005], ["2020-03-31T22:29:48", 24.23877, -95.04678], ["2020-04-01T00:28:35", 24.22508, -95.04707], ["2020-04-01T00:56:29", 24.2211, -95.04691], ["2020-04-01T01:28:35", 24.21615, -95.047], ["2020-04-01T01:57:02", 24.21141, -95.04794], ["2020-04-01T04:26:10", 24.18568, -95.06128], ["2020-04-01T15:24:00", 24.09192, -95.16641], ["2020-04-01T16:55:00", 24.08493, -95.17706], ["2020-04-02T05:20:28", 24.08651, -95.19253], ["2020-04-02T10:22:22", 24.06127, -95.17224], ["2020-04-02T19:48:32", 24.01026, -95.19022], ["2020-04-03T06:47:22", 24.03007, -95.22423], ["2020-04-05T05:30:35", 24.16317, -95.31784], ["2020-04-05T06:03:11", 24.16539, -95.3178], ["2020-04-05T06:33:11", 24.16788, -95.31815], ["2020-04-05T07:01:58", 24.16892, -95.31783], ["2020-04-05T07:31:58", 24.16978, -95.31766], ["2020-04-05T08:01:58", 24.17064, -95.31732], ["2020-04-05T08:59:56", 24.17075, -95.31699], ["2020-04-05T11:29:30", 24.17027, -95.31979], ["2020-04-05T18:30:18", 24.17922, -95.36926], ["2020-04-05T19:27:03", 24.18477, -95.38037], ["2020-04-05T19:56:58", 24.18854, -95.38657], ["2020-04-05T20:26:58", 24.19172, -95.39163], ["2020-04-06T22:21:27", 24.62305, -95.66824], ["2020-04-06T23:24:28", 24.64342, -95.68292], ["2020-04-07T03:49:35", 24.71357, -95.75507], ["2020-04-07T11:49:48", 24.83178, -95.88937], ["2020-04-07T21:46:11", 24.94576, -96.01169], ["2020-04-07T22:15:50", 24.95145, -96.01685], ["2020-04-07T22:45:50", 24.95608, -96.02158], ["2020-04-09T01:10:12", 25.10212, -96.27551], ["2020-04-09T04:38:25", 25.09799, -96.28003], ["2020-04-16T05:38:54", 24.00107, -97.3157], ["2020-04-19T05:49:28", 22.97621, -97.29349], ["2020-04-19T06:49:56", 22.96562, -97.28462], ["2020-04-19T07:19:56", 22.9603, -97.28024], ["2020-04-19T07:49:56", 22.95532, -97.27621], ["2020-04-19T08:19:40", 22.95056, -97.27172], ["2020-04-19T08:49:40", 22.94511, -97.26648], ["2020-04-19T13:49:28", 22.91727, -97.21997], ["2020-04-19T14:17:16", 22.91583, -97.21561], ["2020-04-19T16:46:41", 22.91084, -97.18884], ["2020-04-20T03:44:31", 22.92802, -97.18042], ["2020-04-20T04:14:26", 22.93099, -97.17992], ["2020-04-20T04:44:26", 22.93365, -97.17932], ["2020-04-20T09:44:28", 22.92715, -97.13657], ["2020-04-20T12:41:54", 22.87781, -97.12213], ["2020-04-20T13:13:34", 22.86842, -97.1228], ["2020-04-21T04:07:53", 22.84951, -97.17093], ["2020-04-21T05:11:28", 22.86087, -97.17957], ["2020-04-21T19:03:23", 22.89177, -97.16837], ["2020-04-21T19:36:02", 22.8899, -97.17158], ["2020-04-21T20:03:11", 22.88813, -97.17569], ["2020-04-21T20:36:02", 22.8854, -97.18155], ["2020-04-21T21:32:57", 22.8819, -97.19586], ["2020-04-22T12:33:36", 22.85858, -97.55566], ["2020-04-22T18:30:10", 22.76535, -97.58972], ["2020-04-22T19:58:22", 22.73616, -97.58435], ["2020-04-23T03:27:00", 22.6776, -97.4935], ["2020-04-23T10:56:33", 22.76113, -97.397], ["2020-04-23T11:26:59", 22.76801, -97.39403], ["2020-04-23T11:56:59", 22.77608, -97.39197], ["2020-04-23T12:26:00", 22.78392, -97.39006], ["2020-04-23T12:56:00", 22.79229, -97.38861], ["2020-04-23T15:24:27", 22.81328, -97.37683], ["2020-04-23T17:02:52", 22.81402, -97.37206], ["2020-04-24T07:54:00", 22.91264, -97.50369], ["2020-04-26T16:38:48", 22.84795, -97.47015], ["2020-04-26T23:37:11", 22.77416, -97.47405], ["2020-04-27T08:05:57", 22.73955, -97.48578], ["2020-04-27T08:36:30", 22.74217, -97.48481], ["2020-04-27T09:06:30", 22.7447, -97.48206], ["2020-04-27T09:35:40", 22.74879, -97.4783], ["2020-04-27T10:05:40", 22.75218, -97.47342], ["2020-04-27T10:35:23", 22.75497, -97.46701], ["2020-04-27T11:05:16", 22.7571, -97.4604], ["2020-04-27T11:35:16", 22.75925, -97.45456], ["2020-04-27T12:05:02", 22.76094, -97.44777], ["2020-04-27T12:35:02", 22.76188, -97.4404], ["2020-04-27T14:04:58", 22.76462, -97.4194], ["2020-04-27T14:34:58", 22.76565, -97.41408], ["2020-04-27T15:04:58", 22.76668, -97.40927], ["2020-04-28T03:30:50", 22.74557, -97.40799], ["2020-04-28T08:29:45", 22.76116, -97.42953], ["2020-04-28T08:59:22", 22.76306, -97.43009], ["2020-04-28T09:29:22", 22.76525, -97.42949], ["2020-04-28T09:59:22", 22.76752, -97.42795], ["2020-04-28T17:58:36", 22.76085, -97.36099], ["2020-04-28T20:29:30", 22.75089, -97.34041], ["2020-04-28T21:59:23", 22.74659, -97.33475], ["2020-04-28T22:29:23", 22.7456, -97.33398], ["2020-04-28T22:59:23", 22.7444, -97.33295], ["2020-04-29T03:25:24", 22.74102, -97.34497], ["2020-04-29T08:53:39", 22.73442, -97.39648], ["2020-04-29T16:53:01", 22.71186, -97.45419], ["2020-05-04T08:20:12", 23.03239, -97.38141], ["2020-05-04T22:15:35", 23.07468, -97.30566], ["2020-05-05T05:47:28", 23.07788, -97.24169], ["2020-05-05T06:47:26", 23.07837, -97.23004], ["2020-05-05T17:11:45", 23.01295, -97.06923], ["2020-05-05T21:43:29", 22.97266, -97.03323], ["2020-05-06T00:10:11", 22.95335, -97.013], ["2020-05-06T09:07:54", 22.89709, -96.91052], ["2020-05-06T16:38:19", 22.82211, -96.80562], ["2020-05-06T17:36:02", 22.82149, -96.79572], ["2020-05-07T00:38:11", 22.75869, -96.69055], ["2020-05-07T19:00:11", 22.73109, -96.41443], ["2020-05-08T01:02:11", 22.75964, -96.24512], ["2020-05-10T16:40:41", 23.20054, -95.82805], ["2020-05-11T16:46:46", 23.373, -96.04523], ["2020-05-11T22:01:25", 23.39075, -96.12137], ["2020-05-12T08:32:31", 23.45021, -96.27878], ["2020-05-12T13:57:44", 23.50613, -96.3364], ["2020-05-12T19:57:30", 23.53605, -96.35657], ["2020-05-12T21:27:58", 23.5335, -96.36163], ["2020-05-13T02:54:05", 23.51413, -96.4119], ["2020-05-13T09:55:39", 23.49491, -96.51392], ["2020-05-13T15:50:34", 23.51179, -96.59848]], "drifter_17": [["2019-08-06T13:27:00", 10.46221, -53.67437], ["2019-08-06T14:51:56", 10.46816, -53.67934], ["2019-08-06T15:51:56", 10.46898, -53.67883], ["2019-08-06T16:51:56", 10.47022, -53.67694], ["2019-08-06T17:52:27", 10.47205, -53.67441], ["2019-08-06T18:51:28", 10.47662, -53.67382], ["2019-08-06T19:51:28", 10.48276, -53.67125], ["2019-08-06T20:51:28", 10.48615, -53.66687], ["2019-08-06T21:51:26", 10.48813, -53.66095], ["2019-08-06T22:51:23", 10.48885, -53.65512], ["2019-08-07T03:49:59", 10.47199, -53.62988], ["2019-08-07T05:49:00", 10.46005, -53.62296], ["2019-08-07T06:49:00", 10.45305, -53.6221], ["2019-08-07T07:49:00", 10.44674, -53.6203], ["2019-08-07T08:48:57", 10.44305, -53.61692], ["2019-08-07T09:48:57", 10.43945, -53.61435], ["2019-08-07T10:49:26", 10.43599, -53.61069], ["2019-08-07T11:49:26", 10.43166, -53.60691], ["2019-08-07T12:49:26", 10.42891, -53.60391], ["2019-08-07T18:49:27", 10.41953, -53.59598], ["2019-08-07T21:45:44", 10.40945, -53.59532], ["2019-08-07T22:45:44", 10.40786, -53.59532], ["2019-08-07T23:45:44", 10.40593, -53.59515], ["2019-08-08T00:45:35", 10.4047, -53.59753], ["2019-08-08T01:46:29", 10.40414, -53.60482], ["2019-08-08T02:46:29", 10.40393, -53.61426], ["2019-08-08T03:44:28", 10.4038, -53.62216], ["2019-08-08T04:44:28", 10.40145, -53.62924], ["2019-08-08T05:44:28", 10.3982, -53.63546], ["2019-08-08T06:44:28", 10.3946, -53.64215], ["2019-08-08T07:43:59", 10.39012, -53.64859], ["2019-08-08T08:43:26", 10.38548, -53.65628], ["2019-08-08T09:43:25", 10.38034, -53.66354], ["2019-08-08T10:43:57", 10.37484, -53.67111], ["2019-08-08T11:43:04", 10.37037, -53.67996], ["2019-08-08T14:42:45", 10.35797, -53.71466], ["2019-08-08T18:41:05", 10.34459, -53.75034], ["2019-08-08T20:41:29", 10.33537, -53.772], ["2019-08-09T02:40:53", 10.31212, -53.84106], ["2019-08-09T03:38:55", 10.30886, -53.85455], ["2019-08-09T06:40:27", 10.30661, -53.90073], ["2019-08-09T09:39:30", 10.31668, -53.93823], ["2019-08-09T11:38:18", 10.32581, -53.9606], ["2019-08-09T14:37:52", 10.33006, -53.99219], ["2019-08-09T18:36:39", 10.34567, -54.04221], ["2019-08-09T23:35:56", 10.38153, -54.08459], ["2019-08-10T03:35:30", 10.38514, -54.09402], ["2019-08-10T09:33:49", 10.39966, -54.11984], ["2019-08-10T14:31:20", 10.40686, -54.12897], ["2019-08-10T15:33:54", 10.40722, -54.13307], ["2019-08-10T16:33:54", 10.40971, -54.13968], ["2019-08-10T22:29:39", 10.40851, -54.17108], ["2019-08-10T23:29:02", 10.40657, -54.17548], ["2019-08-11T00:29:02", 10.404, -54.18114], ["2019-08-11T01:29:02", 10.40267, -54.18921], ["2019-08-11T02:31:55", 10.39822, -54.19696], ["2019-08-11T05:28:00", 10.38216, -54.22705], ["2019-08-11T06:28:27", 10.38006, -54.23814], ["2019-08-11T07:28:27", 10.38045, -54.24681], ["2019-08-11T08:28:27", 10.38315, -54.25522], ["2019-08-11T09:27:57", 10.38683, -54.26505], ["2019-08-11T10:27:57", 10.3882, -54.2738], ["2019-08-11T11:27:16", 10.39116, -54.28406], ["2019-08-11T12:27:34", 10.3925, -54.29327], ["2019-08-11T13:27:58", 10.39235, -54.30429], ["2019-08-11T15:27:57", 10.39381, -54.32867], ["2019-08-11T20:26:26", 10.40083, -54.38101], ["2019-08-11T21:24:20", 10.40344, -54.39124], ["2019-08-11T22:25:07", 10.40903, -54.41018], ["2019-08-12T00:25:07", 10.41199, -54.42014], ["2019-08-12T04:24:18", 10.40766, -54.45105], ["2019-08-12T05:24:30", 10.40519, -54.46007], ["2019-08-12T06:24:30", 10.4048, -54.4696], ["2019-08-12T07:21:37", 10.40513, -54.47827], ["2019-08-12T08:22:55", 10.40668, -54.48877], ["2019-08-12T09:22:26", 10.40741, -54.49784], ["2019-08-12T10:22:26", 10.40681, -54.50788], ["2019-08-12T11:22:26", 10.40642, -54.51947], ["2019-08-12T12:20:01", 10.40631, -54.5301], ["2019-08-12T13:20:01", 10.40691, -54.54083], ["2019-08-12T14:20:27", 10.4064, -54.55451], ["2019-08-12T15:20:27", 10.40709, -54.56799], ["2019-08-12T19:19:28", 10.41099, -54.61734], ["2019-08-12T20:20:26", 10.41405, -54.63049], ["2019-08-13T00:20:01", 10.43083, -54.694], ["2019-08-13T02:18:00", 10.43973, -54.72177], ["2019-08-13T03:19:00", 10.44549, -54.73291], ["2019-08-13T04:17:21", 10.44929, -54.74149], ["2019-08-13T05:18:38", 10.45464, -54.74991], ["2019-08-13T06:16:41", 10.4611, -54.75873], ["2019-08-13T10:16:31", 10.47664, -54.79559], ["2019-08-13T11:16:28", 10.48077, -54.80692], ["2019-08-13T15:16:28", 10.49895, -54.84827], ["2019-08-13T16:14:00", 10.50466, -54.85391], ["2019-08-13T17:14:30", 10.5131, -54.85794], ["2019-08-13T18:16:10", 10.52229, -54.86133], ["2019-08-13T19:13:26", 10.53282, -54.86703], ["2019-08-13T20:13:58", 10.54469, -54.87239], ["2019-08-13T21:14:06", 10.55502, -54.87741], ["2019-08-13T22:13:58", 10.56001, -54.8826], ["2019-08-14T00:13:29", 10.56771, -54.89075], ["2019-08-14T01:11:28", 10.57444, -54.89696], ["2019-08-14T02:11:28", 10.58032, -54.90125], ["2019-08-14T05:11:04", 10.60212, -54.90787], ["2019-08-14T07:12:03", 10.61715, -54.90161], ["2019-08-14T08:10:58", 10.62218, -54.90007], ["2019-08-14T09:10:58", 10.62523, -54.90076], ["2019-08-14T10:10:28", 10.62496, -54.90436], ["2019-08-14T12:10:31", 10.62092, -54.91551], ["2019-08-14T13:10:31", 10.61826, -54.92298], ["2019-08-14T14:10:31", 10.61504, -54.93182], ["2019-08-14T21:08:29", 10.62831, -54.97476], ["2019-08-14T22:08:10", 10.62781, -54.98157], ["2019-08-15T03:07:26", 10.61642, -55.01904], ["2019-08-15T04:06:31", 10.61792, -55.02802], ["2019-08-15T05:07:06", 10.61983, -55.03693], ["2019-08-15T06:06:58", 10.6198, -55.04523], ["2019-08-15T07:07:00", 10.61862, -55.05451], ["2019-08-15T08:07:00", 10.61617, -55.06524], ["2019-08-15T09:07:00", 10.61093, -55.07837], ["2019-08-15T14:04:59", 10.57741, -55.15027], ["2019-08-15T15:04:28", 10.57215, -55.16797], ["2019-08-15T16:04:28", 10.57138, -55.18539], ["2019-08-15T18:03:59", 10.57239, -55.21985], ["2019-08-15T19:05:00", 10.57022, -55.2362], ["2019-08-15T20:05:00", 10.56726, -55.25208], ["2019-08-15T23:03:00", 10.56267, -55.30206], ["2019-08-16T00:02:00", 10.56264, -55.31997], ["2019-08-16T01:02:00", 10.5647, -55.33902], ["2019-08-16T02:01:00", 10.56785, -55.35923], ["2019-08-16T03:01:00", 10.57296, -55.37811], ["2019-08-16T04:01:30", 10.5799, -55.39545], ["2019-08-16T07:02:09", 10.60472, -55.43613], ["2019-08-16T07:59:37", 10.60963, -55.4472], ["2019-08-16T11:58:56", 10.63311, -55.51358], ["2019-08-16T13:01:05", 10.64533, -55.53101], ["2019-08-16T17:59:28", 10.72015, -55.58414], ["2019-08-16T18:58:08", 10.73744, -55.58774], ["2019-08-16T19:58:18", 10.75173, -55.58932], ["2019-08-16T20:58:18", 10.76379, -55.59026], ["2019-08-16T21:58:18", 10.77456, -55.59155], ["2019-08-16T22:56:57", 10.78609, -55.59428], ["2019-08-16T23:56:57", 10.7963, -55.59479], ["2019-08-17T01:58:00", 10.81246, -55.59268], ["2019-08-17T02:57:28", 10.81629, -55.58792], ["2019-08-17T03:58:00", 10.81868, -55.58246], ["2019-08-17T07:55:27", 10.83276, -55.55234], ["2019-08-17T08:55:27", 10.83519, -55.54617], ["2019-08-17T09:55:27", 10.83558, -55.54282], ["2019-08-17T10:55:07", 10.83285, -55.54041], ["2019-08-17T13:54:57", 10.81843, -55.53708], ["2019-08-17T14:55:33", 10.80968, -55.53503], ["2019-08-17T15:55:33", 10.80007, -55.53391], ["2019-08-17T16:54:27", 10.7941, -55.53433], ["2019-08-17T17:54:05", 10.78901, -55.53519], ["2019-08-17T18:53:27", 10.78392, -55.53601], ["2019-08-17T19:53:26", 10.77827, -55.53854], ["2019-08-17T20:53:57", 10.76978, -55.54191], ["2019-08-17T21:53:57", 10.76188, -55.54483], ["2019-08-17T22:53:57", 10.75313, -55.55075], ["2019-08-17T23:52:59", 10.74325, -55.5574], ["2019-08-18T05:51:31", 10.69159, -55.60892], ["2019-08-18T06:51:32", 10.6838, -55.61691], ["2019-08-18T10:51:02", 10.64015, -55.65512], ["2019-08-18T11:49:26", 10.63063, -55.67061], ["2019-08-18T12:49:26", 10.62218, -55.68726], ["2019-08-18T14:49:45", 10.61021, -55.72202], ["2019-08-18T18:50:42", 10.59986, -55.78754], ["2019-08-18T19:48:00", 10.60682, -55.8014], ["2019-08-18T20:48:00", 10.62055, -55.81942], ["2019-08-18T21:48:00", 10.63437, -55.8353], ["2019-08-18T22:48:37", 10.64758, -55.84949], ["2019-08-18T23:48:29", 10.65965, -55.86244], ["2019-08-19T00:48:29", 10.67098, -55.87634], ["2019-08-19T01:46:00", 10.68099, -55.88947], ["2019-08-19T02:48:59", 10.69167, -55.90274], ["2019-08-19T03:46:00", 10.70108, -55.91333], ["2019-08-19T04:46:25", 10.71247, -55.92258], ["2019-08-19T05:46:26", 10.72619, -55.93143], ["2019-08-19T06:46:00", 10.74412, -55.93891], ["2019-08-19T07:46:00", 10.76244, -55.94363], ["2019-08-19T08:46:00", 10.77888, -55.94354], ["2019-08-19T09:45:27", 10.79502, -55.94186], ["2019-08-19T10:46:27", 10.80982, -55.93845], ["2019-08-19T11:44:36", 10.82211, -55.93235], ["2019-08-19T12:44:36", 10.83044, -55.92548], ["2019-08-19T13:45:48", 10.83706, -55.91882], ["2019-08-19T14:43:42", 10.83969, -55.91321], ["2019-08-19T15:43:25", 10.84083, -55.90752], ["2019-08-19T16:43:25", 10.84229, -55.90177], ["2019-08-19T17:43:25", 10.8428, -55.89456], ["2019-08-19T18:43:07", 10.84244, -55.88781], ["2019-08-19T19:43:07", 10.84394, -55.88232], ["2019-08-19T20:42:56", 10.84457, -55.87823], ["2019-08-19T21:42:29", 10.84491, -55.87278], ["2019-08-19T22:42:29", 10.84405, -55.86626], ["2019-08-19T23:42:29", 10.83894, -55.86017], ["2019-08-20T00:42:27", 10.82986, -55.85324], ["2019-08-20T02:40:55", 10.80641, -55.83754], ["2019-08-20T03:41:10", 10.79319, -55.82999], ["2019-08-20T04:40:55", 10.78083, -55.82278], ["2019-08-20T05:40:56", 10.76683, -55.81613], ["2019-08-20T06:40:38", 10.75278, -55.81116], ["2019-08-20T08:40:06", 10.72788, -55.80578], ["2019-08-20T09:40:29", 10.71571, -55.80408], ["2019-08-20T10:40:06", 10.702, -55.80191], ["2019-08-20T11:39:56", 10.68869, -55.80164], ["2019-08-20T12:39:25", 10.67584, -55.80338], ["2019-08-20T13:38:57", 10.66383, -55.80779], ["2019-08-20T14:38:57", 10.65332, -55.81311], ["2019-08-20T15:38:29", 10.6431, -55.81885], ["2019-08-20T16:38:28", 10.63391, -55.8252], ["2019-08-20T17:38:25", 10.6245, -55.83139], ["2019-08-20T18:38:25", 10.6154, -55.83997], ["2019-08-20T19:38:05", 10.60608, -55.84921], ["2019-08-20T20:37:55", 10.59683, -55.85858], ["2019-08-20T21:37:08", 10.5878, -55.87034], ["2019-08-20T22:37:08", 10.57913, -55.8833], ["2019-08-20T23:37:28", 10.5712, -55.89688], ["2019-08-21T00:36:56", 10.56463, -55.91113], ["2019-08-21T01:36:56", 10.5581, -55.92566], ["2019-08-21T02:36:26", 10.54891, -55.93994], ["2019-08-21T03:36:31", 10.54102, -55.95502], ["2019-08-21T05:35:28", 10.53039, -55.98643], ["2019-08-21T06:35:28", 10.52747, -56.00291], ["2019-08-21T07:35:28", 10.52515, -56.0181], ["2019-08-21T08:34:56", 10.52239, -56.03412], ["2019-08-21T09:34:56", 10.51921, -56.05017], ["2019-08-21T11:35:42", 10.51791, -56.08795], ["2019-08-21T12:34:40", 10.51926, -56.10529], ["2019-08-21T13:35:42", 10.52237, -56.12289], ["2019-08-21T14:37:11", 10.5269, -56.13989], ["2019-08-21T15:34:27", 10.53308, -56.15619], ["2019-08-21T16:34:27", 10.54236, -56.17349], ["2019-08-21T17:34:27", 10.55295, -56.18967], ["2019-08-21T18:33:55", 10.56511, -56.20422], ["2019-08-21T19:33:27", 10.57872, -56.21738], ["2019-08-21T20:33:02", 10.59358, -56.23153], ["2019-08-21T21:33:02", 10.60697, -56.24518], ["2019-08-21T22:33:02", 10.61856, -56.2572], ["2019-08-21T23:33:56", 10.63077, -56.26877], ["2019-08-22T00:32:28", 10.64156, -56.27973], ["2019-08-22T01:32:28", 10.65276, -56.289], ["2019-08-22T02:32:01", 10.66368, -56.29813], ["2019-08-22T03:32:01", 10.67316, -56.30646], ["2019-08-22T04:31:56", 10.68205, -56.31198], ["2019-08-22T05:32:28", 10.69167, -56.31689], ["2019-08-22T06:31:58", 10.70191, -56.32236], ["2019-08-22T10:30:07", 10.73922, -56.33469], ["2019-08-22T17:28:57", 10.80186, -56.32996], ["2019-08-22T18:29:26", 10.80843, -56.32635], ["2019-08-22T19:28:29", 10.81159, -56.32273], ["2019-08-22T20:28:29", 10.81219, -56.32101], ["2019-08-22T21:28:28", 10.81153, -56.3204], ["2019-08-22T22:27:38", 10.81033, -56.32013], ["2019-08-23T00:27:00", 10.80801, -56.3216], ["2019-08-23T01:27:00", 10.80393, -56.32366], ["2019-08-23T02:27:00", 10.79766, -56.32486], ["2019-08-23T04:26:58", 10.78819, -56.32526], ["2019-08-23T05:26:28", 10.77982, -56.32535], ["2019-08-23T06:26:30", 10.77008, -56.32471], ["2019-08-23T07:26:59", 10.76075, -56.32617], ["2019-08-23T08:26:59", 10.75195, -56.32883], ["2019-08-23T09:25:29", 10.7447, -56.33188], ["2019-08-23T10:25:09", 10.73874, -56.33658], ["2019-08-23T11:24:56", 10.73299, -56.34378], ["2019-08-23T12:24:27", 10.72655, -56.35107], ["2019-08-23T13:24:08", 10.72042, -56.35919], ["2019-08-23T14:23:55", 10.71346, -56.36771], ["2019-08-23T15:23:26", 10.70509, -56.3761], ["2019-08-23T16:23:28", 10.69749, -56.38657], ["2019-08-23T17:23:28", 10.69169, -56.39844], ["2019-08-23T19:22:31", 10.67831, -56.42258], ["2019-08-23T20:22:00", 10.67318, -56.43508], ["2019-08-23T21:22:00", 10.66936, -56.44727], ["2019-08-23T22:21:30", 10.6659, -56.46066], ["2019-08-23T23:21:04", 10.66174, -56.47412], ["2019-08-24T00:20:28", 10.65699, -56.48602], ["2019-08-24T01:20:26", 10.65193, -56.49881], ["2019-08-24T02:20:06", 10.64802, -56.51154], ["2019-08-24T03:19:58", 10.64632, -56.52362], ["2019-08-24T04:19:26", 10.64434, -56.53381], ["2019-08-24T05:19:57", 10.64051, -56.54291], ["2019-08-24T07:18:57", 10.63551, -56.5621], ["2019-08-24T08:19:58", 10.63089, -56.57376], ["2019-08-24T09:18:57", 10.62792, -56.58484], ["2019-08-24T10:18:57", 10.62764, -56.59766], ["2019-08-24T11:18:58", 10.62998, -56.61041], ["2019-08-24T19:17:59", 10.63528, -56.73334], ["2019-08-24T20:15:42", 10.63709, -56.75275], ["2019-08-25T01:14:35", 10.6578, -56.83823], ["2019-08-25T07:14:28", 10.70106, -56.90933], ["2019-08-25T08:12:16", 10.7101, -56.922], ["2019-08-25T09:12:16", 10.7183, -56.93324], ["2019-08-25T10:12:16", 10.72499, -56.94131], ["2019-08-25T11:13:57", 10.73188, -56.94864], ["2019-08-25T13:12:26", 10.74273, -56.96262], ["2019-08-25T14:12:56", 10.74749, -56.96984], ["2019-08-25T15:12:56", 10.75109, -56.97679], ["2019-08-25T16:12:56", 10.75332, -56.98434], ["2019-08-25T17:10:40", 10.75564, -56.99298], ["2019-08-25T18:11:44", 10.75644, -57.00305], ["2019-08-25T23:09:57", 10.76266, -57.05914], ["2019-08-26T00:09:29", 10.76216, -57.06952], ["2019-08-26T03:09:01", 10.75449, -57.09808], ["2019-08-26T05:07:58", 10.75383, -57.11463], ["2019-08-26T06:07:59", 10.75643, -57.11917], ["2019-08-26T07:07:58", 10.76156, -57.12338], ["2019-08-26T08:07:31", 10.76923, -57.12717], ["2019-08-26T13:07:07", 10.79243, -57.13977], ["2019-08-26T14:06:11", 10.79626, -57.14221], ["2019-08-26T15:07:01", 10.7975, -57.1442], ["2019-08-26T16:07:07", 10.79968, -57.14694], ["2019-08-26T17:04:44", 10.80444, -57.14893], ["2019-08-26T22:03:51", 10.83261, -57.16617], ["2019-08-26T23:05:35", 10.83761, -57.16928], ["2019-08-27T00:05:35", 10.84117, -57.17288], ["2019-08-27T01:03:16", 10.84461, -57.17496], ["2019-08-27T03:02:57", 10.85253, -57.18254], ["2019-08-27T04:02:57", 10.85656, -57.18855], ["2019-08-27T05:02:57", 10.8615, -57.1955], ["2019-08-27T06:02:29", 10.86757, -57.20044], ["2019-08-27T08:03:12", 10.88337, -57.21118], ["2019-08-27T09:04:28", 10.89302, -57.21713], ["2019-08-27T10:01:16", 10.90128, -57.22385], ["2019-08-27T13:01:27", 10.93105, -57.24427], ["2019-08-27T14:00:58", 10.9397, -57.25137], ["2019-08-27T15:01:27", 10.94847, -57.25989], ["2019-08-27T16:01:29", 10.95728, -57.267], ["2019-08-27T17:00:41", 10.96651, -57.27335], ["2019-08-27T20:59:57", 11.00172, -57.29468], ["2019-08-27T23:59:16", 11.02177, -57.31146], ["2019-08-28T01:59:43", 11.03003, -57.32443], ["2019-08-28T02:58:37", 11.0361, -57.33264], ["2019-08-28T03:58:14", 11.04175, -57.341], ["2019-08-28T04:58:37", 11.04545, -57.34955], ["2019-08-28T05:58:07", 11.04909, -57.35709], ["2019-08-28T06:57:29", 11.05418, -57.36415], ["2019-08-28T07:57:29", 11.05916, -57.3717], ["2019-08-28T08:57:30", 11.06407, -57.3797], ["2019-08-28T09:57:56", 11.0697, -57.38793], ["2019-08-28T10:57:56", 11.0767, -57.39531], ["2019-08-28T11:57:56", 11.08408, -57.40149], ["2019-08-28T12:55:23", 11.08856, -57.40796], ["2019-08-28T13:57:29", 11.0929, -57.41742], ["2019-08-28T15:54:29", 11.09952, -57.43769], ["2019-08-28T16:55:00", 11.10424, -57.44858], ["2019-08-28T17:54:29", 11.10939, -57.45966], ["2019-08-28T18:53:58", 11.11551, -57.47012], ["2019-08-28T19:54:41", 11.12326, -57.48052], ["2019-08-28T20:54:41", 11.13056, -57.48953], ["2019-08-28T21:54:06", 11.13619, -57.49784], ["2019-08-28T22:54:06", 11.14181, -57.50668], ["2019-08-28T23:53:30", 11.14441, -57.51593], ["2019-08-29T00:53:30", 11.1467, -57.52747], ["2019-08-29T01:53:30", 11.14945, -57.53786], ["2019-08-29T02:53:30", 11.15271, -57.54816], ["2019-08-29T03:53:27", 11.1561, -57.5589], ["2019-08-29T04:51:27", 11.15874, -57.56964], ["2019-08-29T05:51:27", 11.16179, -57.58011], ["2019-08-29T09:51:26", 11.17996, -57.60922], ["2019-08-29T10:51:59", 11.18477, -57.61697], ["2019-08-29T14:50:41", 11.19813, -57.64725], ["2019-08-29T15:50:29", 11.19963, -57.65637], ["2019-08-29T16:50:06", 11.20255, -57.66589], ["2019-08-29T18:49:27", 11.21111, -57.68857], ["2019-08-29T19:49:27", 11.21694, -57.69937], ["2019-08-29T20:48:54", 11.22399, -57.70891], ["2019-08-29T21:48:54", 11.23111, -57.71646], ["2019-08-29T22:48:29", 11.23739, -57.72263], ["2019-08-29T23:48:30", 11.24302, -57.72842], ["2019-08-30T00:48:28", 11.24827, -57.7337], ["2019-08-30T01:49:27", 11.25229, -57.73825], ["2019-08-30T02:47:08", 11.25397, -57.74423], ["2019-08-30T03:47:29", 11.25492, -57.75194], ["2019-08-30T04:47:29", 11.25543, -57.75803], ["2019-08-30T05:47:29", 11.25667, -57.76447], ["2019-08-30T11:46:13", 11.28912, -57.80518], ["2019-08-30T12:48:13", 11.29584, -57.80905], ["2019-08-30T13:45:06", 11.30079, -57.81268], ["2019-08-30T15:44:59", 11.308, -57.82191], ["2019-08-30T16:44:04", 11.30984, -57.82809], ["2019-08-30T17:44:59", 11.31238, -57.83521], ["2019-08-30T19:43:30", 11.32507, -57.85073], ["2019-08-30T20:43:30", 11.33194, -57.85691], ["2019-08-30T21:43:30", 11.33949, -57.86395], ["2019-08-30T22:43:48", 11.34786, -57.87051], ["2019-08-30T23:44:59", 11.35862, -57.87646], ["2019-08-31T00:42:43", 11.36923, -57.88211], ["2019-08-31T01:42:57", 11.37818, -57.88672], ["2019-08-31T02:42:30", 11.38558, -57.8912], ["2019-08-31T03:42:28", 11.39178, -57.89444], ["2019-08-31T04:42:56", 11.39652, -57.89761], ["2019-08-31T05:42:28", 11.40096, -57.89899], ["2019-08-31T06:41:27", 11.40452, -57.90056], ["2019-08-31T07:41:27", 11.4086, -57.9021], ["2019-08-31T08:41:27", 11.41358, -57.90485], ["2019-08-31T11:41:12", 11.4358, -57.91998], ["2019-08-31T12:41:14", 11.44653, -57.92523], ["2019-08-31T13:42:01", 11.45818, -57.92935], ["2019-08-31T14:40:28", 11.46809, -57.93235], ["2019-08-31T15:40:28", 11.47775, -57.93613], ["2019-08-31T16:40:28", 11.48702, -57.93903], ["2019-08-31T17:39:39", 11.49503, -57.94316], ["2019-08-31T18:39:56", 11.50292, -57.94641], ["2019-08-31T19:39:39", 11.50967, -57.94882], ["2019-08-31T20:39:58", 11.51697, -57.95328], ["2019-08-31T21:38:59", 11.5243, -57.95834], ["2019-08-31T22:38:59", 11.5331, -57.96469], ["2019-08-31T23:39:58", 11.54536, -57.97119], ["2019-09-01T00:38:57", 11.55781, -57.97449], ["2019-09-01T04:37:57", 11.60685, -57.97107], ["2019-09-01T05:37:27", 11.61363, -57.96902], ["2019-09-01T11:36:14", 11.63195, -57.97913], ["2019-09-01T12:35:50", 11.63904, -57.98422], ["2019-09-01T16:34:29", 11.68371, -58.00125], ["2019-09-01T18:34:27", 11.70439, -58.00673], ["2019-09-01T19:34:27", 11.71293, -58.01154], ["2019-09-01T20:34:27", 11.71937, -58.01746], ["2019-09-01T21:32:56", 11.72508, -58.02276], ["2019-09-01T22:32:56", 11.72959, -58.02619], ["2019-09-01T23:32:56", 11.73543, -58.02997], ["2019-09-02T02:33:04", 11.76094, -58.04214], ["2019-09-02T07:32:14", 11.79942, -58.04773], ["2019-09-02T11:30:27", 11.82171, -58.06314], ["2019-09-02T12:30:17", 11.82827, -58.07108], ["2019-09-02T13:30:17", 11.83316, -58.07623], ["2019-09-02T14:30:17", 11.83629, -58.08258], ["2019-09-02T15:28:29", 11.84025, -58.08891], ["2019-09-02T16:28:29", 11.84622, -58.09861], ["2019-09-02T17:28:29", 11.85257, -58.10745], ["2019-09-02T18:30:36", 11.86122, -58.11829], ["2019-09-02T19:27:30", 11.86972, -58.12772], ["2019-09-02T23:27:29", 11.91316, -58.16623], ["2019-09-03T01:27:01", 11.93558, -58.17624], ["2019-09-03T02:27:01", 11.94086, -58.17753], ["2019-09-03T03:27:01", 11.94279, -58.17804], ["2019-09-03T04:25:50", 11.94192, -58.17959], ["2019-09-03T05:25:50", 11.94102, -58.18216], ["2019-09-03T06:26:42", 11.94287, -58.18774], ["2019-09-03T07:26:18", 11.94845, -58.19595], ["2019-09-03T08:25:31", 11.95589, -58.20502], ["2019-09-03T09:25:31", 11.9664, -58.21644], ["2019-09-03T10:25:31", 11.97932, -58.22794], ["2019-09-03T17:24:27", 12.01862, -58.26624], ["2019-09-03T18:23:25", 12.02071, -58.27838], ["2019-09-03T19:23:25", 12.02513, -58.29074], ["2019-09-03T20:23:01", 12.03229, -58.30423], ["2019-09-03T21:24:18", 12.04209, -58.31326], ["2019-09-03T22:22:09", 12.05347, -58.31961], ["2019-09-04T00:21:08", 12.07315, -58.32955], ["2019-09-04T01:23:29", 12.08199, -58.33578], ["2019-09-04T02:21:08", 12.0886, -58.34363], ["2019-09-04T03:21:54", 12.09478, -58.35321], ["2019-09-04T04:21:28", 12.1017, -58.36464], ["2019-09-04T05:21:28", 12.1038, -58.37563], ["2019-09-04T06:21:28", 12.10539, -58.38275], ["2019-09-04T08:20:29", 12.11234, -58.39361], ["2019-09-04T09:20:29", 12.11831, -58.3979], ["2019-09-04T10:20:29", 12.1284, -58.40314], ["2019-09-04T12:19:00", 12.15284, -58.41394], ["2019-09-04T17:18:41", 12.18658, -58.44302], ["2019-09-04T18:18:28", 12.19508, -58.45178], ["2019-09-04T22:16:56", 12.2269, -58.48407], ["2019-09-04T23:17:44", 12.23824, -58.49252], ["2019-09-05T00:16:56", 12.25037, -58.49875], ["2019-09-05T04:15:03", 12.31014, -58.52789], ["2019-09-05T05:15:44", 12.32155, -58.53293], ["2019-09-05T08:14:29", 12.35859, -58.54237], ["2019-09-05T09:14:00", 12.36627, -58.54968], ["2019-09-05T10:14:29", 12.36944, -58.55276], ["2019-09-05T11:13:27", 12.37415, -58.55365], ["2019-09-05T13:13:14", 12.38772, -58.55341], ["2019-09-05T14:13:05", 12.39284, -58.55234], ["2019-09-05T15:13:10", 12.40377, -58.5528], ["2019-09-05T16:12:29", 12.41468, -58.55768], ["2019-09-05T17:12:12", 12.42531, -58.56546], ["2019-09-05T18:12:05", 12.43805, -58.57538], ["2019-09-05T19:12:12", 12.44767, -58.58237], ["2019-09-05T20:12:58", 12.45298, -58.58905], ["2019-09-05T21:11:54", 12.45484, -58.59506], ["2019-09-05T22:11:54", 12.45347, -58.60184], ["2019-09-05T23:11:35", 12.45342, -58.60956], ["2019-09-06T00:11:36", 12.45515, -58.61389], ["2019-09-06T01:11:57", 12.45938, -58.6138], ["2019-09-06T02:10:41", 12.46321, -58.61691], ["2019-09-06T03:10:04", 12.46904, -58.62581], ["2019-09-06T04:10:04", 12.47501, -58.63843], ["2019-09-06T05:09:26", 12.48079, -58.65115], ["2019-09-06T06:09:26", 12.48371, -58.6636], ["2019-09-06T07:08:57", 12.48447, -58.67471], ["2019-09-06T08:08:39", 12.48459, -58.68398], ["2019-09-06T09:08:39", 12.4842, -58.69299], ["2019-09-06T10:08:29", 12.48477, -58.70465], ["2019-09-06T11:08:31", 12.48785, -58.7182], ["2019-09-06T15:07:28", 12.49878, -58.76825], ["2019-09-06T16:06:58", 12.50313, -58.78112], ["2019-09-06T17:06:58", 12.50832, -58.79425], ["2019-09-06T23:06:25", 12.55669, -58.86624], ["2019-09-07T05:03:56", 12.58851, -58.92621], ["2019-09-07T06:03:26", 12.59228, -58.92769], ["2019-09-07T07:03:26", 12.5949, -58.92786], ["2019-09-07T08:02:56", 12.59715, -58.9289], ["2019-09-07T09:02:56", 12.59981, -58.93173], ["2019-09-07T10:02:56", 12.60047, -58.9353], ["2019-09-07T11:02:26", 12.59824, -58.94061], ["2019-09-07T12:02:26", 12.59713, -58.94754], ["2019-09-07T13:02:29", 12.59563, -58.95499], ["2019-09-07T14:02:07", 12.59545, -58.96255], ["2019-09-07T15:00:58", 12.59703, -58.96788], ["2019-09-07T16:00:58", 12.59896, -58.97243], ["2019-09-07T17:00:58", 12.60282, -58.97818], ["2019-09-07T18:00:58", 12.60778, -58.98495], ["2019-09-07T19:00:57", 12.6102, -58.98907], ["2019-09-07T20:00:58", 12.61181, -58.99231], ["2019-09-07T21:00:13", 12.61109, -58.99658], ["2019-09-07T22:00:13", 12.60809, -59.00302], ["2019-09-07T22:59:27", 12.60307, -59.01102], ["2019-09-07T23:59:27", 12.59745, -59.01797], ["2019-09-08T00:58:57", 12.5918, -59.02487], ["2019-09-08T01:58:58", 12.58542, -59.03421], ["2019-09-08T02:58:27", 12.57629, -59.04295], ["2019-09-08T03:58:27", 12.56998, -59.0517], ["2019-09-08T04:58:09", 12.5647, -59.06232], ["2019-09-08T05:57:37", 12.55598, -59.07156], ["2019-09-08T06:56:56", 12.54867, -59.07962], ["2019-09-08T07:57:23", 12.54046, -59.08694], ["2019-09-08T08:56:56", 12.53008, -59.09515], ["2019-09-08T09:56:55", 12.51865, -59.10275], ["2019-09-08T11:56:09", 12.49127, -59.12231], ["2019-09-08T13:55:57", 12.46452, -59.15454], ["2019-09-08T14:55:56", 12.451, -59.17123], ["2019-09-08T15:55:57", 12.43937, -59.18991], ["2019-09-08T16:56:01", 12.42918, -59.21017], ["2019-09-08T18:54:57", 12.41289, -59.24557], ["2019-09-08T19:54:57", 12.40843, -59.26523], ["2019-09-08T20:54:57", 12.40513, -59.28351], ["2019-09-08T21:54:25", 12.4009, -59.29919], ["2019-09-08T22:54:25", 12.39588, -59.31464], ["2019-09-09T03:54:34", 12.35699, -59.37347], ["2019-09-09T09:51:56", 12.31671, -59.47836], ["2019-09-09T10:50:58", 12.31529, -59.49488], ["2019-09-09T11:50:58", 12.31568, -59.5123], ["2019-09-09T13:50:09", 12.31953, -59.54755], ["2019-09-09T14:50:00", 12.3221, -59.56191], ["2019-09-09T15:50:00", 12.32347, -59.57727], ["2019-09-09T16:49:27", 12.32329, -59.59222], ["2019-09-09T17:49:27", 12.32312, -59.60587], ["2019-09-09T18:49:27", 12.32385, -59.61926], ["2019-09-09T20:49:05", 12.33054, -59.64444], ["2019-09-09T21:49:05", 12.33251, -59.65792], ["2019-09-09T22:49:05", 12.33577, -59.67285], ["2019-09-09T23:50:05", 12.33898, -59.68964], ["2019-09-10T02:47:28", 12.35439, -59.73654], ["2019-09-10T03:48:29", 12.35947, -59.75577], ["2019-09-10T04:46:37", 12.36473, -59.77209], ["2019-09-10T05:46:58", 12.37021, -59.78802], ["2019-09-10T06:46:58", 12.3767, -59.80295], ["2019-09-10T07:46:58", 12.38507, -59.81516], ["2019-09-10T14:44:03", 12.45603, -59.88138], ["2019-09-10T16:43:26", 12.47789, -59.90286], ["2019-09-10T19:42:35", 12.52735, -59.94488], ["2019-09-10T20:42:35", 12.54722, -59.95741], ["2019-09-10T21:42:35", 12.56722, -59.97089], ["2019-09-10T22:42:26", 12.58438, -59.98294], ["2019-09-10T23:42:29", 12.59953, -59.99429], ["2019-09-11T00:42:29", 12.61306, -60.00491], ["2019-09-11T01:42:29", 12.62331, -60.01199], ["2019-09-11T02:42:28", 12.63357, -60.01935], ["2019-09-11T03:41:16", 12.64381, -60.02663], ["2019-09-11T04:41:16", 12.65557, -60.03513], ["2019-09-11T05:41:16", 12.66896, -60.04526], ["2019-09-11T06:42:41", 12.68283, -60.05549], ["2019-09-11T07:42:41", 12.69682, -60.0633], ["2019-09-11T08:42:41", 12.70708, -60.06699], ["2019-09-11T10:41:33", 12.72046, -60.06372], ["2019-09-11T11:40:43", 12.72433, -60.05932], ["2019-09-11T12:40:43", 12.72725, -60.05675], ["2019-09-11T13:40:43", 12.73094, -60.05649], ["2019-09-11T15:38:59", 12.74085, -60.0594], ["2019-09-11T16:39:06", 12.74766, -60.06158], ["2019-09-11T17:38:59", 12.75604, -60.06644], ["2019-09-11T21:39:01", 12.78458, -60.09195], ["2019-09-11T22:38:27", 12.78617, -60.09894], ["2019-09-11T23:38:29", 12.78792, -60.10852], ["2019-09-12T00:38:01", 12.79011, -60.11584], ["2019-09-12T01:38:41", 12.7932, -60.12424], ["2019-09-12T02:37:34", 12.7983, -60.1351], ["2019-09-12T03:37:29", 12.80553, -60.14563], ["2019-09-12T06:36:26", 12.83008, -60.17978], ["2019-09-12T07:36:57", 12.83947, -60.19153], ["2019-09-12T08:36:26", 12.84808, -60.20276], ["2019-09-12T09:36:44", 12.85786, -60.21414], ["2019-09-12T10:36:27", 12.86864, -60.22565], ["2019-09-12T13:35:29", 12.90438, -60.26324], ["2019-09-12T20:34:01", 13.00913, -60.36502], ["2019-09-13T01:33:36", 13.09954, -60.4216], ["2019-09-13T07:31:57", 13.1951, -60.50824], ["2019-09-13T11:31:25", 13.24986, -60.53696], ["2019-09-13T12:30:57", 13.26405, -60.54559], ["2019-09-13T13:30:58", 13.2795, -60.55698], ["2019-09-13T14:30:28", 13.29536, -60.57094], ["2019-09-13T15:30:28", 13.31158, -60.58914], ["2019-09-13T16:30:59", 13.32903, -60.60815]], "drifter_18": [["2019-08-08T12:23:17", 11.83018, -56.09376], ["2019-08-09T00:20:29", 11.83233, -56.09659], ["2019-08-09T23:13:30", 11.92091, -56.20355], ["2019-08-10T00:10:55", 11.83572, -56.48712], ["2019-08-10T06:08:54", 11.83173, -56.50366], ["2019-08-10T07:11:30", 11.84595, -56.61157], ["2019-08-10T08:11:30", 11.85091, -56.62723], ["2019-08-10T09:11:30", 11.85649, -56.64165], ["2019-08-10T19:05:15", 11.86095, -56.65598], ["2019-08-10T20:08:31", 11.93369, -56.76981], ["2019-08-12T12:54:27", 11.94466, -56.77768], ["2019-08-12T15:55:17", 12.08518, -57.09592], ["2019-08-12T23:53:55", 12.10752, -57.13242], ["2019-08-13T14:48:04", 12.201, -57.19632], ["2019-08-13T15:50:00", 12.34046, -57.20874], ["2019-08-14T12:42:17", 12.34435, -57.20715], ["2019-08-14T13:43:43", 12.31964, -57.29779], ["2019-08-15T02:38:58", 12.31917, -57.30536], ["2019-08-15T06:36:01", 12.33577, -57.44125], ["2019-08-15T08:35:10", 12.34294, -57.49042], ["2019-08-15T19:34:30", 12.3537, -57.51395], ["2019-08-16T09:27:35", 12.44355, -57.65811], ["2019-08-16T10:30:10", 12.54129, -57.76486], ["2019-08-16T13:29:42", 12.54473, -57.77185], ["2019-08-17T00:25:10", 12.54942, -57.79016], ["2019-08-17T07:23:21", 12.60099, -57.89725], ["2019-08-17T09:22:09", 12.64364, -57.96268], ["2019-08-17T10:22:09", 12.65837, -57.98609], ["2019-08-17T11:22:09", 12.66751, -57.99871], ["2019-08-17T12:24:13", 12.67747, -58.00815], ["2019-08-17T17:22:05", 12.68816, -58.01816], ["2019-08-17T18:19:49", 12.70566, -58.06903], ["2019-08-17T23:19:35", 12.70506, -58.08206], ["2019-08-18T06:21:19", 12.717, -58.14664], ["2019-08-18T12:15:56", 12.73215, -58.21793], ["2019-08-18T13:18:01", 12.75197, -58.28854], ["2019-08-18T15:18:24", 12.76058, -58.30078], ["2019-08-18T17:16:00", 12.77768, -58.32281], ["2019-08-18T18:16:00", 12.79007, -58.34477], ["2019-08-18T19:16:00", 12.79501, -58.35601], ["2019-08-18T23:13:46", 12.7993, -58.36871], ["2019-08-19T05:11:33", 12.83128, -58.42642], ["2019-08-19T11:08:57", 12.90243, -58.50934], ["2019-08-19T12:09:33", 13.00618, -58.58319], ["2019-08-19T13:08:08", 13.01991, -58.58588], ["2019-08-19T14:08:08", 13.03451, -58.58945], ["2019-08-19T15:08:08", 13.04464, -58.59649], ["2019-08-19T16:07:57", 13.05666, -58.60361], ["2019-08-19T17:06:58", 13.07004, -58.60538], ["2019-08-19T18:06:58", 13.08247, -58.60318], ["2019-08-19T19:06:58", 13.09118, -58.60404], ["2019-08-19T20:07:29", 13.09843, -58.60687], ["2019-08-19T21:06:09", 13.1074, -58.6069], ["2019-08-19T22:06:09", 13.11772, -58.60768], ["2019-08-19T23:06:00", 13.12416, -58.60983], ["2019-08-20T00:05:23", 13.1255, -58.61456], ["2019-08-20T01:05:24", 13.127, -58.62311], ["2019-08-20T02:05:03", 13.12636, -58.63116], ["2019-08-20T03:04:56", 13.12338, -58.63263], ["2019-08-20T04:05:00", 13.12082, -58.63403], ["2019-08-20T05:05:15", 13.11799, -58.63434], ["2019-08-20T06:04:34", 13.11673, -58.6387], ["2019-08-20T07:03:55", 13.11572, -58.64532], ["2019-08-20T09:02:37", 13.11559, -58.65207], ["2019-08-20T10:02:37", 13.12157, -58.67183], ["2019-08-20T11:02:37", 13.12372, -58.68762], ["2019-08-20T12:02:27", 13.12544, -58.69766], ["2019-08-20T13:01:58", 13.12241, -58.7049], ["2019-08-20T14:01:08", 13.12111, -58.71246], ["2019-08-20T15:01:08", 13.12084, -58.72227], ["2019-08-20T16:00:27", 13.12204, -58.73575], ["2019-08-20T17:00:27", 13.12557, -58.75401], ["2019-08-20T17:59:55", 13.12999, -58.77573], ["2019-08-20T18:59:57", 13.13541, -58.793], ["2019-08-20T19:59:55", 13.14272, -58.80267], ["2019-08-20T20:59:28", 13.15004, -58.81158], ["2019-08-20T21:59:28", 13.15557, -58.82221], ["2019-08-20T22:58:58", 13.15892, -58.83405], ["2019-08-20T23:58:41", 13.16149, -58.84564], ["2019-08-21T00:57:57", 13.16385, -58.85574], ["2019-08-21T01:57:57", 13.16684, -58.86693], ["2019-08-21T02:57:28", 13.16937, -58.88083], ["2019-08-21T03:57:28", 13.17274, -58.89499], ["2019-08-21T04:57:28", 13.17948, -58.9034], ["2019-08-21T05:56:58", 13.18772, -58.90915], ["2019-08-21T06:56:07", 13.19501, -58.91418], ["2019-08-21T07:55:55", 13.20375, -58.91992], ["2019-08-21T08:55:45", 13.21101, -58.9263], ["2019-08-21T09:55:07", 13.21903, -58.93033], ["2019-08-21T10:54:56", 13.22257, -58.93372], ["2019-08-21T11:54:26", 13.22381, -58.936], ["2019-08-21T12:54:26", 13.22461, -58.93886], ["2019-08-21T13:53:56", 13.22487, -58.94727], ["2019-08-21T17:52:29", 13.2278, -58.95694], ["2019-08-21T18:51:40", 13.28587, -58.99414], ["2019-08-21T19:51:58", 13.29367, -58.99815], ["2019-08-21T20:51:40", 13.3006, -59.00168], ["2019-08-21T21:51:59", 13.30551, -59.00708], ["2019-08-21T22:51:59", 13.31029, -59.01241], ["2019-08-21T23:50:42", 13.31866, -59.01859], ["2019-08-22T00:50:26", 13.3262, -59.02341], ["2019-08-22T01:49:59", 13.3379, -59.02811], ["2019-08-22T02:49:28", 13.35151, -59.03152], ["2019-08-22T03:49:28", 13.36483, -59.03569], ["2019-08-22T04:49:28", 13.37346, -59.04135], ["2019-08-22T08:48:56", 13.37841, -59.04739], ["2019-08-22T09:47:49", 13.39261, -59.06149], ["2019-08-22T10:47:49", 13.39717, -59.06826], ["2019-08-22T11:47:57", 13.40228, -59.0759], ["2019-08-22T12:47:57", 13.41155, -59.08298], ["2019-08-22T13:47:57", 13.42333, -59.0888], ["2019-08-22T14:47:26", 13.43642, -59.09695], ["2019-08-22T15:47:26", 13.45033, -59.10583], ["2019-08-22T21:46:26", 13.46519, -59.11264], ["2019-08-23T07:43:59", 13.52567, -59.14441], ["2019-08-23T08:44:27", 13.53739, -59.22128], ["2019-08-23T09:44:27", 13.53593, -59.23481], ["2019-08-23T13:42:30", 13.53713, -59.25052], ["2019-08-23T22:37:35", 13.54962, -59.30502], ["2019-08-24T02:37:33", 13.63125, -59.37305], ["2019-08-24T13:35:12", 13.65288, -59.38931], ["2019-08-24T22:31:54", 13.68025, -59.42548], ["2019-08-24T23:31:02", 13.72248, -59.50812], ["2019-08-25T00:31:02", 13.72487, -59.51519], ["2019-08-25T01:31:02", 13.72629, -59.52154], ["2019-08-25T02:30:37", 13.72685, -59.52609], ["2019-08-25T03:30:37", 13.72543, -59.53184], ["2019-08-25T04:30:37", 13.72547, -59.53828], ["2019-08-25T20:27:17", 13.7262, -59.54489], ["2019-08-25T23:27:06", 13.74754, -59.65225], ["2019-08-26T04:25:47", 13.75853, -59.67239], ["2019-08-26T18:20:32", 13.77402, -59.72345], ["2019-08-26T19:22:30", 13.79988, -59.84186], ["2019-08-27T00:18:40", 13.8044, -59.85095], ["2019-08-27T01:19:17", 13.82911, -59.91211], ["2019-08-27T02:17:59", 13.83644, -59.92788], ["2019-08-27T03:19:17", 13.84432, -59.9415], ["2019-08-27T04:20:41", 13.84945, -59.95432], ["2019-08-27T06:17:36", 13.85544, -59.96884], ["2019-08-27T08:17:29", 13.86836, -60.00192], ["2019-08-27T10:18:57", 13.89424, -60.04001], ["2019-08-27T12:16:04", 13.9403, -60.06943], ["2019-08-27T13:14:36", 13.9925, -60.08686], ["2019-08-27T14:16:04", 14.01873, -60.09494], ["2019-08-27T18:14:05", 14.04648, -60.1012], ["2019-08-27T19:15:42", 14.16338, -60.11551], ["2019-08-27T21:15:42", 14.2196, -60.11057], ["2019-08-27T22:11:55", 14.25003, -60.11057], ["2019-08-27T23:13:06", 14.26973, -60.10458], ["2019-08-28T03:11:30", 14.28879, -60.09604], ["2019-08-28T05:09:37", 14.3328, -60.06091], ["2019-08-28T06:09:37", 14.33964, -60.05243], ["2019-08-28T13:10:02", 14.3408, -60.04977], ["2019-08-29T16:02:39", 14.30971, -60.06384], ["2019-08-29T21:02:31", 14.43359, -60.547], ["2019-08-29T22:01:26", 14.47017, -60.55948], ["2019-08-29T23:01:26", 14.47165, -60.56471], ["2019-08-30T00:01:26", 14.47388, -60.57201], ["2019-08-30T04:58:11", 14.47294, -60.58197], ["2019-08-30T22:52:33", 14.46602, -60.60339], ["2019-08-30T23:51:28", 14.38818, -60.80667], ["2019-08-31T00:51:28", 14.37431, -60.81932], ["2019-08-31T01:52:10", 14.36053, -60.83365], ["2019-08-31T02:51:29", 14.34678, -60.85107], ["2019-08-31T07:50:05", 14.33609, -60.87259], ["2019-08-31T08:49:59", 14.33119, -60.97772], ["2019-08-31T09:48:56", 14.33795, -60.99756], ["2019-08-31T10:48:56", 14.34366, -61.01981], ["2019-08-31T11:48:38", 14.34306, -61.04453], ["2019-08-31T12:48:28", 14.34587, -61.06757], ["2019-08-31T13:47:58", 14.34902, -61.0903], ["2019-08-31T14:47:10", 14.35204, -61.11176], ["2019-08-31T15:47:10", 14.35524, -61.13262], ["2019-08-31T16:46:59", 14.36151, -61.15253], ["2019-08-31T17:46:27", 14.36379, -61.17279], ["2019-08-31T18:45:56", 14.36168, -61.19525], ["2019-08-31T19:45:55", 14.36295, -61.2149], ["2019-08-31T20:45:26", 14.36643, -61.23392], ["2019-08-31T21:44:59", 14.37142, -61.24896], ["2019-08-31T22:44:29", 14.37359, -61.2627], ["2019-08-31T23:44:27", 14.37799, -61.27728], ["2019-09-01T00:43:55", 14.3818, -61.29352], ["2019-09-01T01:43:55", 14.38839, -61.31291], ["2019-09-01T02:43:30", 14.39633, -61.33548], ["2019-09-01T03:42:57", 14.40413, -61.35773], ["2019-09-01T04:42:57", 14.41248, -61.37922], ["2019-09-01T05:42:27", 14.41879, -61.39587], ["2019-09-01T06:41:57", 14.42442, -61.41], ["2019-09-01T07:41:31", 14.43085, -61.41751], ["2019-09-01T08:41:25", 14.43718, -61.42041], ["2019-09-01T09:40:56", 14.44326, -61.42191], ["2019-09-01T10:39:57", 14.44644, -61.42358], ["2019-09-01T11:39:57", 14.4447, -61.42776], ["2019-09-01T12:39:57", 14.43831, -61.4336], ["2019-09-01T13:39:38", 14.42964, -61.43884], ["2019-09-01T14:39:27", 14.42494, -61.44983], ["2019-09-01T15:38:57", 14.42567, -61.46689], ["2019-09-01T16:38:30", 14.42883, -61.48499], ["2019-09-01T17:37:30", 14.43165, -61.50076], ["2019-09-01T18:37:30", 14.4349, -61.51122], ["2019-09-01T19:37:36", 14.43614, -61.51422], ["2019-09-01T20:36:46", 14.43491, -61.51712], ["2019-09-01T21:36:33", 14.43454, -61.52701], ["2019-09-01T22:36:27", 14.43581, -61.53836], ["2019-09-02T03:35:33", 14.43659, -61.54883], ["2019-09-02T04:35:00", 14.40584, -61.59903], ["2019-09-02T13:34:40", 14.40353, -61.61029], ["2019-09-02T16:31:22", 14.35751, -61.72382], ["2019-09-02T21:31:00", 14.3543, -61.75418], ["2019-09-02T22:29:14", 14.37095, -61.81091], ["2019-09-02T23:29:14", 14.36731, -61.81915], ["2019-09-03T00:29:14", 14.36504, -61.82439], ["2019-09-03T07:27:12", 14.36551, -61.83057], ["2019-09-03T08:26:50", 14.36664, -61.85837], ["2019-09-03T09:26:50", 14.36845, -61.86838], ["2019-09-03T14:27:43", 14.36669, -61.87662], ["2019-09-03T15:25:24", 14.35752, -61.91153], ["2019-09-04T02:24:24", 14.3615, -61.91885], ["2019-09-04T10:20:59", 14.41055, -62.0209], ["2019-09-04T11:19:09", 14.47207, -62.0351], ["2019-09-04T12:19:09", 14.47147, -62.03549], ["2019-09-04T13:19:09", 14.46928, -62.04081], ["2019-09-04T17:19:11", 14.46735, -62.04999], ["2019-09-04T19:18:27", 14.45783, -62.09647], ["2019-09-04T21:17:11", 14.43892, -62.09937], ["2019-09-05T15:12:06", 14.42326, -62.10446], ["2019-09-05T20:09:46", 14.2679, -62.21799], ["2019-09-06T02:10:05", 14.27638, -62.26489], ["2019-09-06T03:10:28", 14.25792, -62.2652], ["2019-09-06T04:10:28", 14.25149, -62.26467], ["2019-09-06T10:05:26", 14.24527, -62.26785], ["2019-09-06T11:05:17", 14.19341, -62.27551], ["2019-09-06T12:05:17", 14.18207, -62.28036], ["2019-09-06T13:06:53", 14.17374, -62.28156], ["2019-09-06T14:06:53", 14.16534, -62.28549], ["2019-09-06T15:06:53", 14.15375, -62.29081], ["2019-09-06T22:03:33", 14.14281, -62.29373], ["2019-09-07T00:02:00", 14.08659, -62.33096], ["2019-09-07T01:02:00", 14.08181, -62.34378], ["2019-09-07T02:02:00", 14.07958, -62.35047], ["2019-09-07T09:00:12", 14.07271, -62.35287], ["2019-09-07T11:59:27", 14.00897, -62.37155], ["2019-09-07T12:58:57", 13.99855, -62.39841], ["2019-09-07T16:58:09", 13.99776, -62.40738], ["2019-09-07T19:57:09", 13.97817, -62.4166], ["2019-09-07T21:55:59", 13.96492, -62.42545], ["2019-09-07T22:55:59", 13.96554, -62.44697], ["2019-09-07T23:55:59", 13.96739, -62.45736], ["2019-09-08T00:57:06", 13.96833, -62.46869], ["2019-09-08T02:53:58", 13.97148, -62.48178], ["2019-09-08T03:56:30", 13.97188, -62.48831], ["2019-09-08T04:53:58", 13.96814, -62.48367], ["2019-09-08T05:55:56", 13.96304, -62.47913], ["2019-09-08T06:55:56", 13.95831, -62.47766], ["2019-09-08T07:53:16", 13.95265, -62.47989], ["2019-09-08T08:54:22", 13.94679, -62.48529], ["2019-09-08T12:53:28", 13.94392, -62.48978], ["2019-09-08T13:51:33", 13.92787, -62.52368], ["2019-09-08T17:52:39", 13.92472, -62.52914], ["2019-09-09T02:50:28", 13.91411, -62.53351], ["2019-09-09T11:45:13", 13.88876, -62.60504], ["2019-09-09T18:43:15", 13.82014, -62.65143], ["2019-09-09T20:42:37", 13.77979, -62.76788], ["2019-09-10T18:37:47", 13.77767, -62.79761], ["2019-09-10T20:35:42", 13.69022, -63.14645], ["2019-09-10T22:36:59", 13.68826, -63.19003], ["2019-09-11T03:34:37", 13.68707, -63.22491], ["2019-09-11T04:33:51", 13.66174, -63.28845], ["2019-09-11T09:34:28", 13.6549, -63.29636], ["2019-09-11T15:30:43", 13.60163, -63.37408], ["2019-09-11T16:29:22", 13.5469, -63.48184], ["2019-09-11T17:29:22", 13.54041, -63.49494], ["2019-09-11T18:29:26", 13.53612, -63.50601], ["2019-09-11T19:29:26", 13.53166, -63.51735], ["2019-09-11T20:29:11", 13.52664, -63.52808], ["2019-09-11T22:28:29", 13.51779, -63.53952], ["2019-09-11T23:28:08", 13.49369, -63.56683], ["2019-09-12T00:28:08", 13.48499, -63.58291], ["2019-09-12T01:27:29", 13.47864, -63.60257], ["2019-09-12T02:26:28", 13.47182, -63.62656], ["2019-09-12T03:26:28", 13.46588, -63.65262], ["2019-09-12T04:26:28", 13.46034, -63.67528], ["2019-09-12T05:26:10", 13.45716, -63.69382], ["2019-09-12T06:25:57", 13.45409, -63.71127], ["2019-09-12T07:25:53", 13.45121, -63.72839], ["2019-09-12T09:24:43", 13.44837, -63.74274], ["2019-09-12T10:24:43", 13.4418, -63.76101], ["2019-09-12T11:24:43", 13.43699, -63.76985], ["2019-09-12T16:25:27", 13.42914, -63.77963], ["2019-09-12T17:22:27", 13.40785, -63.84793], ["2019-09-12T18:22:27", 13.40801, -63.86452], ["2019-09-12T19:23:02", 13.40822, -63.87671], ["2019-09-12T20:21:30", 13.40837, -63.88821], ["2019-09-12T21:21:30", 13.40764, -63.9015], ["2019-09-12T22:20:57", 13.40644, -63.91498], ["2019-09-13T01:22:31", 13.4052, -63.92746], ["2019-09-13T02:20:59", 13.38916, -63.95721], ["2019-09-13T03:20:59", 13.38483, -63.96666], ["2019-09-13T09:17:11", 13.38148, -63.97842], ["2019-09-13T19:16:06", 13.35707, -64.07959], ["2019-09-13T22:13:57", 13.34888, -64.22968], ["2019-09-13T23:13:03", 13.3571, -64.29147], ["2019-09-14T00:13:03", 13.36424, -64.31439], ["2019-09-14T03:14:29", 13.37025, -64.33353], ["2019-09-14T04:11:48", 13.38354, -64.38129], ["2019-09-14T05:14:29", 13.38846, -64.39529], ["2019-09-14T09:12:27", 13.39243, -64.4079], ["2019-09-14T11:11:18", 13.40942, -64.45508], ["2019-09-14T17:08:59", 13.42172, -64.48199], ["2019-09-14T19:07:31", 13.46482, -64.5665], ["2019-09-14T22:07:55", 13.4813, -64.59338], ["2019-09-14T23:05:56", 13.51705, -64.63589], ["2019-09-15T00:05:56", 13.53024, -64.64837], ["2019-09-15T01:06:59", 13.54136, -64.65833], ["2019-09-15T11:03:58", 13.55253, -64.66846], ["2019-09-15T12:04:00", 13.64728, -64.77115], ["2019-09-15T14:02:08", 13.65807, -64.78076], ["2019-09-15T15:01:30", 13.67786, -64.79639], ["2019-09-15T16:01:30", 13.69402, -64.80596], ["2019-09-15T17:01:59", 13.70986, -64.81762], ["2019-09-15T22:01:20", 13.72984, -64.83325], ["2019-09-15T23:01:57", 13.83663, -64.8754], ["2019-09-16T11:55:06", 13.8542, -64.88251], ["2019-09-16T12:54:29", 14.03901, -65.05692], ["2019-09-16T13:54:29", 14.06241, -65.06502], ["2019-09-16T18:53:08", 14.08219, -65.07214], ["2019-09-16T22:54:00", 14.16938, -65.12054], ["2019-09-17T07:51:36", 14.24315, -65.18741], ["2019-09-17T08:48:30", 14.45703, -65.33817], ["2019-09-17T09:50:56", 14.47917, -65.35413], ["2019-09-17T16:46:57", 14.50456, -65.37595], ["2019-09-17T18:44:58", 14.68495, -65.58914], ["2019-09-18T06:44:17", 14.74613, -65.65304], ["2019-09-18T16:38:54", 15.04942, -65.93759], ["2019-09-20T09:28:38", 15.25278, -66.15814], ["2019-09-21T17:22:05", 15.64894, -66.55377], ["2019-09-21T18:19:14", 16.06887, -66.54053], ["2019-09-22T14:12:31", 16.08539, -66.54385], ["2019-09-23T16:06:49", 16.36633, -66.58411], ["2019-09-25T08:52:22", 16.64042, -66.73654], ["2019-09-26T03:46:28", 16.86079, -66.75601], ["2019-09-26T09:44:50", 17.02592, -66.63083], ["2019-09-26T10:46:34", 17.0487, -66.56049], ["2019-09-26T11:44:39", 17.05011, -66.55276], ["2019-09-26T20:43:53", 17.05092, -66.54622], ["2019-09-26T21:45:30", 17.07818, -66.50134], ["2019-09-26T22:41:03", 17.07856, -66.4953], ["2019-09-26T23:41:03", 17.07829, -66.48777], ["2019-09-27T00:41:03", 17.07872, -66.48159], ["2019-09-27T06:40:19", 17.07859, -66.47687], ["2019-09-27T13:39:58", 17.08207, -66.4455], ["2019-09-27T14:36:16", 17.06644, -66.40994], ["2019-09-27T15:36:16", 17.06412, -66.40754], ["2019-09-27T16:36:16", 17.06305, -66.40461], ["2019-09-27T22:34:59", 17.06361, -66.40076], ["2019-09-28T02:35:59", 17.05019, -66.37653], ["2019-09-28T07:31:55", 17.02735, -66.36099], ["2019-09-28T12:29:55", 16.99947, -66.33508], ["2019-09-28T13:30:58", 16.96171, -66.30481], ["2019-09-28T17:31:00", 16.9518, -66.29892], ["2019-09-29T14:22:29", 16.93403, -66.26682], ["2019-09-30T17:14:48", 16.81302, -66.0571], ["2019-09-30T20:13:27", 16.82411, -65.70544], ["2019-09-30T21:13:27", 16.84754, -65.67821], ["2019-09-30T22:14:35", 16.85574, -65.67194], ["2019-09-30T23:13:04", 16.86552, -65.66385], ["2019-10-01T00:13:04", 16.87502, -65.65192], ["2019-10-01T01:13:04", 16.88171, -65.63854], ["2019-10-01T08:13:05", 16.88574, -65.62291], ["2019-10-01T12:12:04", 16.89743, -65.57178], ["2019-10-01T13:11:12", 16.92561, -65.56482], ["2019-10-01T14:11:12", 16.93209, -65.56086], ["2019-10-01T19:09:12", 16.94187, -65.55624], ["2019-10-02T00:09:23", 16.98239, -65.54107], ["2019-10-02T04:04:56", 17.02144, -65.54564], ["2019-10-02T06:04:29", 17.05377, -65.54147], ["2019-10-02T16:04:43", 17.06617, -65.53583], ["2019-10-02T22:02:27", 17.11002, -65.55878], ["2019-10-03T02:01:17", 17.13667, -65.58344], ["2019-10-03T09:58:14", 17.14264, -65.5976], ["2019-10-03T10:59:55", 17.13623, -65.65137], ["2019-10-03T11:56:35", 17.13398, -65.66003], ["2019-10-03T12:57:59", 17.13383, -65.6687], ["2019-10-03T16:57:46", 17.13644, -65.67819], ["2019-10-03T17:57:28", 17.15455, -65.70923], ["2019-10-03T19:55:40", 17.16071, -65.71735], ["2019-10-03T20:55:40", 17.17421, -65.73456], ["2019-10-03T21:55:40", 17.17661, -65.73576], ["2019-10-04T00:54:32", 17.17734, -65.73688], ["2019-10-04T08:52:34", 17.17366, -65.74506], ["2019-10-04T12:49:30", 17.14489, -65.77625], ["2019-10-04T13:49:05", 17.11788, -65.79849], ["2019-10-04T14:48:58", 17.11246, -65.80991], ["2019-10-04T20:46:53", 17.10887, -65.82028], ["2019-10-04T21:47:13", 17.11195, -65.85596], ["2019-10-04T22:45:12", 17.10821, -65.8638], ["2019-10-05T03:46:54", 17.10345, -65.8692], ["2019-10-05T10:44:39", 17.07315, -65.90585], ["2019-10-05T18:42:13", 17.06094, -65.94002], ["2019-10-05T19:39:29", 17.01407, -65.97742], ["2019-10-05T20:38:51", 17.01344, -65.98099], ["2019-10-05T21:38:51", 17.013, -65.98604], ["2019-10-05T23:40:00", 17.01171, -65.98956], ["2019-10-06T00:38:13", 17.00686, -65.98947], ["2019-10-06T01:40:30", 16.9986, -65.98862], ["2019-10-06T02:37:12", 16.98876, -65.9881], ["2019-10-06T03:40:03", 16.97925, -65.98541], ["2019-10-06T05:37:20", 16.96947, -65.98755], ["2019-10-06T07:37:28", 16.95309, -66.00143], ["2019-10-06T11:37:14", 16.94425, -66.01398], ["2019-10-06T12:34:47", 16.92399, -66.01318], ["2019-10-06T14:34:00", 16.91388, -66.00951], ["2019-10-07T02:32:58", 16.89602, -66.00409], ["2019-10-07T08:29:41", 16.81739, -66.02817], ["2019-10-07T17:25:04", 16.79236, -66.03827], ["2019-10-07T20:24:15", 16.73852, -66.02347], ["2019-10-08T04:21:32", 16.71558, -66.01642], ["2019-10-08T11:22:06", 16.69197, -66.0455], ["2019-10-08T13:19:37", 16.69422, -66.06479], ["2019-10-08T15:19:37", 16.68916, -66.06986], ["2019-10-08T16:21:59", 16.68852, -66.07004], ["2019-10-09T04:18:02", 16.68417, -66.07196], ["2019-10-09T11:12:44", 16.6353, -66.09244], ["2019-10-09T14:13:34", 16.60513, -66.10208], ["2019-10-10T12:05:29", 16.59689, -66.10451], ["2019-10-10T13:05:12", 16.41697, -66.09014], ["2019-10-10T14:04:30", 16.41066, -66.09079], ["2019-10-10T15:05:14", 16.40736, -66.08951], ["2019-10-10T16:04:30", 16.40485, -66.08743], ["2019-10-10T17:04:28", 16.4047, -66.08377], ["2019-10-10T18:05:33", 16.40765, -66.07863], ["2019-10-10T19:03:58", 16.41076, -66.07223], ["2019-10-10T20:03:58", 16.41254, -66.06496], ["2019-10-10T21:03:30", 16.4128, -66.06032], ["2019-10-10T22:02:57", 16.4103, -66.05765], ["2019-10-10T23:02:57", 16.407, -66.05544], ["2019-10-11T00:02:58", 16.40279, -66.05347], ["2019-10-11T01:02:55", 16.39691, -66.04977], ["2019-10-11T02:02:24", 16.38894, -66.04644], ["2019-10-11T03:02:28", 16.38235, -66.04528], ["2019-10-11T04:03:03", 16.37703, -66.04413], ["2019-10-11T05:01:58", 16.37334, -66.04333], ["2019-10-11T06:01:41", 16.36953, -66.04443], ["2019-10-11T07:01:25", 16.36495, -66.04498], ["2019-10-11T08:00:38", 16.35888, -66.04245], ["2019-10-11T09:00:38", 16.35387, -66.03854], ["2019-10-11T10:00:11", 16.34722, -66.03494], ["2019-10-11T11:00:11", 16.33959, -66.03299], ["2019-10-11T12:59:28", 16.33204, -66.03119], ["2019-10-11T13:59:28", 16.31331, -66.027], ["2019-10-11T14:59:28", 16.30533, -66.0276], ["2019-10-11T20:56:56", 16.29718, -66.02829], ["2019-10-11T21:56:58", 16.2852, -66.03751], ["2019-10-11T22:55:56", 16.27983, -66.03409], ["2019-10-11T23:55:56", 16.27309, -66.03192], ["2019-10-12T00:55:56", 16.26661, -66.03149], ["2019-10-12T12:52:59", 16.26228, -66.03381], ["2019-10-12T17:51:28", 16.20363, -66.03156], ["2019-10-12T23:49:59", 16.20061, -66.02603], ["2019-10-13T01:48:57", 16.20523, -65.98459], ["2019-10-13T02:48:57", 16.20211, -65.97112], ["2019-10-13T03:48:57", 16.19906, -65.96606], ["2019-10-13T11:46:54", 16.19558, -65.96048], ["2019-10-13T12:45:38", 16.1685, -65.93195], ["2019-10-13T13:45:38", 16.16741, -65.93048], ["2019-10-13T14:45:38", 16.16621, -65.92791], ["2019-10-13T15:45:45", 16.16355, -65.92722], ["2019-10-13T16:45:45", 16.15938, -65.93035], ["2019-10-13T18:44:10", 16.15659, -65.93456], ["2019-10-13T23:45:27", 16.15748, -65.93942], ["2019-10-14T14:37:31", 16.16158, -65.94452], ["2019-10-14T15:37:29", 16.23552, -65.93695], ["2019-10-14T16:37:29", 16.24302, -65.92795], ["2019-10-15T01:35:27", 16.2477, -65.9234], ["2019-10-15T03:36:30", 16.26811, -65.86929], ["2019-10-15T10:33:55", 16.2706, -65.86669], ["2019-10-15T11:33:27", 16.28601, -65.89812], ["2019-10-15T15:31:18", 16.2989, -65.90222], ["2019-10-15T16:33:29", 16.35512, -65.90213], ["2019-10-15T17:30:52", 16.36872, -65.90131], ["2019-10-15T22:29:14", 16.38332, -65.90082], ["2019-10-15T23:30:29", 16.45374, -65.88576], ["2019-10-16T00:29:36", 16.4673, -65.87775], ["2019-10-16T02:29:36", 16.48392, -65.85747], ["2019-10-16T04:27:02", 16.49383, -65.84863], ["2019-10-16T05:29:23", 16.51154, -65.8391], ["2019-10-16T06:27:02", 16.51773, -65.8366], ["2019-10-16T07:27:23", 16.52287, -65.83456], ["2019-10-16T08:27:23", 16.53085, -65.83184], ["2019-10-16T09:26:27", 16.54033, -65.83047], ["2019-10-16T10:26:12", 16.54923, -65.82916], ["2019-10-16T11:26:12", 16.55536, -65.82657], ["2019-10-16T12:25:26", 16.55729, -65.82297], ["2019-10-16T13:24:57", 16.55684, -65.82031], ["2019-10-16T15:23:52", 16.55601, -65.81836], ["2019-10-16T16:24:43", 16.55755, -65.82152], ["2019-10-16T17:23:52", 16.55859, -65.82483], ["2019-10-16T18:23:31", 16.5639, -65.83105], ["2019-10-16T19:23:26", 16.5721, -65.83734], ["2019-10-16T20:22:31", 16.58297, -65.84268], ["2019-10-16T21:22:31", 16.59463, -65.84948], ["2019-10-16T22:22:57", 16.60484, -65.8566], ["2019-10-17T01:20:59", 16.6141, -65.86208], ["2019-10-17T05:20:11", 16.63011, -65.86306], ["2019-10-17T08:18:53", 16.64318, -65.87213], ["2019-10-17T09:21:56", 16.67269, -65.88446], ["2019-10-17T11:18:48", 16.68549, -65.88654], ["2019-10-17T11:19:43", 16.69897, -65.89039], ["2019-10-17T13:18:48", 16.70102, -65.88757], ["2019-10-17T18:18:59", 16.70519, -65.89005], ["2019-10-17T19:15:57", 16.7275, -65.92122], ["2019-10-17T20:17:56", 16.73632, -65.92679], ["2019-10-17T23:14:44", 16.74777, -65.93091], ["2019-10-18T01:14:44", 16.77627, -65.94401], ["2019-10-18T02:15:57", 16.78228, -65.94598], ["2019-10-18T03:13:25", 16.78553, -65.95062], ["2019-10-18T21:10:34", 16.78865, -65.95523], ["2019-10-18T22:08:21", 16.85642, -66.10675], ["2019-10-19T05:06:23", 16.86273, -66.11315], ["2019-10-19T13:08:05", 16.91919, -66.18246], ["2019-10-19T14:05:30", 16.96869, -66.25223], ["2019-10-19T18:03:27", 16.9739, -66.25766], ["2019-10-19T19:06:58", 16.98457, -66.29434], ["2019-10-24T03:36:48", 16.98674, -66.30743], ["2019-10-24T18:33:57", 16.1831, -67.21677], ["2019-10-25T05:27:03", 16.1098, -67.3555], ["2019-10-25T14:29:02", 16.08063, -67.44394], ["2019-10-26T05:21:35", 16.01031, -67.52646], ["2019-10-27T08:19:11", 15.93223, -67.67349], ["2019-10-28T14:05:44", 15.80885, -67.98157], ["2019-10-30T11:55:01", 15.6271, -68.44247], ["2019-10-30T12:54:30", 15.2948, -69.15851], ["2019-10-30T13:54:30", 15.28611, -69.17446], ["2019-10-31T03:50:29", 15.27328, -69.19394], ["2019-11-01T01:42:32", 15.21002, -69.4679], ["2019-11-01T21:32:11", 15.18867, -69.86252], ["2019-11-02T07:29:45", 15.13252, -70.11133], ["2019-11-02T12:28:45", 15.0935, -70.28345], ["2019-11-02T18:28:58", 15.09651, -70.36053], ["2019-11-03T15:26:00", 15.10114, -70.4469], ["2019-11-07T14:03:28", 15.12935, -70.81444], ["2019-11-07T14:59:46", 16.17912, -72.18289], ["2019-11-08T06:54:33", 16.18734, -72.18463], ["2019-11-16T11:15:59", 16.25529, -72.25314], ["2019-11-17T00:12:06", 16.74147, -73.72009], ["2019-11-17T01:08:29", 16.78928, -73.84668], ["2019-11-17T02:08:29", 16.79, -73.85765], ["2019-11-17T03:07:25", 16.79116, -73.86984], ["2019-11-17T04:07:25", 16.79302, -73.88113], ["2019-11-17T08:06:40", 16.79495, -73.89169], ["2019-11-17T09:06:27", 16.79111, -73.93845], ["2019-11-17T10:05:27", 16.78915, -73.95459], ["2019-11-17T11:05:27", 16.78666, -73.96886], ["2019-11-17T12:05:27", 16.78477, -73.98397], ["2019-11-17T13:05:09", 16.78421, -73.99796], ["2019-11-17T14:05:05", 16.78414, -74.00986], ["2019-11-17T15:05:05", 16.78475, -74.02088], ["2019-11-17T16:04:42", 16.78582, -74.03119], ["2019-11-17T17:04:04", 16.78715, -74.04152], ["2019-11-17T18:03:59", 16.78735, -74.05025], ["2019-11-17T19:03:59", 16.78623, -74.05783], ["2019-11-17T20:03:39", 16.78314, -74.06375], ["2019-11-17T21:03:25", 16.77838, -74.06931], ["2019-11-17T22:02:57", 16.77201, -74.07671], ["2019-11-17T23:02:57", 16.76485, -74.08584], ["2019-11-18T00:02:27", 16.75763, -74.09569], ["2019-11-18T04:01:09", 16.74905, -74.10571], ["2019-11-18T05:00:58", 16.71632, -74.15356], ["2019-11-18T06:00:56", 16.7081, -74.1637], ["2019-11-18T09:59:27", 16.70025, -74.17255], ["2019-11-18T10:58:38", 16.67208, -74.2088], ["2019-11-18T11:58:38", 16.66325, -74.22031], ["2019-11-18T12:58:27", 16.65484, -74.2337], ["2019-11-18T13:57:58", 16.6483, -74.2463], ["2019-11-18T14:57:58", 16.64379, -74.26], ["2019-11-18T16:56:57", 16.64182, -74.27383], ["2019-11-18T17:56:27", 16.63948, -74.29416], ["2019-11-18T18:56:27", 16.64078, -74.3028], ["2019-11-18T19:56:27", 16.64499, -74.30941], ["2019-11-18T20:55:56", 16.64825, -74.31241], ["2019-11-18T21:55:37", 16.64952, -74.31348], ["2019-11-18T22:55:28", 16.64889, -74.31433], ["2019-11-18T23:54:57", 16.64597, -74.31619], ["2019-11-19T00:54:57", 16.64232, -74.32301], ["2019-11-19T01:54:27", 16.6385, -74.33511], ["2019-11-19T02:54:07", 16.63525, -74.34763], ["2019-11-19T03:53:57", 16.63163, -74.35962], ["2019-11-19T05:52:59", 16.62841, -74.37436], ["2019-11-19T07:51:57", 16.62083, -74.40317], ["2019-11-19T08:52:09", 16.60895, -74.42834], ["2019-11-19T09:51:57", 16.60026, -74.43845], ["2019-11-19T10:51:25", 16.5887, -74.44861], ["2019-11-19T11:50:56", 16.57731, -74.45834], ["2019-11-19T12:50:56", 16.56508, -74.46764], ["2019-11-19T16:49:59", 16.55293, -74.47742], ["2019-11-19T17:49:29", 16.5072, -74.54134], ["2019-11-19T18:49:01", 16.49613, -74.56091], ["2019-11-19T22:49:57", 16.48451, -74.58157], ["2019-11-19T23:46:41", 16.43556, -74.6534], ["2019-11-20T00:46:41", 16.4237, -74.67017], ["2019-11-20T01:46:41", 16.4107, -74.68768], ["2019-11-20T12:43:57", 16.39843, -74.70416], ["2019-11-20T13:44:29", 16.26542, -74.92212], ["2019-11-20T14:45:26", 16.25221, -74.94195], ["2019-11-20T15:43:01", 16.24054, -74.96338], ["2019-11-20T20:41:41", 16.22969, -74.98547], ["2019-11-20T23:40:30", 16.15623, -75.12088], ["2019-11-21T03:39:15", 16.10205, -75.21362], ["2019-11-21T10:38:38", 16.04255, -75.32358], ["2019-11-21T11:38:29", 15.98282, -75.47729], ["2019-11-21T16:37:41", 15.97221, -75.4975], ["2019-11-21T17:39:29", 15.93283, -75.61865], ["2019-11-22T03:32:52", 15.92587, -75.64514], ["2019-11-23T03:27:07", 15.88772, -75.87653], ["2019-11-24T00:23:06", 15.81866, -76.41583], ["2019-11-24T01:22:11", 15.73166, -76.69922], ["2019-11-24T02:22:11", 15.73341, -76.71243], ["2019-11-24T12:19:06", 15.73517, -76.7229], ["2019-11-25T10:15:32", 15.75659, -76.8541], ["2019-11-25T11:12:17", 15.70944, -77.18326], ["2019-11-25T12:12:17", 15.70435, -77.19802], ["2019-11-25T13:12:17", 15.69821, -77.21484], ["2019-11-26T01:14:06", 15.69332, -77.22995], ["2019-12-02T10:34:33", 15.61604, -77.38137], ["2019-12-02T11:37:05", 14.11707, -77.98322], ["2019-12-03T09:30:20", 14.11124, -77.98865], ["2019-12-07T11:48:57", 14.00099, -78.01035], ["2019-12-11T10:28:29", 13.56718, -78.20565], ["2019-12-11T11:29:30", 13.27992, -78.74677], ["2019-12-12T21:18:18", 13.27877, -78.7569], ["2019-12-14T05:09:00", 13.22143, -79.07434], ["2019-12-14T10:05:26", 13.14781, -79.42035], ["2019-12-14T18:02:20", 13.12742, -79.45157], ["2019-12-14T19:01:43", 13.09772, -79.51096], ["2019-12-14T20:01:43", 13.09575, -79.52226], ["2019-12-14T21:02:30", 13.09532, -79.5329], ["2019-12-14T22:02:30", 13.09549, -79.54497], ["2019-12-14T23:01:56", 13.0957, -79.5562], ["2019-12-15T05:59:03", 13.09627, -79.56607], ["2019-12-15T07:00:01", 13.08233, -79.62475], ["2019-12-15T08:00:59", 13.08207, -79.63361], ["2019-12-15T21:54:26", 13.08121, -79.64145], ["2019-12-16T04:55:12", 13.08407, -79.76837], ["2019-12-16T08:51:11", 13.07797, -79.84161], ["2019-12-16T14:49:11", 13.07139, -79.87701], ["2019-12-17T05:48:59", 13.07229, -79.93295], ["2019-12-17T09:44:08", 13.11035, -80.10388], ["2019-12-17T10:46:06", 13.12406, -80.14767], ["2019-12-17T21:43:51", 13.12809, -80.15851], ["2019-12-18T02:40:15", 13.16174, -80.28397], ["2019-12-19T08:32:32", 13.15604, -80.34152], ["2019-12-19T15:30:29", 13.15676, -80.67743], ["2019-12-20T15:25:32", 13.13601, -80.75664], ["2019-12-24T06:59:37", 13.18248, -81.06287], ["2019-12-24T07:57:02", 12.81042, -81.92819], ["2019-12-25T04:52:54", 12.80068, -81.93607], ["2019-12-25T09:50:59", 12.48567, -82.0607], ["2019-12-27T19:38:29", 12.38731, -82.08835], ["2019-12-28T21:33:12", 11.45671, -82.67062], ["2019-12-29T02:34:59", 11.21686, -82.86118], ["2019-12-29T03:31:57", 11.18536, -82.88919], ["2019-12-29T09:31:07", 11.17965, -82.8923], ["2019-12-30T04:27:01", 11.13297, -82.91486], ["2019-12-31T12:18:30", 11.0579, -83.01611], ["2019-12-31T14:15:31", 10.67769, -83.01345], ["2019-12-31T15:15:16", 10.66377, -83.00451], ["2019-12-31T16:15:31", 10.65646, -83.00226], ["2020-01-01T03:13:05", 10.64905, -83.00073], ["2020-01-01T07:11:09", 10.61674, -83.04546], ["2020-01-01T08:11:09", 10.56433, -83.056], ["2020-01-01T09:11:04", 10.55017, -83.05426], ["2020-01-01T10:09:32", 10.53421, -83.04532], ["2020-01-01T11:09:32", 10.51638, -83.0364], ["2020-01-01T12:09:32", 10.50853, -83.02764], ["2020-01-01T13:09:39", 10.50548, -83.01931], ["2020-01-01T14:09:11", 10.50307, -83.01219], ["2020-01-01T15:09:39", 10.50022, -83.00757], ["2020-01-01T16:09:04", 10.49847, -83.00275], ["2020-01-01T17:09:04", 10.49702, -83.00126], ["2020-01-01T18:09:04", 10.49307, -83.00185], ["2020-01-01T19:10:28", 10.48629, -83.00503], ["2020-01-02T01:07:07", 10.47488, -83.01169], ["2020-01-02T05:08:14", 10.36477, -83.02829], ["2020-01-02T07:06:05", 10.32534, -82.98056], ["2020-01-02T08:06:05", 10.31102, -82.95677], ["2020-01-02T09:06:05", 10.3057, -82.94597], ["2020-01-02T10:07:36", 10.29961, -82.93756], ["2020-01-02T12:03:47", 10.29358, -82.93048], ["2020-01-02T13:03:47", 10.28871, -82.91934], ["2020-01-02T14:03:47", 10.28639, -82.91659], ["2020-01-02T16:04:29", 10.28334, -82.91513], ["2020-01-03T01:02:26", 10.26209, -82.91643], ["2020-01-03T02:01:41", 10.14898, -82.85988], ["2020-01-03T03:02:27", 10.14205, -82.84958], ["2020-01-03T04:00:58", 10.13524, -82.83649], ["2020-01-03T05:00:29", 10.12801, -82.82431], ["2020-01-03T05:59:28", 10.1204, -82.81116], ["2020-01-03T06:59:28", 10.1128, -82.79517], ["2020-01-03T07:59:28", 10.1055, -82.78315], ["2020-01-03T08:58:40", 10.09679, -82.77216], ["2020-01-03T09:58:40", 10.08606, -82.76356], ["2020-01-03T10:58:40", 10.07692, -82.75111], ["2020-01-03T11:58:34", 10.06722, -82.74261], ["2020-01-03T12:58:27", 10.05562, -82.73178], ["2020-01-03T13:57:59", 10.04454, -82.72018], ["2020-01-03T14:57:59", 10.03333, -82.70984], ["2020-01-03T15:57:27", 10.02247, -82.69799], ["2020-01-03T16:57:28", 10.01194, -82.68465], ["2020-01-03T17:56:40", 9.99907, -82.67426], ["2020-01-03T18:56:30", 9.98457, -82.65952], ["2020-01-03T19:55:28", 9.97181, -82.64117], ["2020-01-03T20:55:28", 9.96152, -82.62168], ["2020-01-03T21:55:28", 9.95298, -82.6022], ["2020-01-03T22:55:27", 9.94457, -82.58521], ["2020-01-03T23:55:32", 9.93645, -82.56934], ["2020-01-04T00:54:38", 9.92929, -82.55609], ["2020-01-04T01:54:38", 9.9237, -82.54431], ["2020-01-04T02:54:38", 9.91975, -82.534], ["2020-01-04T03:54:26", 9.91639, -82.52637], ["2020-01-04T04:53:56", 9.91259, -82.52094], ["2020-01-04T05:53:56", 9.9071, -82.51607], ["2020-01-04T06:53:28", 9.89994, -82.5104], ["2020-01-04T07:53:28", 9.89258, -82.50433], ["2020-01-04T08:52:58", 9.88524, -82.49686], ["2020-01-04T09:52:59", 9.87653, -82.48712], ["2020-01-04T13:52:39", 9.86572, -82.47592], ["2020-01-04T14:54:01", 9.81847, -82.41544], ["2020-01-04T17:51:39", 9.80904, -82.39661], ["2020-01-04T18:51:39", 9.78997, -82.34175], ["2020-01-04T19:51:39", 9.77887, -82.32208], ["2020-01-04T20:50:58", 9.76864, -82.30167], ["2020-01-04T21:50:58", 9.75916, -82.28143], ["2020-01-04T22:50:27", 9.75282, -82.26134], ["2020-01-04T23:50:27", 9.74785, -82.24124], ["2020-01-05T00:49:59", 9.74283, -82.22382], ["2020-01-05T01:49:38", 9.73861, -82.2069], ["2020-01-05T05:48:28", 9.73465, -82.19049], ["2020-01-05T06:47:58", 9.712, -82.13406], ["2020-01-05T07:47:39", 9.70485, -82.12157], ["2020-01-05T08:47:39", 9.69807, -82.1066], ["2020-01-05T09:47:39", 9.69039, -82.09148], ["2020-01-05T10:47:58", 9.68258, -82.07586], ["2020-01-05T11:47:31", 9.67563, -82.05929], ["2020-01-05T12:45:58", 9.669, -82.0425], ["2020-01-05T13:45:58", 9.66198, -82.02542], ["2020-01-05T14:45:58", 9.6546, -82.00843], ["2020-01-05T15:44:57", 9.64683, -81.99023], ["2020-01-05T16:44:57", 9.64133, -81.97221], ["2020-01-05T17:44:57", 9.63927, -81.95341], ["2020-01-05T18:44:00", 9.64086, -81.93899], ["2020-01-05T19:44:00", 9.64494, -81.92449], ["2020-01-05T20:44:00", 9.64828, -81.90989], ["2020-01-05T21:43:57", 9.64546, -81.89874], ["2020-01-05T22:44:29", 9.64227, -81.88974], ["2020-01-05T23:43:26", 9.63602, -81.87954], ["2020-01-06T00:43:26", 9.62951, -81.86803], ["2020-01-06T01:43:26", 9.6232, -81.85534], ["2020-01-06T02:42:58", 9.61783, -81.84014], ["2020-01-06T03:42:30", 9.61214, -81.82239], ["2020-01-06T04:42:30", 9.61148, -81.8008], ["2020-01-06T05:41:58", 9.61337, -81.77907], ["2020-01-06T06:41:58", 9.61469, -81.75784], ["2020-01-06T07:41:40", 9.61543, -81.73999], ["2020-01-06T08:41:16", 9.61602, -81.72363], ["2020-01-06T09:42:23", 9.61708, -81.70731], ["2020-01-06T10:42:23", 9.61757, -81.69186], ["2020-01-06T11:40:59", 9.61796, -81.67804], ["2020-01-06T12:40:58", 9.61856, -81.66498], ["2020-01-06T13:40:40", 9.62088, -81.65036], ["2020-01-06T14:40:00", 9.62442, -81.63263], ["2020-01-06T15:40:00", 9.62781, -81.61278], ["2020-01-06T16:40:00", 9.62811, -81.59639], ["2020-01-06T17:39:42", 9.62618, -81.58163], ["2020-01-06T18:38:41", 9.62409, -81.56665], ["2020-01-06T19:38:41", 9.62217, -81.55202], ["2020-01-06T23:37:04", 9.61886, -81.53897], ["2020-01-07T00:38:55", 9.60842, -81.46381], ["2020-01-07T01:36:21", 9.60549, -81.44199], ["2020-01-07T08:34:19", 9.60408, -81.42086], ["2020-01-07T14:32:21", 9.63542, -81.29056], ["2020-01-07T15:33:59", 9.67074, -81.21332], ["2020-01-08T06:28:08", 9.67456, -81.2012], ["2020-01-08T11:29:30", 9.7103, -80.97214], ["2020-01-08T12:26:31", 9.74261, -80.91022], ["2020-01-08T14:29:28", 9.74881, -80.90219], ["2020-01-08T15:25:44", 9.76038, -80.8837], ["2020-01-08T16:24:55", 9.76618, -80.875], ["2020-01-08T17:24:55", 9.77393, -80.86546], ["2020-01-09T01:21:57", 9.7805, -80.85834], ["2020-01-09T06:24:00", 9.83502, -80.7968], ["2020-01-10T13:10:16", 9.87015, -80.74481], ["2020-01-10T14:06:43", 10.15899, -80.67169], ["2020-01-10T15:07:58", 10.17796, -80.67737], ["2020-01-10T16:06:19", 10.19739, -80.68338], ["2020-01-10T19:06:47", 10.21574, -80.6897], ["2020-01-10T20:05:25", 10.27507, -80.70959], ["2020-01-11T00:07:47", 10.29497, -80.71613], ["2020-01-11T01:03:39", 10.36901, -80.74112], ["2020-01-11T02:03:39", 10.38369, -80.74557], ["2020-01-11T15:01:23", 10.39751, -80.74823], ["2020-01-11T18:58:07", 10.5751, -80.79428], ["2020-01-11T19:57:28", 10.63906, -80.81253], ["2020-01-11T20:57:28", 10.65781, -80.81707], ["2020-01-12T01:59:41", 10.67571, -80.82025], ["2020-01-12T05:58:58", 10.77076, -80.82919], ["2020-01-12T23:54:00", 10.84117, -80.82983], ["2020-01-13T08:50:45", 11.11696, -80.91797], ["2020-01-13T11:53:13", 11.25049, -80.99377], ["2020-01-13T12:50:07", 11.29701, -81.02361], ["2020-01-13T14:49:28", 11.31276, -81.03461], ["2020-01-13T20:50:37", 11.34588, -81.05517], ["2020-01-15T06:38:24", 11.45792, -81.12213], ["2020-01-15T13:38:56", 11.95755, -81.5817], ["2020-01-15T17:37:12", 12.01853, -81.68707], ["2020-01-15T18:34:25", 12.05302, -81.74606], ["2020-01-15T22:35:04", 12.06172, -81.7587], ["2020-01-16T05:34:07", 12.08653, -81.80585], ["2020-01-16T20:28:41", 12.1046, -81.87564], ["2020-01-17T02:28:13", 12.2006, -82.09923], ["2020-01-17T03:24:54", 12.22614, -82.1879], ["2020-01-17T07:26:13", 12.22729, -82.20343], ["2020-01-17T11:22:20", 12.22642, -82.2739], ["2020-01-17T15:20:43", 12.22367, -82.34329], ["2020-01-17T18:19:42", 12.21043, -82.42041], ["2020-01-17T22:21:00", 12.19493, -82.49069], ["2020-01-17T23:18:24", 12.14796, -82.59988], ["2020-01-18T01:17:47", 12.1299, -82.62289], ["2020-01-18T02:17:47", 12.08549, -82.66804], ["2020-01-18T05:16:26", 12.06244, -82.68735], ["2020-01-18T06:18:38", 11.99014, -82.75033], ["2020-01-18T07:16:26", 11.96759, -82.77567], ["2020-01-18T08:15:34", 11.94676, -82.80038], ["2020-01-18T09:15:34", 11.92407, -82.82671], ["2020-01-18T11:14:40", 11.90248, -82.85083], ["2020-01-18T12:14:16", 11.85651, -82.89987], ["2020-01-18T13:14:16", 11.83018, -82.92428], ["2020-01-18T14:15:57", 11.80447, -82.94522], ["2020-01-18T19:16:25", 11.77939, -82.97037], ["2020-01-20T08:09:45", 11.64732, -83.08032], ["2020-01-20T12:05:12", 10.81728, -83.24185], ["2020-01-21T08:58:58", 10.75971, -83.23547], ["2020-01-22T09:52:22", 10.38368, -83.01785], ["2020-01-23T04:48:33", 9.88632, -82.30023], ["2020-01-24T03:40:40", 9.49076, -81.7157], ["2020-01-24T04:42:15", 9.38477, -81.38155], ["2020-01-24T05:43:08", 9.39367, -81.38177], ["2020-01-24T06:38:58", 9.39978, -81.38181], ["2020-01-24T07:38:58", 9.40363, -81.38158], ["2020-01-24T08:38:58", 9.40642, -81.38132], ["2020-01-24T09:39:11", 9.40907, -81.38088], ["2020-01-24T10:38:43", 9.41346, -81.38092], ["2020-01-24T11:38:28", 9.41867, -81.38181], ["2020-01-24T12:38:28", 9.42315, -81.3831], ["2020-01-24T13:37:33", 9.42861, -81.38361], ["2020-01-24T14:37:33", 9.43629, -81.38453], ["2020-01-24T15:37:33", 9.44205, -81.38599], ["2020-01-24T16:38:59", 9.45072, -81.38736], ["2020-01-24T17:38:59", 9.45808, -81.3886], ["2020-01-24T18:38:59", 9.46435, -81.39066], ["2020-01-24T19:35:41", 9.46838, -81.39203], ["2020-01-24T23:35:08", 9.47096, -81.39444], ["2020-01-25T00:36:59", 9.47481, -81.40197], ["2020-01-25T01:33:41", 9.47541, -81.40445], ["2020-01-25T03:33:12", 9.47533, -81.4064], ["2020-01-25T04:34:29", 9.47434, -81.40593], ["2020-01-25T05:33:12", 9.47003, -81.40201], ["2020-01-25T06:32:59", 9.46517, -81.39975], ["2020-01-25T07:31:58", 9.45956, -81.39767], ["2020-01-25T08:31:58", 9.45243, -81.39472], ["2020-01-25T09:31:58", 9.44265, -81.39069], ["2020-01-25T10:32:29", 9.43085, -81.38596], ["2020-01-25T14:30:01", 9.41632, -81.37811], ["2020-01-25T15:30:47", 9.3424, -81.32932], ["2020-01-25T16:30:57", 9.31945, -81.31604], ["2020-01-25T17:28:38", 9.29629, -81.30428], ["2020-01-25T18:28:09", 9.27743, -81.29327], ["2020-01-25T19:28:09", 9.26774, -81.28005], ["2020-01-25T20:27:56", 9.25941, -81.26743], ["2020-01-25T21:27:56", 9.25101, -81.255], ["2020-01-26T01:26:38", 9.24353, -81.24298], ["2020-01-26T02:26:10", 9.23418, -81.20532], ["2020-01-26T06:25:29", 9.23864, -81.19669], ["2020-01-26T07:25:30", 9.26303, -81.14639], ["2020-01-26T17:21:10", 9.27366, -81.13123], ["2020-01-26T22:21:58", 9.35784, -80.9325], ["2020-01-26T23:19:11", 9.37429, -80.84863], ["2020-01-27T00:18:40", 9.37721, -80.836], ["2020-01-27T01:18:40", 9.37941, -80.82174], ["2020-01-27T02:18:40", 9.38083, -80.80785], ["2020-01-27T03:18:31", 9.38147, -80.79343], ["2020-01-27T04:18:10", 9.38188, -80.77896], ["2020-01-27T06:16:56", 9.38144, -80.76465], ["2020-01-27T07:16:56", 9.37867, -80.73504], ["2020-01-27T08:16:56", 9.37665, -80.71968], ["2020-01-27T09:16:57", 9.37456, -80.7038], ["2020-01-27T10:16:25", 9.37179, -80.68759], ["2020-01-27T11:16:25", 9.36927, -80.67148], ["2020-01-27T12:16:26", 9.36618, -80.65594], ["2020-01-27T13:16:10", 9.36234, -80.64108], ["2020-01-27T14:16:08", 9.35737, -80.62726], ["2020-01-27T15:15:59", 9.35163, -80.61342], ["2020-01-27T16:16:55", 9.3454, -80.59932], ["2020-01-27T17:16:55", 9.33782, -80.5855], ["2020-01-27T18:14:31", 9.33001, -80.57074], ["2020-01-27T19:15:40", 9.3225, -80.56216], ["2020-01-27T22:16:48", 9.32159, -80.55588], ["2020-01-27T23:13:26", 9.31893, -80.53377], ["2020-01-28T00:16:48", 9.3157, -80.52392], ["2020-01-28T06:11:58", 9.31039, -80.51361], ["2020-01-28T08:14:28", 9.28917, -80.48535], ["2020-01-28T09:10:55", 9.2992, -80.46393], ["2020-01-28T10:10:55", 9.30424, -80.45286], ["2020-01-28T11:10:46", 9.31058, -80.44144], ["2020-01-28T12:10:28", 9.3175, -80.43039], ["2020-01-28T13:09:58", 9.32352, -80.41995], ["2020-01-28T14:09:58", 9.3305, -80.40835], ["2020-01-28T15:09:25", 9.33685, -80.39453], ["2020-01-28T16:09:29", 9.34249, -80.38055], ["2020-01-28T17:09:05", 9.34811, -80.36801], ["2020-01-28T18:08:35", 9.35374, -80.35654], ["2020-01-28T19:08:35", 9.35781, -80.34509], ["2020-01-28T20:08:32", 9.36154, -80.33316], ["2020-01-28T21:07:59", 9.36151, -80.32031], ["2020-01-28T22:08:06", 9.36023, -80.30933], ["2020-01-28T23:06:56", 9.35711, -80.29861], ["2020-01-29T00:06:56", 9.35594, -80.28804], ["2020-01-29T01:06:57", 9.35431, -80.27594], ["2020-01-29T02:06:56", 9.35263, -80.26389], ["2020-01-29T03:06:28", 9.35033, -80.25272], ["2020-01-29T04:05:56", 9.3477, -80.24283], ["2020-01-29T05:05:56", 9.3454, -80.23287], ["2020-01-29T06:05:56", 9.34317, -80.22351], ["2020-01-29T07:05:28", 9.34021, -80.21527], ["2020-01-29T08:04:39", 9.33735, -80.20804], ["2020-01-29T09:04:59", 9.3343, -80.20247], ["2020-01-29T10:03:57", 9.33175, -80.19864], ["2020-01-29T11:03:57", 9.33029, -80.19687], ["2020-01-29T12:03:28", 9.32947, -80.1955], ["2020-01-29T13:03:26", 9.33009, -80.19437], ["2020-01-29T14:04:28", 9.33197, -80.19351], ["2020-01-29T15:02:04", 9.33338, -80.19403], ["2020-01-29T16:02:04", 9.33445, -80.19589], ["2020-01-29T17:02:04", 9.33479, -80.19898], ["2020-01-29T18:02:45", 9.33573, -80.20276], ["2020-01-29T19:02:56", 9.33657, -80.2085], ["2020-01-29T20:02:56", 9.33812, -80.21729], ["2020-01-29T21:02:56", 9.33888, -80.2269], ["2020-01-29T21:59:42", 9.33888, -80.2384], ["2020-01-30T05:00:26", 9.33863, -80.24814], ["2020-01-30T05:57:53", 9.32624, -80.31979], ["2020-01-30T06:56:21", 9.32483, -80.32729], ["2020-01-30T07:56:21", 9.32353, -80.33581], ["2020-01-30T08:56:21", 9.32306, -80.34414], ["2020-01-31T04:52:30", 9.32203, -80.35229], ["2020-02-01T02:46:12", 9.36661, -80.53088], ["2020-02-01T10:40:58", 9.28649, -80.65933], ["2020-02-04T01:18:43", 9.26768, -80.71664], ["2020-02-04T03:16:43", 8.92489, -80.85645], ["2020-02-04T04:18:29", 8.92589, -80.84106], ["2020-02-04T05:18:29", 8.9284, -80.83077], ["2020-02-04T06:18:29", 8.93282, -80.82047], ["2020-02-04T07:15:35", 8.94037, -80.80914], ["2020-02-04T08:15:35", 8.94886, -80.79965], ["2020-02-04T09:15:35", 8.95585, -80.78429], ["2020-02-04T10:15:06", 8.95994, -80.77124], ["2020-02-04T13:16:36", 8.96449, -80.76257], ["2020-02-04T21:40:09", 8.96489, -80.76147], ["2020-02-05T01:11:01", 8.94968, -80.76873], ["2020-02-05T01:46:50", 8.93627, -80.76412], ["2020-02-05T03:37:38", 8.93576, -80.76254], ["2020-02-05T04:10:14", 8.94973, -80.76855]], "drifter_19": [["2019-08-08T12:05:00", 11.83018, -56.09376], ["2019-08-08T12:21:18", 11.83195, -56.09631], ["2019-08-08T17:31:43", 11.88855, -56.1521], ["2019-08-08T18:19:29", 11.90418, -56.16885], ["2019-08-08T20:19:29", 11.91208, -56.17563], ["2019-08-09T00:18:26", 11.92155, -56.20279], ["2019-08-09T01:15:17", 11.92072, -56.20929], ["2019-08-09T02:14:59", 11.91625, -56.21873], ["2019-08-09T03:14:59", 11.91071, -56.22843], ["2019-08-09T04:14:59", 11.90552, -56.23615], ["2019-08-09T21:07:24", 11.84174, -56.45032], ["2019-08-09T22:10:53", 11.83987, -56.46838], ["2019-08-10T02:06:56", 11.82834, -56.53922], ["2019-08-10T09:02:28", 11.86087, -56.65115], ["2019-08-10T10:02:59", 11.86492, -56.66296], ["2019-08-10T17:24:26", 11.91555, -56.7536], ["2019-08-10T18:00:07", 11.92303, -56.75891], ["2019-08-11T01:54:44", 11.98557, -56.80002], ["2019-08-11T05:52:30", 12.00106, -56.81203], ["2019-08-11T06:56:02", 12.00518, -56.81619], ["2019-08-11T07:52:30", 12.00973, -56.8201], ["2019-08-12T13:40:05", 12.08983, -57.10327], ["2019-08-12T18:39:28", 12.13155, -57.16214], ["2019-08-13T01:38:33", 12.21735, -57.19965], ["2019-08-13T02:36:59", 12.22656, -57.20238], ["2019-08-13T03:36:59", 12.23682, -57.20667], ["2019-08-13T04:36:59", 12.24725, -57.20993], ["2019-08-13T09:32:14", 12.29875, -57.21899], ["2019-08-13T14:33:00", 12.3379, -57.20197], ["2019-08-13T18:30:43", 12.34833, -57.19711], ["2019-08-13T19:28:33", 12.35059, -57.19653], ["2019-08-13T23:30:29", 12.3495, -57.20026], ["2019-08-14T00:27:57", 12.34864, -57.20248], ["2019-08-14T01:27:57", 12.34589, -57.2048], ["2019-08-14T02:27:32", 12.34311, -57.20892], ["2019-08-14T06:24:28", 12.32998, -57.22986], ["2019-08-14T07:24:59", 12.32411, -57.2424], ["2019-08-14T09:24:59", 12.32162, -57.24841], ["2019-08-14T10:22:37", 12.31934, -57.25415], ["2019-08-14T11:25:44", 12.31676, -57.26151], ["2019-08-14T13:23:27", 12.31481, -57.27775], ["2019-08-14T14:23:27", 12.31434, -57.28702], ["2019-08-14T15:23:27", 12.31383, -57.29758], ["2019-08-14T17:03:39", 12.31383, -57.3175], ["2019-08-14T22:17:29", 12.32232, -57.37726], ["2019-08-15T02:18:27", 12.32564, -57.41867], ["2019-08-15T17:10:31", 12.40669, -57.60095], ["2019-08-15T21:06:04", 12.44545, -57.64835], ["2019-08-15T22:07:59", 12.45615, -57.65922], ["2019-08-15T23:07:59", 12.46525, -57.66875], ["2019-08-16T00:07:59", 12.47491, -57.67999], ["2019-08-16T01:04:22", 12.48412, -57.68912], ["2019-08-16T02:06:10", 12.49242, -57.69706], ["2019-08-16T03:06:10", 12.4983, -57.70333], ["2019-08-16T04:06:10", 12.5056, -57.71011], ["2019-08-16T05:04:19", 12.51124, -57.71518], ["2019-08-16T07:04:23", 12.51765, -57.72504], ["2019-08-16T13:02:08", 12.53229, -57.75995], ["2019-08-16T13:59:30", 12.5347, -57.76599], ["2019-08-16T14:59:30", 12.53667, -57.77191], ["2019-08-16T15:59:30", 12.53796, -57.78058], ["2019-08-17T02:53:00", 12.60004, -57.89255], ["2019-08-17T12:50:01", 12.67488, -57.99365], ["2019-08-17T13:50:29", 12.68268, -58.0051], ["2019-08-17T18:46:47", 12.6942, -58.06113], ["2019-08-17T20:47:26", 12.70073, -58.09241], ["2019-08-17T22:46:32", 12.7113, -58.11575], ["2019-08-17T23:44:09", 12.71635, -58.12432], ["2019-08-18T00:44:09", 12.72, -58.13196], ["2019-08-18T01:47:08", 12.72299, -58.14127], ["2019-08-18T02:43:32", 12.72612, -58.15042], ["2019-08-18T04:45:41", 12.7281, -58.16968], ["2019-08-18T05:46:16", 12.72578, -58.17987], ["2019-08-18T06:43:26", 12.72414, -58.19144], ["2019-08-18T07:43:26", 12.72251, -58.20243], ["2019-08-18T08:43:26", 12.72277, -58.21213], ["2019-08-18T11:40:07", 12.73607, -58.24707], ["2019-08-18T12:43:00", 12.7431, -58.25967], ["2019-08-18T15:38:45", 12.76303, -58.29385], ["2019-08-18T19:36:50", 12.77861, -58.33871], ["2019-08-18T23:35:14", 12.80393, -58.3952], ["2019-08-19T00:35:47", 12.81478, -58.409], ["2019-08-19T01:36:36", 12.82447, -58.42124], ["2019-08-19T02:36:36", 12.83348, -58.43274], ["2019-08-19T03:34:52", 12.84547, -58.44415], ["2019-08-19T04:33:28", 12.87282, -58.47073], ["2019-08-19T06:33:28", 12.88621, -58.48309], ["2019-08-19T07:34:29", 12.90425, -58.49551], ["2019-08-19T08:32:22", 12.92064, -58.50676], ["2019-08-19T09:32:22", 12.93678, -58.51826], ["2019-08-19T10:32:22", 12.95313, -58.5289], ["2019-08-19T16:28:07", 13.04994, -58.5921], ["2019-08-19T17:28:29", 13.06357, -58.58948], ["2019-08-19T18:27:26", 13.07153, -58.59024], ["2019-08-19T19:27:26", 13.07895, -58.59384], ["2019-08-19T20:27:34", 13.08799, -58.59628], ["2019-08-19T21:25:29", 13.09621, -58.59866], ["2019-08-19T22:25:31", 13.10134, -58.6009], ["2019-08-19T23:25:31", 13.104, -58.6033], ["2019-08-20T00:24:58", 13.10175, -58.6087], ["2019-08-20T02:22:19", 13.0945, -58.62243], ["2019-08-20T03:24:31", 13.08897, -58.62079], ["2019-08-20T04:22:19", 13.08604, -58.62097], ["2019-08-20T05:23:26", 13.08124, -58.62335], ["2019-08-20T06:22:37", 13.0781, -58.62839], ["2019-08-20T08:23:27", 13.07781, -58.6393], ["2019-08-20T09:21:28", 13.08034, -58.64758], ["2019-08-20T10:23:27", 13.07922, -58.66016], ["2019-08-20T12:19:39", 13.08129, -58.68488], ["2019-08-20T13:18:23", 13.08227, -58.69186], ["2019-08-20T14:18:23", 13.08051, -58.70087], ["2019-08-20T15:17:58", 13.07877, -58.71456], ["2019-08-20T16:17:58", 13.07615, -58.72992], ["2019-08-20T16:50:46", 13.0764, -58.73993], ["2019-08-20T17:17:30", 13.07716, -58.74994], ["2019-08-20T18:17:11", 13.0826, -58.77288], ["2019-08-20T19:17:11", 13.09063, -58.78515], ["2019-08-20T20:17:11", 13.09728, -58.78824], ["2019-08-20T21:16:59", 13.10237, -58.793], ["2019-08-21T01:15:59", 13.11288, -58.83621], ["2019-08-21T03:15:32", 13.11652, -58.85385], ["2019-08-21T04:13:26", 13.12085, -58.86119], ["2019-08-21T05:13:26", 13.12643, -58.87158], ["2019-08-21T06:12:54", 13.13298, -58.88217], ["2019-08-21T07:12:54", 13.13993, -58.88629], ["2019-08-21T08:12:08", 13.14642, -58.88855], ["2019-08-21T10:11:36", 13.15765, -58.89902], ["2019-08-21T11:11:36", 13.16203, -58.90194], ["2019-08-21T12:11:36", 13.16525, -58.90503], ["2019-08-21T14:08:56", 13.17025, -58.91928], ["2019-08-21T14:50:10", 13.18364, -58.93778], ["2019-08-21T15:50:10", 13.18965, -58.94216], ["2019-08-21T16:50:10", 13.19119, -58.94345], ["2019-08-21T17:07:30", 13.19477, -58.94595], ["2019-08-21T18:07:30", 13.21116, -58.95642], ["2019-08-21T19:06:28", 13.22965, -58.96329], ["2019-08-21T20:06:30", 13.24327, -58.96579], ["2019-08-21T21:07:48", 13.2521, -58.96529], ["2019-08-21T22:07:48", 13.25734, -58.96375], ["2019-08-21T23:07:48", 13.26215, -58.96564], ["2019-08-22T01:05:03", 13.27199, -58.97722], ["2019-08-22T02:05:03", 13.28023, -58.97928], ["2019-08-22T03:05:03", 13.29074, -58.98151], ["2019-08-22T12:58:22", 13.34815, -59.02417], ["2019-08-22T14:58:36", 13.37416, -59.03574], ["2019-08-22T15:50:32", 13.39532, -59.04101], ["2019-08-22T16:50:32", 13.39699, -59.04135], ["2019-08-22T16:57:54", 13.39828, -59.04187], ["2019-08-22T22:56:11", 13.4495, -59.08786], ["2019-08-23T01:55:16", 13.47551, -59.1067], ["2019-08-23T03:55:16", 13.4819, -59.11176], ["2019-08-23T04:56:01", 13.4845, -59.12128], ["2019-08-23T05:52:45", 13.48436, -59.12684], ["2019-08-23T06:52:45", 13.48385, -59.13285], ["2019-08-23T07:52:45", 13.48055, -59.14066], ["2019-08-23T08:50:35", 13.47725, -59.15189], ["2019-08-23T10:52:29", 13.48079, -59.19915], ["2019-08-23T12:52:29", 13.48036, -59.21323], ["2019-08-23T13:47:56", 13.48721, -59.2303], ["2019-08-23T14:51:10", 13.49454, -59.24789], ["2019-08-23T15:47:56", 13.50318, -59.26129], ["2019-08-23T16:47:34", 13.51375, -59.27451], ["2019-08-23T17:48:24", 13.52391, -59.28732], ["2019-08-23T18:47:31", 13.53656, -59.30059], ["2019-08-23T19:47:31", 13.55154, -59.31201], ["2019-08-23T21:46:41", 13.57639, -59.32324], ["2019-08-23T22:44:47", 13.58717, -59.32852], ["2019-08-23T23:44:47", 13.59721, -59.33264], ["2019-08-24T04:43:11", 13.64426, -59.34622], ["2019-08-24T10:39:41", 13.65756, -59.36417], ["2019-08-24T20:35:30", 13.70444, -59.45786], ["2019-08-24T21:36:44", 13.70997, -59.46609], ["2019-08-25T00:33:40", 13.7188, -59.48746], ["2019-08-25T02:36:18", 13.72248, -59.5051], ["2019-08-25T06:31:28", 13.72967, -59.53546], ["2019-08-25T09:31:58", 13.72835, -59.55634], ["2019-08-25T16:28:02", 13.72429, -59.59964], ["2019-08-25T17:28:31", 13.73024, -59.60703], ["2019-08-25T18:25:14", 13.73564, -59.61419], ["2019-08-25T19:25:14", 13.74191, -59.62217], ["2019-08-25T20:25:14", 13.74444, -59.62878], ["2019-08-26T01:25:31", 13.75375, -59.66556], ["2019-08-26T02:22:53", 13.75468, -59.67575], ["2019-08-26T04:24:47", 13.75891, -59.70151], ["2019-08-26T05:22:13", 13.76305, -59.71304], ["2019-08-26T11:19:02", 13.78734, -59.78149], ["2019-08-26T15:20:06", 13.78783, -59.81213], ["2019-08-26T19:18:59", 13.79588, -59.84549], ["2019-08-26T20:15:26", 13.8031, -59.85699], ["2019-08-26T21:15:44", 13.81033, -59.87123], ["2019-08-26T22:15:44", 13.81531, -59.88651], ["2019-08-26T23:14:57", 13.81938, -59.90314], ["2019-08-27T00:14:27", 13.82533, -59.91904], ["2019-08-27T01:15:59", 13.83359, -59.93365], ["2019-08-27T02:15:59", 13.84204, -59.94687], ["2019-08-27T07:12:34", 13.87596, -60.0253], ["2019-08-27T14:10:44", 14.04221, -60.10648], ["2019-08-27T22:07:28", 14.26222, -60.10312], ["2019-08-28T01:05:20", 14.30996, -60.07528], ["2019-08-28T02:05:20", 14.32043, -60.06635], ["2019-08-28T04:05:31", 14.32963, -60.05321], ["2019-08-28T05:05:31", 14.33212, -60.04952], ["2019-08-28T06:05:31", 14.33319, -60.04669], ["2019-08-28T07:02:28", 14.33227, -60.04511], ["2019-08-28T08:02:28", 14.32944, -60.04502], ["2019-08-28T09:02:28", 14.32493, -60.04828], ["2019-08-28T15:00:30", 14.29186, -60.08316], ["2019-08-28T19:59:30", 14.27476, -60.17117], ["2019-08-28T20:56:31", 14.27303, -60.19458], ["2019-08-28T21:58:00", 14.27202, -60.21711], ["2019-08-28T22:55:42", 14.27302, -60.23871], ["2019-08-28T23:58:00", 14.27597, -60.26389], ["2019-08-29T01:58:07", 14.28281, -60.31671], ["2019-08-29T02:54:11", 14.28635, -60.34439], ["2019-08-29T03:55:13", 14.29215, -60.36945], ["2019-08-29T04:55:12", 14.29902, -60.39076], ["2019-08-29T05:53:22", 14.30716, -60.40771], ["2019-08-29T06:55:12", 14.317, -60.42715], ["2019-08-29T07:52:50", 14.32746, -60.44244], ["2019-08-29T08:54:42", 14.33823, -60.45728], ["2019-08-29T09:53:19", 14.34855, -60.4693], ["2019-08-29T10:53:19", 14.36031, -60.48175], ["2019-08-29T13:51:14", 14.39188, -60.52129], ["2019-08-29T14:51:30", 14.40214, -60.5325], ["2019-08-29T15:51:14", 14.41166, -60.54034], ["2019-08-29T16:52:12", 14.42111, -60.54294], ["2019-08-29T18:51:12", 14.43538, -60.54257], ["2019-08-30T02:48:00", 14.43659, -60.59528], ["2019-08-30T03:43:54", 14.43386, -60.59845], ["2019-08-30T04:43:54", 14.43137, -60.60214], ["2019-08-30T05:43:54", 14.42665, -60.60626], ["2019-08-30T10:44:16", 14.38034, -60.68869], ["2019-08-30T11:43:12", 14.37087, -60.70371], ["2019-08-30T12:43:12", 14.36619, -60.71332], ["2019-08-30T13:41:06", 14.365, -60.72314], ["2019-08-30T14:41:06", 14.36624, -60.73438], ["2019-08-30T15:42:36", 14.36823, -60.74179], ["2019-08-30T16:28:34", 14.36956, -60.7514], ["2019-08-30T17:42:25", 14.37134, -60.77811], ["2019-08-30T19:38:57", 14.3702, -60.809], ["2019-08-30T20:38:57", 14.37196, -60.82445], ["2019-08-30T21:38:57", 14.36303, -60.84393], ["2019-08-30T23:36:36", 14.34491, -60.88463], ["2019-08-31T00:36:36", 14.33869, -60.90463], ["2019-08-31T01:36:12", 14.3267, -60.92612], ["2019-08-31T02:36:00", 14.32439, -60.94415], ["2019-08-31T03:35:31", 14.32686, -60.96094], ["2019-08-31T04:34:56", 14.32218, -60.98114], ["2019-08-31T05:34:37", 14.32139, -61.00204], ["2019-08-31T06:34:10", 14.32441, -61.01936], ["2019-08-31T07:34:10", 14.33042, -61.0379], ["2019-08-31T08:34:10", 14.33891, -61.05502], ["2019-08-31T09:32:56", 14.343, -61.07657], ["2019-08-31T10:32:56", 14.34459, -61.10163], ["2019-08-31T11:32:56", 14.34669, -61.12463], ["2019-08-31T12:32:29", 14.34378, -61.14523], ["2019-08-31T14:31:29", 14.32903, -61.18912], ["2019-08-31T15:31:48", 14.3261, -61.21109], ["2019-08-31T16:28:34", 14.3277, -61.23111], ["2019-08-31T16:31:28", 14.32792, -61.23212], ["2019-08-31T17:30:27", 14.32742, -61.25058], ["2019-08-31T18:30:44", 14.33058, -61.26645], ["2019-08-31T19:29:29", 14.33337, -61.28136], ["2019-08-31T20:29:29", 14.33655, -61.29587], ["2019-08-31T21:28:56", 14.34212, -61.30786], ["2019-08-31T22:28:27", 14.34894, -61.31812], ["2019-08-31T23:28:08", 14.35779, -61.32962], ["2019-09-01T00:27:38", 14.36593, -61.34567], ["2019-09-01T01:26:29", 14.372, -61.36222], ["2019-09-01T02:26:29", 14.37805, -61.38196], ["2019-09-01T03:26:09", 14.38219, -61.40115], ["2019-09-01T04:25:54", 14.38648, -61.41879], ["2019-09-01T05:25:25", 14.3902, -61.43265], ["2019-09-01T06:24:56", 14.3938, -61.44324], ["2019-09-01T07:24:37", 14.39659, -61.44916], ["2019-09-01T08:24:08", 14.39998, -61.45227], ["2019-09-01T09:23:56", 14.40161, -61.45679], ["2019-09-01T10:22:57", 14.40055, -61.46176], ["2019-09-01T11:22:57", 14.3969, -61.46588], ["2019-09-01T12:22:39", 14.39047, -61.47571], ["2019-09-01T13:21:56", 14.38938, -61.49066], ["2019-09-01T14:21:38", 14.38987, -61.508], ["2019-09-01T15:20:57", 14.39312, -61.53833], ["2019-09-01T16:20:57", 14.39342, -61.53996], ["2019-09-01T17:20:57", 14.3969, -61.55206], ["2019-09-01T18:20:24", 14.39342, -61.56165], ["2019-09-01T19:19:57", 14.38688, -61.57263], ["2019-09-01T20:19:28", 14.38106, -61.58325], ["2019-09-01T21:18:55", 14.38163, -61.60031], ["2019-09-01T22:18:39", 14.38224, -61.6178], ["2019-09-01T23:18:09", 14.37999, -61.63623], ["2019-09-02T00:17:39", 14.37639, -61.65271], ["2019-09-02T01:17:25", 14.37431, -61.66568], ["2019-09-02T02:16:36", 14.37072, -61.67352], ["2019-09-02T03:15:58", 14.36874, -61.68172], ["2019-09-02T04:15:58", 14.36878, -61.68893], ["2019-09-02T05:15:39", 14.36628, -61.69165], ["2019-09-02T06:15:27", 14.364, -61.6973], ["2019-09-02T07:14:57", 14.35973, -61.707], ["2019-09-02T08:14:24", 14.35485, -61.71793], ["2019-09-02T09:14:26", 14.34857, -61.72974], ["2019-09-02T10:13:56", 14.34467, -61.74329], ["2019-09-02T11:13:27", 14.34107, -61.75827], ["2019-09-02T12:12:10", 14.33762, -61.77085], ["2019-09-02T13:12:10", 14.33071, -61.78149], ["2019-09-02T14:11:02", 14.32563, -61.78767], ["2019-09-02T15:11:02", 14.32451, -61.7966], ["2019-09-02T16:10:39", 14.32527, -61.80615], ["2019-09-02T16:28:07", 14.32574, -61.80884], ["2019-09-02T17:10:29", 14.32657, -61.81656], ["2019-09-02T18:09:57", 14.32686, -61.83057], ["2019-09-02T19:09:26", 14.32863, -61.84845], ["2019-09-02T20:09:07", 14.3289, -61.86514], ["2019-09-02T21:08:56", 14.32761, -61.88016], ["2019-09-02T22:08:26", 14.32278, -61.89093], ["2019-09-02T23:07:57", 14.31729, -61.89969], ["2019-09-03T00:07:37", 14.31265, -61.90915], ["2019-09-03T01:06:59", 14.30637, -61.91695], ["2019-09-03T02:06:59", 14.30577, -61.92871], ["2019-09-03T03:05:57", 14.30858, -61.94176], ["2019-09-03T04:05:57", 14.31236, -61.953], ["2019-09-03T05:05:42", 14.31483, -61.9635], ["2019-09-03T06:05:25", 14.31446, -61.96906], ["2019-09-03T07:04:53", 14.31294, -61.97348], ["2019-09-03T08:04:23", 14.31217, -61.97311], ["2019-09-03T09:03:55", 14.30964, -61.97382], ["2019-09-03T10:02:57", 14.30656, -61.97786], ["2019-09-03T11:02:57", 14.29896, -61.98172], ["2019-09-03T12:02:23", 14.29, -61.99082], ["2019-09-03T13:02:23", 14.28292, -62.00284], ["2019-09-03T14:00:56", 14.27586, -62.01786], ["2019-09-03T15:00:56", 14.27127, -62.0358], ["2019-09-03T16:00:56", 14.27393, -62.05417], ["2019-09-03T16:27:48", 14.27574, -62.06094], ["2019-09-03T17:00:38", 14.27872, -62.06943], ["2019-09-03T18:00:10", 14.28182, -62.08136], ["2019-09-03T18:58:58", 14.28295, -62.08824], ["2019-09-03T19:59:36", 14.28522, -62.09076], ["2019-09-03T20:58:58", 14.28943, -62.09381], ["2019-09-03T21:59:46", 14.29155, -62.09735], ["2019-09-03T22:58:35", 14.29163, -62.10138], ["2019-09-03T23:57:59", 14.28609, -62.10458], ["2019-09-04T00:57:58", 14.28314, -62.10843], ["2019-09-04T01:57:27", 14.28263, -62.11853], ["2019-09-04T02:57:29", 14.28056, -62.13336], ["2019-09-04T03:57:10", 14.27814, -62.14725], ["2019-09-04T04:56:19", 14.27145, -62.15503], ["2019-09-04T05:55:58", 14.26593, -62.16367], ["2019-09-04T06:55:58", 14.2631, -62.17453], ["2019-09-04T07:54:57", 14.25923, -62.18271], ["2019-09-04T08:54:26", 14.25502, -62.18797], ["2019-09-04T09:54:26", 14.25275, -62.1908], ["2019-09-04T10:53:46", 14.25215, -62.19373], ["2019-09-04T11:52:58", 14.25141, -62.19663], ["2019-09-04T12:52:58", 14.24785, -62.19809], ["2019-09-04T13:52:04", 14.24084, -62.20013], ["2019-09-04T14:52:04", 14.23144, -62.20356], ["2019-09-04T15:52:04", 14.21998, -62.2088], ["2019-09-04T16:28:21", 14.21339, -62.21219], ["2019-09-04T16:51:59", 14.20959, -62.21512], ["2019-09-04T17:50:55", 14.20049, -62.22482], ["2019-09-04T18:50:55", 14.1965, -62.23349], ["2019-09-04T19:49:56", 14.19297, -62.24207], ["2019-09-04T20:49:56", 14.18851, -62.24911], ["2019-09-05T01:47:00", 14.15718, -62.27994], ["2019-09-05T03:46:58", 14.13586, -62.29141], ["2019-09-05T05:47:57", 14.11432, -62.30728], ["2019-09-05T06:46:26", 14.10702, -62.32067], ["2019-09-05T07:46:26", 14.10208, -62.33466], ["2019-09-05T13:41:23", 14.0854, -62.40353], ["2019-09-05T14:40:41", 14.08145, -62.41048], ["2019-09-05T15:40:41", 14.07737, -62.42078], ["2019-09-05T21:40:00", 14.08855, -62.50494], ["2019-09-05T22:37:37", 14.09302, -62.51077], ["2019-09-06T00:39:59", 14.10016, -62.52643], ["2019-09-06T01:37:28", 14.10445, -62.53345], ["2019-09-06T02:37:28", 14.10823, -62.53937], ["2019-09-06T03:37:27", 14.10966, -62.5444], ["2019-09-06T04:35:25", 14.11283, -62.54965], ["2019-09-06T05:35:25", 14.11283, -62.55222], ["2019-09-06T06:35:25", 14.11094, -62.55222], ["2019-09-06T07:34:28", 14.10842, -62.55255], ["2019-09-06T08:34:38", 14.10325, -62.55151], ["2019-09-06T09:34:41", 14.0962, -62.55246], ["2019-09-06T10:34:28", 14.08735, -62.55042], ["2019-09-06T11:32:55", 14.08045, -62.55272], ["2019-09-06T12:32:55", 14.07144, -62.55684], ["2019-09-06T13:32:55", 14.06397, -62.56482], ["2019-09-06T14:32:17", 14.05791, -62.57721], ["2019-09-06T15:31:59", 14.05161, -62.59027], ["2019-09-06T16:27:48", 14.04609, -62.60251], ["2019-09-06T17:30:11", 14.03953, -62.61069], ["2019-09-06T18:31:30", 14.03101, -62.60941], ["2019-09-06T19:28:37", 14.02014, -62.60985], ["2019-09-06T20:30:56", 14.0104, -62.61118], ["2019-09-06T21:28:37", 14.0007, -62.61337], ["2019-09-06T22:29:01", 13.98895, -62.6189], ["2019-09-06T23:29:12", 13.97604, -62.62375], ["2019-09-07T00:28:02", 13.96814, -62.62918], ["2019-09-07T01:27:26", 13.95952, -62.63782], ["2019-09-07T02:27:28", 13.94783, -62.6474], ["2019-09-07T03:25:59", 13.93307, -62.65411], ["2019-09-07T04:25:59", 13.91839, -62.66003], ["2019-09-07T05:26:34", 13.90494, -62.66943], ["2019-09-07T07:25:42", 13.88167, -62.68714], ["2019-09-07T08:25:12", 13.87107, -62.69635], ["2019-09-07T09:25:42", 13.86064, -62.70499], ["2019-09-07T10:23:08", 13.85047, -62.71417], ["2019-09-07T11:22:11", 13.83795, -62.72602], ["2019-09-07T12:22:11", 13.83023, -62.73975], ["2019-09-07T14:28:09", 13.83114, -62.78923], ["2019-09-07T15:28:09", 13.8359, -62.80245], ["2019-09-07T16:28:09", 13.83663, -62.80374], ["2019-09-07T18:22:06", 13.84526, -62.82707], ["2019-09-07T19:20:59", 13.84938, -62.83594], ["2019-09-07T20:22:06", 13.85329, -62.84372], ["2019-09-07T21:18:31", 13.85641, -62.84885], ["2019-09-07T22:18:31", 13.85517, -62.85503], ["2019-09-07T23:18:31", 13.8526, -62.86087], ["2019-09-08T00:18:17", 13.84985, -62.86523], ["2019-09-08T01:19:59", 13.84906, -62.87045], ["2019-09-08T02:15:41", 13.85021, -62.87678], ["2019-09-08T03:15:41", 13.85386, -62.88184], ["2019-09-08T04:15:41", 13.85652, -62.88553], ["2019-09-08T05:17:59", 13.85901, -62.89212], ["2019-09-08T06:16:58", 13.86159, -62.89818], ["2019-09-08T07:16:58", 13.86082, -62.90625], ["2019-09-08T08:14:34", 13.85853, -62.91221], ["2019-09-08T09:14:34", 13.85454, -62.91418], ["2019-09-08T10:13:59", 13.84925, -62.91614], ["2019-09-08T15:10:38", 13.82897, -62.93716], ["2019-09-08T16:09:11", 13.83168, -62.95089], ["2019-09-08T17:09:11", 13.83413, -62.95922], ["2019-09-08T18:09:11", 13.83658, -62.96832], ["2019-09-08T19:09:55", 13.83694, -62.9791], ["2019-09-08T20:10:31", 13.83329, -62.9895], ["2019-09-08T21:08:14", 13.83015, -62.99823], ["2019-09-08T22:07:59", 13.82319, -63.00758], ["2019-09-08T23:07:59", 13.81624, -63.02011], ["2019-09-09T00:07:58", 13.80914, -63.03281], ["2019-09-09T01:07:58", 13.80251, -63.04301], ["2019-09-09T02:07:58", 13.79856, -63.05511], ["2019-09-09T03:06:28", 13.79626, -63.07428], ["2019-09-09T04:05:12", 13.79418, -63.09448], ["2019-09-09T05:05:26", 13.79424, -63.11304], ["2019-09-09T06:05:12", 13.79122, -63.12967], ["2019-09-09T08:05:28", 13.7856, -63.159], ["2019-09-09T09:04:01", 13.78295, -63.17038], ["2019-09-09T10:04:59", 13.77916, -63.18048], ["2019-09-09T11:04:30", 13.77546, -63.18844], ["2019-09-09T12:04:30", 13.77057, -63.19754], ["2019-09-09T13:01:50", 13.76498, -63.20987], ["2019-09-09T16:20:43", 13.74598, -63.26047], ["2019-09-09T17:03:56", 13.74137, -63.27069], ["2019-09-09T19:00:34", 13.73677, -63.3107], ["2019-09-09T19:59:04", 13.73765, -63.33209], ["2019-09-09T21:00:34", 13.73733, -63.35516], ["2019-09-10T00:00:01", 13.72807, -63.41333], ["2019-09-10T01:59:31", 13.72703, -63.44592], ["2019-09-10T02:56:26", 13.72749, -63.45538], ["2019-09-10T03:56:58", 13.72608, -63.4632], ["2019-09-10T05:58:28", 13.71528, -63.47989], ["2019-09-10T07:56:50", 13.70525, -63.50073], ["2019-09-10T10:55:40", 13.69413, -63.54727], ["2019-09-10T14:53:05", 13.6887, -63.62363], ["2019-09-10T15:51:17", 13.69028, -63.64066], ["2019-09-10T16:50:16", 13.69163, -63.65766], ["2019-09-10T17:50:16", 13.6936, -63.67114], ["2019-09-10T18:50:30", 13.69636, -63.68518], ["2019-09-10T21:47:33", 13.70813, -63.72168], ["2019-09-10T22:47:33", 13.71173, -63.72992], ["2019-09-11T00:46:32", 13.71206, -63.74594], ["2019-09-11T01:45:42", 13.71063, -63.75642], ["2019-09-11T02:45:42", 13.70866, -63.76663], ["2019-09-11T06:45:01", 13.6894, -63.80994], ["2019-09-11T07:44:05", 13.67983, -63.81827], ["2019-09-11T08:44:11", 13.67136, -63.82706], ["2019-09-11T09:44:19", 13.65971, -63.83527], ["2019-09-11T10:43:36", 13.65147, -63.84579], ["2019-09-11T11:45:25", 13.64257, -63.85828], ["2019-09-11T13:44:30", 13.63169, -63.88867], ["2019-09-11T14:43:11", 13.62913, -63.91656], ["2019-09-11T15:43:11", 13.629, -63.91853], ["2019-09-11T16:43:11", 13.62827, -63.92368], ["2019-09-11T17:39:42", 13.62542, -63.93439], ["2019-09-11T18:42:09", 13.62043, -63.94574], ["2019-09-11T19:40:59", 13.60285, -63.96542], ["2019-09-11T21:40:59", 13.59787, -63.97675], ["2019-09-11T22:37:20", 13.59103, -63.98923], ["2019-09-11T23:39:03", 13.58381, -64.00363], ["2019-09-12T00:36:21", 13.57762, -64.01461], ["2019-09-12T01:38:12", 13.57119, -64.02713], ["2019-09-12T02:35:18", 13.56415, -64.04066], ["2019-09-12T03:35:18", 13.55621, -64.05637], ["2019-09-12T04:35:18", 13.54879, -64.07294], ["2019-09-12T05:33:41", 13.54183, -64.09189], ["2019-09-12T06:33:41", 13.53492, -64.11239], ["2019-09-12T07:33:41", 13.52771, -64.13034], ["2019-09-12T08:33:59", 13.52241, -64.14758], ["2019-09-12T10:34:29", 13.51702, -64.1812], ["2019-09-12T12:32:59", 13.5152, -64.21259], ["2019-09-12T15:29:51", 13.51504, -64.25837], ["2019-09-12T16:29:51", 13.51508, -64.26318], ["2019-09-12T17:31:17", 13.51601, -64.27673], ["2019-09-12T18:31:18", 13.51697, -64.2897], ["2019-09-12T20:30:35", 13.52691, -64.32266], ["2019-09-12T21:30:41", 13.53468, -64.34065], ["2019-09-12T22:30:39", 13.54286, -64.36237], ["2019-09-12T23:30:41", 13.55314, -64.38193], ["2019-09-13T06:27:29", 13.60614, -64.4855], ["2019-09-13T08:24:30", 13.62342, -64.5184], ["2019-09-13T16:06:04", 13.75273, -64.65796], ["2019-09-13T23:17:15", 13.9362, -64.77988], ["2019-09-14T00:20:30", 13.96024, -64.80298], ["2019-09-14T01:19:58", 13.98433, -64.82297], ["2019-09-14T05:18:26", 14.10087, -64.90964], ["2019-09-14T07:16:40", 14.16289, -64.94904], ["2019-09-14T08:15:53", 14.19444, -64.96456], ["2019-09-14T09:15:53", 14.22886, -64.97778], ["2019-09-14T10:13:06", 14.26125, -64.9892], ["2019-09-14T14:14:57", 14.39651, -65.04764], ["2019-09-14T16:10:25", 14.45789, -65.08243], ["2019-09-14T22:11:04", 14.64754, -65.21245], ["2019-09-14T23:08:28", 14.67608, -65.23573], ["2019-09-15T00:08:28", 14.70634, -65.26053], ["2019-09-15T01:07:59", 14.7338, -65.28299], ["2019-09-15T15:55:29", 15.04542, -65.6134], ["2019-09-15T16:00:27", 15.04676, -65.61539], ["2019-09-15T17:00:27", 15.06839, -65.6463], ["2019-09-15T21:58:32", 15.15564, -65.77603], ["2019-09-16T04:57:42", 15.25005, -65.91779], ["2019-09-16T05:54:15", 15.25976, -65.93301], ["2019-09-16T16:51:54", 15.39842, -66.08749], ["2019-09-17T07:42:37", 15.55256, -66.19678], ["2019-09-17T13:42:35", 15.62199, -66.24963], ["2019-09-17T17:40:59", 15.67706, -66.26425], ["2019-09-18T00:37:35", 15.77215, -66.27283], ["2019-09-18T08:35:17", 15.86528, -66.24963], ["2019-09-18T09:34:43", 15.87177, -66.25012], ["2019-09-18T10:33:14", 15.88147, -66.25317], ["2019-09-18T15:55:42", 15.91368, -66.2619], ["2019-09-19T04:24:34", 16.02687, -66.25696], ["2019-09-19T10:22:58", 16.08947, -66.25632], ["2019-09-19T12:23:00", 16.10684, -66.25308], ["2019-09-19T14:21:00", 16.12269, -66.25055], ["2019-09-19T15:18:53", 16.13963, -66.24862], ["2019-09-19T16:18:53", 16.14396, -66.24811], ["2019-09-19T21:19:32", 16.20553, -66.2489], ["2019-09-20T03:17:02", 16.26241, -66.23972], ["2019-09-20T05:14:28", 16.2714, -66.23163], ["2019-09-20T12:12:17", 16.31312, -66.21912], ["2019-09-20T14:10:32", 16.32098, -66.22174], ["2019-09-20T18:11:13", 16.34472, -66.22714], ["2019-09-20T20:07:40", 16.36546, -66.22865], ["2019-09-20T21:07:40", 16.37739, -66.22891], ["2019-09-21T02:08:27", 16.42297, -66.22308], ["2019-09-21T03:05:10", 16.43028, -66.21964], ["2019-09-21T04:05:12", 16.43713, -66.21652], ["2019-09-21T17:58:56", 16.51629, -66.17288], ["2019-09-21T19:00:30", 16.52039, -66.17184], ["2019-09-22T00:57:30", 16.55421, -66.16086], ["2019-09-22T03:58:11", 16.5836, -66.15349], ["2019-09-22T07:57:30", 16.59757, -66.13409], ["2019-09-22T13:51:16", 16.58843, -66.11194], ["2019-09-22T15:50:18", 16.60073, -66.11096], ["2019-09-23T16:40:21", 16.69171, -66.1001], ["2019-09-23T21:41:29", 16.71213, -66.08969], ["2019-09-23T22:37:56", 16.71409, -66.08481], ["2019-09-24T00:38:26", 16.71881, -66.07234], ["2019-09-24T01:37:57", 16.7202, -66.06573], ["2019-09-24T02:38:26", 16.72062, -66.05801], ["2019-09-24T03:36:03", 16.71865, -66.0494], ["2019-09-24T04:36:09", 16.71571, -66.0407], ["2019-09-24T05:36:09", 16.71232, -66.03194], ["2019-09-24T09:33:19", 16.69635, -65.99036], ["2019-09-24T10:33:41", 16.69127, -65.97936], ["2019-09-24T11:33:41", 16.68977, -65.96451], ["2019-09-24T13:32:29", 16.69332, -65.94162], ["2019-09-24T14:31:59", 16.70289, -65.92402], ["2019-09-24T15:31:59", 16.71791, -65.90024], ["2019-09-24T15:55:50", 16.72342, -65.89105], ["2019-09-25T03:26:57", 16.72762, -65.59311], ["2019-09-25T05:24:19", 16.71525, -65.55686], ["2019-09-25T06:23:33", 16.70879, -65.54067], ["2019-09-25T07:24:19", 16.69924, -65.52365], ["2019-09-25T08:22:19", 16.69142, -65.50861], ["2019-09-25T09:23:48", 16.68158, -65.49414], ["2019-09-25T10:23:35", 16.67252, -65.48318], ["2019-09-25T11:23:35", 16.66239, -65.47461], ["2019-09-25T21:15:48", 16.67263, -65.44806], ["2019-09-26T01:13:13", 16.70569, -65.41788], ["2019-09-26T06:11:26", 16.76543, -65.36169], ["2019-09-26T08:12:13", 16.78735, -65.3215], ["2019-09-26T14:12:19", 16.83923, -65.19405], ["2019-09-26T21:07:58", 16.84246, -65.0682], ["2019-09-26T23:08:06", 16.83545, -65.03664], ["2019-09-27T01:08:06", 16.83253, -65.02515], ["2019-09-27T02:04:20", 16.82972, -65.01675], ["2019-09-27T03:07:12", 16.82536, -65.00937], ["2019-09-27T04:06:31", 16.82225, -65.00433], ["2019-09-27T05:05:31", 16.81832, -65.00003], ["2019-09-27T06:02:40", 16.81569, -64.99773], ["2019-09-27T07:03:13", 16.81407, -64.99579], ["2019-09-27T08:03:10", 16.81366, -64.99567], ["2019-09-27T09:02:01", 16.81334, -64.99621], ["2019-09-27T10:02:01", 16.81398, -64.99836], ["2019-09-27T11:02:01", 16.81595, -64.99948], ["2019-09-27T12:02:29", 16.82029, -64.99957], ["2019-09-27T12:59:48", 16.82688, -65.00018], ["2019-09-27T14:01:12", 16.83461, -65.00104], ["2019-09-27T14:58:44", 16.851, -65.0009], ["2019-09-27T15:58:44", 16.85349, -65.00064], ["2019-09-27T17:01:29", 16.86466, -64.99979], ["2019-09-27T17:58:30", 16.87486, -64.99994], ["2019-09-27T18:58:30", 16.88636, -65.00106], ["2019-09-27T19:58:30", 16.89726, -65.00089], ["2019-09-27T20:58:13", 16.90944, -64.99936], ["2019-09-28T02:57:23", 16.98033, -64.96924], ["2019-09-28T10:51:59", 17.00574, -64.8743], ["2019-09-28T11:52:59", 17.00552, -64.86584], ["2019-09-28T12:49:36", 17.00334, -64.85894], ["2019-09-28T13:50:13", 16.99861, -64.85413], ["2019-09-28T14:42:15", 16.9912, -64.85175], ["2019-09-28T15:42:15", 16.9909, -64.85175], ["2019-09-28T15:49:01", 16.99062, -64.85174], ["2019-09-28T16:49:01", 16.98916, -64.852], ["2019-09-28T17:49:01", 16.9892, -64.85269], ["2019-09-28T18:49:31", 16.99139, -64.85348], ["2019-09-28T19:48:13", 16.99464, -64.85286], ["2019-09-28T20:48:13", 17.00013, -64.85226], ["2019-09-28T21:48:13", 17.007, -64.85046], ["2019-09-28T22:45:41", 17.01143, -64.84708], ["2019-09-29T01:44:18", 17.02242, -64.84329], ["2019-09-29T01:44:38", 17.0296, -64.8499], ["2019-09-29T03:44:38", 17.0323, -64.8494], ["2019-09-29T04:44:29", 17.03963, -64.85352], ["2019-09-29T06:42:30", 17.06123, -64.86254], ["2019-09-29T07:42:30", 17.07488, -64.86305], ["2019-09-29T08:42:30", 17.09119, -64.86288], ["2019-09-29T09:41:31", 17.10702, -64.86032], ["2019-09-29T10:40:57", 17.12295, -64.85415], ["2019-09-29T11:41:05", 17.13544, -64.8472], ["2019-09-29T12:40:26", 17.14624, -64.8399], ["2019-09-29T13:39:09", 17.16832, -64.828], ["2019-09-29T14:39:09", 17.18059, -64.82294], ["2019-09-29T15:39:09", 17.18183, -64.82259], ["2019-09-29T15:42:29", 17.18264, -64.82223], ["2019-09-29T16:39:13", 17.19758, -64.81865], ["2019-09-29T17:36:52", 17.21542, -64.8131], ["2019-09-29T18:40:05", 17.23351, -64.80493], ["2019-09-29T19:36:52", 17.24881, -64.79644], ["2019-09-29T20:36:54", 17.26481, -64.78702], ["2019-09-29T21:36:54", 17.2773, -64.77878], ["2019-09-29T22:37:59", 17.28798, -64.77289], ["2019-09-29T23:35:26", 17.29799, -64.76806], ["2019-09-30T00:36:28", 17.31015, -64.76343], ["2019-09-30T04:33:52", 17.35003, -64.74014], ["2019-09-30T05:36:56", 17.35701, -64.7343], ["2019-09-30T06:32:31", 17.36314, -64.72922], ["2019-09-30T07:32:31", 17.37022, -64.72347], ["2019-09-30T08:32:31", 17.37816, -64.71823], ["2019-09-30T09:32:57", 17.38757, -64.71332], ["2019-09-30T13:30:35", 17.42586, -64.69937], ["2019-09-30T14:30:11", 17.43395, -64.69598], ["2019-09-30T15:30:11", 17.44167, -64.6928], ["2019-09-30T16:30:58", 17.44899, -64.68962], ["2019-09-30T17:30:58", 17.45663, -64.68817], ["2019-09-30T18:28:50", 17.4659, -64.68738], ["2019-09-30T20:30:38", 17.48751, -64.68973], ["2019-09-30T21:30:06", 17.49956, -64.6907], ["2019-09-30T23:27:43", 17.52096, -64.69208], ["2019-10-01T02:25:03", 17.54225, -64.68527], ["2019-10-01T04:23:52", 17.55397, -64.68254], ["2019-10-01T05:23:52", 17.55822, -64.68271], ["2019-10-01T06:23:58", 17.56407, -64.68558], ["2019-10-01T10:23:07", 17.59517, -64.70313], ["2019-10-01T11:21:26", 17.60249, -64.70265], ["2019-10-01T12:21:26", 17.60635, -64.70231], ["2019-10-01T13:21:26", 17.6094, -64.70325], ["2019-10-01T14:22:29", 17.61511, -64.70699], ["2019-10-01T15:19:21", 17.6212, -64.70981], ["2019-10-01T16:19:01", 17.62636, -64.71307], ["2019-10-01T17:20:30", 17.62971, -64.71639], ["2019-10-01T18:18:24", 17.63437, -64.72101], ["2019-10-01T19:18:11", 17.64212, -64.72668], ["2019-10-01T20:18:11", 17.6465, -64.73336], ["2019-10-01T21:18:13", 17.65014, -64.74054], ["2019-10-01T22:17:05", 17.65263, -64.74679], ["2019-10-01T23:17:13", 17.65455, -64.75218], ["2019-10-02T00:17:13", 17.65515, -64.75716], ["2019-10-02T01:17:13", 17.65498, -64.76334], ["2019-10-02T02:16:06", 17.65625, -64.76806], ["2019-10-02T03:15:59", 17.65811, -64.77048], ["2019-10-02T04:15:29", 17.65931, -64.77283], ["2019-10-02T06:15:14", 17.66081, -64.77746], ["2019-10-02T07:14:27", 17.66155, -64.77838], ["2019-10-02T08:14:04", 17.66125, -64.78363], ["2019-10-02T10:12:00", 17.66241, -64.80007], ["2019-10-02T12:12:59", 17.66736, -64.81762], ["2019-10-02T13:11:25", 17.66922, -64.82504], ["2019-10-02T13:42:05", 17.67161, -64.83853], ["2019-10-02T14:42:05", 17.67225, -64.84041], ["2019-10-02T15:42:05", 17.67259, -64.84119], ["2019-10-02T16:11:01", 17.67392, -64.8442], ["2019-10-02T17:11:01", 17.67692, -64.84961], ["2019-10-02T20:07:30", 17.68273, -64.85714], ["2019-10-02T21:07:30", 17.68376, -64.86109], ["2019-10-02T22:07:30", 17.68509, -64.86658], ["2019-10-02T23:06:58", 17.68599, -64.86972], ["2019-10-03T01:07:29", 17.68591, -64.86984], ["2019-10-03T03:07:29", 17.68578, -64.87027], ["2019-10-03T08:03:11", 17.68571, -64.87033], ["2019-10-03T10:03:06", 17.68566, -64.87033], ["2019-10-03T11:03:41", 17.68548, -64.87026], ["2019-10-03T12:03:41", 17.68428, -64.87344], ["2019-10-03T13:03:13", 17.68397, -64.87739], ["2019-10-03T14:03:13", 17.68483, -64.88211], ["2019-10-03T14:41:18", 17.68593, -64.88428], ["2019-10-03T15:41:18", 17.68593, -64.88428], ["2019-10-03T15:59:51", 17.68596, -64.88424], ["2019-10-03T16:59:59", 17.69017, -64.86879]], "drifter_20": [["2019-08-08T12:05:00", 11.83018, -56.09376], ["2019-08-08T13:01:56", 11.83995, -56.10272], ["2019-08-08T14:01:07", 11.85192, -56.11331], ["2019-08-08T15:00:51", 11.86222, -56.12479], ["2019-08-08T22:56:31", 11.92094, -56.19461], ["2019-08-08T23:57:06", 11.92165, -56.20028], ["2019-08-09T00:57:06", 11.92126, -56.20697], ["2019-08-09T01:53:27", 11.91829, -56.21448], ["2019-08-09T03:52:40", 11.9074, -56.23334], ["2019-08-09T05:54:59", 11.90076, -56.24823], ["2019-08-09T09:50:30", 11.88446, -56.28217], ["2019-08-09T10:51:30", 11.87641, -56.29227], ["2019-08-09T11:49:25", 11.86767, -56.3031], ["2019-08-09T13:49:36", 11.85132, -56.32907], ["2019-08-09T14:46:56", 11.84648, -56.34506], ["2019-08-09T15:46:56", 11.84378, -56.36154], ["2019-08-09T16:46:56", 11.84121, -56.37656], ["2019-08-09T17:46:57", 11.83996, -56.39279], ["2019-08-09T18:46:57", 11.84056, -56.40747], ["2019-08-09T19:46:57", 11.84095, -56.42438], ["2019-08-09T20:44:40", 11.8404, -56.44174], ["2019-08-10T00:45:29", 11.82922, -56.51248], ["2019-08-10T04:41:31", 11.83737, -56.58633], ["2019-08-10T05:42:58", 11.84341, -56.60282], ["2019-08-10T06:42:58", 11.8483, -56.61758], ["2019-08-10T07:42:58", 11.85431, -56.63303], ["2019-08-10T10:40:57", 11.86728, -56.67041], ["2019-08-10T11:39:01", 11.87297, -56.68307], ["2019-08-10T12:39:01", 11.87726, -56.69543], ["2019-08-10T13:39:01", 11.88292, -56.70856], ["2019-08-10T21:35:58", 11.95893, -56.78491], ["2019-08-10T22:35:00", 11.96644, -56.7897], ["2019-08-11T00:32:58", 11.97912, -56.79512], ["2019-08-11T01:33:57", 11.98292, -56.79883], ["2019-08-11T02:32:58", 11.98599, -56.80182], ["2019-08-11T03:32:29", 11.98802, -56.80382], ["2019-08-11T04:32:29", 11.99261, -56.807], ["2019-08-11T05:32:29", 11.99806, -56.81052], ["2019-08-11T06:29:17", 12.00211, -56.81393], ["2019-08-11T07:29:17", 12.00644, -56.81805], ["2019-08-11T08:30:58", 12.01226, -56.82126], ["2019-08-11T15:28:30", 12.04383, -56.84918], ["2019-08-11T16:25:32", 12.04463, -56.85556], ["2019-08-11T17:28:00", 12.04574, -56.86328], ["2019-08-12T03:22:30", 12.05392, -56.95859], ["2019-08-12T06:21:30", 12.05177, -57.00189], ["2019-08-12T07:21:58", 12.05221, -57.01708], ["2019-08-12T08:21:58", 12.05225, -57.03244], ["2019-08-12T09:18:30", 12.05624, -57.04693], ["2019-08-12T10:18:30", 12.06221, -57.06032], ["2019-08-12T11:18:30", 12.0689, -57.07422], ["2019-08-12T12:17:30", 12.07657, -57.08704], ["2019-08-12T13:16:16", 12.08596, -57.0998], ["2019-08-12T14:16:16", 12.09338, -57.11096], ["2019-08-12T16:14:44", 12.10744, -57.13528], ["2019-08-12T17:15:32", 12.11554, -57.1467], ["2019-08-12T18:15:32", 12.1252, -57.15794], ["2019-08-12T19:15:32", 12.13735, -57.16833], ["2019-08-12T21:12:48", 12.16094, -57.18657], ["2019-08-12T22:12:48", 12.173, -57.19223], ["2019-08-12T23:12:48", 12.18596, -57.19644], ["2019-08-13T01:12:00", 12.20947, -57.2037], ["2019-08-13T02:10:17", 12.21916, -57.20727], ["2019-08-13T03:10:17", 12.22937, -57.21173], ["2019-08-13T04:09:05", 12.2386, -57.21588], ["2019-08-13T05:08:30", 12.24898, -57.21994], ["2019-08-13T06:06:30", 12.25893, -57.22455], ["2019-08-13T07:06:30", 12.26824, -57.22687], ["2019-08-13T08:05:20", 12.2795, -57.22883], ["2019-08-13T09:05:20", 12.2901, -57.22849], ["2019-08-13T13:04:59", 12.3269, -57.21439], ["2019-08-13T14:06:10", 12.3332, -57.21133], ["2019-08-13T17:00:14", 12.33976, -57.20495], ["2019-08-13T18:00:14", 12.34105, -57.20555], ["2019-08-13T19:00:14", 12.34225, -57.20667], ["2019-08-13T20:01:56", 12.34388, -57.20737], ["2019-08-13T20:59:50", 12.34473, -57.20764], ["2019-08-13T21:35:07", 12.3426, -57.21077], ["2019-08-13T22:58:45", 12.34264, -57.21075], ["2019-08-13T23:35:07", 12.34089, -57.21112], ["2019-08-13T23:58:28", 12.33987, -57.21216], ["2019-08-14T01:01:30", 12.3382, -57.21286], ["2019-08-14T01:57:12", 12.3348, -57.21462], ["2019-08-14T02:57:12", 12.33124, -57.219], ["2019-08-14T03:57:12", 12.32888, -57.22424], ["2019-08-14T04:56:58", 12.32542, -57.22943], ["2019-08-14T12:52:09", 12.31432, -57.28839], ["2019-08-14T13:52:40", 12.31298, -57.29658], ["2019-08-14T14:52:40", 12.31259, -57.30594], ["2019-08-14T20:48:48", 12.31737, -57.37772], ["2019-08-14T22:48:41", 12.32193, -57.40448], ["2019-08-14T23:48:41", 12.32223, -57.40637], ["2019-08-15T00:48:41", 12.32335, -57.41684], ["2019-08-15T01:45:45", 12.32415, -57.4274], ["2019-08-15T02:47:22", 12.32731, -57.44016], ["2019-08-15T03:44:55", 12.33015, -57.45245], ["2019-08-15T04:46:33", 12.3332, -57.46525], ["2019-08-15T05:46:33", 12.3344, -57.47641], ["2019-08-15T06:46:33", 12.33655, -57.48911], ["2019-08-15T08:42:58", 12.34647, -57.51028], ["2019-08-15T09:42:58", 12.35222, -57.52006], ["2019-08-15T10:42:58", 12.35793, -57.53268], ["2019-08-15T13:41:05", 12.37999, -57.57321], ["2019-08-15T14:41:02", 12.38893, -57.58853], ["2019-08-16T00:36:58", 12.48844, -57.70609], ["2019-08-16T04:34:27", 12.51664, -57.73273], ["2019-08-16T05:34:28", 12.52099, -57.73721], ["2019-08-16T07:32:00", 12.52777, -57.74647], ["2019-08-16T08:31:10", 12.53171, -57.75174], ["2019-08-16T09:32:00", 12.53438, -57.75745], ["2019-08-16T10:33:29", 12.53751, -57.76231], ["2019-08-16T11:33:29", 12.53841, -57.77029], ["2019-08-16T14:28:59", 12.54625, -57.78796], ["2019-08-16T19:26:59", 12.55771, -57.83334], ["2019-08-16T21:26:50", 12.56875, -57.85687], ["2019-08-17T02:23:28", 12.61098, -57.90558], ["2019-08-17T05:20:24", 12.62874, -57.93109], ["2019-08-17T06:20:31", 12.63275, -57.94229], ["2019-08-17T10:17:41", 12.66093, -57.98972], ["2019-08-17T11:18:29", 12.67124, -57.99988], ["2019-08-17T12:18:17", 12.68153, -58.0098], ["2019-08-17T14:16:33", 12.69777, -58.0325], ["2019-08-17T16:15:24", 12.70296, -58.05037], ["2019-08-17T17:15:24", 12.70232, -58.06067], ["2019-08-17T20:14:36", 12.70336, -58.10437], ["2019-08-17T21:15:30", 12.70598, -58.11813], ["2019-08-17T23:35:35", 12.71577, -58.14346], ["2019-08-18T00:12:58", 12.71804, -58.14922], ["2019-08-18T01:12:58", 12.72113, -58.15909], ["2019-08-18T03:11:28", 12.72795, -58.17932], ["2019-08-18T04:09:15", 12.72997, -58.18833], ["2019-08-18T05:09:15", 12.72993, -58.19794], ["2019-08-18T06:09:58", 12.72912, -58.20944], ["2019-08-18T07:07:13", 12.72802, -58.22113], ["2019-08-18T08:07:13", 12.72759, -58.23237], ["2019-08-18T09:07:13", 12.72931, -58.24353], ["2019-08-18T10:05:39", 12.7343, -58.25584], ["2019-08-18T11:05:39", 12.73979, -58.26786], ["2019-08-18T12:05:39", 12.74614, -58.27945], ["2019-08-18T13:06:04", 12.75402, -58.29147], ["2019-08-18T14:06:04", 12.7623, -58.30194], ["2019-08-18T15:06:04", 12.77088, -58.31284], ["2019-08-18T16:04:34", 12.77682, -58.32385], ["2019-08-18T18:02:32", 12.78809, -58.34694], ["2019-08-18T19:02:32", 12.79191, -58.35853], ["2019-08-18T20:02:32", 12.7959, -58.37158], ["2019-08-18T22:03:11", 12.81124, -58.40115], ["2019-08-18T22:34:52", 12.82499, -58.42196], ["2019-08-18T23:34:52", 12.82726, -58.42471], ["2019-08-19T01:01:02", 12.84443, -58.44131], ["2019-08-19T01:59:29", 12.8524, -58.45359], ["2019-08-19T02:59:29", 12.86206, -58.46921], ["2019-08-19T04:56:25", 12.88887, -58.49559], ["2019-08-19T05:56:25", 12.90531, -58.50769], ["2019-08-19T06:57:11", 12.92378, -58.52078], ["2019-08-19T11:52:34", 13.01009, -58.58231], ["2019-08-19T12:52:00", 13.02424, -58.58542], ["2019-08-19T13:52:25", 13.03531, -58.59314], ["2019-08-19T14:51:36", 13.04519, -58.60165], ["2019-08-19T15:50:55", 13.05877, -58.60382], ["2019-08-19T16:50:24", 13.0718, -58.60208], ["2019-08-19T17:48:57", 13.08081, -58.60206], ["2019-08-19T18:48:57", 13.08828, -58.60541], ["2019-08-19T19:48:57", 13.0954, -58.60635], ["2019-08-19T20:48:56", 13.10493, -58.6069], ["2019-08-19T21:48:59", 13.11313, -58.60938], ["2019-08-19T22:48:26", 13.11772, -58.61246], ["2019-08-19T23:35:14", 13.11807, -58.61649], ["2019-08-19T23:47:28", 13.11794, -58.61811], ["2019-08-20T00:47:28", 13.11725, -58.62729], ["2019-08-20T01:46:55", 13.1149, -58.63162], ["2019-08-20T02:45:57", 13.11137, -58.63208], ["2019-08-20T03:45:29", 13.10996, -58.6322], ["2019-08-20T04:45:28", 13.10715, -58.634], ["2019-08-20T05:44:54", 13.10604, -58.6398], ["2019-08-20T06:43:53", 13.10609, -58.64626], ["2019-08-20T07:43:53", 13.10682, -58.65338], ["2019-08-20T08:43:24", 13.10934, -58.66269], ["2019-08-20T09:41:55", 13.11119, -58.67653], ["2019-08-20T10:41:55", 13.11269, -58.69086], ["2019-08-20T11:41:40", 13.11334, -58.70029], ["2019-08-20T12:41:07", 13.1111, -58.70761], ["2019-08-20T13:40:27", 13.11107, -58.7159], ["2019-08-20T14:40:27", 13.11146, -58.72723], ["2019-08-20T16:10:56", 13.11502, -58.75275], ["2019-08-20T17:09:54", 13.11908, -58.77451], ["2019-08-20T18:08:26", 13.1249, -58.79089], ["2019-08-20T19:08:26", 13.13293, -58.79904], ["2019-08-20T20:07:55", 13.14039, -58.80615], ["2019-08-20T21:07:25", 13.14507, -58.81534], ["2019-08-20T22:06:38", 13.14935, -58.82781], ["2019-08-20T23:06:38", 13.15184, -58.84], ["2019-08-20T23:35:23", 13.15313, -58.84509], ["2019-08-21T00:06:25", 13.15389, -58.84995], ["2019-08-21T01:05:57", 13.15628, -58.85907], ["2019-08-21T02:05:39", 13.1582, -58.87244], ["2019-08-21T03:04:26", 13.16102, -58.88766], ["2019-08-21T04:03:36", 13.16661, -58.89642], ["2019-08-21T05:02:55", 13.17458, -58.90247], ["2019-08-21T06:02:56", 13.18188, -58.9061], ["2019-08-21T07:01:28", 13.18978, -58.91103], ["2019-08-21T08:01:55", 13.19712, -58.9155], ["2019-08-21T09:01:28", 13.20325, -58.92133], ["2019-08-21T10:00:54", 13.20776, -58.92639], ["2019-08-21T11:00:25", 13.20957, -58.9296], ["2019-08-21T12:58:56", 13.21032, -58.94104], ["2019-08-21T13:57:56", 13.21251, -58.9526], ["2019-08-21T14:57:56", 13.21912, -58.9635], ["2019-08-21T15:57:39", 13.23082, -58.97711], ["2019-08-21T16:56:25", 13.24911, -58.98845], ["2019-08-21T17:56:25", 13.26615, -58.99463], ["2019-08-21T18:55:56", 13.27855, -58.99762], ["2019-08-21T19:55:53", 13.28849, -58.9996], ["2019-08-21T20:55:29", 13.29441, -59.0032], ["2019-08-21T21:54:27", 13.2993, -59.00705], ["2019-08-21T22:54:27", 13.30608, -59.01151], ["2019-08-21T23:34:36", 13.31098, -59.01553], ["2019-08-21T23:53:58", 13.31274, -59.01712], ["2019-08-22T00:53:23", 13.32173, -59.02097], ["2019-08-22T01:52:38", 13.33389, -59.02274], ["2019-08-22T02:51:27", 13.34526, -59.02704], ["2019-08-22T03:51:27", 13.35672, -59.03339], ["2019-08-22T04:51:26", 13.36131, -59.03876], ["2019-08-22T05:50:57", 13.36647, -59.04263], ["2019-08-22T06:51:28", 13.37133, -59.04474], ["2019-08-22T07:49:57", 13.37522, -59.04766], ["2019-08-22T08:49:57", 13.37857, -59.05298], ["2019-08-22T09:49:25", 13.37958, -59.05814], ["2019-08-22T10:49:24", 13.38511, -59.06738], ["2019-08-22T11:48:25", 13.39432, -59.07474], ["2019-08-22T12:47:32", 13.40655, -59.08105], ["2019-08-22T13:47:32", 13.41809, -59.08594], ["2019-08-22T14:47:07", 13.43059, -59.09143], ["2019-08-22T16:46:25", 13.4556, -59.10083], ["2019-08-22T17:46:57", 13.46711, -59.10938], ["2019-08-22T18:45:28", 13.47729, -59.11867], ["2019-08-22T19:45:28", 13.48467, -59.12476], ["2019-08-22T20:44:27", 13.49102, -59.12814], ["2019-08-22T22:42:14", 13.50974, -59.13728], ["2019-08-22T23:42:14", 13.50961, -59.13805], ["2019-08-23T00:42:14", 13.51236, -59.14423], ["2019-08-23T01:43:27", 13.51898, -59.15485], ["2019-08-23T02:43:27", 13.52344, -59.16086], ["2019-08-23T03:42:25", 13.52515, -59.16259], ["2019-08-23T04:42:25", 13.52558, -59.16577], ["2019-08-23T05:40:27", 13.52246, -59.17045], ["2019-08-23T06:40:27", 13.5183, -59.17706], ["2019-08-23T07:40:59", 13.51224, -59.18988], ["2019-08-23T08:39:26", 13.50835, -59.20745], ["2019-08-23T09:39:26", 13.50904, -59.22299], ["2019-08-23T10:39:26", 13.51286, -59.23947], ["2019-08-23T11:39:59", 13.51773, -59.25839], ["2019-08-23T14:37:29", 13.5326, -59.29446], ["2019-08-23T15:37:56", 13.54019, -59.30579], ["2019-08-23T16:37:42", 13.55094, -59.31988], ["2019-08-23T17:37:42", 13.56463, -59.3331], ["2019-08-23T18:35:57", 13.57785, -59.34317], ["2019-08-23T19:35:57", 13.59047, -59.35132], ["2019-08-23T20:34:38", 13.60019, -59.35659], ["2019-08-23T21:34:51", 13.60767, -59.36127], ["2019-08-23T22:34:38", 13.61512, -59.36234], ["2019-08-24T05:31:01", 13.66476, -59.38254], ["2019-08-24T08:29:45", 13.67281, -59.38523], ["2019-08-24T09:29:45", 13.67144, -59.38832], ["2019-08-24T10:29:45", 13.67032, -59.3927], ["2019-08-24T11:27:58", 13.67027, -59.39742], ["2019-08-24T12:27:58", 13.67126, -59.40369], ["2019-08-24T13:27:41", 13.67373, -59.41309], ["2019-08-24T17:25:57", 13.69517, -59.45428], ["2019-08-24T21:22:25", 13.71439, -59.49188], ["2019-08-24T23:20:57", 13.72063, -59.50641], ["2019-08-24T23:35:29", 13.72127, -59.50812], ["2019-08-25T00:21:57", 13.72245, -59.51274], ["2019-08-25T01:21:57", 13.72279, -59.51849], ["2019-08-25T02:20:59", 13.72212, -59.52456], ["2019-08-25T03:20:59", 13.72173, -59.53091], ["2019-08-25T04:22:35", 13.72325, -59.53876], ["2019-08-25T14:14:11", 13.71138, -59.59088], ["2019-08-26T04:08:01", 13.76108, -59.70618], ["2019-08-26T05:06:30", 13.76507, -59.71794], ["2019-08-26T06:06:30", 13.7682, -59.7285], ["2019-08-26T07:06:30", 13.77159, -59.7406], ["2019-08-26T08:06:14", 13.77639, -59.75253], ["2019-08-26T09:06:14", 13.7812, -59.7648], ["2019-08-26T10:03:37", 13.78432, -59.77444], ["2019-08-26T11:03:37", 13.78664, -59.78259], ["2019-08-26T12:03:37", 13.789, -59.79272], ["2019-08-26T17:00:21", 13.78771, -59.8266], ["2019-08-26T18:00:43", 13.79085, -59.8349], ["2019-08-26T19:00:59", 13.79458, -59.84384], ["2019-08-26T20:00:00", 13.80088, -59.85391], ["2019-08-26T20:59:30", 13.80812, -59.86746], ["2019-08-26T21:59:17", 13.81359, -59.88266], ["2019-08-27T04:55:57", 13.85688, -59.98257], ["2019-08-27T05:55:29", 13.86417, -59.99942], ["2019-08-27T06:55:29", 13.87189, -60.01822], ["2019-08-27T07:56:58", 13.88484, -60.03738], ["2019-08-27T08:56:58", 13.90604, -60.05334], ["2019-08-27T09:54:06", 13.928, -60.06681], ["2019-08-27T10:54:06", 13.95242, -60.07797], ["2019-08-27T11:53:29", 13.97883, -60.086], ["2019-08-27T12:53:29", 14.00629, -60.09445], ["2019-08-27T13:54:11", 14.03421, -60.10205], ["2019-08-27T16:49:18", 14.11826, -60.11611], ["2019-08-27T17:49:18", 14.14843, -60.11662], ["2019-08-27T18:49:18", 14.17701, -60.11533], ["2019-08-27T22:48:29", 14.27621, -60.09695], ["2019-08-27T23:48:41", 14.29274, -60.08765], ["2019-08-28T00:48:32", 14.30746, -60.07779], ["2019-08-28T01:47:00", 14.31877, -60.06857], ["2019-08-28T02:46:32", 14.32592, -60.06047], ["2019-08-28T03:46:32", 14.33013, -60.05481], ["2019-08-28T13:43:51", 14.2983, -60.06952], ["2019-08-28T14:40:59", 14.2933, -60.08145], ["2019-08-28T15:43:18", 14.28792, -60.09796], ["2019-08-28T16:40:31", 14.28518, -60.11237], ["2019-08-28T17:41:00", 14.2829, -60.1297], ["2019-08-28T18:40:27", 14.28017, -60.14865], ["2019-08-28T19:41:19", 14.27595, -60.17196], ["2019-08-28T20:39:30", 14.27253, -60.19666], ["2019-08-28T21:41:19", 14.2705, -60.21994], ["2019-08-28T23:37:27", 14.27407, -60.26603], ["2019-08-29T00:37:27", 14.27875, -60.29401], ["2019-08-29T01:37:27", 14.28304, -60.31976], ["2019-08-29T05:35:13", 14.30675, -60.41409], ["2019-08-29T06:33:13", 14.31575, -60.43252], ["2019-08-29T07:33:13", 14.32618, -60.44797], ["2019-08-29T08:33:27", 14.33727, -60.46231], ["2019-08-29T09:30:59", 14.34751, -60.4743], ["2019-08-29T14:30:00", 14.40398, -60.53424], ["2019-08-29T15:29:28", 14.41422, -60.54285], ["2019-08-29T19:26:57", 14.44584, -60.54691], ["2019-08-29T20:26:28", 14.44741, -60.55292], ["2019-08-29T21:27:38", 14.44792, -60.5679], ["2019-08-29T22:27:38", 14.44642, -60.57734], ["2019-08-29T23:27:38", 14.44638, -60.57794], ["2019-08-29T23:35:37", 14.44622, -60.57892], ["2019-08-30T00:25:28", 14.44507, -60.58426], ["2019-08-30T01:25:28", 14.44456, -60.58975], ["2019-08-30T02:25:28", 14.44379, -60.59198], ["2019-08-30T10:20:28", 14.3939, -60.67557], ["2019-08-30T11:20:05", 14.38363, -60.69089], ["2019-08-30T13:18:26", 14.37451, -60.71191], ["2019-08-30T14:19:01", 14.3746, -60.72379], ["2019-08-30T15:18:26", 14.3782, -60.73105], ["2019-08-30T18:17:26", 14.38479, -60.77536], ["2019-08-30T19:17:27", 14.38342, -60.7923], ["2019-08-30T20:14:57", 14.3824, -60.81013], ["2019-08-30T21:14:57", 14.37849, -60.82541], ["2019-08-30T22:14:58", 14.34744, -60.86963], ["2019-08-30T23:14:58", 14.34624, -60.87289], ["2019-08-31T00:14:58", 14.34148, -60.88611], ["2019-08-31T01:14:37", 14.33227, -60.90463], ["2019-08-31T02:14:26", 14.32304, -60.92285], ["2019-08-31T03:13:25", 14.32576, -60.94079], ["2019-08-31T04:13:25", 14.32447, -60.95856], ["2019-08-31T05:12:58", 14.32305, -60.97763], ["2019-08-31T06:12:24", 14.3253, -60.99701], ["2019-08-31T08:11:25", 14.33641, -61.03616], ["2019-08-31T09:10:24", 14.34193, -61.05748], ["2019-08-31T10:10:24", 14.34382, -61.08331], ["2019-08-31T11:09:25", 14.34391, -61.1077], ["2019-08-31T12:09:25", 14.34657, -61.12778], ["2019-08-31T14:08:28", 14.33583, -61.16931], ["2019-08-31T15:07:29", 14.33047, -61.19356], ["2019-08-31T16:07:29", 14.32717, -61.21939], ["2019-08-31T17:07:07", 14.32745, -61.24216], ["2019-08-31T18:05:56", 14.3293, -61.26023], ["2019-08-31T19:06:26", 14.33187, -61.27454], ["2019-08-31T20:05:56", 14.33509, -61.29001], ["2019-08-31T21:04:56", 14.34003, -61.30357], ["2019-08-31T22:04:56", 14.34608, -61.31421], ["2019-08-31T23:04:26", 14.3544, -61.32462], ["2019-09-01T00:03:56", 14.36316, -61.3389], ["2019-09-01T01:02:57", 14.36987, -61.35542], ["2019-09-01T02:02:57", 14.37584, -61.37387], ["2019-09-01T03:02:27", 14.38125, -61.39374], ["2019-09-01T04:00:56", 14.38466, -61.41186], ["2019-09-01T05:00:56", 14.38899, -61.428], ["2019-09-01T06:00:56", 14.39238, -61.43924], ["2019-09-01T10:57:57", 14.399, -61.46399], ["2019-09-01T12:57:25", 14.38933, -61.48462], ["2019-09-01T18:10:57", 14.39466, -61.56012], ["2019-09-01T19:09:59", 14.38826, -61.57159], ["2019-09-01T20:09:59", 14.38208, -61.58206], ["2019-09-01T21:09:27", 14.38135, -61.59781], ["2019-09-01T21:34:51", 14.3806, -61.63382], ["2019-09-01T22:34:51", 14.37978, -61.63794], ["2019-09-01T23:34:51", 14.37901, -61.6412], ["2019-09-02T00:07:27", 14.37692, -61.65039], ["2019-09-02T01:06:06", 14.37475, -61.66436], ["2019-09-02T02:06:06", 14.3714, -61.67294], ["2019-09-02T03:05:24", 14.36874, -61.68024], ["2019-09-02T04:05:24", 14.36865, -61.68814], ["2019-09-02T05:03:29", 14.36694, -61.69169], ["2019-09-02T06:03:29", 14.36424, -61.69581], ["2019-09-02T07:03:29", 14.36055, -61.70517], ["2019-09-02T08:02:24", 14.35542, -61.7158], ["2019-09-02T09:02:24", 14.34954, -61.72739], ["2019-09-02T10:02:24", 14.34508, -61.74026], ["2019-09-02T11:01:58", 14.34146, -61.75476], ["2019-09-02T12:01:24", 14.33874, -61.76794], ["2019-09-02T13:00:26", 14.33229, -61.77911], ["2019-09-02T14:00:26", 14.3265, -61.78555], ["2019-09-02T14:59:55", 14.32491, -61.79456], ["2019-09-02T15:59:28", 14.32517, -61.80457], ["2019-09-02T16:58:37", 14.32649, -61.81426], ["2019-09-02T17:58:37", 14.327, -61.82791], ["2019-09-02T19:53:09", 14.32914, -61.86108], ["2019-09-02T20:52:40", 14.32815, -61.87662], ["2019-09-02T21:51:56", 14.32403, -61.88911], ["2019-09-02T22:51:56", 14.31832, -61.89709], ["2019-09-02T23:35:21", 14.31525, -61.90472], ["2019-09-02T23:50:55", 14.314, -61.90739], ["2019-09-03T00:50:55", 14.30743, -61.91486], ["2019-09-03T01:50:27", 14.30557, -61.92572], ["2019-09-03T02:48:36", 14.30739, -61.93779], ["2019-09-03T03:48:36", 14.31108, -61.94963], ["2019-09-03T04:48:36", 14.31408, -61.96027], ["2019-09-03T05:48:26", 14.31463, -61.96716], ["2019-09-03T06:47:27", 14.31345, -61.97228], ["2019-09-03T07:47:27", 14.31186, -61.97382], ["2019-09-03T08:46:25", 14.31, -61.97324], ["2019-09-03T09:46:25", 14.30794, -61.97736], ["2019-09-03T10:45:54", 14.30155, -61.97995], ["2019-09-03T11:44:56", 14.29275, -61.98785], ["2019-09-03T12:44:26", 14.28503, -61.99884], ["2019-09-03T13:44:06", 14.27865, -62.01376], ["2019-09-03T14:43:56", 14.27198, -62.03012], ["2019-09-03T15:43:27", 14.27301, -62.04883], ["2019-09-03T17:41:36", 14.28151, -62.07842], ["2019-09-03T18:41:36", 14.2831, -62.08623], ["2019-09-03T19:41:36", 14.28392, -62.08975], ["2019-09-03T20:41:26", 14.28849, -62.09277], ["2019-09-03T21:35:22", 14.29251, -62.10002], ["2019-09-03T22:35:22", 14.28951, -62.10191], ["2019-09-03T23:35:22", 14.28805, -62.10242], ["2019-09-03T23:40:00", 14.28754, -62.10275], ["2019-09-04T00:39:09", 14.2837, -62.10694], ["2019-09-04T01:39:09", 14.28293, -62.11475], ["2019-09-04T02:38:39", 14.2808, -62.12793], ["2019-09-04T03:36:59", 14.27914, -62.14324], ["2019-09-04T04:36:59", 14.27395, -62.15302], ["2019-09-04T05:36:59", 14.2673, -62.16049], ["2019-09-04T06:36:39", 14.26408, -62.17117], ["2019-09-04T07:37:28", 14.26045, -62.18137], ["2019-09-04T08:34:57", 14.25581, -62.1869], ["2019-09-04T09:34:57", 14.25341, -62.18965], ["2019-09-04T10:34:57", 14.25225, -62.19308], ["2019-09-04T11:34:27", 14.25205, -62.1958], ["2019-09-04T12:33:57", 14.24976, -62.19782], ["2019-09-04T13:33:57", 14.24375, -62.19928], ["2019-09-04T14:33:06", 14.23518, -62.20239], ["2019-09-04T15:32:57", 14.22342, -62.20688], ["2019-09-04T16:32:05", 14.21256, -62.2128], ["2019-09-04T17:32:05", 14.20252, -62.22052], ["2019-09-04T18:32:26", 14.19759, -62.2312], ["2019-09-04T19:31:28", 14.194, -62.23941], ["2019-09-05T12:24:27", 14.08748, -62.41013], ["2019-09-05T13:23:26", 14.08623, -62.41504], ["2019-09-05T14:21:57", 14.08318, -62.42108], ["2019-09-05T15:21:57", 14.07889, -62.43069], ["2019-09-05T16:21:57", 14.0752, -62.44168], ["2019-09-05T17:22:01", 14.07122, -62.45181], ["2019-09-05T22:19:29", 14.09097, -62.51752], ["2019-09-06T01:17:26", 14.09961, -62.53781], ["2019-09-06T02:17:26", 14.10343, -62.54493], ["2019-09-06T03:17:26", 14.10583, -62.55188], ["2019-09-06T04:16:29", 14.10838, -62.55621], ["2019-09-06T05:15:01", 14.1099, -62.55894], ["2019-09-06T06:15:01", 14.10801, -62.55928], ["2019-09-06T07:15:01", 14.10548, -62.56168], ["2019-09-06T08:14:06", 14.09847, -62.56158], ["2019-09-06T10:12:57", 14.0825, -62.5614], ["2019-09-06T11:13:54", 14.07497, -62.56485], ["2019-09-06T12:12:57", 14.06542, -62.56955], ["2019-09-06T13:12:25", 14.05836, -62.57617], ["2019-09-06T14:11:27", 14.05309, -62.5867], ["2019-09-06T15:10:53", 14.04642, -62.59988], ["2019-09-06T16:10:59", 14.0398, -62.61102], ["2019-09-06T17:10:53", 14.03389, -62.61954], ["2019-09-06T18:10:28", 14.02624, -62.62015], ["2019-09-06T19:10:28", 14.01611, -62.62024], ["2019-09-06T20:08:30", 14.00693, -62.61929], ["2019-09-06T21:08:30", 13.99727, -62.62152], ["2019-09-06T22:07:59", 13.9865, -62.62628], ["2019-09-06T23:08:00", 13.9742, -62.63275], ["2019-09-06T23:28:46", 13.97051, -62.63428], ["2019-09-07T00:06:29", 13.9656, -62.63658], ["2019-09-07T01:06:29", 13.95723, -62.64353], ["2019-09-07T02:06:29", 13.94418, -62.64954], ["2019-09-07T07:03:38", 13.87292, -62.68695], ["2019-09-07T08:02:57", 13.8619, -62.69549], ["2019-09-07T09:02:57", 13.85212, -62.70416], ["2019-09-07T10:01:58", 13.84155, -62.71237], ["2019-09-07T11:01:26", 13.82969, -62.72323], ["2019-09-07T12:01:26", 13.82072, -62.73696], ["2019-09-07T13:01:26", 13.8169, -62.75507], ["2019-09-07T13:59:58", 13.8178, -62.77377], ["2019-09-07T14:59:58", 13.82033, -62.78973], ["2019-09-07T17:58:57", 13.83079, -62.83011], ["2019-09-07T18:56:30", 13.83401, -62.83954], ["2019-09-07T19:56:59", 13.83921, -62.84924], ["2019-09-07T20:56:30", 13.84148, -62.85593], ["2019-09-07T21:56:27", 13.84048, -62.86219], ["2019-09-07T22:56:27", 13.8376, -62.86743], ["2019-09-07T23:55:34", 13.83562, -62.87021], ["2019-09-08T00:55:25", 13.83558, -62.87375], ["2019-09-08T02:53:28", 13.83858, -62.88364], ["2019-09-08T03:56:54", 13.84081, -62.88766], ["2019-09-08T04:53:28", 13.8433, -62.89368], ["2019-09-08T05:53:59", 13.84466, -62.90155], ["2019-09-08T06:52:58", 13.84566, -62.91022], ["2019-09-08T07:52:30", 13.8449, -62.91687], ["2019-09-08T08:52:58", 13.84013, -62.91983], ["2019-09-08T14:50:19", 13.80756, -62.93945], ["2019-09-08T15:49:41", 13.80734, -62.9494], ["2019-09-08T19:47:55", 13.80318, -62.98523], ["2019-09-09T03:42:58", 13.75047, -63.05325], ["2019-09-09T04:42:27", 13.74871, -63.07254], ["2019-09-09T05:42:27", 13.7488, -63.09091], ["2019-09-09T06:41:57", 13.74812, -63.10718], ["2019-09-09T14:38:48", 13.70094, -63.17673], ["2019-09-09T15:39:26", 13.69656, -63.19983], ["2019-09-09T16:36:54", 13.69459, -63.21964], ["2019-09-09T17:36:29", 13.69297, -63.23798], ["2019-09-09T18:36:29", 13.69271, -63.25549], ["2019-09-09T19:36:02", 13.69321, -63.27536], ["2019-09-09T21:34:59", 13.69017, -63.323], ["2019-09-09T22:28:46", 13.68735, -63.35407], ["2019-09-09T23:28:46", 13.68701, -63.3569], ["2019-09-09T23:33:28", 13.68685, -63.35819], ["2019-09-10T00:33:28", 13.68535, -63.37167], ["2019-09-10T04:30:17", 13.68066, -63.40863], ["2019-09-10T05:30:27", 13.67764, -63.41675], ["2019-09-10T06:28:25", 13.67233, -63.4279], ["2019-09-10T07:28:25", 13.66611, -63.43829], ["2019-09-10T11:28:43", 13.63691, -63.50677], ["2019-09-10T12:27:56", 13.63396, -63.52789], ["2019-09-10T13:26:31", 13.63322, -63.54745], ["2019-09-10T14:25:58", 13.63455, -63.56461], ["2019-09-10T15:26:31", 13.63558, -63.58118], ["2019-09-10T16:26:41", 13.63728, -63.59619], ["2019-09-10T17:24:02", 13.64004, -63.60779], ["2019-09-11T02:20:36", 13.64681, -63.69211], ["2019-09-11T03:21:17", 13.64527, -63.70331], ["2019-09-11T06:20:57", 13.62864, -63.73328], ["2019-09-11T08:16:24", 13.6118, -63.74926], ["2019-09-11T09:18:35", 13.60147, -63.758], ["2019-09-11T10:16:24", 13.59206, -63.76865], ["2019-09-11T11:16:58", 13.58223, -63.78052], ["2019-09-11T13:15:12", 13.56545, -63.80665], ["2019-09-11T14:14:01", 13.56145, -63.82187], ["2019-09-11T14:15:12", 13.56142, -63.82193], ["2019-09-11T15:13:16", 13.55952, -63.83985], ["2019-09-11T15:15:12", 13.55949, -63.83978], ["2019-09-11T16:13:16", 13.55965, -63.85822], ["2019-09-11T17:13:16", 13.56051, -63.87796], ["2019-09-11T23:20:02", 13.54981, -63.961], ["2019-09-12T13:06:13", 13.50487, -64.16055], ["2019-09-12T14:07:36", 13.5039, -64.17572], ["2019-09-12T15:07:36", 13.5045, -64.19108], ["2019-09-12T16:07:36", 13.50411, -64.20456], ["2019-09-12T17:03:45", 13.50329, -64.21713], ["2019-09-12T18:04:31", 13.5037, -64.23166], ["2019-09-12T19:04:31", 13.50379, -64.24738], ["2019-09-12T20:03:59", 13.50494, -64.26749], ["2019-09-12T21:03:59", 13.51049, -64.29123], ["2019-09-12T22:02:58", 13.51637, -64.31464], ["2019-09-12T23:02:31", 13.52672, -64.33954], ["2019-09-13T00:02:31", 13.53281, -64.35138], ["2019-09-13T01:02:14", 13.54149, -64.36696], ["2019-09-13T06:57:56", 13.57176, -64.45859], ["2019-09-13T07:59:03", 13.57984, -64.47705], ["2019-09-13T08:56:40", 13.58869, -64.49512], ["2019-09-13T09:55:32", 13.60099, -64.51438], ["2019-09-13T10:55:32", 13.61468, -64.53146], ["2019-09-13T14:55:41", 13.67948, -64.6046], ["2019-09-13T15:52:28", 13.6968, -64.61903], ["2019-09-13T16:52:28", 13.7177, -64.63525], ["2019-09-13T17:52:28", 13.74006, -64.65027], ["2019-09-13T18:52:00", 13.76346, -64.66701], ["2019-09-13T19:50:29", 13.78717, -64.68773], ["2019-09-13T20:50:29", 13.80953, -64.70867], ["2019-09-13T21:50:29", 13.83215, -64.72644], ["2019-09-13T22:49:23", 13.85588, -64.74448], ["2019-09-13T23:21:34", 13.86965, -64.7557], ["2019-09-14T00:48:39", 13.90498, -64.78695], ["2019-09-14T01:49:32", 13.92879, -64.80817], ["2019-09-14T02:49:32", 13.95407, -64.82947], ["2019-09-14T03:49:32", 13.98325, -64.85342], ["2019-09-14T07:44:29", 14.10614, -64.93329], ["2019-09-14T08:44:57", 14.13718, -64.9455], ["2019-09-14T12:42:29", 14.2642, -64.97537], ["2019-09-14T13:41:29", 14.29052, -64.98724], ["2019-09-14T17:39:00", 14.40191, -65.04608], ["2019-09-14T18:39:07", 14.42717, -65.06562], ["2019-09-14T19:39:07", 14.45476, -65.08716], ["2019-09-14T21:38:40", 14.51947, -65.13684], ["2019-09-14T22:36:10", 14.54931, -65.16028], ["2019-09-14T23:20:51", 14.57143, -65.17719], ["2019-09-14T23:36:06", 14.57834, -65.1825], ["2019-09-15T01:35:30", 14.63256, -65.2281], ["2019-09-15T02:35:04", 14.65735, -65.24878], ["2019-09-15T03:35:30", 14.68247, -65.2681], ["2019-09-15T04:34:37", 14.70717, -65.28912], ["2019-09-15T05:32:28", 14.73009, -65.31047], ["2019-09-15T06:32:28", 14.75335, -65.3321], ["2019-09-15T07:32:28", 14.77682, -65.35193], ["2019-09-15T08:30:58", 14.80095, -65.37385], ["2019-09-15T09:30:58", 14.82211, -65.39308], ["2019-09-15T10:30:58", 14.84271, -65.41342], ["2019-09-15T11:31:28", 14.86212, -65.43716], ["2019-09-16T02:24:29", 15.18352, -65.84125], ["2019-09-16T15:18:31", 15.32645, -66.06125], ["2019-09-16T16:19:04", 15.3408, -66.07257], ["2019-09-16T17:18:30", 15.35043, -66.07977], ["2019-09-16T18:18:30", 15.35674, -66.08526], ["2019-09-16T19:18:30", 15.36571, -66.09014], ["2019-09-16T23:14:48", 15.40718, -66.1282], ["2019-09-17T02:14:31", 15.44153, -66.15991], ["2019-09-17T10:09:18", 15.55174, -66.23944], ["2019-09-17T16:07:04", 15.61642, -66.28009], ["2019-09-17T17:05:22", 15.62757, -66.28207], ["2019-09-17T18:05:22", 15.64332, -66.28534], ["2019-09-18T00:02:27", 15.72255, -66.29395], ["2019-09-18T01:01:58", 15.7378, -66.29564], ["2019-09-18T06:59:59", 15.81661, -66.2803], ["2019-09-18T07:59:00", 15.82108, -66.27491], ["2019-09-18T08:59:00", 15.82554, -66.27276], ["2019-09-18T15:55:27", 15.86676, -66.28534], ["2019-09-18T21:50:58", 15.91262, -66.26056], ["2019-09-18T23:50:59", 15.92893, -66.2728], ["2019-09-19T01:49:59", 15.94743, -66.28494], ["2019-09-19T06:48:18", 15.99423, -66.28301], ["2019-09-19T12:46:19", 16.054, -66.2861], ["2019-09-19T20:41:57", 16.13749, -66.28952], ["2019-09-19T21:39:56", 16.147, -66.2899], ["2019-09-19T22:39:56", 16.15468, -66.28836], ["2019-09-20T03:37:59", 16.20291, -66.27374], ["2019-09-20T07:36:37", 16.2258, -66.26349], ["2019-09-20T12:34:44", 16.26296, -66.26083], ["2019-09-20T18:31:26", 16.30192, -66.25922], ["2019-09-20T19:30:58", 16.31221, -66.25928], ["2019-09-20T20:30:58", 16.32388, -66.25912], ["2019-09-20T21:20:14", 16.34772, -66.25632], ["2019-09-20T22:20:14", 16.35403, -66.25288], ["2019-09-20T23:20:14", 16.35562, -66.25176], ["2019-09-21T00:26:55", 16.36252, -66.24715], ["2019-09-21T01:26:55", 16.36694, -66.245], ["2019-09-21T02:26:55", 16.37097, -66.24303], ["2019-09-21T03:26:27", 16.37548, -66.24066], ["2019-09-21T04:26:30", 16.38187, -66.23806], ["2019-09-21T09:24:28", 16.41392, -66.21109], ["2019-09-21T11:23:05", 16.424, -66.20782], ["2019-09-21T17:19:27", 16.45294, -66.20941], ["2019-09-21T18:18:55", 16.4631, -66.20886], ["2019-09-21T23:20:10", 16.49834, -66.20551], ["2019-09-22T00:14:27", 16.50651, -66.20604], ["2019-09-22T01:14:27", 16.51741, -66.20569], ["2019-09-22T02:14:27", 16.52883, -66.20355], ["2019-09-22T10:10:00", 16.55174, -66.17055], ["2019-09-22T18:07:28", 16.58123, -66.17062], ["2019-09-22T22:04:02", 16.58054, -66.16995], ["2019-09-23T03:00:52", 16.60011, -66.18326], ["2019-09-23T13:56:29", 16.65838, -66.18872], ["2019-09-23T15:56:20", 16.67098, -66.18225], ["2019-09-23T16:53:37", 16.67402, -66.17981], ["2019-09-24T12:45:24", 16.68198, -66.05038], ["2019-09-24T13:43:26", 16.68138, -66.03525], ["2019-09-24T14:42:56", 16.69443, -66.01613], ["2019-09-24T15:42:26", 16.71615, -65.99229], ["2019-09-24T16:42:26", 16.73186, -65.96628], ["2019-09-24T17:43:58", 16.74856, -65.9388], ["2019-09-24T18:43:58", 16.76169, -65.91202], ["2019-09-24T19:41:29", 16.76835, -65.88457], ["2019-09-24T20:41:43", 16.77234, -65.85366], ["2019-09-24T21:41:29", 16.77209, -65.82165], ["2019-09-24T22:39:17", 16.76946, -65.7915], ["2019-09-25T00:39:42", 16.76277, -65.7355], ["2019-09-25T01:38:29", 16.75788, -65.70769], ["2019-09-25T02:38:29", 16.75329, -65.68322], ["2019-09-25T03:40:57", 16.74811, -65.65897], ["2019-09-25T04:36:54", 16.74255, -65.63708], ["2019-09-25T06:35:48", 16.72539, -65.59981], ["2019-09-25T07:35:48", 16.71758, -65.58505], ["2019-09-25T08:35:48", 16.70951, -65.56847], ["2019-09-25T09:35:34", 16.70236, -65.55295], ["2019-09-25T10:34:42", 16.69521, -65.53928], ["2019-09-25T11:32:34", 16.68706, -65.52665], ["2019-09-25T12:32:34", 16.67964, -65.51764], ["2019-09-25T13:32:27", 16.67462, -65.51185], ["2019-09-25T14:32:27", 16.67329, -65.50885], ["2019-09-25T15:33:00", 16.67519, -65.50644], ["2019-09-25T16:30:56", 16.67787, -65.50424], ["2019-09-25T17:31:19", 16.68057, -65.501], ["2019-09-25T19:32:59", 16.68978, -65.49362], ["2019-09-25T20:28:45", 16.69436, -65.48681], ["2019-09-25T21:29:00", 16.69923, -65.47815], ["2019-09-25T22:30:00", 16.71283, -65.46335], ["2019-09-25T23:30:00", 16.71407, -65.46198], ["2019-09-26T01:26:15", 16.73134, -65.44605], ["2019-09-26T02:26:15", 16.74288, -65.4379], ["2019-09-26T03:26:15", 16.75657, -65.42975], ["2019-09-26T05:25:56", 16.7895, -65.40781], ["2019-09-26T06:26:25", 16.80618, -65.39215], ["2019-09-26T07:25:41", 16.82268, -65.3737], ["2019-09-26T08:25:41", 16.83997, -65.35156], ["2019-09-26T09:25:29", 16.85301, -65.32611], ["2019-09-26T11:23:28", 16.87473, -65.27405], ["2019-09-26T15:24:43", 16.89419, -65.18002], ["2019-09-26T19:20:35", 16.89507, -65.10107], ["2019-09-26T20:19:59", 16.89247, -65.08476], ["2019-09-26T21:19:59", 16.88912, -65.07086], ["2019-09-26T22:19:59", 16.88603, -65.0585], ["2019-09-26T23:19:48", 16.88353, -65.04671], ["2019-09-27T00:19:30", 16.88048, -65.03531], ["2019-09-27T01:16:58", 16.87765, -65.02609], ["2019-09-27T02:18:00", 16.87456, -65.01813], ["2019-09-27T03:17:26", 16.87221, -65.01239], ["2019-09-27T06:16:58", 16.86609, -64.9982], ["2019-09-27T08:14:41", 16.86489, -64.99675], ["2019-09-27T09:14:41", 16.86708, -64.99693], ["2019-09-27T10:14:41", 16.87064, -64.9953], ["2019-09-27T11:14:05", 16.87551, -64.99426], ["2019-09-27T15:11:55", 16.91656, -64.99207], ["2019-09-27T16:10:34", 16.9269, -64.99096], ["2019-09-27T17:10:34", 16.93716, -64.98993], ["2019-09-27T18:09:58", 16.94858, -64.99102], ["2019-09-27T19:08:57", 16.96086, -64.99227], ["2019-09-27T20:08:57", 16.97464, -64.99039], ["2019-09-27T21:08:57", 16.98588, -64.98627], ["2019-09-27T22:07:38", 17.00649, -64.97255], ["2019-09-27T22:08:29", 16.99614, -64.97989], ["2019-09-27T23:19:18", 17.00795, -64.97116], ["2019-09-28T00:07:38", 17.01554, -64.96603], ["2019-09-28T01:06:26", 17.02412, -64.9595], ["2019-09-28T03:03:52", 17.03587, -64.94009], ["2019-09-28T04:03:52", 17.03973, -64.93125], ["2019-09-28T05:03:52", 17.04385, -64.92171], ["2019-09-28T06:05:28", 17.04753, -64.91064], ["2019-09-28T07:02:52", 17.05082, -64.9014], ["2019-09-28T09:03:59", 17.05508, -64.88226], ["2019-09-28T10:02:00", 17.05534, -64.87499], ["2019-09-28T11:02:00", 17.05616, -64.87061], ["2019-09-28T13:02:16", 17.05837, -64.86514], ["2019-09-28T14:00:18", 17.06031, -64.86476], ["2019-09-28T15:00:18", 17.06095, -64.86639], ["2019-09-28T16:00:58", 17.06261, -64.86823], ["2019-09-28T16:59:58", 17.06559, -64.86951], ["2019-09-28T17:59:58", 17.06902, -64.87072], ["2019-09-28T18:59:58", 17.0755, -64.87244], ["2019-09-28T19:58:30", 17.08256, -64.87433], ["2019-09-28T20:58:31", 17.09115, -64.87466], ["2019-09-28T21:58:27", 17.09825, -64.87302], ["2019-09-28T22:58:28", 17.10484, -64.87128], ["2019-09-28T23:19:19", 17.10711, -64.87094], ["2019-09-28T23:57:58", 17.11024, -64.87076], ["2019-09-29T01:56:27", 17.1223, -64.86736], ["2019-09-29T03:55:04", 17.13501, -64.86785], ["2019-09-29T06:54:41", 17.16434, -64.87482], ["2019-09-29T09:53:11", 17.2041, -64.87112], ["2019-09-29T10:52:03", 17.21553, -64.86776], ["2019-09-29T11:50:10", 17.22562, -64.86426], ["2019-09-29T12:50:10", 17.23472, -64.8616], ["2019-09-29T13:48:59", 17.24225, -64.85822], ["2019-09-29T14:48:59", 17.25122, -64.85684], ["2019-09-29T15:48:59", 17.26152, -64.85522], ["2019-09-29T16:47:28", 17.2743, -64.85355], ["2019-09-29T17:47:28", 17.28765, -64.85226], ["2019-09-29T18:47:28", 17.3025, -64.85046], ["2019-09-29T19:47:30", 17.31882, -64.84784], ["2019-09-29T20:46:55", 17.33569, -64.84402]], "drifter_0": []} \ No newline at end of file diff --git a/accessibility.html b/accessibility.html deleted file mode 100644 index 40ce4ae1..00000000 --- a/accessibility.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - Accessibility on the OceanParcels website - - - - - - - - - - - - - - - - - - - - - - -
-
-

Accessibility on the OceanParcels website

- The OceanParcels Website has not been formally assessed for compliance against Web Content Accessibility Guidelines (WCAG). The software providers (Imperial College and Utrecht University) have undertaken a lot of usability improvements to the pages to improve the experience for users with disabilities and visual impairments. The Website is considered to be partially conformant with WCAG 2.1 AA standards,. Partially conformant means that some parts of the content do not conform to the accessibility standards. We will do our best to address all reasonable requests regarding this website and its use. Please contact me. I endeavour to respond within 7 days. -
-

Last updated

- This page was updated last on 10-11-2020. -
- - - - diff --git a/articles.html b/articles.html deleted file mode 100644 index 18c19eb5..00000000 --- a/articles.html +++ /dev/null @@ -1,11196 +0,0 @@ - - - - - - - - - Articles citing OceanParcels - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
- -

Peer-reviewed articles using Parcels

-
-
-
- -
-
- The response of a coastal ocean model, simulating a typical eastern boundary system, to downwelling-favorable winds with and without the presence of a submarine canyon is studied. Three contrasting bathymetric configurations, considering shelves with different depths and slopes, are evaluated. Experiments without a submarine canyon represent the well-known downwelling circulation and cross-shore structure with a downwelling front and the development of frontal instabilities generating density anomalies in the bottom layer. The presence of the submarine canyon drives important changes in cross-shore flows, with opposing velocities on either side of the canyon. Onshore (offshore) and downward (upward) velocities develop in the upstream (downstream) side of the canyon in the time-dependent and advective phases. Instabilities develop and are modified principally downstream of the canyon. Overall, the net impact of the canyon is to enhance offshore and downward transport. However, particle tracking experiments reveal that particles can become trapped inside the canyon in an anticyclonic circulation when the particles pass the canyon over the continental slope or when particles inside the canyon are affected by downwelling conditions. Overall, ∼20 %–23 % (∼15 %–18 %) of particles released directly upstream (in the canyon) at depths below the continental shelf become trapped inside the canyon until the end of the simulations (15 d). -
-
-
-
-
-

-
-
-
- -
-
- The study's objective is to construct Lagrangian pathways under the Filchner-Ronne Ice Shelf (FRIS) and in the Weddell Sea using the data of numerical simulation of currents and Lagrangian numerical methods. The results of modeling the circulation, temperature, and salinity in the Weddell Sea and the FRIS cavity from the Whole Antarctica Ocean Model were used to run the particle-tracking model (Parcels) for computing Lagrangian particle trajectories. The basic version of the Parcels model does not have an option for particle reflection from the solid boundaries, including the ice shelf. Therefore, the corresponding kernel was used in the study. To avoid errors in interpolation near the solid boundary when the model algorithm cannot find enough grid nodes around the particle, the function of particle recovery was implemented. To analyze the movement variations of the water masses under the FRIS, a set of particles was released in the Ronne Depression near the ice shelf front. Simulation continued for 20 years of particle movement. Particles were released at two depths: 350 m and 500 m, every 4 hr within the first 365 days. To characterize the redistribution of water masses, we calculated the ‘visitation frequency’, i.e., the percentage of the particles that visited each 2 × 2 km grid column at least once in a modeling period. The mean age of visits was also calculated to characterize the age of water masses. The results of this analysis generally agreed with schemes based on water mass analysis. The released particles first move southward along the Ronne Trough. The flow then turns to the east, reaching the passage between Berkner Island and Henry Ice Rise after three years. After ten years, the released particles reach the Filchner Trough, through which water flows out to the shelf of the southern part of the Weddell Sea. Over time, the particles penetrate all parts of the cavity. The particles also cross the Ronne Shelf front and are carried away by currents on the Weddell Sea shelf. In 20 years, almost the same number of particles left the cavity through the Ronne ice front (43%) and the Filchner ice front (37%), whereas the rest of the particles (20%) remained under FRIS. -
-
-
-
-
-

-
-
-
- -
-
- Marine debris (MD) can be a transport vector for diverse marine communities, including non-indigenous species (NIS). This study assessed MD potential role as a substrate for colonization and dispersal vector for NIS in the Madeira Archipelago (NE Atlantic) by examining three MD categories: floating (FMD), seafloor (SMD), and beached (BMD). Opportunistic sampling, conducted in collaboration with local maritime stakeholders, documented MD sightings with photographs and GPS coordinates. A total of 92 MD items were inspected, revealing 108 fouling species across 11 phyla, with 13 % identified as NIS. SMD exhibited the highest proportion of NIS (9.6 %), followed by BMD (4.4 %) and FMD (3.9 %). Notably, the study provides evidence that FMD functions as both a substrate and a dispersal vector for NIS in Madeira waters. Combining biogeographic analyses, oceanographic modelling, and MD identification marks, this study highlighted the North Atlantic Subtropical Gyre's currents as key pathways, transporting MD items from the Wider Caribbean, the North American east coast, and the Iberian Peninsula to Madeira within 2–3 years. These findings emphasize Madeira's dual role as both a recipient and exporter of MD, with implications for NIS introductions and secondary spread. This study underscores the urgent need for standardized monitoring, stakeholder engagement, and proactive MD management strategies to mitigate NIS introductions and protect sensitive marine ecosystems like Macaronesia from the ecological risks of biological invasions. -
-
-
-
-
-

-
-
-
- -
-
- Variability in larval transport has long been hypothesized to drive recruitment fluctuations in fishes, yet evidence for these hypotheses is often lacking. Further, the origins of many of these hypotheses come from temperate to subpolar regions, leaving such questions largely underexplored for other regions, especially the tropics. To assess drivers of larval transport in a tropical archipelago, we simulated the dispersal of a culturally and commercially important bottomfish, uku (Aprion virescens), from Penguin Bank, its most prominent spawning location in the main Hawaiian islands. We used Lagrangian particle tracking models forced by a regional ocean model to assess the degree of interisland potential connectivity from this spawning location and the drivers of interannual variability in this potential connectivity across 13 years from 2008 to 2020. Simulated uku larvae released from Penguin Bank primarily reached Maui Nui and Oʻahu, the nearest potential settlement areas, with lower potential connectivity to more distant regions. Interannual variability in overall number of connections was pronounced and linked both to local wind speed and direction, with increased particle loss occurring during higher overall wind speeds and more northerly winds. Recruitment deviations from the stock assessment of uku showed a similar pattern, with recruitment estimates significantly decreasing during years of strong northerly winds. Our results provide evidence, derived from a simulation model integrating ecological and physical components, of larval dispersal patterns contributing to the recruitment of a socioeconomically important species and sensitivity of these patterns to local wind forcing. Understanding how these wind patterns will change in a warming climate may be essential to understanding patterns in uku recruitment in coming years. -
-
-
-
-
-

-
-
-
- -
-
- Carbon Dioxide Removal (CDR) from the atmosphere is unavoidable if we are to meet the Paris Agreement’s goal of limiting global warming to 1.5°C, and almost certainly required to limit warming to 2°C. The ocean exchanges carbon dioxide (CO2) with the atmosphere and is a large repository of carbon that could either be partially emptied to allow more CO2 absorption or have its carbon storage capacity enhanced to allow it to remove additional CO2 from the atmosphere. Early-stage techniques exist to utilise the ocean in atmospheric CO2 removal, but typically, the atmospheric CO2 removal these techniques stimulate happens downstream of their activity. Verifying the carbon removal associated with these techniques, while critical when evaluating the approaches and pricing the removal, is challenging. This study briefly reviews the challenges associated with verifying the carbon removal associated with non-biological (abiotic) engineered marine CDR approaches, specifically Ocean Alkalinity Enhancement and Direct Ocean Carbon Capture and Storage, and presents the findings from a workshop held with interested parties spanning industry to government, focused on their collective requirements for the Monitoring, Reporting, and Verification (MRV) of carbon removal. We find that it is possible to agree on a common set of principles for abiotic marine MRV, but identify that delivering this MRV with today’s understanding and technology could be prohibitively expensive. We discuss focal areas to drive down marine MRV costs and highlight the importance of specification of MRV criteria by an ultimate regulator to stimulate investment into the required work. High-quality MRV is important to correctly price any CO2 removal, but we identify that accessibility and transparency in MRV approaches are also key in realising the broader benefits of MRV to society. -
-
-
-
-
-

-
-
-
- -
-
- The Southern Ocean plays an integral role in the global climate system, exchanging heat, salt, and carbon throughout the major ocean basins via the deep, fast-flowing Antarctic Circumpolar Current. The Antarctic Circumpolar Current is bounded by spatiotemporally varying fronts that partition distinct water masses. Locating and quantifying cross-front transport is crucial for understanding global patterns of inter-basin exchange; however, this is challenging because fronts are typically defined by hydrographic properties, such as temperature or salinity, which are subject to external sources and sinks, rather than by properties of the flow itself. Here we show that Southern Ocean fronts can be characterized by material contours that minimize deformation and cross-contour mixing over a prescribed time window. By tracking material contours in a sequence of such windows, we quantify cross-front transport and show that the fronts exhibit a global pattern of alternating poleward and equatorward transport caused by frontal meandering in regions downstream of prominent sea-floor obstacles. These results highlight the importance of bathymetric features in controlling Southern Ocean dynamics and inter-basin exchange. -
-
-
-
-
-

-
-
-
- -
-
- Based on Lagrangian particle tracking experiments using long-term, high-resolution reanalysis data, we investigate the pathways of water transport and reflux at different depths in the intermediate layer of the Luzon Strait (LS). Reflux is defined as the phenomenon where particles, once released at the 121°E section, subsequently return to the same section. The results indicate that the majority of reflux occurs within 60 days and can be categorized into two scenarios according to the return time. The case with the shorter return time involves higher-frequency flow variations in the LS. In contrast, the case with the longer return time not only modifies the zonal transport across the LS but also facilitates meridional connections between the northern outflow toward the western Pacific Ocean and the central inflow into the South China Sea (SCS). The pattern and seasonal variations of reflux vary significantly with depth. At the 500 m depth, the reflux is mainly attributed to the central inflow associated with the Kuroshio intrusion, with only 5% of the northern outflow returning to the 121°E section. At the 1250 m layer, the northern outflow is more prone to reflux, with 60% flowing back to the section, while the reflux of central inflow results in only a small fraction of the inflow water returning to the western Pacific Ocean. These findings highlight the critical role of reflux processes in regulating intermediate-layer water exchanges through the LS, contributing to a more comprehensive understanding of the interactions between the western Pacific and the SCS. -
-
-
-
-
-

-
-
-
- -
-
- The water quality in port domains is highly dependent on the capacity for renewal and mixing with external water. This study uses Lagrangian modelling to investigate renewal time in Barcelona, Tarragona, and Gijón harbours (Spain), which represent semi-enclosed micro-tidal and meso-tidal environments. For this purpose, different particle-tracking simulations have been carried out in each of the ports to study the trends of circulation and water renewal trends both on the surface layer and at the bottom. The results indicate that in microtidal Mediterranean ports, the renewal time is longer at the bottom (32 days in Barcelona and 61 days in Tarragona). Conversely, in the mesotidal port of Gijón, located on the Cantabrian coast, the opposite pattern is observed, with higher renewal times at the surface (14 days). While the results from Lagrangian modelling exhibit magnitudes comparable to in situ measurements from previous studies, it remains essential to evaluate the specific characteristics of each method and compare these findings with other similar works. -
-
-
-
-
-

-
-
-
- -
-
- The Eocene-Oligocene transition (EOT) is characterised by the inception of the large-scale Antarctic ice sheet. However, evidence of earlier glaciation during the Eocene has been found, including the presence of ice-rafted debris (IRD) at Ocean Drilling Program (ODP) Leg 113 Site 696 on the South Orkney Microcontinent (SOM) (Carter et al., 2017). This suggests marine-terminating glaciers should have been present in the southern Weddell Sea region during the late Eocene, generating sufficiently large icebergs to the South Orkney Microcontinent to survive the high Eocene ocean temperatures. Here, we use Lagrangian iceberg tracing in a high-resolution eddy-resolving ocean model of the late Eocene (Nooteboom et al., 2022) to show that icebergs released from offshore the present-day Filchner Ice Shelf region and Dronning Maud Land could reach the South Orkney Microcontinent during the late Eocene. The high melt rates under the Eocene warm climate require a minimum initial iceberg mass on the order of 100 Mt and an iceberg thickness of several tens of metres to be able to reach the South Orkney Microcontinent. Although this places the iceberg mass at the larger end of the present-day range of common iceberg masses around Antarctica, the minimum estimates are not unfeasible; hence, the present study confirms previous findings suggesting glaciation and iceberg calving were possible in the late Eocene. -
-
-
-
-
-

-
-
-
- -
-
- This study investigates the transport and accumulation of Floating Marine Litter (FML) in the northwestern Black Sea, with a focus on the influence of the Dniester River and regional circulation patterns, including the Sevastopol Eddy. Two numerical modeling configurations (C1 and C2) are compared to assess their effectiveness in simulating FML dispersion. While both configurations show similar final beaching percentages, C2, which incorporates pre-calculated shoreline distances, can be more spatially accurate as it accounts for the complex shape of the coastline. The model's capability is validated through comparisons with previous models, satellite-derived Suspended Particulate Matter (SPM), and in situ observations from the 2017 EMBLAS campaign. These comparisons highlight FML accumulation patterns, particularly at the mouth of the Dniester River in the Zatoka region and in open waters within the Northwestern Shelf (NWS). The study suggests a correlation between satellite SPM observations and microplastic (MP) presence in coastal zones around the Dniester River, indicating avenues for future research. Understanding these dynamics is crucial for coastal management, with significant implications for environmental conservation strategies in the northwestern Black Sea. -
-
-
-
-
-

-
-
- -
-
- Coastal areas are considered potential sinks for plastic in marine environments. Data from a Lagrangian numerical simulation at a coastal scale using high-resolution hydrodynamic information and observational data of river debris discharge were analysed to determine the environmental variables from meteorological forcing or coastline orientation contributing to particle beaching. A beaching likelihood parameter was developed to quantitatively measure the propensity for an area to receive or accumulate particles from a known outflow source. Statistical analyses of particle beaching were conducted to reveal possible relationships with hydrodynamic variables. A debris mass budget was calculated from the river release observational data used in the simulation. Areas close to the release points received the highest amounts of particles and also registered the highest beaching likelihood values. Significant wave height mildly affected particle beaching (Pearson’s r=0.36). Relative perpendicular wave directions promoted beaching in coastlines with lower azimuths (vertical orientation), whereas those with higher azimuths (horizontal orientation) were more affected by relative alongshore wave directions. The mass contribution from river discharge on beaches where cleanup data was available was 6.0% of the total debris collected. The beaching likelihood parameter revealed the influence of coastal geometry on particle deposition in an area. Comparisons with other studies regarding beaching amounts and particle residence times are challenging due to the scale difference. The complexity of the beaching process makes it difficult to establish relationships with hydrodynamic variables, although a clear association between the coastline orientation and wave direction was established. The debris mass contribution from the two rivers included in the simulation was two orders of magnitude lower than indicated in other studies for the area. -
-
-
-
-
-

-
-
-
- -
-
- Recent work has revealed the presence of an offshore near-surface plume of dissolved trace elements in the South Atlantic Ocean (SAO). Dissolved Fe (dFe) supply from the Congo plume is equivalent to ∼40% of the annual atmospheric dFe supply to the SAO. However this plume is not captured by biogeochemical models, raising questions about its exact sources. To help understand the potential source mechanisms, we use particle tracking experiments to investigate elemental distributions. Results suggest that elevated concentrations of some elements in the Congo plume are primarily sourced from river discharge and wet atmospheric deposition with minimal influence from shelf sediments. River discharge is the main source in shelf regions and some off-shelf regions, whereas atmospheric deposition dominates the area to the southwest of the Congo River outflow. A quantitative analysis along 3S specifically for dFe suggests a decrease in the contribution of river discharge from 90% to 30% moving off-shelf, with a corresponding increase in the contribution of atmospheric deposition. Within the shelf zone, atmospheric deposition accounts for roughly 20%–40% and could be a major source of dFe around the river mouth. Integration of data from cruise GA08 reinforces the finding that wet deposition augments the concentrations of dFe, manganese (dMn), and cobalt (dCo) at distances over 1,000 km from the river mouth. Given present-day patterns of nitrate, Fe, and Co limitation for primary producers in the SAO, changing rainfall patterns may have long-term implications for both regional elemental budgets and ecologically dependent processes sensitive to trace element ratios. -
-
-
-
-
-

-
-
-
- -
-
- Numerical simulations of marine surface particle dispersal are a crucial tool for addressing many outstanding issues in physical oceanography of societal relevance, such as marine plastic pollution. However, the quality of these Lagrangian simulations depends on the ability of the underlying numerical model to represent prevailing ocean circulation features. Here, we investigate how simulated marine surface particle dispersal changes if the – often omitted or only approximated – impact of wind-generated surface waves on upper-ocean circulation is considered. We use velocity fields from a high-resolution coupled ocean–wave model simulation and a complementary stand-alone ocean model simulation for the Mediterranean Sea to answer the following questions: (1) how does the explicit representation of waves impact simulated surface particle dispersal, and what is the relative impact of Stokes drift and wave-driven Eulerian currents? (2) How accurately can the wave impact be approximated by the commonly applied approach of advecting particles with non-wave-driven Eulerian currents and Stokes drift from stand-alone ocean and wave models? We find that the representation of surface waves tends to increase the simulated mean Lagrangian surface drift speed in winter through the dominant impact of Stokes drift and tends to decrease the mean Lagrangian surface drift speed in summer through the dominant impact of wave-driven Eulerian currents. Furthermore, simulations that approximate the surface wave impact by including Stokes drift (but ignoring wave-driven Eulerian currents) do not necessarily yield better estimates of surface particle dispersal patterns with explicit wave impact representation than simulations that do not include any surface wave impact. Our results imply that – whenever possible – velocity fields from a coupled ocean–wave model should be used for surface particle dispersal simulations. -
-
-
-
-
-

-
-
-
- -
-
- Agulhas Leakage transports relatively warm and salty Indian Ocean waters into the Atlantic Ocean and as such is an important component of the global ocean circulation. These waters are part of the upper limb of the Atlantic meridional overturning circulation (AMOC), and Agulhas Leakage variability has been linked to AMOC variability. Agulhas Leakage is expected to increase under a warming climate due to a southward shift in the Southern Hemisphere westerlies, which could further influence the AMOC dynamics. This study uses a set of high-resolution preindustrial control, historical and transient simulations with the Community Earth System Model (CESM) with a nominal horizontal resolution of 0.1° for the ocean and sea ice and 0.25° for the atmosphere and land. At these resolutions, the model represents the necessary scales to investigate Agulhas Leakage transport variability and its relation to the AMOC. The simulated Agulhas Leakage transport of 19.7 ± 3 Sv lies well within the observed range of 21.3 ± 4.7 Sv. A positive correlation between the Agulhas Current and the Agulhas Leakage is shown, meaning that an increase of the Agulhas Current transport leads to an increase in Agulhas Leakage. The Agulhas Leakage impacts the strength of the AMOC through Rossby wave dynamics that alter the cross-basin geostrophic balance with a time lag of 2–3 years. Furthermore, the salt transport associated with the Agulhas Leakage influences AMOC dynamics through the salt–advection feedback by reducing the AMOC's freshwater transport at 34° S. The Agulhas Leakage transport indeed increases under a warming climate due to strengthened and southward-shifting winds. In contrast, the Agulhas Current transport decreases due to a decrease in the Indonesian Throughflow and the strength of the wind-driven subtropical gyre. The increase in the Agulhas Leakage is accompanied by a higher salt transport into the Atlantic Ocean, which could play a role in the stability of the AMOC via the salt–advection feedback. -
-
-
-
-
-

-
-
-
- -
-
- We compared circulations under the Filchner-Ronne Ice Shelf (FRIS) and the Ross Ice Shelf (RIS) using output from the Whole Antarctica Ocean Model driven by repeated year atmospheric forcing and processed by the particle-tracking Parcels model. Three Lagrangian characteristics were calculated: the visitation frequency, the mean age, and the representative particle trajectory. In both FRIS and RIS, the High Salinity Shelf Water (HSSW) entered through depressions off the western coast of ice shelves. We found that HSSW transformed into the Ice Shelf Water that departed both ice shelves at central ice front locations (approximately 58-57°W in Ronne Ice Shelf and 175°W in RIS). The outflow through the Ronne Ice Front we identified has not attracted attention until now, although it has been observed. Almost half of the particles departed FRIS through the Ronne Ice Front, whereas about 20% stayed under FRIS. The rest of the particles flow out through the Filchner Trough. In contrast, only 2% of the particles stayed under RIS. The mean age of water leaving FRIS through the Ronne Ice Front and the water leaving RIS was 7–8 years, whereas the water leaving FRIS through the Filchner Trough was about 10 years. -
-
-
-
-
-

-
-
-
- -
-
- Highly urbanized river deltas are hotspots for microplastic (MP) pollution, yet research on the transport and accumulation of MPs from these estuaries remains limited. This study employed a Lagrangian particle-tracking model to elucidate the pathways and accumulation of MPs originating from the Pearl River Estuary over a three-year simulation. The results indicated that Stokes drift was the predominant factor influencing the southwestward transport of MPs. This movement led to their accumulation along the northeastern and southeastern coasts of Hainan Island, with a potential extension towards the Gulf of Thailand and Malaysia during the autumn and winter seasons. The combined effects of Stokes drift and washing-off processes enable some MPs entering the Beibu Gulf through Qiongzhou Strait. The washing-off processes disrupted the seasonal variations of MP pathways, altering the spatiotemporal distribution of MPs across different regions of the South China Sea. These findings could facilitate the local policymaking and environment protecting. -
-
-
-
-
-

-
-
-
- -
-
- The persistent increase in marine plastic litter has become a major global concern, with one of the highest plastic concentrations in the world’s oceans found in the Wider Caribbean Region (WCR). In this study, we use marine plastic litter tracking simulations to investigate where marine plastic accumulates, i.e., hotspots, in the WCR and how the accumulation varies on seasonal timescales. We show that most of the marine plastic waste converges on the coastlines shortly after being released into the WCR because of the strong surface current and the predominant easterly winds. Major plastic accumulations take place along (i) the western coastline of the WCR, especially the north–south-oriented coasts of Costa Rica/Nicaragua, Guatemala/Belize/Mexico, and Texas, and (ii) the coastlines of Haiti–Dominican Republic and Venezuela. Relatively low plastic accumulation is found along western Florida, the western Yucatán peninsula, and the leeward and windward Caribbean islands. Accumulation along the western WCR coastlines is modulated primarily by ocean currents and exhibits significant seasonal variabilities due to changes in wind patterns. The accumulation observed on the Haiti–Dominican Republic and Venezuela coastlines is primarily due to the proximity of large, mismanaged plastic waste sources. Finally, we discuss the uncertainty associated with the choices made in defining the different criteria for plastic beaching in the models. -
-
-
-
-
-

-
-
-
- -
-
- The northeastern part of the North Atlantic subpolar gyre is a key passage for the Atlantic Meridional Overturning Circulation upper cell. To this day, the precise pathway and intensity of bottom currents in this area is not clear. In this study, we make use of regional high resolution numerical modeling to suggest that the main bottom current flowing south of Iceland originates from both the Faroe-Banks Channel and the Iceland-Faroe Ridge and then flows along the topographic slope. When flowing over the rough topography, this bottom current generates a 200 m large bottom mixed layer. We further demonstrate that many submesoscale structures are generated at the southernmost tip of the Icelandic shelf, which subsequently spread water masses in the Iceland Basin. These findings have major implication for the understanding of the water masses transport in the North Atlantic, and also for the distribution of benthic species along the Icelandic shelf. -
-
-
-
-
-

-
-
-
- -
-
- Connectivity aids the recovery of populations following disturbances, such as coral bleaching and tropical cyclones. Coral larval connectivity is a function of physical connectivity and larval behaviour. In this study, we used OceanParcels, a particle tracking simulator, with 2D and 3D velocity outputs from a high resolution hydrodynamic-biogeochemical marine model (RECOM) to simulate the dispersal and settlement of larvae from broadcast spawning Acropora corals in the Moore Reef cluster, northern Great Barrier Reef, following the annual spawning events in 2015, 2016 and 2017. 3D velocity simulations showed 19.40–68.80% more links and sinks than those of 2D simulations. Although the patterns of connectivity among sites vary over days and years, coral larvae consistently dispersed from east to west in the cluster domain, with some sites consistently acting as sources or sinks for local larval recruitment. Results can inform coral reef intervention plans for climate change, such as the design of marine protected areas and the deployment of proposed interventions within reef clusters. For example, the wider benefits of interventions (e.g., deployment of heat adapted corals) may be optimised when deployed at locations that are a source of larvae to others within comparable habitats across the reef cluster. -
-
-
-
-
-

-
-
-
- -
-
- The success of non-native species (NNS) invasions depends on patterns of dispersal and connectivity, which underpin genetic diversity, population establishment and growth. In the marine environment, both global environmental change and increasing anthropogenic activity can alter hydrodynamic patterns, leading to significant inter-annual variability in dispersal pathways. Despite this, multi-generational dispersal is rarely explicitly considered in attempts to understand NNS spread or in the design of management interventions. Here, we present a novel approach to quantifying species spread that considers range expansion and network formation across time using the non-native Pacific oyster, Magallana gigas (Thunberg 1793), as a model. We combined biophysical modelling, dynamic patch occupancy models, consideration of environmental factors, and graph network theory to model multi-generational dispersal in northwest Europe over 13 generations. Results revealed that M. gigas has a capacity for rapid range expansion through the creation of an ecological network of dispersal pathways that remains stable through time. Maximum network size was achieved in four generations, after which connectivity patterns remained temporally stable. Multi-generational connectivity could therefore be divided into two periods: network growth (2000−2003) and network stability (2004–2012). Our study is the first to examine how dispersal trajectories affect the temporal stability of ecological networks across biogeographic scales, and provides an approach for the assignment of site-based prioritisation of non-native species management at different stages of the invasion timeline. More broadly, the framework we present can be applied to other fields (e.g. Marine Protected Area design, management of threatened species and species range expansion due to climate change) as a means of characterising and defining ecological network structure, functioning and stability. -
-
-
-
-
-

-
-
-
- -
-
- Submesoscale currents and internal gravity waves achieve an intense turbulent cascade near the ocean surface [depth of 0–O(100) m], which is thought to give rise to significant energy sources and sinks for mesoscale eddies. Here, we characterize the contributions of nonwave currents (NWCs; including eddies and fronts) and internal gravity waves (IGWs; including near-inertial motions, lee waves, and the internal wave continuum) to near-surface submesoscale turbulence in the Drake Passage. Using a numerical simulation, we combine Lagrangian filtering and a Helmholtz decomposition to identify NWCs and IGWs and to characterize their dynamics (rotational versus divergent). We show that NWCs and IGWs contribute in different proportions to the inverse and forward turbulent kinetic energy cascades, based on their dynamics and spatiotemporal scales. Purely rotational NWCs cause most of the inverse cascade, while coupled rotational–divergent components of NWCs and coupled NWC–IGWs cause the forward cascade. The cascade changes direction at a spatial scale at which motions become increasingly divergent. However, the forward cascade is ultimately limited by the motions’ spatiotemporal scales. The bulk of the forward cascade (80%–95%) is caused by NWCs and IGWs of small spatiotemporal scales (L < 10 km; T < 6 h), which are primarily rotational: submesoscale eddies, fronts, and the internal wave continuum. These motions also cause a significant part of the inverse cascade (30%). Our results highlight the requirement for high spatiotemporal resolutions to diagnose the properties and large-scale impacts of near-surface submesoscale turbulence accurately, with significant implications for ocean energy cycle study strategies. -
-
-
-
-
-

-
-
-
- -
-
- The sinking of the RMS Titanic on 15 April 1912 remains one of most iconic maritime disasters in history. Today, the wreck site lies in waters 3800 m deep approximately 690 km south southeast of Newfoundland, Atlantic Canada. The wreck and debris field have been colonized by many marine organisms including the octocoral Chrysogorgia agassizii. Because of the rapid deterioration of the Titanic and the vulnerability of natural deep-sea coral populations to environmental changes, it is vital to understand the role the Titanic as well as other such structures could play in connecting ecosystems along the North American slope. Based on Lagrangian experiments with more than one million virtual particles and different scenarios for larval behavior, given the uncertainties around the biology of chrysogorgiids, the dispersal of larvae spawned at the Titanic wreck is studied in a high-resolution numerical ocean model. While the large-scale bathymetry shields the Titanic from a strong mean flow, mesoscale ocean eddies can considerably affect the deep circulation and cause a significant speed up, or also a reversal, of the circulation. As a consequence, the position of upper and mid-ocean eddies in the model largely controls the direction and distance of larval dispersal, with the impact of eddies outweighing the importance of active larval swimming in our experiments. Although dependent on larval buoyancy and longevity, we find that the Titanic could be reached by larvae spawned on the upper slope east of the Grand Banks. Therefore, the Titanic could act as a stepping stone connecting the upper to the deep continental slope off Newfoundland. From the Titanic, larvae then spread into deep Canadian waters and areas beyond national jurisdiction. -
-
-
-
-
-

-
-
-
- -
-
- A new Community Earth System Model/Modular Ocean Model 6 (CESM/MOM6) ocean-only regional configuration of the Caribbean Sea is presented and validated. The model configuration was developed as a response to the rising need for high-resolution models for climate impact applications. The configuration is validated for the period covering 2000–2020 against ocean reanalysis and a suite of observation-based datasets. Particular emphasis is paid to the configuration's ability to represent the dynamical regime and properties of the region across sub-seasonal, seasonal, and inter-annual timescales. Near-surface fields of temperature, salinity, and sea surface height are well represented. In particular, the seasonal cycle of sea surface salinity and the spatial pattern of the low salinity associated with the Amazon and Orinoco river plumes is well captured. Surface speeds compare favorably against reanalysis and show that the mean flows within the Caribbean Sea (CS) are well represented. The model reproduces known pathways and timing for river plume waters intruding the region. The seasonal cycle of the mixed-layer depth is also well represented, with biases of less than 3 m when comparing to ocean reanalysis. The vertical structure and stratification across the water column is represented favorably against ship-based observations, with the largest simulated biases in the near-surface water mass and the sub-surface salinity maximum associated with the sub-tropical underwater mass. The temperature and salinity variability in the vertical structure is well represented in the model solution. We show that mean ocean mass transport across the multiple passages in the eastern Caribbean Sea compares favorably to observation-based estimates, but the model exhibits smaller variability and underestimates the mean Yucatán Channel transport when compared to observations and ocean reanalysis estimates. Furthermore, a brief comparison against a 1° CESM global ocean configuration shows that the higher-resolution regional model better represents the extent and seasonality of the Amazon River plume and hence better represents near-surface salinity and mixed-layer depth in the CS. Overall, the regional model reproduces the processes within the Caribbean Sea to a good degree and opens the possibility of regional ocean climate studies in support of decision-making within CESM. -
-
-
-
-
-

-
-
-
- -
-
- How a pair of pollutant parcels deviates from each other with an initial separation distance r0, known as relative dispersion or Richardson dispersion, is relevant in many circumstances. This study examines the spatiotemporal similarity of the Richardson relative dispersion in the Gulf of Mexico by reanalyzing the Lagrangian trajectory of the surface drifter provided by two famous field experiments, that is, the Grand Lagrangian Deployment and the Lagrangian Submesoscale Experiment. The experimental dispersion curve indicates a critical separation time. When above this critical time, the dispersion shows an asymptotic power law growth independent of the initial separation distance r0. Below it, the dispersion curve shows a strong spatiotemporal dependence with two spatiotemporal similarity regimes that can be identified for both experiments by looking at the isoline of the normalized dispersion curve. A new similarity variable is introduced to successfully collapse measured dispersion curves. However, the observed spatiotemporal similarity cannot be reproduced by the submesoscale preserved model. Thus, our results suggest that small-scale fluctuations play a crucial role in the relative dispersion of oceanic flows. -
-
-
-
-
-

-
-
-
- -
-
- The recovery of isolated reef systems is a complex process that is usually associated with the supply of coral larvae from distant reefs (or large-scale connectivity). However, a frequently neglected process is the potential for supply within the reef itself (or local connectivity). In this study, we quantify and characterize the role of local connectivity over 21 yr of simulated annual coral spawning on an isolated coral reef atoll using outputs from a high-resolution biophysical model (< 150 m horizontal resolution) along with network analysis. We find that approximatively half of the coral reef larvae dispersal remains local (within 100 s m to 10 s km of release location), while the remaining half contributes to long-distance dispersal (> 100 s km) and is exported away from the system. Local dispersal plays a pivotal role in creating a highly-connected network across the reef, enhancing exchanges of larvae within the same reef patches (local retention), across reef zones (e.g., lagoon, reef flat), and across the larger reef system. Finally, we show that this highly-connected network exhibits a certain level of robustness, even when exposed to environmental stressors such as thermal-induced mortality. Our findings highlight the previously overlooked role of local scale dispersal in driving recovery of isolated reef systems and emphasize the importance of targeted local management actions, indicating that efforts directed at enhancing and preserving local connectivity can have a substantial impact on the overall health and resilience of isolated reef ecosystems. -
-
-
-
-
-

-
-
-
- -
-
- Capture-mark-recapture methods (CMR) are a commonly used tool in species conservation and management for the estimation of demographic parameters in a population. However, biases in these estimates can occur due to the heterogeneity in processes influencing recapture data or the experimental design. We outline an approach to quantify and identify ways to reduce this bias through both experimental design and data analysis, using individual based modelling (IBMs). By using an IBM that includes key sources of heterogeneity that are believed to exist in the system, the release and recapture of marked individuals can be simulated under differing experimental, behavioural or landscape scenarios. Using this IBM as a data-generator, we compare a simulated population of individuals with a subset of that population that represent those marked and recaptured in a CMR experiment. Parameter estimates from the data generated by the marked subset are then compared to ‘true’, realised parameters from the wider, unmarked population. We demonstrate this with an application of ‘simulated tagging’ of Pacific skipjack tuna (Katsuwonus pelamis), using scenarios of different release locations of marked individuals, alternative band-recovery models, and differing assumptions that define the spatial extent of the unmarked population. We quantify the error in the estimated survival and fishing mortality parameters and examine how these can be reduced by following differing release and analysis strategies. We show that spatiotemporal heterogeneity of individual dispersion and recovery effort (i.e. fishing pressure) led to severe bias in recapture probability estimates, up to 361%, regardless of experimental design. However, when the baseline of the unmarked population of which marked animals were assumed to be representative was defined by spatial coverage of recaptures, rather than a fixed, spatial management area, bias was reduced to 25%. Our results show that the use of IBM frameworks exploring alternative hypotheses, either in the design of or post-hoc analyses of CMR experiments, support maximising the information that can be derived and quantify the degree of potential bias due to analysis model mis-specification. Furthermore, these methods can benefit other sampling and monitoring programmes in systems with high levels of spatial or ecological heterogeneity. -
-
-
-
-
-

-
-
-
- -
-
- Mesoscale dynamics is essential to understanding the physical and biological processes of the coastal ocean regions due to its ability to modulate water properties. However, on the shelf, interactions between eddies, coastal currents, and topography involve complex processes whose observation, understanding, and accurate simulation still pose a major challenge. The purpose of our work is to quantify the mesoscale eddies in the northern Gulf of Guinea, off West Africa (10°W–10°E, 2°N–7°N), and their dynamical interaction with the near-surface ocean particularly in the coastal upwelling that occurs in summer between 2°W and 2°E. We used a regional NEMO model simulation at 1/36° resolution over the 2007–2017 period with daily outputs. A total of 38 cyclonic and 35 anticyclonic eddy trajectories were detected over the 2007–2017 period in July–August–September (JAS), with a mean radius along their trajectories of 95 km and 125 km, respectively. The mean lifetime for cyclones and anticyclones is approximately 1 month with an associated sea-level amplitude between 1 and 2 cm. We then focused on the JAS upwelling period of the year 2016 and found a 73 km radius cyclonic eddy east of Cape Three Points (Ghana) with a lifetime of 1 month which interacted with the coastal upwelling. Indeed, the quasi-stationary eddy dwelled within the coastal upwelling region from mid-July to mid-August 2016. A Lagrangian study shows that the eddy waters come from the coastal upwelling, then mix with warmer offshore waters, and later are transported eastward by the Guinea Current. Using a heat budget analysis, we show that this eddy–coastal upwelling interaction has an impact on sea surface temperature (SST) with a double effect: i) the eddy expands offshore the cold and salty waters (23°C and 35.6) of the coastal upwelling from 14 to 26 July; and ii) from 27 July until its dissipation, the eddy weakens this upwelling by an easterly inflow of warm offshore waters. This study highlights how the eddy–upwelling interaction can modulate the coastal upwelling in the northern Gulf of Guinea. -
-
-
-
-
-

-
-
-
- -
-
- During an expedition in January 2019, nanoplastics were sampled at a depth of -5,170 m over Cape Basin, in the South Atlantic Ocean. Using photo-induced force microscopy, it was suggested that these were polyethylene terephthalate (PET-like) particles with various sizes down to 100 nm, at different stages of degradation. By using a state-of-the-art Lagrangian 3D model, which includes fragmentation, we backtracked virtual particles to map the origin of the PET nanoplastics sampled at this location. Fragmentation processes are crucial to understanding the origin of nanoplastics (and microplastics) because they allow for detecting when and where particles become so small that they transition to a colloidal state, in which the buoyant force becomes negligible. We found that it is very unlikely that the nanoplastic particles entered the ocean as nanoplastics and then drifted to the sampling location. We also found that the fragmentation scheme, particularly the fragmentation timescale prescribed to the modeled particles, affects how they drift in the ocean by the velocity with which they sink. This study contributes to understanding the fate and sources of nanoplastics in the deep ocean and the development of 3D backtracking simulations for source attribution of ocean plastic. -
-
-
-
-
-

-
-
-
- -
-
- The coastal circulation around Southern Greenland transports fresh, buoyant water masses from the Arctic and Greenland Ice Sheet near regions of convection, sinking, and deep-water formation in the Irminger and Labrador Seas. Here, we track the pathways and fate of these fresh water masses by initializing synthetic particles in the East Greenland Coastal Current on the Southeast Greenland shelf and running them through altimetry-derived surface currents from 1993 to 2021. We report that the majority of waters (83%) remain on the shelf around the southern tip of Greenland. Variability in the shelf-basin exchange of the remaining particles closely follows the number of tip jet wind events on seasonal and interannual timescales. The probability of a particle exiting the shelf increases almost fivefold during a tip jet event. These results indicate that the number of tip jets is a close proxy of the shelf-basin exchange around Southern Greenland. -
-
-
-
-
-

-
-
-
- -
-
- Several coastal regions require operational forecast systems for predicting the transport of pollutants released during marine accidents. In response to this need, surrogate models offer cost-effective solutions. Here, we propose a surrogate modeling method for predicting the residual transport of particle patches in coastal environments. These patches are collections of passive particles equivalent to Eulerian tracers but can be extended to other particulates. By only using relevant forcing, we train a deep learning model (DLM) to predict the displacement (advection) and spread (dispersion) of particle patches after one tidal period. These quantities are then coupled into a simplified Lagrangian model to obtain predictions for larger times. Predictions with our methodology, successfully applied in the Dutch Wadden Sea, are fast. The trained DLM provides predictions in a few seconds, and our simplified Lagrangian model is one to two orders of magnitude faster than a traditional Lagrangian model fed with currents. -
-
-
-
-
-

-
-
-
- -
-
- Knowledge of the geographic distribution and connectivity of marine populations is essential for ecological understanding and informing management. Previous works have assessed spatial structure by quantifying exchange using Lagrangian particle-tracking simulations, but their scope of analysis is limited by their use of predefined subpopulations. To instead delineate subpopulations emerging naturally from marine population connectivity, we interpret this connectivity as a network, enabling the use of powerful analytic tools from the field of network theory. The modelling approach presented here uses particle-tracking to construct a transport network, and then applies the community detection algorithm Infomap to identify subpopulations that exhibit high internal connectivity and sparse connectivity with other subpopulations. An established quality metric, the coherence ratio, and a new metric we introduce indicating self-recruitment to subpopulations, dubbed the fortress ratio, are used to interpret community-level exchange. We use the Atlantic sea scallop (Placopecten magellanicus) in the northwest Atlantic as a case study. Results suggest that genetic lineages of P. magellanicus demonstrate spatial substructure that depends on horizontal transport, vertical motility, and suitable habitat. Our results support connectivity previously characterized on Georges Bank and Mid-Atlantic Bight. The Gulf of St. Lawrence genetic lineage is found to consist of five subpopulations that are classified as being a sink, source, permeable, or impermeable using quality metrics. This approach may be applied to other planktonic dispersers and prove useful to management. -
-
-
-
-
-

-
-
-
- -
-
- Antarctic toothfish (Dissostichus mawsoni) in the Ross Sea region are believed to spawn predominantly in the northern parts of the Ross Gyre during the austral winter with fluctuations in their recruitment observed. This Lagrangian modelling study attempts to explain these fluctuations and shows how sea-ice drift impacts the buoyant eggs and the overall recruitment of juveniles reaching the Amundsen shelf break. Interannual variations in the Amundsen Sea Low, linked to tropical sea surface temperatures, cause modulations in the sea-ice drift and subsequent recruitment. When the Amundsen Sea Low is weaker, consistent with El Niño conditions, the northward sea-ice drift reduces, and more eggs remain within the Ross Gyre leading to a larger recruitment success. Conversely, recruitment success reduces during La Niña conditions. The sea-ice drift may explain about 80% of the interannual Antarctic toothfish recruitment variability over the period 1975–2016 and is of particular importance during the first year after spawning. These results enable future interannual changes in Antarctic toothfish recruitment success based on remote observations to be anticipated. Our findings suggest that ongoing climate change strengthening of the Amundsen Sea Low, will likely contribute to a long-term toothfish recruitment decline in the Ross Gyre region. -
-
-
-
-
-

-
-
-
- -
-
- In this paper, the importance of model horizontal resolution in mixing and dispersion is investigated by comparing two data-assimilative high-resolution simulations (4 and 1 km), one of which is submesoscale-permitting. By employing both Eulerian and Lagrangian metrics, upper-ocean differences between the mesoscale-resolving and submesoscale-permitting simulations are examined in the northeastern Gulf of Mexico, a region of high mesoscale and submesoscale activity. Mixing in both simulations is explored by conducting Lagrangian experiments to track the generation of Lagrangian coherent structures (LCSs) and their associated transport barriers. Finite-time Lyapunov exponent (FTLE) fields show higher separation rates of fluid particles in the submesoscale-permitting case, which indicate more vigorous mixing with differences being more pronounced in the shelf regions (depths ≤ 500 m). The extent of the mixing homogeneity is examined using probability density functions (PDFs) of FTLEs with results suggesting that mixing is heterogeneous in both simulations, but some homogeneity is exhibited in the submesoscale-permitting case. The FTLE fields also indicate that chaotic advection dominates turbulent mixing in both simulations regardless of the horizontal resolution. In the submesoscale-permitting experiment, however, smaller scale LCSs emerge as noise-like filaments that suggest a larger turbulent mixing component than in the mesoscale-resolving experiment. The impact of resolution is then explored by investigating the spread of oil particles at the location of the Deepwater Horizon oil spill. -
-
-
-
-
-

-
-
-
- -
-
- Connectivity is an essential driver for aquatic species distribution, genetic variability and stock structure. The giant mud crab (Scylla serrata) is a coastal portunid commonly associated with estuaries and mangrove systems. This species has been observed to undertake a seaward spawning migration, as the larval development is known to be more successful under the stable environmental conditions typically found in marine waters. The larvae return to the coastal areas through advection, where they are recruited and enter the estuaries after metamorphosing into the first instar. Here, we used numerical modelling to test hypotheses regarding probabilities of larval settlement of the giant mud crab and the effect of the distance offshore from which females release the eggs. Our scenarios considered the biological characteristics of larvae and oceanographic conditions for six locations for mud crabs along a complex coastline - the Queensland east coast, Australia. The models suggest that all locations tend to self-supply, and to exchange mud crab larvae with other regions, but in different magnitudes. The spawning distance offshore considerably affects larval distribution and settlement. The main drivers for larval advection in areas within the continental shelf are wind patterns and coastal currents, while offshore along the Australian continental slope, the main drivers are ocean currents. Self-recruitment is predominant, although we also observed a significant degree of connectivity between each location and the surrounding coastline. Short spawning migrations benefit self-recruitment in all scenarios, but long offshore migrations favour connectivity among different locations. This source/sink balance seems to depend on the local oceanographic features. Nevertheless, offshore spawning by the giant mud crab has the potential to provide for successful recruitment in a variety of environmental contexts. This study provides novel predictions of the probabilities of larval settlement for mud crab populations considering ocean advection that can be applied to different contexts. -
-
-
-
-
-

-
-
-
- -
-
- plasticparcels is a python package for simulating the transport and dispersion of plastics in the ocean. The tool is based on v3.0.3 of the parcels computational Lagrangian ocean analysis framework (Delandmeter & van Sebille, 2019; Lange & van Sebille, 2017), providing a modular and customisable collection of methods, notebooks, and tutorials for advecting virtual plastic particles with a wide range of physical properties. The tool applies a collection of physical processes to the virtual particles, such as Stokes drift, wind-induced drift, biofouling, and turbulent mixing, via custom particle behaviour programmed in the form of Kernels. In addition to the fine-scale physics parameterisations, plasticparcels provides global particle initialisation maps that represent best estimates for plastic pollution emissions along coastlines (Jambeck et al., 2015), from river sources (Meijer et al., 2021), and in the open-ocean from fishing-related activities (Kroodsma et al., 2018), as well as a current best estimate of buoyant plastic concentrations globally (Kaandorp et al., 2023). We envisage plasticparcels as a tool for easy-to-run plastic dispersal simulations; as well as for rapid prototyping, development, and testing of new fine-scale physics parameterisations. -
-
-
-
-
-

-
-
-
- -
-
- The MV X-Press Pearl accident near Sri Lanka in May 2021 released several pollutants into the ocean, including 1843.3 t of urea, raising concerns about the impact on the region. This study uses a coupled ocean (NEMO)–biogeochemistry (ERSEM) model to simulate urea dispersion under various scenarios. While it doesn't directly reflect the real accident, it provides insights into the potential impact of similar chemical spills. By adjusting tracer release rates and timing, we assessed their impact on the distribution of the chemical plume. Findings show slower release rates prolong higher urea concentrations, potentially causing phytoplankton blooms, while monsoon conditions significantly affect dispersal patterns. Due to a lack of publicly available urea observations, we used particle tracking experiments validated with data on plastic nurdle beaching. This research shows how a simpler, affordable scenario approach could inform the management of chemical spills without a fully developed operational oceanographic system. -
-
-
-
-
-

-
-
-
- -
-
- Marine debris, particularly microplastics, is an important environmental problem for Indonesia, impacting vast coastline and diverse marine ecosystems. However, little is known about the microplastics flux to the seafloor in the Indonesian Seas. This study employs HYCOM data and Lagrangian particle tracking model to analyze the distribution of microplastics flux to the seafloor from 68 rivers in Indonesia. Microplastics accumulation can be found in coastal waters near major islands, typically within 50–100 km of the coast. Accumulation regions within the Fisheries Management Area (FMA) in Indonesia are mostly located in Karimata Strait, Java Sea and South Java. This study highlights the importance of understanding sinking particles behavior for effective waste management strategies, as well as for mitigating environmental impacts in Indonesian waters. -
-
-
-
-
-

-
-
-
- -
-
- Pine Island, Thwaites, Smith, and Kohler glaciers in the Amundsen Sea Embayment (ASE) sector of West Antarctica experience rapid mass loss and grounding line retreat due to enhanced ocean thermal forcing from Circumpolar Deep Water (CDW) reaching the grounding lines. We use simulated Lagrangian particles advected with a looping 1 year output from the Southern Ocean high-resolution model to backtrack the transport and cooling of CDW to these glaciers. For the simulated year 2005–2006, we find that the median time needed to reach the grounding lines from the edge of the ASE is 3 years. In addition, the Antarctic Coastal Current contributes an equal number of particles as off-shelf sources to the grounding lines of Pine Island and Thwaites. For CDW coming from off-shelf, results from SOhi indicate that 25%–66% of the cooling occurs within ice shelf cavities. -
-
-
-
-
-

-
-
-
- -
-
- For marine species with planktonic dispersal, invasion of open ocean coastlines is impaired by the physical adversity of ocean currents moving larvae downstream and offshore. The extent species are affected by physical adversity depends on interactions of the currents with larval life history traits such as planktonic duration, depth and seasonality. Ecologists have struggled to understand how these traits expose species to adverse ocean currents and affect their ability to persist when introduced to novel habitat. We use a high-resolution global ocean model to isolate the role of ocean currents on the persistence of a larval-producing species introduced to every open coastline of the world. We find physical adversity to invasion varies globally by several orders of magnitude. Larval duration is the most influential life history trait because increased duration prolongs species' exposure to ocean currents. Furthermore, variation of physical adversity with life history elucidates how trade-offs between dispersal traits vary globally. -
-
-
-
-
-

-
-
-
- -
-
- Among the various types of plastics present in the marine environment, pellets stand out due to their wide dispersion. This study aims to assess the trajectory of plastic pellets reaching Santa Catarina Island (southern Brazil) from nearby port regions, and to investigate their distribution and fate. Using a Lagrangian particle tracking model and outputs from a hydrodynamic model, we evaluated particle transport and sources. The results indicate a predominant southward flow from Itajaí harbor, suggesting this port region as the most likely source of microplastics. From this source, particles reach the island in only 2 days, with their pathways following seasonal oceanographic conditions in the region. These findings highlight the persistent threat of plastic pollution and underscore the need for improvements in port management. -
-
-
-
-
-

-
-
-
- -
-
- The Irminger Current (IC) brings relatively warm and saline waters northward in the North Atlantic subpolar gyre, contributing to the upper limb of the Atlantic Meridional Overturning Circulation. The IC is a two-core current with surface-intensified velocities. The eastern core, closest to the Reykjanes Ridge, is warmer and more saline than the western core. To investigate the source waters of the two IC cores, using a 1/10° ocean model, we track Lagrangian particles released in the IC at OSNAP East (∼59.5°N) in the upper 1,000 m backward in time for one model year. Over a 1-year time scale, nearly all particles are sourced from nearby regions of the Irminger Sea and Iceland Basin. Those seeded in the western IC core mostly originate from the Irminger Sea (83%), while those in its eastern core mostly originate from the Iceland Basin (69%). Iceland Basin water feeding the IC predominantly crosses the Reykjanes Ridge near 57°N and 59°N. Generally, particles from the Irminger Sea are colder and fresher than particles from the Iceland Basin. The fraction of waters from the Iceland Basin and the Irminger Sea varies from month to month. So, to explain monthly variations of the two IC cores at the OSNAP East line, changes in hydrographic properties in both basins as well as their contributions must be considered. Based on this model study, we interpret the Irminger Sea circulation as a basin-wide recirculation with an increasing contribution of Iceland Basin waters toward the ridge which is subject to monthly variations. -
-
-
-
-
-

-
-
-
- -
-
- We use altimeter-derived geostrophic velocities, with and without the addition of surface Ekman transports, to create trajectories for virtual parcels in the California Current System (CCS). The goal is to investigate the poleward transport of passive water parcels in the surface 50–100 m of the nominally equatorward system. Motivation for the study is provided by observations of anomalous biomass of copepods with warm water affinities along the Newport Hydrographic Line off central Oregon (44.7°N) during El Niño years, as well as during and following the 2014–2016 Marine Heat Wave. By backward tracking virtual parcels from 44.7°N, we find that the most distant source of passive water parcels in the upper ocean during a one-year period of travel is from within the Southern California Bight (SCB), north of 30°N. To make that journey, parcels use the Inshore Countercurrent off southern and central California during summer-winter and the Davidson Current off northern California and Oregon during autumn–winter. The inclusion of small-scale eddy diffusion usually increases the number of parcels that reach more northern latitudes, while the inclusion of Ekman velocities more often reduces those numbers. Even so, parcels can travel from the SCB to central Oregon in either the Ekman layer or beneath it in the geostrophic flow. Using backward tracking, we find that parcels arrive at 44.7°N most often in winter-spring, least often in autumn. They arrive from within the large-cape region off northern California (41°-42°N) during all years and all months, from just south of the large-cape region (38°-39°N) during most years but seldom in autumn, from south of Monterey Bay along central California (36°N) and within the SCB (34.5°N) during a third (or less) of the years and only in winter-spring. The shortest average transit times are found in winter: for parcels reaching 44.7°N in February, the average transit time is 2 months for parcels coming from 41°-42°N, 4 months for parcels coming from 38°-39°N and 5–6 months or more for parcels coming from south of 36°N. Transit times increase as the year progresses from winter to autumn. The longest average transit times are for parcels reaching central Oregon in autumn (9–12 months in October for parcels coming from south of 39°N). This makes the journey a multi-generational task for the copepods. Interannual variability in the observed southern copepod species biomass correlates highly with years when more virtual parcels from the south reach central and northern Oregon, providing increased confidence in the results found with the altimeter-derived parcel trajectories. -
-
-
-
-
-

-
-
-
- -
-
- Background: Every few years, juvenile Kemp's ridley turtles (Lepidochelys kempii) are stranded on the Dutch coasts. The main population distribution of this critically endangered species primarily inhabits the Gulf of Mexico and the east coast of the United States. This study focuses on five reports from the Netherlands between 2007 and 2022, where juvenile turtles were reported to strand alive during the winter, albeit in a hypothermic state. At ambient ocean temperatures between 10°C and 13°C, Kemp’s ridley turtles begin to show an inability to actively swim and remain afloat on the ocean’s surface, a condition termed ‘cold stunning’. Understanding their transport in cold-stunned state can help improve the rehabilitation process of stranded turtles. -

- Methods: Cold-stunned turtles are back-tracked as passive, virtual particles from their stranding location using Lagrangian flow modelling. This study investigates when and where these juvenile turtles cross the threshold temperatures between 10° C and 14° C before stranding by tracking the temperature along the trajectories. -

- Results: As expected, the simulations show the transport of the cold-stunned turtles via the English Channel. More surprisingly, the analysis suggests they likely experience cold-stunning in the southern North Sea region and encounter temperatures below 10°C for only a few days to up to three weeks, and below 12°C for up to a month before stranding. -

- Conclusions: The estimate of cold-stunned drift duration of the turtles provides additional knowledge about their health status at the time of stranding. Adherence to rehabilitation protocols for Kemp’s ridley and post-release monitoring are recommended to improve their long-term survival. -
-
-
-
-
-

-
-
-
- -
-
- Large amounts of plastic waste from non-local sources (>200 tonnes) wash up on Christmas Island and the Cocos Keeling Islands, two remote Indian Ocean islands, every year. Local communities on these islands organize beach clean-ups regularly to tackle this problem and, because their waste systems cannot handle the enormous amounts of plastic, predominantly incinerate the collected waste. However, as long as plastic waste keeps entering the ocean, beach clean-ups alone cannot be sustained. The first crucial step to solving this problem is to determine the main sources of plastic waste to the islands. In this study, we simulate the transport of floating plastic waste to determine the main riverine sources of plastic reaching the islands. We find that the majority of simulated plastic waste comes from just 4 Indonesian rivers: the Solo, Brantas, Ci Tanduy, and Wai Sekampung. We suggest that further numerical and field studies, as well as potential river clean-up efforts focus on these rivers to stop plastic waste inundating Christmas Island and the Cocos Keeling Islands. -
-
-
-
-
-

-
-
-
- -
-
- Inputs of persistent plastic items to marine environments continue to pose a serious and long-term threat to marine fauna and ecosystem health, justifying further interventions on local and global scales. While Life Cycle Assessment (LCA) is frequently used for sustainability evaluations by industries and policymakers, plastic leakage to the environment and its subsequent impacts remains absent from the framework. Incorporating plastic pollution in the assessments requires development of both inventories and impact assessment methods. Here, we propose spatially explicit Characterization Factors (CF) for quantifying the impacts of plastic entanglement on marine megafauna (mammals, birds and reptiles) on a global scale. We utilize Lagrangian particle tracking and a Species Sensitivity Distribution (SSD) model along with species susceptibility records to estimate potential entanglement impacts stemming from lost plastic-based fishing gear. By simulating plastic losses from fishing hotspots within all Exclusive Economic Zones (EEZs) we provide country-specific impact estimates for use in LCA. The impacts were found to be similar across regions, although the median CF associated with Oceania was higher compared to Europe, Africa and Asia. Our findings underscore the presence of susceptible species across the world and the transboundary issue of plastic pollution. We discuss the application of the factors and identify areas of further refinement that can contribute towards a comprehensive assessment of macroplastic pollution in sustainability assessments. Degradation and beaching rates for different types of fishing gear remain a research gap, along with population-level effects on marine taxa beyond surface breathing megafauna. Increasing the coverage of impacts specific to the marine realm in LCA alongside other stressors can facilitate informed decision-making towards more sustainable marine resource management. -
-
-
-
-
-

-
-
-
- -
-
- A dataset consisting of numerically simulated oceanic velocities and sea surface height changes, provided conjointly from Eulerian and Lagrangian points of view, is made available as cloud-optimized archives on a cloud storage platform for unrestricted access. The Eulerian component of the dataset comprises oceanic velocity components at 0 m and 15 m depth, as well as total and steric sea surface height changes, obtained at hourly time steps for one year, with an approximate horizontal resolution of 1/25 degree on an irregular global geographical spatial grid, from the HYbrid Coordinate Ocean Model. The Lagrangian component of the dataset comprises the trajectories of particles advected in the Eulerian velocity field of the model. The particles were advected forward and backward for 30 days from a regular 1/4 degree grid in order to achieve 60-day long trajectories at 0 m and 15 m depths, with start times separated by 30 days, in 11 releases. This integrated dataset may help to link Eulerian and Lagrangian observational perspectives. -
-
-
-
-
-

-
-
-
- -
-
- Every year, harbor and sailing festivals attract close to 20 million visitors in the Baltic Sea region, but their consequences on marine litter pollution are still unknown. We combine field studies with model simulations and literature reviews to quantify the annual emissions of floating macro-litter and to assess its retention in estuaries and role in Baltic Sea pollution. Results focusing on Hanse Sail in Rostock and Kiel Week are extrapolated to the entire Baltic Sea region. After the Hanse Sail 2018, the harbor pollution amounted to about 950 floating macro-litter particles/km²; 85–90% were plastics. We calculated an emission between 0.24 and 3 particles per 1000 visitors, depending on the year and the waste management system. About 0.02% of all waste generated during a festival ends up in the harbor water. The Hanse Sails contributes less than 1% to the total annual macro-litter emissions in the Warnow estuary. Model simulations indicate that over 99% of the emitted litter is trapped in the estuary. Therefore, Hanse Sails are not relevant to Baltic Sea pollution. The extrapolated Baltic-Sea-wide annual emissions are between 4466 and (more likely) 55,830 macro-litter particles. The over-30 harbor and sailing festivals contribute an estimated 0.05% to the total annual macro-litter emissions in the Baltic Sea region. -
-
-
-
-
-

-
-
-
- -
-
- Antarctica's unique marine ecosystems are threatened by the arrival of non-native marine species on rafting ocean objects. The harsh environmental conditions in Antarctica prevent the establishment of many such species, but warming around the continent and the opening up of ice-free regions may already be reducing these barriers. Although recent genomic work has revealed that rafts—potentially carrying diverse coastal passengers—reach Antarctica from sub-Antarctic islands, Antarctica's vulnerability to incursions from Southern Hemisphere continents remains unknown. Here we use 0.1° global ocean model simulations to explore whether drift connections exist between more northern, temperate landmasses and the Antarctic coastline. We show that passively floating objects can drift to Antarctica not only from sub-Antarctic islands, but also from continental locations north of the Subtropical Front including Australia, South Africa, South America and Zealandia. We find that the Antarctic Peninsula is the region at highest risk for non-native species introductions arriving by natural oceanic dispersal, highlighting the vulnerability of this region, which is also at risk from introductions via ship traffic and rapid warming. The widespread connections with sub-Antarctic and temperate landmasses, combined with an increasing abundance of marine anthropogenic rafting vectors, poses a growing risk to Antarctic marine ecosystems, especially as environmental conditions around Antarctica are projected to become more suitable for non-native species in the future. -
-
-
-
-
-

-
-
-
- -
-
- Mesoscale eddies - ocean vortices with spatial scales of tens to hundreds of kilometers and time scales of months to years - are among the most energetic forms of flow in the ocean, and may act as significant transporters of floating microplastics. Yet, shipboard observation has thus far not clarified the abundance and transport of microplastics in mesoscale eddies. We conducted floating microplastic surveys in an intense cyclonic mesoscale eddy with a large sea surface height depression (approximately 0.8 m), a so-called cold-core ring, in the Kuroshio Extension recirculation gyre (KERG) southeast of Japan. The concentration of microplastics within the eddy (460 × 104 pieces/km2) was one or two orders of magnitude higher than in the adjacent oceanic waters, likely due to the acquisition of microplastics from the microplastic-rich Kuroshio Extension (KE) when detaching, as well as the horizontal entrainment of particles by the eddy. Our examination by using an assimilation product showed that most particles captured by the eddy remained within for several months while the eddy moved clockwise in the KERG. These results suggest that mesoscale eddies are of importance in the transportation and redistribution of microplastics on the ocean surface. -
-
-
-
-
-

-
-
-
- -
-
- Ocean currents are a crucial means of dispersing natural and human-made materials on the ocean surface. Macroalgae are among the most conspicuous natural dispersers, often called the ‘tumbleweeds of the ocean.’ Despite numerous studies on the subject, the relative influence of wind and surface currents on the trajectory of macroalgal dispersal remains uncertain. Previous studies have focused on kelp rafts of varying sizes, making it challenging to determine the impact of wind versus currents. These studies have also disregarded the macroalgae’s drag characteristics and surface area, which have been shown to impact the trajectory and accumulation of floating flotsam. This numerical study aims to shed light on the relative influence of wind and currents and the role of drag in determining the course and accumulation of macroalgae. By comparing simulations of virtual kelp ‘particles’ that incorporate drag and those without, this study focused on solitary kelp plants and considered the impact of morphological characteristics, flow-field combinations, and the presence of Stokes drift. Our results show that virtual kelp particles generally followed ocean currents, but the inclusion of drag caused deviations from purely Lagrangian particles’ trajectories and sheds light on the complex interplay of factors affecting macroalgal dispersal in the ocean. -
-
-
-
-
-

-
-
-
- -
-
- In this study, we conducted a novel massive Lagrangian simulation experiment based on a global 1/48° tide-resolving numerical simulation of the ocean circulation. This first-time twin experiment enables a comparison between Eulerian (fixed-point) and Lagrangian (along-flow) estimates of kinetic energy (KE) across the global ocean, and the quantification of systematic differences between both types of estimations. This comparison represents an important step forward for the mapping of upper ocean high-frequency variability from Lagrangian observations of the Global Drifter Program. Eulerian KE rotary frequency spectra and band-integrated energy levels (e.g., tidal and near-inertial) serve as references and are compared to Lagrangian estimates. Our analysis reveals that, except for the near-inertial band, Lagrangian velocity spectra are systematically smoother, for example, with wider and lower spectral peaks compared to Eulerian counterparts. On average, Lagrangian KE levels derived from spectral band integrations tend to underestimate Eulerian KE levels at low-frequency and tidal bands, especially in regions with strong low-frequency KE. Better agreement between Lagrangian and Eulerian low-frequency and tidal KE levels is generally found in regions with weak low-frequency KE and/or convergent surface circulation, where Lagrangian particles tend to accumulate. Conversely, Lagrangian and Eulerian near-inertial spectra and energy levels are comparable. Our results demonstrate that Lagrangian estimates may provide a distorted view of low-frequency and tidal variance. To accurately map near-surface velocity climatology at these frequencies from drifter database, conversion methods accounting for the Lagrangian bias need to be developed. -
-
-
-
-
-

-
-
-
- -
-
- Having a profound influence on marine and coastal environments worldwide, jellyfish hold significant scientific, economic, and public interest. The predictability of outbreaks and dispersion of jellyfish is limited by a fundamental gap in our understanding of their movement. Although there is evidence that jellyfish may actively affect their position, the role of active swimming in controlling jellyfish movement, and the characteristics of jellyfish swimming behavior, are not well understood. Consequently, jellyfish are often regarded as passively drifting or randomly moving organisms, both conceptually and in process studies. Here we show that the movement of jellyfish is modulated by distinctly directional swimming patterns that are oriented away from the coast and against the direction of surface gravity waves. Taking a Lagrangian viewpoint from drone videos that allows the tracking of multiple adjacent jellyfish, and focusing on the scyphozoan jellyfish Rhopilema nomadica as a model organism, we show that the behavior of individual jellyfish translates into a synchronized directional swimming of the aggregation as a whole. Numerical simulations show that this counter-wave swimming behavior results in biased correlated random-walk movement patterns that reduce the risk of stranding, thus providing jellyfish with an adaptive advantage critical to their survival. Our results emphasize the importance of active swimming in regulating jellyfish movement and open the way for a more accurate representation in model studies, thus improving the predictability of jellyfish outbreaks and their dispersion and contributing to our ability to mitigate their possible impact on coastal infrastructure and populations. -
-
-
-
-
-

-
-
-
- -
-
- Scarcity of iron and manganese limits the efficiency of the biological carbon pump over large areas of the Southern Ocean. The importance of hydrothermal vents as a source of these micronutrients to the euphotic zone of the Southern Ocean is debated. Here we present full depth profiles of dissolved and total dissolvable trace metals in the remote eastern Pacific sector of the Southern Ocean (55–60° S, 89.1° W), providing evidence of enrichment of iron and manganese at depths of 2000–4000 m. These enhanced micronutrient concentrations were co-located with 3He enrichment, an indicator of hydrothermal fluid originating from ocean ridges. Modelled water trajectories revealed the understudied South East Pacific Rise and the Pacific Antarctic Ridge as likely source regions. Additionally, the trajectories demonstrate pathways for these Southern Ocean hydrothermal ridge-derived trace metals to reach the Southern Ocean surface mixed layer within two decades, potentially supporting a regular supply of micronutrients to fuel Southern Ocean primary production. -
-
-
-
-
-

-
-
-
- -
-
- A novel ocean profiling float system for calibrating and validating satellite-based ocean color observations has been developed and tested. The float-based radiometric sampling system, herein referred to as HyperNav, is complementary to traditional moored in-situ observing systems and provides additional capability due to the relatively small platform size and high radiometric accuracy that allows for opportunistic deployments at locations during seasons and conditions that are best for ocean color observations. The purpose of this study is to optimize the deployment locations of an array of HyperNav systems to support the Plankton, Aerosol, Cloud, ocean Ecosystem (PACE) mission by performing System Vicarious Calibration (SVC) observations. Specifically, we present the development of logistical and scientific criteria for selecting suitable sites for developing an SVC network of profiling-float-based radiometric systems capable of calibrating and validating ocean color observations. As part of the analyses described in this paper, we have synthetically deployed HyperNav at potential US-based and international sites, including: north of Crete island; south-east of Bermuda island; south of Puerto Rico island; southwest of Port Hueneme, CA; west of Monterey, CA; west of Kona, HI; and south-west of Tahiti island. The synthetic analyses identified Kona, Puerto Rico, Crete, and Tahiti as promising SVC sites. All sites considered are suitable for generating a significant number of validation match-ups. Optimally deploying HyperNav systems at these sites during the PACE post-launch SVC campaign is expected to cost-effectively provide a large number of SVC match-ups to fulfill the PACE calibration requirements. -
-
-
-
-
-

-
-
-
- -
-
- One major societal challenge is meeting the constantly increasing demand for (sea)food in a sustainable way. Marine aquaculture offers large production potential, but it is crucial to define production limits that maintain ocean health. The concept of aquaculture carrying capacity (CC) provides such limits for locally defined areas. However, the ocean is subject to large- and small-scale dynamics, and far-reaching effects of aquaculture (e.g., the spread of marine diseases with ocean currents) are currently neglected in CC estimates. Here we predict potential “impact areas” with a biophysical simulation approach and find them to be larger than those currently considered in CC estimates. We suggest “impact areas” as a measure for spatial connectivity with the requirement to define what is an acceptable “impact area” case specifically. The proposed approach is applicable to various marine aquaculture systems and would drive CC estimates toward improved sustainability by considering the impact and risk of dispersal beyond the immediately adjacent area. -
-
-
-
-
-

-
-
-
- -
-
- North Atlantic subtropical mode water (NASTMW) serves as a major conduit for dissolved carbon to penetrate into the ocean interior by its wintertime outcropping events. Prior research on NASTMW has concentrated on its physical formation and destruction, as well as Lagrangian pathways and timescales of water into and out of NASTMW. In this study, we examine how dissolved inorganic carbon (DIC) concentrations are modified along Lagrangian pathways of NASTMW on subannual timescales. We introduce Lagrangian parcels into a physical-biogeochemical model and release these parcels annually over two decades. For different pathways into, out of, and within NASTMW, we calculate changes in DIC concentrations along the path (ΔDIC), distinguishing contributions from vertical mixing and biogeochemical processes. The strongest ΔDIC is during subduction of water parcels (+101 μmol L−1 in 1 year), followed by transport out of NASTMW due to increases in density in water parcels (+10 μmol L−1). While the mean ΔDIC for parcels that persist within NASTMW in 1 year is relatively small at +6 μmol L−1, this masks underlying dynamics: individual parcels undergo interspersed DIC depletion and enrichment, spanning several timescales and magnitudes. Most DIC enrichment and depletion regimes span timescales of weeks, related to phytoplankton blooms. However, mixing and biogeochemical processes often oppose one another at short timescales, so the largest net DIC changes occur at timescales of more than 30 days. Our new Lagrangian approach complements bulk Eulerian approaches, which average out this underlying complexity, and is relevant to other biogeochemical studies, for example, on marine carbon dioxide removal. -
-
-
-
-
-

-
-
-
- -
-
- Biological productivity in the Southern Ocean is modulated by iron availability. Every summer, a large phytoplankton bloom forms northwest of the Ross Sea, above the Antarctic Australian Ridge (AAR), due to a plume of iron-rich waters. Here, we investigate the origin and trajectories of these iron-rich waters by analyzing water mass observations and Lagrangian experiments. Output from the Southern Ocean State Estimate (SOSE) and in situ measurements reveal that iron-rich AAR bloom waters share properties with Modified Circumpolar Deep Water (MCDW), which forms on the Antarctic shelf-slope. The Lagrangian experiments are conducted using SOSE velocities. Bloom waters tracked with virtual Lagrangian particles highlight an along isopycnal pathway of MCDW from Antarctica's shelf-slope to the AAR bloom site, illustrating advection of these waters by the Balleny Gyre. These results are supported by temperature-salinity analyses, which show a correlation between waters advected northwards; MCDW properties; and high iron concentrations. -
-
-
-
-
-

-
-
-
- -
-
- Operational forecasts rely on accurate and timely observations and it is important that the ocean forecasting community demonstrates the impact of those observations to the observing community and its funders while providing feedback on requirements for the design of the ocean observing system. One way in which impact of new observations can be assessed is through Observing System Simulation Experiments (OSSEs). Various satellite missions are being proposed to measure Total Surface Current Velocities (TSCV). This study uses OSSEs to assess the potential impact of assimilating TSCV observations. OSSEs have been performed using two global ocean forecasting systems; the Met Office’s (MetO) Forecasting Ocean Assimilation Model and the Mercator Ocean International (MOI) system. Developments to the individual systems, the design of the experiments and results have been described in two companion papers. This paper provides an intercomparison of the OSSEs results from the two systems. We show that global near surface velocity analysis root-mean-squared-errors (RMSE) are reduced by 20-30% and 10-15% in the MetO and MOI systems respectively, we also demonstrate that the percentage of particles forecast to be within 50 km of the true particle locations after drifting for 6 days has increased by 9%/7%. Furthermore, we show that the global subsurface velocities are improved down to 1500m in the MetO system and down to 400m in the MOI system. There are some regions where TSCV assimilation degrades the results, notably the middle of the gyres in the MetO system and at depth in the MOI system. Further tuning of the background and observation error covariances are required to improve performance in these regions. We also provide some recommendations on TSCV observation requirements for future satellite missions. We recommend that at least 80% of the ocean surface is observed in less than 4 to 5 days with a horizontal resolution of 20 to 50 km. Observations should be provided within one day of measurement time to allow real time assimilation and should have an accuracy of 10 cm/s in the along and across track direction and uncertainty estimates should be provided with each measurement. -
-
-
-
-
-

-
-
-
- -
-
- Modeled geospatial Lagrangian trajectories are widely used in Earth Science, including in oceanography, atmospheric science and marine biology. The typically large size of these data sets makes them arduous to analyze, and their underlying pathways challenging to identify. Here, we show that we can use a machine learning unsupervised k-means++ clustering method combined with expert aggregation of clusters to identify the pathways of the Labrador Current from a large set of modeled Lagrangian trajectories. The presented method requires simple pre-processing of the data, including a Cartesian correction on longitudes and a principal component analysis reduction. The clustering is performed in a kernelized space and uses a larger number of clusters than the number of expected pathways. To identify the main pathways, similar clusters are grouped into pathway categories by experts in the circulation of the region of interest. We find that the Labrador Current mainly follows a westward-flowing and an eastward retroflecting pathway (20% and 50% of the flow, respectively) that compensate each other through time in a see-saw behavior. These pathways experience a strong variability (representing through time 4%–42% and 24%–73% of the flow, respectively). Two thirds of the retroflection occurs at the tip of the Grand Banks, and one quarter at Flemish Cap. The westward pathway is mostly fed by the on-shelf branch of the Labrador Current, and the eastward pathway by the shelf-break branch. Among the pathways of secondary importance, we identify a previously unreported one that feeds the subtropics across the Gulf Stream. -
-
-
-
-
-

-
-
-
- -
-
- The tropical southwest Indian Ocean is a coral biodiversity hotspot, with remote reefs physically connected by larval dispersal through eddies and a complex set of equatorial and boundary currents. Based on multidecadal, 2 km resolution hydrodynamic and larval dispersal models that incorporate temporal variability in dispersal, we find that powerful zonal currents, current bifurcations, and geographic isolation act as leaky dispersal barriers, partitioning the southwest Indian Ocean into clusters of reefs that tend to consistently retain larvae, and therefore gene flow, over many generations. Whilst exceptionally remote, the Chagos Archipelago can broadcast (and receive) considerable numbers of larvae to (and from) reefs across the wider southwest Indian Ocean, most significantly exchanging larvae with the Inner Islands of Seychelles, but also the Mozambique Channel region. Considering multi-generational dispersal indicates that most coral populations in the southwest Indian Ocean are physically connected within a few hundred steps of dispersal. These results suggest that regional biogeography and population structure can be largely attributed to geologically recent patterns of larval dispersal, although some notable discrepancies indicate that palaeogeography and environmental suitability also play an important role. The model output and connectivity matrices are available in full and will provide useful physical context to regional biogeography and connectivity studies, as well as supporting marine spatial planning efforts. -
-
-
-
-
-

-
-
-
- -
-
- The Mediterranean Sea releases approximately 1 Sv of water into the North Atlantic through the Gibraltar Straits, forming the saline Mediterranean Outflow Water (MOW). Its impact on large‐scale flow and specifically its northbound Lagrangian pathways are widely debated, yet a comprehensive overview of MOW pathways over recent decades is lacking. We calculate and analyze synthetic Lagrangian trajectories in 1980– 2020 reanalysis velocity data. Sixteen percent of the MOW follow a direct northbound path to the sub‐polar gyre, reaching a 1,000 m depth crossing window at the southern tip of Rockall Ridge in about 10 years. Surprisingly, time‐dependent chaotic advection, not steady currents, drives over half of the northbound transport. Our results suggest a potential 15–20 years predictability in the direct northbound transport. Additionally, monthly variability appears more significant than inter‐annual variability in Lagrangian mixing and spreading the MOW. -
-
-
-
-
-

-
-
-
- -
-
- Mesoscale eddies affect phytoplankton in several ways, including the horizontal dispersal and mixing of populations. Coherent eddies trap and contain fluid masses, whereas other eddies mix more freely with surrounding waters. To evaluate the role of lateral dispersal and trapping on the biogeochemical properties of eddies, we must accurately characterize their coherency. We employed a Lagrangian approach to identify materially coherent structures in remote sensing observations and developed a methodology to track them over their entire individual lifetimes. We provide an atlas of two decades of coherent eddies with an 8 d resolution in an intensely studied region of the North Pacific Subtropical Gyre (Jones-Kellett, 2023a, https://doi.org/10.5281/zenodo.8139149). The atlas was specifically designed to facilitate biogeochemical applications and was synchronized with available ocean color products. We identified coherent features using backward Lagrangian trajectories because the recent history of coherency (rather than the future coherency) will be most valuable for interpreting associated biogeochemical signatures. We compared the atlas of Lagrangian coherent eddies with an atlas of Eulerian eddies identified using the more conventionally used Sea Level Anomaly method. Although 65 % of tracked Sea Level Anomaly eddies are classified as coherent at some point in their lifetime, only 54 % contain a Lagrangian coherent structure at any given time. We found similar variations in the temporal and spatial distributions of coherent and Sea Level Anomaly eddies. However, strictly coherent eddies have a clearer relationship between size and longevity and form distinct regional regimes based on polarity. We illustrate the potential of the coherent eddy atlas for biogeochemical applications by examining the relationship between bloom development and eddy evolution in a case study of a Hawaiian Lee cyclone. -
-
-
-
-
-

-
-
-
- -
-
- Marine litter poses a complex challenge in Indonesia, necessitating a well-informed and coordinated strategy for effective mitigation. This study investigates the seasonality of plastic concentrations around Sulawesi Island in central Indonesia during monsoon-driven wet and dry seasons. By using open data and methodologies including the HYCOM and Parcels models, we simulated the dispersal of plastic waste over 3 months during both the southwest and northeast monsoons. Our research extended beyond data analysis, as we actively engaged with local communities, researchers and policymakers through a range of outreach initiatives, including the development of a web application to visualize model results. Our findings underscore the substantial influence of monsoon-driven currents on surface plastic concentrations, highlighting the seasonal variation in the risk to different regional seas. This study adds to the evidence provided by coarser resolution regional ocean modelling studies, emphasizing that seasonality is a key driver of plastic pollution within the Indonesian archipelago. Inclusive international collaboration and a community-oriented approach were integral to our project, and we recom- mend that future initiatives similarly engage researchers, local communities and decision- makers in marine litter modelling results. This study aims to support the application of model results in solutions to the marine litter problem. -
-
-
-
-
-

-
-
-
- -
-
- In the context of real world application, Search and Rescue Missions on the ocean surface remain a complex task due to the large-scale area and the forces of the ocean currents, spreading lost targets and debris in an unpredictable way. In this work, we present a Path Planning Approach to search for a lost target on ocean surface using a swarm of UAVs. The combination of GlobCurrent dataset and a Lagrangian simulator is used to determine where the particles are moved by the ocean currents forces while Deep Q-learning algorithm is applied to learn from their dynamics. The evaluation results of the trained models show that our search strategy is effective and efficient. Over a total search area (red Sea zone), surface of 453422 Km, we have shown that our strategy Search Success Rate is 98.61%, the maximum Search Time to detection is 15 days and the average Search Time to detection is almost 15 h. -
-
-
-
-
-

-
-
-
- -
-
- Antarctic Bottom Water (AABW) transports surface nutrients deep into the ocean, sequestering them for centuries. Enhancing its biological carbon fixation could augment carbon sinks and reduce atmospheric CO2. Yet, it is uncertain if AABW receives enough light for significant photosynthesis before subducting. Using Lagrangian particle tracking in an ocean sea-ice model, we found: (a) 70% (66%–73%, depending on euphotic zone (Zeu) criteria) nutrient rich circumpolar deep water never enters the Zeu before becoming AABW. This percentage varies from 70% to 91%, depending on the mixed layer (ML) parameterization adjustments; (b) The remaining particles in the euphotic zone have 39 (34–49, depending on Zeu criteria) days average residence time. The time is not sensitive to ML parameterization strength but turning it off doubles the time; and (c) AABW is mainly exposed to enough light on the Antarctic continental shelf during spring and summer. We conclude that the potential of biotic carbon sequestration in AABW is highly limited by light energy. -
-
-
-
-
-

-
-
-
- -
-
- Octopuses are an important fishery resource in the Ryukyu Archipelago, Japan, and Octopus cyanea is an important fishery resource in this region. Although a gradual downward trend in catches of O. cyanea in the Ryukyu Archipelago has been reported, no study has focused on the connectivity and genetic structure, which are important parameters for conservation strategies. We used partial sequences of mitochondrial COI and MIG-seq, which can efficiently obtain single nucleotide polymorphism (SNPs) to evaluate genetic diversity and patterns of gene flow among three populations of O. cyanea in the Ryukyu Archipelago. We combined population genetic analyses with biophysical approaches to understand larval dispersal patterns and the regional connectivity. Although there was a tendency for the Yaeyama population to become isolated from the Okinawa-jima populations, high genetic diversity was maintained overall, indicating frequent genetic exchange between populations. Population genetic analyses combined with larval dispersal simulations revealed that the contemporary migration of O. cyanea is asymmetric patterns among the three populations, suggesting that western coast of Okinawa-jima Island functions as a source population among the three populations we examined. The potential implications of this study on the conservation management of O. cyanea were discussed, namely that future population assessment approaches are needed to include western coast of Okinawa-jima populations. In addition, this study indicates that at least two different management units should be considered. This study is the first population genetic study of O. cyanea in the Ryukyu Archipelago and provides fundamental information on the genetic population structure of this species in this region. -
-
-
-
-
-

-
-
-
- -
-
- Purse-seine fishers using drifting fish aggregating devices (dFADs), mainly built with bamboo, plastic buoys, and plastic netting, to aggregate and catch tropical tuna, deploy 46,000–65,000 dFADs per year in the Pacific Ocean. Some of the major concerns associated with this widespread fishing device are potential entanglement of sea turtles and other marine fauna in dFAD netting; marine debris and pollution; and potential ecological damage via stranding on coral reefs, beaches, and other essential habitats for marine fauna. To assess and quantify the potential connectivity (number of dFADs deployed in an area and arriving in another area) between dFAD deployment areas and important oceanic or coastal habitat of critically endangered leatherback (Dermochelys coriacea) and hawksbill (Eretmochelys imbricata) sea turtles in the Pacific Ocean, we conducted passive-drift Lagrangian experiments with simulated dFAD drift profiles and compared them with known important sea turtle areas. Up to 60% of dFADs from equatorial areas were arriving in essential sea turtle habitats. Connectivity was less when only areas where dFADs are currently deployed were used. Our simulations identified potential regions of dFAD interactions with migration and feeding habitats of the east Pacific leatherback turtle in the tropical southeastern Pacific Ocean; coastal habitats of leatherback and hawksbill in the western Pacific (e.g., archipelagic zones of Indonesia, Papua New Guinea, and Solomon Islands); and foraging habitat of leatherback in a large equatorial area south of Hawaii. Additional research is needed to estimate entanglements of sea turtles with dFADs at sea and to quantify the likely changes in connectivity and distribution of dFADs under new management measures, such as use of alternative nonentangling dFAD designs that biodegrade, or changes in deployment strategies, such as shifting locations. -
-
-
-
-
-

-
-
-
- -
-
- Accurate prediction of ocean surface currents is important for marine safety, ship routing, tracking of pollutants and in coupled forecasting. Presently, velocity observations are not routinely assimilated in global ocean forecasting systems, largely due to the sparsity of the observation network. Several satellite missions are now being proposed with the capability to measure Total Surface Current Velocities (TSCV). If successful, these would substantially increase the coverage of ocean current observations and could improve accuracy of ocean current forecasts through data assimilation. In this paper, Observing System Simulation Experiments (OSSEs) are used to assess the impact of assimilating TSCV in the Met Office’s global ocean forecasting system. Synthetic observations are generated from a high-resolution model run for all standard observation types (sea surface temperature, profiles of temperature and salinity, sea level anomaly and sea ice concentration) as well as TSCV observations from a Sea surface KInematics Multiscale monitoring (SKIM) like satellite. The assimilation of SKIM like TSCV observations is tested over an 11 month period. Preliminary experiments assimilating idealised single TSCV observations demonstrate that ageostrophic velocity corrections are not well retained in the model. We propose a method for improving ageostrophic currents through TSCV assimilation by initialising Near Inertial Oscillations with a rotated incremental analysis update (IAU) scheme. The OSSEs show that TSCV assimilation has the potential to significantly improve the prediction of velocities, particularly in the Western Boundary Currents, Antarctic Circumpolar Current and in the near surface equatorial currents. For global surface velocity the analysis root-mean-square-errors (RMSEs) are reduced by 23% and there is a 4-day gain in forecast RMSE. There are some degradations to the subsurface in the tropics, generally in regions with complex vertical salinity structures. However, outside of the tropics, improvements are seen to velocities throughout the water column. Globally there are also improvements to temperature and sea surface height when TSCV are assimilated. The TSCV assimilation largely corrects the geostrophic ocean currents, but results using the rotated IAU method show that the energy at inertial frequencies can be improved with this method. Overall, the experiments demonstrate significant potential benefit of assimilating TSCV observations in a global ocean forecasting system. -
-
-
-
-
-

-
-
-
- -
-
- Unlike other upwelling areas where sardine and anchovy species dominate the pelagic ecosystems, the Western Iberian ecosystem has been consistently dominated by European sardine Engraulis encrasicolus, while anchovy had a residual presence from the start of acoustic surveys, in 1989, to 2014. Since 2015, the abundance of anchovy in the Western Iberian margins has sharply increased and continues to show an increasing trend as of 2023. It is unclear if this increase is a result of dispersal from nearby recruitment areas, higher survival rates of early life stages due to favorable environmental conditions, or both. We used a set of different models to simulate the dispersion and survival of anchovy early life stages in the Iberian region for the years preceding the increase in anchovy abundance. An ocean model simulation with the model CROCO provided the fields used as background for Lagrangian simulations coupled to an individual-based model of anchovy eggs and larvae. We simulated the years 2013-2015, and the results show that in 2014 and 2015, anomalous upper-ocean circulation patterns with strong and persistent eastward currents transported a large number of eggs and larvae from the Bay of Biscay (BoB) eastward along the Northern Iberian margin. The maximum transport occurred in June and July 2015, when 8 and 4%, respectively, of the eggs spawned in the BoB potentially reached the Iberian west coast as larvae. This process might explain the increase in anchovy abundance in the Western Iberian ecosystem. The results of the study show that episodes of anomalous intense ocean currents, when coincident with high presence of eggs, can lead to the colonization of new areas, and connectivity between areas varies dramatically with time. -
-
-
-
-
-

-
-
-
- -
-
- This study explores the impact of sub-mesoscale structures and vertical advection on the connectivity properties of the Baltic Sea using a Lagrangian approach. High-resolution flow fields from the General Estuarine Transport Model (GETM) were employed to compute Lagrangian trajectories, focusing on the influence of fine-scale structures on connectivity estimates. Six river mouths in the Baltic Sea served as initial positions for numerical particles, and trajectories were generated using flow fields with varying horizontal resolutions: 3D trajectories with 250m resolution as well as 2D trajectories with 250m and 1km resolutions. Several Lagrangian indices, such as mean transit time, arrival depths, and probability density functions of transit times, were analyzed to unravel the complex circulation of the Baltic Sea and highlight the substantial impact of sub-mesoscale structures on numerical trajectories. Results indicate that in 2D simulations, particles exhibit faster movement on the eastern side of the Gotland Basin in high-resolution compared to coarse-resolution simulations. This difference is attributed to the stronger coastal current in high-resolution compared to coarse-resolution simulations. Additionally, the study investigates the influence of vertical advection on numerical particle motion within the Baltic Sea, considering the difference between 3D and 2D trajectories. Findings reveal that denser water in the eastern and south-eastern areas significantly affects particle dispersion in 3D simulations, resulting in increased transit times. Conversely, regions in the North-western part of the basin accelerate particle movement in 3D compared to the 2D simulations. Finally, we calculated the average residence time of numerical particles exiting the Baltic Sea through the Danish strait. Results show an average surface layer residence time of approximately 790 days over an eight-year integration period, highlighting the relatively slow water circulation in the semi-enclosed Baltic Sea basin. This prolonged residence time emphasizes the potential for the accumulation of pollutants. Overall, the study underscores the pivotal role of fine-scale structures in shaping the connectivity of the Baltic Sea, with implications for understanding and managing environmental challenges in this unique marine ecosystem. - -
-
-
-
-
-

-
-
-
- -
-
- Copepoda is the most abundant taxon in deep-sea hydrothermal vents, where hard substrate is available. Despite the increasing interest in seafloor massive sulphides exploitation, there have been no population genomic studies conducted on vent meiofauna, which are known to contribute over 50% to metazoan biodiversity at vents. To bridge this knowledge gap, restriction-site-associated DNA sequencing, specifically 2b-RADseq, was used to retrieve thousands of genome-wide single-nucleotide polymorphisms (SNPs) from abundant populations of the vent-obligate copepod Stygiopontius lauensis from the Lau Basin. SNPs were used to investigate population structure, demographic histories and genotype–environment associations at a basin scale. Genetic analyses also helped to evaluate the suitability of tailored larval dispersal models and the parameterization of life-history traits that better fit the population patterns observed in the genomic dataset for the target organism. Highly structured populations were observed on both spatial and temporal scales, with divergence of populations between the north, mid, and south of the basin estimated to have occurred after the creation of the major transform fault dividing the Australian and the Niuafo'ou tectonic plate (350 kya), with relatively recent secondary contact events ($lt; 20 kya). Larval dispersal models were able to predict the high levels of structure and the highly asymmetric northward low-level gene flow observed in the genomic data. These results differ from most studies conducted on megafauna in the region, elucidating the need to incorporate smaller size when considering site prospecting for deep-sea exploitation of seafloor massive sulphides, and the creation of area-based management tools to protect areas at risk of local extinction, should mining occur. -
-
-
-
-
-

-
-
-
- -
-
- Aim: Protection of vulnerable marine ecosystems (VMEs) in the high seas has focussed on identifying concentrations of indicator species and prohibiting the operation of bottom-contact fishing gears where those occur in significant concentrations. Most such species have planktonic larvae and depend on dispersal networks for inter-generational persistence. Yet, connectivity amongst patches of VME has seldom been considered when spatial management measures are introduced. Here, the relative importance of individual patches for the maintenance of their connectivity networks is evaluated, and a prioritization scheme for management action is proposed. Effective conservation measures should maintain approximately natural network configurations whenever possible. -

- Location: Grand Bank and Flemish Cap, Northwest Atlantic Ocean. -

- Methods: 3-D Lagrangian particle tracking was used to model larval dispersal connections between known patches of each of seven groups of benthic invertebrate taxa, previously recognized as indicators of VME. Connectivity networks were constructed and the effects of habitat loss simulated by systematic removal of whole patches, to determine the importance of each patch to connectivity within its respective network. -

- Results: The various patches differed widely in their contributions to network connectivity. Each taxon group had both some patches that, if removed from the network, would result in a major decline in connectedness but also several which could be lost with negligible consequences for the remainder. -

- Main Conclusions: While protecting each patch of VME has conservation value, the wide variation in connectedness shows that some patches are much more critical than others to the long-term persistence of the taxa, providing a foundation for prioritization of conservation actions.
-
-
-
-
-

-
-
-
- -
-
- The transport mechanisms of floating marine debris in coastal zones remain poorly understood due to complex geometries and the influence of coastal processes, posing difficulties in incorporating them into Lagrangian numerical models. The numerical model LOCATE overcomes these challenges by coupling Eulerian hydrodynamic data at varying resolutions within nested grids using Parcels, a Lagrangian particle solver, to accurately simulate the motion of plastic particles where a high spatial coverage and resolution are required to resolve coastal processes. Nested grids performed better than a coarse-resolution grid when analysing the model's dispersion skill by comparing drifter data and simulated trajectories. A sensitivity analysis of different beaching conditions comparing spatiotemporal beaching patterns demonstrated notable differences in the land–water boundary detection between nested hydrodynamic grids and high-resolution shoreline data. The latter formed the basis for a beaching module that parameterised beaching by calculating the particle distance to the shore during the simulation. A realistic debris discharge scenario comparison around the Barcelona coastline using the distance-based beaching module in conjunction with nested grids or a coarse-resolution grid revealed very high levels of particle beaching (>91.5%) in each case, demonstrating the importance of appropriately parameterising beaching at coastal scales. In this scenario, high variability in particle residence times and beaching patterns was observed between simulations. These differences derived from how each option resolved the shoreline, with particle residence times being much higher in areas of intricate shoreline configurations when using nested grids, thus resolving complex structures that were undetectable using the coarse-resolution grid. LOCATE can effectively integrate high-resolution hydrodynamic data within nested grids to model the dispersion and deposition patterns of particles at coastal scales using high-resolution shoreline data for shoreline detection uniformity. -
-
-
-
-
-

-
-
-
- -
-
- Many countries with tropical reef systems face hard choices preserving coral reefs in the face of climate change on limited budgets. One approach to maximising regional reef resilience is targeting management efforts and resources at reefs that export large numbers of larvae to other reefs. However, this requires reef connectivity to be quantified. To map coral connectivity in the Seychelles reef system we carried out a population genomic study of the Porites lutea species complex using 241 sequenced colonies from multiple islands. To identify oceanographic drivers of this connectivity and quantify variability, we further used a 2 km resolution regional ocean simulation coupled with a larval dispersal model to predict the flow of coral larvae between reef sites. Patterns of admixture and gene flow are broadly supported by model predictions, but the realised connectivity is greater than that predicted from model simulations. Both methods detected a biogeographic dispersal barrier between the Inner and Outer Islands of Seychelles. However, this barrier is permeable and substantial larval transport is possible across Seychelles, particularly for one of two putative species found in our genomic study. The broad agreement between predicted connectivity and observed genetic patterns supports the use of such larval dispersal simulations in reef system management in Seychelles and the wider region. -
-
-
-
-
-

-
-
-
- -
-
- The Amazon Continental Shelf (ACS) is a shallow region (< 100 m), with a maximum width of 330 km, which encloses the northern portion of the Brazilian continental shelf and has great ecological and climatic importance on a global scale. Although important scientific efforts have been made to understand the hydrodynamics of the ACS and the dispersion of the Amazon River plume, there are still few studies that address surface oceanic water intrusion into the ACS. This study describes the existence of preferential surface oceanic water intrusion pathways into the ACS along 3 sectors: Maranhão (MA shelf), Pará (PA shelf) and Amapá (AP shelf). The analysis is based on: (i) 306 surface drifter trajectories along 1344 km of the ACS (provided by the Global Drifter Program) and (ii) 20 years of Lagrangian simulations (with Parcels model forced by currents from the reanalysis GLORYS). The results show that the MA shelf sector is the main pathway for surface oceanic water intrusions into the ACS, corresponding to 56% of the intrusions, followed by PA shelf (43%) and AP shelf (1%). During the austral summer, intrusions occur with a higher frequency in PA and AP shelf. The MA shelf shows weak seasonality in the intrusions. The temporal variability of particle intrusion rates into the ACS is directly related to the variability of the trade winds, and the meso-scale circulation associated with the North Brazil Current and the North Equatorial Countercurrent. -
-
-
-
-
-

-
-
-
- -
-
- In the past three decades, altimeter-based remote sensing has been a widely used system to estimate ocean surface currents. However, it remains a great challenge to effectively resolve scales below ∼100 km at high latitudes and ∼ 300 km at mid-latitudes. In this study, we propose a scheme that utilizes geostrophic equilibrium and surface quasigeostrophy theory (SQG) to improve surface current resolution by incorporating remote sensing sea surface temperature (SST), sea surface height (SSH), and sea surface salinity (SSS) observations. The scheme separately characterizes the larger-scale flows and smaller-scale motions of surface currents. A case study encompassing the Agulhas surface current demonstrates that the smaller-scale motions associated with temperature fronts are well captured by introducing high spatial-temporal resolution SST data. Furthermore, the reconstructed surface current is systemically evaluated by using surface drogued drifters and a Lagrangian synthetic particle tracking tool throughout the South Indian Ocean (SIO) for 2011–2015. Notably, the reconstructed zonal velocity component is closer to the drifter observations than the meridional counterpart and corresponding velocity phase. Regionally, the Antarctic Circumpolar Current (ACC) showcases superior reconstruction performance, with higher skill scores and lower Lagrangian separation distances. However, a relatively large uncertainty is observed around the Agulhas Retroflection (AR) and Greater Agulhas System (GAS), which are linked to complicated regional dynamic regimes. We finally conduct four simulation experiments to explore the effect of different SST products on surface current reconstruction within the subdomain AR. The results indicate the varying potentials of the four evaluated SST products for informing surface current applications. Specifically, the MWIRSST enhances the likelihood of particles reaching the target field, while DMI OI shortens the average deviation distance of the arrived particles. -
-
-
-
-
-

-
-
-
- -
-
- Shellfish aquaculture is of great importance in offering a sustainable food source, thus playing a major role towards achieving food security and nutrition, employment, and economic development in coastal areas. Mussel aquaculture, in particular, offers a substantial development opportunity for Black Sea riparian countries; however, a significant attention must be given to zoo-sanitary conditions and public health, considering the filter-feeding behaviour of these organisms. With the involvement of GFCM’s Aquaculture Demonstrative Center (hosted by NIMRD), the microbiological classification of bivalve mollusk production and relaying areas in Romania was performed. Yet, the regular monitoring of these areas is not enough to prevent accidental contamination of shellfish farms, in case a potential harmful discharge from a wastewater treatment plant occurs. In this context, the goal of our research was to develop a prediction tool, focused on an early warning system of any possibly microbiologically loaded water discharge (Escherichia coli), using a downscaling of CMEMS Earth Observation data and in situ validation. The developed service module can give farmers the ability to predict a potential harmful outbreak and decide to harvest earlier or later and/or keep the mussels in a purification tank before marketing, in order to avoid any possible E. coli contaminated harvest to be put on the market involuntarily. -
-
-
-
-
-

-
-
-
- -
-
- West Antarctic Ice Sheet mass loss is a major source of uncertainty in sea level projections. The primary driver of this melting is oceanic heat from Circumpolar Deep Water originating offshore in the Antarctic Circumpolar Current. Yet, in assessing melt variability, open ocean processes have received considerably less attention than those governing cross-shelf exchange. Here, we use Lagrangian particle release experiments in an ocean model to investigate the pathways by which Circumpolar Deep Water moves toward the continental shelf across the Pacific sector of the Southern Ocean. We show that Ross Gyre expansion, linked to wind and sea ice variability, increases poleward heat transport along the gyre’s eastern limb and the relative fraction of transport toward the Amundsen Sea. Ross Gyre variability, therefore, influences oceanic heat supply toward the West Antarctic continental slope. Understanding remote controls on basal melt is necessary to predict the ice sheet response to anthropogenic forcing. -
-
-
-
-
-

-
-
-
- -
-
- The tropical Pacific Ocean is characterized by its dominant zonal flow, strong climate dependence on the El Niño–Southern Oscillation (ENSO) and abundant tuna stocks. Tuna fisheries in the West and Central Pacific Ocean accounted for 55 % of the world-wide tuna catch in 2019 and are one of the main sources of income in many Pacific island nations. One of the dominant fishing methods in this region relies on the use of drifting fish aggregating devices (dFADs): rafts with long underwater appendages (on average 50 m deep) that aggregate fish. Although currents such as the North Equatorial Countercurrent (NECC) and South Equatorial Current (SEC) in the tropical Pacific Ocean vary strongly with ENSO, little is known about the impact of this variability in flow on dFAD dispersion. In this study, virtual Lagrangian particles are tracked for the period 2006 to 2021 over the domain in a 3D hydrodynamic model and are advected in simulations with only surface flow, as well as simulations using a depth-averaged horizontal flow over the upper 50 m, representing virtual dFADs. Zonal displacements, eddy-like behaviour and ENSO variability are then studied for both types of virtual particles. It was found that virtual particles advected by surface flow only are displaced up to 35 % farther than virtual dFADs subjected to a depth-averaged flow, but no other major differences were found in dispersion patterns. The strongest correlations between ENSO and virtual dFAD dispersion for the assessed variables were found in the West Pacific Ocean, with Pearson correlation coefficients of up to 0.59 for virtual dFAD displacement. Connections between ENSO and eddy-like behaviour were found in the western part of the SEC, indicating more circulation and meandering during El Niño. These findings may be useful for improving sustainable deployment strategies during ENSO events and understanding the ocean processes driving the distribution of dFADs. -
-
-
-
-
-

-
-
-
- -
-
- Larval dispersal and connectivity are key processes that drive marine metapopulation dynamics, and therefore should be well characterized when designing effective management strategies. While temperature and food availability can structure marine species connectivity patterns, their contribution has not been thoroughly investigated in highly fragmented archipelagos. We used biophysical modeling of larval dispersal to explore the connectivity patterns of species with complex life-cycles across French Polynesia (FP), a territory formed by more than a hundred small, geographically isolated islands covering an area as large as Europe. We first simulated ten years of larval dispersal to investigate the spatial and temporal (seasonal and interannual) variability in larval dispersal pathways for different hypothetical species exhibiting a range of Larval Precompetency Period (LPP) values. Then, using the black-lip pearl oyster (Pinctada margaritifera) as a model species, we accounted for variability in the LPP induced by temperature and food availability, as derived from a Dynamic Energy Budget (DEB) model. The model showed that food availability and mesoscale turbulence (eddies) in the Marquesas jointly constrained larval dispersal, reducing its potential connectivity with other archipelagos in FP. The DEB simulations also revealed seasonal and interannual variability in connectivity driven by environmental conditions. However, accounting for food and temperature effects on larval development, barely changed the connectivity pattern at regional scale due to the remoteness of this archipelago. Our study thus provides appropriate management units definition at regional scale for the species across FP. -
-
-
-
-
-

-
-
-
- -
-
- Coral reefs are in decline worldwide, making it increasingly important to promote coral recruitment in new or degraded habitat. Coral reef morphology—the structural form of reef substrate—affects many aspects of reef function, yet the effect of reef morphology on coral recruitment is not well understood. We used structure-from-motion photogrammetry and airborne remote sensing to measure reef morphology (rugosity, curvature, slope, and fractal dimension) across a broad continuum of spatial scales and evaluated the effect of morphology on coral recruitment in three broadcast-spawning genera. We also measured the effect of other environmental and biotic factors such as fish density, adult coral cover, hydrodynamic larval import, and depth on coral recruitment. All variables combined explained 72% of coral recruitment in the study region. Coarse reef rugosity and curvature mapped at ≥2 m spatial resolution—such as large colonies, knolls, and boulders—were positively correlated with coral recruitment, explaining 22% of variation in recruitment. Morphology mapped at finer scales (≤32 cm resolution) was not significant. Hydrodynamic larval import was also positively related to coral recruitment in Porites and Montipora spp., and grazer fish density was linked to significantly lower recruitment in all genera. In addition, grazer density, reef morphology, and hydrodynamic import had differential effects on coral genera, reflecting genus-specific life history traits, and model performance was lower in gonochoric species. Overall, coral reef morphology is a key indicator of recruitment potential that can be detected by remote sensing, allowing potential larval sinks to be identified and factored into restoration actions. -
-
-
-
-
-

-
-
-
- -
-
- In this paper, we describe methods to verify the adequacy and accuracy of Lagrangian particles from a Lagrangian model to reproduce the concentrations of a passive tracer from an Eulerian-model in river plumes. The modelling simulates plumes from two major rivers discharging in the Great Barrier Reef (GBR), Australia, under real-world scenarios. The study has been a part of a major project to aid in the protection of the GBR system from the impacts of extreme events and climate change. We employ the Regional Ocean Modelling System (ROMS) activated with its built-in Lagrangian model, and forced with wind fields from global models and recorded river volume discharges. The ROMS-Lagrangian model tracks the Lagrangian particles using the spatially interpolated velocities computed on the Eulerian ROMS three-dimensional (3D) grid. The Lagrangian particles are released in the river in proportion to the measured river volume flux. We apply a novel technique that exploits Voronoi polygon areas to convert Lagrangian particle separation into a concentration field. This facilitates comparison with the passive tracer concentrations driven by the Eulerian velocities computed on the ROMS 3D grid. We evaluate the fate of Lagrangian particles activated on a 4-km grid resolution with those of equivalent Eulerian tracer concentrations. For validation, we compare the Lagrangian particles with the Eulerian passive tracer simulated using a higher model grid resolution of 500-m, and found that the computed Lagrangian particle concentrations showed similar overall patterns compared to the passive tracer concentrations from both the coarse 4-km, and high-resolution 500-m Eulerian models. The spatial extent of the particles was in better agreement with the coarse 4-km model than with the higher resolution 500-m model. The clustering of particles resulted in structures at finer scales than the Eulerian model, over the high particle density areas that compared well against observations. The Lagrangian particles are able to capture the general river plume patterns seen in the satellite MODIS images and the satellite derived Chlorophyll-a. We further compare the online ROMS model with an offline particle tracker, OceanPARCELS and determined the similarity of results from both online and offline methods. Overall, our study demonstrates the viability to use Lagrangian particles to reproduce the Eulerian tracer properties, which can be combined with particle properties include tracer age providing to enhance the guidance on the distribution and concentration of effluent from localised flooding river events. -
-
-
-
-
-

-
-
-
- -
-
- Identifying dispersal pathways and critical habitats is essential to evaluate risks and inform effective management strategies of migratory marine species during all life stages. This is especially true for sea turtles that are conservation-dependent and for which management needs usually precedes comprehensive data collection. The aim of this study was to model dispersal pathways (representative of individual behaviour) and compare potential dispersal corridors (representative of population-level behaviour) of hawksbill, loggerhead, leatherback, and green sea turtles from key rookeries in the Western Indian Ocean (WIO) with different dispersal strategies. We used the Sea Turtle Active Movement Model (STAMM) to simulate post-hatchling dispersal under the combined effects of ocean currents and habitat-driven movements. Simulation results confirmed the high connectivity between hatching sites and developmental areas in the WIO; dispersal is mostly driven by ocean currents but differs among species and years with habitat quality also differing among species. Active swimming appeared to have little influence on their dispersal patterns during the first year. We then analysed simulation results using a movement-based kernel density estimation to identify dispersal corridors for each species. There were three distinct dispersal corridors: among equatorial Indian Ocean Islands (hawksbills); along East Africa (green turtles); and around southern Africa (loggerheads and leatherbacks). These results provide a first estimation of the dispersal pathways used by neonate turtles, that are usually lacking in conservation assessments. The results can also assist to develop more targeted management measures like RMU designation or marine spatial planning for the lost years. -
-
-
-
-
-

-
-
-
- -
-
- Knowledge of microplastic trajectories is useful for a variety of fields ranging from science to commerce. In this research, microplastic trajectories in the upper water column in each season were simulated using Python-based OceanParcels. The simulation domain covers Japan and its surrounding waters. HYCOM current data were used as input for the simulation. The simulation results show that in boreal winter and spring, the trajectory of microplastics tends to move toward the Pacific Ocean. Meanwhile, in summer and fall, the microplastic trajectory tends to move northward in the waters around Japan. The distribution of microplastics reaches various areas in Japanese waters with the northernmost area reached being Akita Prefecture. Meanwhile, the southernmost area reached is the islands in Kagoshima Prefecture which are close to the Okinawa Islands. -
-
-
-
-
-

-
-
-
- -
-
- The study of Antarctic first-year sea-ice biogeochemistry has been limited by samples mostly being collected in pack ice during summer, with few winter data available. Measurements from the Antarctic marginal ice zone (AMIZ) have proven even more difficult to obtain. The AMIZ is a broad, circumpolar feature of the Southern Ocean found at different latitudes during the year where light and nutrients are high enough to sustain primary production and influence ecosystem functioning. We present the first biogeochemical data set from growing ice collected in the Atlantic AMIZ during winter 2019, including measurements from young pancake ice (YI) and consolidated first-year ice (FYI). Measurements of sea-ice temperature, salinity, crystal structure, δ18O, chlorophyll, and nutrient concentrations were used to investigate the winter sea-ice habitat and decipher the conditions under which the ice formed and grew. Model simulations support the hypothesis that nutrient accumulation in advancing sea ice cannot be explained by passive seawater entrainment and thermodynamics alone. Our data confirm that winter sea ice is biogeochemically active and accumulates remineralized nutrients. We further propose that mechanical thickening enhances the reservoir of nutrients during the ice growth season. The biogeochemical transition from YI to FYI does not appear to be a linear progression of thickness with habitat space reduction as sea ice consolidates. Instead, FYI bulk biogeochemistry results from multiple cycles of rafting of YI, which conserves the biogeochemical properties of YI in the FYI, ultimately increasing the overall nutrient and chlorophyll content. -
-
-
-
-
-

-
-
-
- -
-
- Subglacial discharge from the Antarctic Ice Sheet (AIS) likely played a crucial role in the loss of the ice sheet and the subsequent rise in sea level during the last deglaciation. However, no direct proxy is currently available to document subglacial discharge from the AIS, which leaves significant gaps in our understanding of the complex interactions between subglacial discharge and ice-sheet stability. Here we present deep-sea coral 234U/238U records from the Drake Passage in the Southern Ocean to track subglacial discharge from the AIS. Our findings reveal distinctively higher seawater 234U/238U values from 15,400 to 14,000 years ago, corresponding to the period of the highest iceberg-rafted debris flux and the occurrence of the meltwater pulse 1A event. This correlation suggests a causal link between enhanced subglacial discharge, synchronous retreat of the AIS, and the rapid rise in sea levels. The enhanced subglacial discharge and subsequent AIS retreat appear to have been preconditioned by a stronger and warmer Circumpolar Deep Water, thus underscoring the critical role of oceanic heat in driving major ice-sheet retreat. -
-
-
-
-
-

-
-
-
- -
-
- The expansion of lionfish Pterois miles across the Mediterranean Sea since its introduction via the Suez Canal has been rapid, but the mechanisms by which the expansion occurred have not been fully tested. By using a series of Lagrangian particle tracking simulations and high-resolution hydrodynamic models, we tested the hypothesis that passive dispersal of larvae could explain the east to west expansion of lionfish. By sequentially modelling the annual dispersal of larvae, from the first observation in Lebanon in 2012 and then modelling dispersal of larval from the simulated settlement sites, we showed that passive dispersal driven by ocean currents largely explained the observed expansion of lionfish until 2020. The spread of lionfish was likely restricted by environmental conditions when the population reached the central Mediterranean and the particle tracking simulations diverged from observations. The results emphasize the potential contribution of computational models in understanding the dispersal of non-indigenous and range expanding species in response to changing environmental conditions, identifying high risk areas, and guiding targeted surveillance, early detection, and informing management strategies for such species. Given that many non-indigenous species in the Mediterranean are introduced through a consistent pathway (the Suez Canal), the incorporation of interdisciplinary approaches and high-resolution biophysical models can provide fundamental knowledge for management action prioritization. -
-
-
-
-
-

-
-
-
- -
-
- A variety of submesoscale coherent vortices (SCVs) in the Kuroshio Extension region have been reported by recent observational studies, and the preliminary understanding of their properties, spatial distribution and possible origins has progressively improved. However, due to relatively sparse in situ observations, the generation mechanisms of these SCVs and associated dynamic processes remain unclear. In this study, we use high-resolution model simulations to fill the gaps of the in situ observations in terms of the three-dimensional structures and life cycles of SCVs. Vortex detection and tracking algorithms are adopted and the characteristics of warm-core and cold-core SCVs are revealed. These vortices have finite Rossby numbers (0.25-0.4) and their horizontal structures can be well described by the Tayler vortex model in terms of the gradient wind balance. The vertical velocity field is characterized by a distinct dipole pattern with upwelling and downwelling cells at the vortex edge. It is very likely that both types of SCVs are generated along the eastern Japan coast through flow–topography interactions, and the Izu–Ogasawara Ridge and Hokkaido slope are found to be two important generation sites where topography friction produces extremely low potential vorticity. After leaving the boundary, SCVs can propagate over long distances and trap a water volume of ~1011 m3. -
-
-
-
-
-

-
-
-
- -
-
- The increase in genetic distance between marine individuals or populations with increasing distance has often been assumed to be influenced by dispersal distance. In turn, dispersal distance has often been assumed to correlate strongly with pelagic larval duration (PLD). We examined the consistency of these assumptions in species with long planktonic durations. Reviewing multiple marine species, Selkoe & Toonen (2011; Mar Ecol Prog Ser 436:291-305) demonstrated significant fit of a species’ PLD with metrics of genetic distance between sampling sites. However, for long dispersers (PLD >10 d) whose dispersal is more influenced by ocean currents, the fit of PLD and genetic connectivity metrics was not significant. We tested if using realistic ocean currents to determine simulated dispersal distances would produce an improved proxy for larval dispersal that correlates more strongly with genetic connectivity metrics. We estimated the dispersal distance of propagules for locations in the genetic studies compiled by Selkoe and Toonen with a global ocean model (Mercator, 1/12° resolution). The model-derived estimates of dispersal distance did not correlate better than PLD against the genetic diversity metrics global FST km-1 and isolation-by-distance (IBD) slope. We explored 2 explanations: (1) our ocean circulation-based dispersal distance estimates are too simple to produce biologically meaningful improvement over PLD, and (2) IBD slope is not a powerful predictor of variation in dispersal distance between species with long PLD. Exploring these explanations suggests directions for future research which will enable better quantitative understanding of genetic diversity and its spatial distribution in coastal marine organisms. -
-
-
-
-
-

-
-
-
- -
-
- Reconstructions of Lagrangian drift, for example for objects lost at sea, are often uncertain due to unresolved physical phenomena within the data. Uncertainty is usually overcome by introducing stochasticity into the drift, but this approach requires specific assumptions for modelling uncertainty. We remove this constraint by presenting a purely data-driven framework for modelling probabilistic drift in flexible environments. Using ocean circulation model simulations, we generate probabilistic trajectories of object location by simulating uncertainty in the initial object position. We train an emulator of probabilistic drift over one day given perfectly known velocities and observe good agreement with numerical simulations. Several loss functions are tested. Then, we strain our framework by training models where the input information is imperfect. On these harder scenarios, we observe reasonable predictions although the effects of data drift become noticeable when evaluating the models against unseen flow scenarios. -
-
-
-
-
-

-
-
-
- -
-
- The influences of sea surface wind on the oceanic mesoscale eddy are complex. By integrating our self-developed surface drifters with satellite observations, we examined the influence of sea surface wind on the distribution of water masses and biomass within the interior of an anticyclonic eddy. Ten drifters were deployed in the northern South China Sea in the spring of 2021. Eventually, six were trapped in an anticyclonic mesoscale eddy for an extended period. Interestingly, the drifters’ trajectories were not symmetric around the eddy center, displaying a significant offset of the distance from the wind turns to the southerly wind. Particle tracking experiments demonstrated that this departure could mainly be attributed to wind-driven ageostrophic currents. This is due to the strength of wind-driven ageostrophic currents being more comparable to geostrophic currents when accompanied by a deflection between the directions of the wind-driven current and the eddy’s translation. The drifters’ derived data indicated that sub-mesoscale ageostrophic currents within the eddy contributed to this asymmetric trajectory, with Ekman and non-Ekman components playing a role. Furthermore, the evolution of ocean color data provided corroborating evidence of these dynamic processes, highlighting the importance of ageostrophic processes within mesoscale eddies. -
-
-
-
-
-

-
-
-
- -
-
- The Northwest Atlantic Shelf and Slope have warmed dramatically in the past decade, changing marine life and challenging fisheries management. A rapid warming event in 2009/2010, linked to a reduced supply of cold water from the Labrador Sea, pushed this region to a new state of unprecedentedly high temperatures that persists today. However, a mechanistic understanding of how the Labrador Current connectivity is reduced at the Tail of the Grand Banks of Newfoundland has been lacking. Here, we present the results of a 25-year (1993–2017) Lagrangian analysis using the HYbrid Coordinate Ocean Model. Synthetic particles were released in the vicinity of the Labrador Current upstream of the Grand Banks and tracked in a 2-D velocity field. We found that the Labrador Current can be completely blocked by Gulf Stream eddies and meanders that impinge on the shelf break along the Grand Banks. This blocking can occur in many different locations at, upstream, or downstream of the Tail of the Grand Banks, since the Labrador Current needs a clear passage over a long distance to continue its path. In the simulation, the Labrador Current has been blocked more often since 2008, which led to the warming of the Northwest Atlantic Shelf and Slope. These results, which are consistent with satellite observations, can provide predictability for the New England and Nova Scotia shelf environments potentially helpful for ecosystem management.
-
-
-
-
-

-
-
-
- -
-
- Climate change is one of the top three global threats to seabirds, particularly species that visit polar regions. Arctic terns migrate between both polar regions annually and rely on productive marine areas to forage, on sea ice for rest and foraging, and prevailing winds during flight. Here, we report 21st-century trends in environmental variables affecting arctic terns at key locations along their Atlantic/Indian Ocean migratory flyway during the non-breeding seasons, identified through tracking data. End-of-century climate change projections were derived from Earth System Models and multi-model means calculated in two Shared Socioeconomic Pathways: ‘middle-of-the-road’ and ‘fossil-fuelled development’ scenarios. Declines in North Atlantic primary production emerge as a major impact to arctic terns likely to affect their foraging during the 21st century under a ‘fossil-fuelled development’ scenario. Minimal changes are, however, projected at three other key regions visited by arctic terns (Benguela Upwelling, Subantarctic Indian Ocean and the Southern Ocean). Southern Ocean sea ice extent is likely to decline, but the magnitude of change and potential impacts on tern survival are uncertain. - Small changes (<1ms1) in winds are projected in both scenarios, but with minimal likely impacts on migration routes and duration. However, Southern Ocean westerlies are likely to strengthen and contract closer to the continent, which may require arctic terns to shift routes or flight strategies. Overall, we find minor effects of climate change on the migration of arctic terns, with the exception of poorer foraging in the North Atlantic. However, given that arctic terns travel over huge spatial scales and live for decades, they integrate minor changes in conditions along their migration routes such that the sum effect may be greater than the parts. Meeting carbon emission targets is vital to slow these end-of-century climatic changes and minimise extinction risk for a suite of polar species. -
-
-
-
-
-

-
-
-
- -
-
- Air-sea exchange of carbon dioxide (CO2) in the Southern Ocean plays an important role in the global carbon budget. Previous studies have suggested that flow around topographic features of the Southern Ocean enhances the upward supply of carbon from the deep to the surface, influencing air-sea CO2 exchange. Here, we investigate the role of seafloor topography on the transport of carbon and associated air-sea CO2 flux in an idealized channel model. We find elevated CO2 outgassing upstream of a seafloor ridge, driven by anomalous advection of dissolved inorganic carbon. Argo-like Lagrangian particles in our channel model sample heterogeneously in the vicinity of the seafloor ridge, which could impact float-based estimates of CO2 flux. -
-
-
-
-
-

-
-
-
- -
-
- South African climate variability has been linked to changes in both the Agulhas system and external forcing (i.e. CO2 and ozone). We analysed future climate change in the Agulhas system volume transport and its associated impacts on South Africa’s precipitation using the Community Climate System Model version 4 as part of the Coupled Model Intercomparison Project, phase 5. Output from one historical and three future greenhouse gas emission scenarios were examined to project various climate storylines. We found that the Agulhas Current volume transport decreases across all three scenarios and that the current displays a strong baroclinic component with an increase in transport at the surface and decrease at intermediate depths. Agulhas leakage was found to increase with historical emissions. Additionally, an east-west dipole pattern for convective precipitation was found over South Africa, with an increase over the eastern region related to an increase in greenhouse gas emissions and a decrease in the western region linked to the location of Hadley cell edge latitude. Moving into the 21st century, future predictions in regional climate variability are shown to be dependent on the intensity of greenhouse gas emissions and are extremely important for South Africa, a region prone to drought and flooding and home to a large population dependent on rain-fed agriculture. -
-
-
-
-
-

-
-
-
- -
-
- The Northern Patagonian shelf (35-42°S SW South Atlantic) is a transitional area between the subtropical and subantarctic domains, where the shelf shifts from source to sink of atmospheric CO2. In the southeast portion (39-42°S, 61-55°W) of this area, winds interact with different water masses and picture a complex circulation that supports two productive frontal systems: the Mid-Shelf Front (MSF) and the Patagonian Shelf-break Front. We combined remote sensing (e.g., monthly surface chlorophyll a over the period: September-December 2002-2021), reanalysis (winds and surface currents), and in situ measurements from three cross-shelf cruises in spring 2016, 2017, and 2019, to assess the underlying drivers of phytoplankton distribution. The anomalous high chlorophyll concentration in the MSF in spring 2016 was related to enhanced water mass retention by N-NE winds. Contrasting phytoplankton assemblages emerged related to stratified waters in the shelf influenced by the Patagonian Current and vertically mixed waters at the continental edge (Malvinas Current). Large diatoms prevailed in the outer shelf followed by dinoflagellates, while nanoflagellates and microzooplankton dominated in the mid-shelf. Furthermore, thickness of the subsurface chlorophyll maximum was broader in the early spring than in a more advanced state of the bloom where the coccolithophore Emiliania huxleyi was abundant. We showed that different time-scale physical processes—winds, surface currents and vertical mixing—are underpinning the development of spring blooms with different taxa composition in the Patagonian shelf, where different water masses define the hydrological complexity that led to patchy phytoplankton. -
-
-
-
-
-

-
-
-
- -
-
- The fate of plastics that enter the ocean is a longstanding puzzle. Recent estimates of the oceanic input of plastic are one to two orders of magnitude larger than the amount measured floating at the surface. This discrepancy could be due to overestimation of input estimates, processes removing plastic from the surface ocean or fragmentation and degradation. Here we present a 3D global marine mass budget of buoyant plastics that resolves this discrepancy. We assimilate observational data from different marine reservoirs, including coastlines, the ocean surface, and the deep ocean, into a numerical model, considering particle sizes of 0.1–1,600.0 mm. We find that larger plastics (>25 mm) contribute to more than 95% of the initially buoyant marine plastic mass: 3,100 out of 3,200 kilotonnes for the year 2020. Our model estimates an ocean plastic input of about 500 kilotonnes per year, less than previous estimates. Together, our estimated total amount and annual input of buoyant marine plastic litter suggest there is no missing sink of marine plastic pollution. The results support higher residence times of plastics in the marine environment compared with previous model studies, in line with observational evidence. Long-lived plastic pollution in the world’s oceans, which our model suggests is continuing to increase, could negatively impact ecosystems without countermeasures and prevention strategies. -
-
-
-
-
-

-
-
-
- -
-
- Introduction: Floating marine litter (FML) is a global problem with significant risks to marine life and human health. In semi-enclosed basins like the Black Sea, slow water replenishment and strong input from European rivers create conditions that can lead to the accumulation of FML. This study aims to validate and utilize an FML dispersion and accumulation numerical model. Additionally, it assesses the influence of Stokes drift on the accumulation patterns of marine litter in the Black Sea, focusing on the contribution from the main river discharge points. -Methods: Numerical Lagrangian modeling adapted to the regional domain in the Black Sea was employed to simulate the dispersion and accumulation of FML. Three scenarios were conducted: two involved homogeneous particle release, one considering Stokes drift, and the other excluding it. The third scenario involved particle release from the nine main river basins. -Results: The southwest coast of the Black Sea exhibited a high density of FML in all scenarios. This finding is likely attributed to the cyclonic circulation, significant FML input from the Danube River, and other northern rivers. Notably, the consideration of Stokes drift significantly impacted the residence time of particles in offshore waters and the percentage of particles washing up on the shore. Including Stokes drift increased the percentage of beached particles from 45.5% to 75.5% and reduced the average residence time from 99 to 63 days. These results align with recent literature, which emphasizes the importance of accounting for Stokes drift to avoid overestimating residence times. -Discussion: The model's findings provide valuable insights into FML accumulation patterns in the Black Sea. The eastern region near the Georgian coast and the northwestern Black Sea were identified as high-density areas, corroborated by observational data. This research underscores the significance of considering Stokes drift when modeling FML transport, particularly concerning marine litter accumulation and potential impacts on coastal regions. -
-
-
-
-
-

-
-
-
- -
-
- PyPlume is a Python toolbox for unifying the process of loading two-dimensional oceanic current vector fields from models and observations, simulating trajectory models, and analyzing particle trajectories. Jupyter notebooks are utilized to simplify management and configuration of simulations while also providing an interface for rapid assessment of simulated trajectories. The software provides a modular selection of boundary conditions, gap-filling schemes, and advection kernels. Model outputs can be visualized by a suite of plotting tools, and be exported for analysis with additional processing software. Example applications of PyPlume include near real-time and forecast analysis of surface pollutants in coastal waters. -
-
-
-
-
-

-
-
-
- -
-
- On August 13th, 2021, the Fukutoku-Okanoba, a submarine volcano - in the Northwest Pacific Ocean, erupted. Satellites detected - various pumice rafts that had drifted westward to reach southern - Japan over two months. To cope with the potential danger from - pumice rafts, predicting their trajectories is crucial. Using a - Lagrangian particle tracking model, the trajectories of the - rafts were investigated. The model results showed strong - sensitivity to the windage coefficient of pumice rafts, which is - uncertain and could cause significant errors. An optimal windage - coefficient was estimated by comparing the model results with - satellite images using a skill score based on the distance - between simulated particles and the nearest observed rafts - divided by the travel distance of the particles. The optimal - windage coefficients ranged between 2 and 3 % and produced - pathways comparable to the observations from satellites. The - simulation results showed that the pumice rafts moved from - Fukutoku-Okanoba toward the Ryukyu Islands for approximately two - months prior to being pushed by the north-easterly wind toward - Taiwan against the Kuroshio. The methods presented here may - become a valuable tool in managing coastal hazards due to - diverse marine debris. -
-
-
-
-
-

-
-
-
- -
-
- Intense short-term wind events can flush multiple-inlet systems - and even renew the water entirely. Nonetheless, little is known - about the effect of wind variations at seasonal and interannual - scales on the flushing of such systems. Here, we computed two - Lagrangian transport time scales (LTTS), the residence and - exposure times, for a multiple-inlet system (the Dutch Wadden - Sea) over 36 years using a realistic numerical model simulation. - Our results reveal pronounced seasonal and interannual - variability in both system-wide LTTS. The seasonality of the - LTTS is strongly anti-correlated to the wind energy from the - prevailing directions, which are from the southwesterly quadrant - and coincidentally aligned with the geographical orientation of - the system. This wind energy, which is stronger in autumn-winter - than in spring-summer, triggers strong flushing (and hence low - values of the LTTS) during autumn-winter. The North Atlantic - Oscillation (NAO) and the Scandinavia Pattern (SCAN) are shown - to be the main drivers of interannual variability in the local - wind and, ultimately, in both LTTS. However, this coupling is - much more efficient during autumn-winter when these patterns - show larger values and variations. During these seasons, a - positive NAO and a negative SCAN induce stronger winds in the - prevailing directions, enhancing the flushing efficiency of the - system. The opposite happens during positive SCAN and negative - NAO, when weaker flushing during autumn-winter is observed. - Thus, large-scale atmospheric patterns strongly affect the - interannual variability in flushing and are potential drivers of - the long-term ecology and functioning of multiple-inlet systems. -
-
-
-
-
-

-
-
-
- -
-
- Little is known about dispersal in deep-sea ecosystems, - especially for sponges, which are abundant ecosystem engineers. - Understanding patterns of gene flow in deep-sea sponges is - essential, especially in areas where rising pressure from - anthropogenic activities makes difficult to combine management - and conservation. Here, we combined population genomics and - oceanographic modelling to understand how Northeast Atlantic - populations (Cantabrian Sea to Norway) of the deep-sea sponge - Phakellia ventilabrum are connected. The analysis comprised - ddRADseq derived SNP datasets of 166 individuals collected from - 57 sampling stations from 17 different areas, including two - Marine Protected Areas, one Special Area of Conservation and - other areas with different levels of protection. The 4,017 - neutral SNPs used indicated high connectivity and panmixis - amongst the majority of areas (Ireland to Norway), spanning ca. - 2,500-km at depths of 99–900 m. This was likely due to the - presence of strong ocean currents allowing long-distance larval - transport, as supported by our migration analysis and by 3D - particle tracking modelling. On the contrary, the Cantabrian Sea - and Roscoff (France) samples, the southernmost areas in our - study, appeared disconnected from the remaining areas, probably - due to prevailing current circulation patterns and topographic - features, which might be acting as barriers for gene flow. - Despite this major genetic break, our results suggest that all - protected areas studied are well-connected with each other. - Interestingly, analysis of SNPs under selection replicated - results obtained for neutral SNPs. The relatively low genetic - diversity observed along the study area, though, highlights the - potential fragility of this species to changing climates, which - might compromise resilience to future threats. -
-
-
-
-
-

-
-
-
- -
-
- Dinoflagellate cyst assemblages present a valuable proxy to - infer paleoceanographic conditions, yet factors influencing - geographic distributions of species remain largely unknown, - especially in the Southern Ocean. Strong lateral transport, - sea-ice dynamics, and a sparse and uneven geographic - distribution of surface sediment samples have limited the use of - dinocyst assemblages as a quantitative proxy for - paleo-environmental conditions such as sea surface temperature - (SST), nutrient concentrations, salinity, and sea ice - (presence). In this study we present a new set of surface - sediment samples (n=66) from around Antarctica, doubling the - number of Antarctic-proximal samples to 100 (dataset wsi_100) - and increasing the total number of Southern Hemisphere samples - to 655 (dataset sh_655). Additionally, we use modelled ocean - conditions and apply Lagrangian techniques to all Southern - Hemisphere sample stations to quantify and evaluate the - influence of lateral transport on the sinking trajectory of - microplankton and, with that, to the inferred ocean conditions. - k-means cluster analysis on the wsi_100 dataset demonstrates the - strong affinity of Selenopemphix antarctica with sea-ice - presence and of Islandinium spp. with low-salinity conditions. - For the entire Southern Hemisphere, the k-means cluster analysis - identifies nine clusters with a characteristic assemblage. In - most clusters a single dinocyst species dominates the - assemblage. These clusters correspond to well-defined oceanic - conditions in specific Southern Ocean zones or along the ocean - fronts. We find that, when lateral transport is predominantly - zonal, the environmental parameters inferred from the sea floor - assemblages mostly correspond to those of the overlying ocean - surface. In this case, the transport factor can thus be - neglected and will not represent a bias in the reconstructions. - Yet, for some individual sites, e.g. deep-water sites or sites - under strong-current regimes, lateral transport can play a large - role. The results of our study further constrain environmental - conditions represented by dinocyst assemblages and the location - of Southern Ocean frontal systems. -
-
-
-
-
-

-
-
-
- -
-
- The dynamics of fluid flows give rise to robust, persistent - circulation features that underpin the flow and exert strong - control over the advection of water masses, either enhancing it - or supressing it, collectively known as lagrangian coherent - structures. Lagrangian approaches and metrics have been shown to - be better suited than eulerian ones at locating and delineating - such structures and capturing the effect they have on the - formation and dispersion of water masses, particularly at the - smaller scales. In this paper, we use the framework of - lagrangian coherent structures to analyse the ocean velocity - fields over a climatological year obtained from a - high-resolution eddy-resolving model in order to investigate the - lagrangian regimes that affect the motion, separation and mixing - of water masses in the Mediterranean Sea. The lagrangian regimes - that develop in each sub-basin over the course of the year are - characterised and regions of persistent lagrangian activity and - coherent structure formation and presence are identified. A - quantitative picture of the seasonal variability of the - lagrangian coherent structure-induced horizontal mixing and - vortex formation is obtained. -
-
-
-
-
-

-
-
-
- -
-
- Previous studies have shown the presence of strong mesoscale - eddy activities in the Indonesian Seas and their influence on - the transport and water mass properties of the Indonesian - Throughflow (ITF), a mean flow from the Pacific Ocean to the - Indian Ocean through the Indonesian Archipelago. This study - explores the effects of these eddy activities, or high-frequency - flow variability (HFFV), on residence time and pathway of the - ITF by conducting Lagrangian particle tracking experiments using - a velocity field from an eddy-resolving ocean general - circulation model. Particles are released at key locations in - the western and eastern routes of the ITF and tracked both - backward and forward in time. To assess the effects of flow - variability that has a time scale longer than a day but shorter - than a month, the definition of HFFV in this study, we conduct - parallel experiments using daily and monthly averaged velocity - fields. Particle trajectories reveal the contrasting circulation - characteristics of the Sulawesi and Banda Seas. HFFV in the - Sulawesi Sea (in the western route) is high, causing water to - circulate longer over a broader area. The longer residence time - in the Sulawesi Sea helps the upwelling of the inflowing Pacific - waters, especially the intermediate water masses, to rise above - 300 m at the Makassar Strait, and also has the potential to - allow mixing processes to modify the water mass properties of - the ITF. In contrast, HFFV is much lower in the Banda Sea and - has minimal effects on the ITF. -
-
-
-
-
-

-
-
-
- -
-
- Population sizes of the Japanese red coral Corallium japonicum - have been severely affected by poaching and overfishing. - Although genetic structure and connectivity patterns are - considered important parameters for conservation strategies, - there are few studies focusing on the population genetics of C. - japonicum in the Northwest Pacific. We examined the genetic - population structure of C. japonicum, in the Northwest Pacific. - We used restriction-site-associated DNA sequencing (RAD-seq), - which can be used to identify genome-wide single-nucleotide - polymorphism (SNPs), to reveal detailed within-species genetic - variations. Using the variable SNP loci identified from this - analysis, we successfully evaluated the population-level genetic - diversity and patterns of gene flow among multiple populations - of C. japonicum around Japan. The results of genetic analysis - basically showed that gene flow is widely maintained in the - geographic range examined in this study, but the analysis in - combination with larval dispersal simulations revealed several - populations that were genetically distinct from the other - populations, suggesting geographically limited gene flows. The - information obtained from this study will be useful for the - design of effective management schemes for C. japonicum, which - is under threat from overfishing. -
-
-
-
-
-

-
-
-
- -
-
- The Labrador Current transports cold, relatively fresh, and - well-oxygenated waters within the subpolar North Atlantic and - towards the eastern American continental shelf. The relative - contribution of these waters to either region depends on the - eastward retroflection of the Labrador Current at the Grand - Banks of Newfoundland. Here, we develop a retroflection index - based on the pathway of virtual Lagrangian particles and show - that strong retroflection generally occurs when a large-scale - circulation adjustment, related to the subpolar gyre, - accelerates the Labrador Current and shifts the Gulf Stream - northward, partly driven by a northward shift of the wind - patterns in the western North Atlantic. Starting in 2008, a - particularly strong northward shift of the Gulf Stream dominates - the other drivers. A mechanistic understanding of the drivers of - the Labrador Current retroflection should help predict changes - in the water properties in both export regions, and anticipate - their impacts on marine life and deep-water formation. -
-
-
-
-
-

-
-
-
- -
-
- In highly fragmented and relatively stable cold-seep ecosystems, - species are expected to exhibit high migration rates and - long-distance dispersal of long-lived pelagic larvae to maintain - genetic integrity over their range. Accordingly, several species - inhabiting cold seeps are widely distributed across the whole - Atlantic Ocean, with low genetic divergence between - metapopulations on both sides of the Atlantic Equatorial Belt - (AEB, i.e. Barbados and African/European margins). Two - hypotheses may explain such patterns: (i) the occurrence of - present-day gene flow or (ii) incomplete lineage sorting due to - large population sizes and low mutation rates. Here, we - evaluated the first hypothesis using the cold seep mussels - Gigantidas childressi, G. mauritanicus, Bathymodiolus heckerae - and B. boomerang. We combined COI barcoding of 763 individuals - with VIKING20X larval dispersal modelling at a large spatial - scale not previously investigated. Population genetics supported - the parallel evolution of Gigantidas and Bathymodiolus genera in - the Atlantic Ocean and the occurrence of a 1-3 Million-year-old - vicariance effect that isolated populations across the Caribbean - Sea. Both population genetics and larval dispersal modelling - suggested that contemporary gene flow and larval exchanges are - possible across the AEB and the Caribbean Sea, although probably - rare. When occurring, larval flow was eastward (AEB - only for - B. boomerang) or northward (Caribbean Sea - only for G. - mauritanicus). Caution is nevertheless required since we focused - on only one mitochondrial gene, which may underestimate gene - flow if a genetic barrier exists. Non-negligible genetic - differentiation occurred between Barbados and African - populations, so we could not discount the incomplete lineage - sorting hypothesis. Larval dispersal modelling simulations - supported the genetic findings along the American coast with - high amounts of larval flow between the Gulf of Mexico (GoM) and - the US Atlantic Margin, although the Blake Ridge population of - B. heckerae appeared genetically differentiated. Overall, our - results suggest that additional studies using nuclear genetic - markers and population genomics approaches are needed to clarify - the evolutionary history of the Atlantic bathymodioline mussels - and to distinguish between ongoing and past processes. -
-
-
-
-
-

-
-
-
- -
-
- This study presents the first dataset of physical and textural - properties of sea ice collected in the South Atlantic and Indian - Ocean sector of the Antarctic marginal ice zone (MIZ). - Observations of sea ice from this region in the austral spring - 2019, including sea-ice core temperature, salinity, crystal - size, texture, oxygen isotopes and stratigraphy, were used in - conjunction with a Lagrangian back-tracking algorithm and - atmospheric reanalyses. This method relates the reconstructed - synoptic conditions to sea-ice growth along the transect. A - significant difference was found between the stratigraphy of - consolidated pack ice samples collected at the same latitude and - spanning over 550 km eastwards. The eastward group was found to - have more disturbances in their stratigraphy which is attributed - to the highly variable atmospheric and sea-ice conditions - together with varying wave penetration through the sea-ice pack, - notably during the passage of an intense polar cyclone, while - the westward group showed no signs of disturbance or - deformation. These results indicate that consolidated Antarctic - sea-ice floes of similar thickness and from the same latitude in - the MIZ have distinct stratigraphic properties, which will - influence their physical and biogeochemical features. -
-
-
-
-
-

-
-
-
- -
-
- Coral reefs around the world are under increasing threat to - global climate change and coral bleaching events that can result - in severe damage and mortality to the reef systems. Some coral - reefs are situated in areas where the complex ocean flow - patterns and their interaction with topographical features - around the reefs provide certain refuges to the rising ocean - temperatures and coral bleaching. The Sodwana reef system - experiences cold water temperature anomalies that cause - short-term temperature fluctuations on the reefs. It is - suggested that these temperature anomalies provide relief from - bleaching and are an integral part of the coral’s survival at - Sodwana. Previous studies have shown that the temperature - anomalies are linked to regional scale hydrodynamic features - surrounding Sodwana. We investigated the cold water pathways and - regional flow patterns associated with the temperature anomaly - events between 1994 and 2015 using data from the global - reanalysed NEMO ocean model output. A comparison between - temperature measurements taken on the Sodwana reefs and - temperature data extracted from the model near Sodwana shows a - good agreement and that the model replicates the temperature - anomalies. This indicates that the temperature anomalies are - associated with the regional hydrodynamic flow structures - replicated in the NEMO model. We used a Lagrangian particle - backtracking model and the hydrodynamic data from the NEMO model - to delineate the pathways associated with the 63 temperature - anomalies observed between 1994 and 2015. The pathways - delineated from the Lagrangian particle backtracking model - originate to the northeast of Sodwana within the Delagoa Bight - region, indicating that hydrodynamics around the Delagoa Bight - is linked to the cold water temperature anomalies observed at - Sodwana. A statistical analysis of the modelled regional - Eulerian flow fields showed that two representative regional - flow fields are associated with the anomalies and representative - pathways. The first representative flow field features a - high-speed concentrated southward stream that separates from the - Delagoa Bight peninsula and flows along the seaward edge of the - Delagoa shelf and a cyclonic eddy structure within the Delagoa - Bight. The second representative flow field features the - southward stream that separates from the Delagoa Bight peninsula - and flows directly to the Sodwana region with a significantly - smaller separation zone within the Delagoa Bight. The second - representative flow field shows no observable cyclonic eddy - structure. The southward stream observed in all representative - flow fields reattaches to the South African coastline near the - Sodwana region. We also show through the mean particle vertical - displacement and temperature change along the anomaly pathways - that the nearshore zone within 50 km of Sodwana is a region of - enhanced upwelling and mixing during the anomaly periods. -
-
-
-
-
-

-
-
-
- -
-
- Oceanic submesoscale flows are considered to be a crucial - conduit for the downscale transfer of oceanic mesoscale kinetic - energy and upper-ocean material exchange, both laterally and - vertically, but defining observations revealing submesoscale - dynamics and/or transport properties remain sparse. Here, we - report on an elaborate observation of a warm and fresh filament - intruding into a cyclonic mesoscale eddy. By integrating cruise - measurements, satellite observations, particle-tracking - simulations, and the trajectory of a surface drifter, we show - that the filament originated from an anticyclonic eddy - immediately to the west of the cyclonic eddy, and the evolution - of the filament was mainly due to the geostrophic flows - associated with the eddy pair. Our observations reveal the mass - exchange of the eddy pair and suggest that submesoscale flows - can degrade the coherence of mesoscale eddies, providing - important implications for the transport properties of mesoscale - eddies. Vigorous submesoscale turbulence was found within the - eddy core region, due to filamentous intrusion and - frontogenesis. Our findings have thus offered novel insights - into the dynamics and transport properties of oceanic - submesoscale flows, which should be taken into account in their - simulation and parameterization in ocean and climate models. -
-
-
-
-
-

-
-
-
- -
-
- A common dilemma for oceanographers is the choice of horizontal - diffusivity. There is no single answer as we could argue that - diffusion depends precisely on those processes that cannot be - sampled or modeled. Here we propose the radial offset by - diffusion (ROD) method as a simple model-dependent approach for - estimating these coefficients, and show its application for the - southwestern South Atlantic. The method compares actual - displacements of field drifters with numerical trajectory - predictions. The observed-predicted differences in radial - positions (radial offsets), which respond to diffusive motions - not captured by the numerical model, are reproduced with a - one-dimensional radial-diffusive solution through a proper - selection of the diffusion coefficient. The method is tested at - eight depths, from the sea surface down to 2000 m, using several - drifter datasets and the Parcels software applied to the - GLORYS12v1 (1/12° daily) velocity outputs. In all cases the - radial offsets show Gaussian distributions that are well - reproduced by the radial diffusive solution. Maximum - diffusivities of 4630-4980 m2 s−1 happen in the upper 200 m of - the water column and minimum values of 1080-1270 m2 s−1 occur - between 1400 and 2000 m. The 15-m diffusivity is fairly constant - in latitude (3850 to 5270 m2 s−1), but the 1000-m diffusivity - decreases from 1640-1820 m2 s−1 north of the Polar Front to 530 - m2 s−1 south of the Southern Boundary. A comparison with other - diffusivity studies validates the good adequacy of the ROD - method for numerical and field applications. -
-
-
-
-
-

-
-
-
- -
-
- In highly fragmented and relatively stable cold-seep ecosystems, - species are expected to exhibit high migration rates and - long-distance dispersal of long-lived pelagic larvae to maintain - genetic integrity over their range. Accordingly, several species - inhabiting cold seeps are widely distributed across the whole - Atlantic Ocean, with low genetic divergence between - metapopulations on both sides of the Atlantic Equatorial Belt - (AEB, i.e. Barbados and African/European margins). Two - hypotheses may explain such patterns: (i) the occurrence of - present-day gene flow or (ii) incomplete lineage sorting due to - large population sizes and low mutation rates. Here, we - evaluated the first hypothesis using the cold seep mussels - Gigantidas childressi, G. mauritanicus, Bathymodiolus heckerae - and B. boomerang. We combined COI barcoding of 763 individuals - with VIKING20X larval dispersal modelling at a large spatial - scale not previously investigated. Population genetics supported - the parallel evolution of Gigantidas and Bathymodiolus genera in - the Atlantic Ocean and the occurrence of a 1-3 Million-year-old - vicariance effect that isolated populations across the Caribbean - Sea. Both population genetics and larval dispersal modelling - suggested that contemporary gene flow and larval exchanges are - possible across the AEB and the Caribbean Sea, although probably - rare. When occurring, larval flow was eastward (AEB - only for - B. boomerang) or northward (Caribbean Sea - only for G. - mauritanicus). Caution is nevertheless required since we focused - on only one mitochondrial gene, which may underestimate gene - flow if a genetic barrier exists. Non-negligible genetic - differentiation occurred between Barbados and African - populations, so we could not discount the incomplete lineage - sorting hypothesis. Larval dispersal modelling simulations - supported the genetic findings along the American coast with - high amounts of larval flow between the Gulf of Mexico (GoM) and - the US Atlantic Margin, although the Blake Ridge population of - B. heckerae appeared genetically differentiated. Overall, our - results suggest that additional studies using nuclear genetic - markers and population genomics approaches are needed to clarify - the evolutionary history of the Atlantic bathymodioline mussels - and to distinguish between ongoing and past processes. -
-
-
-
-
-

-
-
-
- -
-
- Oceanic submesoscale flows are considered to be a crucial - conduit for the downscale transfer of oceanic mesoscale kinetic - energy and upper-ocean material exchange, both laterally and - vertically, but defining observations revealing submesoscale - dynamics and/or transport properties remain sparse. Here, we - report on an elaborate observation of a warm and fresh filament - intruding into a cyclonic mesoscale eddy. By integrating cruise - measurements, satellite observations, particle-tracking - simulations, and the trajectory of a surface drifter, we show - that the filament originated from an anticyclonic eddy - immediately to the west of the cyclonic eddy, and the evolution - of the filament was mainly due to the geostrophic flows - associated with the eddy pair. Our observations reveal the mass - exchange of the eddy pair and suggest that submesoscale flows - can degrade the coherence of mesoscale eddies, providing - important implications for the transport properties of mesoscale - eddies. Vigorous submesoscale turbulence was found within the - eddy core region, due to filamentous intrusion and - frontogenesis. Our findings have thus offered novel insights - into the dynamics and transport properties of oceanic - submesoscale flows, which should be taken into account in their - simulation and parameterization in ocean and climate models. -
-
-
-
-
-

-
-
-
- -
-
- The present study investigates the interannual variability of - the advective pathways and transit times of the Red Sea Overflow - Water (RSOW) in the western Arabian Sea using virtual particles - as a proxy indicator for the poorly understood RSOW spreading. - The Lagrangian simulations are based on the GLORYS12 eddy-rich - reanalysis (1/12°), which assimilates most satellite and in situ - observations from 1993 to 2018. Statistical analysis of particle - positions reveals the Gulf's mouth is always the main RSOW - export route out of the Gulf of Aden. Moreover, there is - substantial interannual variability in the three RSOW pathways - in the western Arabian Sea, which are consistent with in-situ - salinity variability at the RSOW layer. The faster Socotra - pathway is strongest for particles released in 1998–1999 and - 2012 and almost non-existent for the ones released in 2006–2007. - The strongest state of the Socotra pathway co-occurs with some - of the most powerful El-Nino/Southern Oscillation and Indian - Ocean Dipole events in history. A decadal seesaw stands out - between the Northwest pathway, which advects RSOW northward - offshore the Arabian Peninsula, and the Southwest pathway, which - advects RSOW southward to the Somali Basin along the eastern - side of Socotra. While the Northwest pathway strengthened from - 1996 to 2011, the Southwest weakened. These changes are - associated with interannual variability in the western boundary - undercurrents and subsurface eddy kinetic energy. Interestingly, - the Northwest pathway trajectories are eddy-dominated, in - striking contrast with the Socotra and Southwest pathways, in - which western boundary undercurrents are major players. This - fact suggests that eddy-induced transport is likely to have a - significant role in spreading the RSOW northward. No - considerable interannual variability in transit times is - detected for any pathway. -
-
-
-
-
-

-
-
-
- -
-
- Marine plastic floating on the sea surface is an extensive - environmental problem. The present study investigated the - transport patterns of marine litter and areas of its - accumulation in the Baltic Sea by using a hydrodynamic model - coupled with a particle-tracking model. We also studied the - extent of marine litter from the main polluting rivers. Mapping - of marine plastic debris distribution in 2017–2018 revealed that - the largest plastic accumulation area is between latitude 59° N - and 61° N, which includes the Northern Baltic Proper, - Archipelago Sea, and the Gulf of Finland. The floating plastic - spreads from the largest plastic pollution sites River Vistula, - Oder and Neman to the waters of all the countries around the - Baltic Sea. -
-
-
-
-
-

-
-
-
- -
-
- The impact of tropical Atlantic Ocean variability modes in the - variability of the upper-ocean circulation has been - investigated. For this purpose, we use three oceanic reanalyses, - an interannual forced-ocean simulation, and satellite data for - the period 1982–2018. We have explored the changes in the main - surface and subsurface ocean currents during the emergence of - Atlantic meridional mode (AMM), Atlantic zonal mode (AZM), and - AMM–AZM connection. The developing phase of the AMM is - associated with a boreal spring intensification of North - Equatorial Countercurrent (NECC) and a reinforced summer Eastern - Equatorial Undercurrent (EEUC) and north South Equatorial - Current (nSEC). During the decaying phase, the reduction of the - wind forcing and zonal sea surface height gradient produces a - weakening of surface circulation. For the connected AMM–AZM, in - addition to the intensified NECC, EEUC, and nSEC in spring, an - anomalous north-equatorial wind curl excites an oceanic Rossby - wave (RW) that is boundary-reflected into an equatorial Kelvin - wave (KW). The KW reverses the thermocline slope, weakening the - nSEC and EUC in boreal summer and autumn, respectively. During - the developing spring phase of the AZM, the nSEC is considerably - reduced with no consistent impact at subsurface levels. During - the autumn decaying phase, the upwelling RW-reflected mechanism - is activated, modifying the zonal pressure gradient that - intensifies the nSEC. The NECC is reduced in boreal - spring–summer. Our results reveal a robust alteration of the - upper-ocean circulation during AMM, AZM, and AMM-AZM, - highlighting the decisive role of ocean waves in connecting the - tropical and equatorial ocean transport. -
-
-
-
-
-

-
-
-
- -
-
- Studying oceanography by using Lagrangian simulations has been - adopted for a range of scenarios, such as the determining the - fate of microplastics in the ocean, simulating the origin - locations of microplankton used for palaeoceanographic - reconstructions, for studying the impact of fish aggregation - devices on the migration behaviour of tuna. These simulations - are complex and represent a considerable runtime effort to - obtain trajectory results, which is the prime motivation for - enhancing the performance of Lagrangian particle simulators. - This paper assesses established performance enhancing techniques - from Eulerian simulators in light of computational conditions - and demands of Lagrangian simulators. A performance enhancement - strategy specifically targeting physics-based Lagrangian - particle simulations is outlined to address the performance - gaps, and techniques for closing the performance gap are - presented and implemented. Realistic experiments are derived - from three specific oceanographic application scenarios, and the - suggested performance-enhancing techniques are benchmarked in - detail, so to allow for a good attribution of speed-up - measurements to individual techniques. The impacts and insights - of the performance enhancement strategy are further discussed - for Lagrangian simulations in other geoscience applications. The - experiments show that I/O-enhancing techniques, such as dynamic - loading and buffering, lead to considerable speed-up on-par with - an idealised parallelisation of the process over 20 nodes. - Conversely, while the cache-efficient structure-of-arrays - collection yields a visible speed-up, other alternative data - structures fail in fulfilling the theoretically-expected - performance increase. This insight demonstrates the importance - of good data alignment in memory and caches for Lagrangian - physics simulations. -
-
-
-
-
-

-
-
-
- -
-
- Marine microplastics can be colonized by biofouling microbial - organisms, leading to a decrease in microplastics' buoyancy. The - sinking of biofouled microplastics could therefore represent a - novel carbon export pathway within the ocean carbon cycle. Here, - we model how microplastics are biofouled by diatoms, their - consequent vertical motion due to buoyancy changes, and the - interactions between particle-attached diatoms and carbon pools - within the water column. We initialise our Lagrangian framework - with biogeochemical data from NEMO-MEDUSA-2.0 and estimate the - amount of organic carbon exported below 100 m depth starting - from different surface concentrations of 1 mm microplastics. We - focus on the Mediterranean Sea, that is characterized by some of - the world’s highest microplastics concentrations and is a - hotspot for biogeochemical changes induced by rising atmospheric - carbon dioxide levels. Our results show that the carbon export - caused by sinking biofouled microplastics is proportional to the - concentration of microplastics in the sea surface layer, at - least at modelled concentrations. We estimate that, while - current concentrations of microplastics can modify the natural - biological carbon export by less than 1%, future concentrations - projected under business-as-usual pollution scenarios may lead - to carbon exports up to 5% larger than the baseline (1998-2012) - by 2050. Areas characterized by high primary productivity, i.e., - the western and central Mediterranean, are those where - microplastics-mediated carbon export results to be highest. - While highlighting the potential and quantitatively limited - occurrence of this phenomenon in the Mediterranean Sea, our - results call for further investigation of a - microplastics-related carbon export pathway in the global ocean. -
-
-
-
-
-

-
-
-
- -
-
- To accurately predict the impacts of ocean acidification on - shallow-water ecosystems, we must account for the biogeochemical - impact of local benthic communities, as well as the connectivity - between offshore and onshore water masses. Estimation of - residence time can help quantify this connectivity and determine - the degree to which the benthos can influence the chemistry of - the overlying water column. We present estimates of nearshore - residence time for Guam and utilize these estimates to model the - effects of benthic ecosystem metabolism on the coral reef - carbonate system. Control volume and particle tracking - approaches were used to estimate nearshore residence time. These - estimates were paired with observed patterns in the reef - carbonate system around Guam using water samples collected by - NOAA’s National Coral Reef Monitoring Program. Model performance - results suggest that when considering the effects of benthic - metabolism on the carbonate system, it is paramount to represent - the contact time of the water volume with the benthos. Even - coarse estimates of residence time significantly increase model - skill. We observed the highest predictive skill in models - including control volume derived estimates of residence time, - but only when those estimates were included as an interaction - with benthic composition. This work shows that not only is - residence time critically important to better predict - biogeochemical variability in coral reef environments, but that - even coarse hydrodynamic models can provide useful residence - time estimates at management relevant, whole-ecosystem scales. -
-
-
-
-
-

-
-
-
- -
-
- The simulation of Lagrangian drift is an important task in - applications such as dispersion of pollutants, larvae and search - and rescue activities. In this study, the Eulerian current, - Stokes drift and wind effect on the simulation of observed - drifters were analysed. The Lagrangian OceanParcels model was - used, and the surface trajectories were assessed by comparison - with 9 GPS drifter trajectories in the Gulf of Finland, Gulf of - Riga and Lithuanian coast. The Normalised Cumulative Lagrangian - Separation (NCLS) distance between the simulated and the - satellite-tracked drifter trajectories, and the mean absolute - error (MAE) were used as comparison metrics. The present study - suggests the need to consider the Stokes drift and the wind - factor in addition to the modelled Eulerian currents to obtain a - better description of the trajectories of particles. By making - these considerations, the OceanParcels model could adequately - simulate particle trajectories in the sub-basins within the - Baltic Sea. The realized model tests showed that motion of - surface drifters are strongly controlled by the Stokes drift - when the significant wave height is >1 m, whereas the wind - component and the Eulerian currents are crucial when the - significant wave height is <0.6 m or the wave (Stokes drift) - directions do not match the wind direction. -
-
-
-
-
-

-
-
-
- -
-
- The Western INDian Ocean Simulation (WINDS) is a regional - configuration of the Coastal and Regional Ocean Community Model - (CROCO) for the southwestern Indian Ocean. WINDS has a - horizontal resolution of 1/50∘ (∼2 km) and spans a latitudinal - range of 23.5∘ S–0∘ N and a longitudinal range from the East - African coast to 77.5∘ E. We ran two experiments using the WINDS - configuration: WINDS-M, a full 28-year multidecadal run - (1993–2020); and WINDS-C, a 10-year climatological control run - with monthly climatological forcing. WINDS was primarily run for - buoyant Lagrangian particle tracking applications, and - horizontal surface velocities are output at a temporal - resolution of 30 min. Other surface fields are output daily, and - the full 3D temperature, salinity, and velocity fields are - output every 5 d. We demonstrate that WINDS successfully manages - to reproduce surface temperature, salinity, currents, and tides - in the southwestern Indian Ocean, and it is therefore - appropriate for use in regional marine dispersal studies for - buoyant particles or other applications using high-resolution - surface ocean properties. -
-
-
-
-
-

-
-
-
- -
-
- The Antarctic Slope Current (ASC) and Antarctic Coastal Current - advect heat, freshwater, nutrients, and biological organisms - westward around the Antarctic margin, providing a connective - link between different sectors of the continental shelf. Yet the - strength and pathways of connectivity around the continent, and - the timescales of advection, remain poorly understood. We use - daily velocity fields from a global high-resolution ocean-sea - ice model, combined with Lagrangian particle tracking, to shed - light on these timescales and improve our understanding of - circumpolar connectivity around Antarctica. Virtual particles - were released along vertical transects over the continental - shelf every 5 days for a year and were tracked forward in time - for 21 years. Analysis of the resulting particle trajectories - highlights that the West Antarctic sector has widespread - connectivity with all regions of the Antarctic shelf. Advection - around the continent is typically rapid with peak transit times - of 1–5 years for particles to travel 90° of longitude - downstream. The ASC plays a key role in driving connectivity in - East Antarctica and the Weddell Sea, while the Coastal Current - controls connectivity in West Antarctica, the eastern Antarctic - Peninsula, and along the continental shelf east of Prydz Bay. - Connectivity around the shelf is impeded in two main locations, - namely, the tip of the Antarctic Peninsula and Cape Adare in the - Ross Sea, where significant export of water from the continental - shelf is found. These findings help to understand the locations - and timescales over which anomalies, such as meltwater from the - Antarctic Ice Sheet, can be redistributed downstream. -
-
-
-
-
-

-
-
-
- -
-
- The Virgin Islands basin (VIB) includes several Marine Protected - Areas (MPAs) of interest as biologically unique spawning - aggregation sites. The ecological structure in and around these - MPAs is regulated by several factors, including changes in - near-surface water properties. Anomalously low near-surface - salinity is observed in the VIB during April 2009/2011, and - March 2010, with a salinity signature consistent with Amazon - plume waters. Other low salinity events in the region are found - during 2007 to 2017 using output from an ocean reanalysis. The - reanalysis shows that horizontal salinity advection explains - near-surface salinity variability in the VIB to a high degree, - including events observed in the in-situ measurements. We use a - Lagrangian Particle tracking model to track particles over the - 2007-2017 period and identify the source and pathways of water - imports to the VIB. We describe three pathways. The northernmost - one is often associated with advection of salty Atlantic waters. - The two southernmost paths are associated with advection of low - salinity waters from the Amazon into the VIB. The latter two - pathways arrive to the Caribbean Sea as described in previous - studies on low salinity advection to the wider Caribbean from - the Amazon river: we find that once in the Caribbean Sea, the - low salinity water makes its way into the VIB when steered - northward by mesoscale features. This results in Amazon river - waters regulating salinity variability in the VIB during - April-November. During December-March, when mesoscale activity - is at its minimum, the Atlantic inflow regulates the salinity - variability within the VIB instead. -
-
-
-
-
-

-
-
-
- -
-
- Ocean currents are a key driver of plankton dispersal across the - oceanic basins. However, species specific temperature - constraints may limit the plankton dispersal. We propose a - methodology to estimate the connectivity pathways and timescales - for plankton species with given constraints on temperature - tolerances, by combining Lagrangian modeling with network - theory. We demonstrate application of two types of temperature - constraints: thermal niche and adaptation potential and compare - it to the surface water connectivity between sample stations in - the Atlantic Ocean. We find that non-constrained passive - particles representative of a plankton species can connect all - the stations within three years at the surface with pathways - mostly along the major ocean currents. However, under thermal - constraints, only a subset of stations can establish - connectivity. Connectivity time increases marginally under these - constraints, suggesting that plankton can keep within their - favorable thermal conditions by advecting via slightly longer - paths. Effect of advection depth on connectivity is observed to - be sensitive to the width of the thermal constraints, along with - decreasing flow speeds with depth and possible changes in - pathways. -
-
-
-
-
-

-
-
-
- -
-
- Vast quantities of debris are beaching at remote islands in the - western Indian Ocean. We carry out marine dispersal simulations - incorporating currents, waves, winds, beaching, and sinking, for - both terrestrial and marine sources of debris, to predict where - this debris comes from. Our results show that most terrestrial - debris beaching at these remote western Indian Ocean islands - drifts from Indonesia, India, and Sri Lanka. Debris associated - with fisheries and shipping also poses a major risk. Debris - accumulation at Seychelles is likely seasonal, peaking during - February–April. This pattern is driven by monsoonal winds and - may be amplified during positive Indian Ocean Dipole and El-Niño - events. Our results underline the vulnerability of small island - states to marine plastic pollution, and are a crucial step - towards improved management of the issue. The trajectories used - in this study are available for download, and our analyses can - be rerun under different parameter choices. -
-
-
-
-
-

-
-
-
- -
-
- Physical forcings affect water exchange in coral reef atolls. - Characteristics of the consequent water exchange depend on the - atoll morphology and the local atmospheric and hydrographic - conditions. The pattern of water exchange at the Dongsha atoll - under the influences of tides, wind, and waves was investigated - by conducting realistic modeling and numerical experiments. The - analyses suggest that the southwestern wind could enhance the - inflow transports at the southern reef flat and the outflow - transports at the northern reef flat/north channel. The - northeastern wind induces an inversed pattern. Unlike the wind, - the waves always strengthen the inflow transports at the reef - flat, and the locations of strengthened transports depend on the - incident directions of the waves. Wind and waves induce shorter - hydrodynamic time scales than tides, suggesting more vigorous - water exchange during high wind and waves. The directions of - wind and waves significantly affect the spatial distributions of - the residence time and the age. This implies that the - hydrodynamic processes in the Dongsha Atoll would have - significant seasonal variability. This study presents different - circulation patterns in an atoll system influenced by calm - weather and strong wind/waves. -
-
-
-
-
-

-
-
-
- -
-
- This work describes the circulation over the continental slope - and the São Paulo Plateau in the Santos Basin during the SANSED - winter 2019 survey. The cruise consisted of four legs in the - period between June, 11 and August, 03 2019. The observed - circulation is dominated by the Atlantic southwestern boundary - current regime and remotely-generated anticyclones and cyclones. - The former is composed by the Brazil Current, the Intermediate - Western Boundary Current and their mesoscale meanders; the - latter are 300km vortical rings with origin in the eastern side - of the South Atlantic Basin. A Lagrangian scheme applied over - satellite altimeter maps indicate that the origin of these rings - is primarily the Cape Basin of South Africa. The interaction - between the boundary currents, their cyclonic meanders, and the - anticyclonic rings is complex, and varies widely. During the - SANSED winter 2019 survey period, three anticyclones interacted - with the Brazil Current, instabilizing it, forming dipoles with - the current cyclonic meanders, leading to their downstream - propagation. Ancienter cyclonic eddies within Santos Basin may - interfere with the propagation of the large anticyclones further - south. In addition, the continuous arrival of - remotely-originated anticyclones, the larger portion over the - São Paulo Plateau presented a tendency of counter-clockwise - circulation during the whole cruise period. -
-
-
-
-
-

-
-
-
- -
-
- Catch and distribution of tuna in the ocean are typically - investigated with ocean basin-scale models. Due to their large - scale, such models must greatly simplify tuna behaviour - occurring at a scale below 100 km, despite interactions at this - level potentially being important to both catch and distribution - of tuna. For example, the associative behaviour of tuna with - man-made floating objects, that are deployed by fishers to - improve their catch rates (Fish Aggregating Devices; FADs), are - usually ignored or simplified. Here we present a model that can - be used to investigate the influence of tuna dynamics below the - 100 km scale on larger scales. It is an Individual-Based Model - (IBM) of a hypothetical, tuna-like species, that includes their - interactions with each other, free-floating FADs and prey. In - this IBM, both tuna and FADs are represented by Lagrangian - particles that are advected by an ocean flow field, with tuna - also exhibiting active swimming based on internal states such as - stomach fullness. We apply the IBM in multiple configurations of - idealized flow and prey fields, alongside differing interaction - strengths between agents. When tuna swimming behaviour is - influenced equally by prey and FADs, we find that the model - simulations compare well with observations at the km scale. For - instance, compared to observations, tuna particles have a - similar stomach fullness when associated or non-associated to a - FAD, tuna colonize at similar timescales at FADs after their - deployment and tuna particles exhibit similar variations in - continuous residence times. However, we find large differences - in emergent dynamics such as residence and catch among different - flow configurations, because the flow determines the time scale - at which tuna encounter FADs. These findings are discussed in - the context of directing future research, and an improved - interpretation of tuna catch and other data for the sustainable - management of these economically important species. -
-
-
-
-
-

-
-
-
- -
-
- The South Atlantic Ocean plays an important role in the Atlantic meridional overturning circulation (AMOC), connecting it to the Indian and Pacific Oceans as part of the global overturning circulation system. Yet, there are still open questions regarding the relative importance of the warm water versus cold water sources in the upper limb of the AMOC and on the detailed circulation pathways of the North Atlantic Deep Water (NADW) in the lower limb. These questions are addressed using model outputs from a 60-year, eddying global ocean-sea ice simulation that are validated against observations. We find that the Pacific Antarctic Intermediate Water (AAIW) plays a role in setting the temperature and salinity properties of the water in the subtropical South Atlantic, but that the upper limb of the AMOC originates primarily from the warm Indian water through the Agulhas leakage (9.8 Sv of surface water + 3.5 of AAIW) and that only a relatively small contribution of 1.5 Sv colder, fresher AAIW originates from the Pacific Ocean. In the lower limb, the NADW flows southward as a deep western boundary current all the way to 45°S and then turns eastward to flow across the Mid-Atlantic Ridge near 42°S before leaving the Atlantic Ocean, although there is clockwise recirculation in the Brazil, Angola, and Cape Basins. -
-
-
-
-
-

-
-
-
- -
-
- A low-salinity pool (LSP) was observed in the northeastern South China Sea on 8–10 August 2018. Employing satellite and field observations, as well as widely used HYbrid Coordinate Ocean Model (HYCOM) Analysis data, we investigated the distribution, origin and evolution of the LSP. A bowl-like structure of the LSP was observed from field observations and is also indicated by the HYCOM Analysis data. Spatially, the LSP extended 20 m deep vertically and spread at least 45 km laterally. Particle tracking simulations using satellite-observed precipitation and surface currents revealed the origin and evolution of the LSP. It is found that the LSP was induced by a heavy rainfall event two days prior to the field observations, evidenced by the significant correlation between the rainfall and salinity anomaly. The vertical expansion of the LSP was favored by nocturnal convection, but was restricted by the strong stratification at its base, which appeared to have prohibited development of convective instabilities as indicated by the observed vertical variation of the turbulent dissipation rate. The formation of a barrier layer due to the LSP restricted vertical heat exchanges, and as a result a thin temperature inversion layer was formed as the surface temperature dropped due to the nighttime cooling and mixing with the cold rainwater. The thermohaline structure favored development of diffusive convection, which is evidenced by the observation that the diapycnal diffusivity for heat (KT) was one order of magnitude larger than that for density (Kρ). Overall, this study provides novel insights into how the upper ocean responds to rainfall with satellite and field observations. -
-
-
-
-
-

-
-
-
- -
-
- During the last quarter of 2019, the beaches, mangroves, and estuaries of Northeast Brazil received an unprecedented volume of crude oil from the sea, which became the worst environmental disaster ever to reach the Brazilian coast. The oil, having reached the shores completely unnoticed, left both society and government agents completely clueless on (i) where the oil was coming from; (ii) how much oil was still in the ocean to reach the shorelines; and (iii) which beaches were going to be affected next! By exploring remote sensing data and ocean numerical modeling, along with oil dispersion chemistry on sea water, this study investigates the possible origin and path of the spill and whether it could have been detected from space. The oil dispersion modeling simulations performed for this investigation revealed a possible region and timing of the oil spill, also indicating the likelihood of it being advected toward the shoreline under the ocean surface. -
-
-
-
-
-

-
-
-
- -
-
- Shelled pteropods are cosmopolitan, free-swimming organisms of biogeochemical and commercial importance. They are widely used as sentinel species for the overall response of marine ecosystems to environmental stressors associated with climate change and changes in ocean chemistry. However, currently we are unable to project the effects of climate change on shelled pteropods at the population level, due to the missing spatio-temporal characterization of the response of pteropods to environmental stressors, and the limited information on the pteropod life history and life-cycle. In this study, we implement a shelled pteropod Individual-Based Model (IBM), i.e. we simulate a pteropod population as a set of discrete individuals over several generations, life-stages (eggs, larvae, juveniles and adults) and as a function of temperature, food availability, and aragonite saturation state. The model is able to provide an abundance signal that is consistent with the abundance signal measured in the temperate region. In addition, the modeled life-stage progression matches the reported size spectrum across the year, with two major spawning periods in spring and fall, and maturation in March and September. Furthermore, our IBM correctly predicts the abundance maxima of younger, smaller and potentially more susceptible life-stages in spring and winter. Thus, our model provides a tool for advancing our understanding of the response of pteropod populations to future environmental changes. -
-
-
-
-
-

-
-
-
- -
-
- In the easternmost portion of the Gulf of Guinea, Bioko Island marks the beginning of an island chain that stretches NE-SW to the Equator, where São Tomé Island sits in the path of the Equatorial Undercurrent (EUC). In this study, we explore the meso-to-large-scale effects of local flow-topography interactions that escalate from the EUC encounter with the Gulf of Guinea islands. A mean shipboard Acoustic Doppler Current Profiler section captures the EUC as a strong subsurface jet that ultimately hits São Tomé. Motivated by these observations, we ran two ocean general circulation model simulations that differ by the presence versus absence of the Gulf of Guinea islands. Diagnostics of salinity and potential vorticity (PV) from these simulations show that the EUC bifurcates at 6°E, triggering mesoscale activity that spreads the EUC waters. On both sides of São Tomé, the EUC branches roll up into eddies that propagate westward. These low-PV anticyclones carry high salinity through the tropical Atlantic, introducing PV anomalies along eddy corridors mirrored by the Equator. The formation of such eddies is affected by diapycnal and isopycnal mixing and friction, and their distribution between hemispheres is intrinsically related to the location of São Tomé. The eddies are modulated at both seasonal and interannual scales. A strong EUC generates numerous and stronger eddies, while seasonal equatorial upwelling indirectly hinders their formation. Convergence of the EUC upstream of São Tomé reveals intense downwelling and freshening, whereas divergence and upwelling are associated with the EUC negotiating the island. -
-
-
-
-
-

-
-
-
- -
-
- A collection of calved icebergs frozen in place by surrounding sea ice (a “mélange”) is common in many Greenlandic fjords. Being an obstacle to ocean currents, a mélange alters ocean dynamics and thermodynamics over the many kilometers that it extends out in front of the glacier. Here we focus on a set of dynamics—flow pathways, form drag, and turbulence—using many simulations that each resolve the flow around hundreds of volume-occupying, but otherwise passive, cuboid “icebergs.” Some streaks of fast flow do arise where currents are squeezed through gaps between icebergs but, on average, the near-surface current is slowed. Maximum average currents speeds are instead found at or below the drafts of the deepest icebergs. Form drag scales with U2h when few icebergs exist and smoothly transitions to scaling with NUh2 when many icebergs exist, where U is the far-field flow velocity, N is the buoyancy frequency, and h is a typical iceberg draft. Turbulence predominately occurs in wakes behind the icebergs (as opposed to below icebergs due to internal wave breaking). Consequently, turbulent dissipation is elevated at depths less than or near the drafts of larger icebergs (∼100 m). -
-
-
-
-
-

-
-
-
- -
-
- The large, habitat-forming bubblegum coral, Paragorgia arborea, is a vulnerable marine ecosystem indicator with an antitropical distribution. Dense aggregations of the species have been protected from bottom-contact fishing in the Scotian Shelf bioregion off Nova Scotia, Canada in the northwest Atlantic Ocean. Recently, basin-scale habitat suitability ensemble modeling has projected an alarming loss of 99% of suitable habitat for this species across the North Atlantic by 2100. Here, a regional reassessment of the predicted distribution of this species in the bioregion, using both machine learning (random forest) and generalized additive model (GAM) frameworks, including projection to 2046−2065, was undertaken. Extrapolation diagnostics were applied to determine the degree to which the models projected into novel covariate space (i.e., extrapolation) in order to avoid erroneous inferences. The best predictors of the species’ distribution were a suite of temporally-invariant terrain variables that identified suitable habitat along the upper continental slope. Additional predictors, projected to vary with future ocean climatologies, identified areas of the upper slope in the eastern portion of the study area that will remain within suitable ranges for P. arborea at least through to the mid-century. Additionally, 3-D Lagrangian particle tracking simulations indicated potential for both connectivity among known occurrence sites and existing protected areas, and for colonization of unsurveyed areas predicted to have suitable habitat, from locations of known occurrence. These results showed that extirpation of this iconic species from the Scotian Shelf bioregion is unlikely over the next decades. Potential climate refugia were identified and results presented in the context of protected area network design properties of representativity, connectivity, adequacy, viability and resilience. -
-
-
-
-
-

-
-
-
- -
-
- While primary productivity is more stable in oceanic regions, it may vary to a great extent with the proximity to coasts, where mesoscale processes may intertwine and shape phytoplankton community composition and biomass. Sometimes, this may lead to the development of anomalous phytoplankton blooms (i.e., episodic blooms that exceed several times the average phytoplankton biomass). A massive bloom observed off the Western Iberian Coast (SW Europe) during March 2009 prompted a full investigation on its spatial and temporal extent, its causes, and its potential impact on the ecosystem. Results revealed that the March 2009 bloom was both novel in terms of biomass in a regional context and one of the largest anomalous blooms until now described in terms of relative magnitude. Its causes were due to a concurrence of long-term (deep winter MLD) and short-term factors (coastal upwelling, sudden changes in the water column, consistent offshore water transport). Its impact on the regional ecosystem is difficult to gauge, although the high concentrations of particulate organic carbon at surface during the bloom period suggests that it may have had a significant local impact. Since climate change is expected to increase the frequency and intensity of extreme weather events, it is possible that anomalous blooms will also become more frequent, expanding their role in shaping carbon export and food webs. These results are crucial for the monitoring of the Western Iberian Coast and are applicable to other complex coastal upwelling regions where phytoplankton biomass and variability have a crucial link to fisheries. -
-
-
-
-
-

-
-
-
- -
-
- Intensive hydrographic and horizontal velocity measurements collected in the Alboran Sea enabled us to diagnose the three-dimensional dynamics of a frontal system. The sampled domain was characterized by a 40 km diameter anticyclonic eddy, with an intense front on its eastern side, separating the Atlantic and Mediterranean waters. Here, we implemented a multi-variate variational analysis (VA) to reconstruct the hydrographic fields, combining the 1-km horizontal resolution of the Underway Conductivity-Temperature-Depth (CTD) system with information on the flow shape from the Acoustic Doppler Current Profiler velocities. One advantage of the VA is given by the physical constraint, which preserves fine-scale gradients better than the classical optimal interpolation (OI). A comparison between real drifter trajectories and virtual particles advected in the mapping quantified the improvements in the VA over the OI, with a 15% larger skill score. Quasi-geostrophic (QG) and semi-geostrophic (SG) omega equations enabled us to estimate the vertical velocity (w) which reached 40 m/day on the dense side of the front. How nutrients and other passive tracers leave the mixed-layer and subduct is estimated with 3D advection from the VA, which agreed with biological sampling from traditional CTD casts at two eddy locations. Downwelling warm filaments are further evidence of subduction, in line with the w from SG, but not with QG. SG better accounted for the along-isopycnal component of w in agreement with another analysis made on isopycnal coordinates. The multi-platform approach of this work and the use of variational methods improved the characterization and understanding of (sub)-mesoscale frontal dynamics. -
-
-
-
-
-

-
-
-
- -
-
- Microplastic pellets were sampled in May and November 2018 during one-week surveys at 13 coastal beaches in Iskenderun Bay/Turkey. Pellet pollution index (PPI) was calculated for the beaches as a tool to assess beach pollution by microplastic pellets. Hydrometeorological conditions, including wind, current, wave, surface run-off, and precipitation, were examined during 2018 to reveal the effect on the transport of microplastic pellets within the study area. Sea-surface heights, including the astronomical tide and the storm surge and the wave runup heights, were also considered in the analysis to study the extent of hydrodynamic forcing on the beach. Hydrometeorological assessments indicated that the pellet concentrations in the coastal zone are mostly related to wind-induced transport. Three major river discharges are considered as the main source of microplastic pellets effluents. A Lagrangian particle transport model was conducted to reveal the possible beaching hotspots of microplastic pellets released from these river mouths. Average microplastic pellets were calculated as 126.04 ± 54.08 items/m2 for May 2018 and 70.22 ± 18.25 items/m2 for November 2018. An overall mean PPI for May 2018 was calculated as 1.13, indicating a moderate degree of pellet pollution, and 0.56 for November 2018, indicating a low degree of pellet pollution. The simulations showed that Orontes River effluents affected the inner Iskenderun Bay coasts more than the Seyhan and Ceyhan River. -
-
-
-
-
-

-
-
-
- -
-
- Agulhas leakage, the transport of warm and salty waters from the - Indian Ocean into the South Atlantic, has been suggested to - increase under anthropogenic climate change, due to - strengthening Southern Hemisphere westerly winds. The resulting - enhanced salt transport into the South Atlantic may counteract - the projected weakening of the Atlantic overturning circulation - through warming and ice melting. Here we combine existing and - new observation- and model-based Agulhas leakage estimates to - robustly quantify its decadal evolution since the 1960s. We find - that Agulhas leakage very likely increased between the mid-1960s - and mid-1980s, in agreement with strengthening winds. Our models - further suggest that increased leakage was related to enhanced - transport outside eddies and coincided with strengthened - Atlantic overturning circulation. Yet, it appears unlikely that - Agulhas leakage substantially increased since the 1990s, despite - continuously strengthening winds. Our results stress the need to - better understand decadal leakage variability to detect and - predict anthropogenic trends. -
-
-
-
-
-

-
-
-
- -
-
- The ocean is an important part of the global system. Tracking - the connectivity between bodies of water is crucial for - understanding local, regional and global changes in the ocean - dynamics that mediate the spreading of nutrients and influence - the marine ecosystem and ocean productivity. We developed a Data - Fusion approach that enhances and automates the existing methods - for the analysis of this connectivity. This approach combines - and condenses two different data sources in two stages, Data - Enhancement followed by Data Reduction. The Data Enhancement - stage fuses equidistantly gridded data containing physical - measurements and trajectories representing movement data. The - Data Reduction stage aggregates the fused data into a Markov - Model representation of the transition probabilities between - ocean regions. We applied this framework to an exemplary - analysis for the connectivity between two oceanic areas using - real ocean data stemming from marine research. We show that this - method directly tackles the limitations of existing marine data - analysis methods and furthermore introduces new means to answer - questions that had no quantitative answers up to now. -
-
-
-
-
-

-
-
-
- -
-
- The fluid dynamics planet Saturn gives rise to alternating - east–west jet streams, large cyclonic and anticyclonic vortices, - and a dipole-dominant magnetic field that is highly axisymmetric - about the planetary rotation axis. Modeling these features in a - self-consistent manner is crucial for understanding the dynamics - of Saturn's interior and atmosphere. Here we report a turbulent - high-resolution dynamo simulation in a spherical shell that - produces these features simultaneously for the first time. A - crucial model ingredient is a long-hypothesized stably - stratified layer (SSL), sandwiched between a deep metallic - hydrogen layer and an outer low-conductivity molecular layer, - born out of the limited solubility of helium inside metallic - hydrogen at certain depths. The model spontaneously produces - polar cyclones and significant low-latitude and midlatitude jet - stream activity in the molecular layer. The off-equatorial - low-latitude jet streams partially penetrate into the SSL and - interact with the magnetic field. This helps to axisymmetrize - the magnetic field about the rotation axis and convert some of - the poloidal magnetic field to a toroidal field, which appears - as two global magnetic energy rings surrounding the deeper - dynamo region. The simulation also mimics a distinctive dip in - the fifth spherical harmonic in Saturn's magnetic energy - spectrum as inferred from the Cassini Grand Finale measurements. - Our model highlights the role of an SSL in shaping the fluid - dynamical and magnetic features of giant planets, as exemplified - at Saturn. -
-
-
-
-
-

-
-
-
- -
-
- Plastic pollution has been reported in the North Atlantic Ocean - since the 1970s, yet limited data over subsequent decades pose - challenges when assessing spatio-temporal trends in relation to - global leakages and intervention strategies. This study - quantified microplastics within the upper ocean along a - longitudinal transect of the North Atlantic and its subtropical - gyre. Microplastics were sampled from surface and subsurface - (−25 m) water using a manta trawl and NIKSIN bottle - respectively. The surface water polymer community varied - significantly between geographic positions (‘inshore’, ‘gyre’, - ‘open ocean’), and was significantly influenced by fragment - quantity. Compared to other positions, the North Atlantic gyre - was associated with high concentrations of polyethylene, - polypropylene, acrylic and polyamide fragments. Subsurface water - was dominated by polyamide and polyester fibres. Backtracked - 2-year Lagrangian simulations illustrated connectivity patterns. - Continued monitoring of microplastics throughout the water - column of the North Atlantic Ocean is required to address - knowledge gaps and assess spatio-temporal trends. -
-
-
-
-
-

-
-
-
- -
-
- The North Pacific armorhead (NPA), Pentaceros wheeleri, is - thought to exhibit an extended post-spawning epipelagic phase in - which larvae disperse to the northeast Pacific Ocean. Current - understanding of juvenile distribution, development, and - mechanisms that drive recruitment variation, however, remains - largely incomplete. The objective of this study was to compare a - time series of NPA recruitment to established climate indices - and to environmental covariates to explore drivers of the NPA - life cycle. Additionally, this work investigates potential - larval NPA transport pathways and their positional relationships - to the proposed northeastern nursery grounds. Using Lagrangian - particle tracking, trajectories of passive larvae were simulated - at depths of 0 and 15m for 18years (2001–2018) from the Southern - Emperor-Northern Hawaiian Ridge (SE-NHR) natal habitat. - Dispersal distances and particle end positions were examined for - their potential relationships with recruitment. Sea surface - temperature and net primary productivity were evaluated as - predictor variables using generalized additive modeling. Neither - regression of particle end-point characteristics nor - environmental covariates resulted in significant correlations - with recruitment here, perhaps owing to data limitations - surrounding the nursery zone. Particles were found to be - advected largely within the North Pacific transition zone in the - central north Pacific. Significant seasonal correlations were - found between recruitment and the Arctic Oscillation, Pacific - Decadal Oscillation and North Pacific Gyre Oscillation, - suggesting that NPA recruitment mechanisms respond to - interannual ocean-atmospheric climate oscillations. Better - knowledge of the connections between recruitment and the - environment would be valuable for stock management, and - improvements for advection predictions are discussed. -
-
-
-
-
-

-
-
-
- -
-
- Large amounts of plastic discharging from rivers in Java and - Bali can potentially pollute many fishing areas in Indonesia. To - identify strategies to mitigate this problem, it is important to - understand the pathways and destinations of this marine debris. - Therefore, the pathways and destinations of debris discharging - from 10 major Java and Bali rivers were investigated using a - Lagrangian particle tracking model. The amount of floating - plastic discharging from each river was determined by the - population in each river catchment area, the Mismanaged Plastic - Waste ratio, and precipitation. Our study demonstrated that - plastic debris pathways in Java and Bali primarily follow - surface currents and are secondarily driven by wind toward the - Indian Ocean. Around Indonesia, the prevailing monsoonal - circulation plays an important role in determining the - destination of floating debris. A larger amount of debris was - discharged into the seas around Indonesia during the northwest - winter monsoon when the precipitation rate was higher, leading - to a considerable accumulation of debris in various Indonesian - fisheries management areas. The areas most affected were - Southern Java, Western Sumatra, and the Banda Sea in descending - order. The most effect way of reducing the debris over Southern - Java was reducing mismanaged plastic over Yogyakarta, Banten, - and Bali provinces or along Progo River. -
-
-
-
-
-

-
-
-
- -
-
- Microplastic particles move three-dimensionally through the - ocean, but modeling studies often do not consider size-dependent - vertical transport processes. In addition, microplastic - fragmentation in ocean environments remains poorly understood, - despite fragments making up the majority of microplastic - pollution in terms of the number of particles and despite its - potential role in mass removal. Here, we first investigate the - role of particle size and density on the large-scale transport - of microplastics in the Mediterranean Sea and next analyze how - fragmentation may affect transport and mass loss of plastics. - For progressively smaller particle sizes, microplastics are - shown to be less likely to be beached and more likely to reach - open water. Smaller particles also generally get mixed deeper, - resulting in lower near-surface concentrations of small - particles despite their higher total abundance. Microplastic - fragmentation is shown to be dominated by beach-based - fragmentation, with ocean-based fragmentation processes likely - having negligible influence. However, fragmentation remains a - slow process acting on decadal time scales and as such likely - does not have a major influence on the large-scale distribution - of microplastics and mass loss over periods less than 3 years. -
-
-
-
-
-

-
-
-
- -
-
- The Galapagos Marine Reserve was established in 1986 to ensure - protection of the islands' unique biodiversity. Unfortunately, - the islands are polluted by marine plastic debris and the island - authorities face the challenge to effectively remove plastic - from its shorelines due to limited resources. To optimise - efforts, we have identified the most effective cleanup locations - on the Galapagos Islands using network theory. A network is - constructed from a Lagrangian simulation describing the flow of - macroplastic between the various islands within the Galapagos - Marine Reserve, where the nodes represent locations along the - coastline and the edges the likelihood for plastic to travel - from one location and beach at another. We have found four - network centralities that provide the best coastline ranking to - optimise the cleanup effort based on various impact metrics. In - particular locations with a high retention rate are favourable - for cleanup. The results indicate that using the most effective - centrality for finding cleanup locations is a good strategy for - heavily polluted regions if the distribution of marine plastic - debris on the coastlines is unknown and limited cleanup - resources are available. -
-
-
-
-
-

-
-
-
- -
-
- The North Atlantic Deep Water (NADW) is a crucial component of - the Atlantic meridional overturning circulation and is therefore - an important factor of the climate system. In order to estimate - the mean relative contributions, sources, and pathways of the - NADW at the southern exit of the Labrador Sea, a Lagrangian - particle experiment is performed. The particles were seeded - according to the strength of the velocity field along the 53∘N - section and traced 40 years backward in time in the - three-dimensional velocity and hydrography field. The resulting - transport pathways, their sources and corresponding transit - timescales were inferred. Our experiment shows that, of the - 30.1Sv of NADW passing 53∘N on average, the majority of this - water is associated with a diapycnal mass flux without contact - to the atmosphere, accounting for 14.3Sv (48%), where 6.2Sv - originate from the Labrador Sea, compared to 4.7Sv from the - Irminger Sea. The second-largest contribution originates from - the mixed layer with 7.2Sv (24%), where the Labrador Sea - contribution (5.9Sv) dominates over the Irminger Sea - contribution (1.0Sv). Another 5.7Sv (19%) of NADW crosses the - Greenland–Scotland Ridge within the NADW density class, where - about two-thirds pass the Denmark Strait, while one-third - crosses the Iceland–Scotland Ridge. The NADW exported at 53∘N is - hence dominated by entrainment through the diapycnal mass flux - and mixed-layer origin in the Labrador Sea. -
-
-
-
-
-

-
-
-
- -
-
- Output from a high-resolution ocean model, a wind reanalysis and - a particle tracking tool are used to improve our understanding - of the shelf circulation in an embayment off South Africa's east - coast, known as the KwaZulu-Natal Bight. This region spans - across roughly 140 km of coastline and is located between 29°S - and 30°S. It is influenced by the strong, south-westward flowing - Agulhas Current on its offshore edge, while its shelf is - dominated by weak and variable currents. On the KwaZulu-Natal - Bight's shelf, realistic high-resolution model simulations - indicate the presence of a mean north-eastward flow: the Natal - Bight Coastal Counter-Current. The mean surface circulation - depicts a Natal Bight Coastal Counter Current stretching along - the 50 m isobath from the southern to the northern section of - the KwaZulu-Natal Bight while progressively becoming narrower - and weaker northwards. The mean vertical structure of this - counter current extends throughout the water column and at its - origin, it almost connects with the Agulhas Undercurrent. In - this region, the Natal Bight Coastal Counter-Current is about 20 - km wide and has an average speed of 20 cm/s at its core, which - may exceed 100 cm/s during individual events. The passage of - southward propagating anticyclonic eddies offshore of the - Agulhas Current are associated with a southward flow along the - southern KwaZulu-Natal Bight region and the interruption of the - otherwise north-eastward shelf currents. While the circulation - in the KwaZulu-Natal Bight is primarily driven by perturbations - at the Agulhas Current front, there is also some indication of a - direct wind-driven influence in coastal waters, inshore of the - 50 m isobath and north of 29.5°S. Virtual particle tracking - experiments show that the Natal Bight Coastal Counter Current - may increase connectivity between Marine Protected Areas within - the KwaZulu-Natal Bight, where the current greatly increases the - water retention. This may trap nutrients from coastal origins on - the shelf, together with any suspended particles such as larvae. - Therefore, the Natal Bight Coastal Counter-Current has the - potential to increase the suitability of this habitat for larval - settlement. -
-
-
-
-
-

-
-
-
- -
-
- Larval dispersal and connectivity have important implications - for fisheries management, especially for species with life - cycles influenced by ocean boundary currents. Giant Mud Crab - (Scylla serrata) and Blue Swimmer Crab (Portunus armatus) are - two estuarine portunid crabs (Family: Portunidae) that support - significant commercial and recreational harvest in eastern - Australia. Giant Mud Crab migrate to coastal waters to spawn, - and while Blue Swimmer Crab spawn primarily within estuaries - they occasionally migrate to coastal waters to spawn, followed - by larval dispersal in the East Australian Current (EAC). Here, - we coupled a high-resolution oceanographic model with a - Lagrangian particle tracking framework to simulate larval - dispersal and determine the extent of population connectivity in - this region. Our simulations indicate broad-scale connectivity - (~40–400 km), characterised by high inter-estuary connectivity. - Overall, our results suggest a north-to-south source-sink - structure for both species, with contributions of particles from - the north ranging from 51% to 99%. Recruitment to a given - estuary is dependent on the proximity of mesoscale oceanographic - features of the EAC. Most notably, the EAC separation acts as a - barrier to recruitment between spawning and settlement to the - north/south of this region. This significantly limits - interjurisdictional connectivity for these species, especially - Blue Swimmer Crab, likely due to a shorter pelagic larval - duration than Giant Mud Crab. Our results provide evidence to - inform the assessment and management of these species. -
-
-
-
-
-

-
-
-
- -
-
- Context: The spanner crab (Ranina ranina) stock of eastern - Australia is distributed across two state jurisdictions and, as - a non-migratory species with a pelagic larval phase, - connectivity within this stock is likely to occur by larval - dispersal, driven by ocean currents. Aims: To understand - connectivity and patterns of larval supply in the eastern - Australian spanner crab stock. Methods: Lagrangian particle - tracking methods were used to simulate larval transport around - the key spanner crab fishing regions in eastern Australia. Key - results: Spawning off central Queensland (Qld) supplies a large - proportion of recruits, supporting both the Qld and New South - Wales (NSW) fisheries. Lagged larval settlement showed - significant correlations to catch-per-unit-effort and the - proportion of total harvest taken within the NSW fishery, - providing evidence to suggest that the NSW fishery may be - reliant on spawning activity in Queensland. Conclusions: The Qld - and NSW fisheries are highly connected and the broad-scale - patterns identified by the current modelling approach could - provide an indicator of potentially good or bad recruitment - years, particularly as finer resolution, and refined - reproductive biology knowledge on spanner crabs becomes - available. Implications: The Qld and NSW fisheries are highly - connected with a source–sink structure and it is recommended - that a co-management strategy be adopted. -
-
-
-
-
-

-
-
-
- -
-
- Lagrangian flow data in oceanography are highly complex, - encompassing not only the underpinning Eulerian, advective, - vectorial flow fields and the three-dimensional position - coordinates of tracer particles but also supplementary - trajectory information such as interaction radii of particles, - lifecycle source-to-sink information and biochemical process - data. Visualising all those data cooperatively in its - three-dimensional context is a prime challenge, as it demands to - present all relevant information to enable a contextual analysis - of the flow process while preventing the most commonly-occurring - perceptual issues of clutter, colourisation conflicts, artefacts - and the lack of spatial references in fluid-flow applications. - In this article, we present visualisation design approaches for - 4D spatio-temporal data in their context and introduce a novel - colour-mapping approach for 3D velocity tensors. The employed - visualisation approach is evaluated towards perceptual adequacy - and efficacy with respect to algebraic visualisation design and - on an oceanographic case study. The technical and perceptual - elements have further implications and applications for - still-picture and animated volumetric visualisation design in - related applications of the natural sciences, such as geological - flow mapping. -
-
-
-
-
-

-
-
-
- -
-
- Model simulations of past climates are increasingly found to - compare well with proxy data at a global scale, but regional - discrepancies remain. A persistent issue in modeling past - greenhouse climates has been the temperature difference between - equatorial and (sub-)polar regions, which is typically much - larger in simulations than proxy data suggest. Particularly in - the Eocene, multiple temperature proxies suggest extreme warmth - in the southwest Pacific Ocean, where model simulations - consistently suggest temperate conditions. Here, we present new - global ocean model simulations at 0.1° horizontal resolution for - the middle-late Eocene. The eddies in the high-resolution model - affect poleward heat transport and local time-mean flow in - critical regions compared to the noneddying flow in the standard - low-resolution simulations. As a result, the high-resolution - simulations produce higher surface temperatures near Antarctica - and lower surface temperatures near the equator compared to the - low-resolution simulations, leading to better correspondence - with proxy reconstructions. Crucially, the high-resolution - simulations are also much more consistent with biogeographic - patterns in endemic-Antarctic and low-latitude-derived plankton, - and thus resolve the long-standing discrepancy of warm subpolar - ocean temperatures and isolating polar gyre circulation. The - results imply that strongly eddying model simulations are - required to reconcile discrepancies between regional proxy data - and models, and demonstrate the importance of accurate regional - paleobathymetry for proxy-model comparisons. -
-
-
-
-
-

-
-
-
- -
-
- An accurate representation of physical and biological processes - is crucial to resolve larval dispersal pathways and characterize - connectivity of coral reef ecosystems. We investigate how - hydrodynamic forcings drive larval retention rates during the - bi-annual mass coral spawning of the coral genus Acropora within - a coral reef atoll (Mermaid Reef), located off northwestern - Australia. By analyzing hydrodynamic conditions during 41yr of - historical spring and autumn coral spawning events, we identify - typical and extreme hydrodynamic forcing conditions. Particle - tracking using the output from a fine-scale coupled wave-flow - hydrodynamic model forced with typical hydrodynamic conditions - during coral spawning, revealed a mean transport of larvae - eastward across the atoll. Transport was mainly driven by a - combination of wave and tidal currents, where the residual tidal - flow and unidirectional wave flow increased the net export of - particles, and the oscillatory tidal (non-residual) flow reduced - the net export of particles from the reef. Importantly, however, - numerical simulations forced with extreme hydrodynamic - conditions generated by episodic tropical cyclones (11 out of - 41yr) showed large deviations from the typical eastward flow - during autumn spawning, generating different connectivity - pathways within the reef. Considering the substantial time - larvae can be retained within reef systems, overlooking - fine-scale hydrodynamic processes may greatly overestimate - larval transport distances between adjacent coral reef atolls. - As a result, we emphasize the need to consider fine-scale - hydrodynamic processes within regional connectivity predictions, - which is generally not considered yet critical to understand the - capacity of reefs to recover following disturbances. -
-
-
-
-
-

-

-
-
-
- -
-
- Microbes play a primary role in aquatic ecosystems and - biogeochemical cycles. Spatial patchiness is a critical factor - underlying these activities, influencing biological - productivity, nutrient cycling and dynamics across trophic - levels. Incorporating spatial dynamics into microbial models is - a long-standing challenge, particularly where small-scale - turbulence is involved. Here, we combine a fully 3D direct - numerical simulation of convective mixed layer turbulence, with - an individual-based microbial model to test the key hypothesis - that the coupling of gyrotactic motility and turbulence drives - intense microscale patchiness. The fluid model simulates - turbulent convection caused by heat loss through the fluid - surface, for example during the night, during autumnal or winter - cooling or during a cold-air outbreak. We find that under such - conditions, turbulence-driven patchiness is depth-structured and - requires high motility: Near the fluid surface, intense - convective turbulence overpowers motility, homogenising motile - and non-motile microbes approximately equally. At greater depth, - in conditions analogous to a thermocline, highly motile microbes - can be over twice as patch-concentrated as non-motile microbes, - and can substantially amplify their swimming velocity by - efficiently exploiting fast-moving packets of fluid. Our results - substantiate the predictions of earlier studies, and demonstrate - that turbulence-driven patchiness is not a ubiquitous - consequence of motility but rather a delicate balance of - motility and turbulent intensity. -
-
-
-
-
-

-
-
-
- -
-
- Most marine plastic pollution originates on land. However, once - plastic is at sea, it is difficult to determine its origin. Here - we present a Bayesian inference framework to compute the - probability that a piece of plastic found at sea came from a - particular source. This framework combines information about - plastic emitted by rivers with a Lagrangian simulation, and - yields maps indicating the probability that a particle sampled - somewhere in the ocean originates from a particular river - source. We showcase the framework for floating river-sourced - plastic released into the South Atlantic Ocean. We computed the - probability as a function of the particle age at three - locations, showing how probabilities vary according to the - location and age. We computed the source probability of beached - particles, showing that plastic found at a given latitude is - most likely to come from the closest river source. This - framework lays the basis for source attribution of marine - plastic. -
-
-
-
-
-

-
-
-
- -
-
- We study the peculiar motion of inertial solid particles across - stratified turbulent/non-turbulent interfaces (STNTI). Previous - studies in quiescent stratified layers demonstrated that - inertial particles slow down substantially due to an additional - force term related to the stratification. Here we report for the - first time a similar effect on inertial particles moving across - a two-layer STNTI of finite thickness. This problem is addressed - both experimentally and numerically: we utilize the - three-dimensional particle tracking velocimetry (3D-PTV) in a - index-matched STNTI experiment under an oscillating grid, and - two direct numerical simulation (DNS) cases of STNTI. The DNSs - test the effects of different turbulent forcings on inertial - spheres in the turbulent layer and across STNTI and extends the - parameter ranges of Reynolds and Froude numbers unfeasible in - the experiments. Turbulence is produced in the DNSs using a - convective forcing (heat source at the domain boundary) in one - case, and a forcing that mimics a vertically oscillating grid in - the other. The numerical spheres are tracked, through one-way - coupling approach, using a modified Basset–Boussinesq–Oseen - equation which includes a stratification-induced term. The - stratification force is modelled as an additional buoyancy of a - caudal wake with varying density. This algorithm creates - Lagrangian trajectories that resemble the motion of inertial - particles across stratified interfaces in quiescent and - turbulent experiments. Furthermore, numerical results for the - STNTI cases help to distinguish the essential features observed - in the experiments that are caused by stratification from those - that relate to turbulence–particle interactions. -
-
-
-
-
-

-
-
-
- -
-
- The North Atlantic Ocean is a key region for carbon - sequestration by the biological carbon pump (BCP). The quantity - of organic carbon exported from the surface, the region and - depth at which it is remineralized, and the subsequent timescale - of ventilation (return of the remineralized carbon back into - contact with the atmosphere), control the magnitude of BCP - sequestration. Carbon stored in the ocean for >100 years is - assumed to be sequestered for climate-relevant timescales. We - apply Lagrangian tracking to an ocean circulation and marine - biogeochemistry model to determine the fate of North Atlantic - organic carbon export. Organic carbon assumed to undergo - remineralization at each of three vertical horizons (500, 1,000, - and 2,000 m) is tracked to determine how much remains out of - contact with the atmosphere for 100 years. The fraction that - remains below the mixed layer for 100 years is defined as the - sequestration efficiency (SEff) of remineralized exported - carbon. For exported carbon remineralized at the 500, 1,000 and - 2,000 m horizons, the SEff is 28%, 66% and 94%, respectively. - Calculating the amount of carbon sequestered using depths ≤1,000 - m, and not accounting for downstream ventilation, overestimates - 100-year carbon sequestration by at least 39%. This work has - implications for the accuracy of future carbon sequestration - estimates, which may be overstated, and for carbon management - strategies (e.g., oceanic carbon dioxide removal and Blue Carbon - schemes) that require long-term sequestration to be successful. -
-
-
-
-
-

-
-
-
- -
-
- Recently, a number of authors have used global particle tracking - simulations to identify the effect that different surface - currents have on marine litter accumulation, including the role - of surface waves through the Stokes drift. However, in the - upper-ocean boundary layer and in the presence of the Coriolis - force, a wave-driven Eulerian flow forms that must be - superimposed onto the Stokes drift in order to obtain the - correct Lagrangian velocity. Taking into account both the - Coriolis–Stokes force and the surface wave stress, Higgins, - Vanneste, and van den Bremer (2020) derived an expression for - this unsteady wave-driven Eulerian-mean flow in the form of a - convolution between the Stokes drift and the so-called - Ekman–Stokes kernel. In this paper, we apply this Ekman–Stokes - kernel to generate a 12-year global hindcast of the wave-driven - Eulerian current and show that its inclusion in particle - tracking simulations has a significant effect on the - distribution of small floating marine litter, such as - microplastics. Using Lagrangian simulations, we find that the - wave-driven Eulerian current is sensitive to the value of - viscosity but generally opposes the dispersive behaviour of the - Stokes drift, reducing the amount of cross-Equator particle - transport and transport to the polar regions, resulting in - closer agreement between modelled and observed microplastic - distributions. -
-
-
-
-
-

-
-
-
- -
-
- Ichthyoplankton assemblages in the south central Tyrrhenian Sea - are not known in spite of this being an intensely fished area. - There are two large canyons in this region: Dohrn, in the Gulf - of Naples, and Cuma, at the south end of the Gulf of Gaeta. In - this study, we provide the first description of summer - ichthyoplankton assemblages in the vicinity of the two canyons - and present the physical features and Lagrangian particle - tracking analyses at the time of the sampling. We identified - fish larvae of 19 families and fish eggs of 8 families. The most - abundant species was Engraulis encrasicolus, which was found at - densities comparable to other known spawning grounds of the - western Mediterranean. Mesopelagic species, such as - Gonostomatidae and Myctophidae, were also abundant, especially - at the Cuma Canyon. The notochord and standard length of the E. - encrasicolus larvae ranged from 2.06 to 10.47mm and was - significantly smaller at the Cuma stations than at the Dohrn - stations, suggesting the presence of sub-populations with - different spawning phenologies. The passive particle tracking - analyses and the examination of currents confirmed distinct - circulation features between the two sampled regions and in - relation to depth and proximity to the canyon heads. These - results uncover previously unknown rich assemblages of fish eggs - and larvae and have conservation and management implications - given the proximity of these canyons to a marine protected area - and to an intensely fished continental shelf. -
-
-
-
-
-

-
-
-
- -
-
- Retention is a key driver of biological productivity near the - coast since increased concentrations of planktonic particles in - retention hotspots boost local primary production, availability - of particulate food and larval recruitment. Known retention - sites, such as bays, are also places where anthropogenic - pressures accumulate in the form of pollution, harmful algal - blooms, fisheries, aquaculture and port developments. In the - face of these growing hazards, South African bays were recently - declared ‘threatened’ priority sites for enhanced conservation - and marine spatial planning (MSP). Multidisciplinary studies - that spatially relate human impacts to physical features (such - as retention patterns) and ecological processes (such as primary - production) are valuable in this context. This study made use of - a high resolution CROCO (Coastal and Regional Ocean Community - Model) model along with the Parcels particle-tracking tool to - develop a spatio-temporal coastal retention index (CORE) for the - South African coastal ocean. To explore links between retention, - biological productivity and anthropogenic impacts, a monthly - time series of CORE (2001–2012) was evaluated in relation to - satellite-derived coastal chlorophyll-a (Chl-a) and an index of - cumulative human pressure. CORE showed variable temporal - relationships with Chl-a among different subregions, however, - when integrated over time, their spatial trends and peaks - commonly aligned. This was most obvious on the south coast, - where retention, Chl-a and human pressures peaked in the - majority of bays that characterise this region. In the case of - St Helena Bay on the west coast, CORE failed to represent a - prominent retentive feature associated with upwelling, due to - rapid alongshore advection of particles outside the 25-km - retention radius of CORE. Despite this limitation, CORE provided - profound insight into the variability of the coastal circulation - around South Africa and its coupling with other socio-ecological - variables. By contributing a novel data layer for MSP, CORE - assists the integrated coastal management of bay ecosystems that - face the hazards of multiple destructive uses. -
-
-
-
-
-

-
-
-
- -
-
- The equatorial retroflection of the North Brazil Current (NBC) - into the Equatorial Undercurrent (EUC) and its posterior - tropical recirculation is a major regulator for the returning - limb of the Atlantic Meridional Overturning Circulation (AMOC). - Indeed, most surface and thermocline NBC waters retroflect at - the equator all the way into the central and eastern Atlantic - Ocean, before they recirculate back through the tropics to the - western boundary. Here we use cruise data in the western - equatorial Atlantic during April 2010 and reanalysis time series - for the equatorial and tropical waters in both hemispheres in - order to explore the recirculation pathways and transport - variability. During the 1998-2016 period, the annual-mean EUC - transports 15.1 ± 1.3 Sv at 32{degree sign}W, with 2.8 ± 0.4 Sv - from the North Atlantic and 11.4 ± 1.3 Sv from the South - Atlantic. Most of the total EUC transport comes from the western - boundary retroflection south of 3{degree sign}N (7.2 ± 0.9 Sv) - and a substantial fraction retroflects north of 3{degree sign}N - (5.1 ± 0.4 Sv). The South Atlantic Subtropical waters feed the - EUC at all thermocline depths while the North Atlantic and South - Atlantic tropical waters do so at the surface and - upper-thermocline levels. The EUC transport has a pronounced - seasonality, with spring and fall maxima and a range of 8.8 Sv. - The 18-year of reanalysis data shows a weak yet significant - correlation with an Atlantic Niño index, and also suggests an - enhanced contribution from the South Atlantic tropical waters - during 2008-2016 as compared with 1997-2007. -
-
-
-
-
-

-
-
-
- -
-
- The fate of (micro)plastic particles in the open ocean is - controlled by biological and physical processes. Here, we model - the effects of biofouling on the subsurface vertical - distribution of spherical, virtual plastic particles with radii - of 0.01-1 mm. The biological specifications include the - attachment, growth and loss of algae on particles. The physical - specifications include four vertical velocity terms: advection, - wind-driven mixing, tidally-induced mixing, and the sinking - velocity of the biofouled particle. We track 10,000 particles - for one year in three different regions with distinct biological - and physical properties: the low productivity region of the - North Pacific Subtropical Gyre, the high productivity region of - the Equatorial Pacific and the high mixing region of the - Southern Ocean. The growth of biofilm mass in the euphotic zone - and loss of mass below the euphotic zone result in the - oscillatory behaviour of particles, where the larger (0.1-1.0 - mm) particles have much shorter average oscillation lengths - (<10 days; 90th percentile) than the smaller (0.01-0.1 mm) - particles (up to 130 days; 90th percentile). A subsurface - maximum particle concentration occurs just below the mixed layer - depth (around 30 m) in the Equatorial Pacific, which is most - pronounced for larger particles (0.1-1.0 mm). This occurs since - particles become neutrally buoyant when the processes affecting - the settling velocity of a particle and the seawater's vertical - movement are in equilibrium. Seasonal effects in the subtropical - gyre result in particles sinking below the mixed layer depth - only during spring blooms, but otherwise remaining within the - mixed layer. The strong winds and deepest average mixed layer - depth in the Southern Ocean (400 m) result in the deepest - redistribution of particles (>5000 m). Our results show that - the vertical movement of particles is mainly affected by - physical (wind-induced mixing) processes within the mixed layer - and biological (biofilm) dynamics below the mixed layer. - Furthermore, positively buoyant particles with radii of 0.01-1.0 - mm can sink far below the euphotic zone and mixed layer in - regions with high near-surface mixing or high biological - activity. This work can easily be coupled to other models to - simulate open-ocean biofouling dynamics, in order to reach a - better understanding of where ocean (micro)plastic ends up. -
-
-
-
-
-

-
-
-
- -
-
- Spiciness anomalies generated in the salinity maxima region are - important for several atmospheric and oceanic factors as they - move along the geostrophic pathways towards the equator and - resurface. Subduction and injection mechanisms are responsible - for the spiciness generation in the South Indian Ocean (SIO) - salinity maxima region. Using ECCO data from 1992 to 2017, here - we study monthly variations of spiciness associated with both of - these mechanisms in the SIO salinity maxima region. Using a - Lagrangian approach, we estimated the monthly evolution of the - subduction rate. A maximum subduction rate of 35–38 m/mon occurs - during September and consequently decreases towards the end of - the year. The effective subduction rate in the salinity maxima - region shows the dominance of temporal induction (mixed layer - tendency) term, with a sharp gradient in total subduction rate - along the 30∘S associated with large mixed layer depth - variation. Further, a high Turner angle (>66∘) to the south - of 30∘S confirms the generation of spiciness by injection - mechanism. We found that the decrease in mixed layer salt (MLS) - coincides with the increase in salinity below the mixed layer. - To explore the significance of MLS changes in spiciness - generation, we further addressed the monthly evolution of - spiciness through MLS budget. Our results suggest that the - entrainment and meridional advection terms are key to monthly - variations in MLS changes and thus the spiciness. -
-
-
-
-
-

-
-
-
- -
-
- Ocean eddies play an important role in the transport and mixing - processes of the ocean due to their ability to transport - material, heat, salt, and other tracers across large distances. - They exhibit at least two timescales: an Eulerian lifetime - associated with persistent identifiable signatures in gridded - fields such as vorticity or sea-surface height and multiple - Lagrangian or material coherence timescales that are typically - much shorter. We propose a method to study the - multiple-timescale material transport, leakage, and entrainment - by eddies with their surroundings by constructing sequences of - finite-time coherent sets, computed as superlevel sets of - dominant eigenfunctions of dynamic Laplace operators. The - dominant eigenvalues of dynamic Laplace operators defined on - time intervals of varying length allows us to identify a maximal - coherence timescale that minimizes the rate of mass loss over a - domain per unit flow time. We apply the method to examine the - persistence and material coherence of an Agulhas ring, an ocean - eddy in the South Atlantic ocean, using particle trajectories - derived from a 0.1∘ global numerical ocean simulation. Using a - sequence of sliding windows, the method is able to identify and - track a persistent eddy feature for a time much longer than the - maximal coherence timescale and with considerably larger - material transport than the corresponding eddy feature - identified from purely Eulerian information. Furthermore, the - median residence times of fluid in the identified feature far - exceed the timescale over which fully material motion is - guaranteed. Through residence time calculations, we find that - this particular eddy does not exhibit a long-lived coherent - inner core and that the bulk of material transport is performed - by the quasi-coherent outer ring of the eddy. -
-
-
-
-
-

-
-
-
- -
-
- Turbulent mixing is a vital component of vertical particulate - transport, but ocean global circulation models (OGCMs) generally - have low resolution representations of near-surface mixing. - Furthermore, turbulence data is often not provided in OGCM model - output. We present 1D parametrizations of wind-driven turbulent - mixing in the ocean surface mixed layer, which are designed to - be easily included in 3D Lagrangian model experiments. - Stochastic transport is computed by Markov-0 or Markov-1 models, - and we discuss the advantages/disadvantages of two vertical - profiles for the vertical diffusion coefficient Kz. All vertical - diffusion profiles and stochastic transport models lead to - stable concentration profiles for buoyant particles, which for - particles with rise velocities of 0.03 and 0.003 m/s agree - relatively well with concentration profiles from field - measurements of microplastics when Langmuir-circulation-driven - turbulence is accounted for. Markov-0 models provide good model - performance for integration timesteps of dt = 30 seconds, and - can be readily applied in studying the behaviour of buoyant - particulates in the ocean. Markov-1 models do not consistently - improve model performance relative to Markov-0 models, and - require an additional parameter that is poorly constrained. -
-
-
-
-
-

-
-
-
- -
-
- Coastlines potentially harbor a large part of litter entering - the oceans such as plastic waste. The relative importance of the - physical processes that influence the beaching of litter is - still relatively unknown. Here, we investigate the beaching of - litter by analyzing a data set of litter gathered along the - Dutch North Sea coast during extensive beach cleanup efforts - between the years 2014-2019. This data set is unique in the - sense that data is gathered consistently over various years by - many volunteers (a total of 14,000), on beaches which are quite - similar in substrate (sandy). This makes the data set valuable - to identify which environmental variables play an important role - in the beaching process, and to explore the variability of beach - litter concentrations. We investigate this by fitting a random - forest machine learning regression model to the observed litter - concentrations. We find that especially tides play an important - role, where an increasing tidal variability and tidal height - lead to less litter found on beaches. Relatively straight and - exposed coastlines appear to accumulate more litter. The - regression model indicates that transport of litter through the - marine environment is also important in explaining beach litter - variability. By understanding which processes cause the - accumulation of litter on the coast, recommendations can be - given for more effective removal of litter from the marine - environment, such as organizing beach cleanups during low tides - at exposed coastlines. We estimate that 16,500-31,200 kilograms - (95% confidence interval) of litter are located on the 365 - kilometers of Dutch North Sea coastline. -
-
-
-
-
-

-
-
-
- -
-
- In the eastern Alboran Sea, frontogenesis (FG) is a dominant - process for fronts extending from the Spanish coast toward the - basin interior, promoting large vertical displacements that - connect the surface mixed layer with the oceanic interior. Using - a realistic, high-resolution model simulation for this region, - we conduct the offline advection of virtual water parcels - released near the surface during a 2-day episode of intense FG. - Three-dimensional trajectories exhibit high variability - depending on the release location, and some large, rapid - vertical displacements are induced by different coherent - submesoscale flow patterns and by interactions among them: - Ageostrophic secondary circulation associated with strain- and - mixing-induced FG and internal waves generated by currents over - topography. These deep displacements mostly are irreversible, at - least on a short time scale, because of the rapidly changing - flow patterns. Significant diapycnal mixing and density changes - occur along trajectories as they pass through the surface and - bottom boundary layers. While we expect these processes to be - typical for this region, the computational expense of such a - Lagrangian analysis and the complexity of its outcome present a - considerable challenge for more comprehensive assessments. -
-
-
-
-
-

-
-
-
- -
-
- Some lipid-biomarker-based sea surface temperature (SST) proxies - applied in the modern Mediterranean Sea exhibit large offsets - from expected values, generating uncertainties in climate - reconstructions. Lateral transport of proxy carriers along ocean - currents prior to burial can contribute to this offset between - reconstructed and expected SSTs. We perform virtual particle - tracking experiments to simulate transport prior to and during - sinking and derive a quantitative estimate of transport bias for - alkenones and glycerol dibiphytanyl glycerol tetraethers - (GDGTs), which form the basis of the UK'37 and TEX86 - paleothermometers, respectively. We use a simple 30-day surface - advection scenario and sinking speeds appropriate for the export - of various proxy carriers (6, 12, 25, 50, 100, 250, 500, and - 1000 md-1). For the assessed scenarios, lateral transport bias - is generally small (always <0.85 {degree sign}C) within the - Mediterranean Sea and does not substantially contribute to - uncertainties in UK'37- or TEX86-based SSTs. -
-
-
-
-
-

-
-
-
- -
-
- Marine particles are important regulators of the biogeochemistry - of many trace elements and isotopes in the ocean, and as such, - there has been an increasing motivation to unravel the processes - which control their cycling. Here, we present vertical - distributions of total particulate trace elements (Al, V, Fe, Mn - and P) and particulate organic carbon and particulate nitrogen - (POC and pN) collected during the GEOTRACES Canadian cruise in - 2015 in the Canada Basin (CB), the Canadian Arctic Archipelago - (CAA), Baffin Bay (BB) and the Labrador Sea (LS), where - particulate trace metal data are scarce. While particulate trace - elements are generally affected by one–dimensional dynamics in - ocean waters (e.g. deposition, scavenging/remineralization, and - sinking), lateral transport of lithogenic–derived particles - (pAl, pV and pFe) plays a dominant role in shaping their - distributions in the deep CB, BB and LS basins. Higher - concentrations of the aforementioned particulate trace elements - are measured along the flow path of boundary currents and in - near–bottom waters. Unlike pAl, pV and pFe, primarily controlled - by lithogenic sources, bulk pMn distributions in our study - regions (with the exception of LS) are dominated by authigenic - Mn+3/4 oxides, with distinctively high concentrations in CB and - BB subsurface halocline waters, as well as in the deepest - samples in BB. Enhanced bacterially-mediated Mn+2 oxide - formation is anticipated to occur in these halocline waters - which have the potential to sustain large populations of Mn - oxidizing bacteria as result of the close sediment-water - interactions and distinct environmental conditions of these - water masses. Overall, the highest concentrations of pP, POC and - pN occurred in surface and near–surface waters (> 100 m) at - the same density as a chlorophyll-a peak and transmissivity - drop, with a clear west–east increasing concentration gradient - from the CB to LS. In summary, biogeochemical cycles of - particulate elements in the Canadian Arctic Ocean are controlled - by enhanced lateral transport and sediment resuspension (pAl, - pFe and pV), authigenic formation of Mn and biological - production (pP, POC and pN). -
-
-
-
-
-

-
-
-
- -
-
- Beaches are thought to be a large reservoir for marine plastics. - To protect vulnerable beaches, it is advantageous to have - information on the sources of this plastic. Here, we develop a - universally applicable Bayesian framework to map sources of - plastic arriving on a specific beach. In this framework, we - combine Lagrangian backtracking simulations of drifting - particles with estimates of plastic input from coastlines, - rivers and fisheries. The advantage over traditional Lagrangian - simulations is that the Bayesian framework can consider - information on known sources, and thus facilitates - spatiotemporal source attribution for plastic arriving at the - specified beach. We show that the main sources for our target - beach in southwest Netherlands are the east coast of the UK, the - Dutch coast, the English Channel (fisheries) and the Thames, - Seine, Rhine and Trieux (rivers). We also show that floating - time is a major uncertainty in source attribution using - backtracking. -
-
-
-
-
-

-
-
-
- -
-
- Having descended through the water column, microplankton in - ocean sediments are representative for the ocean surface - environment, where they originated from. Sedimentary - microplankton is therefore used as an archive of past and - present surface oceanographic conditions. However, these - particles are advected by turbulent ocean currents during their - sinking journey. So far, it is unknown to what extent this - particle advection shapes the microplankton composition in - sediments. Here we use global simulations of sinking particles - in a strongly eddying global ocean model, and define ocean - bottom provinces based on the particle surface origin locations. - We find that these provinces can be detected in global datasets - of sedimentary microplankton assemblages, demonstrating the - effect provincialism has on the composition of sedimentary - remains of surface plankton. These provinces explain the - microplankton composition, in addition to e.g. ocean surface - environment. Connected provinces have implications on the - optimal spatial extent of microplankton sediment sample datasets - that are used for palaeoceanographic reconstructions, and on the - optimal spatial averaging of sediment samples over global - datasets. -
-
-
-
-
-

-
-
-
- -
-
- To capture the effects of mesoscale turbulent eddies, - coarse-resolution Eulerian ocean models resort to tracer - diffusion parameterizations. Likewise, the effect of eddy - dispersion needs to be parameterized when computing Lagrangian - pathways using coarse flow fields. Dispersion in Lagrangian - simulations is traditionally parameterized by random walks, - equivalent to diffusion in Eulerian models. Beyond random walks, - there is a hierarchy of stochastic parameterizations, where - stochastic perturbations are added to Lagrangian particle - velocities, accelerations, or hyper-accelerations. These - parameterizations are referred to as the 1st, 2nd and 3rd order - “Markov models” (Markov-N), respectively. Most previous studies - investigate these parameterizations in two-dimensional setups, - often restricted to the ocean surface. On the other hand, the - few studies that investigated Lagrangian dispersion - parameterizations in three dimensions, where dispersion is - largely restricted to neutrally buoyant surfaces, have focused - only on random walk (Markov-0) dispersion. Here, we present a - three-dimensional isoneutral formulation of the Markov-1 model. - We also implement an anisotropic, shear-dependent formulation of - random walk dispersion, originally formulated as a Eulerian - diffusion parameterization. Random walk dispersion and Markov-1 - are compared using an idealized setup as well as more realistic - coarse and coarsened (50 km) ocean model output. While random - walk dispersion and Markov-1 produce similar particle - distributions over time when using our ocean model output, - Markov-1 yields Lagrangian trajectories that better resemble - trajectories from eddy-resolving simulations. Markov-1 also - yields a smaller spurious dianeutral flux. -
-
-
-
-
-

-
-
-
- -
-
- As the resolution of observations and models improves, emerging evidence indicates that ocean variability on 1–200-km scales is of fundamental importance to ocean circulation, air-sea interaction, and biogeochemistry. In many regions, salinity variability dominates over thermal effects in forming density fronts. Unfortunately, current satellite observations of sea surface salinity (SSS) only resolve scales ≥40 km (or larger, depending on the product). In this study, we investigate small-scale variability (≲25 km) by reconstructing gridded SSS observations made by the Soil Moisture Active Passive (SMAP) satellite in the northwest Atlantic Ocean. Using altimetric geostrophic currents, we numerically advect SMAP SSS fields to produce a Lagrangian reconstruction that represents small scales. Reconstructed fields are compared to in-situ salinity observations made by a ship-board thermosalinograph, revealing a marked improvement in small-scale salinity variability when compared to the original SMAP fields, particularly from the continental shelf to the Gulf Stream. In the Sargasso Sea, however, both SMAP and the reconstructed fields contain higher variability than is observed in situ. Enhanced small-scale salinity variability is concentrated in two bands: a northern band aligned with the continental shelfbreak and a southern band aligned with the Gulf Stream mean position. Seasonal differences in the small-scale variability appear to covary with the seasonal cycle of the large-scale SSS gradients resulting from the freshening of the coastal waters during periods of elevated river outflow. -
-
-
-
-
-

-
-
-
- -
-
- Knowledge about the early life history of Antarctic toothfish (Dissostichus mawsoni) is still incomplete, particularly on the spatial and temporal extent of spawning and the subsequent transport of eggs, larvae, and juveniles from the offshore spawning areas to the continental shelf. This study used a high-resolution hydrodynamic model to investigate the impact of ocean circulation and sea-ice drift on the dispersal of eggs, larvae, and juvenile Antarctic toothfish. The virtual eggs were released on seamounts of the Pacific-Antarctic ridge in the Ross Gyre and advected using hydrodynamical model data. Particles were seeded annually over the years 2002–2016 and tracked for 3 years after their release. Recruitment success was evaluated based on the number of juveniles that reached known coastal recruitment areas, between the eastern Ross and Amundsen Seas, within 3 years. Sensitivities to certain juvenile behaviors were explored and showed that recruitment success was reduced by around 70% if juveniles drifted with sea-ice during the second winter season as this carried them into the open ocean away from the shelf region. Recruitment success increased during the second winter season if juveniles were entrained in the Ross Gyre circulation or if they actively swam toward the shelf. These modeling results suggest that the ecological advantage of sea-ice association in the early life cycle of toothfish diminishes as they grow, promoting a behavior change during their second winter. -
-
-
-
-
-

-
-
-
- -
-
- Tropical instability vortices (TIVs) have a major influence on - the physics and biogeochemistry of the equatorial Pacific. Using - an eddy-resolving configuration of the Community Earth System - Model (CESM-HR) and Lagrangian particle tracking, we examine TIV - impacts on the three-dimensional structure and variability of - dissolved oxygen (O2) in the upper equatorial Pacific water - column. In CESM-HR, the simulated generation and westward - propagation of TIVs from boreal summer through winter lead to - the seasonal oxygenation of the upper northern equatorial - Pacific, exhibited as a deepening of hypoxic depth west of - 120°W. TIV effects on the equatorial Pacific oxygen balance are - dominated by eddy-advection and mixing, while indirect TIV - effects on O2 consumption play minor roles. These advective - effects reflect the transient displacements of isopycnals by - eddy pumping as well as vortex transport of oxygen by eddy - trapping, stirring, and subduction. TIVs influence on the upper - equatorial Pacific O2 distribution and variability has important - implications for understanding and modeling marine ecosystem - dynamics and habitats, and should be taken into consideration in - designing observation networks in this region. -
-
-
-
-
-

-
-
-
- -
-
- Jakarta is the capital of Indonesia with a high population - density, which affects the amount of waste generated. The waste - that ends up in Jakarta Bay has become an environmental problem. - Understanding the pathway of marine debris in the ocean is - important to identify the mitigation strategies. Before this - study, the pathways and sources of marine debris in Jakarta Bay - were unknown. By using virtual floating marine debris particles - in a high-resolution ocean model, the fate of marine debris - based on the pathways of particles released in Jakarta Bay in - both forward and backward tracking experiments was analyzed. It - was found that most of the particles from Jakarta Bay flow - toward the Indian Ocean in all seasons. They flow off through - the Sunda Strait and reach the open Indian Ocean after a few - weeks. With regard to the source location, most particles that - end up in Jakarta Bay come from the north of Java Island locally - and from the Gulf of Thailand, Sumatra, and Kalimantan coasts. - The particles do not appear to vary significantly across all - seasons and identifying the pathway of marine debris might be - useful in pollution reduction. -
-
-
-
-
-

-
-
-
- -
-
- Identifying internal waves in complex flow fields is a - long-standing problem in fluid dynamics, oceanography and - atmospheric science, owing to the overlap of internal waves - temporal and spatial scales with other flow regimes. Lagrangian - filtering—that is, temporal filtering in a frame of reference - moving with the flow—is one proposed methodology for performing - this separation. Here we (a) describe an improved implementation - of the Lagrangian filtering methodology and (b) introduce a new - freely available, parallelized Python package that applies the - method. We show that the package can be used to directly filter - output from a variety of common ocean models including MITgcm, - Regional Ocean Modeling System and MOM5 for both regional and - global domains at high resolution. The Lagrangian filtering is - shown to be a useful tool to both identify (and thereby - quantify) internal waves, and to remove internal waves to - isolate the non-wave flow field. -
-
-
-
-
-

-
-
-
- -
-
- The present study investigates the advective pathways and - transit times of virtual particles released in the Red Sea - outflow area as a proxy for the poorly understood spreading of - the Red Sea Overflow Water (RSOW) in the Arabian Sea. This work - uses the Parcels toolbox, a Lagrangian framework, to simulate - tens of thousands of trajectories under different initial - conditions. Six different Lagrangian simulations are performed - at isobaric and isopycnal surfaces within the RSOW layer. All - simulations are based on the eddy-rich GLORYS12 reanalysis that - merges almost all in-situ (temperature-salinity) and satellite - observations collected over the last two decades into a - dynamical framework. This study shows that GLORYS12 reproduces - relatively well the climatological seasonal cycle of the RSOW to - the Gulf of Aden and essential characteristics of the exchange - at the Strait of Bab al-Mandab. Statistical comparisons between - synthetic trajectories and RAFOS floats in the Gulf of Aden - corroborate the quality of GLORYS12 velocity fields used for the - Lagrangian simulations. Six main advective pathways are - uncovered (by order of preference): Southwest, Northwest, - Socotra Passage, Central, Eastern, and Southern. Trajectories - from Argo floats give observational support for some of these - paths. Although most particles are exported out of the Arabian - Sea off Somalia, the simulations reveal robust connectivity of - the RSOW to the Arabian Sea interior and its eastern boundary. - The fact that particles have long trajectories in the interior - increases the potential of RSOW mixing with the fresher and - oxygen-poor ambient waters. Thus, these pathways may have - profound implications for the salt and oxygen budgets in the - Arabian Sea since the RSOW is also part of the global - overturning circulation and exported out of the Indian Ocean via - the Agulhas Current. Transit time distributions indicate that it - takes about six months for outflow-originated particles to - spread over the entire Gulf of Aden and one to three years to be - exported along the western boundary, toward Somalia (Socotra - Passage and Southwest pathways) and off the Yemeni-Omani coast - (Northwest Pathway). In contrast, reaching the eastern boundary - takes much longer. North of 14 N, the most frequent time is - around 10–15 years, and about 20–25 years at the southeastern - Arabian Sea. Hence, the RSOW can often carry oxygen to the - western boundary but not to the eastern basin. This may - contribute to the eastern shift of the Arabian Sea Oxygen - Minimum Zone, a subject that deserves investigation. -
-
-
-
-
-

-
-
-
- -
-
- Coastal upwellings, due to offshore Ekman transport, are more - energetic at the western boundaries of the oceans, where they - are intensified by incoming Rossby waves, than at the eastern - boundaries. Western boundary upwellings are often accompanied by - a local vortex field. The instability of a developed upwelling - front and its interaction with an external vortex field is - studied here with a three-dimensional numerical model of the - hydrostatic rotating Navier-Stokes equations (the primitive - equations). The baroclinic instability of the front leads to the - growth of meanders with 100-200 km wavelength, in the absence of - external vortex. On the 𝑓-plane, these waves can break into a - row of vortices when the instability is intense. The 𝛽-effect is - stabilizing and strongly decreases the amplitude of meanders. - Simulations are then performed with a front initially - accompanied by one or several external vortices. The evolutions - in this case are compared with those of the unstable jet alone. - On the 𝑓-plane, when an external vortex is close to the front, - this latter sheds a long filament which wraps up around the - vortex. This occurs over a period similar to that of the - instability of the isolated front. Cyclones are more efficient - in tearing such filaments offshore than anticyclones. On the - 𝛽-plane, the filaments are short and turbulence is confined to - the vicinity of the front. At long times, waves propagate along - the front, thus extending turbulence alongshore. The initial - presence of a vortex alley leads to a stronger destabilization - of the front and to a larger cross-shore flux than for a single - vortex, with many filaments and small vortices pushed far - offshore. In the ocean, this cross-shore exchange has important - consequences on the local biological activity. -
-
-
-
-
-

-
-
-
- -
-
- The southern branch of the South Equatorial Current (SSEC) is - the northern limit of the South Atlantic Subtropical Gyre. When - this current reaches Brazil around 14°S it bifurcates into a - southward flow as the Brazil Current (BC) and the surface - portion of the northward flowing North Brazil Undercurrent - (NBUC). The SSEC system is a key component of the western - boundary supply, influencing the NBUC/BC variability and, - therefore, global climate through the Meridional Overturning - Circulation. In this study, using altimetry satellite data and - reanalyzes outputs (1993–2018), we revisit the SSEC mean state - and show this current arriving at the South Atlantic western - boundary as a multi-banded flow with surface signatures - resulting from different subsurface cores. These bands have - velocities between 0.02 and 0.07 m s−1 and, as shown by ADCP - data from the PIRATA project, their signature in synoptic - scenarios is obscured by eddies and waves with velocities - between 0.1 and 0.3 m s−1. In addition, the SSEC annual cycle - analysis shows that the seasonality of the bands is out of phase - with each other, presenting westward transport anomalies between - 0.4 and 2.6 Sv. Finally, our results show that the seasonality - of this multi-banded flow both defines where the BC is born, and - modulates the seasonality of semi-permanent mesoscale eddies off - Brazil. -
-
-
-
-
-

-
-
-
- -
-
- Marine plastics are considered to be a major threat to the - sustainable use of marine and coastal resources of the - Caribbean, on which the region relies heavily for tourism and - fishing. To date, little work has quantified plastics within the - Caribbean marine environment or examined their potential - sources. This study aimed to address this by holistically - integrating marine (surface water, subsurface water and - sediment) and terrestrial sampling and Lagrangian particle - tracking to examine the potential origins, flows and quantities - of plastics within the Southern Caribbean. Terrestrial litter - and the microplastics identified in marine samples may arise - from the maritime and tourism industries, both of which are - major contributors to the economies of the Caribbean region. The - San Blas islands, Panama had the highest abundance of - microplastics at a depth of 25 m, and significantly greater - quantities in surface water than recorded in the other - countries. Modelling indicated the microplastics likely arose - from mainland Panama, which has some of the highest levels of - mismanaged waste. Antigua had among the lowest quantities of - terrestrial and marine plastics, yet the greatest diversity of - polymers. Modelling indicated the majority of the microplastics - in Antiguan coastal surface were likely to have originated from - the wider North Atlantic Ocean. Ocean currents influence the - movements of plastics and thus the relative contributions - arising from local and distant sources which become distributed - within a country's territorial water. These transboundary - movements can undermine local or national legislation aimed at - reducing plastic pollution. While this study presents a snapshot - of plastic pollution, it contributes towards the void of - knowledge regarding marine plastic pollution in the Caribbean - Sea and highlights the need for international and - interdisciplinary collaborative research and solutions to - plastic pollution. -
-
-
-
-
-

-
-
-
- -
-
- The Lagrangian analysis of particulate matter, biota and - drifters, which are dispersed by turbulent fluid currents, is a - cornerstone of oceanographic studies, covering diverse study - objectives. The results of Lagrangian simulations and - observations is predominantly visualised by means of easy-access - plotting interfaces and simple presentation techniques. We - analysed over 50 publications from the years 2010–2020 with - respect to their visual design to deduce common visualisation - practices in the domain. Individual figures are analysed towards - adherence to visualisation best-practices, algebraic - visualisation guidelines and the IPCC visual style guide. In - this article, we present the resulting best-practices and common - pitfalls in the design of Lagrangian ocean visualisations. Based - on this visual study, we highlight that raising awareness of - established visual guidelines may have a higher impact on - improving the visual quality of publications in oceanography - than the vigorous development of more general-purpose - visualisation tools. -
-
-
-
-
-

-
-
-
- -
-
- The southward flow of North Atlantic Deep Water makes up the - major component of the deepwater limb of the Atlantic Meridional - Overturning Circulation (AMOC). In the subtropical North - Atlantic, it's flow is concentrated along the continental slope, - forming a coherent Deep Western Boundary Current (DWBC). Both, - observations and models show a high variability of the flow in - this region. Here we use an eddy-rich ocean model to show that - this variability is mainly caused by eddies and meanders. Their - formation process involves an important contribution from energy - transfer by barotropic instability. They occur along the entire - DWBC pathway and introduce several recirculation gyres that - result in a decorrelation of the DWBC transport at 26.5°N and - 16°N, despite the fact that a considerable mean transport of 20 - Sv connects the two latitudes. Water in the DWBC at 26.5°N is - partly returned northward. Because the amount of water returned - depends on the DWBC transport itself, a stronger DWBC does not - necessarily lead to an increased amount of water that reaches - 16°N. Along the pathway to 16°N, the transport signal is altered - by a broad and temporally variable transit time distribution. - Thus, advection in the DWBC cannot account for coherent AMOC - changes on interannual timescales seen in the model. -
-
-
-
-
-

-
-
-
- -
-
- How far do marine larvae disperse in the ocean? Decades of - population genetic studies have revealed generally low levels of - genetic structure at large spatial scales (hundreds of - kilometres). Yet this result, typically based on discrete - sampling designs, does not necessarily imply extensive - dispersal. Here, we adopt a continuous sampling strategy along - 950 km of coast in the northwestern Mediterranean Sea to address - this question in four species. In line with expectations, we - observe weak genetic structure at a large spatial scale. - Nevertheless, our continuous sampling strategy uncovers a - pattern of isolation by distance at small spatial scales (few - tens of kilometres) in two species. Individual-based simulations - indicate that this signal is an expected signature of restricted - dispersal. At the other extreme of the connectivity spectrum, - two pairs of individuals that are closely related genetically - were found more than 290 km apart, indicating long-distance - dispersal. Such a combination of restricted dispersal with rare - long-distance dispersal events is supported by a high-resolution - biophysical model of larval dispersal in the study area, and we - posit that it may be common in marine species. Our results - bridge population genetic studies with direct dispersal studies - and have implications for the design of marine reserve networks. -
-
-
-
-
-

-
-
-
- -
-
- The constant increase of marine plastic pollution poses an - unprecedented risk to oceanic islands, which become increasingly - exposed to a hazard of which they have very little control. - Located in the Northeast Atlantic Ocean, the Macaronesia is - comprised by the Azores, Madeira, Canary Islands, and Cabo - Verde. Although past studies suggest that most plastic items - collected on these islands are from offshore regions, their - actual sources remain unclear to present date. As such, we focus - on the characterization of the potential sources and pathways of - plastic particles reaching the Macaronesia archipelagos. This is - achieved by combining modeled datasets for ocean currents, winds - and waves with a Lagrangian tool used to track virtual particles - released around the archipelagos for a 10-year period, making a - distinction between surface and submerged particles. Global - drifter trajectories are also assessed, selecting those that - intercept the archipelagos. Our results demonstrate that the - North Atlantic subtropical gyre is the most conspicuous feature - in particles and drifter trajectories. The Gulf Stream acts as - the main pathway for all archipelagos at a regional scale, - though with less significance to Cabo Verde. Surface particles - are connected to regional sources in a shorter timescale than - mixed particles, mainly because of the wind. Intercepting - high-windage particle trajectories are dominant at the center of - the North Atlantic subtropical gyre, demonstrating that - particles originating from the North Atlantic “garbage patch” - are most likely to intercept the archipelagos if considerably - exposed to the wind. Regarding the connectivity to sources, all - archipelagos are significantly exposed to areas of intensive - fishing activity, mainly those located in the Gulf Stream - (Azores), in international waters off the Portuguese coast - (Madeira and Canary Islands) and along the Northwestern African - coast (Cabo Verde). The east coasts of Central and North America - are the main sources of land-based particles reaching the - Azores, Madeira, and Canary Islands, whereas the Northwestern - African coast is the main source for land-based particles - reaching Cabo Verde. Our results demonstrate how vulnerable the - Macaronesian archipelagos are to marine plastic pollution, - highlighting the urgency for international cooperation to - mitigate the exposure of oceanic islands to marine plastic - pollution. -
-
-
-

-
- -
-
- Plastic is the most abundant type of marine litter and it is - found in all of the world’s oceans and seas, even in remote - areas far from human activities. It is a major concern because - plastics remain in the oceans for a long time. To address - questions that are of great interest to the international - community as it seeks to attend to the major sources of marine - plastics in the ocean, we use particle tracking simulations to - simulate the motions of mismanaged plastic waste and provide a - quantitative global estimate of (1) where does the marine litter - released into the ocean by a given country go and (2) where does - the marine litter found on the coastline of a given country come - from. The overall distribution of the modeled marine litter is - in good agreement with the limited observations that we have at - our disposal and our results illustrate how countries that are - far apart are connected via a complex web of ocean pathways (see - interactive website https://marinelitter.coaps.fsu.edu). The - tables summarizing the statistics for all world countries are - accessible from the supplemental information in .pdf or .csv - formats. -
-
-
-

-
- -
-
- The ability to provide rapid decision support and more precise - search area coordinates for rescuers to conduct search and - rescue operations at sea are of high impact value for marine and - maritime stakeholders. Search and rescue operations rely on - accurate information about metocean conditions to locate objects - in the ocean. These include local knowledge, operational ocean - and wind forecasts and empirical drift relationships between - ocean currents, ocean surface winds and the objects being - searched for. To provide more accurate decision support for - rescuers looking for persons or objects lost at sea, a virtual - particle tracking tool was combined with an empirical Leeway - drift model. The Lagrangian Ocean Search Targets (LOST) - application builds on a Lagrangian ocean analysis framework - which has been adapted to provide real-time estimates of the - positions of objects based on operational ocean and wind - forecasts. LOST incorporates the impact of ocean currents, - surface winds and stochastic motion, the latter being critical - in accounting for sub-grid scale processes that are not resolved - in the ocean and wind forecasts. This study assesses the - accuracy of LOST, demonstrating its feasibility as a decision - support tool for search and rescue operations by applying it to - three use cases in the South African regional ocean. These use - cases are real-life scenarios that highlight the value of - combining state-of-the-art ocean and wind forecasting systems - with Lagrangian ocean analyses frameworks and sub-grid scale - parameterisation to support global operational oceanography. -
-
-
-

-
- -
-
- Microplastic debris ending up at the sea surface has become a - known major environmental issue. However, how microplastic - particles move and when they sink in the ocean remains largely - unknown. Here, we model microplastic subject to biofouling - (algal growth on a substrate) to estimate sinking timescales and - the time to reach the depth where particles stop sinking. We - combine NEMO‐MEDUSA 2.0 output, that represents hydrodynamic and - biological properties of seawater, with a particle‐tracking - framework. Different sizes and densities of particles (for - different types of plastic) are simulated, showing that the - global distribution of sinking timescales is largely - size‐dependent as opposed to density‐dependent. The smallest - particles we simulate (0.1 μm) start sinking almost immediately - around the globe and their trajectories take the longest time to - reach their first sinking depth (relative to larger particles). - In oligotrophic subtropical gyres with low algal concentrations, - particles between 1 mm and 10 μm do not sink within the 90‐day - simulation time. This suggests that in addition to the - comparatively well‐known physical processes, biological - processes might also contribute to the accumulation of floating - plastic (of 1 mm–10 μm) in subtropical gyres. Particles of 1 μm - in the gyres start sinking largely due to vertical advection, - whereas in the equatorial Pacific they are more dependent on - biofouling. The qualitative impacts of seasonality on sinking - timescales are small, however, localised sooner sinking due to - spring algal blooms is seen. This study maps processes that - affect the sinking of virtual microplastic globally, which could - ultimately impact the ocean plastic budget. -
-
-
-

-
- -
-
- Global coastlines potentially contain significant amounts of - plastic debris, with harmful implications for marine and coastal - ecosystems, fisheries and tourism. However, the global amount, - distribution and origin of plastic debris on beaches and in - coastal waters is currently unknown. Here we analyse beaching - and resuspension scenarios using a Lagrangian particle transport - model. Throughout the first 5 years after entering the ocean, - the model indicates that at least 77% of positively buoyant - marine plastic debris (PBMPD) released from land-based sources - is either beached or floating in coastal waters, assuming no - further plastic removal from beaches or the ocean surface. The - highest concentrations of beached PBMPD are found in Southeast - Asia, caused by high plastic inputs from land and limited - off-shore transport, although the absolute concentrations are - generally overestimates compared to field measurements. The - modelled distribution on a global scale is only weakly - influenced by local variations in resuspension rates due to - coastal geomorphology. Furthermore, there are striking - differences regarding the origin of the beached plastic debris. - In some Exclusive Economic Zones (EEZ), such as the Indonesian - Archipelago, plastic originates almost entirely from within the - EEZ while in other EEZs, particularly remote islands, almost all - beached plastic debris arrives from remote sources. Our results - highlight coastlines and coastal waters as important reservoirs - of marine plastic debris and limited transport of PBMPD between - the coastal zone and the open ocean. -
-
-
-

-
- -
-
- The forecast of tropical cyclone (TC) intensity is a significant - challenge. In this study, we showcase the impact of strongly - coupled data assimilation with hypothetical ocean currents on - analyses and forecasts of Typhoon Hato (2017). Several - observation simulation system experiments were undertaken with a - regional coupled ocean-atmosphere model. We assimilated - combinations of (or individually) a hypothetical coastal current - HF radar network, a dense array of drifter floats and minimum - sea-level pressure. During the assimilation, instant updates of - many important atmospheric variables (winds and pressure) are - achieved from the assimilation of ocean current observations - using the cross-domain error covariance, significantly improving - the track and intensity analysis of Typhoon Hato. As compared to - a control experiment (with no assimilation), the error of - minimum pressure decreased by up to 13 hPa (4 hPa / 57 % on - average). The maximum wind speed error decreased by up to 18 - knots (5 knots / 41 % on average). By contrast, weakly coupled - implementations cannot match these reductions (10% on average). - Although traditional atmospheric observations were not - assimilated, such improvements indicate there is considerable - potential in assimilating ocean currents from coastal HF radar, - and surface drifters within a strongly coupled framework for - intense landfalling TCs. -
-
-
-

-
- -
-
- The variability of La Guajira upwelling system, in the - south-central Caribbean Sea, is strongly influenced by the - intensity and location of the atmospheric Caribbean Low-Level - Jet (CLLJ), a near-surface branch of the easterlies, as well as - by the regional ocean circulation. During favorable conditions - (i.e., strong easterlies blowing almost parallel to the coast), - upwelling is enhanced and a large amount of primary productivity - occurs in La Guajira area. In contrast, during relatively mild - wind conditions, the CLLJ is misaligned to the coast and the - Caribbean Counter Current (CCC, locally also known as the Darien - Current), which forms as a branch from the Panama-Colombia Gyre, - flows northeastward over the continental shelf advecting waters - from the southwestern Caribbean basin toward La Guajira. The CCC - has a clear signature at the surface layer that extends from the - Darien Gulf toward La Guajira peninsula during mild wind - periods, while disappears during the months of strong winds. The - direction and the magnitude of the easterlies, and more - specifically of the CLLJ, control the position and pathway of - the CCC, which extends more than 900 km in the southern - Caribbean Sea during May, June, August, September, and October. - The high concentration of chlorophyll-a at the sea surface - evidenced by satellite-based color images is semi-seasonally - modulated by the CLLJ, which during its relaxation phase allows - the irruption of the CCC toward the east up to La Guajira. -
-
-
-

-
- -
-
- Antarctic sea ice is prevalently seen as a major player in the - climate system, but it is also an important factor in polar - maritime safety. Remote sensing and forecasting of Southern - Ocean sea ice at time scales suitable for navigation and - research planning remain challenging. In this study, numerical - sea ice drift forecasts are assessed from the perspective of - informing shipping operations. A series of tests is performed to - ascertain whether an operational global ocean and sea ice model - and a simple free-drift model can provide accurate drift - estimates over short lead times. Both approaches are evaluated - against ice drift measurements from buoys deployed during two - research cruises in the Southern Ocean marginal ice zone during - winter and spring. The numerical forecast model was able to - forecast sea ice trajectories over 24 h with an average position - error of 16.6 km during winter and 9.2 km during spring. The - simpler free-drift model, using empirically optimised wind - scaling, returned an average position error of 15.9 and 9.3 km - during winter and spring respectively. Model skill for both the - dynamical and free-drift models is lower in winter than in - spring. Free-drift model skill appears linked with sea ice - consolidation, which may assist in determining when and where - this approach is fit for purpose. Lingering uncertainties - regarding the rheological representation of sea ice in the - dynamical model and the quality of the wind and ocean forcing - remain, potentially affecting model skill over tactical - navigation time frames. -
-
-
-

-
- -
-
- We study the vertical dispersion and distribution of negatively - buoyant rigid microplastics within a realistic circulation model - of the Mediterranean sea. We first propose an equation - describing their idealized dynamics. In that framework, we - evaluate the importance of some relevant physical effects: - inertia, Coriolis force, small-scale turbulence and variable - seawater density, and bound the relative error of simplifying - the dynamics to a constant sinking velocity added to a - large-scale velocity field. We then calculate the amount and - vertical distribution of microplastic particles on the water - column of the open ocean if their release from the sea surface - is continuous at rates compatible with observations in the - Mediterranean. The vertical distribution is found to be almost - uniform with depth for the majority of our parameter range. - Transient distributions from flash releases reveal a - non-Gaussian character of the dispersion and various diffusion - laws, both normal and anomalous. The origin of these behaviors - is explored in terms of horizontal and vertical flow - organization. -
-
-
-

-
- -
-
- The Tropical Atlantic Ocean has recently been the source of - enormous amounts of floating Sargassum macroalgae that have - started to inundate shorelines in the Caribbean, the western - coast of Africa and northern Brazil. It is still unclear, - however, how the surface currents carry the Sargassum, largely - restricted to the upper meter of the ocean, and whether observed - surface drifter trajectories and hydrodynamical ocean models can - be used to simulate its pathways. Here, we analyse a dataset of - two types of surface drifters (38 in total), purposely deployed - in the Tropical Atlantic Ocean in July, 2019. Twenty of the - surface drifters were undrogued and reached only ~8 cm into the - water, while the other eighteen were standard Surface Velocity - Program (SVP) drifters that all had a drogue centered around 15 - m depth. We show that the undrogued drifters separate more - slowly than the drogued SVP drifters, likely because of the - suppressed turbulence due to convergence in wind rows, which was - stronger right at the surface than at 15 m depth. Undrogued - drifters were also more likely to enter the Caribbean Sea. We - also show that the novel Surface and Merged Ocean Currents - (SMOC) product from the Copernicus Marine Environmental Service - (CMEMS) does not clearly simulate one type of drifter better - than the other, highlighting the need for further improvements - in assimilated hydrodynamic models in the region, for a better - understanding and forecasting of Sargassum drift in the Tropical - Atlantic. -
-
-
-

-
- -
-
- To identify barriers to transport in a fluid domain, community - detection algorithms from network science have been used to - divide the domain into clusters that are sparsely connected with - each other. In a previous application to the closed domain of - the Mediterranean Sea, communities detected by the Infomap - algorithm have barriers that often coincide with well‐known - oceanographic features. We apply this clustering method to the - surface of the Arctic and subarctic oceans and thereby show that - it can also be applied to open domains. First, we construct a - Lagrangian flow network by simulating the exchange of Lagrangian - particles between different bins in an icosahedral‐hexagonal - grid. Then, Infomap is applied to identify groups of - well‐connected bins. The resolved transport barriers include - naturally occurring structures, such as the major currents. As - expected, clusters in the Arctic are affected by seasonal and - annual variations in sea‐ice concentration. An important caveat - of community detection algorithms is that many different - divisions into clusters may qualify as good solutions. Moreover, - while certain cluster boundaries lie consistently at the same - location between different good solutions, other boundary - locations vary significantly, making it difficult to assess the - physical meaning of a single solution. We therefore consider an - ensemble of solutions to find persistent boundaries, trends and - correlations with surface velocities and sea‐ice cover. -
-
-
-

-
- -
-
- The detection of finite-time coherent particle sets in - Lagrangian trajectory data using data clustering techniques is - an active research field at the moment. Yet, the clustering - methods mostly employed so far have been based on graph - partitioning, which assigns each trajectory to a cluster, i.e. - there is no concept of noisy, incoherent trajectories. This is - problematic for applications to the ocean, where many small - coherent eddies are present in a large fluid domain. In - addition, to our knowledge none of the existing methods to - detect finite-time coherent sets has an intrinsic notion of - coherence hierarchy, i.e. the detection of finite-time coherent - sets at different spatial scales. Such coherence hierarchies are - present in the ocean, where basin scale coherence coexists with - smaller coherent structures such as jets and mesoscale eddies. - Here, for the first time in this context, we use the - density-based clustering algorithm OPTICS (Ankerst et al., 1999) - to detect finite-time coherent particle sets in Lagrangian - trajectory data. Different from partition based clustering - methods, OPTICS does not require to fix the number of clusters - beforehand. Derived clustering results contain a concept of - noise, such that not every trajectory needs to be part of a - cluster. OPTICS also has a major advantage compared to the - previously used DBSCAN method, as it can detect clusters of - varying density. Further, clusters can also be detected based on - density changes instead of absolute density. Finally, OPTICS - based clusters have an intrinsically hierarchical structure, - which allows to detect coherent trajectory sets at different - spatial scales at once. We apply OPTICS directly to Lagrangian - trajectory data in the Bickley jet model flow and successfully - detect the expected vortices and the jet. The resulting - clustering separates the vortices and the jet from background - noise, with an imprint of the hierarchical clustering structure - of coherent, small scale vortices in a coherent, large-scale, - background flow. We then apply our method to a set of virtual - trajectories released in the eastern South Atlantic Ocean in an - eddying ocean model and successfully detect Agulhas rings. At - larger scale, our method also separates the eastward and - westward moving parts of the subtropical gyre. We illustrate the - difference between our approach and partition based k-Means - clustering using a 2-dimensional embedding of the trajectories - derived from classical multidimensional scaling. We also show - how OPTICS can be applied to the spectral embedding of a - trajectory based network to overcome the problems of k-Means - spectral clustering in detecting Agulhas rings. -
-
-
-

-
- -
-
- Novel 3-D passive particle tracking experiments were performed - in the northwest Atlantic to elucidate connectivity among areas - closed to protect vulnerable marine ecosystems. We examined (1) - the degree of vertical movement of particles released at - different depths and locations; (2) the location of potential - source populations for the deep-sea taxa protected by the - closures; and (3) the degree of functional connectivity. A - long-term oceanographic dataset (EN4) was queried to - characterize the temperature and salinity regimes in each of the - closed areas as a basis for interpreting recently published - climate change projections. Using the Parcels Lagrangian - particle tracking framework and the BNAM hydrodynamic model, we - found enhanced connectivity over previously developed 2-D models - and unexpected, current-driven, strong (to a maximum of about - 1340 m) downward displacement at depth (450, 1000 and 2250 m), - with weaker upward displacement except for the release depth of - 2250 m which showed upward movement of 955 m with a drift - duration of 3 months. The current velocities create down-stream - interdependence among closed areas and allow redundancy to - develop in some of the areas of the network, with some of the - larger areas also showing retention. Source populations for - sponges in the upstream closure are likely in adjacent waters of - the Canadian continental shelf. Collectively this information - can be used to inform management decisions related to the size - and placement of these closed areas, and vertical velocity - surfaces have potential for use in species distribution modeling - of benthic species and habitats. -
-
-
-

-
- -
-
- Understanding mechanisms of tropical Pacific decadal variability - (TPDV) is of high importance for differentiating between natural - climate variability and human induced climate change as this - region sustains strong global teleconnections. Here, we use an - ocean general circulation model along with a Lagrangian tracer - simulator to investigate the advection of density compensated - temperature anomalies (“spiciness mechanism”) as a potential - contributor to TPDV during the 1980–2016 period. Consistent with - observations, we find the primary regions of spiciness - generation in the eastern subtropics of each hemisphere. Our - results indicate that 75% of the equatorial subsurface water - originates in the subtropics, of which two thirds come from the - Southern hemisphere. We further show two prominent cases where - remotely generated spiciness anomalies are advected to the - equatorial Pacific, impacting subsurface temperature. The - relative contribution of Northern versus Southern Hemisphere - prominence and/or interior versus western boundary pathways - depends on the specific event. The anomalously warm case largely - results from advection via the Southern hemisphere interior - (65%), while the anomalously cold case largely results from - advection via the Northern hemisphere western boundary (48%). - The relatively slow travel times from the subtropics to the - equator (> 4 years) suggests that these spiciness anomalies - underpin a potentially predictable contribution to TPDV. - However, not all decadal peaks in equatorial spiciness can be - explained by remotely generated spiciness anomalies. In those - cases, we propose that spiciness anomalies are generated in the - equatorial zone through changes in the proportion of - Northern/Southern hemisphere source waters due to their - different mean spiciness distribution. -
-
-
-

-
- -
-
- Connectivity is a fundamental process driving the persistence of - marine populations and their adaptation potential in response to - environmental change. In this study, we analysed the population - genetics of two morphologically highly similar deep-sea sponge - clades (Phakellia hirondellei and the ‘Topsentia-and-Petromica’ - clade, (hereafter referred to as ‘TaP clade’)) at three - locations in the Cantabrian Sea and simultaneously assessed the - corresponding host microbiome by 16S rRNA gene sequencing. A - virtual particle tracking approach (Lagrangian modelling) was - applied to assess oceanographic connectivity in the study area. - We observed overall genetic uniformity for both sponge clades. - Notably, subtle genetic differences were observed for sponges of - the TaP clade and also their microbiomes between a canyon and - bank location, < 100 km apart and with the same depth range. - The Lagrangian model output suggests a strong retention of - larvae in the study area with variable inter-annual connectivity - via currents between the three sampling regions. We conclude - that geologic features (canyons) and the prevailing ocean - currents may dictate sponge holobiont connectivity and that - differentiation can emerge even on small spatial scales. -
-
-
-

-
- -
-
- Search and find mission in ocean environment is a none trivial - operation given the amount of random parameters associated with - it. The uncertain and dynamic aspects related to ocean current - movement make the trajectory prediction of drifting lost object - onto sea water a very complicated task. In this work we present - a novel lost target searching algorithm based on Recursive Area - Clustering and target trajectory predication in ocean - environment. Based on the widely known GlobCurrent v2 dataset - which model the drifting of ocean surface current using - satellite sensory data combined with mathematical and simulation - modelling, we propose a regression algorithm based on our - Recursive Area Clustering algorithm that we have developed - previously to determine the strategic zones (weight centers) - characterizing the high density areas extracted from drifting - target history. Given those weight centers, we predict the - object trajectory through refined regression. The predicted lost - object trajectory is used to plan the path of UAV search - mission. The model developed has a significant impact as we have - tested our strategy in a scenario for searching an area covering - 68517 km, we have shown that 78% of the time, the lost object - can be found within 32 km distance of the predicted trajectories - limiting the significant search area to be about 5% of the whole - searched area. -
-
-
-

-
- -
-
- A valuable analogue for assessing Earth’s sensitivity to warming - is the Last Interglacial (LIG; 129- 116 kyr), when global - temperatures (0 to +2CC) and mean sea level (+6 to 11 m) were - higher than today. The direct contribution of warmer conditions - to global sea level (thermosteric) are uncertain. We report here - a global network of LIG sea surface temperatures (SST) obtained - from various published temperature proxies (e.g. faunal/floral - assemblages, Mg/Ca ratios of calcareous plankton, alkenone - UK’37). We summarise the current limitations of SST - reconstructions for the LIG and the spatial temperature features - of a naturally warmer world. Because of local δ18O seawater - changes, uncertainty in the age models of marine cores, and - differences in sampling resolution and/or sedimentation rates, - the reconstructions are restricted to mean conditions. To avoid - bias towards individual LIG SSTs based on only a single (and - potentially erroneous) measurement or a single interpolated data - point, here we report average values across the entire LIG. Each - site reconstruction is given as an anomaly relative to - 1981-2010, corrected for ocean drift and where available, - seasonal estimates provided (189 annual, 99 December-February, - and 92 June-August records). To investigate the sensitivity of - the reconstruction to high temperatures, we also report maximum - values during the first five millennia of the LIG (129-124 kyr). - We find mean global annual SST anomalies of 0.2 ± 0.1C averaged - across the LIG and an early maximum peak of 0.9 ± 0.1C - respectively. The global dataset provides a remarkably coherent - pattern of higher SST increases at polar latitudes than in the - tropics (demonstrating the polar amplification of surface - temperatures during the LIG), with comparable estimates between - different proxies. Polewards of 45 ̊ latitude, we observe annual - SST anomalies averaged across the full LIG of >0.8 ± 0.3C in - both hemispheres with an early maximum peak of >2.1 ± 0.3C. - Using the reconstructed SSTs suggests a mean LIG global - thermosteric sea level rise of 0.08 ± 0.1 m and a peak - contribution of 0.39 ± 0.1 m respectively (assuming warming - penetrated to 2000 m depth). The data provide an important - natural baseline for a warmer world, constraining the - contributions of Greenland and Antarctic ice sheets to global - sea level during a geographically widespread expression of high - sea level, and can be used to test the next inter-comparison of - models for projecting future climate change. The dataset - described in this paper, including summary temperature and - thermosteric sea-level reconstructions, are available at - https://doi.pangaea.de/10.1594/PANGAEA.904381 (Turney et al., - 2019). -
-
-
-

-
- -
-
- The Mediterranean Sea is characterized by a relatively strong - west to east salinity gradient, which makes it an area suitable - to test the effect of salinity on foraminiferal shell - geochemistry. We collected living specimens of the planktonic - foraminifer Globigerinoides ruber (white) to analyse the - relation between element/Ca ratios, stable oxygen isotopes of - their shells and surface seawater salinity, isotopic composition - and temperature. The oxygen isotopes of sea surface water - correlate with salinity in the Mediterranean also during winter, - when sampled for this study. Sea water oxygen and hydrogen - isotopes are positively correlated in both the eastern and - western Mediterranean Sea, though especially in the eastern part - the relationship differs from values reported previously for - that area. The slope between salinity and seawater oxygen - isotopes is lower than previously published. Still, despite the - rather modest slope, seawater and foraminiferal carbonate oxygen - isotopes are correlated in our dataset although with large - residuals and high residual variability. This scatter can be due - to either biological variability in vital effects or - environmental variability. Numerical models backtracking - particles show ocean current driven mixing of particles of - different origin might dampen sensitivity and could result in an - offset caused by horizontal transport. Results show that Na/Ca - is positively correlated to salinity and independent of - temperature. Foraminiferal Mg/Ca increases with temperature, as - expected, and in line with earlier calibrations, also in the - high salinity environment. By using living foraminifera during - winter, the previously established Mg/Ca-temperature calibration - is extended to temperatures below 18 °C, which is a fundamental - prerequisite of using single foraminifera for reconstructing - past seasonality. -
-
-
-

-
- -
-
- The basinwide surface transport of tracers such as heat, - nutrients and plastic in the North Atlantic Ocean is organized - into large scale flow structures such as the Western Boundary - Current and the Subtropical and Subpolar Gyres. Being able to - identify these features from drifter data is important for - studying tracer dispersal, but also to detect changes in the - large scale surface flow due to climate change. We propose a new - and conceptually simple method to detect groups of trajectories - with similar dynamical behaviour from drifter data using network - theory and normalized cut spectral clustering. Our network is - constructed from conditional bin-drifter probability - distributions and naturally handles drifter trajectories with - data gaps and different lifetimes. The eigenvalue problem of the - respective Laplacian can be replaced by a singular value - decomposition of a related sparse data matrix. The construction - of this matrix scales with O(NM + Nτ), where N is the number of - particles, M the number of bins and τ the number of time steps. - The concept behind our network construction is rooted in a - particle's symbolic itinerary derived from its trajectory and a - state space partition, which we incorporate in its most basic - form by replacing a particle's itinerary by a probability - distribution over symbols. We represent these distributions as - the links of a bipartite graph, connecting particles and - symbols. We apply our method to the periodically driven - double-gyre flow and successfully identify well-known features. - Exploiting the duality between particles and symbols defined by - the bipartite graph, we demonstrate how a direct low-dimensional - coarse definition of the clustering problem can still lead to - relatively accurate results for the most dominant structures, - and resolve features down to scales much below the coarse - graining scale. Our method also performs well in detecting - structures with incomplete trajectory data, which we demonstrate - for the double-gyre flow by randomly removing data points. We - finally apply our method to a set of ocean drifter trajectories - and present the first network-based clustering of the North - Atlantic surface transport based on surface drifters, - successfully detecting well-known regions such as the Subpolar - and Subtropical Gyres, the Western Boundary Current region and - the Carribean Sea. -
-
-
-

-
- -
-
- A large percentage of global ocean plastic waste enters the - northern hemisphere Indian Ocean (NIO). Despite this, it is - unclear what happens to buoyant plastics in the NIO. Because the - subtropics in the NIO is blocked by landmass, there is no - subtropical gyre and no associated subtropical garbage patch in - this region. We therefore hypothesise that plastics "beach" and - end up on coastlines along the Indian Ocean rim. In this paper, - we determine the influence of beaching plastics by applying - different beaching conditions to Lagrangian particle tracking - simulation results. Our results show that a large amount of - plastic likely ends up on coastlines in the NIO, while some - crosses the equator into the southern hemisphere Indian Ocean - (SIO). In the NIO, the transport of plastics is dominated by - seasonally reversing monsoonal currents, which transport - plastics back and forth between the Arabian Sea and the Bay of - Bengal. All buoyant plastic material in this region beaches - within a few years in our simulations. Countries bordering the - Bay of Bengal are particularly heavily affected by plastics - beaching on coastlines. This is a result of both the large - sources of plastic waste in the region, as well as ocean - dynamics which concentrate plastics in the Bay of Bengal. During - the intermonsoon period following the southwest monsoon season - (September, October, November), plastics can cross the equator - on the eastern side of the NIO basin into the SIO. Plastics that - escape from the NIO into the SIO beach on eastern African - coastlines and islands in the SIO or enter the subtropical SIO - garbage patch. -
-
-
-

-
- -
-
- Estimates of plastic inputs into the ocean are orders of - magnitude larger than what is found in the surface waters. This - can be due to discrepancies in the sources of plastic released - into the ocean, but can also be explained due to the fact that - it is not well known what the most dominant sinks of marine - plastics are, and on what time scales these operate. To get a - better understanding on possible sources and sinks, an inverse - modelling methodology is presented here for a Lagrangian ocean - model, estimating floating plastic quantities in the - Mediterranean Sea. Field measurements of plastic concentrations - in the Mediterranean are used to inform parametrizations - defining various sources of marine plastics, and removal of - plastic particles due to beaching and sinking. The parameters of - the model are found using inverse modelling, by comparison of - model results and measurements of floating plastic - concentrations. Time scales for the sinks are found, and likely - sources of plastics can be ranked in importance. A new mass - balance is made for floating plastics in the Mediterranean: for - 2015 there is an estimated input of 2,100-3,400 tonnes, and of - plastics released since 2006, about 170-420 tonnes remain afloat - in the surface waters, 49-63% ended up on coastlines, and 37-51% - have sunk down. -
-
-
-

-
- -
-

-
- -
-
- Aim: Population connectivity of benthic marine organisms depends - strongly on planktonic larval dispersal and is controlled by - geographic distance and oceanographic structure. We examine - isolation by distance versus resistance to barriers (ocean - current boundaries) against a background of post‐glacial habitat - expansion in a small benthic fish of the Adriatic Sea. -

- Location: Adriatic Sea, Eastern Mediterranean. -

- Taxon: Tripterygion tripteronotum. -

- Methods: We performed population genetic analyses using - mitochondrial control region sequences of 550 individuals from - 25 locations sampled along the Eastern Adriatic coast. - Investigations of population structure included differentiation - tests, cluster analyses and distance‐based redundancy analysis. - We then ran Lagrangian simulations of passive larval drift to - examine correlations among population structure, geographic - distance and the Adriatic gyre system. To test for signatures of - a post‐glacial range expansion, we modelled the demographic - history of the populations and examined the geographic - distribution of genetic diversity. -

- Results: Genetic population structure corresponded to the - Adriatic gyres without additional effect of geographic distance. - Inference of northward‐biased gene flow between the northern and - the Istrian gyre was consistent with simulated trajectories of - passive drift, whereas the phylogeographic break coinciding with - the boundary between the Central and the Northern Adriatic gyre - was stronger than predicted by drift simulations. Genetic - connectivity of populations within gyres was high. Genetic - signatures of population expansion were consistent with a rapid - post‐glacial recolonization of the northern Adriatic. -

- Main conclusions: The combination of dense sampling and passive - drift simulation allowed us to distinguish among effects of - geographic distance, oceanographic features and - palaeoenvironmental changes on current population structure. - Comparisons between realized and potential connectivity - illustrate the value of integrating different data sources to - understand population structure and inform conservation - planning. -
-
-
-

-
- -
-
- Submesoscale coherent vortices (SCVs) are numerous in - high‐resolution numerical simulations, but their observations - are scarce. Among the few in situ available measurements of - SCVs, a vast majority concern anticyclones. No cyclonic SCV with - large dynamical Rossby number (|ζ /f | > 1) has ever been - sampled. This suggested that such small cyclones may lack - robustness. Here, we present in situ measurements of an intense - cyclonic SCV in the Arabian Sea. This eddy lay at 600 m depth, - with a Rossby number and a dynamical Rossby number |ζ /f | > - 1.5. This cyclone was most likely generated at the mouth of the - Gulf of Aden. It trapped and advected Red Sea Water, from there - on. This highlights the role of deep SCVs in the spreading of - salty waters across the Arabian Sea. -
-
-
-

-
- -
-
- Here we present an assessment of eddy activity in a 3,500 × - 2,000 km region of the North Pacific. Eddies were identified and - tracked within a numerical simulation that used the - Massachusetts Institute of Technology general circulation model - and an eddy characterization algorithm. Spatially, eddy births - were more frequent: (1) nearshore (cyclones) and offshore - (anticyclones) on the windward side of the main Hawai‘ian - Islands; (2) in patches of cyclones and anticyclones that - resembled the dipole structure of wind stress curl along the - islands’ leeward side; and (3) in zonal patches of eddies of - both polarities west and north of the islands. Temporally, high - eddy activities occurred in spring. There was a meridional - distribution of eddy lifespans, which increased northward. - Cyclones were more abundant, longer‐lived, smaller, and more - nonlinear. Reef fish spawning locations in Hawai‘i coincide with - the regions of high eddy activity, with nonlinear eddies - responsible for high larval retention. -
-
-
-

-
- -
-
- The knowledge gap on the early life-history of sea turtles - during the “lost years” continues to hinder research and - conservation of this critical life stage when mortality rates - are the highest. An oceanic model was used in combination with a - Lagrangian particle tracking framework to simulate and identify - potential post-hatchling dispersal trajectories of loggerhead - and leatherback turtles in the South Western Indian Ocean. The - study aimed to investigate the effect of hatchling swimming - behaviour on hatchling dispersal and survival probability. To - our knowledge, this study provides the first estimate of neonate - sea turtle dispersal in the SWIO, by combining a particle - tracking model with in situ hatchling behavioural data. The - model revealed that most virtual hatchlings are transported - south-westward in the Agulhas Current with three distinct final - locations after a year-long si- mulation (each zone comprising - on average > 20% of the total amount of particles): the - Agulhas Return, the SE Atlantic and the Southern Ocean zones. - However, because loggerhead hatchlings are less strong swimmers - compared to leatherbacks, they can be advected northward in the - near-shore coastal current. Simulations re- vealed that initial - active swimming (frenzy) as well as variability in oceanic - conditions strongly influenced dispersal of virtual hatchlings. - Furthermore, variability in oceanic conditions dispersed virtual - hatchlings into different areas where threats, like fisheries - bycatch, might also influence their survival. Lastly, the - results of this study have potentially broad implications for - climate change if turtles adapt by nesting earlier/later during - the nesting season or further south which may influence - hatchling locomotor performance and ultimately survival at early - life stages. -
-
-
-

-
- -
-
- Predicting the trajectories of buoyant objects drifting at the - ocean surface is important for a variety of different - applications. To minimize errors in predicted trajectories, the - dominant transport mechanisms have to be considered. In addition - to the background surface currents (i.e., geostrophic, tidal, - baroclinic currents), the wind-driven drift current can have a - significant influence on the dynamics of buoyant objects. The - drift current consists of two components: Stokes drift and a - wind-induced shear current. The drift current has a strong - vertical profile that can have a large influence on the - transport of buoyant objects. However, few practical methods - exist that consider the vertical profile of the drift current - when predicting particle pathways on the ocean surface. The aim - of this paper is to introduce a depth-dependent drift current - correction factor (“drift factor”). We test the usefulness of - this drift factor by simulating the transport of two types of - ocean surface drifters, released simultaneously within the - coverage of a high-frequency ocean radar (HFR) system. Our - results show velocity differences between the two types of - drifters and the HFR measured ocean surface currents. We suggest - that these differences are the result of the drift current - vertical profile. Our particle tracking simulations provide an - illustrative example, indicating the importance of accounting - for a drift factor that takes the variation of the drift current - with depth into account. -
-
-
-

-
- -
-
- A new estimate of Agulhas leakage transport is calculated using - profiling floats and drifters. Since Richardson's seminal - estimate of 15 Sv in 2007, the number of floats and drifters - passing through the Agulhas Current has quadrupled. Within - uncertainties we find the same leakage percentages as - Richardson, with 34% of drifters leaking at the surface and 21% - of floats leaking at 1,000 m depth. We find that the drifters - tend to follow a northward leakage pathway via the Benguela - Current compared to the northwestward leakage pathway of the - floats along the Agulhas Ring corridor. We simulate the isobaric - and profiling behavior of the floats and drifters using two high - resolution models and two offline Lagrangian tracking tools, - quantifying for the first time the sampling biases associated - with the observations. We find that the isobaric bias cannot be - robustly simulated but likely causes an underestimate of - observed leakage by one or two Sverdrups. The profiling behavior - of the floats causes no significant bias in the leakage. Fitting - a simulated vertical leakage profile to the observed leakage - percentages from the floats and drifters and using the mean - Agulhas transport observed by a moored array at 34°S we find an - improved Agulhas leakage transport of 21.3 Sv, with an estimated - error of 4.7 Sv. Our new leakage transport is higher primarily - because we account for leakage at depths down to 2,000 m, while - Richardson considered only the top 1,000 m of the water column. -
-
-
-

-
- -
-
- Transport of larvae by ocean currents is an important dispersal - mechanism for many species. The timing and location of spawning - can have a large influence on settlement location. Shifts in the - known spawning habitat of fish, whether due to climate or the - discovery of new spawning stock, can influence the distribution - of juveniles and our understanding of connectivity. The - globally‐distributed species; Pomatomus saltatrix, is one such - example where a previously unrecognised summer spawning event - and a more southern latitudinal extent was recently reported for - the southwest Pacific population. Although restrictions are in - place to protect the traditional spawning event, the importance - of the newly recognised summer spawning event is uncertain. Here - we investigate larval dispersal of P. saltatrix using particle - tracking simulations to identify the contributions of the - different spawning events to settlement. By modelling dispersal - of larvae released in northern and mid‐latitude regions over the - Austral spring and summer we show that the newly recognised - mid‐latitude summer spawning event contributes over 50% of the - larvae reaching southern latitudes. This is due to a reduced - (1‐2 d) pelagic larval duration (associated with temperature), - resulting in reduced larval mortality, and the seasonal (summer) - strengthening of the East Australian Current (EAC) transporting - particles ~50km further south. These findings demonstrate that - in dynamic boundary current systems such as the EAC, the final - settlement location of larvae that are transported by ocean - currents can vary considerably depending on the timing and - location of spawning and that multiple spawning events are - important for maximum dispersal. -
-
-
-

-
- -
-
- Robust predictions of future changes in global biogeochemical - cycling require an understanding of how microorganisms adapt to - stressful and changing environments. In the ocean, rates of - adaptation will be a function of both evolutionary timescales - and physical dynamics. However, little is known about this - interaction. We examined evolutionary dynamics of marine - microbes by combining a model of microbial adaptation with - varying selection pressures with a high-resolution ocean - circulation model. A trade-off emerged between two evolutionary - strategies: (i) ability to adapt plastically to short-term - environmental fluctuations with delayed genetic adaptation and - (ii) more rapid genetic adaptation with limited response to - short-term environmental fluctuations. This trade-off determines - evolutionary timescales and provides a foundation for - understanding distributions of microbial traits and - biogeochemistry. -
-
-
-

-
- -
-
- On 7 August 2019, a 195 km2 raft of andesitic pumice was - produced at 200 m below sea level at an unnamed submarine - volcano in the Tonga Islands (Southwest Pacific Ocean). Drifting - chiefly westwards, the raft reached the Fiji Islands on the 19 - September. Yachts that crossed the raft as early as two days - post‐eruption provided an outstanding dataset of raft - characteristics and pristine samples. Further, exceptional - tracking of raft dispersal by satellite images allow us to - contrast virtual particle tracking methods with ocean model - currents to explore the relative influence of surface currents, - wind, and wave action on pumice flotsam dispersal over up to two - years. Attenuation of ocean waves by large and compact pumice - rafts appears to reduce the effect of Stokes drift. The coupling - of real‐time satellite observations with oceanographic - Lagrangian simulations allows near‐real time forecasting for - global maritime hazard mitigation. -
-
-
-

-
- -
-
- The north Atlantic subpolar gyre (SPG) has been widely - implicated as the source of large-scale changes in the subpolar - marine environment. However, inconsistencies between indices of - SPG-strength have raised questions about the active role - SPG-strength and size play in determining water properties in - the eastern subpolar North Atlantic (ENA). Here, by analyzing - various SPG indices derived from observations and a global - coupled model, we show that the choice of the SPG index dictates - the interpretation of SPG strength-salinity relationship in the - ENA. Variability in geostrophic currents derived from observed - hydrography and model based Lagrangian trajectories reveal zonal - shifts of advective pathways in the ENA and meridional shifts in - the western intergyre region. Such shifts in advective pathways - are manifestations of variability in the size and strength of - the SPG, and they impact salinity by modulating the proportion - of subpolar and subtropical waters reaching the ENA. SPG indices - based on subsurface density and principal component analysis of - sea surface height variability capture these shifts in advective - pathways, and are therefore best suited to describe SPG-salinity - relationship in the ENA. Our results establish the dynamical - constraints on the choice of the SPG index and emphasize that - SPG indices should be cautiously interpreted. -
-
-
-

-
- -
-
- To better predict how populations and communities respond to - climatic temperature variation, it is necessary to understand - how the shape of the response of fitness-related traits to - temperature evolves (the thermal performance curve). Currently, - there is disagreement about the extent to which the evolution of - thermal performance curves is constrained. One school of thought - has argued for the prevalence of thermodynamic constraints - through enzyme kinetics, whereas another argues that adaptation - can—at least partly—overcome such constraints. To shed further - light on this debate, we perform a phylogenetic meta-analysis of - the thermal performance curve of growth rate of phytoplankton—a - globally important functional group—, controlling for potential - environmental effects. We find that thermodynamic constraints - have a minor influence on the shape of the curve. In particular, - we detect a very weak increase of the maximum curve height with - the temperature at which the curve peaks, suggesting a weak - “hotter-is-better” constraint. Also, instead of a constant - thermal sensitivity of growth across species, as might be - expected from strong constraints, we detect phylogenetic signal - in this as well as all curve parameters. Our results suggest - that phytoplankton thermal performance curves adapt to thermal - environments largely in the absence of hard thermodynamic - constraints. -
-
-
-

-
- -
-
- Floating plastic debris is an increasing source of pollution in - the world's oceans. Numerical simulations using models of ocean - currents give insight into the transport and distribution of - microplastics in the oceans, but most simulations do not account - for the oscillating flow caused by global barotropic tides. - Here, we investigate the influence of barotropic tidal currents - on the transport and accumulation of floating microplastics, by - numerically simulating the advection of virtual plastic - particles released all over the world's oceans and tracking - these for 13 years. We use geostrophic and surface Ekman - currents from GlobCurrent and the currents caused by the four - main tidal constituents (M2, S2, K1, and O1) from the FES model. - We analyze the differences between the simulations with and - without the barotropic tidal currents included, focusing on the - open ocean. In each of the simulations, we see that microplastic - accumulates in regions in the subtropical gyres, which is in - agreement with observations. The formation and location of these - accumulation regions remain unaffected by the barotropic tidal - currents. However, there are a number of coastal regions where - we see differences when the barotropic tidal currents are - included. Due to uncertainties of the model in coastal regions, - further investigation is required in order to draw conclusions - in these areas. Our results suggest that, in the global open - ocean, barotropic tidal currents have little impact on the - transport and accumulation of floating microplastic and can thus - be neglected in simulations aimed at studying microplastic - transport in the open ocean. -
-
-
-

-
- -
-
- We illustrate relationships between classical kernel-based - dimensionality reduction techniques and eigendecompositions of - empirical estimates of reproducing kernel Hilbert space - operators associated with dynamical systems. In particular, we - show that kernel canonical correlation analysis (CCA) can be - interpreted in terms of kernel transfer operators and that it - can be obtained by optimizing the variational approach for - Markov processes score. As a result, we show that coherent sets - of particle trajectories can be computed by kernel CCA. We - demonstrate the efficiency of this approach with several - examples, namely, the well-known Bickley jet, ocean drifter - data, and a molecular dynamics problem with a time-dependent - potential. Finally, we propose a straightforward generalization - of dynamic mode decomposition called coherent mode - decomposition. Our results provide a generic machine learning - approach to the computation of coherent sets with an objective - score that can be used for cross-validation and the comparison - of different methods. While coherent sets of particles are - common in dynamical systems, they are notoriously challenging to - identify. In this article, we leverage the combination of a - suite of methods designed to approximate the eigenfunctions of - transfer operators with kernel embeddings in order to design an - algorithm for detecting coherent structures in Langrangian data. - It turns out that the resulting method is a well-known technique - to analyze relationships between multidimensional variables, - namely, kernel canonical correlation analysis (CCA). Our - algorithm successfully identifies coherent structures in several - diverse examples, including oceanic currents and a molecular - dynamics problem with a moving potential. Furthermore, we show - that a natural extension of our algorithm leads to a coherent - mode decomposition (CMD), a counterpart to dynamic mode - decomposition (DMD). -
-
-
-

-
- -
-
- The tracking of virtual particles is one of the main numerical - tools to understand the global dispersion of marine plastic - debris and has been successful in explaining the global-scale - accumulation patterns of surface microplastic, often called - `garbage patches'. Yet, the inherent inaccuracies in plastic - input scenarios and ocean circulation model results produce - uncertainties in particle trajectories, which amplify due to the - chaotic property of the surface ocean flow. Within this chaotic - system, the subtropical `garbage patches' correspond to the - attractor. These facts make the large scale surface ocean - circulation a mixing dynamical system, which means that the - information of a particle's initial location is lost over time. - We use mixing entropy and Markov chain mixing of the transfer - operator associated with surface ocean transport to quantify the - time scales of mixing for the global surface ocean in each - subtropical basin. In the largest parts of all basins we find - mixing times in the order of or below 10 years, which is lower - than typical simulation times for surface plastic transport - simulations. Maximum mixing times of more than 10 years are - found in some parts of the North and South Pacific. Our results - have important implications for global dispersion modelling of - floating materials on the basin scale: precise initial - information has little relevance for long term simulations, and - there is a temporal limit after which the backtracking of - particles is not meaningful any more. -
-
-
-

-
- -
-
- The Galápagos Archipelago and Galápagos Marine Reserve lie - 1000 km off the coast of Ecuador and are among the world's most - iconic wildlife refuges. However, plastic litter is now found - even in this remote island archipelago. Prior to this study, the - sources of this plastic litter on Galápagos coastlines were - unidentified. Local sources are widely expected to be small, - given the limited population and environmentally conscious - tourism industry. Here, we show that remote sources of plastic - pollution are also fairly localised and limited to nearby - fishing regions and South American and Central American - coastlines, in particular northern Peru and southern Ecuador. - Using virtual floating plastic particles transported in - high-resolution ocean surface currents, we analysed the plastic - origin and fate using pathways and connectivity between the - Galápagos region and the coastlines as well as known fishery - locations around the east Pacific Ocean. We also analysed how - incorporation of wave-driven currents (Stokes drift) affects - these pathways and connectivity. We found that only virtual - particles that enter the ocean from Peru, Ecuador, and (when - waves are not taken into account) Colombia can reach the - Galápagos region. It takes these particles a few months to - travel from their coastal sources on the American continent to - the Galápagos region. The connectivity does not seem to vary - substantially between El Niño and La Niña years. Identifying - these sources and the timing and patterns of the transport can - be useful for identifying integrated management opportunities to - reduce plastic pollution from reaching the Galápagos - Archipelago. -
-
-
-

-
- -
-
- Buoyant microplastic in the ocean can be submerged to deeper - layers through biofouling and the consequent loss of buoyancy or - by wind induced turbulent mixing at the ocean surface. Yet the - fact that particles in deeper layers are transported by currents - that are different from those at the surface has not been - explored so far. We compute 10‐year trajectories of 1 million - virtual particles with the Parcels framework for different - particle advection scenarios to investigate the effect of - near‐surface currents on global particle dispersal. We simulate - the global‐scale transport of passive microplastic for (i) - particles constrained to different depths from the surface to - 120 m depth, (ii) particles that are randomly displaced in the - vertical with uniform distribution, (iii) particles subject to - surface mixing and (iv) for a 3D passive advection model. Our - results show that the so called 'garbage patches' become more - 'leaky' in deeper layers, and completely disappear at about 60 m - depth. At the same time, subsurface currents can transport - significant amounts of microplastic from subtropical and - subpolar regions to polar regions, providing a possible - mechanism to explain why plastic is found in these remote areas. - Finally, we show that the final distribution in the surface - turbulent mixing scenario with particle rise speed wr=0.003 m/s - is very similar to the distribution of plastic at the surface. - This demonstrates that it is not necessary to incorporate - surface mixing for global long‐term simulations, although this - might change on more local scales and for particles with lower - rise speeds. -
-
-
-

-
- -
-
- In an effort to increase purse seine fishing efficiency for - tropical tunas, over 30,000 drifting Fish Aggregating Devices - (dFADs) are deployed every year by fishers in the Western and - Central Pacific Ocean (WCPO). The use of dFADs also impacts - ecosystems, in particular through marine pollution and dFAD - beaching. This paper presents the first estimate of dFAD - beaching events in the WCPO (>1300 in 2016–2017) and their - distribution. Lagrangian simulations of virtual dFADs, released - subject to contrasting deployment distributions, help us - determine the relative importance of operational versus - environmental drivers of dFADs drifting to beaching areas. The - highest levels of beaching, occurring on Papua New Guinea and - Solomon Islands, are likely a result of the prevailing westward - oceanic circulation and subsequent local processes driving dFADs - towards land. Similarly, high beaching rates in Tuvalu appear to - be due to the general circulation of the WCPO. In contrast, - beaching in Kiribati Gilbert Islands appear to be more strongly - related to dFAD deployment strategy. These findings indicate - that reducing beaching events via changes in deployment - locations may be difficult. As such, management approaches - combining dFAD deployment limits, the use of biodegradable - dFADs, recoveries at-sea close to sensitive areas and/or beached - dFAD removal should be considered. -
-
-
-

-
- -
-
- With the increasing amount of data produced by numerical ocean - models, so increases the need for efficient tools to analyse - these data. One of these tools is Lagrangian ocean analysis, - where a set of virtual particles are released and their dynamics - is integrated in time based on fields defining the ocean state, - including the hydrodynamics and biogeochemistry if available. - This popular methodology needs to adapt to the large variety of - models producing these fields at different formats. This is - precisely the aim of Parcels, a Lagrangian ocean analysis - framework designed to combine (1) a wide flexibility to model - particles of different natures and (2) an efficient - implementation in accordance with modern computing - infrastructure. In the new Parcels v2.0, we implement a set of - interpolation schemes to read various types of discretised - fields, from rectilinear to curvilinear grids in the horizontal - direction, from z- to s- levels in the vertical and different - variable distributions such as the Arakawa's A-, B- and C- - grids. In particular, we develop a new interpolation scheme for - a three-dimensional curvilinear C-grid and analyse its - properties. Parcels v2.0 capabilities, including a suite of - meta-field objects, are then illustrated in a brief study of the - distribution of floating microplastic in the North West European - continental shelf and its sensitivity to different physical - processes. -
-
-
-

-
- -
-
- Microfossils from plankton are used for paleoceanographic - reconstructions. An often‐made assumption in quantitative - microplankton‐based paleoceanographic reconstructions is that - sedimentary assemblages represent conditions of the directly - overlying surface water. However, any immobile particle sinking - down the water column is subjected to transport by - three‐dimensional currents, which results in a lateral - relocation along transport. We model dinoflagellate cyst - (dinocyst) transport in a high‐resolution (0.1° horizontally) - global model of the present‐day ocean, and compare ocean - conditions in the simulated origin of sedimentary particles to - that in the directly overlying water. We find that the - assumption that sedimentary particles represent the overlying - surface waters is in most regions not valid. The bias induced by - dinocyst transport depends on ocean current strength and - direction, aggregation of particles which could increase the - sinking speed, and the sediment sample depth. By using realistic - sinking speeds of dinocysts and aggregates, extreme biases up to - approximately ± 16°C warmer or ±4PSU saltier are found, while - other regions show lower bias from particle transport. Our model - results provide a way to mechanistically and statistically - explain the unexpected occurrences of some dinocyst species - outside of their `normal' occurrence region, such as the - northerly occurrence of the allegedly sea‐ice‐affiliated - dinocyst Selenopemphix antarctica. Exclusion of such outlier - occurrences will yield better constrained ecological affinites - for dinocyst species, which has implications for - microfossil‐based quantitative and qualitative proxies for - paleoceanographic conditions. We recommend paleoceanographers to - a priori evaluate the (paleo‐)water depth, oceanographic - setting, current strength and particle aggregation probability - for their sedimentary microplankton assemblages. -
-
-
-

-
- -
-
- Drifting Fish Aggregating Devices (dFADs) are small drifting - platforms with an attached solar powered buoy that report their - position with daily frequency via GPS. We use data of 9,440 - drifting objects provided by a buoys manufacturing company, to - test the predictions of surface current velocity provided by two - of the main models: the NEMO model used by Copernicus Marine - Environment Monitoring Service (CMEMS) and the HYCOM model used - by the Global Ocean Forecast System (GOFS). -
-
-
-

-
- -
-
- The increased use of drifting Fish Aggregating Devices (dFADs) - by tuna purse seine fleets in recent years has supported - considerable catches of these species. A greater understanding - of the spatiotemporal dynamics of these objects as they drift - with ocean currents is critical for understanding historical - changes in fishing power, spatial management, and examining the - effect of ambient dFAD density on catch and effort. Here, dFAD - dynamics were estimated for all floating object sets made by - purse seiners in the Western and Central Pacific Ocean during - 2016 and 2017. The drift trajectories of these floating objects - prior to the observed fishing events were estimated by seeding - virtual Lagrangian particles within a state-of-the-art - hydrodynamics model, and simulating their movements backwards in - time. Resulting trajectory distributions are similar to observed - dFAD trajectories from the same period. The approach provides - spatial density estimates in areas where observed dFAD data are - incomplete, particularly in the exclusive economic zones (EEZ) - of Howland and Baker Islands, and certain high seas zones. We - provide estimates of inter-EEZ connectivity of dFADs, which - highlight the fact that dFADs set upon in small EEZs such as - Nauru and Howland and Baker Islands are likely to have drifted - from neighbouring EEZs less than one month prior to fishing. - dFADs typically transited multiple EEZs, with a median of 4 and - a maximum of 14, when assuming a drift-time of six months. - Moreover, 22% of dFAD sets made in the WCPO were estimated to - have originated from the Eastern Pacific Ocean.&#13; We - examine our results in the context of the improved management - and assessment of dFAD fisheries, providing a methodology to - estimated relative dFAD density over historical periods to - support analyses of catch and effort. The sensitivity of these - estimates to hydrodynamic models, including the proposed SKIM - doppler radar altimetry method, is discussed. -
-
-
-

-
- -
-
- Buoyant marine plastic debris has become a serious problem - affecting the marine environment. To fully understand the impact - of this problem, it is important to understand the dynamics of - buoyant debris in the ocean. Buoyant debris accumulates in - “garbage patches” in each of the subtropical ocean basins - because of Ekman convergence and associated downwelling at - subtropical latitudes. However, the precise dynamics of the - garbage patches are not well understood. This is especially true - in the southern Indian Ocean (SIO), where observations are - inconclusive about the existence and numerical models predict - inconsistent locations of the SIO garbage patch. In addition, - the oceanic and atmospheric dynamics in the SIO are very - different to those in the other oceans. The aim of this paper is - to determine the dynamics of the SIO garbage patch at different - depths and under different transport mechanisms such as ocean - surface currents, Stokes drift and direct wind forcing. To - achieve this, we use two types of ocean surface drifters as a - proxy for buoyant debris. We derive transport matrices from - observed drifter locations and simulate the global accumulation - of buoyant debris. Our results indicate that the accumulation of - buoyant debris in the SIO is much more sensitive to different - transport mechanisms than in the other ocean basins. We relate - this sensitivity to the unique oceanic and atmospheric dynamics - of the SIO. -
-
-
-

-
- -
-
- Although marine plastic pollution has been the focus of several - studies, there are still many gaps in our understanding of the - concentrations, characteristics and impacts of plastics in the - oceans. This study aimed to quantify and characterize plastic - debris in oceanic surface waters of the Antarctic Peninsula. - Sampling was done through surface trawls, and mean debris - concentration was estimated at 1,794 items.km−2 with an average - weight of 27.8 g.km−2. No statistical difference was found - between the amount of mesoplastics (46%) and microplastics - (54%). We found hard and flexible fragments, spheres and lines, - in nine colors, composed mostly of polyurethane, polyamide, and - polyethylene. An oceanographic dispersal model showed that, for - at least seven years, sampled plastics likely did not originate - from latitudes lower than 58°S. Analysis of epiplastic community - diversity revealed bacteria, microalgae, and invertebrate groups - adhered to debris. Paint fragments were present at all sampling - stations and were approximately 30 times more abundant than - plastics. Although paint particles were not included in plastic - concentration estimates, we highlight that they could have - similar impacts as marine plastics. We call for urgent action to - avoid and mitigate plastic and paint fragment inputs to the - Southern Ocean. -
-
-
-

-
- -
-
- Floating microplastic in the oceans is known to accumulate in - the subtropical ocean gyres, but unclear is still what causes - that accumulation. We investigate the role of various physical - processes, such as surface Ekman and geostrophic currents, - surface Stokes drift and mesoscale eddy activity, on the global - surface distribution of floating microplastic with Lagrangian - particle tracking using GlobCurrent and WaveWatch III reanalysis - products. Globally, the locations of microplastic accumulation - (accumulation zones) are largely determined by the Ekman - currents. Simulations of the North Pacific and North Atlantic - show that the locations of the modeled accumulation zones using - GlobCurrent Total (Ekman+Geostrophic) currents generally agree - with observed microplastic distributions in the North Pacific, - and with the zonal distribution in the North Atlantic. - Geostrophic currents and Stokes drift do not contribute to large - scale microplastic accumulation in the subtropics, but Stokes - drift leads to increased microplastic transport to Arctic - regions. Since the WaveWatch III Stokes drift and GlobCurrent - Ekman current datasets are not independent, combining Stokes - drift with the other current components leads to an - overestimation of Stokes drift effects and there is therefore a - need for independent measurements of the different ocean - circulation components. We investigate whether windage would be - appropriate as a proxy for Stokes drift but find discrepancies - in the modelled direction and magnitude. In the North Pacific, - we find that microplastic tends to accumulate in regions of - relatively low eddy kinetic energy, indicating low mesoscale - eddy activity, but we do not see similar trends in the North - Atlantic. -
-
-
-

-
- -
-
- Experimentation at sea provides insight into which traits of - ocean microbes are linked to performance in situ. Here we show - distinct patterns in thermal tolerance of microbial phototrophs - from adjacent water masses sampled in the south-west Pacific - Ocean, determined using a fluorescent marker for reactive oxygen - species (ROS). ROS content of pico-eukaryotes was assessed after - 1, 5 and 25 h of incubation along a temperature gradient - (15.6–32.1 °C). Pico-eukaryotes from the East Australian Current - (EAC) had relatively constant ROS and showed greatest mortality - after 25 h at 7 °C below ambient, whereas those from the Tasman - Sea had elevated ROS in both warm and cool temperature extremes - and greatest mortality at temperatures 6–10 °C above ambient, - interpreted as the outcome of thermal stress. Tracking of water - masses within an oceanographic circulation model showed - populations had distinct thermal histories, with EAC - pico-eukaryotes experiencing higher average temperatures for at - least 1 week prior to sampling. While acclimatization and - community assembly could both influence biological responses, - this study clearly demonstrates that phenotypic divergence - occurs along planktonic drift trajectories. -
-
-
-

-
- -
-
- We sampled 17 nesting sites for loggerhead (Caretta caretta) and green turtles (Chelonia mydas) in Cyprus. - Microplastics (<5 mm) were found at all locations and depths, - with particularly high abundance in superficial sand. The top - 2 cm of sand presented grand mean ± SD particle counts of - 45,497 ± 11,456 particles m−3 (range 637–131,939 particles m−3). - The most polluted beaches were among the worst thus far - recorded, presenting levels approaching those previously - recorded in Guangdong, South China. Microplastics decreased with - increasing sand depth but were present down to turtle nest - depths of 60 cm (mean 5,325 ± 3,663 particles m−3. Composition - varied among beaches but hard fragments (46.5 ± 3.5%) and - pre-production nurdles (47.8 ± 4.5%) comprised most categorised - pieces. Particle drifter analysis hindcast for 365 days - indicated that most plastic likely originated from the eastern - Mediterranean basin. Worsening microplastic abundance could - result in anthropogenically altered life history parameters such - as hatching success and sex ratios in marine turtles. -
-
-
-

-
- -
-
- This study examines the fine‐scale population genetic structure - and phylogeography of the spiny lobster Panulirus homarus in the - Western Indian Ocean. A seascape genetics approach was used to - relate the observed genetic structure based on 21 microsatellite - loci to ocean circulation patterns, and to determine the - influence of latitude, sea surface temperature (SST), and ocean - turbidity (KD490) on population‐level processes. At a geospatial - level, the genetic clusters recovered corresponded to three - putative subspecies, P. h. rubellus from the SW Indian Ocean, P. - h. megasculptus from the NW Indian Ocean, and P. h. homarus from - the tropical region in‐between. Virtual passive Lagrangian - particles advected using satellite‐derived ocean surface - currents were used to simulate larval dispersal. In the SW - Indian Ocean, the dispersion of particles tracked over a 4‐month - period provided insight into a steep genetic gradient observed - at the Delagoa Bight, which separates P. h. rubellus and P. h. - homarus. South of the contact zone, particles were advected - southwestwards by prevailing boundary currents or were retained - in nearshore eddies close to release locations. Some particles - released in southeast Madagascar dispersed across the Mozambique - Channel and reached the African shelf. Dispersal was - characterized by high seasonal and inter‐annual variability, and - a large proportion of particles were dispersed far offshore and - presumably lost. In the NW Indian Ocean, particles were retained - within the Arabian Sea. Larval retention and self‐recruitment in - the Arabian Sea could explain the recent genetic divergence - between P. h. megasculptus and P. h. homarus. Geographic - distance and minimum SST were significantly associated with - genetic differentiation in multivariate analysis, suggesting - that larval tolerance to SST plays a role in shaping the - population structure of P. homarus. -
-
-
-

-
- -
-
- The distribution of marine species is often modeled using - Eulerian approaches, in which changes to population density or - abundance are calculated at fixed locations in space. - Conversely, Lagrangian, or individual-based, models simulate the - movement of individual particles moving in continuous space, - with broader-scale patterns such as distribution being an - emergent property of many, potentially adaptive, individuals. - These models offer advantages in examining dynamics across - spatiotemporal scales and making comparisons with observations - from individual-scale data. -
- Here, we introduce and describe such a model, the - Individual-based Kinesis, Advection and Movement of Ocean - ANimAls model (Ikamoana), which we use to replicate the movement - processes of an existing Eulerian model for marine predators - (the Spatial Ecosystem and Population Dynamics Model, SEAPODYM). - Ikamoana simulates the movement of either individual or groups - of animals by physical ocean currents, habitat- dependent - stochastic movements (kinesis), and taxis movements representing - active searching behaviours. -
- Applying our model to Pacific skipjack tuna (Katsuwonus - pelamis), we show that it accurately replicates the evolution of - density distribution simulated by SEAPODYM with low time-mean - error and a spatial correlation of density that exceeds 0.96 at - all times. We demonstrate how the Lagrangian approach permits - easy tracking of individuals’ trajectories for examining - connectivity between different regions, and show how the model - can provide independent estimates of transfer rates between - commonly used assessment regions. In particular, we find that - retention rates in most assessment regions are considerably - smaller (up to a factor of 2) than those estimated by this - populations primary assessment model. Moreover, these rates are - sensitive to ocean state (e.g. El Nino vs La Nina) and so - assuming fixed transfer rates between regions may lead to - spurious stock estimates. A novel feature of the Lagrangian - approach is that individual schools can be tracked through time, - and we demonstrate that movement between two assessment regions - at broad temporal scales includes extended transits through - other regions. -
- Finally, we discuss the utility of this modeling framework for - the management of marine reserves, designing effective - monitoring programmes, and exploring hypotheses regarding the - behaviour of hard-to-observe oceanic animals. -
-
-
-

-
- -
-
- In this study, we assess the accuracy of a combined geostrophic - and Ekman current product (GlobCurrent) that estimates ocean - currents at 15 m depth, by coupling it to a synthetic particle - tracking tool and comparing the virtual trajectories to those of - surface drifting buoys drogued at 15 m in the Greater Agulhas - Current Region. The velocities from a total of 1,041 drifters - are compared and evaluated to the synthetic particle-derived - velocities for the period 1993–2015. On average the GlobCurrent - underestimates the velocity in the Greater Agulhas Current by - approximately 27%. The underestimation ranges from 4–64% in - different regions, with the smallest error found in the Agulhas - retroflection region, and the highest in the Benguela Upwelling - System. Furthermore, we compare the time taken for the - separation between the virtual and real drifters to reach 35 km. - The mean separation time was found to be 78 hours, with the - shortest time (35 hours) found in the Agulhas Current and the - longest time (116 hours) located in the Agulhas Return Current. - Deploying 10,000 virtual drifters in a 1degree x 1degree box - within the southern Agulhas Current shows a convergence of - trajectories towards the core of the current, while higher - divergence is evident in the Agulhas retroflection. To evaluate - the utility of this synthetic particle tracking tool coupled - with GlobCurrent in open ocean search and rescue operations, two - test cases are examined: (1) a capsized catamaran spotted south - of Cape Recife and recovered 5 days later south of Cape Agulhas; - and (2) a drifter trajectory in the same region. The comparison - suggests that the GlobCurrent forced synthetic particle tracking - tool is not appropriate for predicting the trajectory of a - capsized catamaran that does not have the same drift - characteristics as a surface drifting buoy drogued to 15 m. -
-
-
-

-
- -
-
- Global surface transport in the ocean can be represented by - using the observed trajectories of drifters to calculate - probability distribution functions. The oceanographic - applications of the Markov Chain approach to modelling include - tracking of floating debris and water masses, globally and on - yearly-to-centennial timescales. Here, we analyse the error - inherent with mapping trajectories onto a grid and the - consequences for ocean transport modelling and detection of - accumulation structures. A sensitivity analysis of Markov Chain - parameters is performed in an idealised Stommel gyre and western - boundary current as well as with observed ocean drifters, - complementing previous studies on widespread floating debris - accumulation. Focusing on two key areas of inter-ocean exchange - - the Agulhas System and the North Atlantic intergyre transport - barrier - we assess the capacity of the Markov Chain methodology - to detect surface connectivity and dynamic transport barriers. - Finally, we extend the methodology's functionality to separate - the geostrophic and non-geostrophic contributions to inter-ocean - exchange in these key regions. -
-
-
-

-
- -
-
- Lagrangian analysis is a powerful way to analyse the output of - ocean circulation models and other ocean velocity data such as - from altimetry. In the Lagrangian approach, large sets of - virtual particles are integrated within the three-dimensional, - time-evolving velocity fields. Over several decades, a variety - of tools and methods for this purpose have emerged. Here, we - review the state of the art in the field of Lagrangian analysis - of ocean velocity data, starting from a fundamental kinematic - framework and with a focus on large-scale open ocean - applications. Beyond the use of explicit velocity fields, we - consider the influence of unresolved physics and dynamics on - particle trajectories. We comprehensively list and discuss the - tools currently available for tracking virtual particles. We - then showcase some of the innovative applications of trajectory - data, and conclude with some open questions and an outlook. The - overall goal of this review paper is to reconcile some of the - different techniques and methods in Lagrangian ocean analysis, - while recognising the rich diversity of codes that have and - continue to emerge, and the challenges of the coming age of - petascale computing. -
-
-
-

-
- -
-
- As ocean general circulation models (OGCMs) move into the - petascale age, where the output of single simulations exceeds - petabytes of storage space, tools to analyse the output of these - models will need to scale up too. Lagrangian ocean analysis, - where virtual particles are tracked through hydrodynamic fields, - is an increasingly popular way to analyse OGCM output, by - mapping pathways and connectivity of biotic and abiotic - particulates. However, the current software stack of Lagrangian - ocean analysis codes is not dynamic enough to cope with the - increasing complexity, scale and need for customization of - use-cases. Furthermore, most community codes are developed for - stand-alone use, making it a nontrivial task to integrate - virtual particles at runtime of the OGCM. Here, we introduce the - new Parcels code, which was designed from the ground up to be - sufficiently scalable to cope with petascale computing. We - highlight its API design that combines flexibility and - customization with the ability to optimize for HPC workflows, - following the paradigm of domain-specific languages. Parcels is - primarily written in Python, utilizing the wide range of tools - available in the scientific Python ecosystem, while generating - low-level C code and using just-in-time compilation for - performance-critical computation. We show a worked-out example - of its API, and validate the accuracy of the code against seven - idealized test cases. This version 0.9 of Parcels is focused on - laying out the API, with future work concentrating on support - for curvilinear grids, optimization, efficiency and at-runtime - coupling with OGCMs. -
-
-
-
-
-
-
- - - - - - - - - - diff --git a/build-cards.js b/build-cards.js new file mode 100644 index 00000000..d673d48f --- /dev/null +++ b/build-cards.js @@ -0,0 +1,39 @@ +const fs = require('fs') +const { chromium, devices } = require('playwright') + +const { getAllPostsIds } = require('./src/lib/posts') +const cardsDir = './public/cards/' + +async function main() { + const contents = getAllPostsIds() + + if (!fs.existsSync(cardsDir)) { + fs.mkdirSync(cardsDir) + } + + for (const post of contents) { + await getScreenshot(post.params.id) + } + + process.exit() +} + +const baseUrl = process.env.CARDS_BASE_URL || 'http://localhost:3000' +const device = devices['Desktop Safari'] + +async function getScreenshot(postId) { + const browser = await chromium.launch() + const context = await browser.newContext({ ...device, deviceScaleFactor: 2 }) + const page = await context.newPage() + + await page.goto(`${baseUrl}/cards/${postId}`) + await page.waitForTimeout(2000) // wait for page to load fully (2 seconds). This is a hacky way to wait for GitHub Avatars to fully load. + + await page.screenshot({ + path: `${cardsDir}/${postId}.png`, + fullPage: true, + }) + await browser.close() +} + +main() diff --git a/cookie-policy.html b/cookie-policy.html deleted file mode 100644 index d6715058..00000000 --- a/cookie-policy.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - Cookie policy - - - - - - - - - - - - - - - - - - - - - -
-
-

Cookie policy on the OceanParcels website

- On this website we use Google Analytics, a web analytics service offered by Google Inc ("Google"). We do this to provide our visitors with the best possible guide to using the Parcels code. We track the navigation on this website to see which part of the documentation may need improving. We also track the location and browser of our visitors to better accommodate our audience. To ensure your privacy and comply with the GDPR, we have an agreement with Google regarding the Data Processing Terms. Your IP-address is anonymized before any data are stored or sent to Google and Google is not allowed to provide your data to third parties or use it in other Google services. -
-

Last updated

- This page was updated last on 10-11-2020. -
- - - - - - \ No newline at end of file diff --git a/css/modern-business.css b/css/modern-business.css deleted file mode 100755 index d31098c3..00000000 --- a/css/modern-business.css +++ /dev/null @@ -1,115 +0,0 @@ -/*! - * Start Bootstrap - Modern Business (https://startbootstrap.com/template-overviews/modern-business) - * Copyright 2013-2017 Start Bootstrap - * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-logomodern-business-nav/blob/master/LICENSE) - */ - -body { - padding-top: 54px; -} - -@media (min-width: 992px) { - body { - padding-top: 56px; - } -} - -.carousel-item { - height: 40vh; - min-height: 400px; - background: no-repeat center center scroll; - -webkit-background-size: contain; - -moz-background-size: contain; - -o-background-size: contain; - background-size: contain; -} - -.portfolio-item { - margin-bottom: 30px; -} - -hr { - margin-top: 50px; - margin-bottom: 50px; -} - -*[id]:before { - display: block; - content: " "; - margin-top: -75px; - height: 75px; - visibility: hidden; -} - -.team-photo { - text-align:center; - display:block; - max-width:280px; - max-height:200px; - margin: 0 auto; -} - -.carousel-caption { - background: rgba(0, 0, 0, 0.4); -} - -@media (min-width: 34em) { - .card-columns { - -webkit-column-count: 2; - -moz-column-count: 2; - column-count: 2; - } -} - -@media (min-width: 48em) { - .card-columns { - -webkit-column-count: 3; - -moz-column-count: 3; - column-count: 3; - } -} - -@media (min-width: 62em) { - .card-columns { - -webkit-column-count: 3; - -moz-column-count: 3; - column-count: 3; - } -} - -a.tutorialLink:link{color:black} -a.tutorialLink:visited{color:black} -a.tutorialLink:hover{color:black; text-decoration: none;} - -span.pubnum { - float:right; - color: #868e96 !important; - font-size: x-small; - font-style: italic; - margin-right: -10pt; - margin-top: 10pt; - margin-bottom: -10pt; -} -span.pubnum::before { - content: "Article #"; -} -/*span.pubnum::after {*/ -/* content: " using Parcels";*/ -/*}*/ - - -ul#footerul { - list-style-type: none; - display: table; - margin: 0 auto; -} - -li#footerli{ - float: left; -} - -a#footera{ - color: lightgray; - text-align: center; - padding: 30px; -} diff --git a/driftersGI.json b/driftersGI.json deleted file mode 100644 index 94315dfd..00000000 --- a/driftersGI.json +++ /dev/null @@ -1 +0,0 @@ -{"Sea Otter": [["2021-09-24T16:02:52.001Z", -0.866432, -90.71865], ["2021-09-24T16:10:05.001Z", -0.864378, -90.726669], ["2021-09-24T16:20:05.001Z", -0.862758, -90.730586], ["2021-09-24T16:30:05.001Z", -0.860659, -90.734515], ["2021-09-24T16:44:24.001Z", -0.857747, -90.739917], ["2021-09-24T16:50:07.001Z", -0.856794, -90.741907], ["2021-09-24T17:00:33.001Z", -0.85479, -90.745389], ["2021-09-24T17:10:10.001Z", -0.852998, -90.748192], ["2021-09-24T17:20:36.001Z", -0.851379, -90.750714], ["2021-09-24T17:30:04.001Z", -0.849933, -90.753024], ["2021-09-24T17:40:05.001Z", -0.848666, -90.754291], ["2021-09-24T17:50:04.001Z", -0.847405, -90.756198], ["2021-09-24T18:00:36.001Z", -0.845062, -90.758534], ["2021-09-24T18:10:05.001Z", -0.84224, -90.76007], ["2021-09-24T18:20:04.001Z", -0.83936, -90.761158], ["2021-09-24T18:30:05.001Z", -0.836979, -90.762157], ["2021-09-24T18:41:07.001Z", -0.834701, -90.76297], ["2021-09-24T18:50:41.001Z", -0.832461, -90.763462], ["2021-09-24T19:10:05.001Z", -0.828096, -90.764794], ["2021-09-24T19:20:06.001Z", -0.825696, -90.765498], ["2021-09-24T19:30:05.001Z", -0.823469, -90.76617], ["2021-09-24T19:40:06.001Z", -0.821254, -90.767328], ["2021-09-24T19:50:06.001Z", -0.818771, -90.769498], ["2021-09-24T20:02:35.001Z", -0.81561, -90.771667]], "RLS1": [["2021-09-24T16:20:12.001Z", -0.843744, -90.679744], ["2021-09-24T16:30:06.001Z", -0.841734, -90.684435], ["2021-09-24T16:40:06.001Z", -0.839514, -90.688915], ["2021-09-24T16:51:04.001Z", -0.83703, -90.69392], ["2021-09-24T17:00:06.001Z", -0.834669, -90.697997], ["2021-09-24T17:10:07.001Z", -0.831923, -90.702426], ["2021-09-24T17:20:06.001Z", -0.829203, -90.706643], ["2021-09-24T17:30:06.001Z", -0.826547, -90.710739], ["2021-09-24T17:40:06.001Z", -0.824013, -90.714701], ["2021-09-24T17:50:06.001Z", -0.82135, -90.718522], ["2021-09-24T18:00:05.001Z", -0.818566, -90.722067], ["2021-09-24T18:10:06.001Z", -0.81568, -90.725651], ["2021-09-24T18:20:07.001Z", -0.812704, -90.729094], ["2021-09-24T18:30:06.001Z", -0.809709, -90.732237], ["2021-09-24T18:40:40.001Z", -0.806362, -90.735162], ["2021-09-24T18:50:07.001Z", -0.803334, -90.737517], ["2021-09-24T19:00:07.001Z", -0.800045, -90.739878], ["2021-09-24T19:10:07.001Z", -0.796749, -90.74231], ["2021-09-24T19:20:07.001Z", -0.793414, -90.744294], ["2021-09-24T19:30:08.001Z", -0.790125, -90.74585], ["2021-09-24T19:40:33.001Z", -0.786797, -90.747008], ["2021-09-24T19:50:17.001Z", -0.783667, -90.747936], ["2021-09-24T20:00:39.001Z", -0.780371, -90.748461]], "RLS2": [["2021-09-24T16:41:34.001Z", -0.793344, -90.576435], ["2021-09-24T16:58:07.001Z", -0.782259, -90.564832], ["2021-09-24T17:00:06.001Z", -0.781837, -90.56585], ["2021-09-24T17:10:06.001Z", -0.779437, -90.571302], ["2021-09-24T17:24:05.001Z", -0.775712, -90.578931], ["2021-09-24T17:30:52.001Z", -0.773882, -90.582694], ["2021-09-24T17:40:06.001Z", -0.771123, -90.58768], ["2021-09-24T17:50:33.001Z", -0.768224, -90.593485], ["2021-09-24T18:00:34.001Z", -0.765139, -90.59897], ["2021-09-24T18:10:10.001Z", -0.762259, -90.604294], ["2021-09-24T18:20:06.001Z", -0.759213, -90.609702], ["2021-09-24T18:30:08.001Z", -0.755994, -90.61495], ["2021-09-24T18:40:06.001Z", -0.752659, -90.620038], ["2021-09-24T18:50:08.001Z", -0.749254, -90.62503], ["2021-09-24T19:00:36.001Z", -0.74569, -90.630234], ["2021-09-24T19:10:08.001Z", -0.742086, -90.634726], ["2021-09-24T19:20:05.001Z", -0.738067, -90.63927], ["2021-09-24T19:30:06.001Z", -0.733875, -90.643635], ["2021-09-24T19:40:06.001Z", -0.729658, -90.647904], ["2021-09-24T19:50:06.001Z", -0.72551, -90.652051], ["2021-09-24T20:00:37.001Z", -0.72119, -90.656083]], "RLS3": [["2021-09-24T17:02:03.001Z", -0.754662, -90.512736], ["2021-09-24T17:10:04.001Z", -0.753747, -90.515834], ["2021-09-24T17:20:05.001Z", -0.752595, -90.519603], ["2021-09-24T17:30:05.001Z", -0.750618, -90.523424], ["2021-09-24T17:40:05.001Z", -0.748, -90.52727], ["2021-09-24T17:50:05.001Z", -0.745453, -90.531155], ["2021-09-24T20:03:27.001Z", -0.704819, -90.582093]]} \ No newline at end of file diff --git a/egu22.html b/egu22.html deleted file mode 100644 index a71ab62f..00000000 --- a/egu22.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - The Utrecht University Lagrangian Ocean Analysis team at EGU2022 - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -

The Utrecht University Lagrangian Ocean Analysis team at EGU2022 - - - - -

- -
- -

Presenters

-
-
-
-
-
-

Stefanie Ypma

-

Quinten Bohte, Jen Jones, Andy Donnelly, and Erik van Sebille

-

Detecting most effective coastal plastic clean-up hubs using network theory: a case study in the Galapagos Marine Reserve -

-
- - - -
-
- -
-
-
-

Mikael Kaandorp

-

Delphine Lobelle, Christian Kehl, and Erik van Sebille

- -

A global 3D map of marine plastic litter: a data assimilated modelling framework -

-
- - - -
-
- -
-
-
-

Daan Reijnders

-

Eric Deleersnijder and Erik van Sebille

-

Lagrangian Ocean Ventilation: Improved Subgrid-Scale Dispersion on Neutral Surfaces -

-
- - - -
-
- -
-
-
-

Darshika Manral

-

Linda Amaral-Zettler, and Erik van Sebille

-

Lagrangian connectivity of marine plankton under thermal constraints -

-
- - - -
-
- -
-
-
- - - - - - - - - - - - \ No newline at end of file diff --git a/images/.DS_Store b/images/.DS_Store deleted file mode 100644 index 5008ddfc..00000000 Binary files a/images/.DS_Store and /dev/null differ diff --git a/images/funderlogos.png b/images/funderlogos.png deleted file mode 100644 index 59ec7957..00000000 Binary files a/images/funderlogos.png and /dev/null differ diff --git a/images/tutorial_diffusion.svg b/images/tutorial_diffusion.svg deleted file mode 100644 index 45322cc3..00000000 --- a/images/tutorial_diffusion.svg +++ /dev/null @@ -1,11424 +0,0 @@ - - - - - - - - - 2020-11-18T15:37:05.682692 - image/svg+xml - - - Matplotlib v3.3.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/tutorial_nemo3d.svg b/images/tutorial_nemo3d.svg deleted file mode 100644 index a49f6729..00000000 --- a/images/tutorial_nemo3d.svg +++ /dev/null @@ -1,4035 +0,0 @@ - - - - - - - - - 2020-11-18T15:24:31.953255 - image/svg+xml - - - Matplotlib v3.3.1, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/index.html b/index.html deleted file mode 100755 index 95cfa4bd..00000000 --- a/index.html +++ /dev/null @@ -1,1077 +0,0 @@ - - - - - - - - - - - Parcels - a Lagrangian Ocean Analysis toolbox - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

What is OceanParcels?

-
-
-

- The OceanParcels project develops - Parcels (Probably A Really - Computationally Efficient Lagrangian - Simulator), a set of Python classes and methods to create - customisable particle tracking simulations using output from Ocean - Circulation models. Parcels can be used to track passive and active - particulates such as water, plankton, - plastic and - fish. -

-

- The code from the OceanParcels project is licensed under an - open source - MIT license - and can be downloaded from - github.com/OceanParcels/parcels - or installed via - anaconda.org/conda-forge/parcels: -

-

- - - - - - - -

-

- The manuscript detailing this first release of Parcels, version 0.9, - has been published in - Geoscientific Model Development - and can be cited as: -

-

-
- -
-
- As ocean general circulation models (OGCMs) move into the - petascale age, where the output of single simulations exceeds - petabytes of storage space, tools to analyse the output of these - models will need to scale up too. Lagrangian ocean analysis, - where virtual particles are tracked through hydrodynamic fields, - is an increasingly popular way to analyse OGCM output, by - mapping pathways and connectivity of biotic and abiotic - particulates. However, the current software stack of Lagrangian - ocean analysis codes is not dynamic enough to cope with the - increasing complexity, scale and need for customization of - use-cases. Furthermore, most community codes are developed for - stand-alone use, making it a nontrivial task to integrate - virtual particles at runtime of the OGCM. Here, we introduce the - new Parcels code, which was designed from the ground up to be - sufficiently scalable to cope with petascale computing. We - highlight its API design that combines flexibility and - customization with the ability to optimize for HPC workflows, - following the paradigm of domain-specific languages. Parcels is - primarily written in Python, utilizing the wide range of tools - available in the scientific Python ecosystem, while generating - low-level C code and using just-in-time compilation for - performance-critical computation. We show a worked-out example - of its API, and validate the accuracy of the code against seven - idealized test cases. This version 0.9 of Parcels is focused on - laying out the API, with future work concentrating on support - for curvilinear grids, optimization, efficiency and at-runtime - coupling with OGCMs. -
-
-
-

-

- The manuscript detailing version 2.0 of Parcels is available at - Geoscientific Model Development - and can be cited as: -

-
- -
-
- With the increasing amount of data produced by numerical ocean - models, so increases the need for efficient tools to analyse - these data. One of these tools is Lagrangian ocean analysis, - where a set of virtual particles are released and their dynamics - is integrated in time based on fields defining the ocean state, - including the hydrodynamics and biogeochemistry if available. - This popular methodology needs to adapt to the large variety of - models producing these fields at different formats. This is - precisely the aim of Parcels, a Lagrangian ocean analysis - framework designed to combine (1) a wide flexibility to model - particles of different natures and (2) an efficient - implementation in accordance with modern computing - infrastructure. In the new Parcels v2.0, we implement a set of - interpolation schemes to read various types of discretised - fields, from rectilinear to curvilinear grids in the horizontal - direction, from z- to s- levels in the vertical and different - variable distributions such as the Arakawa's A-, B- and C- - grids. In particular, we develop a new interpolation scheme for - a three-dimensional curvilinear C-grid and analyse its - properties. Parcels v2.0 capabilities, including a suite of - meta-field objects, are then illustrated in a brief study of the - distribution of floating microplastic in the North West European - continental shelf and its sensitivity to different physical - processes. -
-
-
-

-

- The manuscript detailing the performance of Parcels is available at - Computers and Geosciences - and can be cited as: -

-
-
-
- -
-
- Studying oceanography by using Lagrangian simulations has - been adopted for a range of scenarios, such as the - determining the fate of microplastics in the ocean, - simulating the origin locations of microplankton used for - palaeoceanographic reconstructions, for studying the impact - of fish aggregation devices on the migration behaviour of - tuna. These simulations are complex and represent a - considerable runtime effort to obtain trajectory results, - which is the prime motivation for enhancing the performance - of Lagrangian particle simulators. This paper assesses - established performance enhancing techniques from Eulerian - simulators in light of computational conditions and demands - of Lagrangian simulators. A performance enhancement strategy - specifically targeting physics-based Lagrangian particle - simulations is outlined to address the performance gaps, and - techniques for closing the performance gap are presented and - implemented. Realistic experiments are derived from three - specific oceanographic application scenarios, and the - suggested performance-enhancing techniques are benchmarked - in detail, so to allow for a good attribution of speed-up - measurements to individual techniques. The impacts and - insights of the performance enhancement strategy are further - discussed for Lagrangian simulations in other geoscience - applications. The experiments show that I/O-enhancing - techniques, such as dynamic loading and buffering, lead to - considerable speed-up on-par with an idealised - parallelisation of the process over 20 nodes. Conversely, - while the cache-efficient structure-of-arrays collection - yields a visible speed-up, other alternative data structures - fail in fulfilling the theoretically-expected performance - increase. This insight demonstrates the importance of good - data alignment in memory and caches for Lagrangian physics - simulations. -
-
-
-
-
-
-
-
-

Installing Parcels

- - See - the Installation page - for a step-by-step guide on how to install Parcels through Miniconda. - -
-

Parcels tutorials

- - See - the Documentation and Tutorials page - for links to a set of tutorials and examples that will help you get - started with Parcels. - -
-

Parcels development status

- The current release of Parcels, version 3.1, is a fully-functional, - feature-complete code for offline Lagrangian ocean analysis. See below for - a list of features, or keep an eye on the - Github Development Timeline page -

-

Major features

-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-

-

Experimental features

-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-

-

Future development goals

-
-
- -
-
- -
-
-
- -
-
-
-
- - Plot bathymetric data - -
-
- -

- A notebook to plot bathymetry with continental - contoured-geometries. The used colour map is 'cmo.ice'. Created - by Claudio Pierard. -

-
- -
-
-
-
-
- - Animating particles with trails - -
-
- -

- A notebook to animate particles with their vanishing trails over - past timesteps in an unsteady doublegyre fluid. The background - shows the absolute velocity magnitude. Created by - Christian Kehl. -

-
- -
-
-
-
-
- - Animating particles with tidal background flow - -
-
- -

- A notebook animating particles with a tidally-influenced flow - field, animated with continental contoured-geometries using - cartopy. Created by - Laura Navarro Gomez. -

-
- -
-
-
-
-
-
-
- - Animating data on a rotating sphere - -
-
- -

- A notebook animating data on a rotating Earth using cartopy. - Created by - Peter Nooteboom. -

-
- -
-
-
- -
-

Peer-reviewed articles using Parcels

- - See the Articles page for a list of - peer-reviewed articles using Parcels. - -
-

Projects using Parcels

-
- - - - -
-
-

Parcels funding and support

-

- Parcels development has been supported by the following organisations: -

- -

- -
-
- - - - - - - - diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 00000000..abe04df5 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/licenses/xarray.dev b/licenses/xarray.dev new file mode 100644 index 00000000..8038f914 --- /dev/null +++ b/licenses/xarray.dev @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2022 Onwards Xarray core developers and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/main.js b/main.js index 663854c7..9e98f320 100644 --- a/main.js +++ b/main.js @@ -1,754 +1,756 @@ const TEXT = { - animation_start: "START ANIMATION", - animation_pause: "PAUSE ANIMATION", - select_drifter: "SELECT DRIFTER BY NAME", - drifter_prompt: "Which drifter do you want to select?", - drifter_date: "Drifters on", - no_referrer: "Please try to access this map on https://galapagosplasticfree.nl/ instead ;)" -}; + animation_start: 'START ANIMATION', + animation_pause: 'PAUSE ANIMATION', + select_drifter: 'SELECT DRIFTER BY NAME', + drifter_prompt: 'Which drifter do you want to select?', + drifter_date: 'Drifters on', + no_referrer: + 'Please try to access this map on https://galapagosplasticfree.nl/ instead ;)', +} -const DATA_URL = "https://plasticadrift.science.uu.nl/galapagosdrifters/"; +const DATA_URL = 'https://plasticadrift.science.uu.nl/galapagosdrifters/' class VLayer { - constructor() { - this.layer = new ol.layer.Vector({}); - this.features = []; - this.named = {}; - } - - add(feature, name="") { - this.features.push(feature); - this.named[name] = feature; - } - - addTo(map, z = 2) { - map.addLayer(this.layer); - this.layer.setZIndex(z); - } - - clear() { - this.features = []; - this.named = {}; - } - - update() { - this.layer.setSource(new ol.source.Vector({features: this.features})); - } -} + constructor() { + this.layer = new ol.layer.Vector({}) + this.features = [] + this.named = {} + } + add(feature, name = '') { + this.features.push(feature) + this.named[name] = feature + } -class DrifterApp { - constructor(center, zoom) { - this.begin = null; - this.data = null; - this.selection = null; - - this.animating = false; - this.anim_t = null; - this.anim_0 = null; - this.anim_s = anim_freq * 3600 * 1000; - - let controls = []; - - let playControl; - [this.playButton, playControl] = this.createOLButton(TEXT.animation_start, this.toggleAnimate.bind(this)); - controls.push(playControl); //animation button - - controls.push(this.createOLButton(TEXT.select_drifter, this.createSearchModal.bind(this))[1]); - - this.container = document.getElementById('popup'); - this.content = document.getElementById('popup-content'); - this.closer = document.getElementById('popup-closer'); - - this.overlay = new ol.Overlay({ - element: this.container, - autoPan: true, - autoPanAnimation: { - duration: 250, - }, - }); - - this.closer.onclick = this.hideTooltip.bind(this); - - this.setupSocialButtons(); - - this.map = new ol.Map({ - target: 'map', - controls: controls, - overlays: [this.overlay], - layers: [new ol.layer.Tile({source: new ol.source.OSM()})], - view: new ol.View({center: center, zoom: zoom}) - }); - - this.map.on('singleclick', this.click.bind(this)); - - this.markers = new VLayer(); - this.markers.addTo(this.map, 3); - - this.lines = new VLayer(); - this.lines.addTo(this.map, 2); - - this.openlayersUnselectableFix() - } - - start() { - this.readQuery(); - - let self = this; - - this.refreshDrifters(function (data) { - self.processDrifters(data); - - self.zoomToRelevant(); - - if (self.animating) - { - self.startAnimate(); - } - else { - self.drawDrifters(self.data, Date.now(), true); - } - }); - } - - readQuery() { - this.animating = Number.parseInt(urlParams.get("a")); - let selection = urlParams.get("s"); - - if (selection) - { - this.selected = selection.split(","); - } - else - { - this.selected = []; - } - - this.begin = Date.parse(urlParams.get("b")) || 0; - } - - generateQueryURL(escape=false) { - urlParams.set("s", this.selected.join(",")); - urlParams.set("a", (this.animating ? 1 : 0).toString()); - - let ret = baseUrl + "?" + urlParams.toString(); - return escape ? encodeURIComponent(ret) : ret; - } - - updateDate(timestamp) { - let date = new Date(timestamp); - if (anim_freq < 24) { - var options = {year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit'}; - } else { - var options = {year: 'numeric', month: 'long', day: 'numeric'}; - } - document.getElementById("date").innerHTML = TEXT.drifter_date + " " + date.toLocaleDateString("en-UK", options); - } - - processDrifters(data) { - let timeZoneDiff = new Date().getTimezoneOffset() * 60 * 1000; - for (let drifter of Object.values(data)) - { - for (let evt of drifter) - { - evt[0] = Date.parse(evt[0]) - timeZoneDiff - ; - } - } - - let new_data = {}; - - for (let [name, path] of Object.entries(data)) - { - let trimmed = path.filter(e => e[0] > this.begin); - if (trimmed.length) - { - new_data[name] = trimmed; - } - } - - this.data = new_data; - } - - refreshDrifters(callback) { - $.getJSON(DATA_URL + data_source, callback); - } - - createOLButton(text, callback) { - let button = document.createElement('button'); - button.innerHTML = text; - - button.addEventListener('click', callback, false); - button.className = "ol-button"; - - let container = document.createElement('div'); - container.className = 'ol-unselectable ol-control'; - container.appendChild(button); - - return [button, new ol.control.Control({ - element: container - })]; - } - - createSearchModal() { - let search = prompt(TEXT.drifter_prompt); - - if (search === null) - { - return; - } - - let result = this.searchDrifterByName(search); - - if (result.length) - { - this.showAutocorrectModal(result) - } - - } - - showAutocorrectModal(result) { - let modalButtons = $(".correct-buttons")[0]; - modalButtons.innerHTML = ""; - - let self = this; - - for (let name of result) - { - let button = document.createElement("button"); - button.innerHTML = name; - button.addEventListener("click", function (event) {self.setSelected([name]); modal.style.display = "none"}); - modalButtons.appendChild(button); - } - - let modal = $(".correct-modal")[0]; - modal.style.display = "block"; - } - - searchDrifterByName(search) { - // do we process regex? if we would, assume no autocorrect, as the user knows what they're doing - let names = Object.keys(this.data); - - let exact = names.filter(x => x === search); - if (exact.length) { - this.setSelected(exact); - return []; - } - - let close = names.filter(x => levenshtein(x, search) < 4); - - if (close.length) { - if (close.length === 1) - { //if it's close and the only one eligible, assume it's that one - this.setSelected(close); - return []; - } - - return close; - } - - return []; - } - - colourMap(name, n) { - let i = Object.keys(this.data).indexOf(name); - - if (this.selected.length && !this.selected.includes(name)) - { - return ["rgba(127, 127, 127, 0.4)", 0.4, 0]; - } - else { - let h = parseFloat(i) / (n + 1) * 360; - h = h.toFixed(2); - - return [`hsl(${h}, 100%, 50%)`, 1.0, 1]; - } - } - - redrawDrifters() { - this.markers.clear(); - this.lines.clear(); - this.drawDrifters(this.data, Date.now(), true); - } - - drawDrifters(data, drawdate, with_tx) { - this.markers.clear(); - this.lines.clear(); - - let n = Object.keys(this.data).length; - let now = 0; + addTo(map, z = 2) { + map.addLayer(this.layer) + this.layer.setZIndex(z) + } + + clear() { + this.features = [] + this.named = {} + } - for (let [name, path] of Object.entries(data)) - { - let [colour, opacity, zindex] = this.colourMap(name, n); - let last = path[path.length - 1]; - - if (!last) - { - continue; - } - - let [t, lat, lng] = last; - - if (t > now) - { - now = t; - } - - let hourdiff = Math.floor((drawdate - t) / (60*60*1000)) - let src = "marker.svg" - if ((hourdiff > 24) || (with_tx == false)) { - src = "marker_notx.svg" - } - let mark = this.createMarker(colour, lat, lng, opacity, zindex, src); - let line = this.createLine(colour, path, opacity, zindex); - - mark.drifterName = name; - line.drifterName = name; - mark.lastTime = t; - - this.markers.add(mark, name); - this.lines.add(line, name); - } - - this.updateDate(now); - - this.markers.update(); - this.lines.update(); - } - - svgAlphaFix(colour, opacity) { - if (opacity < 1.0) { // svgs have a quirky interaction with rgba opacity, so avoid that - let match = colour.match("rgba\\((.*),(.*),(.*),(.*)\\)"); - - if (match) { - let [_, r, g, b, a] = match; - - colour = `rgb(${r}, ${g}, ${b})`; - opacity = parseFloat(a); - } - } - - return [colour, opacity]; - } - - markerScale(mstyle, istyle, feature, resolution) { - resolution = Math.max(400, Math.min(resolution, 2000)); - - let base = 200; - istyle.setScale(base / (1 + resolution)); - - return [mstyle]; - } - - createMarker(colour, lat, lng, opacity=1.0, z=1, src) { - [lat, lng] = [parseFloat(lat), parseFloat(lng)]; - - let marker = new ol.Feature({ - name: "marker", - type: "icon", - geometry: new ol.geom.Point(ol.proj.fromLonLat([lng, lat])) - }); - - [colour, opacity] = this.svgAlphaFix(colour, opacity); - - let iconStyle = new ol.style.Icon({ - anchor: [0.5, 0.5], - src: src, - scale: 0.1, - opacity: opacity, - color: colour - }); - - let markerStyle = new ol.style.Style({ - image: iconStyle, - zIndex: z - }); - - marker.setStyle(this.markerScale.bind(this, markerStyle, iconStyle)); - - return marker; - } - - moveMarker(name, lat, lng) { - let marker = this.markers.named[name]; - - if (marker) { - marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lng, lat]))); - } - } - - createLine(colour, path, opacity=1.0, z=1) { - let points = []; - - for (let [_, lat, lng] of path) { - points.push(ol.proj.fromLonLat([lng, lat])); - } - - let line = new ol.Feature({geometry: new ol.geom.LineString(points)}); - line.setStyle(new ol.style.Style({ - stroke: new ol.style.Stroke({ color: colour, width: 2}), - opacity: opacity, - zIndex: z - })); - - return line; - } - - click(evt) { - let pixel = evt.pixel; - let feature = this.map.forEachFeatureAtPixel(pixel, function (f) {return f;}); - - let shiftDown = evt.originalEvent.shiftKey; - - if (feature) { - if (shiftDown) - { - let name = feature.drifterName; - - if (this.selected.includes(name)) - { - this.selected = this.selected.filter(s => s !== name); - } - else { - this.selected.push(feature.drifterName); - } - - this.setSelected(this.selected); - - if (!this.animating) { - this.redrawDrifters(); - } - - return this.hideTooltip(evt); - } - else - { - this.setSelected([feature.drifterName]); - return this.showTooltip(feature.drifterName); - } - } - else - { - if (!shiftDown) { - this.setSelected([]); - } - - return this.hideTooltip(evt); - } - } - - setSelected(selection) { - let prev = this.selected; - this.selected = selection; - - if (!(prev.length === selection.length && prev.every(e => selection.includes(e)))) { - if (!this.animating) { - this.redrawDrifters(); - } - } - } - - showTooltip(drifterName) { - let feature = this.markers.named[drifterName]; - - let coordinate = feature.getGeometry().getCoordinates(); - - let name = feature.drifterName; - let hdms = ol.coordinate.toStringHDMS(ol.proj.toLonLat(coordinate)); - let lastTime = new Date(feature.lastTime); - let lastTimediff = Date.now() - lastTime; - let hourdiff = Math.floor(lastTimediff / (60*60*1000)) - if (hourdiff > 24) { - this.content.innerHTML = `

Name: ${name}
Coordinates: ${hdms}
Last contact: ${Math.floor(hourdiff/24)} days ago`; - } - else { - this.content.innerHTML = `

Name: ${name}
Coordinates: ${hdms}
Last contact: ${hourdiff} hours ago (${lastTime.toLocaleTimeString()})`; - } - this.overlay.setPosition(coordinate); - } - - hideTooltip(evt) { - this.overlay.setPosition(undefined); - this.closer.blur(); - return false; - } - - toggleAnimate(e) { - if (this.animating) { - this.stopAnimate(); - } - else if (this.anim_t !== null) { - this.animating = true; - this.playButton.innerHTML = TEXT.animation_pause; - this.stepAnimate(); - } - else { - this.startAnimate(); - } - } - - startAnimate() { - this.animating = true; - - if (this.anim_t) { - return; - } - - this.playButton.innerHTML = TEXT.animation_pause; - - this.anim_t = Number.POSITIVE_INFINITY; - let _, t; - for (let drifter of Object.values(this.data)) - { - [t, _, _] = drifter[0]; - if (t < this.anim_t) - { - this.anim_t = t; - } - } - - if (!this.selected.length) - { - this.setSelected(Object.keys(this.data)); - } - - this.anim_0 = this.anim_t; - - this.stepAnimate() - } - - stopAnimate() { - this.animating = false; - this.playButton.innerHTML = TEXT.animation_start; - clearTimeout(this.anim_h); - } - - stepAnimate() { - const deselectDead = true; - const deathTimeout = 7 * 3600 * 1000; - - if (this.animating) { - let trimmed = {}; - let alive = []; - let finished = true; - - for (let [name, path] of Object.entries(this.data)) - { - if (path.length) - { - let lastTime = path[path.length - 1][0]; - - if (lastTime > this.anim_t) { - finished = false; - } - - if (lastTime + deathTimeout > this.anim_t) - { - alive.push(name) - } - } - - let earlier = path.filter(v => v[0] <= this.anim_t); - - if (earlier.length) - { - trimmed[name] = earlier; - } - } - - if (deselectDead) - { - this.setSelected(this.selected.filter(n => alive.includes(n))); - } - - this.updateDate(this.anim_t); - this.drawDrifters(trimmed, this.anim_t, false); - - if (finished) - { - this.anim_t = this.anim_0; - this.setSelected([]); - } - else - { - this.anim_t += this.anim_s; - } - - this.anim_h = setTimeout(this.stepAnimate.bind(this), 50); - } - } - - zoomToRelevant() { - let relevant = this.selected.length ? this.selected : Object.keys(this.data); - let relevantData = relevant.map(n => this.data[n]); - - function select1(prev, curr) // select min/max lng/lat from trail - { - return [Math.min(prev[0], curr[1]), Math.min(prev[1], curr[2]), Math.max(prev[2], curr[1]), Math.max(prev[3], curr[2])]; - } - - function select4(prev, curr) // select min/max lng/lat from Array of min/max lng/lat - { - return [Math.min(prev[0], curr[0]), Math.min(prev[1], curr[1]), Math.max(prev[2], curr[2]), Math.max(prev[3], curr[3])]; - } - - let def = [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY]; - let bounds = relevantData.map(d => d.reduce(select1, def)).reduce(select4); - // let bounds = [-0.9, -91, -0.7, -90] - - function scale(m, a) { - let c = (a[0] + a[1]) / 2; - return a.map(x => m * (x - c) + c) - } - - let upper = [bounds[1], bounds[0]]; - let lower = [bounds[3], bounds[2]]; - - let scaleF = 1.5; - - upper = ol.proj.fromLonLat(upper); - lower = ol.proj.fromLonLat(lower); - - let lng = [lower[0], upper[0]]; - let lat = [lower[1], upper[1]]; - - lng = scale(scaleF, lng); - lat = scale(scaleF, lat); - - let bbox = [lng[1], lat[1], lng[0], lat[0]]; - - this.map.getView().fit(bbox); - } - - copyShareableURL(e) { - navigator.clipboard.writeText(this.generateQueryURL(false)).catch(this.showCopyModal.bind(this)); - } - - showCopyModal(e) { - prompt("Copy to clipboard: CTRL+C", this.generateQueryURL(false)) - } - - setupSocialButtons() { - $(".linkedin")[0].onclick = e => window.open(`https://www.linkedin.com/shareArticle?mini=true&url=${this.generateQueryURL(true)}`); - $(".facebook")[0].onclick = e => window.open(`https://www.facebook.com/sharer.php?u=${this.generateQueryURL(true)}&t=${this.generateQueryURL(true)}`); - $(".download")[0].onclick = e => window.open(DATA_URL + data_source); - let copypaste = $(".copypaste")[0]; - copypaste.onclick = this.copyShareableURL.bind(this) - } - - openlayersUnselectableFix() { - // OpenLayers unselectables, are not really unselectable, so we make them (note the pointer-events: all on the buttons themselves) - for (let el of $(".ol-control")) - { - el.style = "pointer-events: none"; - } - } + update() { + this.layer.setSource(new ol.source.Vector({ features: this.features })) + } } +class DrifterApp { + constructor(center, zoom) { + this.begin = null + this.data = null + this.selection = null + + this.animating = false + this.anim_t = null + this.anim_0 = null + this.anim_s = anim_freq * 3600 * 1000 + + let controls = [] + + let playControl + ;[this.playButton, playControl] = this.createOLButton( + TEXT.animation_start, + this.toggleAnimate.bind(this), + ) + controls.push(playControl) //animation button + + controls.push( + this.createOLButton( + TEXT.select_drifter, + this.createSearchModal.bind(this), + )[1], + ) + + this.container = document.getElementById('popup') + this.content = document.getElementById('popup-content') + this.closer = document.getElementById('popup-closer') + + this.overlay = new ol.Overlay({ + element: this.container, + autoPan: true, + autoPanAnimation: { + duration: 250, + }, + }) + + this.closer.onclick = this.hideTooltip.bind(this) + + this.setupSocialButtons() + + this.map = new ol.Map({ + target: 'map', + controls: controls, + overlays: [this.overlay], + layers: [new ol.layer.Tile({ source: new ol.source.OSM() })], + view: new ol.View({ center: center, zoom: zoom }), + }) + + this.map.on('singleclick', this.click.bind(this)) + + this.markers = new VLayer() + this.markers.addTo(this.map, 3) + + this.lines = new VLayer() + this.lines.addTo(this.map, 2) + + this.openlayersUnselectableFix() + } + + start() { + this.readQuery() + + let self = this + + this.refreshDrifters(function (data) { + self.processDrifters(data) + + self.zoomToRelevant() + + if (self.animating) { + self.startAnimate() + } else { + self.drawDrifters(self.data, Date.now(), true) + } + }) + } + + readQuery() { + this.animating = Number.parseInt(urlParams.get('a')) + let selection = urlParams.get('s') + + if (selection) { + this.selected = selection.split(',') + } else { + this.selected = [] + } -function levenshtein(a, b, i=null, j=null, m=null) { - if (i === null) { - i = a.length - 1; - } + this.begin = Date.parse(urlParams.get('b')) || 0 + } + + generateQueryURL(escape = false) { + urlParams.set('s', this.selected.join(',')) + urlParams.set('a', (this.animating ? 1 : 0).toString()) + + let ret = baseUrl + '?' + urlParams.toString() + return escape ? encodeURIComponent(ret) : ret + } + + updateDate(timestamp) { + let date = new Date(timestamp) + if (anim_freq < 24) { + var options = { + year: 'numeric', + month: 'long', + day: 'numeric', + hour: '2-digit', + minute: '2-digit', + } + } else { + var options = { year: 'numeric', month: 'long', day: 'numeric' } + } + document.getElementById('date').innerHTML = + TEXT.drifter_date + ' ' + date.toLocaleDateString('en-UK', options) + } + + processDrifters(data) { + let timeZoneDiff = new Date().getTimezoneOffset() * 60 * 1000 + for (let drifter of Object.values(data)) { + for (let evt of drifter) { + evt[0] = Date.parse(evt[0]) - timeZoneDiff + } + } - if (j === null) { - j = b.length - 1; - } + let new_data = {} - if (m === null) { - m = []; - } + for (let [name, path] of Object.entries(data)) { + let trimmed = path.filter((e) => e[0] > this.begin) + if (trimmed.length) { + new_data[name] = trimmed + } + } - if (i in m && j in m[i]) { - return m[i][j]; - } + this.data = new_data + } + + refreshDrifters(callback) { + $.getJSON(DATA_URL + data_source, callback) + } - if (i === -1) - { - return j + 1; - } + createOLButton(text, callback) { + let button = document.createElement('button') + button.innerHTML = text + + button.addEventListener('click', callback, false) + button.className = 'ol-button' + + let container = document.createElement('div') + container.className = 'ol-unselectable ol-control' + container.appendChild(button) + + return [ + button, + new ol.control.Control({ + element: container, + }), + ] + } + + createSearchModal() { + let search = prompt(TEXT.drifter_prompt) + + if (search === null) { + return + } + + let result = this.searchDrifterByName(search) + + if (result.length) { + this.showAutocorrectModal(result) + } + } - if (j === -1) - { - return i + 1; - } + showAutocorrectModal(result) { + let modalButtons = $('.correct-buttons')[0] + modalButtons.innerHTML = '' - if (!(i in m)) - { - m[i] = []; - } + let self = this + + for (let name of result) { + let button = document.createElement('button') + button.innerHTML = name + button.addEventListener('click', function (event) { + self.setSelected([name]) + modal.style.display = 'none' + }) + modalButtons.appendChild(button) + } + + let modal = $('.correct-modal')[0] + modal.style.display = 'block' + } + + searchDrifterByName(search) { + // do we process regex? if we would, assume no autocorrect, as the user knows what they're doing + let names = Object.keys(this.data) + + let exact = names.filter((x) => x === search) + if (exact.length) { + this.setSelected(exact) + return [] + } + + let close = names.filter((x) => levenshtein(x, search) < 4) + + if (close.length) { + if (close.length === 1) { + //if it's close and the only one eligible, assume it's that one + this.setSelected(close) + return [] + } + + return close + } + + return [] + } + + colourMap(name, n) { + let i = Object.keys(this.data).indexOf(name) + + if (this.selected.length && !this.selected.includes(name)) { + return ['rgba(127, 127, 127, 0.4)', 0.4, 0] + } else { + let h = (parseFloat(i) / (n + 1)) * 360 + h = h.toFixed(2) + + return [`hsl(${h}, 100%, 50%)`, 1.0, 1] + } + } + + redrawDrifters() { + this.markers.clear() + this.lines.clear() + this.drawDrifters(this.data, Date.now(), true) + } + + drawDrifters(data, drawdate, with_tx) { + this.markers.clear() + this.lines.clear() + + let n = Object.keys(this.data).length + let now = 0 + + for (let [name, path] of Object.entries(data)) { + let [colour, opacity, zindex] = this.colourMap(name, n) + let last = path[path.length - 1] + + if (!last) { + continue + } + + let [t, lat, lng] = last + + if (t > now) { + now = t + } + + let hourdiff = Math.floor((drawdate - t) / (60 * 60 * 1000)) + let src = 'drifters/marker.svg' + if (hourdiff > 24 || with_tx == false) { + src = 'drifters/marker_notx.svg' + } + let mark = this.createMarker(colour, lat, lng, opacity, zindex, src) + let line = this.createLine(colour, path, opacity, zindex) + + mark.drifterName = name + line.drifterName = name + mark.lastTime = t + + this.markers.add(mark, name) + this.lines.add(line, name) + } + + this.updateDate(now) + + this.markers.update() + this.lines.update() + } + + svgAlphaFix(colour, opacity) { + if (opacity < 1.0) { + // svgs have a quirky interaction with rgba opacity, so avoid that + let match = colour.match('rgba\\((.*),(.*),(.*),(.*)\\)') + + if (match) { + let [_, r, g, b, a] = match + + colour = `rgb(${r}, ${g}, ${b})` + opacity = parseFloat(a) + } + } + + return [colour, opacity] + } + + markerScale(mstyle, istyle, feature, resolution) { + resolution = Math.max(400, Math.min(resolution, 2000)) + + let base = 200 + istyle.setScale(base / (1 + resolution)) + + return [mstyle] + } - m[i][j] = Math.min( - levenshtein(a, b, i - 1, j, m) + 1, - levenshtein(a, b, i, j - 1, m) + 1, - levenshtein(a, b, i - 1, j - 1, m) + (a[i] === b[j] ? 0 : 1)); + createMarker(colour, lat, lng, opacity = 1.0, z = 1, src) { + ;[lat, lng] = [parseFloat(lat), parseFloat(lng)] - return m[i][j]; + let marker = new ol.Feature({ + name: 'marker', + type: 'icon', + geometry: new ol.geom.Point(ol.proj.fromLonLat([lng, lat])), + }) + + ;[colour, opacity] = this.svgAlphaFix(colour, opacity) + + let iconStyle = new ol.style.Icon({ + anchor: [0.5, 0.5], + src: src, + scale: 0.1, + opacity: opacity, + color: colour, + }) + + let markerStyle = new ol.style.Style({ + image: iconStyle, + zIndex: z, + }) + + marker.setStyle(this.markerScale.bind(this, markerStyle, iconStyle)) + + return marker + } + + moveMarker(name, lat, lng) { + let marker = this.markers.named[name] + + if (marker) { + marker.setGeometry(new ol.geom.Point(ol.proj.fromLonLat([lng, lat]))) + } + } + + createLine(colour, path, opacity = 1.0, z = 1) { + let points = [] + + for (let [_, lat, lng] of path) { + points.push(ol.proj.fromLonLat([lng, lat])) + } + + let line = new ol.Feature({ geometry: new ol.geom.LineString(points) }) + line.setStyle( + new ol.style.Style({ + stroke: new ol.style.Stroke({ color: colour, width: 2 }), + opacity: opacity, + zIndex: z, + }), + ) + + return line + } + + click(evt) { + let pixel = evt.pixel + let feature = this.map.forEachFeatureAtPixel(pixel, function (f) { + return f + }) + + let shiftDown = evt.originalEvent.shiftKey + + if (feature) { + if (shiftDown) { + let name = feature.drifterName + + if (this.selected.includes(name)) { + this.selected = this.selected.filter((s) => s !== name) + } else { + this.selected.push(feature.drifterName) + } + + this.setSelected(this.selected) + + if (!this.animating) { + this.redrawDrifters() + } + + return this.hideTooltip(evt) + } else { + this.setSelected([feature.drifterName]) + return this.showTooltip(feature.drifterName) + } + } else { + if (!shiftDown) { + this.setSelected([]) + } + + return this.hideTooltip(evt) + } + } + + setSelected(selection) { + let prev = this.selected + this.selected = selection + + if ( + !( + prev.length === selection.length && + prev.every((e) => selection.includes(e)) + ) + ) { + if (!this.animating) { + this.redrawDrifters() + } + } + } + + showTooltip(drifterName) { + let feature = this.markers.named[drifterName] + + let coordinate = feature.getGeometry().getCoordinates() + + let name = feature.drifterName + let hdms = ol.coordinate.toStringHDMS(ol.proj.toLonLat(coordinate)) + let lastTime = new Date(feature.lastTime) + let lastTimediff = Date.now() - lastTime + let hourdiff = Math.floor(lastTimediff / (60 * 60 * 1000)) + if (hourdiff > 24) { + this.content.innerHTML = `

Name: ${name}
Coordinates: ${hdms}
Last contact: ${Math.floor(hourdiff / 24)} days ago` + } else { + this.content.innerHTML = `

Name: ${name}
Coordinates: ${hdms}
Last contact: ${hourdiff} hours ago (${lastTime.toLocaleTimeString()})` + } + this.overlay.setPosition(coordinate) + } + + hideTooltip(evt) { + this.overlay.setPosition(undefined) + this.closer.blur() + return false + } + + toggleAnimate(e) { + if (this.animating) { + this.stopAnimate() + } else if (this.anim_t !== null) { + this.animating = true + this.playButton.innerHTML = TEXT.animation_pause + this.stepAnimate() + } else { + this.startAnimate() + } + } + + startAnimate() { + this.animating = true + + if (this.anim_t) { + return + } + + this.playButton.innerHTML = TEXT.animation_pause + + this.anim_t = Number.POSITIVE_INFINITY + let _, t + for (let drifter of Object.values(this.data)) { + ;[t, _, _] = drifter[0] + if (t < this.anim_t) { + this.anim_t = t + } + } + + if (!this.selected.length) { + this.setSelected(Object.keys(this.data)) + } + + this.anim_0 = this.anim_t + + this.stepAnimate() + } + + stopAnimate() { + this.animating = false + this.playButton.innerHTML = TEXT.animation_start + clearTimeout(this.anim_h) + } + + stepAnimate() { + const deselectDead = true + const deathTimeout = 7 * 3600 * 1000 + + if (this.animating) { + let trimmed = {} + let alive = [] + let finished = true + + for (let [name, path] of Object.entries(this.data)) { + if (path.length) { + let lastTime = path[path.length - 1][0] + + if (lastTime > this.anim_t) { + finished = false + } + + if (lastTime + deathTimeout > this.anim_t) { + alive.push(name) + } + } + + let earlier = path.filter((v) => v[0] <= this.anim_t) + + if (earlier.length) { + trimmed[name] = earlier + } + } + + if (deselectDead) { + this.setSelected(this.selected.filter((n) => alive.includes(n))) + } + + this.updateDate(this.anim_t) + this.drawDrifters(trimmed, this.anim_t, false) + + if (finished) { + this.anim_t = this.anim_0 + this.setSelected([]) + } else { + this.anim_t += this.anim_s + } + + this.anim_h = setTimeout(this.stepAnimate.bind(this), 50) + } + } + + zoomToRelevant() { + let relevant = this.selected.length ? this.selected : Object.keys(this.data) + let relevantData = relevant.map((n) => this.data[n]) + + function select1(prev, curr) { + // select min/max lng/lat from trail + return [ + Math.min(prev[0], curr[1]), + Math.min(prev[1], curr[2]), + Math.max(prev[2], curr[1]), + Math.max(prev[3], curr[2]), + ] + } + + function select4(prev, curr) { + // select min/max lng/lat from Array of min/max lng/lat + return [ + Math.min(prev[0], curr[0]), + Math.min(prev[1], curr[1]), + Math.max(prev[2], curr[2]), + Math.max(prev[3], curr[3]), + ] + } + + let def = [ + Number.POSITIVE_INFINITY, + Number.POSITIVE_INFINITY, + Number.NEGATIVE_INFINITY, + Number.NEGATIVE_INFINITY, + ] + let bounds = relevantData.map((d) => d.reduce(select1, def)).reduce(select4) + // let bounds = [-0.9, -91, -0.7, -90] + + function scale(m, a) { + let c = (a[0] + a[1]) / 2 + return a.map((x) => m * (x - c) + c) + } + + let upper = [bounds[1], bounds[0]] + let lower = [bounds[3], bounds[2]] + + let scaleF = 1.5 + + upper = ol.proj.fromLonLat(upper) + lower = ol.proj.fromLonLat(lower) + + let lng = [lower[0], upper[0]] + let lat = [lower[1], upper[1]] + + lng = scale(scaleF, lng) + lat = scale(scaleF, lat) + + let bbox = [lng[1], lat[1], lng[0], lat[0]] + + this.map.getView().fit(bbox) + } + + copyShareableURL(e) { + navigator.clipboard + .writeText(this.generateQueryURL(false)) + .catch(this.showCopyModal.bind(this)) + } + + showCopyModal(e) { + prompt('Copy to clipboard: CTRL+C', this.generateQueryURL(false)) + } + + setupSocialButtons() { + $('.linkedin')[0].onclick = (e) => + window.open( + `https://www.linkedin.com/shareArticle?mini=true&url=${this.generateQueryURL(true)}`, + ) + $('.facebook')[0].onclick = (e) => + window.open( + `https://www.facebook.com/sharer.php?u=${this.generateQueryURL(true)}&t=${this.generateQueryURL(true)}`, + ) + $('.download')[0].onclick = (e) => window.open(DATA_URL + data_source) + let copypaste = $('.copypaste')[0] + copypaste.onclick = this.copyShareableURL.bind(this) + } + + openlayersUnselectableFix() { + // OpenLayers unselectables, are not really unselectable, so we make them (note the pointer-events: all on the buttons themselves) + for (let el of $('.ol-control')) { + el.style = 'pointer-events: none' + } + } } +function levenshtein(a, b, i = null, j = null, m = null) { + if (i === null) { + i = a.length - 1 + } -let modal = $(".correct-modal")[0]; -let span = $(".correct-close")[0]; + if (j === null) { + j = b.length - 1 + } -span.onclick = function() { - modal.style.display = "none"; -}; + if (m === null) { + m = [] + } -window.onclick = function(event) { - if (event.target === modal) { - modal.style.display = "none"; + if (i in m && j in m[i]) { + return m[i][j] } -}; + if (i === -1) { + return j + 1 + } -const MAP_CENTER = [ 5, 52]; + if (j === -1) { + return i + 1 + } + + if (!(i in m)) { + m[i] = [] + } -let referrer = document.referrer; -let query; -let iframeQuery; -let baseUrl; + m[i][j] = Math.min( + levenshtein(a, b, i - 1, j, m) + 1, + levenshtein(a, b, i, j - 1, m) + 1, + levenshtein(a, b, i - 1, j - 1, m) + (a[i] === b[j] ? 0 : 1), + ) -if (referrer) -{ - baseUrl = referrer || window.location.origin + window.location.pathname; + return m[i][j] +} - let split = baseUrl.split("/"); - split = split[split.length - 1]; - if (split.includes("?")) { - split = split.split("?"); - query = split[split.length - 1]; - } - else - { - query = ""; - } +let modal = $('.correct-modal')[0] +let span = $('.correct-close')[0] - iframeQuery = document.location.search; +span.onclick = function () { + modal.style.display = 'none' } -else -{ - baseUrl = window.location.origin + window.location.pathname; - console.log(TEXT.no_referrer); - query = window.location.search; - iframeQuery = query; + +window.onclick = function (event) { + if (event.target === modal) { + modal.style.display = 'none' + } } -baseUrl = baseUrl.split("?")[0]; -const urlParams = new URLSearchParams(query); -const iframeParams = new URLSearchParams(iframeQuery); +const MAP_CENTER = [5, 52] + +let referrer = document.referrer +let query +let iframeQuery +let baseUrl + +if (referrer) { + baseUrl = referrer || window.location.origin + window.location.pathname -let data_source = iframeParams.get("fn"); -if (! data_source){ - data_source = "driftersGI.json"; + let split = baseUrl.split('/') + split = split[split.length - 1] + if (split.includes('?')) { + split = split.split('?') + query = split[split.length - 1] + } else { + query = '' + } + + iframeQuery = document.location.search +} else { + baseUrl = window.location.origin + window.location.pathname + console.log(TEXT.no_referrer) + query = window.location.search + iframeQuery = query } +baseUrl = baseUrl.split('?')[0] -let anim_freq = iframeParams.get("anim_freq"); -if (! anim_freq){ - anim_freq = 12 +const urlParams = new URLSearchParams(query) +const iframeParams = new URLSearchParams(iframeQuery) + +let data_source = iframeParams.get('fn') +if (!data_source) { + data_source = 'driftersGI.json' } -let app = new DrifterApp(ol.proj.fromLonLat(MAP_CENTER), 7.0); +let anim_freq = iframeParams.get('anim_freq') +if (!anim_freq) { + anim_freq = 12 +} -app.start(); +let app = new DrifterApp(ol.proj.fromLonLat(MAP_CENTER), 7.0) +app.start() diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 00000000..a4a7b3f5 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 00000000..cd65e318 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,26 @@ +import nextMDX from "@next/mdx" +import rehypeSlug from "rehype-slug" + +const withMDX = nextMDX({ + extension: /\.mdx?$/, + options: { + remarkPlugins: [], + rehypePlugins: [rehypeSlug], + // If you use `MDXProvider`, uncomment the following line. + providerImportSource: "@mdx-js/react", + format: 'mdx', + }, +}) + +const nextConfig = { + // Append the default value with md extensions + pageExtensions: ["ts", "tsx", "js", "jsx", "md", "mdx"], + images: { + domains: ["raw.githubusercontent.com", "numpy.org", "dask.org", "chainer.org"], + }, + output: 'export', + basePath: process.env.NODE_ENV === 'production' ? '/oceanparcels_website' : '', + assetPrefix: process.env.NODE_ENV === 'production' ? '/oceanparcels_website/' : '', +} + +export default withMDX(nextConfig) diff --git a/ol-v6.5.0-dist/ol.css b/ol-v6.5.0-dist/ol.css deleted file mode 100644 index 3984d24b..00000000 --- a/ol-v6.5.0-dist/ol.css +++ /dev/null @@ -1,2 +0,0 @@ -.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:12px;z-Index:11;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-text{position:absolute;font-size:14px;text-align:center;bottom:25px;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;box-sizing:border-box;border:1px solid #000}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move} -/*# sourceMappingURL=ol.css.map */ \ No newline at end of file diff --git a/ol-v6.5.0-dist/ol.js b/ol-v6.5.0-dist/ol.js deleted file mode 100644 index f1f1fb35..00000000 --- a/ol-v6.5.0-dist/ol.js +++ /dev/null @@ -1,9 +0,0 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ol=e():t.ol=e()}(window,(function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=10)}([function(t,e,r){"use strict";(function(t,n){r.d(e,"a",(function(){return J})),r.d(e,"b",(function(){return br})),r.d(e,"c",(function(){return $r})),r.d(e,"d",(function(){return hr})),r.d(e,"e",(function(){return Jr})),r.d(e,"f",(function(){return i}));var i={$version:8,$root:{version:{required:!0,type:"enum",values:[8],doc:"Style specification version number. Must be 8.",example:8},name:{type:"string",doc:"A human-readable name for the style.",example:"Bright"},metadata:{type:"*",doc:"Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'."},center:{type:"array",value:"number",doc:"Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:[-73.9749,40.7736]},zoom:{type:"number",doc:"Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:12.5},bearing:{type:"number",default:0,period:360,units:"degrees",doc:'Default bearing, in degrees. The bearing is the compass direction that is "up"; for example, a bearing of 90° orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).',example:29},pitch:{type:"number",default:0,units:"degrees",doc:"Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:50},light:{type:"light",doc:"The global light source.",example:{anchor:"viewport",color:"white",intensity:.4}},terrain:{type:"terrain",doc:"A global modifier that elevates layers and markers based on a DEM data source."},sources:{required:!0,type:"sources",doc:"Data source specifications.",example:{"mapbox-streets":{type:"vector",url:"mapbox://mapbox.mapbox-streets-v6"}}},sprite:{type:"string",doc:"A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).",example:"mapbox://sprites/mapbox/bright-v8"},glyphs:{type:"string",doc:"A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).",example:"mapbox://fonts/mapbox/{fontstack}/{range}.pbf"},transition:{type:"transition",doc:"A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.",example:{duration:300,delay:0}},layers:{required:!0,type:"array",value:"layer",doc:"Layers will be drawn in the order of this array.",example:[{id:"water",source:"mapbox-streets","source-layer":"water",type:"fill",paint:{"fill-color":"#00ffff"}}]}},sources:{"*":{type:"source",doc:"Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided."}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{doc:"A vector tile source."}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},scheme:{type:"enum",values:{xyz:{doc:"Slippy map tilenames scheme."},tms:{doc:"OSGeo spec scheme."}},default:"xyz",doc:"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},promoteId:{type:"promoteId",doc:"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`. If specified as a string for a vector tile source, the same property is used across all its source layers."},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_raster:{type:{required:!0,type:"enum",values:{raster:{doc:"A raster tile source."}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},tileSize:{type:"number",default:512,units:"pixels",doc:"The minimum visual size to display tiles for this layer. Only configurable for raster layers."},scheme:{type:"enum",values:{xyz:{doc:"Slippy map tilenames scheme."},tms:{doc:"OSGeo spec scheme."}},default:"xyz",doc:"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{doc:"A RGB-encoded raster DEM source"}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},tileSize:{type:"number",default:512,units:"pixels",doc:"The minimum visual size to display tiles for this layer. Only configurable for raster layers."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},encoding:{type:"enum",values:{terrarium:{doc:"Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info."},mapbox:{doc:"Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info."}},default:"mapbox",doc:"The encoding used by this source. Mapbox Terrain RGB is used by default"},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{doc:"A GeoJSON data source."}},doc:"The data type of the GeoJSON source."},data:{type:"*",doc:"A URL to a GeoJSON file, or inline GeoJSON."},maxzoom:{type:"number",default:18,doc:"Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels)."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},buffer:{type:"number",default:128,maximum:512,minimum:0,doc:"Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance."},filter:{type:"*",doc:"An expression for filtering features prior to processing them for rendering."},tolerance:{type:"number",default:.375,doc:"Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance)."},cluster:{type:"boolean",default:!1,doc:"If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\n * `cluster` Is `true` if the point is a cluster \n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\n * `point_count` Number of original points grouped into this cluster\n * `point_count_abbreviated` An abbreviated point count"},clusterRadius:{type:"number",default:50,minimum:0,doc:"Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile."},clusterMaxZoom:{type:"number",doc:"Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered). Clusters are re-evaluated at integer zoom levels so setting clusterMaxZoom to 14 means the clusters will be displayed until z15."},clusterMinPoints:{type:"number",doc:"Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`."},clusterProperties:{type:"*",doc:'An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{"property_name": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `"+"` or `"max"`) — it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\n\nExample: `{"sum": ["+", ["get", "scalerank"]]}`.\n\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `["accumulated"]` value, e.g.:\n`{"sum": [["+", ["accumulated"], ["get", "sum"]], ["get", "scalerank"]]}`'},lineMetrics:{type:"boolean",default:!1,doc:"Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values."},generateId:{type:"boolean",default:!1,doc:"Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values."},promoteId:{type:"promoteId",doc:"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`."}},source_video:{type:{required:!0,type:"enum",values:{video:{doc:"A video data source."}},doc:"The data type of the video source."},urls:{required:!0,type:"array",value:"string",doc:"URLs to video content in order of preferred format."},coordinates:{required:!0,doc:"Corners of video specified in longitude, latitude pairs.",type:"array",length:4,value:{type:"array",length:2,value:"number",doc:"A single longitude, latitude pair."}}},source_image:{type:{required:!0,type:"enum",values:{image:{doc:"An image data source."}},doc:"The data type of the image source."},url:{required:!0,type:"string",doc:"URL that points to an image."},coordinates:{required:!0,doc:"Corners of image specified in longitude, latitude pairs.",type:"array",length:4,value:{type:"array",length:2,value:"number",doc:"A single longitude, latitude pair."}}},layer:{id:{type:"string",doc:"Unique layer name.",required:!0},type:{type:"enum",values:{fill:{doc:"A filled polygon with an optional stroked border.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},line:{doc:"A stroked line.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},symbol:{doc:"An icon or a text label.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},circle:{doc:"A filled circle.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},heatmap:{doc:"A heatmap.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"fill-extrusion":{doc:"An extruded (3D) polygon.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},raster:{doc:"Raster map textures such as satellite imagery.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},hillshade:{doc:"Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},background:{doc:"The background color or pattern of the map.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},sky:{doc:"A spherical dome around the map that is always rendered behind all other layers.","sdk-support":{"basic functionality":{js:"2.0.0"}}}},doc:"Rendering type of this layer.",required:!0},metadata:{type:"*",doc:"Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'."},source:{type:"string",doc:"Name of a source description to be used for this layer. Required for all layer types except `background`."},"source-layer":{type:"string",doc:"Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources."},minzoom:{type:"number",minimum:0,maximum:24,doc:"The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden."},maxzoom:{type:"number",minimum:0,maximum:24,doc:"The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden."},filter:{type:"filter",doc:"A expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `feature-state` expression is not supported in filter expressions."},layout:{type:"layout",doc:"Layout properties for the layer."},paint:{type:"paint",doc:"Default paint properties for this layer."}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background","layout_sky"],layout_background:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_sky:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"},"data-driven styling":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.2.0",ios:"5.9.0",macos:"0.16.0"},"data-driven styling":{js:"1.2.0",android:"9.2.0",ios:"5.9.0",macos:"0.16.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},"property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},"property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{doc:"A cap with a squared-off end which is drawn to the exact endpoint of the line."},round:{doc:"A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."},square:{doc:"A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."}},default:"butt",doc:"The display of line endings.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{doc:"A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."},round:{doc:"A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."},miter:{doc:"A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet."}},default:"miter",doc:"The display of lines when joining.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,doc:"Used to automatically convert miter joins to bevel joins for sharp angles.",requires:[{"line-join":"miter"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,doc:"Used to automatically convert round joins to miter joins for shallow angles.",requires:[{"line-join":"round"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"},"data-driven styling":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{doc:"The label is placed at the point where the geometry is located."},line:{doc:"The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries."},"line-center":{doc:"The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries."}},default:"point",doc:"Label placement relative to its geometry.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`line-center` value":{js:"0.47.0",android:"6.4.0",ios:"4.3.0",macos:"0.10.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",doc:"Distance between two symbol anchors.",requires:[{"symbol-placement":"line"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,doc:"If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first. When `icon-allow-overlap` or `text-allow-overlap` is `false`, features with a lower sort key will have priority during placement. When `icon-allow-overlap` or `text-allow-overlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.","sdk-support":{"basic functionality":{js:"0.53.0",android:"7.4.0",ios:"4.11.0",macos:"0.14.0"},"data-driven styling":{js:"0.53.0",android:"7.4.0",ios:"4.11.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{doc:"Sorts symbols by `symbol-sort-key` if set. Otherwise, sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."},"viewport-y":{doc:"Sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."},source:{doc:"Sorts symbols by `symbol-sort-key` if set. Otherwise, no sorting is applied; symbols are rendered in the same order as the source data."}},default:"auto",doc:"Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their y-position relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbol-sort-key`.","sdk-support":{"basic functionality":{js:"0.49.0",android:"6.6.0",ios:"4.5.0",macos:"0.12.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,doc:"If true, the icon will be visible even if it collides with other previously drawn symbols.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,doc:"If true, other symbols can be visible even if they collide with the icon.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,doc:"If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.",requires:["icon-image","text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{doc:"When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line."},viewport:{doc:"Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."},auto:{doc:"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."}},default:"auto",doc:"In combination with `symbol-placement`, determines the rotation behavior of icons.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",doc:"Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{doc:"The icon is displayed at its intrinsic aspect ratio."},width:{doc:"The icon is scaled in the x-dimension to fit the width of the text."},height:{doc:"The icon is scaled in the y-dimension to fit the height of the text."},both:{doc:"The icon is scaled in both x- and y-dimensions."}},default:"none",doc:"Scales the icon to fit around the associated text.",requires:["icon-image","text-field"],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"},"stretchable icons":{js:"1.6.0",android:"9.2.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",doc:"Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",doc:"Name of image in sprite to use for drawing an image background.",tokens:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",doc:"Rotates the icon clockwise.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.21.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",doc:"Size of the additional area around the icon bounding box used for detecting symbol collisions.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,doc:"If true, the icon may be flipped to prevent it from being rendered upside-down.",requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],doc:"Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{doc:"The center of the icon is placed closest to the anchor."},left:{doc:"The left side of the icon is placed closest to the anchor."},right:{doc:"The right side of the icon is placed closest to the anchor."},top:{doc:"The top of the icon is placed closest to the anchor."},bottom:{doc:"The bottom of the icon is placed closest to the anchor."},"top-left":{doc:"The top left corner of the icon is placed closest to the anchor."},"top-right":{doc:"The top right corner of the icon is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the icon is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the icon is placed closest to the anchor."}},default:"center",doc:"Part of the icon placed closest to the anchor.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{doc:"The icon is aligned to the plane of the map."},viewport:{doc:"The icon is aligned to the plane of the viewport."},auto:{doc:"Automatically matches the value of `icon-rotation-alignment`."}},default:"auto",doc:"Orientation of icon when map is pitched.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{doc:"The text is aligned to the plane of the map."},viewport:{doc:"The text is aligned to the plane of the viewport."},auto:{doc:"Automatically matches the value of `text-rotation-alignment`."}},default:"auto",doc:"Orientation of text when map is pitched.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{doc:"When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line."},viewport:{doc:"Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."},auto:{doc:"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."}},default:"auto",doc:"In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,doc:"Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],doc:"Font stack to use for displaying text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",doc:"Font size.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",doc:"The maximum line width for text wrapping.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",doc:"Text leading value for multi-line text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",doc:"Text tracking amount.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{doc:"The text is aligned towards the anchor position."},left:{doc:"The text is aligned to the left."},center:{doc:"The text is centered."},right:{doc:"The text is aligned to the right."}},default:"center",doc:"Text justification options.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"},auto:{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,doc:"Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which defaults to using the two-dimensional `text-offset` if present.","sdk-support":{"basic functionality":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"},"data-driven styling":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{doc:"The center of the text is placed closest to the anchor."},left:{doc:"The left side of the text is placed closest to the anchor."},right:{doc:"The right side of the text is placed closest to the anchor."},top:{doc:"The top of the text is placed closest to the anchor."},bottom:{doc:"The bottom of the text is placed closest to the anchor."},"top-left":{doc:"The top left corner of the text is placed closest to the anchor."},"top-right":{doc:"The top right corner of the text is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the text is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the text is placed closest to the anchor."}},requires:["text-field",{"symbol-placement":["point"]}],doc:"To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the renderer will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` or the two-dimensional `text-offset`.","sdk-support":{"basic functionality":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{doc:"The center of the text is placed closest to the anchor."},left:{doc:"The left side of the text is placed closest to the anchor."},right:{doc:"The right side of the text is placed closest to the anchor."},top:{doc:"The top of the text is placed closest to the anchor."},bottom:{doc:"The bottom of the text is placed closest to the anchor."},"top-left":{doc:"The top left corner of the text is placed closest to the anchor."},"top-right":{doc:"The top right corner of the text is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the text is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the text is placed closest to the anchor."}},default:"center",doc:"Part of the text placed closest to the anchor.",requires:["text-field",{"!":"text-variable-anchor"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",doc:"Maximum angle change between adjacent characters.",requires:["text-field",{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{doc:"If a text's language supports horizontal writing mode, symbols with point placement would be laid out horizontally."},vertical:{doc:"If a text's language supports vertical writing mode, symbols with point placement would be laid out vertically."}},doc:"The property allows control over a symbol's orientation. Note that the property values act as a hint, so that a symbol whose language doesn’t support the provided orientation will be laid out in its natural orientation. Example: English point symbol will be rendered horizontally even if array value contains single 'vertical' enum value. The order of elements in an array define priority order for the placement of an orientation variant.",requires:["text-field",{"symbol-placement":["point"]}],"sdk-support":{"basic functionality":{js:"1.3.0",android:"8.3.0",ios:"5.3.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",doc:"Rotates the text clockwise.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",doc:"Size of the additional area around the text bounding box used for detecting symbol collisions.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,doc:"If true, the text may be flipped vertically to prevent it from being rendered upside-down.",requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{doc:"The text is not altered."},uppercase:{doc:"Forces all letters to be displayed in uppercase."},lowercase:{doc:"Forces all letters to be displayed in lowercase."}},default:"none",doc:"Specifies how to capitalize text, similar to the CSS `text-transform` property.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",doc:"Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up. If used with text-variable-anchor, input values will be taken as absolute values. Offsets along the x- and y-axis will be applied automatically based on the anchor position.",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,doc:"If true, the text will be visible even if it collides with other previously drawn symbols.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,doc:"If true, other symbols can be visible even if they collide with the text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,doc:"If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.",requires:["text-field","icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},"property-type":"constant"}},filter:{type:"array",value:"*",doc:"A filter selects specific features from a layer."},filter_operator:{type:"enum",values:{"==":{doc:'`["==", key, value]` equality: `feature[key] = value`'},"!=":{doc:'`["!=", key, value]` inequality: `feature[key] ≠ value`'},">":{doc:'`[">", key, value]` greater than: `feature[key] > value`'},">=":{doc:'`[">=", key, value]` greater than or equal: `feature[key] ≥ value`'},"<":{doc:'`["<", key, value]` less than: `feature[key] < value`'},"<=":{doc:'`["<=", key, value]` less than or equal: `feature[key] ≤ value`'},in:{doc:'`["in", key, v0, ..., vn]` set inclusion: `feature[key] ∈ {v0, ..., vn}`'},"!in":{doc:'`["!in", key, v0, ..., vn]` set exclusion: `feature[key] ∉ {v0, ..., vn}`'},all:{doc:'`["all", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`'},any:{doc:'`["any", f0, ..., fn]` logical `OR`: `f0 ∨ ... ∨ fn`'},none:{doc:'`["none", f0, ..., fn]` logical `NOR`: `¬f0 ∧ ... ∧ ¬fn`'},has:{doc:'`["has", key]` `feature[key]` exists'},"!has":{doc:'`["!has", key]` `feature[key]` does not exist'},within:{doc:'`["within", object]` feature geometry is within object geometry'}},doc:"The filter operator."},geometry_type:{type:"enum",values:{Point:{doc:"Filter to point geometries."},LineString:{doc:"Filter to line geometries."},Polygon:{doc:"Filter to polygon geometries."}},doc:"The geometry type for the filter to select."},function:{expression:{type:"expression",doc:"An expression."},stops:{type:"array",doc:"An array of stops.",value:"function_stop"},base:{type:"number",default:1,minimum:0,doc:"The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly."},property:{type:"string",doc:"The name of a feature property to use as the function input.",default:"$zoom"},type:{type:"enum",values:{identity:{doc:"Return the input value as the output value."},exponential:{doc:"Generate an output by interpolating between stops just less than and just greater than the function input."},interval:{doc:"Return the output value of the stop just less than the function input."},categorical:{doc:"Return the output value of the stop equal to the function input."}},doc:"The interpolation strategy to use in function evaluation.",default:"exponential"},colorSpace:{type:"enum",values:{rgb:{doc:"Use the RGB color space to interpolate color values"},lab:{doc:"Use the LAB color space to interpolate color values."},hcl:{doc:"Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually."}},doc:"The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.",default:"rgb"},default:{type:"*",required:!1,doc:"A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\n* In categorical functions, when the feature value does not match any of the stop domain values.\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\nIf no default is provided, the style property's default is used in these circumstances."}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2,doc:"Zoom level and value pair."},expression:{type:"array",value:"*",minimum:1,doc:"An expression defines a function that can be used for data-driven style properties or feature filters."},expression_name:{doc:"",type:"enum",values:{let:{doc:'Binds expressions to named variables, which can then be referenced in the result expression using ["var", "variable_name"].',group:"Variable binding","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},var:{doc:'References variable bound using "let".',group:"Variable binding","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},literal:{doc:"Provides a literal array or object value.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},array:{doc:"Asserts that the input is an array (optionally with a specific item type and length). If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},at:{doc:"Retrieves an item from an array.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},in:{doc:"Determines whether an item exists in an array or a substring exists in a string.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.6.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}}},"index-of":{doc:"Returns the first position at which an item can be found in an array or a substring can be found in a string, or `-1` if the input cannot be found. Accepts an optional index from where to begin the search.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.10.0"}}},slice:{doc:"Returns an item from an array or a substring from a string from a specified start index, or between a start index and an end index if set. The return value is inclusive of the start index but not of the end index.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.10.0"}}},case:{doc:"Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},match:{doc:'Selects the output whose label value matches the input value, or the fallback value if no match is found. The input can be any expression (e.g. `["get", "building_type"]`). Each label must be either:\n - a single literal value; or\n - an array of literal values, whose values must be all strings or all numbers (e.g. `[100, 101]` or `["c", "b"]`). The input matches if any of the values in the array matches, similar to the `"in"` operator.\nEach label must be unique. If the input type does not match the type of the labels, the result will be the fallback value.',group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},coalesce:{doc:"Evaluates each expression in turn until the first non-null value is obtained, and returns that value.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},step:{doc:'Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first output if the input is less than the first stop.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},interpolate:{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array`, or `color`.\n\nInterpolation types:\n- `["linear"]`: Interpolates linearly between the pair of stops just less than and just greater than the input.\n- `["exponential", base]`: Interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\n- `["cubic-bezier", x1, y1, x2, y2]`: Interpolates using the cubic bezier curve defined by the given control points.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"interpolate-hcl":{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.49.0"}}},"interpolate-lab":{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.49.0"}}},ln2:{doc:"Returns mathematical constant ln(2).",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},pi:{doc:"Returns the mathematical constant pi.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},e:{doc:"Returns the mathematical constant e.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},typeof:{doc:"Returns a string describing the type of the given value.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},string:{doc:"Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},number:{doc:"Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},boolean:{doc:"Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},object:{doc:"Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},collator:{doc:"Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.",group:"Types","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},format:{doc:'Returns a `formatted` string for displaying mixed-format text in the `text-field` property. The input may contain a string literal or expression, including an [`\'image\'`](#types-image) expression. Strings may be followed by a style override object that supports the following properties:\n- `"text-font"`: Overrides the font stack specified by the root layout property.\n- `"text-color"`: Overrides the color specified by the root paint property.\n- `"font-scale"`: Applies a scaling factor on `text-size` as specified by the root layout property.',group:"Types","sdk-support":{"basic functionality":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"text-font":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"font-scale":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"text-color":{js:"1.3.0",android:"7.3.0",ios:"4.10.0",macos:"0.14.0"},image:{js:"1.6.0",android:"8.6.0",ios:"5.7.0",macos:"0.15.0"}}},image:{doc:"Returns an `image` type for use in `icon-image`, `*-pattern` entries and as a section in the `format` expression. If set, the `image` argument will check that the requested image exists in the style and will return either the resolved image name or `null`, depending on whether or not the image is currently in the style. This validation process is synchronous and requires the image to have been added to the style before requesting it in the `image` argument.",group:"Types","sdk-support":{"basic functionality":{js:"1.4.0",android:"8.6.0",ios:"5.7.0",macos:"0.15.0"}}},"number-format":{doc:"Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.",group:"Types","sdk-support":{"basic functionality":{js:"0.54.0"}}},"to-string":{doc:'Converts the input value to a string. If the input is `null`, the result is `""`. If the input is a boolean, the result is `"true"` or `"false"`. If the input is a number, it is converted to a string as specified by the ["NumberToString" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form `"rgba(r,g,b,a)"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.',group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-number":{doc:'Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the ["ToNumber Applied to the String Type" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.',group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-boolean":{doc:"Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-rgba":{doc:"Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-color":{doc:"Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},rgb:{doc:"Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},rgba:{doc:"Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},get:{doc:"Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns null if the requested property is missing.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},has:{doc:"Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},length:{doc:"Gets the length of an array or string.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},properties:{doc:'Gets the feature properties object. Note that in some cases, it may be more efficient to use ["get", "property_name"] directly.',group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"feature-state":{doc:"Retrieves a property value from the current feature's state. Returns null if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. Features are identified by their `id` attribute, which must be an integer or a string that can be cast to an integer. Note that [\"feature-state\"] can only be used with paint properties that support data-driven styling.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.46.0"}}},"geometry-type":{doc:"Gets the feature's geometry type: `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},id:{doc:"Gets the feature's id, if it has one.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},zoom:{doc:'Gets the current zoom level. Note that in style layout and paint properties, ["zoom"] may only appear as the input to a top-level "step" or "interpolate" expression.',group:"Zoom","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"heatmap-density":{doc:"Gets the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.",group:"Heatmap","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"line-progress":{doc:"Gets the progress along a gradient line. Can only be used in the `line-gradient` property.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.6.0",macos:"0.12.0"}}},"sky-radial-progress":{doc:"Gets the distance of a point on the sky from the sun position. Returns 0 at sun position and 1 when the distance reaches `sky-gradient-radius`. Can only be used in the `sky-gradient` property.",group:"sky","sdk-support":{"basic functionality":{js:"2.0.0"}}},accumulated:{doc:"Gets the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.53.0"}}},"+":{doc:"Returns the sum of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"*":{doc:"Returns the product of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"-":{doc:"For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"/":{doc:"Returns the result of floating point division of the first input by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"%":{doc:"Returns the remainder after integer division of the first input by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"^":{doc:"Returns the result of raising the first input to the power specified by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},sqrt:{doc:"Returns the square root of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},log10:{doc:"Returns the base-ten logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},ln:{doc:"Returns the natural logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},log2:{doc:"Returns the base-two logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},sin:{doc:"Returns the sine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},cos:{doc:"Returns the cosine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},tan:{doc:"Returns the tangent of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},asin:{doc:"Returns the arcsine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},acos:{doc:"Returns the arccosine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},atan:{doc:"Returns the arctangent of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},min:{doc:"Returns the minimum value of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},max:{doc:"Returns the maximum value of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},round:{doc:'Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `["round", -1.5]` evaluates to -2.',group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},abs:{doc:"Returns the absolute value of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},ceil:{doc:"Returns the smallest integer that is greater than or equal to the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},floor:{doc:"Returns the largest integer that is less than or equal to the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},distance:{doc:"Returns the shortest distance in meters between the evaluated feature and the input geometry. The input value can be a valid GeoJSON of type `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Distance values returned may vary in precision due to loss in precision from encoding geometries, particularly below zoom level 13.",group:"Math","sdk-support":{"basic functionality":{android:"9.2.0",ios:"5.9.0",macos:"0.16.0"}}},"==":{doc:"Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"!=":{doc:"Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},">":{doc:"Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"<":{doc:"Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},">=":{doc:"Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"<=":{doc:"Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},all:{doc:"Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},any:{doc:"Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"!":{doc:"Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},within:{doc:"Returns `true` if the evaluated feature is fully contained inside a boundary of the input geometry, `false` otherwise. The input value can be a valid GeoJSON of type `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Supported features for evaluation:\n- `Point`: Returns `false` if a point is on the boundary or falls outside the boundary.\n- `LineString`: Returns `false` if any part of a line falls outside the boundary, the line intersects the boundary, or a line's endpoint is on the boundary.",group:"Decision","sdk-support":{"basic functionality":{js:"1.9.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}}},"is-supported-script":{doc:"Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in Mapbox GL JS).",group:"String","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.6.0"}}},upcase:{doc:"Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},downcase:{doc:"Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},concat:{doc:"Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"resolved-locale":{doc:"Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.",group:"String","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}}}},light:{anchor:{type:"enum",default:"viewport",values:{map:{doc:"The position of the light source is aligned to the rotation of the map."},viewport:{doc:"The position of the light source is aligned to the rotation of the viewport."}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]},doc:"Whether extruded geometries are lit relative to the map or viewport.",example:"map","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},doc:"Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).",example:[1.5,90,80],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Color tint for lighting extruded geometries.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}}},terrain:{source:{type:"string",doc:"Name of a source of `raster_dem` type to be used for terrain elevation.",required:!0},exaggeration:{type:"number","property-type":"data-constant",default:1,minimum:0,maximum:1e3,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Exaggerates the elevation of the terrain by multiplying the data from the DEM with this value.","sdk-support":{"basic functionality":{js:"2.0.0"}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,doc:"Whether or not the fill should be antialiased.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.21.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",doc:"The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.",transition:!0,requires:[{"!":"fill-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.19.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",doc:"The outline color of the fill. Matches the value of `fill-color` if unspecified.",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.19.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{doc:"The fill is translated relative to the map."},viewport:{doc:"The fill is translated relative to the viewport."}},doc:"Controls the frame of reference for `fill-translate`.",default:"map",requires:["fill-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.",transition:!0,"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",doc:"The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{doc:"The fill extrusion is translated relative to the map."},viewport:{doc:"The fill extrusion is translated relative to the viewport."}},doc:"Controls the frame of reference for `fill-extrusion-translate`.",default:"map",requires:["fill-extrusion-translate"],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",doc:"The height with which to extrude this layer.",transition:!0,"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",doc:"The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.",transition:!0,requires:["fill-extrusion-height"],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,doc:"Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.",transition:!1,"sdk-support":{"basic functionality":{js:"0.50.0",ios:"4.7.0",macos:"0.13.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",doc:"The opacity at which the line will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",doc:"The color with which the line will be drawn.",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.23.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{doc:"The line is translated relative to the map."},viewport:{doc:"The line is translated relative to the viewport."}},doc:"Controls the frame of reference for `line-translate`.",default:"map",requires:["line-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",doc:"Stroke thickness.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,doc:"Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.",transition:!0,units:"pixels","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,doc:"The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.",transition:!0,units:"pixels","sdk-support":{"basic functionality":{js:"0.12.1",android:"3.0.0",ios:"3.1.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Blur applied to the line, in pixels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",doc:"Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",doc:'Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `"lineMetrics": true`.',transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],"sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.4.0",macos:"0.11.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",doc:"Circle radius.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.18.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",doc:"The fill color of the circle.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.18.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,doc:"Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.20.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",doc:"The opacity at which the circle will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.20.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{doc:"The circle is translated relative to the map."},viewport:{doc:"The circle is translated relative to the viewport."}},doc:"Controls the frame of reference for `circle-translate`.",default:"map",requires:["circle-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{doc:"Circles are scaled according to their apparent distance to the camera."},viewport:{doc:"Circles are not scaled."}},default:"map",doc:"Controls the scaling behavior of the circle when the map is pitched.","sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{doc:"The circle is aligned to the plane of the map."},viewport:{doc:"The circle is aligned to the plane of the viewport."}},default:"viewport",doc:"Orientation of circle when map is pitched.","sdk-support":{"basic functionality":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.","sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",doc:"The stroke color of the circle.",transition:!0,"sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",doc:"The opacity of the circle's stroke.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",doc:"Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,doc:"A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,doc:"Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],doc:'Defines the color of each pixel based on its density value in a heatmap. Should be an expression that uses `["heatmap-density"]` as input.',transition:!1,"sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",doc:"The global opacity at which the heatmap layer will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{doc:"The opacity at which the icon will be drawn.",type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,doc:"The color of the icon. This can only be used with sdf icons.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,doc:"The color of the icon's halo. Icon halos can only be used with SDF icons.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Distance of halo to the icon outline.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Fade out the halo towards the outside.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{doc:"Icons are translated relative to the map."},viewport:{doc:"Icons are translated relative to the viewport."}},doc:"Controls the frame of reference for `icon-translate`.",default:"map",requires:["icon-image","icon-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",doc:"The opacity at which the text will be drawn.",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",doc:"The color with which the text will be drawn.",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,doc:"The color of the text's halo, which helps it stand out from backgrounds.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"The halo's fadeout distance towards the outside.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{doc:"The text is translated relative to the map."},viewport:{doc:"The text is translated relative to the viewport."}},doc:"Controls the frame of reference for `text-translate`.",default:"map",requires:["text-field","text-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",doc:"The opacity at which the image will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",doc:"Rotates hues around the color wheel.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",doc:"Increase or reduce the brightness of the image. The value is the minimum brightness.",default:0,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",doc:"Increase or reduce the brightness of the image. The value is the maximum brightness.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",doc:"Increase or reduce the saturation of the image.",default:0,minimum:-1,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",doc:"Increase or reduce the contrast of the image.",default:0,minimum:-1,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",doc:"The resampling/interpolation method to use for overscaling, also known as texture magnification filter",values:{linear:{doc:"(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled"},nearest:{doc:"Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled"}},default:"linear","sdk-support":{"basic functionality":{js:"0.47.0",android:"6.3.0",ios:"4.2.0",macos:"0.9.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",doc:"Fade duration when a new tile is added.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,doc:"The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.",transition:!1,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{doc:"The hillshade illumination is relative to the north direction."},viewport:{doc:"The hillshade illumination is relative to the top of the viewport."}},default:"viewport",doc:"Direction of light source when map is rotated.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",doc:"Intensity of the hillshade",default:.5,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",doc:"The shading color of areas that face away from the light source.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",doc:"The shading color of areas that faces towards the light source.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",doc:"The shading color used to accentuate rugged terrain like sharp cliffs and gorges.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",doc:"The color with which the background will be drawn.",transition:!0,requires:[{"!":"background-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity at which the background will be drawn.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_sky:{"sky-type":{type:"enum",values:{gradient:{doc:"Renders the sky with a gradient that can be configured with `sky-gradient-radius` and `sky-gradient`."},atmosphere:{doc:"Renders the sky with a simulated atmospheric scattering algorithm, the sun direction can be attached to the light position or explicitly set through `sky-atmosphere-sun`."}},default:"atmosphere",doc:"The type of the sky","sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{type:"array",value:"number",length:2,transition:!1,doc:"Position of the sun center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the sun relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the sun, where 0° is directly above, at zenith, and 90° at the horizon. When this property is ommitted, the sun center is directly inherited from the light position.","sdk-support":{"basic functionality":{js:"2.0.0"}},requires:[{"sky-type":"atmosphere"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{type:"number",requires:[{"sky-type":"atmosphere"}],default:10,minimum:0,maximum:100,transition:!1,doc:"Intensity of the sun as a light source in the atmosphere (on a scale from 0 to a 100). Setting higher values will brighten up the sky.","sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"data-constant"},"sky-gradient-center":{type:"array",requires:[{"sky-type":"gradient"}],value:"number",default:[0,0],length:2,transition:!1,doc:"Position of the gradient center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the gradient center relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the gradient center, where 0° is directly above, at zenith, and 90° at the horizon.","sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{type:"number",requires:[{"sky-type":"gradient"}],default:90,minimum:0,maximum:180,transition:!1,doc:"The angular distance (measured in degrees) from `sky-gradient-center` up to which the gradient extends. A value of 180 causes the gradient to wrap around to the opposite direction from `sky-gradient-center`.","sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient":{type:"color",default:["interpolate",["linear"],["sky-radial-progress"],.8,"#87ceeb",1,"white"],doc:"Defines a radial color gradient with which to color the sky. The color values can be interpolated with an expression using `sky-radial-progress`. The range [0, 1] for the interpolant covers a radial distance (in degrees) of [0, `sky-gradient-radius`] centered at the position specified by `sky-gradient-center`.",transition:!1,requires:[{"sky-type":"gradient"}],"sdk-support":{"basic functionality":{js:"2.0.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{type:"color",default:"white",doc:"A color applied to the atmosphere sun halo. The alpha channel describes how strongly the sun halo is represented in an atmosphere sky layer.",transition:!1,requires:[{"sky-type":"atmosphere"}],"sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"data-constant"},"sky-atmosphere-color":{type:"color",default:"white",doc:"A color used to tweak the main atmospheric scattering coefficients. Using white applies the default coefficients giving the natural blue color to the atmosphere. This color affects how heavily the corresponding wavelength is represented during scattering. The alpha channel describes the density of the atmosphere, with 1 maximum density and 0 no density.",transition:!1,requires:[{"sky-type":"atmosphere"}],"sdk-support":{"basic functionality":{js:"2.0.0"}},"property-type":"data-constant"},"sky-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire sky layer.",transition:!0,"sdk-support":{"basic functionality":{js:"2.0.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds",doc:"Time allotted for transitions to complete."},delay:{type:"number",default:0,minimum:0,units:"milliseconds",doc:"Length of time before a transition begins."}},"property-type":{"data-driven":{type:"property-type",doc:"Property is interpolable and can be represented using a property expression."},"cross-faded":{type:"property-type",doc:"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms."},"cross-faded-data-driven":{type:"property-type",doc:"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression."},"color-ramp":{type:"property-type",doc:"Property should be specified using a color ramp from which the output color can be sampled based on a property calculation."},"data-constant":{type:"property-type",doc:"Property is interpolable but cannot be represented using a property expression."},constant:{type:"property-type",doc:"Property is constant across all zoom levels and property values."}},promoteId:{"*":{type:"string",doc:"A name of a feature property to use as ID for feature state."}}};var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function a(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function s(t,e){return t(e={exports:{}},e.exports),e.exports}var l=s((function(t,e){!function(r){var n=e&&!e.nodeType&&e,i=t&&!t.nodeType&&t,a="object"==typeof o&&o;a.global!==a&&a.window!==a&&a.self!==a||(r=a);var s,l,u=2147483647,c=/^xn--/,h=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,f={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},d=Math.floor,g=String.fromCharCode;function y(t){throw RangeError(f[t])}function m(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function v(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+m((t=t.replace(p,".")).split("."),e).join(".")}function _(t){for(var e,r,n=[],i=0,o=t.length;i=55296&&e<=56319&&i65535&&(e+=g((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=g(t)})).join("")}function x(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function w(t,e,r){var n=0;for(t=r?d(t/700):t>>1,t+=d(t/e);t>455;n+=36)t=d(t/35);return d(n+36*t/(t+38))}function S(t){var e,r,n,i,o,a,s,l,c,h,p,f=[],g=t.length,m=0,v=128,_=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&y("not-basic"),f.push(t.charCodeAt(n));for(i=r>0?r+1:0;i=g&&y("invalid-input"),((l=(p=t.charCodeAt(i++))-48<10?p-22:p-65<26?p-65:p-97<26?p-97:36)>=36||l>d((u-m)/a))&&y("overflow"),m+=l*a,!(l<(c=s<=_?1:s>=_+26?26:s-_));s+=36)a>d(u/(h=36-c))&&y("overflow"),a*=h;_=w(m-o,e=f.length+1,0==o),d(m/e)>u-v&&y("overflow"),v+=d(m/e),m%=e,f.splice(m++,0,v)}return b(f)}function E(t){var e,r,n,i,o,a,s,l,c,h,p,f,m,v,b,S=[];for(f=(t=_(t)).length,e=128,r=0,o=72,a=0;a=e&&pd((u-r)/(m=n+1))&&y("overflow"),r+=(s-e)*m,e=s,a=0;au&&y("overflow"),p==e){for(l=r,c=36;!(l<(h=c<=o?1:c>=o+26?26:c-o));c+=36)b=l-h,v=36-h,S.push(g(x(h+b%v,0))),l=d(b/v);S.push(g(x(l,0))),o=w(r,m,n==i),r=0,++n}++r,++e}return S.join("")}if(s={version:"1.3.2",ucs2:{decode:_,encode:b},decode:S,encode:E,toASCII:function(t){return v(t,(function(t){return h.test(t)?"xn--"+E(t):t}))},toUnicode:function(t){return v(t,(function(t){return c.test(t)?S(t.slice(4).toLowerCase()):t}))}},n&&i)if(t.exports==n)i.exports=s;else for(l in s)s.hasOwnProperty(l)&&(n[l]=s[l]);else r.punycode=s}(o)})),u=function(t){return"string"==typeof t},c=function(t){return"object"==typeof t&&null!==t},h=function(t){return null===t},p=function(t){return null==t};function f(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var d=function(t,e,r,n){e=e||"&",r=r||"=";var i={};if("string"!=typeof t||0===t.length)return i;var o=/\+/g;t=t.split(e);var a=1e3;n&&"number"==typeof n.maxKeys&&(a=n.maxKeys);var s=t.length;a>0&&s>a&&(s=a);for(var l=0;l=0?(u=d.substr(0,g),c=d.substr(g+1)):(u=d,c=""),h=decodeURIComponent(u),p=decodeURIComponent(c),f(i,h)?Array.isArray(i[h])?i[h].push(p):i[h]=[i[h],p]:i[h]=p}return i},g=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}},y=function(t,e,r,n){return e=e||"&",r=r||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map((function(n){var i=encodeURIComponent(g(n))+r;return Array.isArray(t[n])?t[n].map((function(t){return i+encodeURIComponent(g(t))})).join(e):i+encodeURIComponent(g(t[n]))})).join(e):n?encodeURIComponent(g(n))+r+encodeURIComponent(g(t)):""},m=s((function(t,e){e.decode=e.parse=d,e.encode=e.stringify=y}));m.decode,m.parse,m.encode,m.stringify;function v(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var _=/^([a-z0-9.+-]+:)/i,b=/:[0-9]*$/,x=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,w=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),S=["'"].concat(w),E=["%","/","?",";","#"].concat(S),T=["/","?","#"],C=/^[+a-z0-9A-Z_-]{0,63}$/,O=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,P={javascript:!0,"javascript:":!0},R={javascript:!0,"javascript:":!0},I={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function L(t,e,r){if(t&&c(t)&&t instanceof v)return t;var n=new v;return n.parse(t,e,r),n}v.prototype.parse=function(t,e,r){if(!u(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var n=t.indexOf("?"),i=-1!==n&&n127?F+="x":F+=M[A];if(!F.match(C)){var j=w.slice(0,y),N=w.slice(y+1),D=M.match(O);D&&(j.push(D[1]),N.unshift(D[2])),N.length&&(a="/"+N.join(".")+a),this.hostname=j.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),b||(this.hostname=l.toASCII(this.hostname));var G=this.port?":"+this.port:"",z=this.hostname||"";this.host=z+G,this.href+=this.host,b&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!P[h])for(y=0,L=S.length;y0)&&r.host.split("@"))&&(r.auth=L.shift(),r.host=r.hostname=L.shift());return r.search=t.search,r.query=t.query,h(r.pathname)&&h(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!S.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var T=S.slice(-1)[0],C=(r.host||t.host||S.length>1)&&("."===T||".."===T)||""===T,O=0,P=S.length;P>=0;P--)"."===(T=S[P])?S.splice(P,1):".."===T?(S.splice(P,1),O++):O&&(S.splice(P,1),O--);if(!x&&!w)for(;O--;O)S.unshift("..");!x||""===S[0]||S[0]&&"/"===S[0].charAt(0)||S.unshift(""),C&&"/"!==S.join("/").substr(-1)&&S.push("");var L,M=""===S[0]||S[0]&&"/"===S[0].charAt(0);E&&(r.hostname=r.host=M?"":S.length?S.shift():"",(L=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=L.shift(),r.host=r.hostname=L.shift()));return(x=x||r.host&&S.length)&&!M&&S.unshift(""),S.length?r.pathname=S.join("/"):(r.pathname=null,r.path=null),h(r.pathname)&&h(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},v.prototype.parseHost=function(){var t=this.host,e=b.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};function M(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}class F extends Error{constructor(t,e){super(e),this.message=e,this.key=t}}class A{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r}concat(t){return new A(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(t+" not found in scope.")}has(t){return!!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const k={kind:"null"},j={kind:"number"},N={kind:"string"},D={kind:"boolean"},G={kind:"color"},z={kind:"object"},U={kind:"value"},B={kind:"collator"},V={kind:"formatted"},Y={kind:"resolvedImage"};function W(t,e){return{kind:"array",itemType:t,N:e}}function q(t){if("array"===t.kind){const e=q(t.itemType);return"number"==typeof t.N?`array<${e}, ${t.N}>`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}const X=[k,j,N,D,G,V,z,W(U),Y];function Z(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!Z(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if("value"===t.kind)for(const t of X)if(!Z(t,e))return null}return`Expected ${q(t)} but found ${q(e)} instead.`}function K(t,e){return e.some(e=>e.kind===t.kind)}function H(t,e){return e.some(e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t)}var $=s((function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return(t=Math.round(t))<0?0:t>255?255:t}function i(t){return t<0?0:t>1?1:t}function o(t){return"%"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function a(t){return"%"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,"").toLowerCase();if(i in r)return r[i].slice();if("#"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf("("),u=i.indexOf(")");if(-1!==l&&u+1===i.length){var c=i.substr(0,l),h=i.substr(l+1,u-(l+1)).split(","),p=1;switch(c){case"rgba":if(4!==h.length)return null;p=a(h.pop());case"rgb":return 3!==h.length?null:[o(h[0]),o(h[1]),o(h[2]),p];case"hsla":if(4!==h.length)return null;p=a(h.pop());case"hsl":if(3!==h.length)return null;var f=(parseFloat(h[0])%360+360)%360/360,d=a(h[1]),g=a(h[2]),y=g<=.5?g*(d+1):g+d-g*d,m=2*g-y;return[n(255*s(m,y,f+1/3)),n(255*s(m,y,f)),n(255*s(m,y,f-1/3)),p];default:return null}}return null}}catch(t){}})).parseCSSColor;class J{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n}static parse(t){if(!t)return;if(t instanceof J)return t;if("string"!=typeof t)return;const e=$(t);return e?new J(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]):void 0}toString(){const[t,e,r,n]=this.toArray();return`rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})`}toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]}}J.black=new J(0,0,0,1),J.white=new J(1,1,1,1),J.transparent=new J(0,0,0,0),J.red=new J(1,0,0,1),J.blue=new J(0,0,1,1);class Q{constructor(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class tt{constructor(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i}}class et{constructor(t){this.sections=t}static fromString(t){return new et([new tt(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some(t=>0!==t.text.length||t.image&&0!==t.image.name.length)}static factory(t){return t instanceof et?t:et.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map(t=>t.text).join("")}serialize(){const t=["format"];for(const e of this.sections){if(e.image){t.push(["image",e.image.name]);continue}t.push(e.text);const r={};e.fontStack&&(r["text-font"]=["literal",e.fontStack.split(",")]),e.scale&&(r["font-scale"]=e.scale),e.textColor&&(r["text-color"]=["rgba"].concat(e.textColor.toArray())),t.push(r)}return t}}class rt{constructor(t){this.name=t.name,this.available=t.available}toString(){return this.name}static fromString(t){return t?new rt({name:t,available:!1}):null}serialize(){return["image",this.name]}}function nt(t,e,r,n){if(!("number"==typeof t&&t>=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255)){return`Invalid rgba value [${("number"==typeof n?[t,e,r,n]:[t,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}return void 0===n||"number"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(", ")}]: 'a' must be between 0 and 1.`}function it(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof J)return!0;if(t instanceof Q)return!0;if(t instanceof et)return!0;if(t instanceof rt)return!0;if(Array.isArray(t)){for(const e of t)if(!it(e))return!1;return!0}if("object"==typeof t){for(const e in t)if(!it(t[e]))return!1;return!0}return!1}function ot(t){if(null===t)return k;if("string"==typeof t)return N;if("boolean"==typeof t)return D;if("number"==typeof t)return j;if(t instanceof J)return G;if(t instanceof Q)return B;if(t instanceof et)return V;if(t instanceof rt)return Y;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=ot(e);if(r){if(r===t)continue;r=U;break}r=t}return W(r||U,e)}return z}function at(t){const e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof J||t instanceof et||t instanceof rt?t.toString():JSON.stringify(t)}class st{constructor(t,e){this.type=t,this.value=e}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!it(t[1]))return e.error("invalid value");const r=t[1];let n=ot(r);const i=e.expectedType;return"array"!==n.kind||0!==n.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(n=i),new st(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}serialize(){return"array"===this.type.kind||"object"===this.type.kind?["literal",this.value]:this.value instanceof J?["rgba"].concat(this.value.toArray()):this.value instanceof et?this.value.serialize():this.value}}class lt{constructor(t){this.name="ExpressionEvaluationError",this.message=t}toJSON(){return this.message}}const ut={string:N,number:j,boolean:D,object:z};class ct{constructor(t,e){this.type=t,this.args=e}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r,n=1;const i=t[0];if("array"===i){let i,o;if(t.length>2){const r=t[1];if("string"!=typeof r||!(r in ut)||"object"===r)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=ut[r],n++}else i=U;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);o=t[2],n++}r=W(i,o)}else r=ut[i];const o=[];for(;nt.outputDefined())}serialize(){const t=this.type,e=[t.kind];if("array"===t.kind){const r=t.itemType;if("string"===r.kind||"number"===r.kind||"boolean"===r.kind){e.push(r.kind);const n=t.N;("number"==typeof n||this.args.length>1)&&e.push(n)}}return e.concat(this.args.map(t=>t.serialize()))}}class ht{constructor(t){this.type=V,this.sections=t}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const o=t[r];if(i&&"object"==typeof o&&!Array.isArray(o)){i=!1;let t=null;if(o["font-scale"]&&(t=e.parse(o["font-scale"],1,j),!t))return null;let r=null;if(o["text-font"]&&(r=e.parse(o["text-font"],1,W(N)),!r))return null;let a=null;if(o["text-color"]&&(a=e.parse(o["text-color"],1,G),!a))return null;const s=n[n.length-1];s.scale=t,s.font=r,s.textColor=a}else{const o=e.parse(t[r],1,U);if(!o)return null;const a=o.type.kind;if("string"!==a&&"value"!==a&&"null"!==a&&"resolvedImage"!==a)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,n.push({content:o,scale:null,font:null,textColor:null})}}return new ht(n)}evaluate(t){return new et(this.sections.map(e=>{const r=e.content.evaluate(t);return ot(r)===Y?new tt("",r,null,null,null):new tt(at(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)}))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor)}outputDefined(){return!1}serialize(){const t=["format"];for(const e of this.sections){t.push(e.content.serialize());const r={};e.scale&&(r["font-scale"]=e.scale.serialize()),e.font&&(r["text-font"]=e.font.serialize()),e.textColor&&(r["text-color"]=e.textColor.serialize()),t.push(r)}return t}}class pt{constructor(t){this.type=Y,this.input=t}static parse(t,e){if(2!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,N);return r?new pt(r):e.error("No image name provided.")}evaluate(t){const e=this.input.evaluate(t),r=rt.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input)}outputDefined(){return!1}serialize(){return["image",this.input.serialize()]}}const ft={"to-boolean":D,"to-color":G,"to-number":j,"to-string":N};class dt{constructor(t,e){this.type=t,this.args=e}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[0];if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");const n=ft[r],i=[];for(let r=1;r4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:nt(e[0],e[1],e[2],e[3]),!r))return new J(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new lt(r||`Could not parse color from value '${"string"==typeof e?e:String(JSON.stringify(e))}'`)}if("number"===this.type.kind){let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new lt(`Could not convert ${JSON.stringify(e)} to number.`)}return"formatted"===this.type.kind?et.fromString(at(this.args[0].evaluate(t))):"resolvedImage"===this.type.kind?rt.fromString(at(this.args[0].evaluate(t))):at(this.args[0].evaluate(t))}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every(t=>t.outputDefined())}serialize(){if("formatted"===this.type.kind)return new ht([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if("resolvedImage"===this.type.kind)return new pt(this.args[0]).serialize();const t=["to-"+this.type.kind];return this.eachChild(e=>{t.push(e.serialize())}),t}}const gt=["Unknown","Point","LineString","Polygon"];class yt{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?gt[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=J.parse(t)),e}}class mt{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t)}outputDefined(){return!1}serialize(){return[this.name].concat(this.args.map(t=>t.serialize()))}static parse(t,e){const r=t[0],n=mt.definitions[r];if(!n)return e.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,o=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,a=o.filter(([e])=>!Array.isArray(e)||e.length===t.length-1);let s=null;for(const[n,o]of a){s=new zt(e.registry,e.path,null,e.scope);const a=[];let l=!1;for(let e=1;e{return e=t,Array.isArray(e)?`(${e.map(q).join(", ")})`:`(${q(e.type)}...)`;var e}).join(" | "),n=[];for(let r=1;r=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function xt(t,e){const r=(180+t[0])/360;const n=(i=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360);var i;const o=Math.pow(2,e.z);return[Math.round(r*o*8192),Math.round(n*o*8192)]}function wt(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],o=t[0]-r[0],a=t[1]-r[1];return n*a-o*i==0&&n*o<=0&&i*a<=0}function St(t,e){let r=!1;for(let a=0,s=e.length;an[1]!=o[1]>n[1]&&n[0]<(o[0]-i[0])*(n[1]-i[1])/(o[1]-i[1])+i[0]&&(r=!r)}}var n,i,o;return r}function Et(t,e){for(let r=0;r0&&h<0||c<0&&h>0}function Ct(t,e,r,n){const i=[e[0]-t[0],e[1]-t[1]],o=[n[0]-r[0],n[1]-r[1]];return 0!=(a=o)[0]*(s=i)[1]-a[1]*s[0]&&!(!Tt(t,e,r,n)||!Tt(r,n,t,e));var a,s}function Ot(t,e,r){for(const n of r)for(let r=0;rr[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i}_t(e,t)}function Ft(t,e,r,n){const i=8192*Math.pow(2,n.z),o=[8192*n.x,8192*n.y],a=[];for(const n of t)for(const t of n){const n=[t.x+o[0],t.y+o[1]];Mt(n,e,r,i),a.push(n)}return a}function At(t,e,r,n){const i=8192*Math.pow(2,n.z),o=[8192*n.x,8192*n.y],a=[];for(const r of t){const t=[];for(const n of r){const r=[n.x+o[0],n.y+o[1]];_t(e,r),t.push(r)}a.push(t)}if(e[2]-e[0]<=i/2){(s=e)[0]=s[1]=1/0,s[2]=s[3]=-1/0;for(const t of a)for(const n of t)Mt(n,e,r,i)}var s;return a}class kt{constructor(t,e){this.type=D,this.geojson=t,this.geometries=e}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(it(t[1])){const e=t[1];if("FeatureCollection"===e.type)for(let t=0;t{e&&!jt(t)&&(e=!1)}),e}function Nt(t){if(t instanceof mt&&"feature-state"===t.name)return!1;let e=!0;return t.eachChild(t=>{e&&!Nt(t)&&(e=!1)}),e}function Dt(t,e){if(t instanceof mt&&e.indexOf(t.name)>=0)return!1;let r=!0;return t.eachChild(t=>{r&&!Dt(t,e)&&(r=!1)}),r}class Gt{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e}static parse(t,e){if(2!==t.length||"string"!=typeof t[1])return e.error("'var' expression requires exactly one string literal argument.");const r=t[1];return e.scope.has(r)?new Gt(r,e.scope.get(r)):e.error(`Unknown variable "${r}". Make sure "${r}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return!1}serialize(){return["var",this.name]}}class zt{constructor(t,e=[],r,n=new A,i=[]){this.registry=t,this.path=e,this.key=e.map(t=>`[${t}]`).join(""),this.scope=n,this.errors=i,this.expectedType=r}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return"assert"===r?new ct(e,[t]):"coerce"===r?new dt(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const n=t[0];if("string"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if("string"!==t.kind&&"number"!==t.kind&&"boolean"!==t.kind&&"object"!==t.kind&&"array"!==t.kind||"value"!==i.kind)if("color"!==t.kind&&"formatted"!==t.kind&&"resolvedImage"!==t.kind||"value"!==i.kind&&"string"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"assert")}if(!(n instanceof st)&&"resolvedImage"!==n.type.kind&&function t(e){if(e instanceof Gt)return t(e.boundExpression);if(e instanceof mt&&"error"===e.name)return!1;if(e instanceof vt)return!1;if(e instanceof kt)return!1;const r=e instanceof dt||e instanceof ct;let n=!0;if(e.eachChild(e=>{n=r?n&&t(e):n&&e instanceof st}),!n)return!1;return jt(e)&&Dt(e,["zoom","heatmap-density","line-progress","sky-radial-progress","accumulated","is-supported-script"])}(n)){const t=new yt;try{n=new st(n.type,n.evaluate(t))}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return void 0===t?this.error("'undefined' value invalid. Use null instead."):"object"==typeof t?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error(`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n="number"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new zt(this.registry,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map(t=>`[${t}]`).join("")}`;this.errors.push(new F(r,t))}checkSubtype(t,e){const r=Z(t,e);return r&&this.error(r),r}}function Ut(t,e){const r=t.length-1;let n,i,o=0,a=r,s=0;for(;o<=a;)if(s=Math.floor((o+a)/2),n=t[s],i=t[s+1],n<=e){if(s===r||ee))throw new lt("Input is not a number.");a=s-1}return 0}class Bt{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e)}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");const r=e.parse(t[1],1,j);if(!r)return null;const n=[];let i=null;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r=o)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',s);const u=e.parse(a,l,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new Bt(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);return r[Ut(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e)}outputDefined(){return this.outputs.every(t=>t.outputDefined())}serialize(){const t=["step",this.input.serialize()];for(let e=0;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t}}var Vt=Yt;function Yt(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}function Wt(t,e,r){return t*(1-r)+e*r}Yt.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},Yt.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},Yt.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},Yt.prototype.solveCurveX=function(t,e){var r,n,i,o,a;for(void 0===e&&(e=1e-6),i=t,a=0;a<8;a++){if(o=this.sampleCurveX(i)-t,Math.abs(o)(n=1))return n;for(;ro?r=i:n=i,i=.5*(n-r)+r}return i},Yt.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var qt=Object.freeze({__proto__:null,number:Wt,color:function(t,e,r){return new J(Wt(t.r,e.r,r),Wt(t.g,e.g,r),Wt(t.b,e.b,r),Wt(t.a,e.a,r))},array:function(t,e,r){return t.map((t,n)=>Wt(t,e[n],r))}});const Xt=6/29,Zt=3*Xt*Xt,Kt=Math.PI/180,Ht=180/Math.PI;function $t(t){return t>.008856451679035631?Math.pow(t,1/3):t/Zt+4/29}function Jt(t){return t>Xt?t*t*t:Zt*(t-4/29)}function Qt(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function te(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function ee(t){const e=te(t.r),r=te(t.g),n=te(t.b),i=$t((.4124564*e+.3575761*r+.1804375*n)/.95047),o=$t((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*o-16,a:500*(i-o),b:200*(o-$t((.0193339*e+.119192*r+.9503041*n)/1.08883)),alpha:t.a}}function re(t){let e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*Jt(e),r=.95047*Jt(r),n=1.08883*Jt(n),new J(Qt(3.2404542*r-1.5371385*e-.4985314*n),Qt(-.969266*r+1.8760108*e+.041556*n),Qt(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function ne(t,e,r){const n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}const ie={forward:ee,reverse:re,interpolate:function(t,e,r){return{l:Wt(t.l,e.l,r),a:Wt(t.a,e.a,r),b:Wt(t.b,e.b,r),alpha:Wt(t.alpha,e.alpha,r)}}},oe={forward:function(t){const{l:e,a:r,b:n}=ee(t),i=Math.atan2(n,r)*Ht;return{h:i<0?i+360:i,c:Math.sqrt(r*r+n*n),l:e,alpha:t.a}},reverse:function(t){const e=t.h*Kt,r=t.c;return re({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:ne(t.h,e.h,r),c:Wt(t.c,e.c,r),l:Wt(t.l,e.l,r),alpha:Wt(t.alpha,e.alpha,r)}}};var ae=Object.freeze({__proto__:null,lab:ie,hcl:oe});class se{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e)}static interpolationFactor(t,e,r,n){let i=0;if("exponential"===t.name)i=le(e,t.base,r,n);else if("linear"===t.name)i=le(e,1,r,n);else if("cubic-bezier"===t.name){const o=t.controlPoints;i=new Vt(o[0],o[1],o[2],o[3]).solve(le(e,1,r,n))}return i}static parse(t,e){let[r,n,i,...o]=t;if(!Array.isArray(n)||0===n.length)return e.error("Expected an interpolation type expression.",1);if("linear"===n[0])n={name:"linear"};else if("exponential"===n[0]){const t=n[1];if("number"!=typeof t)return e.error("Exponential interpolation requires a numeric base.",1,1);n={name:"exponential",base:t}}else{if("cubic-bezier"!==n[0])return e.error("Unknown interpolation type "+String(n[0]),1,0);{const t=n.slice(1);if(4!==t.length||t.some(t=>"number"!=typeof t||t<0||t>1))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);n={name:"cubic-bezier",controlPoints:t}}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(i=e.parse(i,2,j),!i)return null;const a=[];let s=null;"interpolate-hcl"===r||"interpolate-lab"===r?s=G:e.expectedType&&"value"!==e.expectedType.kind&&(s=e.expectedType);for(let t=0;t=r)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,s);if(!u)return null;s=s||u.type,a.push([r,u])}return"number"===s.kind||"color"===s.kind||"array"===s.kind&&"number"===s.itemType.kind&&"number"==typeof s.N?new se(s,r,n,i,a):e.error(`Type ${q(s)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const o=Ut(e,n),a=e[o],s=e[o+1],l=se.interpolationFactor(this.interpolation,n,a,s),u=r[o].evaluate(t),c=r[o+1].evaluate(t);return"interpolate"===this.operator?qt[this.type.kind.toLowerCase()](u,c,l):"interpolate-hcl"===this.operator?oe.reverse(oe.interpolate(oe.forward(u),oe.forward(c),l)):ie.reverse(ie.interpolate(ie.forward(u),ie.forward(c),l))}eachChild(t){t(this.input);for(const e of this.outputs)t(e)}outputDefined(){return this.outputs.every(t=>t.outputDefined())}serialize(){let t;t="linear"===this.interpolation.name?["linear"]:"exponential"===this.interpolation.name?1===this.interpolation.base?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);const e=[this.operator,t,this.input.serialize()];for(let t=0;tZ(n,t.type));return new ue(o?U:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args)if(n++,r=i.evaluate(t),r&&r instanceof rt&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break;return r}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every(t=>t.outputDefined())}serialize(){const t=["coalesce"];return this.eachChild(e=>{t.push(e.serialize())}),t}}class ce{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result)}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n=r.length)throw new lt(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new lt(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input)}outputDefined(){return!1}serialize(){return["at",this.index.serialize(),this.input.serialize()]}}class pe{constructor(t,e){this.type=D,this.needle=t,this.haystack=e}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,U),n=e.parse(t[2],2,U);return r&&n?K(r.type,[D,N,j,k,U])?new pe(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${q(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!H(e,["boolean","string","number","null"]))throw new lt(`Expected first argument to be of type boolean, string, number or null, but found ${q(ot(e))} instead.`);if(!H(r,["string","array"]))throw new lt(`Expected second argument to be of type array or string, but found ${q(ot(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack)}outputDefined(){return!0}serialize(){return["in",this.needle.serialize(),this.haystack.serialize()]}}class fe{constructor(t,e,r){this.type=j,this.needle=t,this.haystack=e,this.fromIndex=r}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,U),n=e.parse(t[2],2,U);if(!r||!n)return null;if(!K(r.type,[D,N,j,k,U]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${q(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,j);return i?new fe(r,n,i):null}return new fe(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!H(e,["boolean","string","number","null"]))throw new lt(`Expected first argument to be of type boolean, string, number or null, but found ${q(ot(e))} instead.`);if(!H(r,["string","array"]))throw new lt(`Expected second argument to be of type array or string, but found ${q(ot(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)}outputDefined(){return!1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]}}class de{constructor(t,e,r,n,i,o){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=o}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error("Expected an even number of arguments.");let r,n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);const i={},o=[];for(let a=2;aNumber.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof t&&Math.floor(t)!==t)return u.error("Numeric branch labels must be integer values.");if(r){if(u.checkSubtype(r,ot(t)))return null}else r=ot(t);if(void 0!==i[String(t)])return u.error("Branch labels must be unique.");i[String(t)]=o.length}const c=e.parse(l,a,n);if(!c)return null;n=n||c.type,o.push(c)}const a=e.parse(t[1],1,U);if(!a)return null;const s=e.parse(t[t.length-1],t.length-1,n);return s?"value"!==a.type.kind&&e.concat(1).checkSubtype(r,a.type)?null:new de(r,n,a,i,o,s):null}evaluate(t){const e=this.input.evaluate(t);return(ot(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)}outputDefined(){return this.outputs.every(t=>t.outputDefined())&&this.otherwise.outputDefined()}serialize(){const t=["match",this.input.serialize()],e=Object.keys(this.cases).sort(),r=[],n={};for(const t of e){const e=n[this.cases[t]];void 0===e?(n[this.cases[t]]=r.length,r.push([this.cases[t],[t]])):r[e][1].push(t)}const i=t=>"number"===this.inputType.kind?Number(t):t;for(const[e,n]of r)1===n.length?t.push(i(n[0])):t.push(n.map(i)),t.push(this.outputs[e].serialize());return t.push(this.otherwise.serialize()),t}}class ge{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error("Expected an odd number of arguments.");let r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;ie.outputDefined())&&this.otherwise.outputDefined()}serialize(){const t=["case"];return this.eachChild(e=>{t.push(e.serialize())}),t}}class ye{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,U),n=e.parse(t[2],2,j);if(!r||!n)return null;if(!K(r.type,[W(U),N,U]))return e.error(`Expected first argument to be of type array or string, but found ${q(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,j);return i?new ye(r.type,r,n,i):null}return new ye(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!H(e,["string","array"]))throw new lt(`Expected first argument to be of type array or string, but found ${q(ot(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)}outputDefined(){return!1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]}}function me(t,e){return"=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function ve(t,e,r,n){return 0===n.compare(e,r)}function _e(t,e,r){const n="=="!==t&&"!="!==t;return class i{constructor(t,e,r){this.type=D,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");const r=t[0];let o=e.parse(t[1],1,U);if(!o)return null;if(!me(r,o.type))return e.concat(1).error(`"${r}" comparisons are not supported for type '${q(o.type)}'.`);let a=e.parse(t[2],2,U);if(!a)return null;if(!me(r,a.type))return e.concat(2).error(`"${r}" comparisons are not supported for type '${q(a.type)}'.`);if(o.type.kind!==a.type.kind&&"value"!==o.type.kind&&"value"!==a.type.kind)return e.error(`Cannot compare types '${q(o.type)}' and '${q(a.type)}'.`);n&&("value"===o.type.kind&&"value"!==a.type.kind?o=new ct(a.type,[o]):"value"!==o.type.kind&&"value"===a.type.kind&&(a=new ct(o.type,[a])));let s=null;if(4===t.length){if("string"!==o.type.kind&&"string"!==a.type.kind&&"value"!==o.type.kind&&"value"!==a.type.kind)return e.error("Cannot use collator to compare non-string types.");if(s=e.parse(t[3],3,B),!s)return null}return new i(o,a,s)}evaluate(i){const o=this.lhs.evaluate(i),a=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=ot(o),r=ot(a);if(e.kind!==r.kind||"string"!==e.kind&&"number"!==e.kind)throw new lt(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=ot(o),r=ot(a);if("string"!==t.kind||"string"!==r.kind)return e(i,o,a)}return this.collator?r(i,o,a,this.collator.evaluate(i)):e(i,o,a)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator)}outputDefined(){return!0}serialize(){const e=[t];return this.eachChild(t=>{e.push(t.serialize())}),e}}}const be=_e("==",(function(t,e,r){return e===r}),ve),xe=_e("!=",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!ve(0,e,r,n)})),we=_e("<",(function(t,e,r){return e",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Ee=_e("<=",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),Te=_e(">=",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class Ce{constructor(t,e,r,n,i){this.type=N,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i}static parse(t,e){if(3!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,j);if(!r)return null;const n=t[2];if("object"!=typeof n||Array.isArray(n))return e.error("NumberFormat options argument must be an object.");let i=null;if(n.locale&&(i=e.parse(n.locale,1,N),!i))return null;let o=null;if(n.currency&&(o=e.parse(n.currency,1,N),!o))return null;let a=null;if(n["min-fraction-digits"]&&(a=e.parse(n["min-fraction-digits"],1,j),!a))return null;let s=null;return n["max-fraction-digits"]&&(s=e.parse(n["max-fraction-digits"],1,j),!s)?null:new Ce(r,i,o,a,s)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)}outputDefined(){return!1}serialize(){const t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]}}class Oe{constructor(t){this.type=j,this.input=t}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${q(r.type)} instead.`):new Oe(r):null}evaluate(t){const e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new lt(`Expected value to be of type string or array, but found ${q(ot(e))} instead.`)}eachChild(t){t(this.input)}outputDefined(){return!1}serialize(){const t=["length"];return this.eachChild(e=>{t.push(e.serialize())}),t}}const Pe={"==":be,"!=":xe,">":Se,"<":we,">=":Te,"<=":Ee,array:ct,at:he,boolean:ct,case:ge,coalesce:ue,collator:vt,format:ht,image:pt,in:pe,"index-of":fe,interpolate:se,"interpolate-hcl":se,"interpolate-lab":se,length:Oe,let:ce,literal:st,match:de,number:ct,"number-format":Ce,object:ct,slice:ye,step:Bt,string:ct,"to-boolean":dt,"to-color":dt,"to-number":dt,"to-string":dt,var:Gt,within:kt};function Re(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const o=i?i.evaluate(t):1,a=nt(e,r,n,o);if(a)throw new lt(a);return new J(e/255*o,r/255*o,n/255*o,o)}function Ie(t,e){return t in e}function Le(t,e){const r=e[t];return void 0===r?null:r}function Me(t){return{type:t}}function Fe(t){return{result:"success",value:t}}function Ae(t){return{result:"error",value:t}}function ke(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function je(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Ne(t){return!!t.expression&&t.expression.interpolated}function De(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Ge(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function ze(t){return t}function Ue(t,e){const r="color"===e.type,n=t.stops&&"object"==typeof t.stops[0][0],i=n||void 0!==t.property,o=n||!i,a=t.type||(Ne(e)?"exponential":"interval");if(r&&((t=M({},t)).stops&&(t.stops=t.stops.map(t=>[t[0],J.parse(t[1])])),t.default?t.default=J.parse(t.default):t.default=J.parse(e.default)),t.colorSpace&&"rgb"!==t.colorSpace&&!ae[t.colorSpace])throw new Error("Unknown color space: "+t.colorSpace);let s,l,u;if("exponential"===a)s=We;else if("interval"===a)s=Ye;else if("categorical"===a){s=Ve,l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0]}else{if("identity"!==a)throw new Error(`Unknown function type "${a}"`);s=qe}if(n){const r={},n=[];for(let e=0;et[0]),evaluate:({zoom:r},n)=>We({stops:i,base:t.base},e,r).evaluate(r,n)}}if(o){const r="exponential"===a?{name:"exponential",base:void 0!==t.base?t.base:1}:null;return{kind:"camera",interpolationType:r,interpolationFactor:se.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map(t=>t[0]),evaluate:({zoom:r})=>s(t,e,r,l,u)}}return{kind:"source",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?Be(t.default,e.default):s(t,e,i,l,u)}}}function Be(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Ve(t,e,r,n,i){return Be(typeof r===i?n[r]:void 0,t.default,e.default)}function Ye(t,e,r){if("number"!==De(r))return Be(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=Ut(t.stops.map(t=>t[0]),r);return t.stops[i][1]}function We(t,e,r){const n=void 0!==t.base?t.base:1;if("number"!==De(r))return Be(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const o=Ut(t.stops.map(t=>t[0]),r),a=function(t,e,r,n){const i=n-r,o=t-r;return 0===i?0:1===e?o/i:(Math.pow(e,o)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[o][0],t.stops[o+1][0]),s=t.stops[o][1],l=t.stops[o+1][1];let u=qt[e.type]||ze;if(t.colorSpace&&"rgb"!==t.colorSpace){const e=ae[t.colorSpace];u=(t,r)=>e.reverse(e.interpolate(e.forward(t),e.forward(r),a))}return"function"==typeof s.evaluate?{evaluate(...t){const e=s.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==e&&void 0!==r)return u(e,r,a)}}:u(s,l,a)}function qe(t,e,r){return"color"===e.type?r=J.parse(r):"formatted"===e.type?r=et.fromString(r.toString()):"resolvedImage"===e.type?r=rt.fromString(r.toString()):De(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0),Be(r,t.default,e.default)}mt.register(Pe,{error:[{kind:"error"},[N],(t,[e])=>{throw new lt(e.evaluate(t))}],typeof:[N,[U],(t,[e])=>q(ot(e.evaluate(t)))],"to-rgba":[W(j,4),[G],(t,[e])=>e.evaluate(t).toArray()],rgb:[G,[j,j,j],Re],rgba:[G,[j,j,j,j],Re],has:{type:D,overloads:[[[N],(t,[e])=>Ie(e.evaluate(t),t.properties())],[[N,z],(t,[e,r])=>Ie(e.evaluate(t),r.evaluate(t))]]},get:{type:U,overloads:[[[N],(t,[e])=>Le(e.evaluate(t),t.properties())],[[N,z],(t,[e,r])=>Le(e.evaluate(t),r.evaluate(t))]]},"feature-state":[U,[N],(t,[e])=>Le(e.evaluate(t),t.featureState||{})],properties:[z,[],t=>t.properties()],"geometry-type":[N,[],t=>t.geometryType()],id:[U,[],t=>t.id()],zoom:[j,[],t=>t.globals.zoom],"heatmap-density":[j,[],t=>t.globals.heatmapDensity||0],"line-progress":[j,[],t=>t.globals.lineProgress||0],"sky-radial-progress":[j,[],t=>t.globals.skyRadialProgress||0],accumulated:[U,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],"+":[j,Me(j),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],"*":[j,Me(j),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],"-":{type:j,overloads:[[[j,j],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[j],(t,[e])=>-e.evaluate(t)]]},"/":[j,[j,j],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],"%":[j,[j,j],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[j,[],()=>Math.LN2],pi:[j,[],()=>Math.PI],e:[j,[],()=>Math.E],"^":[j,[j,j],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[j,[j],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[j,[j],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[j,[j],(t,[e])=>Math.log(e.evaluate(t))],log2:[j,[j],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[j,[j],(t,[e])=>Math.sin(e.evaluate(t))],cos:[j,[j],(t,[e])=>Math.cos(e.evaluate(t))],tan:[j,[j],(t,[e])=>Math.tan(e.evaluate(t))],asin:[j,[j],(t,[e])=>Math.asin(e.evaluate(t))],acos:[j,[j],(t,[e])=>Math.acos(e.evaluate(t))],atan:[j,[j],(t,[e])=>Math.atan(e.evaluate(t))],min:[j,Me(j),(t,e)=>Math.min(...e.map(e=>e.evaluate(t)))],max:[j,Me(j),(t,e)=>Math.max(...e.map(e=>e.evaluate(t)))],abs:[j,[j],(t,[e])=>Math.abs(e.evaluate(t))],round:[j,[j],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[j,[j],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[j,[j],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[D,[N,U],(t,[e,r])=>t.properties()[e.value]===r.value],"filter-id-==":[D,[U],(t,[e])=>t.id()===e.value],"filter-type-==":[D,[N],(t,[e])=>t.geometryType()===e.value],"filter-<":[D,[N,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n{const r=t.id(),n=e.value;return typeof r==typeof n&&r":[D,[N,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],"filter-id->":[D,[U],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],"filter-<=":[D,[N,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],"filter-id-<=":[D,[U],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],"filter->=":[D,[N,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],"filter-id->=":[D,[U],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],"filter-has":[D,[U],(t,[e])=>e.value in t.properties()],"filter-has-id":[D,[],t=>null!==t.id()&&void 0!==t.id()],"filter-type-in":[D,[W(N)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[D,[W(U)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[D,[N,W(U)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[D,[N,W(U)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:D,overloads:[[[D,D],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[Me(D),(t,e)=>{for(const r of e)if(!r.evaluate(t))return!1;return!0}]]},any:{type:D,overloads:[[[D,D],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[Me(D),(t,e)=>{for(const r of e)if(r.evaluate(t))return!0;return!1}]]},"!":[D,[D],(t,[e])=>!e.evaluate(t)],"is-supported-script":[D,[N],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return!r||r(e.evaluate(t))}],upcase:[N,[N],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[N,[N],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[N,Me(U),(t,e)=>e.map(e=>at(e.evaluate(t))).join("")],"resolved-locale":[N,[B],(t,[e])=>e.evaluate(t).resolvedLocale()]});class Xe{constructor(t,e){var r;this.expression=t,this._warningHistory={},this._evaluator=new yt,this._defaultValue=e?"color"===(r=e).type&&Ge(r.default)?new J(0,0,0,0):"color"===r.type?J.parse(r.default)||null:void 0===r.default?null:r.default:null,this._enumValues=e&&"enum"===e.type?e.values:null}evaluateWithoutErrorHandling(t,e,r,n,i,o){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=o,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,o){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=o||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||"number"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new lt(`Expected value to be one of ${Object.keys(this._enumValues).map(t=>JSON.stringify(t)).join(", ")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function Ze(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in Pe}function Ke(t,e){const r=new zt(Pe,[],e?function(t){const e={color:G,string:N,number:j,enum:N,boolean:D,formatted:V,resolvedImage:Y};if("array"===t.type)return W(e[t.value]||U,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return n?Fe(new Xe(n,e)):Ae(r.errors)}class He{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Nt(e.expression)}evaluateWithoutErrorHandling(t,e,r,n,i,o){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,o)}evaluate(t,e,r,n,i,o){return this._styleExpression.evaluate(t,e,r,n,i,o)}}class $e{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Nt(e.expression),this.interpolationType=n}evaluateWithoutErrorHandling(t,e,r,n,i,o){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,o)}evaluate(t,e,r,n,i,o){return this._styleExpression.evaluate(t,e,r,n,i,o)}interpolationFactor(t,e,r){return this.interpolationType?se.interpolationFactor(this.interpolationType,t,e,r):0}}function Je(t,e){if("error"===(t=Ke(t,e)).result)return t;const r=t.value.expression,n=jt(r);if(!n&&!ke(e))return Ae([new F("","data expressions not supported")]);const i=Dt(r,["zoom"]);if(!i&&!je(e))return Ae([new F("","zoom expressions not supported")]);const o=function t(e){let r=null;if(e instanceof ce)r=t(e.result);else if(e instanceof ue){for(const n of e.args)if(r=t(n),r)break}else(e instanceof Bt||e instanceof se)&&e.input instanceof mt&&"zoom"===e.input.name&&(r=e);if(r instanceof F)return r;return e.eachChild(e=>{const n=t(e);n instanceof F?r=n:!r&&n?r=new F("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):r&&n&&r!==n&&(r=new F("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),r}(r);if(!o&&!i)return Ae([new F("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(o instanceof F)return Ae([o]);if(o instanceof se&&!Ne(e))return Ae([new F("",'"interpolate" expressions cannot be used with this property')]);if(!o)return Fe(new He(n?"constant":"source",t.value));const a=o instanceof se?o.interpolation:void 0;return Fe(new $e(n?"camera":"composite",t.value,o.labels,a))}class Qe{constructor(t,e){this._parameters=t,this._specification=e,M(this,Ue(this._parameters,this._specification))}static deserialize(t){return new Qe(t._parameters,t._specification)}static serialize(t){return{_parameters:t._parameters,_specification:t._specification}}}function tr(t){return"object"==typeof t?["literal",t]:t}function er(t,e){let r=t.stops;if(!r)return function(t,e){const r=["get",t.property];if(void 0===t.default)return"string"===e.type?["string",r]:r;if("enum"===e.type)return["match",r,Object.keys(e.values),r,t.default];{const n=["color"===e.type?"to-color":e.type,r,tr(t.default)];return"array"===e.type&&n.splice(1,0,e.value,e.length||null),n}}(t,e);const n=r&&"object"==typeof r[0][0],i=n||void 0!==t.property,o=n||!i;return r=r.map(t=>!i&&e.tokens&&"string"==typeof t[1]?[t[0],lr(t[1])]:[t[0],tr(t[1])]),n?function(t,e,r){const n={},i={},o=[];for(let e=0;e3&&e===t[t.length-2]||(n&&2===t.length||t.push(e),t.push(r))}function sr(t,e){return t.type?t.type:e.expression.interpolated?"exponential":"interval"}function lr(t){const e=["concat"],r=/{([^{}]+)}/g;let n=0;for(let i=r.exec(t);null!==i;i=r.exec(t)){const o=t.slice(n,r.lastIndex-i[0].length);n=r.lastIndex,o.length>0&&e.push(o),e.push(["get",i[1]])}if(1===e.length)return t;if(n=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(const e of t.slice(1))if(!ur(e)&&"boolean"!=typeof e)return!1;return!0;default:return!0}}const cr={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function hr(t){if(null==t)return{filter:()=>!0,needGeometry:!1};ur(t)||(t=fr(t));const e=Ke(t,cr);if("error"===e.result)throw new Error(e.value.map(t=>`${t.key}: ${t.message}`).join(", "));return{filter:(t,r,n)=>e.value.evaluate(t,r,{},n),needGeometry:function t(e){if(!Array.isArray(e))return!1;if("within"===e[0])return!0;for(let r=1;re?1:0}function fr(t){if(!t)return!0;const e=t[0];if(t.length<=1)return"any"!==e;var r;return"=="===e?dr(t[1],t[2],"=="):"!="===e?mr(dr(t[1],t[2],"==")):"<"===e||">"===e||"<="===e||">="===e?dr(t[1],t[2],e):"any"===e?(r=t.slice(1),["any"].concat(r.map(fr))):"all"===e?["all"].concat(t.slice(1).map(fr)):"none"===e?["all"].concat(t.slice(1).map(fr).map(mr)):"in"===e?gr(t[1],t.slice(2)):"!in"===e?mr(gr(t[1],t.slice(2))):"has"===e?yr(t[1]):"!has"===e?mr(yr(t[1])):"within"!==e||t}function dr(t,e,r){switch(t){case"$type":return["filter-type-"+r,e];case"$id":return["filter-id-"+r,e];default:return["filter-"+r,t,e]}}function gr(t,e){if(0===e.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(t=>typeof t!=typeof e[0])?["filter-in-large",t,["literal",e.sort(pr)]]:["filter-in-small",t,["literal",e]]}}function yr(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function mr(t){return["!",t]}var vr=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function _r(t,e){const r={};for(const e in t)"ref"!==e&&(r[e]=t[e]);return vr.forEach(t=>{t in e&&(r[t]=e[t])}),r}function br(t){t=t.slice();const e=Object.create(null);for(let r=0;rn.maximum?[new xr(e,r,`${r} is greater than the maximum value ${n.maximum}`)]:[]}function Rr(t){const e=t.valueSpec,r=Er(t.value.type);let n,i,o,a={};const s="categorical"!==r&&void 0===t.value.property,l=!s,u="array"===De(t.value.stops)&&"array"===De(t.value.stops[0])&&"object"===De(t.value.stops[0][0]),c=Cr({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===r)return[new xr(t.key,t.value,'identity function may not have a "stops" property')];let e=[];const n=t.value;e=e.concat(Or({key:t.key,value:n,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),"array"===De(n)&&0===n.length&&e.push(new xr(t.key,n,"array must have at least one stop"));return e},default:function(t){return Vr({key:t.key,value:t.value,valueSpec:e,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===r&&s&&c.push(new xr(t.key,t.value,'missing required property "property"')),"identity"===r||t.value.stops||c.push(new xr(t.key,t.value,'missing required property "stops"')),"exponential"===r&&t.valueSpec.expression&&!Ne(t.valueSpec)&&c.push(new xr(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!ke(t.valueSpec)?c.push(new xr(t.key,t.value,"property functions not supported")):s&&!je(t.valueSpec)&&c.push(new xr(t.key,t.value,"zoom functions not supported"))),"categorical"!==r&&!u||void 0!==t.value.property||c.push(new xr(t.key,t.value,'"property" property is required')),c;function h(t){let r=[];const n=t.value,s=t.key;if("array"!==De(n))return[new xr(s,n,`array expected, ${De(n)} found`)];if(2!==n.length)return[new xr(s,n,`array length 2 expected, length ${n.length} found`)];if(u){if("object"!==De(n[0]))return[new xr(s,n,`object expected, ${De(n[0])} found`)];if(void 0===n[0].zoom)return[new xr(s,n,"object stop key must have zoom")];if(void 0===n[0].value)return[new xr(s,n,"object stop key must have value")];if(o&&o>Er(n[0].zoom))return[new xr(s,n[0].zoom,"stop zoom values must appear in ascending order")];Er(n[0].zoom)!==o&&(o=Er(n[0].zoom),i=void 0,a={}),r=r.concat(Cr({key:s+"[0]",value:n[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Pr,value:p}}))}else r=r.concat(p({key:s+"[0]",value:n[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},n));return Ze(Tr(n[1]))?r.concat([new xr(s+"[1]",n[1],"expressions are not allowed in function stops.")]):r.concat(Vr({key:s+"[1]",value:n[1],valueSpec:e,style:t.style,styleSpec:t.styleSpec}))}function p(t,o){const s=De(t.value),l=Er(t.value),u=null!==t.value?t.value:o;if(n){if(s!==n)return[new xr(t.key,u,`${s} stop domain type must match previous stop domain type ${n}`)]}else n=s;if("number"!==s&&"string"!==s&&"boolean"!==s)return[new xr(t.key,u,"stop domain value must be a number, string, or boolean")];if("number"!==s&&"categorical"!==r){let n=`number expected, ${s} found`;return ke(e)&&void 0===r&&(n+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new xr(t.key,u,n)]}return"categorical"!==r||"number"!==s||isFinite(l)&&Math.floor(l)===l?"categorical"!==r&&"number"===s&&void 0!==i&&lnew xr(`${t.key}${e.key}`,t.value,e.message));const r=e.value.expression||e.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!r.outputDefined())return[new xr(t.key,t.value,`Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===t.expressionContext&&"layout"===t.propertyType&&!Nt(r))return[new xr(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!Nt(r))return[new xr(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!Dt(r,["zoom","feature-state"]))return[new xr(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!jt(r))return[new xr(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Lr(t){const e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Er(r))&&i.push(new xr(e,r,`expected one of [${n.values.join(", ")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(Er(r))&&i.push(new xr(e,r,`expected one of [${Object.keys(n.values).join(", ")}], ${JSON.stringify(r)} found`)),i}function Mr(t){return ur(Tr(t.value))?Ir(M({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):function t(e){const r=e.value,n=e.key;if("array"!==De(r))return[new xr(n,r,`array expected, ${De(r)} found`)];const i=e.styleSpec;let o,a=[];if(r.length<1)return[new xr(n,r,"filter array must have at least 1 element")];switch(a=a.concat(Lr({key:n+"[0]",value:r[0],valueSpec:i.filter_operator,style:e.style,styleSpec:e.styleSpec})),Er(r[0])){case"<":case"<=":case">":case">=":r.length>=2&&"$type"===Er(r[1])&&a.push(new xr(n,r,`"$type" cannot be use with operator "${r[0]}"`));case"==":case"!=":3!==r.length&&a.push(new xr(n,r,`filter array for operator "${r[0]}" must have 3 elements`));case"in":case"!in":r.length>=2&&(o=De(r[1]),"string"!==o&&a.push(new xr(n+"[1]",r[1],`string expected, ${o} found`)));for(let t=2;t{t in r&&e.push(new xr(n,r[t],`"${t}" is prohibited for ref layers`))}),i.layers.forEach(e=>{Er(e.id)===s&&(t=e)}),t?t.ref?e.push(new xr(n,r.ref,"ref cannot reference another ref layer")):a=Er(t.type):e.push(new xr(n,r.ref,`ref layer "${s}" not found`))}else if("background"!==a&&"sky"!==a)if(r.source){const t=i.sources&&i.sources[r.source],o=t&&Er(t.type);t?"vector"===o&&"raster"===a?e.push(new xr(n,r.source,`layer "${r.id}" requires a raster source`)):"raster"===o&&"raster"!==a?e.push(new xr(n,r.source,`layer "${r.id}" requires a vector source`)):"vector"!==o||r["source-layer"]?"raster-dem"===o&&"hillshade"!==a?e.push(new xr(n,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==a||!r.paint||!r.paint["line-gradient"]||"geojson"===o&&t.lineMetrics||e.push(new xr(n,r,`layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new xr(n,r,`layer "${r.id}" must specify a "source-layer"`)):e.push(new xr(n,r.source,`source "${r.source}" not found`))}else e.push(new xr(n,r,'missing required property "source"'));return e=e.concat(Cr({key:n,value:r,valueSpec:o.layer,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":()=>[],type:()=>Vr({key:n+".type",value:r.type,valueSpec:o.layer.type,style:t.style,styleSpec:t.styleSpec,object:r,objectKey:"type"}),filter:Mr,layout:t=>Cr({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":t=>kr(M({layerType:a},t))}}),paint:t=>Cr({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{"*":t=>Ar(M({layerType:a},t))}})}})),e}function Nr(t){const e=t.value,r=t.key,n=De(e);return"string"!==n?[new xr(r,e,`string expected, ${n} found`)]:[]}const Dr={promoteId:function({key:t,value:e}){if("string"===De(e))return Nr({key:t,value:e});{const r=[];for(const n in e)r.push(...Nr({key:`${t}.${n}`,value:e[n]}));return r}}};function Gr(t){const e=t.value,r=t.key,n=t.styleSpec,i=t.style;if(!e.type)return[new xr(r,e,'"type" is required')];const o=Er(e.type);let a;switch(o){case"vector":case"raster":case"raster-dem":return a=Cr({key:r,value:e,valueSpec:n["source_"+o.replace("-","_")],style:t.style,styleSpec:n,objectElementValidators:Dr}),a;case"geojson":if(a=Cr({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,objectElementValidators:Dr}),e.cluster)for(const t in e.clusterProperties){const[n,i]=e.clusterProperties[t],o="string"==typeof n?[n,["accumulated"],["get",t]]:n;a.push(...Ir({key:`${r}.${t}.map`,value:i,expressionContext:"cluster-map"})),a.push(...Ir({key:`${r}.${t}.reduce`,value:o,expressionContext:"cluster-reduce"}))}return a;case"video":return Cr({key:r,value:e,valueSpec:n.source_video,style:i,styleSpec:n});case"image":return Cr({key:r,value:e,valueSpec:n.source_image,style:i,styleSpec:n});case"canvas":return[new xr(r,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return Lr({key:r+".type",value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:i,styleSpec:n})}}function zr(t){const e=t.value,r=t.styleSpec,n=r.light,i=t.style;let o=[];const a=De(e);if(void 0===e)return o;if("object"!==a)return o=o.concat([new xr("light",e,`object expected, ${a} found`)]),o;for(const t in e){const a=t.match(/^(.*)-transition$/);o=a&&n[a[1]]&&n[a[1]].transition?o.concat(Vr({key:t,value:e[t],valueSpec:r.transition,style:i,styleSpec:r})):n[t]?o.concat(Vr({key:t,value:e[t],valueSpec:n[t],style:i,styleSpec:r})):o.concat([new xr(t,e[t],`unknown property "${t}"`)])}return o}function Ur(t){const e=t.value,r=t.key,n=t.style,i=t.styleSpec,o=i.terrain;let a=[];const s=De(e);if(void 0===e)return a;if("object"!==s)return a=a.concat([new xr("terrain",e,`object expected, ${s} found`)]),a;for(const t in e){const r=t.match(/^(.*)-transition$/);a=r&&o[r[1]]&&o[r[1]].transition?a.concat(Vr({key:t,value:e[t],valueSpec:i.transition,style:n,styleSpec:i})):o[t]?a.concat(Vr({key:t,value:e[t],valueSpec:o[t],style:n,styleSpec:i})):a.concat([new xr(t,e[t],`unknown property "${t}"`)])}if(e.source){const t=n.sources&&n.sources[e.source],i=t&&Er(t.type);t?"raster-dem"!==i&&a.push(new xr(r,e.source,`terrain cannot be used with a source of type ${i}, it only be used with a "raster-dem" source type`)):a.push(new xr(r,e.source,`source "${e.source}" not found`))}else a.push(new xr(r,e,'terrain is missing required property "source"'));return a}const Br={"*":()=>[],array:Or,boolean:function(t){const e=t.value,r=t.key,n=De(e);return"boolean"!==n?[new xr(r,e,`boolean expected, ${n} found`)]:[]},number:Pr,color:function(t){const e=t.key,r=t.value,n=De(r);return"string"!==n?[new xr(e,r,`color expected, ${n} found`)]:null===$(r)?[new xr(e,r,`color expected, "${r}" found`)]:[]},constants:Sr,enum:Lr,filter:Mr,function:Rr,layer:jr,object:Cr,source:Gr,light:zr,terrain:Ur,string:Nr,formatted:function(t){return 0===Nr(t).length?[]:Ir(t)},resolvedImage:function(t){return 0===Nr(t).length?[]:Ir(t)}};function Vr(t){const e=t.value,r=t.valueSpec,n=t.styleSpec;if(r.expression&&Ge(Er(e)))return Rr(t);if(r.expression&&Ze(Tr(e)))return Ir(t);if(r.type&&Br[r.type])return Br[r.type](t);return Cr(M({},t,{valueSpec:r.type?n[r.type]:r}))}function Yr(t){const e=t.value,r=t.key,n=Nr(t);return n.length||(-1===e.indexOf("{fontstack}")&&n.push(new xr(r,e,'"glyphs" url must include a "{fontstack}" token')),-1===e.indexOf("{range}")&&n.push(new xr(r,e,'"glyphs" url must include a "{range}" token'))),n}function Wr(t,e=i){let r=[];return r=r.concat(Vr({key:"",value:t,valueSpec:e.$root,styleSpec:e,style:t,objectElementValidators:{glyphs:Yr,"*":()=>[]}})),t.constants&&(r=r.concat(Sr({key:"constants",value:t.constants,style:t,styleSpec:e}))),qr(r)}function qr(t){return[].concat(t).sort((t,e)=>t.line-e.line)}function Xr(t){return function(...e){return qr(t.apply(this,e))}}Wr.source=Xr(Gr),Wr.light=Xr(zr),Wr.terrain=Xr(Ur),Wr.layer=Xr(jr),Wr.filter=Xr(Mr),Wr.paintProperty=Xr(Ar),Wr.layoutProperty=Xr(kr);var Zr=s((function(t,e){var r=function(){var t=function(t,e,r,n){for(r=r||{},n=t.length;n--;r[t[n]]=e);return r},e=[1,12],r=[1,13],n=[1,9],i=[1,10],o=[1,11],a=[1,14],s=[1,15],l=[14,18,22,24],u=[18,22],c=[22,24],h={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(t,e,r,n,i,o,a){var s=o.length-1;switch(i){case 1:this.$=new String(t.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g,"\t").replace(/\\v/g,"\v").replace(/\\f/g,"\f").replace(/\\b/g,"\b")),this.$.__line__=this._$.first_line;break;case 2:this.$=new Number(t),this.$.__line__=this._$.first_line;break;case 3:this.$=null;break;case 4:this.$=new Boolean(!0),this.$.__line__=this._$.first_line;break;case 5:this.$=new Boolean(!1),this.$.__line__=this._$.first_line;break;case 6:return this.$=o[s-1];case 13:this.$={},Object.defineProperty(this.$,"__line__",{value:this._$.first_line,enumerable:!1});break;case 14:case 19:this.$=o[s-1],Object.defineProperty(this.$,"__line__",{value:this._$.first_line,enumerable:!1});break;case 15:this.$=[o[s-2],o[s]];break;case 16:this.$={},this.$[o[s][0]]=o[s][1];break;case 17:this.$=o[s-2],o[s-2][o[s][0]]=o[s][1];break;case 18:this.$=[],Object.defineProperty(this.$,"__line__",{value:this._$.first_line,enumerable:!1});break;case 20:this.$=[o[s]];break;case 21:this.$=o[s-2],o[s-2].push(o[s])}},table:[{3:5,4:e,5:6,6:r,7:3,8:n,9:4,10:i,11:o,12:1,13:2,15:7,16:8,17:a,23:s},{1:[3]},{14:[1,16]},t(l,[2,7]),t(l,[2,8]),t(l,[2,9]),t(l,[2,10]),t(l,[2,11]),t(l,[2,12]),t(l,[2,3]),t(l,[2,4]),t(l,[2,5]),t([14,18,21,22,24],[2,1]),t(l,[2,2]),{3:20,4:e,18:[1,17],19:18,20:19},{3:5,4:e,5:6,6:r,7:3,8:n,9:4,10:i,11:o,13:23,15:7,16:8,17:a,23:s,24:[1,21],25:22},{1:[2,6]},t(l,[2,13]),{18:[1,24],22:[1,25]},t(u,[2,16]),{21:[1,26]},t(l,[2,18]),{22:[1,28],24:[1,27]},t(c,[2,20]),t(l,[2,14]),{3:20,4:e,20:29},{3:5,4:e,5:6,6:r,7:3,8:n,9:4,10:i,11:o,13:30,15:7,16:8,17:a,23:s},t(l,[2,19]),{3:5,4:e,5:6,6:r,7:3,8:n,9:4,10:i,11:o,13:31,15:7,16:8,17:a,23:s},t(u,[2,17]),t(u,[2,15]),t(c,[2,21])],defaultActions:{16:[2,6]},parseError:function(t,e){if(!e.recoverable)throw new Error(t);this.trace(t)},parse:function(t){var e=this,r=[0],n=[null],i=[],o=this.table,a="",s=0,l=0,u=2,c=1,h=i.slice.call(arguments,1),p=Object.create(this.lexer),f={yy:{}};for(var d in this.yy)Object.prototype.hasOwnProperty.call(this.yy,d)&&(f.yy[d]=this.yy[d]);p.setInput(t,f.yy),f.yy.lexer=p,f.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var g=p.yylloc;i.push(g);var y=p.options&&p.options.ranges;function m(){var t;return"number"!=typeof(t=p.lex()||c)&&(t=e.symbols_[t]||t),t}"function"==typeof f.yy.parseError?this.parseError=f.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var v,_,b,x,w,S,E,T,C={};;){if(_=r[r.length-1],this.defaultActions[_]?b=this.defaultActions[_]:(null==v&&(v=m()),b=o[_]&&o[_][v]),void 0===b||!b.length||!b[0]){var O="";for(w in T=[],o[_])this.terminals_[w]&&w>u&&T.push("'"+this.terminals_[w]+"'");O=p.showPosition?"Parse error on line "+(s+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(s+1)+": Unexpected "+(v==c?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(O,{text:p.match,token:this.terminals_[v]||v,line:p.yylineno,loc:g,expected:T})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+v);switch(b[0]){case 1:r.push(v),n.push(p.yytext),i.push(p.yylloc),r.push(b[1]),v=null,l=p.yyleng,a=p.yytext,s=p.yylineno,g=p.yylloc;break;case 2:if(S=this.productions_[b[1]][1],C.$=n[n.length-S],C._$={first_line:i[i.length-(S||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(S||1)].first_column,last_column:i[i.length-1].last_column},y&&(C._$.range=[i[i.length-(S||1)].range[0],i[i.length-1].range[1]]),void 0!==(x=this.performAction.apply(C,[a,l,s,f.yy,b[1],n,i].concat(h))))return x;S&&(r=r.slice(0,-1*S*2),n=n.slice(0,-1*S),i=i.slice(0,-1*S)),r.push(this.productions_[b[1]][0]),n.push(C.$),i.push(C._$),E=o[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}},p={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,r,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;oe[0].length)){if(e=r,n=o,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[o])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,r,n){switch(r){case 0:break;case 1:return 6;case 2:return e.yytext=e.yytext.substr(1,e.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},rules:[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}};function f(){this.yy={}}return h.lexer=p,f.prototype=h,h.Parser=f,new f}();void 0!==a&&(e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)})}));Zr.parser,Zr.Parser,Zr.parse;function Kr(t){if(t instanceof String||"string"==typeof t||t instanceof n)try{return Zr.parse(t.toString())}catch(t){throw new wr(t)}return t}function Hr(t,e=i){let r=t;try{r=Kr(r)}catch(t){return[t]}return Wr(r,e)}const $r={StyleExpression:Xe,isExpression:Ze,isExpressionFilter:ur,createExpression:Ke,createPropertyExpression:Je,normalizePropertyExpression:function(t,e){if(Ge(t))return new Qe(t,e);if(Ze(t)){const r=Je(t,e);if("error"===r.result)throw new Error(r.value.map(t=>`${t.key}: ${t.message}`).join(", "));return r.value}{let r=t;return"string"==typeof t&&"color"===e.type&&(r=J.parse(t)),{kind:"constant",evaluate:()=>r}}},ZoomConstantExpression:He,ZoomDependentExpression:$e,StylePropertyFunction:Qe},Jr={convertFunction:er,createFunction:Ue,isFunction:Ge};Hr.parsed=Hr,Hr.latest=Hr}).call(this,r(4),r(7).Buffer)},function(t,e,r){t.exports=function(){"use strict";function t(t,n,i,o,a){!function t(r,n,i,o,a){for(;o>i;){if(o-i>600){var s=o-i+1,l=n-i+1,u=Math.log(s),c=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*c*(s-c)/s)*(l-s/2<0?-1:1);t(r,n,Math.max(i,Math.floor(n-l*c/s+h)),Math.min(o,Math.floor(n+(s-l)*c/s+h)),a)}var p=r[n],f=i,d=o;for(e(r,i,n),a(r[o],p)>0&&e(r,i,o);f0;)d--}0===a(r[i],p)?e(r,i,d):e(r,++d,o),d<=n&&(i=d+1),n<=d&&(o=d-1)}}(t,n,i||0,o||t.length-1,a||r)}function e(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function r(t,e){return te?1:0}var n=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function i(t,e,r){if(!r)return e.indexOf(t);for(var n=0;n=t.minX&&e.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function g(e,r,n,i,o){for(var a=[r,n];a.length;)if(!((n=a.pop())-(r=a.pop())<=i)){var s=r+Math.ceil((n-r)/i/2)*i;t(e,s,r,n,o),a.push(r,s,s,n)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(t){var e=this.data,r=[];if(!f(t,e))return r;for(var n=this.toBBox,i=[];e;){for(var o=0;o=0&&i[e].children.length>this._maxEntries;)this._split(i,e),e--;this._adjustParentBBoxes(n,i,e)},n.prototype._split=function(t,e){var r=t[e],n=r.children.length,i=this._minEntries;this._chooseSplitAxis(r,i,n);var a=this._chooseSplitIndex(r,i,n),s=d(r.children.splice(a,r.children.length-a));s.height=r.height,s.leaf=r.leaf,o(r,this.toBBox),o(s,this.toBBox),e?t[e-1].children.push(s):this._splitRoot(r,s)},n.prototype._splitRoot=function(t,e){this.data=d([t,e]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(t,e,r){for(var n,i,o,s,l,u,h,p=1/0,f=1/0,d=e;d<=r-e;d++){var g=a(t,0,d,this.toBBox),y=a(t,d,r,this.toBBox),m=(i=g,o=y,s=Math.max(i.minX,o.minX),l=Math.max(i.minY,o.minY),u=Math.min(i.maxX,o.maxX),h=Math.min(i.maxY,o.maxY),Math.max(0,u-s)*Math.max(0,h-l)),v=c(g)+c(y);m=e;f--){var d=t.children[f];s(l,t.leaf?i(d):d),u+=h(l)}return u},n.prototype._adjustParentBBoxes=function(t,e,r){for(var n=r;n>=0;n--)s(e[n],t)},n.prototype._condense=function(t){for(var e=t.length-1,r=void 0;e>=0;e--)0===t[e].children.length?e>0?(r=t[e-1].children).splice(r.indexOf(t[e]),1):this.clear():o(t[e],this.toBBox)},n}()},function(t,e){var r={thin:100,hairline:100,"ultra-light":100,"extra-light":100,light:200,book:300,regular:400,normal:400,plain:400,roman:400,standard:400,medium:500,"semi-bold":600,"demi-bold":600,bold:700,heavy:800,black:800,"extra-bold":800,"ultra-black":900,"extra-black":900,"ultra-bold":900,"heavy-black":900,fat:900,poster:900},n=/(italic|oblique)$/i,i={};t.exports=function(t,e,o){var a=i[t];if(!a){Array.isArray(t)||(t=[t]);for(var s=400,l="normal",u=[],c=0,h=t.length;c>1,c=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,o=f&(1<<-c)-1,f>>=-c,c+=s;c>0;o=256*o+t[e+h],h+=p,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=n;c>0;a=256*a+t[e+h],h+=p,c-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(f?-1:1);a+=Math.pow(2,n),o-=u}return(f?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,s,l,u=8*o-i-1,c=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:o-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=c?(s=0,a=c):a+h>=1?(s=(e*l-1)*Math.pow(2,i),a+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;t[r+f]=255&s,f+=d,s/=256,i-=8);for(a=a<0;t[r+f]=255&a,f+=d,a/=256,u-=8);t[r+f-d]|=128*g}},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){"use strict";t.exports=i;var n=r(3);function i(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}i.Varint=0,i.Fixed64=1,i.Bytes=2,i.Fixed32=5;var o="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function a(t){return t.type===i.Bytes?t.readVarint()+t.pos:t.pos+1}function s(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function l(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function u(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function b(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}i.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,o=this.pos;this.type=7&n,t(i,e,this),this.pos===o&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=v(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=b(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=v(this.buf,this.pos)+4294967296*v(this.buf,this.pos+4);return this.pos+=8,t},readSFixed64:function(){var t=v(this.buf,this.pos)+4294967296*b(this.buf,this.pos+4);return this.pos+=8,t},readFloat:function(){var t=n.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=n.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,o=r.buf;if(i=o[r.pos++],n=(112&i)>>4,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<3,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<10,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<17,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(127&i)<<24,i<128)return s(t,n,e);if(i=o[r.pos++],n|=(1&i)<<31,i<128)return s(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&o?function(t,e,r){return o.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n="",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(o=t[i+1]))&&(u=(31&l)<<6|63&o)<=127&&(u=null):3===c?(o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&((u=(15&l)<<12|(63&o)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(o=t[i+1],a=t[i+2],s=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&((u=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==i.Bytes)return t.push(this.readVarint(e));var r=a(this);for(t=t||[];this.pos127;);else if(e===i.Bytes)this.pos=this.readVarint()+this.pos;else if(e===i.Fixed32)this.pos+=4;else{if(e!==i.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,o=0;o55295&&n<57344){if(!i){n>56319||o+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&l(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),n.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),n.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&l(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,i.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,u,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,c,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,f,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,h,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,p,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,d,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,g,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,y,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,m,e)},writeBytesField:function(t,e){this.writeTag(t,i.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,i.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,i.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,i.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}}},function(t,e){(function(){var e;t.exports={icon:"icons/google.svg",name:"google",title:"Google Fonts",link:"google.com/fonts",getNames:function(){return e},getLink:function(t){return"https://fonts.google.com/specimen/"+t.replace(/( )/g,"+")},normalizeName:function(t){return t}},e=["ABeeZee","Abel","Abril Fatface","Aclonica","Acme","Actor","Adamina","Advent Pro","Aguafina Script","Akronim","Aladin","Aldrich","Alef","Alegreya","Alegreya SC","Alegreya Sans","Alegreya Sans SC","Alex Brush","Alfa Slab One","Alice","Alike","Alike Angular","Allan","Allerta","Allerta Stencil","Allura","Almendra","Almendra Display","Almendra SC","Amarante","Amaranth","Amatic SC","Amethysta","Amiri","Amita","Anaheim","Andada","Andika","Angkor","Annie Use Your Telescope","Anonymous Pro","Antic","Antic Didone","Antic Slab","Anton","Arapey","Arbutus","Arbutus Slab","Architects Daughter","Archivo Black","Archivo Narrow","Arimo","Arizonia","Armata","Artifika","Arvo","Arya","Asap","Asar","Asset","Astloch","Asul","Atomic Age","Aubrey","Audiowide","Autour One","Average","Average Sans","Averia Gruesa Libre","Averia Libre","Averia Sans Libre","Averia Serif Libre","Bad Script","Balthazar","Bangers","Basic","Battambang","Baumans","Bayon","Belgrano","Belleza","BenchNine","Bentham","Berkshire Swash","Bevan","Bigelow Rules","Bigshot One","Bilbo","Bilbo Swash Caps","Biryani","Bitter","Black Ops One","Bokor","Bonbon","Boogaloo","Bowlby One","Bowlby One SC","Brawler","Bree Serif","Bubblegum Sans","Bubbler One","Buda","Buenard","Butcherman","Butterfly Kids","Cabin","Cabin Condensed","Cabin Sketch","Caesar Dressing","Cagliostro","Calligraffitti","Cambay","Cambo","Candal","Cantarell","Cantata One","Cantora One","Capriola","Cardo","Carme","Carrois Gothic","Carrois Gothic SC","Carter One","Catamaran","Caudex","Caveat","Caveat Brush","Cedarville Cursive","Ceviche One","Changa One","Chango","Chau Philomene One","Chela One","Chelsea Market","Chenla","Cherry Cream Soda","Cherry Swash","Chewy","Chicle","Chivo","Chonburi","Cinzel","Cinzel Decorative","Clicker Script","Coda","Coda Caption","Codystar","Combo","Comfortaa","Coming Soon","Concert One","Condiment","Content","Contrail One","Convergence","Cookie","Copse","Corben","Courgette","Cousine","Coustard","Covered By Your Grace","Crafty Girls","Creepster","Crete Round","Crimson Text","Croissant One","Crushed","Cuprum","Cutive","Cutive Mono","Damion","Dancing Script","Dangrek","Dawning of a New Day","Days One","Dekko","Delius","Delius Swash Caps","Delius Unicase","Della Respira","Denk One","Devonshire","Dhurjati","Didact Gothic","Diplomata","Diplomata SC","Domine","Donegal One","Doppio One","Dorsa","Dosis","Dr Sugiyama","Droid Sans","Droid Sans Mono","Droid Serif","Duru Sans","Dynalight","EB Garamond","Eagle Lake","Eater","Economica","Eczar","Ek Mukta","Electrolize","Elsie","Elsie Swash Caps","Emblema One","Emilys Candy","Engagement","Englebert","Enriqueta","Erica One","Esteban","Euphoria Script","Ewert","Exo","Exo 2","Expletus Sans","Fanwood Text","Fascinate","Fascinate Inline","Faster One","Fasthand","Fauna One","Federant","Federo","Felipa","Fenix","Finger Paint","Fira Mono","Fira Sans","Fjalla One","Fjord One","Flamenco","Flavors","Fondamento","Fontdiner Swanky","Forum","Francois One","Freckle Face","Fredericka the Great","Fredoka One","Freehand","Fresca","Frijole","Fruktur","Fugaz One","GFS Didot","GFS Neohellenic","Gabriela","Gafata","Galdeano","Galindo","Gentium Basic","Gentium Book Basic","Geo","Geostar","Geostar Fill","Germania One","Gidugu","Gilda Display","Give You Glory","Glass Antiqua","Glegoo","Gloria Hallelujah","Goblin One","Gochi Hand","Gorditas","Goudy Bookletter 1911","Graduate","Grand Hotel","Gravitas One","Great Vibes","Griffy","Gruppo","Gudea","Gurajada","Habibi","Halant","Hammersmith One","Hanalei","Hanalei Fill","Handlee","Hanuman","Happy Monkey","Headland One","Henny Penny","Herr Von Muellerhoff","Hind","Hind Siliguri","Hind Vadodara","Holtwood One SC","Homemade Apple","Homenaje","IM Fell DW Pica","IM Fell DW Pica SC","IM Fell Double Pica","IM Fell Double Pica SC","IM Fell English","IM Fell English SC","IM Fell French Canon","IM Fell French Canon SC","IM Fell Great Primer","IM Fell Great Primer SC","Iceberg","Iceland","Imprima","Inconsolata","Inder","Indie Flower","Inika","Inknut Antiqua","Irish Grover","Istok Web","Italiana","Italianno","Itim","Jacques Francois","Jacques Francois Shadow","Jaldi","Jim Nightshade","Jockey One","Jolly Lodger","Josefin Sans","Josefin Slab","Joti One","Judson","Julee","Julius Sans One","Junge","Jura","Just Another Hand","Just Me Again Down Here","Kadwa","Kalam","Kameron","Kantumruy","Karla","Karma","Kaushan Script","Kavoon","Kdam Thmor","Keania One","Kelly Slab","Kenia","Khand","Khmer","Khula","Kite One","Knewave","Kotta One","Koulen","Kranky","Kreon","Kristi","Krona One","Kurale","La Belle Aurore","Laila","Lakki Reddy","Lancelot","Lateef","Lato","League Script","Leckerli One","Ledger","Lekton","Lemon","Libre Baskerville","Life Savers","Lilita One","Lily Script One","Limelight","Linden Hill","Lobster","Lobster Two","Londrina Outline","Londrina Shadow","Londrina Sketch","Londrina Solid","Lora","Love Ya Like A Sister","Loved by the King","Lovers Quarrel","Luckiest Guy","Lusitana","Lustria","Macondo","Macondo Swash Caps","Magra","Maiden Orange","Mako","Mallanna","Mandali","Marcellus","Marcellus SC","Marck Script","Margarine","Marko One","Marmelad","Martel","Martel Sans","Marvel","Mate","Mate SC","Maven Pro","McLaren","Meddon","MedievalSharp","Medula One","Megrim","Meie Script","Merienda","Merienda One","Merriweather","Merriweather Sans","Metal","Metal Mania","Metamorphous","Metrophobic","Michroma","Milonga","Miltonian","Miltonian Tattoo","Miniver","Miss Fajardose","Modak","Modern Antiqua","Molengo","Molle","Monda","Monofett","Monoton","Monsieur La Doulaise","Montaga","Montez","Montserrat","Montserrat Alternates","Montserrat Subrayada","Moul","Moulpali","Mountains of Christmas","Mouse Memoirs","Mr Bedfort","Mr Dafoe","Mr De Haviland","Mrs Saint Delafield","Mrs Sheppards","Muli","Mystery Quest","NTR","Neucha","Neuton","New Rocker","News Cycle","Niconne","Nixie One","Nobile","Nokora","Norican","Nosifer","Nothing You Could Do","Noticia Text","Noto Sans","Noto Serif","Nova Cut","Nova Flat","Nova Mono","Nova Oval","Nova Round","Nova Script","Nova Slim","Nova Square","Numans","Nunito","Odor Mean Chey","Offside","Old Standard TT","Oldenburg","Oleo Script","Oleo Script Swash Caps","Open Sans","Open Sans Condensed","Oranienbaum","Orbitron","Oregano","Orienta","Original Surfer","Oswald","Over the Rainbow","Overlock","Overlock SC","Ovo","Oxygen","Oxygen Mono","PT Mono","PT Sans","PT Sans Caption","PT Sans Narrow","PT Serif","PT Serif Caption","Pacifico","Palanquin","Palanquin Dark","Paprika","Parisienne","Passero One","Passion One","Pathway Gothic One","Patrick Hand","Patrick Hand SC","Patua One","Paytone One","Peddana","Peralta","Permanent Marker","Petit Formal Script","Petrona","Philosopher","Piedra","Pinyon Script","Pirata One","Plaster","Play","Playball","Playfair Display","Playfair Display SC","Podkova","Poiret One","Poller One","Poly","Pompiere","Pontano Sans","Poppins","Port Lligat Sans","Port Lligat Slab","Pragati Narrow","Prata","Preahvihear","Press Start 2P","Princess Sofia","Prociono","Prosto One","Puritan","Purple Purse","Quando","Quantico","Quattrocento","Quattrocento Sans","Questrial","Quicksand","Quintessential","Qwigley","Racing Sans One","Radley","Rajdhani","Raleway","Raleway Dots","Ramabhadra","Ramaraja","Rambla","Rammetto One","Ranchers","Rancho","Ranga","Rationale","Ravi Prakash","Redressed","Reenie Beanie","Revalia","Rhodium Libre","Ribeye","Ribeye Marrow","Righteous","Risque","Roboto","Roboto Condensed","Roboto Mono","Roboto Slab","Rochester","Rock Salt","Rokkitt","Romanesco","Ropa Sans","Rosario","Rosarivo","Rouge Script","Rozha One","Rubik","Rubik Mono One","Rubik One","Ruda","Rufina","Ruge Boogie","Ruluko","Rum Raisin","Ruslan Display","Russo One","Ruthie","Rye","Sacramento","Sahitya","Sail","Salsa","Sanchez","Sancreek","Sansita One","Sarala","Sarina","Sarpanch","Satisfy","Scada","Scheherazade","Schoolbell","Seaweed Script","Sevillana","Seymour One","Shadows Into Light","Shadows Into Light Two","Shanti","Share","Share Tech","Share Tech Mono","Shojumaru","Short Stack","Siemreap","Sigmar One","Signika","Signika Negative","Simonetta","Sintony","Sirin Stencil","Six Caps","Skranji","Slabo 13px","Slabo 27px","Slackey","Smokum","Smythe","Sniglet","Snippet","Snowburst One","Sofadi One","Sofia","Sonsie One","Sorts Mill Goudy","Source Code Pro","Source Sans Pro","Source Serif Pro","Special Elite","Spicy Rice","Spinnaker","Spirax","Squada One","Sree Krushnadevaraya","Stalemate","Stalinist One","Stardos Stencil","Stint Ultra Condensed","Stint Ultra Expanded","Stoke","Strait","Sue Ellen Francisco","Sumana","Sunshiney","Supermercado One","Sura","Suranna","Suravaram","Suwannaphum","Swanky and Moo Moo","Syncopate","Tangerine","Taprom","Tauri","Teko","Telex","Tenali Ramakrishna","Tenor Sans","Text Me One","The Girl Next Door","Tienne","Tillana","Timmana","Tinos","Titan One","Titillium Web","Trade Winds","Trocchi","Trochut","Trykker","Tulpen One","Ubuntu","Ubuntu Condensed","Ubuntu Mono","Ultra","Uncial Antiqua","Underdog","Unica One","UnifrakturCook","UnifrakturMaguntia","Unkempt","Unlock","Unna","VT323","Vampiro One","Varela","Varela Round","Vast Shadow","Vesper Libre","Vibur","Vidaloka","Viga","Voces","Volkhov","Vollkorn","Voltaire","Waiting for the Sunrise","Wallpoet","Walter Turncoat","Warnes","Wellfleet","Wendy One","Wire One","Work Sans","Yanone Kaffeesatz","Yantramanav","Yellowtail","Yeseva One","Yesteryear","Zeyada"]}).call(this)},function(t,e,r){"use strict";(function(t){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var n=r(8),i=r(3),o=r(9);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function d(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return z(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return U(t).length;default:if(n)return z(t).length;e=(""+e).toLowerCase(),n=!0}}function g(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return O(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return T(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=l.from(e,n)),l.isBuffer(e))return 0===e.length?-1:v(t,e,r,n,i);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,r,n,i){var o,a=1,s=t.length,l=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,l/=2,r/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var c=-1;for(o=r;os&&(r=s-l),o=r;o>=0;o--){for(var h=!0,p=0;pi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function T(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[i+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=t[i+1],a=t[i+2],s=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),i+=h}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},l.prototype.compare=function(t,e,r,n,i){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0),s=Math.min(o,a),u=this.slice(n,i),c=t.slice(e,r),h=0;hi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return _(this,t,e,r);case"utf8":case"utf-8":return b(this,t,e,r);case"ascii":return x(this,t,e,r);case"latin1":case"binary":return w(this,t,e,r);case"base64":return S(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function O(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,r,n,i,o){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function A(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function k(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function j(t,e,r,n,o){return o||k(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function N(t,e,r,n,o){return o||k(t,0,r,8),i.write(t,e,r,n,52,8),r+8}l.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},l.prototype.readUInt8=function(t,e){return e||L(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||L(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||L(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||L(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},l.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||L(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},l.prototype.readInt8=function(t,e){return e||L(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||L(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(t,e){e||L(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(t,e){return e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||L(t,4,this.length),i.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||L(t,4,this.length),i.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||L(t,8,this.length),i.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||L(t,8,this.length),i.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||M(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},l.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):A(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);M(this,t,e,r,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o>0)-s&255;return e+r},l.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);M(this,t,e,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+r},l.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):A(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,r){return j(this,t,e,!0,r)},l.prototype.writeFloatBE=function(t,e,r){return j(this,t,e,!1,r)},l.prototype.writeDoubleLE=function(t,e,r){return N(this,t,e,!0,r)},l.prototype.writeDoubleBE=function(t,e,r){return N(this,t,e,!1,r)},l.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function U(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(D,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function B(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(4))},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,n=u(t),a=n[0],s=n[1],l=new o(function(t,e,r){return 3*(e+r)/4-r}(0,a,s)),c=0,h=s>0?a-4:a;for(r=0;r>16&255,l[c++]=e>>8&255,l[c++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[c++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[c++]=e>>8&255,l[c++]=255&e);return l},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],a=0,s=r-i;as?s:a+16383));1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"="));return o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,r){for(var i,o,a=[],s=e;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){"use strict";function n(){return function(){throw new Error("Unimplemented abstract method.")}()}r.r(e);var i=0;function o(t){return t.ol_uid||(t.ol_uid=String(++i))}var a,s=(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),l=function(t){function e(e){var r=this,n="Assertion failed. See https://openlayers.org/en/"+("v"+"6.5.0".split("-")[0])+"/doc/errors/#"+e+" for details.";return(r=t.call(this,n)||this).code=e,r.name="AssertionError",r.message=n,r}return s(e,t),e}(Error);function u(t){t.stopPropagation()}var c=function(){function t(t){this.propagationStopped,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.propagationStopped=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),h="propertychange",p=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function f(t,e,r){for(var n,i,o=r||d,a=0,s=t.length,l=!1;a>1)],e))<0?a=n+1:(s=n,l=!i);return l?a:~a}function d(t,e){return t>e?1:t=0}function y(t,e,r){var n=t.length;if(t[0]<=e)return 0;if(e<=t[n-1])return n-1;var i=void 0;if(r>0){for(i=1;i>>0,i=0;i0||r&&0===o)}))}function S(){return!0}function E(){return!1}function T(){}function C(t){var e,r,n,i=!1;return function(){var o=Array.prototype.slice.call(arguments);return i&&this===n&&b(o,r)||(i=!0,n=this,r=o,e=t.apply(this,arguments)),e}}var O="function"==typeof Object.assign?Object.assign:function(t,e){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var r=Object(t),n=1,i=arguments.length;n0)},e.prototype.removeEventListener=function(t,e){var r=this.listeners_&&this.listeners_[t];if(r){var n=r.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(r[n]=T,++this.pendingRemovals_[t]):(r.splice(n,1),0===r.length&&delete this.listeners_[t]))}},e}(p),F="change",A="error",k="clear",j="contextmenu",N="click",D="dblclick",G="dragenter",z="dragover",U="drop",B="keydown",V="keypress",Y="load",W="resize",q="touchmove",X="wheel";function Z(t,e,r,n,i){if(n&&n!==t&&(r=r.bind(n)),i){var o=r;r=function(){t.removeEventListener(e,r),o.apply(this,arguments)}}var a={target:t,type:e,listener:r};return t.addEventListener(e,r),a}function K(t,e,r,n){return Z(t,e,r,n,!0)}function H(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),P(t))}var $=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function J(t){if(Array.isArray(t))for(var e=0,r=t.length;e0;)this.pop()},e.prototype.extend=function(t){for(var e=0,r=t.length;ei&&(l|=qt),so&&(l|=Wt),l===Vt&&(l=Yt),l}function ne(){return[1/0,1/0,-1/0,-1/0]}function ie(t,e,r,n,i){return i?(i[0]=t,i[1]=e,i[2]=r,i[3]=n,i):[t,e,r,n]}function oe(t){return ie(1/0,1/0,-1/0,-1/0,t)}function ae(t,e){var r=t[0],n=t[1];return ie(r,n,r,n,e)}function se(t,e){return fe(oe(e),t)}function le(t,e,r,n,i){return de(oe(i),t,e,r,n)}function ue(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function ce(t,e,r){return Math.abs(t[0]-e[0])t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function pe(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function fe(t,e){for(var r=0,n=e.length;re[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Ie(t){return t[2]=a&&g<=l),n||!(o&qt)||i&qt||(n=(y=f-(p-l)*d)>=s&&y<=u),n||!(o&Xt)||i&Xt||(n=(g=p-(f-s)/d)>=a&&g<=l),n||!(o&Zt)||i&Zt||(n=(y=f-(p-a)*d)>=s&&y<=u)}return n}function Ae(t,e,r,n){var i=[];if(n>1)for(var o=t[2]-t[0],a=t[3]-t[1],s=0;s=r[2])){var i=Pe(r),o=Math.floor((n[0]-r[0])/i)*i;t[0]-=o,t[2]-=o}return t}var je=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||wt[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();function Ne(t,e,r){return Math.min(Math.max(t,e),r)}var De="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},Ge="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function ze(t,e,r,n,i,o){var a=i-r,s=o-n;if(0!==a||0!==s){var l=((t-r)*a+(e-n)*s)/(a*a+s*s);l>1?(r=i,n=o):l>0&&(r+=a*l,n+=s*l)}return Ue(t,e,r,n)}function Ue(t,e,r,n){var i=r-t,o=n-e;return i*i+o*o}function Be(t){for(var e=t.length,r=0;ri&&(i=a,n=o)}if(0===i)return null;var s=t[n];t[n]=t[r],t[r]=s;for(var l=r+1;l=0;p--){h[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*h[p]}return h}function Ve(t){return 180*t/Math.PI}function Ye(t){return t*Math.PI/180}function We(t,e){var r=t%e;return r*e<0?r+e:r}function qe(t,e,r){return t+r*(e-t)}var Xe=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ze=6378137*Math.PI,Ke=[-Ze,-Ze,Ze,Ze],He=[-180,-85,180,85],$e=6378137*Math.log(Math.tan(Math.PI/2)),Je=function(t){function e(e){return t.call(this,{code:e,units:St.METERS,extent:Ke,global:!0,worldExtent:He,getPointResolution:function(t,e){return t/De(e[1]/6378137)}})||this}return Xe(e,t),e}(je),Qe=[new Je("EPSG:3857"),new Je("EPSG:102100"),new Je("EPSG:102113"),new Je("EPSG:900913"),new Je("http://www.opengis.net/gml/srs/epsg.xml#3857")];function tr(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;a$e?s=$e:s<-$e&&(s=-$e),o[a+1]=s}return o}function er(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;ae?n:new Array(1+e-i).join("0")+n}function br(t,e){for(var r=(""+t).split("."),n=(""+e).split("."),i=0;ia)return 1;if(a>o)return-1}return 0}function xr(t,e){return t[0]+=+e[0],t[1]+=+e[1],t}function wr(t,e){var r=e.getRadius(),n=e.getCenter(),i=n[0],o=n[1],a=t[0]-i,s=t[1]-o;0===a&&0===s&&(a=1);var l=Math.sqrt(a*a+s*s);return[i+r*a/l,o+r*s/l]}function Sr(t,e){var r,n,i=t[0],o=t[1],a=e[0],s=e[1],l=a[0],u=a[1],c=s[0],h=s[1],p=c-l,f=h-u,d=0===p&&0===f?0:(p*(i-l)+f*(o-u))/(p*p+f*f||0);return d<=0?(r=l,n=u):d>=1?(r=c,n=h):(r=l+d*p,n=u+d*f),[r,n]}function Er(t,e,r){var n=We(e+180,360)-180,i=Math.abs(3600*n),o=r||0,a=Math.pow(10,o),s=Math.floor(i/3600),l=Math.floor((i-3600*s)/60),u=i-3600*s-60*l;return(u=Math.ceil(u*a)/a)>=60&&(u=0,l+=1),l>=60&&(l=0,s+=1),s+"° "+_r(l,2)+"′ "+_r(u,2,o)+"″"+(0==n?"":" "+t.charAt(n<0?1:0))}function Tr(t,e,r){return t?e.replace("{x}",t[0].toFixed(r)).replace("{y}",t[1].toFixed(r)):""}function Cr(t,e){for(var r=!0,n=t.length-1;n>=0;--n)if(t[n]!=e[n]){r=!1;break}return r}function Or(t,e){var r=Math.cos(e),n=Math.sin(e),i=t[0]*r-t[1]*n,o=t[1]*r+t[0]*n;return t[0]=i,t[1]=o,t}function Pr(t,e){return t[0]*=e,t[1]*=e,t}function Rr(t,e){var r=t[0]-e[0],n=t[1]-e[1];return r*r+n*n}function Ir(t,e){return Math.sqrt(Rr(t,e))}function Lr(t,e){return Rr(t,Sr(t,e))}function Mr(t,e){return Tr(t,"{x}, {y}",e)}function Fr(t,e){if(e.canWrapX()){var r=Pe(e.getExtent()),n=Ar(t,e,r);n&&(t[0]-=n*r)}return t}function Ar(t,e,r){var n=e.getExtent(),i=0;if(e.canWrapX()&&(t[0]n[2])){var o=r||Pe(n);i=Math.floor((t[0]-n[0])/o)}return i}function kr(t,e,r){var n;if(void 0!==e){for(var i=0,o=t.length;i=2;--u)a[s+u]=e[s+u]}return a}}function Wr(t,e,r,n){var i=Gr(t),o=Gr(e);fr(i,o,Yr(r)),fr(o,i,Yr(n))}function qr(t,e){return Hr(t,"EPSG:4326",void 0!==e?e:"EPSG:3857")}function Xr(t,e){if(t===e)return!0;var r=t.getUnits()===e.getUnits();return(t.getCode()===e.getCode()||Zr(t,e)===kr)&&r}function Zr(t,e){var r=dr(t.getCode(),e.getCode());return r||(r=jr),r}function Kr(t,e){return Zr(Gr(t),Gr(e))}function Hr(t,e,r){return Kr(e,r)(t,void 0,t.length)}function $r(t,e,r,n){return Ae(t,Kr(e,r),void 0,n)}var Jr=null;function Qr(t){Jr=Gr(t)}function tn(){return Jr}function en(t,e){return Jr?Hr(t,e,Jr):t}function rn(t,e){return Jr?Hr(t,Jr,e):t}function nn(t,e){return Jr?$r(t,e,Jr):t}function on(t,e){return Jr?$r(t,Jr,e):t}function an(t,e,r){return function(n){var i,o,a=n[0],s=n[1];if(t.canWrapX()){var l=t.getExtent(),u=Pe(l);(o=Ar(n,t,u))&&(a-=o*u),a=Ne(a,l[0],l[2]),s=Ne(s,l[1],l[3]),i=r([a,s])}else i=r(n);return o&&e.canWrapX()&&(i[0]+=o*Pe(e.getExtent())),i}}function sn(){Ur(Qe),Ur(ar),Br(ar,Qe,tr,er)}function ln(t,e,r,n,i,o){for(var a=o||[],s=0,l=e;l1)s=r;else{if(p>0){for(var f=0;fi&&(i=u),o=s,a=l}return i}function xn(t,e,r,n,i){for(var o=0,a=r.length;o0;){for(var h=u.pop(),p=u.pop(),f=0,d=t[p],g=t[p+1],y=t[h],m=t[h+1],v=p+n;vf&&(c=v,f=_)}f>i&&(l[(c-e)/n]=1,p+ni&&(o[a++]=u,o[a++]=c,s=u,l=c);return u==s&&c==l||(o[a++]=u,o[a++]=c),a}function Fn(t,e){return e*Math.round(t/e)}function An(t,e,r,n,i,o,a){if(e==r)return a;var s,l,u=Fn(t[e],i),c=Fn(t[e+1],i);e+=n,o[a++]=u,o[a++]=c;do{if(s=Fn(t[e],i),l=Fn(t[e+1],i),(e+=n)==r)return o[a++]=s,o[a++]=l,a}while(s==u&&l==c);for(;e0&&g>f)&&(d<0&&y0&&y>d)?(s=h,l=p):(o[a++]=s,o[a++]=l,u=s,c=l,s=h,l=p)}}return o[a++]=s,o[a++]=l,a}function kn(t,e,r,n,i,o,a,s){for(var l=0,u=r.length;lo&&(u-s)*(o-l)-(i-s)*(c-l)>0&&a++:c<=o&&(u-s)*(o-l)-(i-s)*(c-l)<0&&a--,s=u,l=c}return 0!==a}function Kn(t,e,r,n,i,o){if(0===r.length)return!1;if(!Zn(t,e,r[0],n,i,o))return!1;for(var a=1,s=r.length;ax&&Kn(t,e,r,n,u=(c+h)/2,g)&&(b=u,x=w),c=h}return isNaN(b)&&(b=i[o]),a?(a.push(b,g,x),a):[b,g,x]}function Jn(t,e,r,n,i){for(var o=[],a=0,s=r.length;a=i[0]&&o[2]<=i[2]||(o[1]>=i[1]&&o[3]<=i[3]||Qn(t,e,r,n,(function(t,e){return Fe(i,t,e)})))))}function ei(t,e,r,n,i){for(var o=0,a=r.length;o0}function si(t,e,r,n,i){for(var o=void 0!==i&&i,a=0,s=r.length;at)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){n()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var r=this.transitionStarts_[t];if(r){if(-1===r)return 1}else r=e,this.transitionStarts_[t]=r;var n=e-r+1e3/60;return n>=this.transition_?1:no(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(M);function uo(t,e,r){var n=r&&r.length?r.shift():Yi?new OffscreenCanvas(t||300,e||300):document.createElement("canvas");return t&&(n.width=t),e&&(n.height=e),n.getContext("2d")}function co(t){var e=t.offsetWidth,r=getComputedStyle(t);return e+=parseInt(r.marginLeft,10)+parseInt(r.marginRight,10)}function ho(t){var e=t.offsetHeight,r=getComputedStyle(t);return e+=parseInt(r.marginTop,10)+parseInt(r.marginBottom,10)}function po(t,e){var r=e.parentNode;r&&r.replaceChild(t,e)}function fo(t){return t&&t.parentNode?t.parentNode.removeChild(t):null}function go(t){for(;t.lastChild;)t.removeChild(t.lastChild)}function yo(t,e){for(var r=t.childNodes,n=0;;++n){var i=r[n],o=e[n];if(!i&&!o)break;i!==o&&(i?o?t.insertBefore(o,i):(t.removeChild(i),--n):t.appendChild(o))}}var mo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var vo=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.crossOrigin_=i,s.src_=n,s.key=n,s.image_=new Image,null!==i&&(s.image_.crossOrigin=i),s.unlisten_=null,s.tileLoadFunction_=o,s}return mo(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){var t;this.state=eo,this.unlistenImage_(),this.image_=((t=uo(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=to:this.state=ro,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==eo&&(this.state=Ji,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==Ji&&(this.state=Qi,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Zi(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(lo),_o=function(){function t(t,e,r){this.decay_=t,this.minVelocity_=e,this.delay_=r,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[r+2]>t;)r-=3;var n=this.points_[e+2]-this.points_[r+2];if(n<1e3/60)return!1;var i=this.points_[e]-this.points_[r],o=this.points_[e+1]-this.points_[r+1];return this.angle_=Math.atan2(o,i),this.initialVelocity_=Math.sqrt(i*i+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),bo=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,xo=/^([a-z]*)$|^hsla?\(.*\)$/i;function wo(t){return"string"==typeof t?t:Ro(t)}function So(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var r=getComputedStyle(e).color;return document.body.removeChild(e),r}return""}var Eo,To,Co=(Eo={},To=0,function(t){var e;if(Eo.hasOwnProperty(t))e=Eo[t];else{if(To>=1024){var r=0;for(var n in Eo)0==(3&r++)&&(delete Eo[n],--To)}e=function(t){var e,r,n,i,o;if(xo.exec(t)&&(t=So(t)),bo.exec(t)){var a=t.length-1,s=void 0;s=a<=4?1:2;var l=4===a||8===a;e=parseInt(t.substr(1+0*s,s),16),r=parseInt(t.substr(1+1*s,s),16),n=parseInt(t.substr(1+2*s,s),16),i=l?parseInt(t.substr(1+3*s,s),16):255,1==s&&(e=(e<<4)+e,r=(r<<4)+r,n=(n<<4)+n,l&&(i=(i<<4)+i)),o=[e,r,n,i/255]}else 0==t.indexOf("rgba(")?Po(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),Po(o)):pt(!1,14);return o}(t),Eo[t]=e,++To}return e});function Oo(t){return Array.isArray(t)?t:Co(t)}function Po(t){return t[0]=Ne(t[0]+.5|0,0,255),t[1]=Ne(t[1]+.5|0,0,255),t[2]=Ne(t[2]+.5|0,0,255),t[3]=Ne(t[3],0,1),t}function Ro(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var r=t[1];r!=(0|r)&&(r=r+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+r+","+n+","+(void 0===t[3]?1:t[3])+")"}function Io(t){return xo.test(t)&&(t=So(t)),bo.test(t)||0===t.indexOf("rgba(")||0===t.indexOf("rgb(")}var Lo=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var r=this.cache_[e];0!=(3&t++)||r.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,r){var n=Mo(t,e,r);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,r,n){var i=Mo(t,e,r);this.cache_[i]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function Mo(t,e,r){return e+":"+t+":"+(r?wo(r):"null")}var Fo=Lo,Ao=new Lo,ko="opacity",jo="visible",No="extent",Do="zIndex",Go="maxResolution",zo="minResolution",Uo="maxZoom",Bo="minZoom",Vo="source",Yo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wo=function(t){function e(e){var r=t.call(this)||this,n=O({},e);return n[ko]=void 0!==e.opacity?e.opacity:1,pt("number"==typeof n[ko],64),n[jo]=void 0===e.visible||e.visible,n[Do]=e.zIndex,n[Go]=void 0!==e.maxResolution?e.maxResolution:1/0,n[zo]=void 0!==e.minResolution?e.minResolution:0,n[Bo]=void 0!==e.minZoom?e.minZoom:-1/0,n[Uo]=void 0!==e.maxZoom?e.maxZoom:1/0,r.className_=void 0!==n.className?e.className:"ol-layer",delete n.className,r.setProperties(n),r.state_=null,r}return Yo(e,t),e.prototype.getClassName=function(){return this.className_},e.prototype.getLayerState=function(t){var e=this.state_||{layer:this,managed:void 0===t||t},r=this.getZIndex();return e.opacity=Ne(Math.round(100*this.getOpacity())/100,0,1),e.sourceState=this.getSourceState(),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==r?r:!1===e.managed?1/0:0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e},e.prototype.getLayersArray=function(t){return n()},e.prototype.getLayerStatesArray=function(t){return n()},e.prototype.getExtent=function(){return this.get(No)},e.prototype.getMaxResolution=function(){return this.get(Go)},e.prototype.getMinResolution=function(){return this.get(zo)},e.prototype.getMinZoom=function(){return this.get(Bo)},e.prototype.getMaxZoom=function(){return this.get(Uo)},e.prototype.getOpacity=function(){return this.get(ko)},e.prototype.getSourceState=function(){return n()},e.prototype.getVisible=function(){return this.get(jo)},e.prototype.getZIndex=function(){return this.get(Do)},e.prototype.setExtent=function(t){this.set(No,t)},e.prototype.setMaxResolution=function(t){this.set(Go,t)},e.prototype.setMinResolution=function(t){this.set(zo,t)},e.prototype.setMaxZoom=function(t){this.set(Uo,t)},e.prototype.setMinZoom=function(t){this.set(Bo,t)},e.prototype.setOpacity=function(t){pt("number"==typeof t,64),this.set(ko,t)},e.prototype.setVisible=function(t){this.set(jo,t)},e.prototype.setZIndex=function(t){this.set(Do,t)},e.prototype.disposeInternal=function(){this.state_&&(this.state_.layer=null,this.state_=null),t.prototype.disposeInternal.call(this)},e}(ot),qo="prerender",Xo="postrender",Zo="precompose",Ko="postcompose",Ho="rendercomplete",$o="undefined",Jo="loading",Qo="ready",ta="error",ea=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function ra(t,e){if(!t.visible)return!1;var r=e.resolution;if(r=t.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var na=function(t){function e(e){var r=this,n=O({},e);delete n.source,(r=t.call(this,n)||this).mapPrecomposeKey_=null,r.mapRenderKey_=null,r.sourceChangeKey_=null,r.renderer_=null,e.render&&(r.render=e.render),e.map&&r.setMap(e.map),r.addEventListener(it(Vo),r.handleSourcePropertyChange_);var i=e.source?e.source:null;return r.setSource(i),r}return ea(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(Vo)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():$o},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(H(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=Z(t,F,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_.getFeatures(t)},e.prototype.render=function(t,e){var r=this.getRenderer();if(r.prepareFrame(t))return r.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(H(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(H(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=Z(t,Zo,(function(t){var e=t.frameState.layerStatesArray,r=this.getLayerState(!1);pt(!e.some((function(t){return t.layer===r.layer})),67),e.push(r)}),this),this.mapRenderKey_=Z(this,F,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(Vo,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(Wo),ia=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function oa(t,e){Ao.expire()}var aa=function(t){function e(e){var r=t.call(this)||this;return r.map_=e,r}return ia(e,t),e.prototype.dispatchRenderEvent=function(t,e){n()},e.prototype.calculateMatrices2D=function(t){var e=t.viewState,r=t.coordinateToPixelTransform,n=t.pixelToCoordinateTransform;kt(r,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),jt(n,r)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i,o,a,s){var l,u=e.viewState;function c(t,e,r,n){return i.call(o,e,t?r:null,n)}var h=u.projection,p=Fr(t.slice(),h),f=[[0,0]];if(h.canWrapX()&&n){var d=Pe(h.getExtent());f.push([-d,0],[d,0])}for(var g=e.layerStatesArray,y=g.length,m=[],v=[],_=0;_=0;--b){var x=g[b],w=x.layer;if(w.hasRenderer()&&ra(x,u)&&a.call(s,w)){var S=w.getRenderer(),E=w.getSource();if(S&&E){var T=E.getWrapX()?p:t,C=c.bind(null,x.managed);v[0]=T[0]+f[_][0],v[1]=T[1]+f[_][1],l=S.forEachFeatureAtCoordinate(v,e,r,C,m)}if(l)return l}}if(0!==m.length){var O=1/m.length;return m.forEach((function(t,e){return t.distanceSq+=e*O})),m.sort((function(t,e){return t.distanceSq-e.distanceSq})),m.some((function(t){return l=t.callback(t.feature,t.layer,t.geometry)})),l}},e.prototype.forEachLayerAtPixel=function(t,e,r,i,o){return n()},e.prototype.hasFeatureAtCoordinate=function(t,e,r,n,i,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,r,n,S,this,i,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){n()},e.prototype.scheduleExpireIconCache=function(t){Ao.canExpireCache()&&t.postRenderFunctions.push(oa)},e}(p),sa=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),la=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.inversePixelTransform=r,o.frameState=n,o.context=i,o}return sa(e,t),e}(c),ua=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),ca=["style","variant","weight","size","lineHeight","family"],ha=function(t){var e=t.match(ua);if(!e)return null;for(var r={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},n=0,i=ca.length;n=0;--o)n[o].renderDeclutter(t);yo(this.element_,this.children_),this.dispatchRenderEvent(Ko,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)}else this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1)},e.prototype.forEachLayerAtPixel=function(t,e,r,n,i){for(var o=e.viewState,a=e.layerStatesArray,s=a.length-1;s>=0;--s){var l=a[s],u=l.layer;if(u.hasRenderer()&&ra(l,o)&&i(u)){var c=u.getRenderer().getDataAtPixel(t,e,r);if(c){var h=n(u,c);if(h)return h}}}},e}(aa),Ma=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Fa="layers",Aa=function(t){function e(e){var r=this,n=e||{},i=O({},n);delete i.layers;var o=n.layers;return(r=t.call(this,i)||this).layersListenerKeys_=[],r.listenerKeys_={},r.addEventListener(it(Fa),r.handleLayersChanged_),o?Array.isArray(o)?o=new ht(o.slice(),{unique:!0}):pt("function"==typeof o.getArray,43):o=new ht(void 0,{unique:!0}),r.setLayers(o),r}return Ma(e,t),e.prototype.handleLayerChange_=function(){this.changed()},e.prototype.handleLayersChanged_=function(){this.layersListenerKeys_.forEach(H),this.layersListenerKeys_.length=0;var t=this.getLayers();for(var e in this.layersListenerKeys_.push(Z(t,at,this.handleLayersAdd_,this),Z(t,st,this.handleLayersRemove_,this)),this.listenerKeys_)this.listenerKeys_[e].forEach(H);P(this.listenerKeys_);for(var r=t.getArray(),n=0,i=r.length;nthis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(H(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(q,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(H(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(H),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(M),qa="postrender",Xa="movestart",Za="moveend",Ka="layergroup",Ha="size",$a="target",Ja="view",Qa=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,P(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,r=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(r);return delete this.queuedElements_[n],r},t.prototype.enqueue=function(t){pt(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=1/0&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,r=this.priorities_,n=e.length,i=e[t],o=r[t],a=t;t>1;){var s=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),u=lt;){var a=this.getParentIndex_(e);if(!(n[a]>o))break;r[e]=r[a],n[e]=n[a],e=a}r[e]=i,n[e]=o},t.prototype.reprioritize=function(){var t,e,r,n=this.priorityFunction_,i=this.elements_,o=this.priorities_,a=0,s=i.length;for(e=0;e0;)n=(r=this.dequeue()[0]).getKey(),r.getState()!==Ji||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++i,r.load())},e}(Qa);function rs(t,e,r,n,i){if(!t||!(r in t.wantedTiles))return 1/0;if(!t.wantedTiles[r][e.getKey()])return 1/0;var o=t.viewState.center,a=n[0]-o[0],s=n[1]-o[1];return 65536*Math.log(i)+Math.sqrt(a*a+s*s)/i}var ns=0,is=1,os="center",as="resolution",ss="rotation";function ls(t,e,r){return function(n,i,o,a,s){if(n){var l=e?0:o[0]*i,u=e?0:o[1]*i,c=s?s[0]:0,h=s?s[1]:0,p=t[0]+l/2+c,f=t[2]-l/2+c,d=t[1]+u/2+h,g=t[3]-u/2+h;p>f&&(f=p=(f+p)/2),d>g&&(g=d=(g+d)/2);var y=Ne(n[0],p,f),m=Ne(n[1],d,g),v=30*i;return a&&r&&(y+=-v*Math.log(1+Math.max(0,p-n[0])/v)+v*Math.log(1+Math.max(0,n[0]-f)/v),m+=-v*Math.log(1+Math.max(0,d-n[1])/v)+v*Math.log(1+Math.max(0,n[1]-g)/v)),[y,m]}}}function us(t){return t}function cs(t,e,r,n){var i=Pe(e)/r[0],o=Ee(e)/r[1];return n?Math.min(t,Math.max(i,o)):Math.min(t,Math.min(i,o))}function hs(t,e,r){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,r&&(n=Math.max(n,r),n/=Math.log(1+50*Math.max(0,r/t-1))/50+1),Ne(n,r/2,2*e)}function ps(t,e,r,n){return function(i,o,a,s){if(void 0!==i){var l=t[0],u=t[t.length-1],c=r?cs(l,r,a,n):l;if(s)return void 0===e||e?hs(i,c,u):Ne(i,u,c);var h=Math.min(c,i),p=Math.floor(y(t,h,o));return t[p]>c&&p1&&"function"==typeof arguments[r-1]&&(e=arguments[r-1],--r),!this.isDef()){var n=arguments[r-1];return n.center&&this.setCenterInternal(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&bs(e,!0))}for(var i=Date.now(),o=this.targetCenter_.slice(),a=this.targetResolution_,s=this.targetRotation_,l=[],u=0;u0},e.prototype.getInteracting=function(){return this.hints_[is]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(ns,-this.hints_[ns]);for(var e=0,r=this.animations_.length;e=0;--r){for(var n=this.animations_[r],i=!0,o=0,a=n.length;o0?l/s.duration:1;u>=1?(s.complete=!0,u=1):i=!1;var c=s.easing(u);if(s.sourceCenter){var h=s.sourceCenter[0],p=s.sourceCenter[1],f=h+c*(s.targetCenter[0]-h),d=p+c*(s.targetCenter[1]-p);this.targetCenter_=[f,d]}if(s.sourceResolution&&s.targetResolution){var g=1===c?s.targetResolution:s.sourceResolution+c*(s.targetResolution-s.sourceResolution);if(s.anchor){var y=this.getViewportSize_(this.getRotation()),m=this.constraints_.resolution(g,0,y,!0);this.targetCenter_=this.calculateCenterZoom(m,s.anchor)}this.targetResolution_=g,this.applyTargetState_(!0)}if(void 0!==s.sourceRotation&&void 0!==s.targetRotation){var v=1===c?We(s.targetRotation+Math.PI,2*Math.PI)-Math.PI:s.sourceRotation+c*(s.targetRotation-s.sourceRotation);if(s.anchor){var _=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(_,s.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!s.complete)break}}if(i){this.animations_[r]=null,this.setHint(ns,-1);var b=n[0].callback;b&&bs(b,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var r,n=this.getCenterInternal();return void 0!==n&&(Or(r=[n[0]-e[0],n[1]-e[1]],t-this.getRotation()),xr(r,e)),r},e.prototype.calculateCenterZoom=function(t,e){var r,n=this.getCenterInternal(),i=this.getResolution();void 0!==n&&void 0!==i&&(r=[e[0]-t*(e[0]-n[0])/i,e[1]-t*(e[1]-n[1])/i]);return r},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var r=e[0],n=e[1];return[Math.abs(r*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(r*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?en(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(os)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return nn(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSize_(),r=this.getCenterInternal();pt(r,1);var n=this.getResolution();pt(void 0!==n,2);var i=this.getRotation();return pt(void 0!==i,3),Se(r,n,i,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(as)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(on(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var r=e||this.getViewportSize_(),n=Pe(t)/r[0],i=Ee(t)/r[1];return Math.max(n,i)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/Math.log(e);return function(t){return r/Math.pow(e,t*i)}},e.prototype.getRotation=function(){return this.get(ss)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/e;return function(t){return Math.log(r/t)/e/i}},e.prototype.getViewportSizeMinusPadding_=function(t){var e=this.getViewportSize_(t),r=this.padding;return r&&(e=[e[0]-r[1]-r[3],e[1]-r[0]-r[2]]),e},e.prototype.getState=function(){var t=this.getProjection(),e=this.getResolution(),r=this.getRotation(),n=this.getCenterInternal(),i=this.padding;if(i){var o=this.getViewportSizeMinusPadding_();n=Ts(n,this.getViewportSize_(),[o[0]/2+i[3],o[1]/2+i[0]],e,r)}return{center:n.slice(0),projection:void 0!==t?t:null,resolution:e,rotation:r,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,r,n=this.minZoom_||0;if(this.resolutions_){var i=y(this.resolutions_,t,1);n=i,e=this.resolutions_[i],r=i==this.resolutions_.length-1?2:e/this.resolutions_[i+1]}else e=this.maxResolution_,r=this.zoomFactor_;return n+Math.log(e/t)/Math.log(r)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Ne(Math.floor(t),0,this.resolutions_.length-2),r=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(r,Ne(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var r;if(pt(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))pt(!Ie(t),25),r=gi(n=on(t,this.getProjection()));else if(t.getType()===bt.CIRCLE){var n;(r=gi(n=on(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),xe(n))}else{var i=tn();r=i?t.clone().transform(i,this.getProjection()):t}this.fitInternal(r,e)},e.prototype.fitInternal=function(t,e){var r=e||{},n=r.size;n||(n=this.getViewportSizeMinusPadding_());var i,o=void 0!==r.padding?r.padding:[0,0,0,0],a=void 0!==r.nearest&&r.nearest;i=void 0!==r.minResolution?r.minResolution:void 0!==r.maxZoom?this.getResolutionForZoom(r.maxZoom):0;for(var s=t.getFlatCoordinates(),l=this.getRotation(),u=Math.cos(-l),c=Math.sin(-l),h=1/0,p=1/0,f=-1/0,d=-1/0,g=t.getStride(),y=0,m=s.length;y0&&t[1]>0}function Rs(t,e,r){return void 0===r&&(r=[0,0]),r[0]=t[0]*e+.5|0,r[1]=t[1]*e+.5|0,r}function Is(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}var Ls=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var Ms=function(t){function e(e){var r=t.call(this)||this,n=function(t){var e=null;void 0!==t.keyboardEventTarget&&(e="string"==typeof t.keyboardEventTarget?document.getElementById(t.keyboardEventTarget):t.keyboardEventTarget);var r,n,i,o={},a=t.layers&&"function"==typeof t.layers.getLayers?t.layers:new Aa({layers:t.layers});o[Ka]=a,o[$a]=t.target,o[Ja]=void 0!==t.view?t.view:new Cs,void 0!==t.controls&&(Array.isArray(t.controls)?r=new ht(t.controls.slice()):(pt("function"==typeof t.controls.getArray,47),r=t.controls));void 0!==t.interactions&&(Array.isArray(t.interactions)?n=new ht(t.interactions.slice()):(pt("function"==typeof t.interactions.getArray,48),n=t.interactions));void 0!==t.overlays?Array.isArray(t.overlays)?i=new ht(t.overlays.slice()):(pt("function"==typeof t.overlays.getArray,49),i=t.overlays):i=new ht;return{controls:r,interactions:n,keyboardEventTarget:e,overlays:i,values:o}}(e);return r.boundHandleBrowserEvent_=r.handleBrowserEvent.bind(r),r.maxTilesLoading_=void 0!==e.maxTilesLoading?e.maxTilesLoading:16,r.pixelRatio_=void 0!==e.pixelRatio?e.pixelRatio:Vi,r.postRenderTimeoutHandle_,r.animationDelayKey_,r.animationDelay_=function(){this.animationDelayKey_=void 0,this.renderFrame_(Date.now())}.bind(r),r.coordinateToPixelTransform_=[1,0,0,1,0,0],r.pixelToCoordinateTransform_=[1,0,0,1,0,0],r.frameIndex_=0,r.frameState_=null,r.previousExtent_=null,r.viewPropertyListenerKey_=null,r.viewChangeListenerKey_=null,r.layerGroupPropertyListenerKeys_=null,r.viewport_=document.createElement("div"),r.viewport_.className="ol-viewport"+("ontouchstart"in window?" ol-touch":""),r.viewport_.style.position="relative",r.viewport_.style.overflow="hidden",r.viewport_.style.width="100%",r.viewport_.style.height="100%",r.overlayContainer_=document.createElement("div"),r.overlayContainer_.style.position="absolute",r.overlayContainer_.style.zIndex="0",r.overlayContainer_.style.width="100%",r.overlayContainer_.style.height="100%",r.overlayContainer_.style.pointerEvents="none",r.overlayContainer_.className="ol-overlaycontainer",r.viewport_.appendChild(r.overlayContainer_),r.overlayContainerStopEvent_=document.createElement("div"),r.overlayContainerStopEvent_.style.position="absolute",r.overlayContainerStopEvent_.style.zIndex="0",r.overlayContainerStopEvent_.style.width="100%",r.overlayContainerStopEvent_.style.height="100%",r.overlayContainerStopEvent_.style.pointerEvents="none",r.overlayContainerStopEvent_.className="ol-overlaycontainer-stopevent",r.viewport_.appendChild(r.overlayContainerStopEvent_),r.mapBrowserEventHandler_=null,r.moveTolerance_=e.moveTolerance,r.keyboardEventTarget_=n.keyboardEventTarget,r.keyHandlerKeys_=null,r.controls=n.controls||new ht,r.interactions=n.interactions||new ht,r.overlays_=n.overlays,r.overlayIdIndex_={},r.renderer_=null,r.handleResize_,r.postRenderFunctions_=[],r.tileQueue_=new es(r.getTilePriority.bind(r),r.handleTileChange_.bind(r)),r.addEventListener(it(Ka),r.handleLayerGroupChanged_),r.addEventListener(it(Ja),r.handleViewChanged_),r.addEventListener(it(Ha),r.handleSizeChanged_),r.addEventListener(it($a),r.handleTargetChanged_),r.setProperties(n.values),r.controls.forEach(function(t){t.setMap(this)}.bind(r)),r.controls.addEventListener(at,function(t){t.element.setMap(this)}.bind(r)),r.controls.addEventListener(st,function(t){t.element.setMap(null)}.bind(r)),r.interactions.forEach(function(t){t.setMap(this)}.bind(r)),r.interactions.addEventListener(at,function(t){t.element.setMap(this)}.bind(r)),r.interactions.addEventListener(st,function(t){t.element.setMap(null)}.bind(r)),r.overlays_.forEach(r.addOverlayInternal_.bind(r)),r.overlays_.addEventListener(at,function(t){this.addOverlayInternal_(t.element)}.bind(r)),r.overlays_.addEventListener(st,function(t){var e=t.element.getId();void 0!==e&&delete this.overlayIdIndex_[e.toString()],t.element.setMap(null)}.bind(r)),r}return Ls(e,t),e.prototype.createRenderer=function(){throw new Error("Use a map type that has a createRenderer method")},e.prototype.addControl=function(t){this.getControls().push(t)},e.prototype.addInteraction=function(t){this.getInteractions().push(t)},e.prototype.addLayer=function(t){this.getLayerGroup().getLayers().push(t)},e.prototype.addOverlay=function(t){this.getOverlays().push(t)},e.prototype.addOverlayInternal_=function(t){var e=t.getId();void 0!==e&&(this.overlayIdIndex_[e.toString()]=t),t.setMap(this)},e.prototype.disposeInternal=function(){this.setTarget(null),t.prototype.disposeInternal.call(this)},e.prototype.forEachFeatureAtPixel=function(t,e,r){if(this.frameState_){var n=this.getCoordinateFromPixelInternal(t),i=void 0!==(r=void 0!==r?r:{}).hitTolerance?r.hitTolerance:0,o=void 0!==r.layerFilter?r.layerFilter:S,a=!1!==r.checkWrapped;return this.renderer_.forEachFeatureAtCoordinate(n,this.frameState_,i,a,e,null,o,null)}},e.prototype.getFeaturesAtPixel=function(t,e){var r=[];return this.forEachFeatureAtPixel(t,(function(t){r.push(t)}),e),r},e.prototype.forEachLayerAtPixel=function(t,e,r){if(this.frameState_){var n=r||{},i=void 0!==n.hitTolerance?n.hitTolerance:0,o=n.layerFilter||S;return this.renderer_.forEachLayerAtPixel(t,this.frameState_,i,e,o)}},e.prototype.hasFeatureAtPixel=function(t,e){if(!this.frameState_)return!1;var r=this.getCoordinateFromPixelInternal(t),n=void 0!==(e=void 0!==e?e:{}).layerFilter?e.layerFilter:S,i=void 0!==e.hitTolerance?e.hitTolerance:0,o=!1!==e.checkWrapped;return this.renderer_.hasFeatureAtCoordinate(r,this.frameState_,i,o,n,null)},e.prototype.getEventCoordinate=function(t){return this.getCoordinateFromPixel(this.getEventPixel(t))},e.prototype.getEventCoordinateInternal=function(t){return this.getCoordinateFromPixelInternal(this.getEventPixel(t))},e.prototype.getEventPixel=function(t){var e=this.viewport_.getBoundingClientRect(),r="changedTouches"in t?t.changedTouches[0]:t;return[r.clientX-e.left,r.clientY-e.top]},e.prototype.getTarget=function(){return this.get($a)},e.prototype.getTargetElement=function(){var t=this.getTarget();return void 0!==t?"string"==typeof t?document.getElementById(t):t:null},e.prototype.getCoordinateFromPixel=function(t){return en(this.getCoordinateFromPixelInternal(t),this.getView().getProjection())},e.prototype.getCoordinateFromPixelInternal=function(t){var e=this.frameState_;return e?It(e.pixelToCoordinateTransform,t.slice()):null},e.prototype.getControls=function(){return this.controls},e.prototype.getOverlays=function(){return this.overlays_},e.prototype.getOverlayById=function(t){var e=this.overlayIdIndex_[t.toString()];return void 0!==e?e:null},e.prototype.getInteractions=function(){return this.interactions},e.prototype.getLayerGroup=function(){return this.get(Ka)},e.prototype.getLayers=function(){return this.getLayerGroup().getLayers()},e.prototype.getLoading=function(){for(var t=this.getLayerGroup().getLayerStatesArray(),e=0,r=t.length;e=0;s--){var l=a[s];if(l.getMap()===this&&l.getActive()&&this.getTargetElement())if(!l.handleEvent(t)||t.propagationStopped)break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var r=this.maxTilesLoading_,n=r;if(t){var i=t.viewHints;if(i[ns]||i[is]){var o=!Wi&&Date.now()-t.time>8;r=o?0:8,n=o?0:2}}e.getTilesLoading()0;if(this.renderedVisible_!=r&&(this.element.style.display=r?"":"none",this.renderedVisible_=r),!b(e,this.renderedAttributions_)){go(this.ulElement_);for(var n=0,i=e.length;n0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:io}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var r=e.viewState.rotation;if(r!=this.rotation_){var n="rotate("+r+"rad)";if(this.autoHide_){var i=this.element.classList.contains("ol-hidden");i||0!==r?i&&0!==r&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.label_.style.transform=n}this.rotation_=r}},e}(As),Gs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zs=function(t){function e(e){var r=this,n=e||{};r=t.call(this,{element:document.createElement("div"),target:n.target})||this;var i=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,a=void 0!==n.zoomInClassName?n.zoomInClassName:i+"-in",s=void 0!==n.zoomOutClassName?n.zoomOutClassName:i+"-out",l=void 0!==n.zoomInLabel?n.zoomInLabel:"+",u=void 0!==n.zoomOutLabel?n.zoomOutLabel:"−",c=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",h=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",p=document.createElement("button");p.className=a,p.setAttribute("type","button"),p.title=c,p.appendChild("string"==typeof l?document.createTextNode(l):l),p.addEventListener(N,r.handleClick_.bind(r,o),!1);var f=document.createElement("button");f.className=s,f.setAttribute("type","button"),f.title=h,f.appendChild("string"==typeof u?document.createTextNode(u):u),f.addEventListener(N,r.handleClick_.bind(r,-o),!1);var d=i+" ol-unselectable ol-control",g=r.element;return g.className=d,g.appendChild(p),g.appendChild(f),r.duration_=void 0!==n.duration?n.duration:250,r}return Gs(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var r=e.getZoom();if(void 0!==r){var n=e.getConstrainedZoom(r+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:io})):e.setZoom(n)}}},e}(As);function Us(t){var e=t||{},r=new ht;return(void 0===e.zoom||e.zoom)&&r.push(new zs(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&r.push(new Ds(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&r.push(new js(e.attributionOptions)),r}var Bs="active",Vs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Ys(t,e,r){var n=t.getCenterInternal();if(n){var i=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==r?r:250,easing:ao,center:t.getConstrainedCenter(i)})}}function Ws(t,e,r,n){var i=t.getZoom();if(void 0!==i){var o=t.getConstrainedZoom(i+e),a=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:a,anchor:r,duration:void 0!==n?n:250,easing:io})}}var qs=function(t){function e(e){var r=t.call(this)||this;return e&&e.handleEvent&&(r.handleEvent=e.handleEvent),r.map_=null,r.setActive(!0),r}return Vs(e,t),e.prototype.getActive=function(){return this.get(Bs)},e.prototype.getMap=function(){return this.map_},e.prototype.handleEvent=function(t){return!0},e.prototype.setActive=function(t){this.set(Bs,t)},e.prototype.setMap=function(t){this.map_=t},e}(ot),Xs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zs=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:250,r}return Xs(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==Ga.DBLCLICK){var r=t.originalEvent,n=t.map,i=t.coordinate,o=r.shiftKey?-this.delta_:this.delta_;Ws(n.getView(),o,i,this.duration_),r.preventDefault(),e=!0}return!e},e}(qs),Ks=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Hs(t){for(var e=t.length,r=0,n=0,i=0;i0}}else if(t.type==Ga.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==Ga.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Ga.POINTERDOWN||e===Ga.POINTERDRAG||e===Ga.POINTERUP}(t)){var e=t.originalEvent,r=e.pointerId.toString();t.type==Ga.POINTERUP?delete this.trackedPointers_[r]:(t.type==Ga.POINTERDOWN||r in this.trackedPointers_)&&(this.trackedPointers_[r]=e),this.targetPointers=R(this.trackedPointers_)}},e}(qs);function Js(t){var e=arguments;return function(t){for(var r=!0,n=0,i=e.length;n0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}($s),dl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),gl=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{stopDown:E})||this).condition_=n.condition?n.condition:tl,r.lastAngle_=void 0,r.duration_=void 0!==n.duration?n.duration:250,r}return dl(e,t),e.prototype.handleDragEvent=function(t){if(cl(t)){var e=t.map,r=e.getView();if(r.getConstraints().rotation!==gs){var n=e.getSize(),i=t.pixel,o=Math.atan2(n[1]/2-i[1],i[0]-n[0]/2);if(void 0!==this.lastAngle_){var a=o-this.lastAngle_;r.adjustRotationInternal(-a)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!cl(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!cl(t)&&(!(!il(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}($s),yl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ml=function(t){function e(e){var r=t.call(this)||this;return r.geometry_=null,r.element_=document.createElement("div"),r.element_.style.position="absolute",r.element_.style.pointerEvents="auto",r.element_.className="ol-box "+e,r.map_=null,r.startPixel_=null,r.endPixel_=null,r}return yl(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,r=this.element_.style;r.left=Math.min(t[0],e[0])+"px",r.top=Math.min(t[1],e[1])+"px",r.width=Math.abs(e[0]-t[0])+"px",r.height=Math.abs(e[1]-t[1])+"px"},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,r=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);r[4]=r[0].slice(),this.geometry_?this.geometry_.setCoordinates([r]):this.geometry_=new fi([r])},e.prototype.getGeometry=function(){return this.geometry_},e}(p),vl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_l="boxstart",bl="boxdrag",xl="boxend",wl="boxcancel",Sl=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.coordinate=r,i.mapBrowserEvent=n,i}return vl(e,t),e}(c),El=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.box_=new ml(n.className||"ol-dragbox"),r.minArea_=void 0!==n.minArea?n.minArea:64,n.onBoxEnd&&(r.onBoxEnd=n.onBoxEnd),r.startPixel_=null,r.condition_=n.condition?n.condition:il,r.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:r.defaultBoxEndCondition,r}return vl(e,t),e.prototype.defaultBoxEndCondition=function(t,e,r){var n=r[0]-e[0],i=r[1]-e[1];return n*n+i*i>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Sl(bl,t.coordinate,t))},e.prototype.handleUpEvent=function(t){this.box_.setMap(null);var e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new Sl(e?xl:wl,t.coordinate,t)),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Sl(_l,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}($s),Tl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Cl=function(t){function e(e){var r=this,n=e||{},i=n.condition?n.condition:ll;return(r=t.call(this,{condition:i,className:n.className||"ol-dragzoom",minArea:n.minArea})||this).duration_=void 0!==n.duration?n.duration:200,r.out_=void 0!==n.out&&n.out,r}return Tl(e,t),e.prototype.onBoxEnd=function(t){var e=this.getMap(),r=e.getView(),n=e.getSize(),i=this.getGeometry().getExtent();if(this.out_){var o=r.calculateExtentInternal(n),a=se([e.getPixelFromCoordinateInternal(_e(i)),e.getPixelFromCoordinateInternal(Oe(i))]);Me(o,1/r.getResolutionForExtentInternal(a,n)),i=o}var s=r.getConstrainedResolution(r.getResolutionForExtentInternal(i,n)),l=r.getConstrainedCenter(xe(i),s);r.animateInternal({resolution:s,center:l,duration:this.duration_,easing:io})},e}(El),Ol=37,Pl=38,Rl=39,Il=40,Ll=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ml=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.defaultCondition_=function(t){return sl(t)&&ul(t)},r.condition_=void 0!==n.condition?n.condition:r.defaultCondition_,r.duration_=void 0!==n.duration?n.duration:100,r.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,r}return Ll(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==B){var r=t.originalEvent,n=r.keyCode;if(this.condition_(t)&&(n==Il||n==Ol||n==Rl||n==Pl)){var i=t.map.getView(),o=i.getResolution()*this.pixelDelta_,a=0,s=0;n==Il?s=-o:n==Ol?a=-o:n==Rl?a=o:s=o;var l=[a,s];Or(l,i.getRotation()),Ys(i,l,this.duration_),r.preventDefault(),e=!0}}return!e},e}(qs),Fl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Al=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.condition_=n.condition?n.condition:ul,r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:100,r}return Fl(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==B||t.type==V){var r=t.originalEvent,n=r.charCode;if(this.condition_(t)&&(n=="+".charCodeAt(0)||n=="-".charCodeAt(0))){var i=t.map,o=n=="+".charCodeAt(0)?this.delta_:-this.delta_;Ws(i.getView(),o,void 0,this.duration_),r.preventDefault(),e=!0}}return!e},e}(qs),kl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jl="trackpad",Nl="wheel",Dl=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,n)||this).totalDelta_=0,r.lastDelta_=0,r.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,r.duration_=void 0!==n.duration?n.duration:250,r.timeout_=void 0!==n.timeout?n.timeout:80,r.useAnchor_=void 0===n.useAnchor||n.useAnchor,r.constrainResolution_=void 0!==n.constrainResolution&&n.constrainResolution;var i=n.condition?n.condition:nl;return r.condition_=n.onFocusOnly?Js(rl,i):i,r.lastAnchor_=null,r.startTime_=void 0,r.timeoutId_,r.mode_=void 0,r.trackpadEventGap_=400,r.trackpadTimeoutId_,r.deltaPerZoom_=300,r}return kl(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==X)return!0;var e,r=t.map,n=t.originalEvent;if(n.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==X&&(e=n.deltaY,Gi&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=Vi),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var i=Date.now();void 0===this.startTime_&&(this.startTime_=i),(!this.mode_||i-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?jl:Nl);var o=r.getView();if(this.mode_===jl&&!o.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=i,!1;this.totalDelta_+=e;var a=Math.max(this.timeout_-(i-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,r),a),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var r=-Ne(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(r=r?r>0?1:-1:0),Ws(e,r,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(qs),Gl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zl=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).anchor_=null,r.lastAngle_=void 0,r.rotating_=!1,r.rotationDelta_=0,r.threshold_=void 0!==n.threshold?n.threshold:.3,r.duration_=void 0!==n.duration?n.duration:250,r}return Gl(e,t),e.prototype.handleDragEvent=function(t){var e=0,r=this.targetPointers[0],n=this.targetPointers[1],i=Math.atan2(n.clientY-r.clientY,n.clientX-r.clientX);if(void 0!==this.lastAngle_){var o=i-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=i;var a=t.map,s=a.getView();if(s.getConstraints().rotation!==gs){var l=a.getViewport().getBoundingClientRect(),u=Hs(this.targetPointers);u[0]-=l.left,u[1]-=l.top,this.anchor_=a.getCoordinateFromPixelInternal(u),this.rotating_&&(a.render(),s.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($s),Ul=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bl=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).anchor_=null,r.duration_=void 0!==n.duration?n.duration:400,r.lastDistance_=void 0,r.lastScaleDelta_=1,r}return Ul(e,t),e.prototype.handleDragEvent=function(t){var e=1,r=this.targetPointers[0],n=this.targetPointers[1],i=r.clientX-n.clientX,o=r.clientY-n.clientY,a=Math.sqrt(i*i+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/a),this.lastDistance_=a;var s=t.map,l=s.getView();1!=e&&(this.lastScaleDelta_=e);var u=s.getViewport().getBoundingClientRect(),c=Hs(this.targetPointers);c[0]-=u.left,c[1]-=u.top,this.anchor_=s.getCoordinateFromPixelInternal(c),s.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),r=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,r),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($s);function Vl(t){var e=t||{},r=new ht,n=new _o(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&r.push(new gl),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&r.push(new Zs({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&r.push(new fl({onFocusOnly:e.onFocusOnly,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&r.push(new zl),(void 0===e.pinchZoom||e.pinchZoom)&&r.push(new Bl({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(r.push(new Ml),r.push(new Al({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&r.push(new Dl({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&r.push(new Cl({duration:e.zoomDuration})),r}var Yl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wl=function(t){function e(e){return(e=O({},e)).controls||(e.controls=Us()),e.interactions||(e.interactions=Vl({onFocusOnly:!0})),t.call(this,e)||this}return Yl(e,t),e.prototype.createRenderer=function(){return new La(this)},e}(Ms),ql="bottom-left",Xl="bottom-center",Zl="bottom-right",Kl="center-left",Hl="center-center",$l="center-right",Jl="top-left",Ql="top-center",tu="top-right",eu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ru="element",nu="map",iu="offset",ou="position",au="positioning",su=function(t){function e(e){var r=t.call(this)||this;r.options=e,r.id=e.id,r.insertFirst=void 0===e.insertFirst||e.insertFirst,r.stopEvent=void 0===e.stopEvent||e.stopEvent,r.element=document.createElement("div"),r.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",r.element.style.position="absolute",r.element.style.pointerEvents="auto";var n=e.autoPan;return n&&"object"!=typeof n&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),r.autoPan=n||!1,r.rendered={transform_:"",visible:!0},r.mapPostrenderListenerKey=null,r.addEventListener(it(ru),r.handleElementChanged),r.addEventListener(it(nu),r.handleMapChanged),r.addEventListener(it(iu),r.handleOffsetChanged),r.addEventListener(it(ou),r.handlePositionChanged),r.addEventListener(it(au),r.handlePositioningChanged),void 0!==e.element&&r.setElement(e.element),r.setOffset(void 0!==e.offset?e.offset:[0,0]),r.setPositioning(void 0!==e.positioning?e.positioning:Jl),void 0!==e.position&&r.setPosition(e.position),r}return eu(e,t),e.prototype.getElement=function(){return this.get(ru)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(nu)},e.prototype.getOffset=function(){return this.get(iu)},e.prototype.getPosition=function(){return this.get(ou)},e.prototype.getPositioning=function(){return this.get(au)},e.prototype.handleElementChanged=function(){go(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(fo(this.element),H(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=Z(t,qa,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(ru,t)},e.prototype.setMap=function(t){this.set(nu,t)},e.prototype.setOffset=function(t){this.set(iu,t)},e.prototype.setPosition=function(t){this.set(ou,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(ou)){var r=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),i=this.getRect(n,[co(n),ho(n)]),o=t||{},a=void 0===o.margin?20:o.margin;if(!te(r,i)){var s=i[0]-r[0],l=r[2]-i[2],u=i[1]-r[1],c=r[3]-i[3],h=[0,0];if(s<0?h[0]=s-a:l<0&&(h[0]=Math.abs(l)+a),u<0?h[1]=u-a:c<0&&(h[1]=Math.abs(c)+a),0!==h[0]||0!==h[1]){var p=e.getView().getCenterInternal(),f=e.getPixelFromCoordinateInternal(p);if(!f)return;var d=[f[0]+h[0],f[1]+h[1]],g=o.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:g.duration,easing:g.easing})}}}},e.prototype.getRect=function(t,e){var r=t.getBoundingClientRect(),n=r.left+window.pageXOffset,i=r.top+window.pageYOffset;return[n,i,n+e[0],i+e[1]]},e.prototype.setPositioning=function(t){this.set(au,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var r=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(r,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var r=this.element.style,n=this.getOffset(),i=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",a=Math.round(t[1]+n[1])+"px",s="0%",l="0%";i==Zl||i==$l||i==tu?s="-100%":i!=Xl&&i!=Hl&&i!=Ql||(s="-50%"),i==ql||i==Xl||i==Zl?l="-100%":i!=Kl&&i!=Hl&&i!=$l||(l="-50%");var u="translate("+s+", "+l+") translate("+o+", "+a+")";this.rendered.transform_!=u&&(this.rendered.transform_=u,r.transform=u,r.msTransform=u)},e.prototype.getOptions=function(){return this.options},e}(ot),lu=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var r=this.entries_[t];return pt(void 0!==r,15),r===this.newest_||(r===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(r.newer.older=r.older,r.older.newer=r.newer),r.newer=null,r.older=this.newest_,this.newest_.newer=r,this.newest_=r),r.value_},t.prototype.remove=function(t){var e=this.entries_[t];return pt(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){pt(!(t in this.entries_),16);var r={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=r:this.oldest_=r,this.newest_=r,this.entries_[t]=r,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function uu(t,e,r,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=r,n):[t,e,r]}function cu(t,e,r){return t+"/"+e+"/"+r}function hu(t){return cu(t[0],t[1],t[2])}function pu(t){return t.split("/").map(Number)}function fu(t){return(t[1]<r||r>e.getMaxZoom())return!1;var o=e.getFullTileRange(r);return!o||o.containsXY(n,i)}var gu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),yu=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return gu(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=pu(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(hu(e.tileCoord)),e.release())}.bind(this))}},e}(lu),mu=function(){function t(t,e,r,n){this.minX=t,this.maxX=e,this.minY=r,this.maxY=n}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function vu(t,e,r,n,i){return void 0!==i?(i.minX=t,i.maxX=e,i.minY=r,i.maxY=n,i):new mu(t,e,r,n)}var _u=mu,bu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xu=[],wu=function(t){function e(e,r,n,i){var o=t.call(this,e,r,{transition:0})||this;return o.context_={},o.executorGroups={},o.declutterExecutorGroups={},o.loadingSourceTiles=0,o.errorSourceTileKeys={},o.hitDetectionImageData={},o.replayState_={},o.sourceTiles=null,o.wantedResolution,o.getSourceTiles=i.bind(void 0,o),o.sourceZ=-1,o.hifi=!1,o.wrappedTileCoord=n,o}return bu(e,t),e.prototype.getContext=function(t){var e=o(t);return e in this.context_||(this.context_[e]=uo(1,1,xu)),this.context_[e]},e.prototype.hasContext=function(t){return o(t)in this.context_},e.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},e.prototype.getReplayState=function(t){var e=o(t);return e in this.replayState_||(this.replayState_[e]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedZ:-1,renderedTileZ:-1}),this.replayState_[e]},e.prototype.load=function(){this.getSourceTiles()},e.prototype.release=function(){for(var e in this.context_)xu.push(this.context_[e].canvas),delete this.context_[e];t.prototype.release.call(this)},e}(lo),Su=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Eu=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.extent=null,s.format_=i,s.features_=null,s.loader_,s.projection=null,s.resolution,s.tileLoadFunction_=o,s.url_=n,s.key=n,s}return Su(e,t),e.prototype.getFormat=function(){return this.format_},e.prototype.getFeatures=function(){return this.features_},e.prototype.load=function(){this.state==Ji&&(this.setState(Qi),this.tileLoadFunction_(this,this.url_),this.loader_&&this.loader_(this.extent,this.resolution,this.projection))},e.prototype.onLoad=function(t,e){this.setFeatures(t)},e.prototype.onError=function(){this.setState(eo)},e.prototype.setFeatures=function(t){this.features_=t,this.setState(to)},e.prototype.setLoader=function(t){this.loader_=t},e}(lo);function Tu(t){return Array.isArray(t)?Ro(t):t}var Cu="arraybuffer",Ou="json",Pu="text",Ru="xml",Iu=!1;function Lu(t,e,r,n,i,o,a){var s=new XMLHttpRequest;s.open("GET","function"==typeof t?t(r,n,i):t,!0),e.getType()==Cu&&(s.responseType="arraybuffer"),s.withCredentials=Iu,s.onload=function(t){if(!s.status||s.status>=200&&s.status<300){var n=e.getType(),l=void 0;n==Ou||n==Pu?l=s.responseText:n==Ru?(l=s.responseXML)||(l=(new DOMParser).parseFromString(s.responseText,"application/xml")):n==Cu&&(l=s.response),l?o(e.readFeatures(l,{extent:r,featureProjection:i}),e.readProjection(l)):a()}else a()},s.onerror=a,s.send()}function Mu(t,e){return function(r,n,i,o,a){var s=this;Lu(t,e,r,n,i,(function(t,e){void 0!==o&&o(t),s.addFeatures(t)}),a||T)}}function Fu(t,e){return[[-1/0,-1/0,1/0,1/0]]}function Au(t,e,r,n){var i=document.createElement("script"),a="olc_"+o(e);function s(){delete window[a],i.parentNode.removeChild(i)}i.async=!0,i.src=t+(-1==t.indexOf("?")?"?":"&")+(n||"callback")+"="+a;var l=setTimeout((function(){s(),r&&r()}),1e4);window[a]=function(t){clearTimeout(l),s(),e(t)},document.getElementsByTagName("head")[0].appendChild(i)}var ku=function(){function t(){}return t.prototype.drawCustom=function(t,e,r){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}(),ju=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Nu=function(t){function e(e,r,n,i,o,a,s){var l=t.call(this)||this;return l.context_=e,l.pixelRatio_=r,l.extent_=n,l.transform_=i,l.viewRotation_=o,l.squaredTolerance_=a,l.userTransform_=s,l.contextFillState_=null,l.contextStrokeState_=null,l.contextTextState_=null,l.fillState_=null,l.strokeState_=null,l.image_=null,l.imageAnchorX_=0,l.imageAnchorY_=0,l.imageHeight_=0,l.imageOpacity_=0,l.imageOriginX_=0,l.imageOriginY_=0,l.imageRotateWithView_=!1,l.imageRotation_=0,l.imageScale_=[0,0],l.imageWidth_=0,l.text_="",l.textOffsetX_=0,l.textOffsetY_=0,l.textRotateWithView_=!1,l.textRotation_=0,l.textScale_=[0,0],l.textFillState_=null,l.textStrokeState_=null,l.textState_=null,l.pixelCoordinates_=[],l.tmpLocalTransform_=[1,0,0,1,0,0],l}return ju(e,t),e.prototype.drawImages_=function(t,e,r,n){if(this.image_){var i=ln(t,e,r,2,this.transform_,this.pixelCoordinates_),o=this.context_,a=this.tmpLocalTransform_,s=o.globalAlpha;1!=this.imageOpacity_&&(o.globalAlpha=s*this.imageOpacity_);var l=this.imageRotation_;this.imageRotateWithView_&&(l+=this.viewRotation_);for(var u=0,c=i.length;u2||Math.abs(t[4*e+3]-191.25)>2}function tc(t,e,r,n){var i=Hr(r,e,t),o=zr(e,n,r),a=e.getMetersPerUnit();void 0!==a&&(o*=a);var s=t.getMetersPerUnit();void 0!==s&&(o/=s);var l=t.getExtent();if(!l||Qt(l,i)){var u=zr(t,o,i)/o;isFinite(u)&&u>0&&(o/=u)}return o}function ec(t,e,r,n){var i=xe(r),o=tc(t,e,i,n);return(!isFinite(o)||o<=0)&&me(r,(function(r){return o=tc(t,e,r,n),isFinite(o)&&o>0})),o}function rc(t,e,r,n,i,o,a,s,l,u,c,h){var p=uo(Math.round(r*t),Math.round(r*e));if(O(p,h),0===l.length)return p.canvas;function f(t){return Math.round(t*r)/r}p.scale(r,r),p.globalCompositeOperation="lighter";var d=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,r){he(d,t.extent)}));var g=Pe(d),y=Ee(d),m=uo(Math.round(r*g/n),Math.round(r*y/n));O(m,h);var v=r/n;l.forEach((function(t,e,r){var n=t.extent[0]-d[0],i=-(t.extent[3]-d[3]),o=Pe(t.extent),a=Ee(t.extent);t.image.width>0&&t.image.height>0&&m.drawImage(t.image,u,u,t.image.width-2*u,t.image.height-2*u,n*v,i*v,o*v,a*v)}));var _=Ce(a);return s.getTriangles().forEach((function(t,e,i){var a=t.source,s=t.target,l=a[0][0],u=a[0][1],c=a[1][0],g=a[1][1],y=a[2][0],v=a[2][1],b=f((s[0][0]-_[0])/o),x=f(-(s[0][1]-_[1])/o),w=f((s[1][0]-_[0])/o),S=f(-(s[1][1]-_[1])/o),E=f((s[2][0]-_[0])/o),T=f(-(s[2][1]-_[1])/o),C=l,O=u;l=0,u=0;var P=Be([[c-=C,g-=O,0,0,w-b],[y-=C,v-=O,0,0,E-b],[0,0,c,g,S-x],[0,0,y,v,T-x]]);if(P){if(p.save(),p.beginPath(),function(){if(void 0===Hu){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Ju(t,4,5,4,0),Ju(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;Hu=Qu(e,0)||Qu(e,4)||Qu(e,8)}return Hu}()||h===$u){p.moveTo(w,S);for(var R=b-w,I=x-S,L=0;L<4;L++)p.lineTo(w+f((L+1)*R/4),S+f(L*I/3)),3!=L&&p.lineTo(w+f((L+1)*R/4),S+f((L+1)*I/3));p.lineTo(E,T)}else p.moveTo(w,S),p.lineTo(b,x),p.lineTo(E,T);p.clip(),p.transform(P[0],P[2],P[1],P[3],b,x),p.translate(d[0]-C,d[3]-O),p.scale(n/r,-n/r),p.drawImage(m.canvas,0,0),p.restore()}})),c&&(p.save(),p.globalCompositeOperation="source-over",p.strokeStyle="black",p.lineWidth=1,s.getTriangles().forEach((function(t,e,r){var n=t.target,i=(n[0][0]-_[0])/o,a=-(n[0][1]-_[1])/o,s=(n[1][0]-_[0])/o,l=-(n[1][1]-_[1])/o,u=(n[2][0]-_[0])/o,c=-(n[2][1]-_[1])/o;p.beginPath(),p.moveTo(s,l),p.lineTo(i,a),p.lineTo(u,c),p.closePath(),p.stroke()})),p.restore()),p.canvas}var nc=[0,0,0],ic=function(){function t(t){var e;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,pt(w(this.resolutions_,(function(t,e){return e-t}),!0),17),!t.origins)for(var r=0,n=this.resolutions_.length-1;r=this.minZoom;){if(e(s,2===this.zoomFactor_?vu(i=Math.floor(i/2),i,o=Math.floor(o/2),o,r):this.getTileRangeForExtentAndZ(a,s,r)))return!0;--s}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,r){if(t[0]0?n:Math.max(a/s[0],o/s[1]),u=i+1,c=new Array(u),h=0;h=0;o--)this.postProcessPasses_[o].init(t);e.bindTexture(e.TEXTURE_2D,null),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.prepareDrawToRenderTarget=function(t,e,r){var n=this.getGL(),i=e.getSize();n.bindFramebuffer(n.FRAMEBUFFER,e.getFramebuffer()),n.viewport(0,0,i[0],i[1]),n.bindTexture(n.TEXTURE_2D,e.getTexture()),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.ONE,r?n.ZERO:n.ONE_MINUS_SRC_ALPHA),n.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.drawElements=function(t,e){var r=this.getGL(),n=r.UNSIGNED_INT,i=e-t,o=4*t;r.drawElements(r.TRIANGLES,i,n,o)},e.prototype.finalizeDraw=function(t){for(var e=0;ethis.size_[0]||e>=this.size_[1])return yh[0]=0,yh[1]=0,yh[2]=0,yh[3]=0,yh;this.readAll();var r=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return yh[0]=this.data_[4*r],yh[1]=this.data_[4*r+1],yh[2]=this.data_[4*r+2],yh[3]=this.data_[4*r+3],yh},t.prototype.getTexture=function(){return this.texture_},t.prototype.getFramebuffer=function(){return this.framebuffer_},t.prototype.updateSize_=function(){var t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),this.data_=new Uint8Array(t[0]*t[1]*4)},t}(),vh=1,_h=2,bh=4,xh=8,wh=16,Sh=31,Eh={};function Th(t){if("number"==typeof t)return vh;if("boolean"==typeof t)return xh;if("string"==typeof t)return Io(t)?bh|_h:_h;if(!Array.isArray(t))throw new Error("Unhandled value type: "+JSON.stringify(t));var e=t;if(e.every((function(t){return"number"==typeof t})))return 3===e.length||4===e.length?bh|wh:wh;if("string"!=typeof e[0])throw new Error("Expected an expression operator but received: "+JSON.stringify(e));var r=Eh[e[0]];if(void 0===r)throw new Error("Unrecognized expression operator: "+JSON.stringify(e));return r.getReturnType(e.slice(1))}function Ch(t){return Math.log2(t)%1==0}function Oh(t){var e=t.toString();return-1===e.indexOf(".")?e+".0":e}function Ph(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return"vec"+t.length+"("+t.map(Oh).join(", ")+")"}function Rh(t){var e=Oo(t).slice();return e.length<4&&e.push(1),Ph(e.map((function(t,e){return e<3?t/255:t})))}function Ih(t,e){return void 0===t.stringLiteralsMap[e]&&(t.stringLiteralsMap[e]=Object.keys(t.stringLiteralsMap).length),t.stringLiteralsMap[e]}function Lh(t,e){return Oh(Ih(t,e))}function Mh(t,e,r){if(Array.isArray(e)&&"string"==typeof e[0]){var n=Eh[e[0]];if(void 0===n)throw new Error("Unrecognized expression operator: "+JSON.stringify(e));return n.toGlsl(t,e.slice(1),r)}var i=Th(e);return(i&vh)>0?Oh(e):(i&xh)>0?e.toString():(i&_h)>0&&(void 0===r||r==_h)?Lh(t,e.toString()):(i&bh)>0&&(void 0===r||r==bh)?Rh(e):(i&wh)>0?Ph(e):void 0}function Fh(t){if(!(Th(t)&vh))throw new Error("A numeric value was expected, got "+JSON.stringify(t)+" instead")}function Ah(t){for(var e=0;ee)throw new Error("At most "+e+" arguments were expected, got "+t.length+" instead")}function zh(t){if(t.length%2!=0)throw new Error("An even amount of arguments was expected, got "+t+" instead")}function Uh(t,e){if(!Ch(e))throw new Error("Could not infer only one type from the following expression: "+JSON.stringify(t))}function Bh(t){return{getReturnType:function(t){return xh},toGlsl:function(e,r){Nh(r,2);for(var n=Sh,i=0;i"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" > "+Mh(t,e[1])+")"}},Eh[">="]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" >= "+Mh(t,e[1])+")"}},Eh["<"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" < "+Mh(t,e[1])+")"}},Eh["<="]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" <= "+Mh(t,e[1])+")"}},Eh["=="]=Bh("=="),Eh["!="]=Bh("!="),Eh["!"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,1),jh(e[0]),"(!"+Mh(t,e[0])+")"}},Eh.all=Vh("&&"),Eh.any=Vh("||"),Eh.between={getReturnType:function(t){return xh},toGlsl:function(t,e){Nh(e,3),Ah(e);var r=Mh(t,e[1]),n=Mh(t,e[2]),i=Mh(t,e[0]);return"("+i+" >= "+r+" && "+i+" <= "+n+")"}},Eh.array={getReturnType:function(t){return wh},toGlsl:function(t,e){Dh(e,2),Gh(e,4),Ah(e);var r=e.map((function(e){return Mh(t,e,vh)}));return"vec"+e.length+"("+r.join(", ")+")"}},Eh.color={getReturnType:function(t){return bh},toGlsl:function(t,e){Dh(e,3),Gh(e,4),Ah(e);var r=e;3===e.length&&r.push(1);var n=e.map((function(e,r){return Mh(t,e,vh)+(r<3?" / 255.0":"")}));return"vec"+e.length+"("+n.join(", ")+")"}},Eh.interpolate={getReturnType:function(t){for(var e=bh|vh,r=3;r=1;l-=2){s="("+o+" == "+Mh(t,e[l])+" ? "+Mh(t,e[l+1],i)+" : "+(s||a)+")"}return s}},Eh.case={getReturnType:function(t){for(var e=Sh,r=1;r=0;o-=2){s="("+Mh(t,e[o])+" ? "+Mh(t,e[o+1],i)+" : "+(s||a)+")"}return s}};var Yh=function(){function t(){this.uniforms=[],this.attributes=[],this.varyings=[],this.sizeExpression="vec2(1.0)",this.rotationExpression="0.0",this.offsetExpression="vec2(0.0)",this.colorExpression="vec4(1.0)",this.texCoordExpression="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression="false",this.rotateWithView=!1}return t.prototype.addUniform=function(t){return this.uniforms.push(t),this},t.prototype.addAttribute=function(t){return this.attributes.push(t),this},t.prototype.addVarying=function(t,e,r){return this.varyings.push({name:t,type:e,expression:r}),this},t.prototype.setSizeExpression=function(t){return this.sizeExpression=t,this},t.prototype.setRotationExpression=function(t){return this.rotationExpression=t,this},t.prototype.setSymbolOffsetExpression=function(t){return this.offsetExpression=t,this},t.prototype.setColorExpression=function(t){return this.colorExpression=t,this},t.prototype.setTextureCoordinateExpression=function(t){return this.texCoordExpression=t,this},t.prototype.setFragmentDiscardExpression=function(t){return this.discardExpression=t,this},t.prototype.setSymbolRotateWithView=function(t){return this.rotateWithView=t,this},t.prototype.getSizeExpression=function(){return this.sizeExpression},t.prototype.getOffsetExpression=function(){return this.offsetExpression},t.prototype.getColorExpression=function(){return this.colorExpression},t.prototype.getTextureCoordinateExpression=function(){return this.texCoordExpression},t.prototype.getFragmentDiscardExpression=function(){return this.discardExpression},t.prototype.getSymbolVertexShader=function(t){var e=this.rotateWithView?"u_offsetScaleMatrix * u_offsetRotateMatrix":"u_offsetScaleMatrix",r=this.attributes,n=this.varyings;return t&&(r=r.concat("vec4 a_hitColor"),n=n.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n"+this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n")+"\nattribute vec2 a_position;\nattribute float a_index;\n"+r.map((function(t){return"attribute "+t+";"})).join("\n")+"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n"+n.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")+"\nvoid main(void) {\n mat4 offsetMatrix = "+e+";\n vec2 halfSize = "+this.sizeExpression+" * 0.5;\n vec2 offset = "+this.offsetExpression+";\n float angle = "+this.rotationExpression+";\n float offsetX;\n float offsetY;\n if (a_index == 0.0) {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n } else if (a_index == 1.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else if (a_index == 2.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n }\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n vec4 texCoord = "+this.texCoordExpression+";\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n v_quadCoord = vec2(u, v);\n"+n.map((function(t){return" "+t.name+" = "+t.expression+";"})).join("\n")+"\n}"},t.prototype.getSymbolFragmentShader=function(t){var e=t?" if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;":"",r=this.varyings;return t&&(r=r.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n"+this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n")+"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n"+r.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")+"\nvoid main(void) {\n if ("+this.discardExpression+") { discard; }\n gl_FragColor = "+this.colorExpression+";\n gl_FragColor.rgb *= gl_FragColor.a;\n"+e+"\n}"},t}();function Wh(t){var e=t.symbol,r=void 0!==e.size?e.size:1,n=e.color||"white",i=e.textureCoord||[0,0,1,1],o=e.offset||[0,0],a=void 0!==e.opacity?e.opacity:1,s=void 0!==e.rotation?e.rotation:0,l={inFragmentShader:!1,variables:[],attributes:[],stringLiteralsMap:{}},u=Mh(l,r,wh|vh),c=Mh(l,o,wh),h=Mh(l,i,wh),p=Mh(l,s,vh),f={inFragmentShader:!0,variables:l.variables,attributes:[],stringLiteralsMap:l.stringLiteralsMap},d=Mh(f,n,bh),g=Mh(f,a,vh),y="1.0",m="vec2("+Mh(f,r,wh|vh)+").x";switch(e.symbolType){case"square":case"image":break;case"circle":y="(1.0-smoothstep(1.-4./"+m+",1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))";break;case"triangle":var v="(v_quadCoord*2.-1.)",_="(atan("+v+".x,"+v+".y))";y="(1.0-smoothstep(.5-3./"+m+",.5,cos(floor(.5+"+_+"/2.094395102)*2.094395102-"+_+")*length("+v+")))";break;default:throw new Error("Unexpected symbol type: "+e.symbolType)}var b=(new Yh).setSizeExpression("vec2("+u+")").setRotationExpression(p).setSymbolOffsetExpression(c).setTextureCoordinateExpression(h).setSymbolRotateWithView(!!e.rotateWithView).setColorExpression("vec4("+d+".rgb, "+d+".a * "+g+" * "+y+")");if(t.filter){var x=Mh(f,t.filter,xh);b.setFragmentDiscardExpression("!"+x)}var w={};if(f.variables.forEach((function(e){b.addUniform("float u_"+e),w["u_"+e]=function(){if(!t.variables||void 0===t.variables[e])throw new Error("The following variable is missing from the style: "+e);var r=t.variables[e];return"string"==typeof r&&(r=Ih(l,r)),void 0!==r?r:-9999999}})),"image"===e.symbolType&&e.src){var S=new Image;S.src=e.src,b.addUniform("sampler2D u_texture").setColorExpression(b.getColorExpression()+" * texture2D(u_texture, v_texCoord)"),w.u_texture=S}return f.attributes.forEach((function(t){-1===l.attributes.indexOf(t)&&l.attributes.push(t),b.addVarying("v_"+t,"float","a_"+t)})),l.attributes.forEach((function(t){b.addAttribute("float a_"+t)})),{builder:b,attributes:l.attributes.map((function(t){return{name:t,callback:function(e,r){var n=r[t];return"string"==typeof n&&(n=Ih(l,n)),void 0!==n?n:-9999999}}})),uniforms:w}}var qh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xh=function(t){function e(e){var r=t.call(this,{extent:e.extent,origin:e.origin,origins:e.origins,resolutions:e.resolutions,tileSize:e.tileSize,tileSizes:e.tileSizes,sizes:e.sizes})||this;return r.matrixIds_=e.matrixIds,r}return qh(e,t),e.prototype.getMatrixId=function(t){return this.matrixIds_[t]},e.prototype.getMatrixIds=function(){return this.matrixIds_},e}(ic),Zh=Xh;function Kh(t,e,r){var n=[],i=[],o=[],a=[],s=[],l=void 0!==r?r:[],u=Gr(t.SupportedCRS),c=u.getMetersPerUnit(),h="ne"==u.getAxisOrientation().substr(0,2);return t.TileMatrix.sort((function(t,e){return e.ScaleDenominator-t.ScaleDenominator})),t.TileMatrix.forEach((function(e){if(!(l.length>0)||_(l,(function(r){return e.Identifier==r.TileMatrix||-1===e.Identifier.indexOf(":")&&t.Identifier+":"+e.Identifier===r.TileMatrix}))){i.push(e.Identifier);var r=28e-5*e.ScaleDenominator/c,u=e.TileWidth,p=e.TileHeight;h?o.push([e.TopLeftCorner[1],e.TopLeftCorner[0]]):o.push(e.TopLeftCorner),n.push(r),a.push(u==p?u:[u,p]),s.push([e.MatrixWidth,e.MatrixHeight])}})),new Xh({extent:e,origins:o,resolutions:n,matrixIds:i,tileSizes:a,sizes:s})}var Hh=function(){function t(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=Is(t.scale),this.displacement_=t.displacement}return t.prototype.clone=function(){var e=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.opacity_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getDisplacement=function(){return this.displacement_},t.prototype.getAnchor=function(){return n()},t.prototype.getImage=function(t){return n()},t.prototype.getHitDetectionImage=function(){return n()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return n()},t.prototype.getImageSize=function(){return n()},t.prototype.getHitDetectionImageSize=function(){return n()},t.prototype.getOrigin=function(){return n()},t.prototype.getSize=function(){return n()},t.prototype.setOpacity=function(t){this.opacity_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Is(t)},t.prototype.listenImageChange=function(t){n()},t.prototype.load=function(){n()},t.prototype.unlistenImageChange=function(t){n()},t}(),$h=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jh=function(t){function e(e){var r=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(r=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:void 0!==e.scale?e.scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_={},r.hitDetectionCanvas_=null,r.fill_=void 0!==e.fill?e.fill:null,r.origin_=[0,0],r.points_=e.points,r.radius_=void 0!==e.radius?e.radius:e.radius1,r.radius2_=e.radius2,r.angle_=void 0!==e.angle?e.angle:0,r.stroke_=void 0!==e.stroke?e.stroke:null,r.anchor_=null,r.size_=null,r.imageSize_=null,r.hitDetectionImageSize_=null,r.render(),r}return $h(e,t),e.prototype.clone=function(){var t=this.getScale(),r=new e({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice()});return r.setOpacity(this.getOpacity()),r},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionCanvas_){var t=this.createRenderOptions();this.createHitDetectionCanvas_(t)}return this.hitDetectionCanvas_},e.prototype.getImage=function(t){if(!this.canvas_[t||1]){var e=this.createRenderOptions(),r=uo(e.size*t||1,e.size*t||1);this.draw_(e,r,0,0,t||1),this.canvas_[t||1]=r.canvas}return this.canvas_[t||1]},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.imageSize_},e.prototype.getHitDetectionImageSize=function(){return this.hitDetectionImageSize_},e.prototype.getImageState=function(){return ki},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.createRenderOptions=function(){var t,e="round",r="round",n=0,i=null,o=0,a=0;return this.stroke_&&(null===(t=this.stroke_.getColor())&&(t="#000"),t=Tu(t),void 0===(a=this.stroke_.getWidth())&&(a=1),i=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset(),void 0===(r=this.stroke_.getLineJoin())&&(r="round"),void 0===(e=this.stroke_.getLineCap())&&(e="round"),void 0===(n=this.stroke_.getMiterLimit())&&(n=10)),{strokeStyle:t,strokeWidth:a,size:2*(this.radius_+a)+1,lineCap:e,lineDash:i,lineDashOffset:o,lineJoin:r,miterLimit:n}},e.prototype.render=function(){var t=this.createRenderOptions(),e=uo(t.size,t.size);this.draw_(t,e,0,0,1),this.canvas_={},this.canvas_[1]=e.canvas;var r=e.canvas.width,n=r,i=this.getDisplacement();this.hitDetectionImageSize_=[t.size,t.size],this.createHitDetectionCanvas_(t),this.anchor_=[r/2-i[0],r/2+i[1]],this.size_=[r,r],this.imageSize_=[n,n]},e.prototype.draw_=function(t,e,r,n,i){var o,a,s;e.setTransform(i,0,0,i,0,0),e.translate(r,n),e.beginPath();var l=this.points_;if(l===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var u=void 0!==this.radius2_?this.radius2_:this.radius_;for(u!==this.radius_&&(l*=2),o=0;o<=l;o++)a=2*o*Math.PI/l-Math.PI/2+this.angle_,s=o%2==0?this.radius_:u,e.lineTo(t.size/2+s*Math.cos(a),t.size/2+s*Math.sin(a))}if(this.fill_){var c=this.fill_.getColor();null===c&&(c="#000"),e.fillStyle=Tu(c),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,e.setLineDash&&t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke()),e.closePath()},e.prototype.createHitDetectionCanvas_=function(t){if(this.hitDetectionCanvas_=this.getImage(1),this.fill_){var e=this.fill_.getColor(),r=0;if("string"==typeof e&&(e=Oo(e)),null===e?r=1:Array.isArray(e)&&(r=4===e.length?e[3]:1),0===r){var n=uo(t.size,t.size);this.hitDetectionCanvas_=n.canvas,this.drawHitDetectionCanvas_(t,n,0,0)}}},e.prototype.drawHitDetectionCanvas_=function(t,e,r,n){e.translate(r,n),e.beginPath();var i=this.points_;if(i===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o=void 0!==this.radius2_?this.radius2_:this.radius_;o!==this.radius_&&(i*=2);var a=void 0,s=void 0,l=void 0;for(a=0;a<=i;a++)l=2*a*Math.PI/i-Math.PI/2+this.angle_,s=a%2==0?this.radius_:o,e.lineTo(t.size/2+s*Math.cos(l),t.size/2+s*Math.sin(l))}e.fillStyle="#000",e.fill(),this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.stroke()),e.closePath()},e}(Hh),Qh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tp=function(t){function e(e){var r=e||{};return t.call(this,{points:1/0,fill:r.fill,radius:r.radius,stroke:r.stroke,scale:void 0!==r.scale?r.scale:1,rotation:void 0!==r.rotation?r.rotation:0,rotateWithView:void 0!==r.rotateWithView&&r.rotateWithView,displacement:void 0!==r.displacement?r.displacement:[0,0]})||this}return Qh(e,t),e.prototype.clone=function(){var t=this.getScale(),r=new e({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()});return r.setOpacity(this.getOpacity()),r},e.prototype.setRadius=function(t){this.radius_=t,this.render()},e}(Jh),ep=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}(),rp="fraction",np="pixels",ip="bottom-left",op="bottom-right",ap="top-left",sp="top-right",lp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),up=null,cp=function(t){function e(e,r,n,i,o,a){var s=t.call(this)||this;return s.hitDetectionImage_=null,s.image_=e||new Image,null!==i&&(s.image_.crossOrigin=i),s.canvas_={},s.color_=a,s.unlisten_=null,s.imageState_=o,s.size_=n,s.src_=r,s.tainted_,s}return lp(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===ki){up||(up=uo(1,1)),up.drawImage(this.image_,0,0);try{up.getImageData(0,0,1,1),this.tainted_=!1}catch(t){up=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(F)},e.prototype.handleImageError_=function(){this.imageState_=ji,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=ki,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],r=uo(t,e);r.fillRect(0,0,t,e),this.hitDetectionImage_=r.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Fi){this.imageState_=Ai;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=Zi(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var r=e.getContext("2d");if(r.scale(t,t),r.drawImage(this.image_,0,0),r.globalCompositeOperation="multiply","multiply"===r.globalCompositeOperation||this.isTainted_())r.fillStyle=wo(this.color_),r.fillRect(0,0,e.width,e.height),r.globalCompositeOperation="destination-in",r.drawImage(this.image_,0,0);else{for(var n=r.getImageData(0,0,e.width,e.height),i=n.data,o=this.color_[0]/255,a=this.color_[1]/255,s=this.color_[2]/255,l=this.color_[3],u=0,c=i.length;u0,6);var p=void 0!==n.src?Fi:ki;return r.color_=void 0!==n.color?Oo(n.color):null,r.iconImage_=hp(u,h,c,r.crossOrigin_,p,r.color_),r.offset_=void 0!==n.offset?n.offset:[0,0],r.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:ap,r.origin_=null,r.size_=void 0!==n.size?n.size:null,r}return fp(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==rp||this.anchorYUnits_==rp){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==rp&&(t[0]*=e[0]),this.anchorYUnits_==rp&&(t[1]*=e[1])}if(this.anchorOrigin_!=ap){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=sp&&this.anchorOrigin_!=op||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=ip&&this.anchorOrigin_!=op||(t[1]=-t[1]+e[1])}return this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getHitDetectionImageSize=function(){return this.getImageSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_,e=this.getDisplacement();if(this.offsetOrigin_!=ap){var r=this.getSize(),n=this.iconImage_.getSize();if(!r||!n)return null;t=t.slice(),this.offsetOrigin_!=sp&&this.offsetOrigin_!=op||(t[0]=n[0]-r[0]-t[0]),this.offsetOrigin_!=ip&&this.offsetOrigin_!=op||(t[1]=n[1]-r[1]-t[1])}return t[0]+=e[0],t[1]+=e[1],this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(F,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(F,t)},e}(Hh),gp=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),yp=function(){function t(t){var e=t||{};this.geometry_=null,this.geometryFunction_=xp,void 0!==e.geometry&&this.setGeometry(e.geometry),this.fill_=void 0!==e.fill?e.fill:null,this.image_=void 0!==e.image?e.image:null,this.renderer_=void 0!==e.renderer?e.renderer:null,this.stroke_=void 0!==e.stroke?e.stroke:null,this.text_=void 0!==e.text?e.text:null,this.zIndex_=e.zIndex}return t.prototype.clone=function(){var e=this.getGeometry();return e&&"object"==typeof e&&(e=e.clone()),new t({geometry:e,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.renderer_},t.prototype.setRenderer=function(t){this.renderer_=t},t.prototype.getGeometry=function(){return this.geometry_},t.prototype.getGeometryFunction=function(){return this.geometryFunction_},t.prototype.getFill=function(){return this.fill_},t.prototype.setFill=function(t){this.fill_=t},t.prototype.getImage=function(){return this.image_},t.prototype.setImage=function(t){this.image_=t},t.prototype.getStroke=function(){return this.stroke_},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.getText=function(){return this.text_},t.prototype.setText=function(t){this.text_=t},t.prototype.getZIndex=function(){return this.zIndex_},t.prototype.setGeometry=function(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=xp,this.geometry_=t},t.prototype.setZIndex=function(t){this.zIndex_=t},t}();function mp(t){var e;if("function"==typeof t)e=t;else{var r;if(Array.isArray(t))r=t;else pt("function"==typeof t.getZIndex,41),r=[t];e=function(){return r}}return e}var vp=null;function _p(t,e){if(!vp){var r=new ep({color:"rgba(255,255,255,0.4)"}),n=new gp({color:"#3399CC",width:1.25});vp=[new yp({image:new tp({fill:r,stroke:n,radius:5}),fill:r,stroke:n})]}return vp}function bp(){var t={},e=[255,255,255,1],r=[0,153,255,1];return t[bt.POLYGON]=[new yp({fill:new ep({color:[255,255,255,.5]})})],t[bt.MULTI_POLYGON]=t[bt.POLYGON],t[bt.LINE_STRING]=[new yp({stroke:new gp({color:e,width:5})}),new yp({stroke:new gp({color:r,width:3})})],t[bt.MULTI_LINE_STRING]=t[bt.LINE_STRING],t[bt.CIRCLE]=t[bt.POLYGON].concat(t[bt.LINE_STRING]),t[bt.POINT]=[new yp({image:new tp({radius:6,fill:new ep({color:r}),stroke:new gp({color:e,width:1.5})}),zIndex:1/0})],t[bt.MULTI_POINT]=t[bt.POINT],t[bt.GEOMETRY_COLLECTION]=t[bt.POLYGON].concat(t[bt.LINE_STRING],t[bt.POINT]),t}function xp(t){return t.getGeometry()}var wp=yp,Sp="point",Ep="line",Tp=function(){function t(t){var e=t||{};this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.scale_=e.scale,this.scaleArray_=Is(void 0!==e.scale?e.scale:1),this.text_=e.text,this.textAlign_=e.textAlign,this.textBaseline_=e.textBaseline,this.fill_=void 0!==e.fill?e.fill:new ep({color:"#333"}),this.maxAngle_=void 0!==e.maxAngle?e.maxAngle:Math.PI/4,this.placement_=void 0!==e.placement?e.placement:Sp,this.overflow_=!!e.overflow,this.stroke_=void 0!==e.stroke?e.stroke:null,this.offsetX_=void 0!==e.offsetX?e.offsetX:0,this.offsetY_=void 0!==e.offsetY?e.offsetY:0,this.backgroundFill_=e.backgroundFill?e.backgroundFill:null,this.backgroundStroke_=e.backgroundStroke?e.backgroundStroke:null,this.padding_=void 0===e.padding?null:e.padding}return t.prototype.clone=function(){var e=this.getScale();return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(e)?e.slice():e,text:this.getText(),textAlign:this.getTextAlign(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()})},t.prototype.getOverflow=function(){return this.overflow_},t.prototype.getFont=function(){return this.font_},t.prototype.getMaxAngle=function(){return this.maxAngle_},t.prototype.getPlacement=function(){return this.placement_},t.prototype.getOffsetX=function(){return this.offsetX_},t.prototype.getOffsetY=function(){return this.offsetY_},t.prototype.getFill=function(){return this.fill_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getStroke=function(){return this.stroke_},t.prototype.getText=function(){return this.text_},t.prototype.getTextAlign=function(){return this.textAlign_},t.prototype.getTextBaseline=function(){return this.textBaseline_},t.prototype.getBackgroundFill=function(){return this.backgroundFill_},t.prototype.getBackgroundStroke=function(){return this.backgroundStroke_},t.prototype.getPadding=function(){return this.padding_},t.prototype.setOverflow=function(t){this.overflow_=t},t.prototype.setFont=function(t){this.font_=t},t.prototype.setMaxAngle=function(t){this.maxAngle_=t},t.prototype.setOffsetX=function(t){this.offsetX_=t},t.prototype.setOffsetY=function(t){this.offsetY_=t},t.prototype.setPlacement=function(t){this.placement_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setFill=function(t){this.fill_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Is(void 0!==t?t:1)},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.setText=function(t){this.text_=t},t.prototype.setTextAlign=function(t){this.textAlign_=t},t.prototype.setTextBaseline=function(t){this.textBaseline_=t},t.prototype.setBackgroundFill=function(t){this.backgroundFill_=t},t.prototype.setBackgroundStroke=function(t){this.backgroundStroke_=t},t.prototype.setPadding=function(t){this.padding_=t},t}(),Cp=function(){function t(t){this.first_,this.last_,this.head_,this.circular_=void 0===t||t,this.length_=0}return t.prototype.insertItem=function(t){var e={prev:void 0,next:void 0,data:t},r=this.head_;if(r){var n=r.next;e.prev=r,e.next=n,r.next=e,n&&(n.prev=e),r===this.last_&&(this.last_=e)}else this.first_=e,this.last_=e,this.circular_&&(e.next=e,e.prev=e);this.head_=e,this.length_++},t.prototype.removeItem=function(){var t=this.head_;if(t){var e=t.next,r=t.prev;e&&(e.prev=r),r&&(r.next=e),this.head_=e||r,this.first_===this.last_?(this.head_=void 0,this.first_=void 0,this.last_=void 0):this.first_===t?this.first_=this.head_:this.last_===t&&(this.last_=r?this.head_.prev:this.head_),this.length_--}},t.prototype.firstItem=function(){if(this.head_=this.first_,this.head_)return this.head_.data},t.prototype.lastItem=function(){if(this.head_=this.last_,this.head_)return this.head_.data},t.prototype.nextItem=function(){if(this.head_&&this.head_.next)return this.head_=this.head_.next,this.head_.data},t.prototype.getNextItem=function(){if(this.head_&&this.head_.next)return this.head_.next.data},t.prototype.prevItem=function(){if(this.head_&&this.head_.prev)return this.head_=this.head_.prev,this.head_.data},t.prototype.getPrevItem=function(){if(this.head_&&this.head_.prev)return this.head_.prev.data},t.prototype.getCurrItem=function(){if(this.head_)return this.head_.data},t.prototype.setFirstItem=function(){this.circular_&&this.head_&&(this.first_=this.head_,this.last_=this.head_.prev)},t.prototype.concat=function(t){if(t.head_){if(this.head_){var e=this.head_.next;this.head_.next=t.first_,t.first_.prev=this.head_,e.prev=t.last_,t.last_.next=e,this.length_+=t.length_}else this.head_=t.head_,this.first_=t.first_,this.last_=t.last_,this.length_=t.length_;t.head_=void 0,t.first_=void 0,t.last_=void 0,t.length_=0}},t.prototype.getLength=function(){return this.length_},t}(),Op=r(1),Pp=r.n(Op),Rp=function(){function t(t){this.rbush_=new Pp.a(t),this.items_={}}return t.prototype.insert=function(t,e){var r={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(r),this.items_[o(e)]=r},t.prototype.load=function(t,e){for(var r=new Array(e.length),n=0,i=e.length;nthis.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-m>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-m>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-m>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var r=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-r.5&&c<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=Pe(Kt([t,e,r,n]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&c&&(f=c>.25||f)}if(!(!f&&this.maxSourceExtent_&&isFinite(u[0])&&isFinite(u[1])&&isFinite(u[2])&&isFinite(u[3]))||Re(u,this.maxSourceExtent_)){var d=0;if(!(f||isFinite(i[0])&&isFinite(i[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(a[0])&&isFinite(a[1])&&isFinite(s[0])&&isFinite(s[1])))if(l>0)f=!0;else if(1!=(d=(isFinite(i[0])&&isFinite(i[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(a[0])&&isFinite(a[1])?0:2)+(isFinite(s[0])&&isFinite(s[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(l>0){if(!f){var g=[(t[0]+r[0])/2,(t[1]+r[1])/2],y=this.transformInv_(g),m=void 0;if(p)m=(We(i[0],h)+We(a[0],h))/2-We(y[0],h);else m=(i[0]+a[0])/2-y[0];var v=(i[1]+a[1])/2-y[1];f=m*m+v*v>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-r[0])<=Math.abs(t[1]-r[1])){var _=[(e[0]+r[0])/2,(e[1]+r[1])/2],b=this.transformInv_(_),x=[(n[0]+t[0])/2,(n[1]+t[1])/2],w=this.transformInv_(x);this.addQuad_(t,e,_,x,i,o,b,w,l-1),this.addQuad_(x,_,r,n,w,b,a,s,l-1)}else{var S=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(S),T=[(r[0]+n[0])/2,(r[1]+n[1])/2],C=this.transformInv_(T);this.addQuad_(t,S,T,n,i,E,C,s,l-1),this.addQuad_(S,e,r,T,E,o,a,C,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&d)&&this.addTriangle_(t,r,n,i,a,s),0==(14&d)&&this.addTriangle_(t,r,e,i,a,o),d&&(0==(13&d)&&this.addTriangle_(e,n,t,o,s,i),0==(7&d)&&this.addTriangle_(e,n,r,o,s,a))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,r,n){var i=e.source;pe(t,i[0]),pe(t,i[1]),pe(t,i[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Lp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Mp=function(t){function e(e,r,n,i,o,a,s,l,u,c,h,p){var f=t.call(this,o,Ji)||this;f.renderEdges_=void 0!==h&&h,f.contextOptions_=p,f.pixelRatio_=s,f.gutter_=l,f.canvas_=null,f.sourceTileGrid_=r,f.targetTileGrid_=i,f.wrappedTileCoord_=a||o,f.sourceTiles_=[],f.sourcesListenerKeys_=null,f.sourceZ_=0;var d=i.getTileCoordExtent(f.wrappedTileCoord_),g=f.targetTileGrid_.getExtent(),y=f.sourceTileGrid_.getExtent(),m=g?Te(d,g):d;if(0===ve(m))return f.state=ro,f;var v=e.getExtent();v&&(y=y?Te(y,v):v);var _=i.getResolution(f.wrappedTileCoord_[0]),b=ec(e,n,m,_);if(!isFinite(b)||b<=0)return f.state=ro,f;var x=void 0!==c?c:.5;if(f.triangulation_=new Ip(e,n,m,y,b*x,_),0===f.triangulation_.getTriangles().length)return f.state=ro,f;f.sourceZ_=r.getZForResolution(b);var w=f.triangulation_.calculateSourceExtent();if(y&&(e.canWrapX()?(w[1]=Ne(w[1],y[1],y[3]),w[3]=Ne(w[3],y[1],y[3])):w=Te(w,y)),ve(w)){for(var S=r.getTileRangeForExtentAndZ(w,f.sourceZ_),E=S.minX;E<=S.maxX;E++)for(var T=S.minY;T<=S.maxY;T++){var C=u(f.sourceZ_,E,T,s);C&&f.sourceTiles_.push(C)}0===f.sourceTiles_.length&&(f.state=ro)}else f.state=ro;return f}return Lp(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,r,n){e&&e.getState()==to&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=eo;else{var e=this.wrappedTileCoord_[0],r=this.targetTileGrid_.getTileSize(e),n="number"==typeof r?r:r[0],i="number"==typeof r?r:r[1],o=this.targetTileGrid_.getResolution(e),a=this.sourceTileGrid_.getResolution(this.sourceZ_),s=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=rc(n,i,this.pixelRatio_,a,this.sourceTileGrid_.getExtent(),o,s,this.triangulation_,t,this.gutter_,this.renderEdges_,this.contextOptions_),this.state=to}this.changed()},e.prototype.load=function(){if(this.state==Ji){this.state=Qi,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,r,n){var i=e.getState();if(i==Ji||i==Qi){t++;var o=Z(e,F,(function(r){var n=e.getState();n!=to&&n!=eo&&n!=ro||(H(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach((function(t,e,r){t.getState()==Ji&&t.load()})),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(H),this.sourcesListenerKeys_=null},e}(lo),Fp="tileloadstart",Ap="tileloadend",kp="tileloaderror",jp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Np(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var Dp=function(t){function e(e){var r=t.call(this)||this;return r.projection_=Gr(e.projection),r.attributions_=Np(e.attributions),r.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,r.loading=!1,r.state_=void 0!==e.state?e.state:Qo,r.wrapX_=void 0!==e.wrapX&&e.wrapX,r}return jp(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolutions=function(){return n()},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getContextOptions=function(){},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=Np(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(ot),Gp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zp=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:e.projection,state:e.state,wrapX:e.wrapX})||this;r.opaque_=void 0!==e.opaque&&e.opaque,r.tilePixelRatio_=void 0!==e.tilePixelRatio?e.tilePixelRatio:1,r.tileGrid=void 0!==e.tileGrid?e.tileGrid:null;var n=e.tileGrid;return n&&Is(n.getTileSize(n.getMinZoom()),[256,256]),r.tileCache=new yu(e.cacheSize||0),r.tmpSize=[0,0],r.key_=e.key||"",r.tileOptions={transition:e.transition},r.zDirection=e.zDirection?e.zDirection:0,r}return Gp(e,t),e.prototype.canExpireCache=function(){return this.tileCache.canExpireCache()},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);r&&r.expireCache(e)},e.prototype.forEachLoadedTile=function(t,e,r,n){var i=this.getTileCacheForProjection(t);if(!i)return!1;for(var o,a,s,l=!0,u=r.minX;u<=r.maxX;++u)for(var c=r.minY;c<=r.maxY;++c)a=cu(e,u,c),s=!1,i.containsKey(a)&&(s=(o=i.get(a)).getState()===to)&&(s=!1!==n(o)),s||(l=!1);return l},e.prototype.getGutterForProjection=function(t){return 0},e.prototype.getKey=function(){return this.key_},e.prototype.setKey=function(t){this.key_!==t&&(this.key_=t,this.changed())},e.prototype.getOpaque=function(t){return this.opaque_},e.prototype.getResolutions=function(){return this.tileGrid.getResolutions()},e.prototype.getTile=function(t,e,r,i,o){return n()},e.prototype.getTileGrid=function(){return this.tileGrid},e.prototype.getTileGridForProjection=function(t){return this.tileGrid?this.tileGrid:oc(t)},e.prototype.getTileCacheForProjection=function(t){return pt(Xr(this.getProjection(),t),68),this.tileCache},e.prototype.getTilePixelRatio=function(t){return this.tilePixelRatio_},e.prototype.getTilePixelSize=function(t,e,r){var n=this.getTileGridForProjection(r),i=this.getTilePixelRatio(e),o=Is(n.getTileSize(t),this.tmpSize);return 1==i?o:Rs(o,i,this.tmpSize)},e.prototype.getTileCoordForTileUrlFunction=function(t,e){var r=void 0!==e?e:this.getProjection(),n=this.getTileGridForProjection(r);return this.getWrapX()&&r.isGlobal()&&(t=ac(n,t,r)),du(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var r=this.getTileCacheForProjection(e);t>r.highWaterMark&&(r.highWaterMark=t)},e.prototype.useTile=function(t,e,r,n){},e}(Dp),Up=function(t){function e(e,r){var n=t.call(this,e)||this;return n.tile=r,n}return Gp(e,t),e}(c),Bp=zp,Vp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yp=function(t){function e(r){var n=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,opaque:r.opaque,projection:r.projection,state:r.state,tileGrid:r.tileGrid,tilePixelRatio:r.tilePixelRatio,wrapX:r.wrapX,transition:r.transition,key:r.key,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this;return n.generateTileUrlFunction_=n.tileUrlFunction===e.prototype.tileUrlFunction,n.tileLoadFunction=r.tileLoadFunction,r.tileUrlFunction&&(n.tileUrlFunction=r.tileUrlFunction),n.urls=null,r.urls?n.setUrls(r.urls):r.url&&n.setUrl(r.url),n.tileLoadingKeys_={},n}return Vp(e,t),e.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},e.prototype.getTileUrlFunction=function(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction},e.prototype.getUrls=function(){return this.urls},e.prototype.handleTileChange=function(t){var e,r=t.target,n=o(r),i=r.getState();i==Qi?(this.tileLoadingKeys_[n]=!0,e=Fp):n in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[n],e=i==eo?kp:i==to?Ap:void 0),null!=e&&this.dispatchEvent(new Up(e,r))},e.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},e.prototype.setTileUrlFunction=function(t,e){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==e?this.setKey(e):this.changed()},e.prototype.setUrl=function(t){var e=yc(t);this.urls=e,this.setUrls(e)},e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(fc(t,this.tileGrid),e):this.setKey(e)},e.prototype.tileUrlFunction=function(t,e,r){},e.prototype.useTile=function(t,e,r){var n=cu(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Bp),Wp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function qp(t,e){t.getImage().src=e}var Xp=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:qp,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection})||this;return r.crossOrigin=void 0!==e.crossOrigin?e.crossOrigin:null,r.tileClass=void 0!==e.tileClass?e.tileClass:vo,r.tileCacheForProjection={},r.tileGridForProjection={},r.reprojectionErrorThreshold_=e.reprojectionErrorThreshold,r.contextOptions_=!1===e.imageSmoothing?$u:void 0,r.renderReprojectionEdges_=!1,r}return Wp(e,t),e.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);for(var n in this.tileCache.expireCache(this.tileCache==r?e:{}),this.tileCacheForProjection){var i=this.tileCacheForProjection[n];i.expireCache(i==r?e:{})}},e.prototype.getContextOptions=function(){return this.contextOptions_},e.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Xr(this.getProjection(),t)?0:this.getGutter()},e.prototype.getGutter=function(){return 0},e.prototype.getKey=function(){return t.prototype.getKey.call(this)+(this.contextOptions_?"\n"+JSON.stringify(this.contextOptions_):"")},e.prototype.getOpaque=function(e){return!(this.getProjection()&&e&&!Xr(this.getProjection(),e))&&t.prototype.getOpaque.call(this,e)},e.prototype.getTileGridForProjection=function(t){var e=this.getProjection();if(!this.tileGrid||e&&!Xr(e,t)){var r=o(t);return r in this.tileGridForProjection||(this.tileGridForProjection[r]=oc(t)),this.tileGridForProjection[r]}return this.tileGrid},e.prototype.getTileCacheForProjection=function(t){var e=this.getProjection();if(!e||Xr(e,t))return this.tileCache;var r=o(t);return r in this.tileCacheForProjection||(this.tileCacheForProjection[r]=new yu(this.tileCache.highWaterMark)),this.tileCacheForProjection[r]},e.prototype.createTile_=function(t,e,r,n,i,o){var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),l=s?this.tileUrlFunction(s,n,i):void 0,u=new this.tileClass(a,void 0!==l?Ji:ro,void 0!==l?l:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return u.key=o,u.addEventListener(F,this.handleTileChange.bind(this)),u},e.prototype.getTile=function(t,e,r,n,i){var o=this.getProjection();if(o&&i&&!Xr(o,i)){var a=this.getTileCacheForProjection(i),s=[t,e,r],l=void 0,u=hu(s);a.containsKey(u)&&(l=a.get(u));var c=this.getKey();if(l&&l.key==c)return l;var h=this.getTileGridForProjection(o),p=this.getTileGridForProjection(i),f=this.getTileCoordForTileUrlFunction(s,i),d=new Mp(o,h,i,p,s,f,this.getTilePixelRatio(n),this.getGutter(),function(t,e,r,n){return this.getTileInternal(t,e,r,n,o)}.bind(this),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.contextOptions_);return d.key=c,l?(d.interimTile=l,d.refreshInterimChain(),a.replace(u,d)):a.set(u,d),d}return this.getTileInternal(t,e,r,n,o||i)},e.prototype.getTileInternal=function(t,e,r,n,i){var o=null,a=cu(t,e,r),s=this.getKey();if(this.tileCache.containsKey(a)){if((o=this.tileCache.get(a)).key!=s){var l=o;o=this.createTile_(t,e,r,n,i,s),l.getState()==Ji?o.interimTile=l.interimTile:o.interimTile=l,o.refreshInterimChain(),this.tileCache.replace(a,o)}}else o=this.createTile_(t,e,r,n,i,s),this.tileCache.set(a,o);return o},e.prototype.setRenderReprojectionEdges=function(t){if(this.renderReprojectionEdges_!=t){for(var e in this.renderReprojectionEdges_=t,this.tileCacheForProjection)this.tileCacheForProjection[e].clear();this.changed()}},e.prototype.setTileGridForProjection=function(t,e){var r=Gr(t);if(r){var n=o(r);n in this.tileGridForProjection||(this.tileGridForProjection[n]=e)}},e}(Yp),Zp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Kp(t){var e,r,n=t[0],i=new Array(n),o=1<>=1;return i.join("")}var Hp=function(t){function e(e){var r=this,n=void 0!==e.hidpi&&e.hidpi;return(r=t.call(this,{cacheSize:e.cacheSize,crossOrigin:"anonymous",imageSmoothing:e.imageSmoothing,opaque:!0,projection:Gr("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Jo,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:n?2:1,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this).hidpi_=n,r.culture_=void 0!==e.culture?e.culture:"en-us",r.maxZoom_=void 0!==e.maxZoom?e.maxZoom:-1,r.apiKey_=e.key,r.imagerySet_=e.imagerySet,Au("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+r.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+r.apiKey_+"&c="+r.culture_,r.handleImageryMetadataResponse.bind(r),void 0,"jsonp"),r}return Zp(e,t),e.prototype.getApiKey=function(){return this.apiKey_},e.prototype.getImagerySet=function(){return this.imagerySet_},e.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var e=t.resourceSets[0].resources[0],r=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,n=hc(this.getProjection()),i=this.hidpi_?2:1,o=e.imageWidth==e.imageHeight?e.imageWidth/i:[e.imageWidth/i,e.imageHeight/i],a=lc({extent:n,minZoom:e.zoomMin,maxZoom:r,tileSize:o});this.tileGrid=a;var s=this.culture_,l=this.hidpi_;if(this.tileUrlFunction=dc(e.imageUrlSubdomains.map((function(t){var r=[0,0,0],n=e.imageUrl.replace("{subdomain}",t).replace("{culture}",s);return function(t,e,i){if(t){uu(t[0],t[1],t[2],r);var o=n;return l&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",Kp(r))}}}))),e.imageryProviders){var u=Zr(Gr("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var r=[],n=t.viewState,i=this.getTileGrid(),o=i.getZForResolution(n.resolution,this.zDirection),a=i.getTileCoordForCoordAndZ(n.center,o)[0];return e.imageryProviders.map((function(e){for(var n=!1,i=e.coverageAreas,o=0,s=i.length;o=l.zoomMin&&a<=l.zoomMax){var c=l.bbox;if(Re(Ae([c[1],c[0],c[3],c[2]],u),t.extent)){n=!0;break}}}n&&r.push(e.attribution)})),r.push('Terms of Use'),r}.bind(this))}this.setState(Qo)}else this.setState(ta)},e}(Xp),$p=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jp=function(t){function e(e){var r=e||{},n=void 0!==r.projection?r.projection:"EPSG:3857",i=void 0!==r.tileGrid?r.tileGrid:lc({extent:hc(n),maxResolution:r.maxResolution,maxZoom:r.maxZoom,minZoom:r.minZoom,tileSize:r.tileSize});return t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,imageSmoothing:r.imageSmoothing,opaque:r.opaque,projection:n,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:i,tileLoadFunction:r.tileLoadFunction,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:r.tileUrlFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this}return $p(e,t),e}(Xp),Qp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tf=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,maxZoom:void 0!==e.maxZoom?e.maxZoom:18,minZoom:e.minZoom,projection:e.projection,transition:e.transition,wrapX:e.wrapX})||this;return r.account_=e.account,r.mapId_=e.map||"",r.config_=e.config||{},r.templateCache_={},r.initializeMap_(),r}return Qp(e,t),e.prototype.getConfig=function(){return this.config_},e.prototype.updateConfig=function(t){O(this.config_,t),this.initializeMap_()},e.prototype.setConfig=function(t){this.config_=t||{},this.initializeMap_()},e.prototype.initializeMap_=function(){var t=JSON.stringify(this.config_);if(this.templateCache_[t])this.applyTemplate_(this.templateCache_[t]);else{var e="https://"+this.account_+".carto.com/api/v1/map";this.mapId_&&(e+="/named/"+this.mapId_);var r=new XMLHttpRequest;r.addEventListener("load",this.handleInitResponse_.bind(this,t)),r.addEventListener("error",this.handleInitError_.bind(this)),r.open("POST",e),r.setRequestHeader("Content-type","application/json"),r.send(JSON.stringify(this.config_))}},e.prototype.handleInitResponse_=function(t,e){var r=e.target;if(!r.status||r.status>=200&&r.status<300){var n=void 0;try{n=JSON.parse(r.responseText)}catch(t){return void this.setState(ta)}this.applyTemplate_(n),this.templateCache_[t]=n,this.setState(Qo)}else this.setState(ta)},e.prototype.handleInitError_=function(t){this.setState(ta)},e.prototype.applyTemplate_=function(t){var e="https://"+t.cdn_url.https+"/"+this.account_+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(e)},e}(Jp),ef="addfeature",rf="changefeature",nf="clear",of="removefeature",af="featuresloadstart",sf="featuresloadend",lf="featuresloaderror",uf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cf=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.feature=r,i.features=n,i}return uf(e,t),e}(c),hf=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{attributions:n.attributions,projection:void 0,state:Qo,wrapX:void 0===n.wrapX||n.wrapX})||this).loader_=T,r.format_=n.format,r.overlaps_=void 0===n.overlaps||n.overlaps,r.url_=n.url,void 0!==n.loader?r.loader_=n.loader:void 0!==r.url_&&(pt(r.format_,7),r.loader_=Mu(r.url_,r.format_)),r.strategy_=void 0!==n.strategy?n.strategy:Fu;var i,o,a=void 0===n.useSpatialIndex||n.useSpatialIndex;return r.featuresRtree_=a?new Rp:null,r.loadedExtentsRtree_=new Rp,r.nullGeometryFeatures_={},r.idIndex_={},r.uidIndex_={},r.featureChangeKeys_={},r.featuresCollection_=null,Array.isArray(n.features)?o=n.features:n.features&&(o=(i=n.features).getArray()),a||void 0!==i||(i=new ht(o)),void 0!==o&&r.addFeaturesInternal(o),void 0!==i&&r.bindFeaturesCollection_(i),r}return uf(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=o(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var r=t.getGeometry();if(r){var n=r.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(n,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new cf(ef,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[Z(e,F,this.handleFeatureChange_,this),Z(e,h,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var r=!0,n=e.getId();return void 0!==n&&(n.toString()in this.idIndex_?r=!1:this.idIndex_[n.toString()]=e),r&&(pt(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),r},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],r=[],n=[],i=0,a=t.length;i=0;--r){var n=this.geometryFunction(t[r]);n?xr(e,n.getCoordinates()):t.splice(r,1)}Pr(e,1/t.length);var i=new gt(new qn(e));return i.set("features",t),i},e}(hf),df=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),gf="default",yf="truncated",mf=function(t){function e(e,r,n,i,o,a,s){var l=t.call(this,r,n,i,o,a,s)||this;return l.zoomifyImage_=null,l.tileSize_=e,l}return df(e,t),e.prototype.getImage=function(){if(this.zoomifyImage_)return this.zoomifyImage_;var e=t.prototype.getImage.call(this);if(this.state==to){var r=this.tileSize_;if(e.width==r[0]&&e.height==r[1])return this.zoomifyImage_=e,e;var n=uo(r[0],r[1]);return n.drawImage(e,0,0),this.zoomifyImage_=n.canvas,n.canvas}return e},e}(vo),vf=function(t){function e(e){var r=this,n=e,i=n.size,o=void 0!==n.tierSizeCalculation?n.tierSizeCalculation:gf,a=n.tilePixelRatio||1,s=i[0],l=i[1],u=[],c=n.tileSize||256,h=c*a;switch(o){case gf:for(;s>h||l>h;)u.push([Math.ceil(s/h),Math.ceil(l/h)]),h+=h;break;case yf:for(var p=s,f=l;p>h||f>h;)u.push([Math.ceil(p/h),Math.ceil(f/h)]),p>>=1,f>>=1;break;default:pt(!1,53)}u.push([1,1]),u.reverse();for(var d=[a],g=[0],y=1,m=u.length;y1,n=r&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],i=r&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=r&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:_f(e.supports,n),formats:_f(e.formats,i),qualities:_f(e.qualities,o)}},Of[wf]=function(t){var e=t.getComplianceLevelSupportedFeatures(),r=void 0===t.imageInfo.extraFormats?e.formats:_f(e.formats,t.imageInfo.extraFormats),n=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return["jpg","png","gif"].includes(t)})).reduce((function(t,e){return void 0===t&&r.includes(e)?e:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?e.supports:_f(e.supports,t.imageInfo.extraFeatures),formats:r,qualities:void 0===t.imageInfo.extraQualities?e.qualities:_f(e.qualities,t.imageInfo.extraQualities),preferredFormat:n}};var Pf=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var e=0;e0&&"string"==typeof this.imageInfo.profile[0]&&Tf.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var e=this.getComplianceLevelEntryFromProfile(t);if(void 0!==e){var r=e.match(/level[0-2](?:\.json)?$/g);return Array.isArray(r)?r[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),e=this.getComplianceLevelFromProfile(t);return void 0===e?Sf.none.none:Sf[t][e]}},t.prototype.getTileSourceOptions=function(t){var e=t||{},r=this.getImageApiVersion();if(void 0!==r){var n=void 0===r?void 0:Of[r](this);if(void 0!==n)return{url:n.url,version:r,size:[this.imageInfo.width,this.imageInfo.height],sizes:n.sizes,format:void 0!==e.format&&n.formats.includes(e.format)?e.format:void 0!==n.preferredFormat?n.preferredFormat:"jpg",supports:n.supports,quality:e.quality&&n.qualities.includes(e.quality)?e.quality:n.qualities.includes("native")?"native":"default",resolutions:Array.isArray(n.resolutions)?n.resolutions.sort((function(t,e){return e-t})):void 0,tileSize:n.tileSize}}},t}(),Rf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function If(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var Lf=function(t){function e(e){var r=this,n=e||{},i=n.url||"";i+=i.lastIndexOf("/")===i.length-1||""===i?"":"/";var o=n.version||xf,a=n.sizes||[],s=n.size;pt(null!=s&&Array.isArray(s)&&2==s.length&&!isNaN(s[0])&&s[0]>0&&!isNaN(s[1])&&s[1]>0,60);var l,u,c,h=s[0],p=s[1],f=n.tileSize,d=n.tilePixelRatio||1,g=n.format||"jpg",y=n.quality||(n.version==bf?"native":"default"),m=n.resolutions||[],v=n.supports||[],_=n.extent||[0,-p,h,0],b=null!=a&&Array.isArray(a)&&a.length>0,x=void 0!==f&&("number"==typeof f&&Number.isInteger(f)&&f>0||Array.isArray(f)&&f.length>0),w=null!=v&&Array.isArray(v)&&(v.includes("regionByPx")||v.includes("regionByPct"))&&(v.includes("sizeByWh")||v.includes("sizeByH")||v.includes("sizeByW")||v.includes("sizeByPct"));if(m.sort((function(t,e){return e-t})),x||w)if(null!=f&&("number"==typeof f&&Number.isInteger(f)&&f>0?(l=f,u=f):Array.isArray(f)&&f.length>0&&((1==f.length||null==f[1]&&Number.isInteger(f[0]))&&(l=f[0],u=f[0]),2==f.length&&(Number.isInteger(f[0])&&Number.isInteger(f[1])?(l=f[0],u=f[1]):null==f[0]&&Number.isInteger(f[1])&&(l=f[1],u=f[1])))),void 0!==l&&void 0!==u||(l=256,u=256),0==m.length)for(var S=c=Math.max(Math.ceil(Math.log(h/l)/Math.LN2),Math.ceil(Math.log(p/u)/Math.LN2));S>=0;S--)m.push(Math.pow(2,S));else{var E=Math.max.apply(Math,m);c=Math.round(Math.log(E)/Math.LN2)}else if(l=h,u=p,m=[],b){a.sort((function(t,e){return t[0]-e[0]})),c=-1;var T=[];for(S=0;S0&&m[m.length-1]==C?T.push(S):(m.push(C),c++)}if(T.length>0)for(S=0;Sc)){var d=t[1],_=t[2],S=m[f];if(!(void 0===d||void 0===_||void 0===S||d<0||Math.ceil(h/S/l)<=d||_<0||Math.ceil(p/S/u)<=_)){if(w||x){var E=d*l*S,T=_*u*S,C=l*S,O=u*S,P=l,R=u;if(E+C>h&&(C=h-E),T+O>p&&(O=p-T),E+l*S>h&&(P=Math.floor((h-E+S-1)/S)),T+u*S>p&&(R=Math.floor((p-T+S-1)/S)),0==E&&C==h&&0==T&&O==p)n="full";else if(!w||v.includes("regionByPx"))n=E+","+T+","+C+","+O;else if(v.includes("regionByPct")){n="pct:"+If(E/h*100)+","+If(T/p*100)+","+If(C/h*100)+","+If(O/p*100)}o!=wf||w&&!v.includes("sizeByWh")?!w||v.includes("sizeByW")?s=P+",":v.includes("sizeByH")?s=","+R:v.includes("sizeByWh")?s=P+","+R:v.includes("sizeByPct")&&(s="pct:"+If(100/S)):s=P+","+R}else if(n="full",b){var I=a[f][0],L=a[f][1];s=o==wf?I==h&&L==p?"max":I+","+L:I==h?"full":I+","}else s=o==wf?"max":"full";return i+n+"/"+s+"/0/"+y+"."+g}}},transition:n.transition})||this).zDirection=n.zDirection,r}return Rf(e,t),e}(Xp),Mf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ff=function(t){function e(e,r,n,i,o,a,s){var l=this,u=e.getExtent(),c=r.getExtent(),h=c?Te(n,c):n,p=tc(e,r,xe(h),i),f=new Ip(e,r,h,u,.5*p,i),d=a(f.calculateSourceExtent(),p,o),g=d?Fi:Ni,y=d?d.getPixelRatio():1;return(l=t.call(this,n,i,y,g)||this).targetProj_=r,l.maxSourceExtent_=u,l.triangulation_=f,l.targetResolution_=i,l.targetExtent_=n,l.sourceImage_=d,l.sourcePixelRatio_=y,l.contextOptions_=s,l.canvas_=null,l.sourceListenerKey_=null,l}return Mf(e,t),e.prototype.disposeInternal=function(){this.state==Ai&&this.unlistenSource_(),t.prototype.disposeInternal.call(this)},e.prototype.getImage=function(){return this.canvas_},e.prototype.getProjection=function(){return this.targetProj_},e.prototype.reproject_=function(){var t=this.sourceImage_.getState();if(t==ki){var e=Pe(this.targetExtent_)/this.targetResolution_,r=Ee(this.targetExtent_)/this.targetResolution_;this.canvas_=rc(e,r,this.sourcePixelRatio_,this.sourceImage_.getResolution(),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0,void 0,this.contextOptions_)}this.state=t,this.changed()},e.prototype.load=function(){if(this.state==Fi){this.state=Ai,this.changed();var t=this.sourceImage_.getState();t==ki||t==ji?this.reproject_():(this.sourceListenerKey_=Z(this.sourceImage_,F,(function(t){var e=this.sourceImage_.getState();e!=ki&&e!=ji||(this.unlistenSource_(),this.reproject_())}),this),this.sourceImage_.load())}},e.prototype.unlistenSource_=function(){H(this.sourceListenerKey_),this.sourceListenerKey_=null},e}(Mi),Af=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),kf="imageloadstart",jf="imageloadend",Nf="imageloaderror",Df=function(t){function e(e,r){var n=t.call(this,e)||this;return n.image=r,n}return Af(e,t),e}(c);function Gf(t,e){t.getImage().src=e}var zf=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,projection:e.projection,state:e.state})||this;return r.resolutions_=void 0!==e.resolutions?e.resolutions:null,r.reprojectedImage_=null,r.reprojectedRevision_=0,r.contextOptions_=!1===e.imageSmoothing?$u:void 0,r}return Af(e,t),e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getContextOptions=function(){return this.contextOptions_},e.prototype.findNearestResolution=function(t){if(this.resolutions_){var e=y(this.resolutions_,t,0);t=this.resolutions_[e]}return t},e.prototype.getImage=function(t,e,r,n){var i=this.getProjection();if(i&&n&&!Xr(i,n)){if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&Xr(this.reprojectedImage_.getProjection(),n)&&this.reprojectedImage_.getResolution()==e&&ue(this.reprojectedImage_.getExtent(),t))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new Ff(i,n,t,e,r,function(t,e,r){return this.getImageInternal(t,e,r,i)}.bind(this),this.contextOptions_),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}return i&&(n=i),this.getImageInternal(t,e,r,n)},e.prototype.getImageInternal=function(t,e,r,i){return n()},e.prototype.handleImageChange=function(t){var e=t.target;switch(e.getState()){case Ai:this.loading=!0,this.dispatchEvent(new Df(kf,e));break;case ki:this.loading=!1,this.dispatchEvent(new Df(jf,e));break;case ji:this.loading=!1,this.dispatchEvent(new Df(Nf,e))}},e}(Dp),Uf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bf=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.hidpi_=void 0===n.hidpi||n.hidpi,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Gf,r.params_=n.params||{},r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Uf(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};O(o,this.params_);var a=((t=t.slice())[0]+t[2])/2,s=(t[1]+t[3])/2;if(1!=this.ratio_){var l=this.ratio_*Pe(t)/2,u=this.ratio_*Ee(t)/2;t[0]=a-l,t[1]=s-u,t[2]=a+l,t[3]=s+u}var c=e/r,h=Math.ceil(Pe(t)/c),p=Math.ceil(Ee(t)/c);t[0]=a-c*h/2,t[2]=a+c*h/2,t[1]=s-c*p/2,t[3]=s+c*p/2,this.imageSize_[0]=h,this.imageSize_[1]=p;var f=this.getRequestUrl_(t,this.imageSize_,r,n,o);return this.image_=new Ki(t,e,r,f,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(F,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){var o=n.getCode().split(":").pop();i.SIZE=e[0]+","+e[1],i.BBOX=t.join(","),i.BBOXSR=o,i.IMAGESR=o,i.DPI=Math.round(90*r);var a=this.url_,s=a.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return s==a&&pt(!1,50),mc(s,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){O(this.params_,t),this.image_=null,this.changed()},e}(zf),Vf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yf=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions,state:n.state})||this).canvasFunction_=n.canvasFunction,r.canvas_=null,r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Vf(e,t),e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e);var i=this.canvas_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;Me(t=t.slice(),this.ratio_);var o=[Pe(t)/e*r,Ee(t)/e*r],a=this.canvasFunction_.call(this,t,e,r,o,n);return a&&(i=new $i(t,e,r,a)),this.canvas_=i,this.renderedRevision_=this.getRevision(),i},e}(zf),Wf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var qf=function(t){function e(e){var r=t.call(this,{imageSmoothing:e.imageSmoothing,projection:e.projection,resolutions:e.resolutions})||this;return r.crossOrigin_=void 0!==e.crossOrigin?e.crossOrigin:null,r.displayDpi_=void 0!==e.displayDpi?e.displayDpi:96,r.params_=e.params||{},r.url_=e.url,r.imageLoadFunction_=void 0!==e.imageLoadFunction?e.imageLoadFunction:Gf,r.hidpi_=void 0===e.hidpi||e.hidpi,r.metersPerUnit_=void 0!==e.metersPerUnit?e.metersPerUnit:1,r.ratio_=void 0!==e.ratio?e.ratio:1,r.useOverlay_=void 0!==e.useOverlay&&e.useOverlay,r.image_=null,r.renderedRevision_=0,r}return Wf(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;1!=this.ratio_&&Me(t=t.slice(),this.ratio_);var o=[Pe(t)/e*r,Ee(t)/e*r];if(void 0!==this.url_){var a=this.getUrl(this.url_,this.params_,t,o,n);(i=new Ki(t,e,r,a,this.crossOrigin_,this.imageLoadFunction_)).addEventListener(F,this.handleImageChange.bind(this))}else i=null;return this.image_=i,this.renderedRevision_=this.getRevision(),i},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.updateParams=function(t){O(this.params_,t),this.changed()},e.prototype.getUrl=function(t,e,r,n,i){var o=function(t,e,r,n){var i=Pe(t),o=Ee(t),a=e[0],s=e[1],l=.0254/n;return s*i>a*o?i*r/(a*l):o*r/(s*l)}(r,n,this.metersPerUnit_,this.displayDpi_),a=xe(r),s={OPERATION:this.useOverlay_?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.displayDpi_,SETDISPLAYWIDTH:Math.round(n[0]),SETDISPLAYHEIGHT:Math.round(n[1]),SETVIEWSCALE:o,SETVIEWCENTERX:a[0],SETVIEWCENTERY:a[1]};return O(s,e),mc(t,s)},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e}(zf),Xf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zf=function(t){function e(e){var r=this,n=void 0!==e.crossOrigin?e.crossOrigin:null,i=void 0!==e.imageLoadFunction?e.imageLoadFunction:Gf;return(r=t.call(this,{attributions:e.attributions,imageSmoothing:e.imageSmoothing,projection:Gr(e.projection)})||this).url_=e.url,r.imageExtent_=e.imageExtent,r.image_=new Ki(r.imageExtent_,void 0,1,r.url_,n,i),r.imageSize_=e.imageSize?e.imageSize:null,r.image_.addEventListener(F,r.handleImageChange.bind(r)),r}return Xf(e,t),e.prototype.getImageExtent=function(){return this.imageExtent_},e.prototype.getImageInternal=function(t,e,r,n){return Re(t,this.image_.getExtent())?this.image_:null},e.prototype.getUrl=function(){return this.url_},e.prototype.handleImageChange=function(e){if(this.image_.getState()==ki){var r=this.image_.getExtent(),n=this.image_.getImage(),i=void 0,o=void 0;this.imageSize_?(i=this.imageSize_[0],o=this.imageSize_[1]):(i=n.width,o=n.height);var a=Ee(r)/o,s=Math.ceil(Pe(r)/a);if(s!=i){var l=uo(s,o);O(l,this.getContextOptions());var u=l.canvas;l.drawImage(n,0,0,i,o,0,0,u.width,u.height),this.image_.setImage(u)}}t.prototype.handleImageChange.call(this,e)},e}(zf),Kf="carmentaserver",Hf="geoserver",$f="mapserver",Jf="qgis",Qf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),td=[101,101],ed=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Gf,r.params_=n.params||{},r.v13_=!0,r.updateV13_(),r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Qf(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){if(void 0!==this.url_){var i=Gr(r),o=this.getProjection();o&&o!==i&&(e=tc(o,i,t,e),t=Hr(t,i,o));var a=Se(t,e,0,td),s={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};O(s,this.params_,n);var l=Math.floor((t[0]-a[0])/e),u=Math.floor((a[3]-t[1])/e);return s[this.v13_?"I":"X"]=l,s[this.v13_?"J":"Y"]=u,this.getRequestUrl_(a,td,1,o||i,s)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.url_){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i/28e-5}return O(r,e),mc(this.url_,r)}},e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),1==r||this.hidpi_&&void 0!==this.serverType_||(r=1);var i=e/r,o=xe(t),a=Se(o,i,0,[Math.ceil(Pe(t)/i),Math.ceil(Ee(t)/i)]),s=Se(o,i,0,[Math.ceil(this.ratio_*Pe(t)/i),Math.ceil(this.ratio_*Ee(t)/i)]),l=this.image_;if(l&&this.renderedRevision_==this.getRevision()&&l.getResolution()==e&&l.getPixelRatio()==r&&te(l.getExtent(),a))return l;var u={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};O(u,this.params_),this.imageSize_[0]=Math.round(Pe(s)/i),this.imageSize_[1]=Math.round(Ee(s)/i);var c=this.getRequestUrl_(s,this.imageSize_,r,n,u);return this.image_=new Ki(s,e,r,c,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(F,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){if(pt(void 0!==this.url_,9),i[this.v13_?"CRS":"SRS"]=n.getCode(),"STYLES"in this.params_||(i.STYLES=""),1!=r)switch(this.serverType_){case Hf:var o=90*r+.5|0;"FORMAT_OPTIONS"in i?i.FORMAT_OPTIONS+=";dpi:"+o:i.FORMAT_OPTIONS="dpi:"+o;break;case $f:i.MAP_RESOLUTION=90*r;break;case Kf:case Jf:i.DPI=90*r;break;default:pt(!1,8)}i.WIDTH=e[0],i.HEIGHT=e[1];var a,s=n.getAxisOrientation();return a=this.v13_&&"ne"==s.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,i.BBOX=a.join(","),mc(this.url_,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){O(this.params_,t),this.updateV13_(),this.image_=null,this.changed()},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=br(t,"1.3")>=0},e}(zf),rd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),nd='© OpenStreetMap contributors.',id=function(t){function e(e){var r,n=e||{};r=void 0!==n.attributions?n.attributions:[nd];var i=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",o=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:r,attributionsCollapsible:!1,cacheSize:n.cacheSize,crossOrigin:i,imageSmoothing:n.imageSmoothing,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,opaque:void 0===n.opaque||n.opaque,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,transition:n.transition,url:o,wrapX:n.wrapX})||this}return rd(e,t),e}(Jp),od=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ad=function(t){function e(e){var r=e||{};return t.call(this,r)||this}return od(e,t),e}(na),sd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ld=function(t){function e(e){var r=t.call(this)||this;return r.boundHandleImageChange_=r.handleImageChange_.bind(r),r.layer_=e,r.declutterExecutorGroup=null,r}return sd(e,t),e.prototype.getFeatures=function(t){return n()},e.prototype.prepareFrame=function(t){return n()},e.prototype.renderFrame=function(t,e){return n()},e.prototype.loadedTileCallback=function(t,e,r){t[e]||(t[e]={}),t[e][r.tileCoord.toString()]=r},e.prototype.createLoadedTileFinder=function(t,e,r){return function(n,i){var o=this.loadedTileCallback.bind(this,r,n);return t.forEachLoadedTile(e,n,i,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){},e.prototype.getDataAtPixel=function(t,e,r){return n()},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===ki&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=ki&&e!=ji&&t.addEventListener(F,this.boundHandleImageChange_),e==Fi&&(t.load(),e=t.getState()),e==ki},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==Qo&&t.changed()},e}(Q),ud=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cd=function(t){function e(e){var r=t.call(this,e)||this;return r.container=null,r.renderedResolution,r.tempTransform=[1,0,0,1,0,0],r.pixelTransform=[1,0,0,1,0,0],r.inversePixelTransform=[1,0,0,1,0,0],r.context=null,r.containerReused=!1,r}return ud(e,t),e.prototype.useContainer=function(t,e,r){var n,i,o=this.getLayer().getClassName();t&&""===t.style.opacity&&t.className===o&&((s=t.firstElementChild)instanceof HTMLCanvasElement&&(i=s.getContext("2d")));if(!i||0!==i.canvas.width&&i.canvas.style.transform!==e?this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1):(this.container=t,this.context=i,this.containerReused=!0),!this.container){(n=document.createElement("div")).className=o;var a=n.style;a.position="absolute",a.width="100%",a.height="100%";var s=(i=uo()).canvas;n.appendChild(s),(a=s.style).position="absolute",a.left="0",a.transformOrigin="top left",this.container=n,this.context=i}},e.prototype.clip=function(t,e,r){var n=e.pixelRatio,i=e.size[0]*n/2,o=e.size[1]*n/2,a=e.viewState.rotation,s=Ce(r),l=Oe(r),u=be(r),c=_e(r);It(e.coordinateToPixelTransform,s),It(e.coordinateToPixelTransform,l),It(e.coordinateToPixelTransform,u),It(e.coordinateToPixelTransform,c),t.save(),Ca(t,-a,i,o),t.beginPath(),t.moveTo(s[0]*n,s[1]*n),t.lineTo(l[0]*n,l[1]*n),t.lineTo(u[0]*n,u[1]*n),t.lineTo(c[0]*n,c[1]*n),t.clip(),Ca(t,a,i,o)},e.prototype.clipUnrotated=function(t,e,r){var n=Ce(r),i=Oe(r),o=be(r),a=_e(r);It(e.coordinateToPixelTransform,n),It(e.coordinateToPixelTransform,i),It(e.coordinateToPixelTransform,o),It(e.coordinateToPixelTransform,a);var s=this.inversePixelTransform;It(s,n),It(s,i),It(s,o),It(s,a),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(i[0]),Math.round(i[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(a[0]),Math.round(a[1])),t.clip()},e.prototype.dispatchRenderEvent_=function(t,e,r){var n=this.getLayer();if(n.hasListener(t)){var i=new la(t,this.inversePixelTransform,r,e);n.dispatchEvent(i)}},e.prototype.preRender=function(t,e){this.dispatchRenderEvent_(qo,t,e)},e.prototype.postRender=function(t,e){this.dispatchRenderEvent_(Xo,t,e)},e.prototype.getRenderTransform=function(t,e,r,n,i,o,a){var s=i/2,l=o/2,u=n/e,c=-u,h=-t[0]+a,p=-t[1];return kt(this.tempTransform,s,l,u,c,-r,h,p)},e.prototype.getDataAtPixel=function(t,e,r){var n,i=It(this.inversePixelTransform,t.slice()),o=this.context,a=this.getLayer().getExtent();if(a&&!Qt(a,It(e.pixelToCoordinateTransform,t.slice())))return null;try{var s=Math.round(i[0]),l=Math.round(i[1]),u=document.createElement("canvas"),c=u.getContext("2d");u.width=1,u.height=1,c.clearRect(0,0,1,1),c.drawImage(o.canvas,s,l,1,1,0,0,1,1),n=c.getImageData(0,0,1,1).data}catch(t){return"SecurityError"===t.name?new Uint8Array:n}return 0===n[3]?null:n},e}(ld),hd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pd=function(t){function e(e){var r=t.call(this,e)||this;return r.image_=null,r}return hd(e,t),e.prototype.getImage=function(){return this.image_?this.image_.getImage():null},e.prototype.prepareFrame=function(t){var e=t.layerStatesArray[t.layerIndex],r=t.pixelRatio,n=t.viewState,i=n.resolution,o=this.getLayer().getSource(),a=t.viewHints,s=t.extent;if(void 0!==e.extent&&(s=Te(s,on(e.extent,n.projection))),!a[ns]&&!a[is]&&!Ie(s))if(o){var l=n.projection,u=o.getImage(s,i,r,l);u&&this.loadImage(u)&&(this.image_=u)}else this.image_=null;return!!this.image_},e.prototype.renderFrame=function(t,e){var r=this.image_,n=r.getExtent(),i=r.getResolution(),o=r.getPixelRatio(),a=t.layerStatesArray[t.layerIndex],s=t.pixelRatio,l=t.viewState,u=l.center,c=l.resolution,h=t.size,p=s*i/(c*o),f=Math.round(h[0]*s),d=Math.round(h[1]*s),g=l.rotation;if(g){var y=Math.round(Math.sqrt(f*f+d*d));f=y,d=y}kt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/s,1/s,g,-f/2,-d/2),jt(this.inversePixelTransform,this.pixelTransform);var m=Ra(this.pixelTransform);this.useContainer(e,m,a.opacity);var v=this.context,_=v.canvas;_.width!=f||_.height!=d?(_.width=f,_.height=d):this.containerReused||v.clearRect(0,0,f,d);var b=!1;if(a.extent){var x=on(a.extent,l.projection);(b=!te(x,t.extent)&&Re(x,t.extent))&&this.clipUnrotated(v,t,x)}var w=r.getImage(),S=kt(this.tempTransform,f/2,d/2,p,p,0,o*(n[0]-u[0])/i,o*(u[1]-n[3])/i);this.renderedResolution=i*s/o;var E=S[4],T=S[5],C=w.width*S[0],P=w.height*S[3];if(O(v,this.getLayer().getSource().getContextOptions()),this.preRender(v,t),C>=.5&&P>=.5){var R=a.opacity,I=void 0;1!==R&&(I=this.context.globalAlpha,this.context.globalAlpha=R),this.context.drawImage(w,0,0,+w.width,+w.height,Math.round(E),Math.round(T),Math.round(C),Math.round(P)),1!==R&&(this.context.globalAlpha=I)}return this.postRender(v,t),b&&v.restore(),m!==_.style.transform&&(_.style.transform=m),this.container},e}(cd),fd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),dd=function(t){function e(e){return t.call(this,e)||this}return fd(e,t),e.prototype.createRenderer=function(){return new pd(this)},e}(ad),gd="preload",yd="useInterimTilesOnError",md=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vd=function(t){function e(e){var r=this,n=e||{},i=O({},n);return delete i.preload,delete i.useInterimTilesOnError,(r=t.call(this,i)||this).setPreload(void 0!==n.preload?n.preload:0),r.setUseInterimTilesOnError(void 0===n.useInterimTilesOnError||n.useInterimTilesOnError),r}return md(e,t),e.prototype.getPreload=function(){return this.get(gd)},e.prototype.setPreload=function(t){this.set(gd,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(yd)},e.prototype.setUseInterimTilesOnError=function(t){this.set(yd,t)},e}(na),_d=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bd=function(t){function e(e){var r=t.call(this,e)||this;return r.extentChanged=!0,r.renderedExtent_=null,r.renderedPixelRatio,r.renderedProjection=null,r.renderedRevision,r.renderedTiles=[],r.newTiles_=!1,r.tmpExtent=[1/0,1/0,-1/0,-1/0],r.tmpTileRange_=new _u(0,0,0,0),r}return _d(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),r=t.getState(),n=e.getUseInterimTilesOnError();return r==to||r==ro||r==eo&&!n},e.prototype.getTile=function(t,e,r,n){var i=n.pixelRatio,o=n.viewState.projection,a=this.getLayer(),s=a.getSource().getTile(t,e,r,i,o);return s.getState()==eo&&(a.getUseInterimTilesOnError()?a.getPreload()>0&&(this.newTiles_=!0):s.setState(to)),this.isDrawableTile(s)||(s=s.getInterimTile()),s},e.prototype.loadedTileCallback=function(e,r,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,r,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var r=t.layerStatesArray[t.layerIndex],n=t.viewState,i=n.projection,a=n.resolution,s=n.center,l=n.rotation,u=t.pixelRatio,c=this.getLayer(),h=c.getSource(),p=h.getRevision(),f=h.getTileGridForProjection(i),g=f.getZForResolution(a,h.zDirection),y=f.getResolution(g),m=t.extent,v=r.extent&&on(r.extent,i);v&&(m=Te(m,on(r.extent,i)));var _=h.getTilePixelRatio(u),b=Math.round(t.size[0]*_),x=Math.round(t.size[1]*_);if(l){var w=Math.round(Math.sqrt(b*b+x*x));b=w,x=w}var S=y*b/2/_,E=y*x/2/_,T=[s[0]-S,s[1]-E,s[0]+S,s[1]+E],C=f.getTileRangeForExtentAndZ(m,g),P={};P[g]={};var R=this.createLoadedTileFinder(h,i,P),I=this.tmpExtent,L=this.tmpTileRange_;this.newTiles_=!1;for(var M=C.minX;M<=C.maxX;++M)for(var F=C.minY;F<=C.maxY;++F){var A=this.getTile(g,M,F,t);if(this.isDrawableTile(A)){var k=o(this);if(A.getState()==to){P[g][A.tileCoord.toString()]=A;var j=A.inTransition(k);this.newTiles_||!j&&-1!==this.renderedTiles.indexOf(A)||(this.newTiles_=!0)}if(1===A.getAlpha(k,t.time))continue}var N=f.getTileCoordChildTileRange(A.tileCoord,L,I),D=!1;N&&(D=R(g+1,N)),D||f.forEachTileCoordParentTileRange(A.tileCoord,R,L,I)}var G=y/a;kt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/_,1/_,l,-b/2,-x/2);var z=Ra(this.pixelTransform);this.useContainer(e,z,r.opacity);var U=this.context,B=U.canvas;jt(this.inversePixelTransform,this.pixelTransform),kt(this.tempTransform,b/2,x/2,G,G,0,-b/2,-x/2),B.width!=b||B.height!=x?(B.width=b,B.height=x):this.containerReused||U.clearRect(0,0,b,x),v&&this.clipUnrotated(U,t,v),O(U,h.getContextOptions()),this.preRender(U,t),this.renderedTiles.length=0;var V,Y,W,q=Object.keys(P).map(Number);q.sort(d),1!==r.opacity||this.containerReused&&!h.getOpaque(t.viewState.projection)?(V=[],Y=[]):q=q.reverse();for(var X=q.length-1;X>=0;--X){var Z=q[X],K=h.getTilePixelSize(Z,u,i),H=f.getResolution(Z)/y,$=K[0]*H*G,J=K[1]*H*G,Q=f.getTileCoordForCoordAndZ(Ce(T),Z),tt=f.getTileCoordExtent(Q),et=It(this.tempTransform,[_*(tt[0]-T[0])/y,_*(T[3]-tt[3])/y]),rt=_*h.getGutterForProjection(i),nt=P[Z];for(var it in nt){var ot=(A=nt[it]).tileCoord,at=et[0]-(Q[1]-ot[1])*$,st=Math.round(at+$),lt=et[1]-(Q[2]-ot[2])*J,ut=Math.round(lt+J),ct=st-(M=Math.round(at)),ht=ut-(F=Math.round(lt)),pt=g===Z;if(!(j=pt&&1!==A.getAlpha(o(this),t.time)))if(V){U.save(),W=[M,F,M+ct,F,M+ct,F+ht,M,F+ht];for(var ft=0,dt=V.length;ftthis._maxQueueLength;)this._queue.shift().callback(null,null)},e.prototype._dispatch=function(){if(0===this._running&&this._queue.length>0){var t=this._queue.shift();this._job=t;var e=t.inputs[0].width,r=t.inputs[0].height,n=t.inputs.map((function(t){return t.data.buffer})),i=this._workers.length;if(this._running=i,1===i)this._workers[0].postMessage({buffers:n,meta:t.meta,imageOps:this._imageOps,width:e,height:r},n);else for(var o=t.inputs[0].data.length,a=4*Math.ceil(o/4/i),s=0;sStamen Design, under CC BY 3.0.',nd],Vd={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},Yd={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},Wd=function(t){function e(e){var r=e.layer.indexOf("-"),n=-1==r?e.layer:e.layer.slice(0,r),i=Yd[n],o=Vd[e.layer],a=void 0!==e.url?e.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+e.layer+"/{z}/{x}/{y}."+o.extension;return t.call(this,{attributions:Bd,cacheSize:e.cacheSize,crossOrigin:"anonymous",imageSmoothing:e.imageSmoothing,maxZoom:null!=e.maxZoom?e.maxZoom:i.maxZoom,minZoom:null!=e.minZoom?e.minZoom:i.minZoom,opaque:o.opaque,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileLoadFunction:e.tileLoadFunction,transition:e.transition,url:a,wrapX:e.wrapX})||this}return Ud(e,t),e}(Jp),qd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xd=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,imageSmoothing:n.imageSmoothing,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).params_=n.params||{},r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.setKey(r.getKeyForParams_()),r}return qd(e,t),e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){var s,l=i.getCode().split(":").pop();if(o.SIZE=e[0]+","+e[1],o.BBOX=r.join(","),o.BBOXSR=l,o.IMAGESR=l,o.DPI=Math.round(o.DPI?o.DPI*n:90*n),1==a.length)s=a[0];else s=a[We(fu(t),a.length)];return mc(s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_?t:1},e.prototype.updateParams=function(t){O(this.params_,t),this.setKey(this.getKeyForParams_())},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_||(e=1);var i=n.getTileCoordExtent(t,this.tmpExtent_),o=Is(n.getTileSize(t[0]),this.tmpSize);1!=e&&(o=Rs(o,e,this.tmpSize));var a={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return O(a,this.params_),this.getRequestUrl_(t,o,i,e,r,a)}},e}(Xp),Zd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Kd=function(t){function e(e,r,n){var i=t.call(this,e,to)||this;return i.tileSize_=r,i.text_=n,i.canvas_=null,i}return Zd(e,t),e.prototype.getImage=function(){if(this.canvas_)return this.canvas_;var t=this.tileSize_,e=uo(t[0],t[1]);return e.strokeStyle="grey",e.strokeRect(.5,.5,t[0]+.5,t[1]+.5),e.fillStyle="grey",e.strokeStyle="white",e.textAlign="center",e.textBaseline="middle",e.font="24px sans-serif",e.lineWidth=4,e.strokeText(this.text_,t[0]/2,t[1]/2,t[0]),e.fillText(this.text_,t[0]/2,t[1]/2,t[0]),this.canvas_=e.canvas,e.canvas},e.prototype.load=function(){},e}(lo),Hd=function(t){function e(e){var r=e||{};return t.call(this,{opaque:!1,projection:r.projection,tileGrid:r.tileGrid,wrapX:void 0===r.wrapX||r.wrapX,zDirection:r.zDirection})||this}return Zd(e,t),e.prototype.getTile=function(t,e,r){var n=cu(t,e,r);if(this.tileCache.containsKey(n))return this.tileCache.get(n);var i=Is(this.tileGrid.getTileSize(t)),o=[t,e,r],a=this.getTileCoordForTileUrlFunction(o),s=void 0;s=a?"z:"+a[0]+" x:"+a[1]+" y:"+a[2]:"none";var l=new Kd(o,i,s);return this.tileCache.set(n,l),l},e}(Jp),$d=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jd=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,imageSmoothing:e.imageSmoothing,projection:Gr("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Jo,tileLoadFunction:e.tileLoadFunction,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this;if(r.tileJSON_=null,r.tileSize_=e.tileSize,e.url)if(e.jsonp)Au(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):pt(!1,51);return r}return $d(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTileJSON=function(){return this.tileJSON_},e.prototype.handleTileJSONResponse=function(t){var e,r=Gr("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Zr(r,n);e=Ae(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=lc({extent:hc(n),maxZoom:a,minZoom:o,tileSize:this.tileSize_});if(this.tileGrid=s,this.tileUrlFunction=fc(t.tiles,s),void 0!==t.attribution&&!this.getAttributions()){var l=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Re(l,e.extent)?[t.attribution]:null}))}this.tileJSON_=t,this.setState(Qo)},e.prototype.handleTileJSONError=function(){this.setState(ta)},e}(Xp),Qd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tg=function(t){function e(e){var r=this,n=e||{},i=n.params||{},o=!("TRANSPARENT"in i)||i.TRANSPARENT;return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,imageSmoothing:n.imageSmoothing,opaque:!o,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileClass:n.tileClass,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).gutter_=void 0!==n.gutter?n.gutter:0,r.params_=i,r.v13_=!0,r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.updateV13_(),r.setKey(r.getKeyForParams_()),r}return Qd(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){var i=Gr(r),o=this.getProjection(),a=this.getTileGrid();a||(a=this.getTileGridForProjection(i));var s=a.getZForResolution(e,this.zDirection),l=a.getTileCoordForCoordAndZ(t,s);if(!(a.getResolutions().length<=l[0])){var u=a.getResolution(l[0]),c=a.getTileCoordExtent(l,this.tmpExtent_),h=Is(a.getTileSize(l[0]),this.tmpSize),p=this.gutter_;0!==p&&(h=Os(h,p,this.tmpSize),c=Ht(c,u*p,c)),o&&o!==i&&(u=tc(o,i,t,u),c=$r(c,i,o),t=Hr(t,i,o));var f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};O(f,this.params_,n);var d=Math.floor((t[0]-c[0])/u),g=Math.floor((c[3]-t[1])/u);return f[this.v13_?"I":"X"]=d,f[this.v13_?"J":"Y"]=g,this.getRequestUrl_(l,h,c,1,o||i,f)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.urls[0]){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i/28e-5}return O(r,e),mc(this.urls[0],r)}},e.prototype.getGutter=function(){return this.gutter_},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){if(o.WIDTH=e[0],o.HEIGHT=e[1],o[this.v13_?"CRS":"SRS"]=i.getCode(),"STYLES"in this.params_||(o.STYLES=""),1!=n)switch(this.serverType_){case Hf:var s=90*n+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+s:o.FORMAT_OPTIONS="dpi:"+s;break;case $f:o.MAP_RESOLUTION=90*n;break;case Kf:case Jf:o.DPI=90*n;break;default:pt(!1,52)}var l,u=i.getAxisOrientation(),c=r;if(this.v13_&&"ne"==u.substr(0,2)){var h=void 0;h=r[0],c[0]=r[1],c[1]=h,h=r[2],c[2]=r[3],c[3]=h}if(o.BBOX=c.join(","),1==a.length)l=a[0];else l=a[We(fu(t),a.length)];return mc(l,o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_&&void 0!==this.serverType_?t:1},e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.updateParams=function(t){O(this.params_,t),this.updateV13_(),this.setKey(this.getKeyForParams_())},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=br(t,"1.3")>=0},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);var i=n.getResolution(t[0]),o=n.getTileCoordExtent(t,this.tmpExtent_),a=Is(n.getTileSize(t[0]),this.tmpSize),s=this.gutter_;0!==s&&(a=Os(a,s,this.tmpSize),o=Ht(o,i*s,o)),1!=e&&(a=Rs(a,e,this.tmpSize));var l={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return O(l,this.params_),this.getRequestUrl_(t,a,o,e,r,l)}},e}(Xp),eg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rg=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r)||this;return s.src_=n,s.extent_=i,s.preemptive_=o,s.grid_=null,s.keys_=null,s.data_=null,s.jsonp_=a,s}return eg(e,t),e.prototype.getImage=function(){return null},e.prototype.getData=function(t){if(!this.grid_||!this.keys_)return null;var e=(t[0]-this.extent_[0])/(this.extent_[2]-this.extent_[0]),r=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),n=this.grid_[Math.floor((1-r)*this.grid_.length)];if("string"!=typeof n)return null;var i=n.charCodeAt(Math.floor(e*n.length));i>=93&&i--,i>=35&&i--;var o=null;if((i-=32)in this.keys_){var a=this.keys_[i];o=this.data_&&a in this.data_?this.data_[a]:a}return o},e.prototype.forDataAtCoordinate=function(t,e,r){this.state==ro&&!0===r?(this.state=Ji,K(this,F,(function(r){e(this.getData(t))}),this),this.loadInternal_()):!0===r?setTimeout(function(){e(this.getData(t))}.bind(this),0):e(this.getData(t))},e.prototype.getKey=function(){return this.src_},e.prototype.handleError_=function(){this.state=eo,this.changed()},e.prototype.handleLoad_=function(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=to,this.changed()},e.prototype.loadInternal_=function(){if(this.state==Ji)if(this.state=Qi,this.jsonp_)Au(this.src_,this.handleLoad_.bind(this),this.handleError_.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.onXHRLoad_.bind(this)),t.addEventListener("error",this.onXHRError_.bind(this)),t.open("GET",this.src_),t.send()}},e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleError_()}this.handleLoad_(r)}else this.handleError_()},e.prototype.onXHRError_=function(t){this.handleError_()},e.prototype.load=function(){this.preemptive_?this.loadInternal_():this.setState(ro)},e}(lo),ng=function(t){function e(e){var r=t.call(this,{projection:Gr("EPSG:3857"),state:Jo})||this;if(r.preemptive_=void 0===e.preemptive||e.preemptive,r.tileUrlFunction_=gc,r.template_=void 0,r.jsonp_=e.jsonp||!1,e.url)if(r.jsonp_)Au(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):pt(!1,51);return r}return eg(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTemplate=function(){return this.template_},e.prototype.forDataAtCoordinateAndResolution=function(t,e,r,n){if(this.tileGrid){var i=this.tileGrid.getZForResolution(e,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,i);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,r,n)}else!0===n?setTimeout((function(){r(null)}),0):r(null)},e.prototype.handleTileJSONError=function(){this.setState(ta)},e.prototype.handleTileJSONResponse=function(t){var e,r=Gr("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Zr(r,n);e=Ae(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=lc({extent:hc(n),maxZoom:a,minZoom:o});this.tileGrid=s,this.template_=t.template;var l=t.grids;if(l){if(this.tileUrlFunction_=fc(l,s),void 0!==t.attribution){var u=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Re(u,e.extent)?[t.attribution]:null}))}this.setState(Qo)}else this.setState(ta)},e.prototype.getTile=function(t,e,r,n,i){var o=cu(t,e,r);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),l=this.tileUrlFunction_(s,n,i),u=new rg(a,void 0!==l?Ji:ro,void 0!==l?l:"",this.tileGrid.getTileCoordExtent(a),this.preemptive_,this.jsonp_);return this.tileCache.set(o,u),u},e.prototype.useTile=function(t,e,r){var n=cu(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Bp),ig=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),og=function(t){function e(e){var r=this,n=e.projection||"EPSG:3857",i=e.extent||hc(n),o=e.tileGrid||lc({extent:i,maxResolution:e.maxResolution,maxZoom:void 0!==e.maxZoom?e.maxZoom:22,minZoom:e.minZoom,tileSize:e.tileSize||512});return(r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,opaque:!1,projection:n,state:e.state,tileGrid:o,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:ag,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,zDirection:void 0===e.zDirection?1:e.zDirection})||this).format_=e.format?e.format:null,r.loadingTiles_={},r.sourceTileCache=new yu(r.tileCache.highWaterMark),r.overlaps_=null==e.overlaps||e.overlaps,r.tileClass=e.tileClass?e.tileClass:Eu,r.tileGrids_={},r}return ig(e,t),e.prototype.getFeaturesInExtent=function(t){var e=[],r=this.tileCache;if(0===r.getCount())return e;var n=pu(r.peekFirstKey())[0],i=this.tileGrid;return r.forEach((function(r){if(r.tileCoord[0]===n&&r.getState()===to)for(var o=r.getSourceTiles(),a=0,s=o.length;a0&&g[0].tileCoord[0]===f)c=g,h=!0,p=f;else{c=[],p=f+1;do{--p,h=!0,l.forEachTileCoord(o,p,function(n){var i,o=this.tileUrlFunction(n,t,e);if(void 0!==o)if(this.sourceTileCache.containsKey(o)){var a=(i=this.sourceTileCache.get(o)).getState();if(a===to||a===eo||a===ro)return void c.push(i)}else p===f&&((i=new this.tileClass(n,Ji,o,this.format_,this.tileLoadFunction)).extent=l.getTileCoordExtent(n),i.projection=e,i.resolution=l.getResolution(n[0]),this.sourceTileCache.set(o,i),i.addEventListener(F,this.handleTileChange.bind(this)),i.load());h=h&&i&&i.getState()===to,i&&i.getState()!==ro&&r.getState()===Ji&&(r.loadingSourceTiles++,i.addEventListener(F,(function t(){var e=i.getState(),n=i.getKey();if(e===to||e===eo){e===to?(i.removeEventListener(F,t),r.loadingSourceTiles--,delete r.errorSourceTileKeys[n]):e===eo&&(r.errorSourceTileKeys[n]=!0);var o=Object.keys(r.errorSourceTileKeys).length;r.loadingSourceTiles-o==0&&(r.hifi=0===o,r.sourceZ=f,r.setState(to))}})))}.bind(this)),h||(c.length=0)}while(!h&&p>d)}return r.getState()===Ji&&r.setState(Qi),h&&(r.hifi=f===p,r.sourceZ=p,r.getState()0&&(r.tileUrlFunction=dc(o.map(r.createFromWMTSTemplate.bind(r)))),r}return ug(e,t),e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.setTileUrlFunction(dc(t.map(this.createFromWMTSTemplate.bind(this))),e)},e.prototype.getDimensions=function(){return this.dimensions_},e.prototype.getFormat=function(){return this.format_},e.prototype.getLayer=function(){return this.layer_},e.prototype.getMatrixSet=function(){return this.matrixSet_},e.prototype.getRequestEncoding=function(){return this.requestEncoding_},e.prototype.getStyle=function(){return this.style_},e.prototype.getVersion=function(){return this.version_},e.prototype.getKeyForDimensions_=function(){var t=0,e=[];for(var r in this.dimensions_)e[t++]=r+"-"+this.dimensions_[r];return e.join("/")},e.prototype.updateDimensions=function(t){O(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())},e.prototype.createFromWMTSTemplate=function(t){var e=this.requestEncoding_,r={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};e==sg&&O(r,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t=e==sg?mc(t,r):t.replace(/\{(\w+?)\}/g,(function(t,e){return e.toLowerCase()in r?r[e.toLowerCase()]:t}));var n=this.tileGrid,i=this.dimensions_;return function(r,o,a){if(r){var s={TileMatrix:n.getMatrixId(r[0]),TileCol:r[1],TileRow:r[2]};O(s,i);var l=t;return l=e==sg?mc(l,s):l.replace(/\{(\w+?)\}/g,(function(t,e){return s[e]}))}}},e}(Xp);var hg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pg="GENERATE_BUFFERS",fg=function(t){function e(e,r){var n=t.call(this,e)||this,i=r||{};return n.helper=new gh({postProcesses:i.postProcesses,uniforms:i.uniforms}),void 0!==i.className&&(n.helper.getCanvas().className=i.className),n}return hg(e,t),e.prototype.disposeInternal=function(){this.helper.dispose(),t.prototype.disposeInternal.call(this)},e.prototype.getShaderCompileErrors=function(){return this.helper.getShaderCompileErrors()},e.prototype.dispatchRenderEvent_=function(t,e){var r=this.getLayer();if(r.hasListener(t)){var n=new la(t,null,e,null);r.dispatchEvent(n)}},e.prototype.preRender=function(t){this.dispatchRenderEvent_(qo,t)},e.prototype.postRender=function(t){this.dispatchRenderEvent_(Xo,t)},e}(ld),dg=[],gg={vertexPosition:0,indexPosition:0};function yg(t,e,r,n,i){t[e+0]=r,t[e+1]=n,t[e+2]=i}function mg(t,e){var r=e||[];return r[0]=Math.floor(t/256/256/256)/255,r[1]=Math.floor(t/256/256)%256/255,r[2]=Math.floor(t/256)%256/255,r[3]=t%256/255,r}function vg(t){var e=0;return e+=Math.round(256*t[0]*256*256*255),e+=Math.round(256*t[1]*256*255),e+=Math.round(256*t[2]*255),e+=Math.round(255*t[3])}var _g=fg,bg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xg="renderOrder",wg=function(t){function e(e){var r=this,n=e||{},i=O({},n);return delete i.style,delete i.renderBuffer,delete i.updateWhileAnimating,delete i.updateWhileInteracting,(r=t.call(this,i)||this).declutter_=void 0!==n.declutter&&n.declutter,r.renderBuffer_=void 0!==n.renderBuffer?n.renderBuffer:100,r.style_=null,r.styleFunction_=void 0,r.setStyle(n.style),r.updateWhileAnimating_=void 0!==n.updateWhileAnimating&&n.updateWhileAnimating,r.updateWhileInteracting_=void 0!==n.updateWhileInteracting&&n.updateWhileInteracting,r}return bg(e,t),e.prototype.getDeclutter=function(){return this.declutter_},e.prototype.getFeatures=function(e){return t.prototype.getFeatures.call(this,e)},e.prototype.getRenderBuffer=function(){return this.renderBuffer_},e.prototype.getRenderOrder=function(){return this.get(xg)},e.prototype.getStyle=function(){return this.style_},e.prototype.getStyleFunction=function(){return this.styleFunction_},e.prototype.getUpdateWhileAnimating=function(){return this.updateWhileAnimating_},e.prototype.getUpdateWhileInteracting=function(){return this.updateWhileInteracting_},e.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new Pp.a(9)),this.getRenderer().renderDeclutter(t)},e.prototype.setRenderOrder=function(t){this.set(xg,t)},e.prototype.setStyle=function(t){this.style_=void 0!==t?t:_p,this.styleFunction_=null===t?void 0:mp(this.style_),this.changed()},e}(na),Sg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Eg=function(t){function e(e,r){var n=this,i=r.uniforms||{},a=[1,0,0,1,0,0];i[ah]=a,(n=t.call(this,e,{className:r.className,uniforms:i,postProcesses:r.postProcesses})||this).sourceRevision_=-1,n.verticesBuffer_=new Qc(34962,35048),n.hitVerticesBuffer_=new Qc(34962,35048),n.indicesBuffer_=new Qc(34963,35048),n.program_=n.helper.getProgram(r.fragmentShader,r.vertexShader),n.hitDetectionEnabled_=!(!r.hitFragmentShader||!r.hitVertexShader),n.hitProgram_=n.hitDetectionEnabled_&&n.helper.getProgram(r.hitFragmentShader,r.hitVertexShader);var s=r.attributes?r.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:ph.FLOAT}})):[];n.attributes=[{name:"a_position",size:2,type:ph.FLOAT},{name:"a_index",size:1,type:ph.FLOAT}].concat(s),n.hitDetectionAttributes=[{name:"a_position",size:2,type:ph.FLOAT},{name:"a_index",size:1,type:ph.FLOAT},{name:"a_hitColor",size:4,type:ph.FLOAT},{name:"a_featureUid",size:1,type:ph.FLOAT}].concat(s),n.customAttributes=r.attributes?r.attributes:[],n.previousExtent_=[1/0,1/0,-1/0,-1/0],n.currentTransform_=a,n.renderTransform_=[1,0,0,1,0,0],n.invertRenderTransform_=[1,0,0,1,0,0],n.renderInstructions_=new Float32Array(0),n.hitRenderInstructions_=new Float32Array(0),n.hitRenderTarget_=n.hitDetectionEnabled_&&new mh(n.helper),n.worker_=new Worker(Hc),n.worker_.addEventListener("message",function(t){var e=t.data;if(e.type===pg){var r=e.projectionTransform;e.hitDetection?(this.hitVerticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.hitVerticesBuffer_)):(this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.verticesBuffer_)),this.indicesBuffer_.fromArrayBuffer(e.indexBuffer),this.helper.flushBufferData(this.indicesBuffer_),this.renderTransform_=r,jt(this.invertRenderTransform_,this.renderTransform_),e.hitDetection?this.hitRenderInstructions_=new Float32Array(t.data.renderInstructions):this.renderInstructions_=new Float32Array(t.data.renderInstructions),this.getLayer().changed()}}.bind(n)),n.featureCache_={},n.featureCount_=0;var l=n.getLayer().getSource();return n.sourceListenKeys_=[Z(l,ef,n.handleSourceFeatureAdded_,n),Z(l,rf,n.handleSourceFeatureChanged_,n),Z(l,of,n.handleSourceFeatureDelete_,n),Z(l,nf,n.handleSourceFeatureClear_,n)],l.forEachFeature(function(t){this.featureCache_[o(t)]={feature:t,properties:t.getProperties(),geometry:t.getGeometry()},this.featureCount_++}.bind(n)),n}return Sg(e,t),e.prototype.handleSourceFeatureAdded_=function(t){var e=t.feature;this.featureCache_[o(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()},this.featureCount_++},e.prototype.handleSourceFeatureChanged_=function(t){var e=t.feature;this.featureCache_[o(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()}},e.prototype.handleSourceFeatureDelete_=function(t){var e=t.feature;delete this.featureCache_[o(e)],this.featureCount_--},e.prototype.handleSourceFeatureClear_=function(){this.featureCache_={},this.featureCount_=0},e.prototype.renderFrame=function(t){this.preRender(t);var e=this.indicesBuffer_.getSize();this.helper.drawElements(0,e),this.helper.finalizeDraw(t);var r=this.helper.getCanvas(),n=t.layerStatesArray[t.layerIndex].opacity;return n!==parseFloat(r.style.opacity)&&(r.style.opacity=String(n)),this.hitDetectionEnabled_&&(this.renderHitDetection(t),this.hitRenderTarget_.clearCachedData()),this.postRender(t),r},e.prototype.prepareFrame=function(t){var e=this.getLayer(),r=e.getSource(),n=t.viewState,i=!t.viewHints[ns]&&!t.viewHints[is],o=!ue(this.previousExtent_,t.extent),a=this.sourceRevision_c&&this.instructions.push([Ig.CUSTOM,c,i,t,r,Nn])):l==bt.POINT&&(n=t.getFlatCoordinates(),this.coordinates.push(n[0],n[1]),i=this.coordinates.length,this.instructions.push([Ig.CUSTOM,c,i,t,r]));this.endGeometry(e)},e.prototype.beginGeometry=function(t,e){this.beginGeometryInstruction1_=[Ig.BEGIN_GEOMETRY,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Ig.BEGIN_GEOMETRY,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)},e.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},e.prototype.reverseHitDetectionInstructions=function(){var t,e=this.hitDetectionInstructions;e.reverse();var r,n,i=e.length,o=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=r.lineWidth,this.bufferedMaxExtent_=null)}else r.strokeStyle=void 0,r.lineCap=void 0,r.lineDash=null,r.lineDashOffset=void 0,r.lineJoin=void 0,r.lineWidth=void 0,r.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,r=[Ig.SET_FILL_STYLE,e];return"string"!=typeof e&&r.push(!0),r},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Ig.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var r=t.fillStyle;"string"==typeof r&&t.currentFillStyle==r||(void 0!==r&&this.instructions.push(e.call(this,t)),t.currentFillStyle=r)},e.prototype.updateStrokeStyle=function(t,e){var r=t.strokeStyle,n=t.lineCap,i=t.lineDash,o=t.lineDashOffset,a=t.lineJoin,s=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=r||t.currentLineCap!=n||i!=t.currentLineDash&&!b(t.currentLineDash,i)||t.currentLineDashOffset!=o||t.currentLineJoin!=a||t.currentLineWidth!=s||t.currentMiterLimit!=l)&&(void 0!==r&&e.call(this,t),t.currentStrokeStyle=r,t.currentLineCap=n,t.currentLineDash=i,t.currentLineDashOffset=o,t.currentLineJoin=a,t.currentLineWidth=s,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Ig.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=$t(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;Ht(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(ku),Fg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ag=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.hitDetectionImage_=null,o.image_=null,o.imagePixelRatio_=void 0,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o.declutterImageWithText_=void 0,o}return Fg(e,t),e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Ig.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Ig.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Ig.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Ig.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var r=t.getAnchor(),n=t.getSize(),i=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),a=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=r[0],this.anchorY_=r[1],this.hitDetectionImage_=i,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=a[0],this.originY_=a[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0],this.declutterImageWithText_=e},e}(Mg),kg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jg=function(t){function e(e,r,n,i){return t.call(this,e,r,n,i)||this}return kg(e,t),e.prototype.drawFlatCoordinates_=function(t,e,r,n){var i=this.coordinates.length,o=this.appendFlatLineCoordinates(t,e,r,n,!1,!1),a=[Ig.MOVE_TO_LINE_TO,i,o];return this.instructions.push(a),this.hitDetectionInstructions.push(a),r},e.prototype.drawLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Pg);var o=t.getFlatCoordinates(),a=t.getStride();this.drawFlatCoordinates_(o,0,o.length,a),this.hitDetectionInstructions.push(Og),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Pg);for(var o=t.getEnds(),a=t.getFlatCoordinates(),s=t.getStride(),l=0,u=0,c=o.length;ut&&(m>y&&(y=m,d=v,g=o),m=0,v=o-i)),a=s,c=p,h=f),l=_,u=b}return(m+=s)>y?[v,o]:[d,g]}var zg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ug={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Bg=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o.declutterImageWithText_=void 0,o}return zg(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var r=this.textFillState_,n=this.textStrokeState_,i=this.textState_;if(""!==this.text_&&i&&(r||n)){var o=this.coordinates,a=o.length,s=t.getType(),l=null,u=t.getStride();if(i.placement!==Ep||s!=bt.LINE_STRING&&s!=bt.MULTI_LINE_STRING&&s!=bt.POLYGON&&s!=bt.MULTI_POLYGON){var c=i.overflow?null:[];switch(s){case bt.POINT:case bt.MULTI_POINT:l=t.getFlatCoordinates();break;case bt.LINE_STRING:l=t.getFlatMidpoint();break;case bt.CIRCLE:l=t.getCenter();break;case bt.MULTI_LINE_STRING:l=t.getFlatMidpoints(),u=2;break;case bt.POLYGON:l=t.getFlatInteriorPoint(),i.overflow||c.push(l[2]/this.resolution),u=3;break;case bt.MULTI_POLYGON:var h=t.getFlatInteriorPoints();l=[];for(x=0,w=h.length;xP[2]}else T=b>C;var R,I=Math.PI,L=[],M=w+n===e;if(y=0,m=S,p=t[e=w],f=t[e+1],M){v();var F=Math.atan2(f-g,p-d);T&&(F+=F>0?-I:I);var A=(C+b)/2,k=(O+x)/2;return L[0]=[A,k,(E-o)/2,F,i],L}for(var j=0,N=i.length;j0?-I:I),void 0!==R){var G=D-R;if(G+=G>I?-2*I:G<-I?2*I:0,Math.abs(G)>a)return null}R=D;for(var z=j,U=0;jt?t-l:i,b=o+u>e?e-u:o,x=f[3]+_*h[0]+f[1],w=f[0]+b*h[1]+f[2],S=m-f[3],E=v-f[0];return(d||0!==c)&&(Zg[0]=S,$g[0]=S,Zg[1]=E,Kg[1]=E,Kg[0]=S+x,Hg[0]=Kg[0],Hg[1]=E+w,$g[1]=Hg[1]),0!==c?(It(y=kt([1,0,0,1,0,0],r,n,1,1,c,-r,-n),Zg),It(y,Kg),It(y,Hg),It(y,$g),ie(Math.min(Zg[0],Kg[0],Hg[0],$g[0]),Math.min(Zg[1],Kg[1],Hg[1],$g[1]),Math.max(Zg[0],Kg[0],Hg[0],$g[0]),Math.max(Zg[1],Kg[1],Hg[1],$g[1]),Xg)):ie(Math.min(S,S+x),Math.min(E,E+w),Math.max(S,S+x),Math.max(E,E+w),Xg),p&&(m=Math.round(m),v=Math.round(v)),{drawImageX:m,drawImageY:v,drawImageW:_,drawImageH:b,originX:l,originY:u,declutterBox:{minX:Xg[0],minY:Xg[1],maxX:Xg[2],maxY:Xg[3],value:g},canvasTransform:y,scale:h}},t.prototype.replayImageOrLabel_=function(t,e,r,n,i,o,a){var s=!(!o&&!a),l=n.declutterBox,u=t.canvas,c=a?a[2]*n.scale[0]/2:0;return l.minX-c<=u.width/e&&l.maxX+c>=0&&l.minY-c<=u.height/e&&l.maxY+c>=0&&(s&&this.replayTextBackground_(t,Zg,Kg,Hg,$g,o,a),Oa(t,n.canvasTransform,i,r,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=It(this.renderedTransform_,[0,0]),r=512*this.pixelRatio;t.save(),t.translate(e[0]%r,e[1]%r),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.drawLabelWithPointPlacement_=function(t,e,r,n){var i=this.textStates[e],o=this.createLabel(t,e,n,r),a=this.strokeStates[r],s=this.pixelRatio,l=ty(t,i.textAlign||"center"),u=Ug[i.textBaseline||"middle"],c=a&&a.lineWidth?a.lineWidth:0;return{label:o,anchorX:l*(o.width/s-2*i.scale[0])+2*(.5-l)*c,anchorY:u*o.height/s+2*(.5-u)*c}},t.prototype.execute_=function(t,e,r,n,i,o,a,s){var l;this.pixelCoordinates_&&b(r,this.renderedTransform_)?l=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),l=ln(this.coordinates,0,this.coordinates.length,2,r,this.pixelCoordinates_),Rt(this.renderedTransform_,r));for(var u,c,h,p,f,d,g,y,m,v,_,x,w,S,E,T,C=0,O=n.length,P=0,R=0,I=0,L=null,M=null,F=this.coordinateCache_,A=this.viewRotation_,k=Math.round(1e12*Math.atan2(-r[1],r[0]))/1e12,j={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:A},N=this.instructions!=n||this.overlaps?0:200;CN&&(this.fill_(t),R=0),I>N&&(t.stroke(),I=0),R||I||(t.beginPath(),p=NaN,f=NaN),++C;break;case Ig.CIRCLE:var G=l[P=D[1]],z=l[P+1],U=l[P+2]-G,B=l[P+3]-z,V=Math.sqrt(U*U+B*B);t.moveTo(G+V,z),t.arc(G,z,V,0,2*Math.PI,!0),++C;break;case Ig.CLOSE_PATH:t.closePath(),++C;break;case Ig.CUSTOM:P=D[1],u=D[2];var Y=D[3],W=D[4],q=6==D.length?D[5]:void 0;j.geometry=Y,j.feature=w,C in F||(F[C]=[]);var X=F[C];q?q(l,P,u,2,X):(X[0]=l[P],X[1]=l[P+1],X.length=2),W(X,j),++C;break;case Ig.DRAW_IMAGE:P=D[1],u=D[2],y=D[3],c=D[4],h=D[5];var Z=D[6],K=D[7],H=D[8],$=D[9],J=D[10],Q=D[11],tt=D[12],et=D[13],rt=D[14];if(!y&&D.length>=19){m=D[18],v=D[19],_=D[20],x=D[21];var nt=this.drawLabelWithPointPlacement_(m,v,_,x);y=nt.label,D[3]=y;var it=D[22];c=(nt.anchorX-it)*this.pixelRatio,D[4]=c;var ot=D[23];h=(nt.anchorY-ot)*this.pixelRatio,D[5]=h,Z=y.height,D[6]=Z,et=y.width,D[13]=et}var at=void 0;D.length>24&&(at=D[24]);var st=void 0,lt=void 0,ut=void 0;D.length>16?(st=D[15],lt=D[16],ut=D[17]):(st=fa,lt=!1,ut=!1),J&&k?Q+=A:J||k||(Q-=A);for(var ct=0;P0){if(!o||h!==zu&&h!==Vu||-1!==o.indexOf(t)){var u=(p[s]-3)/4,f=n-u%a,d=n-(u/a|0),g=i(t,e,f*f+d*d);if(g)return g}c.clearRect(0,0,a,a);break}}var g,y,m,v,_,b=Object.keys(this.executorsByZIndex_).map(Number);for(b.sort(d),g=b.length-1;g>=0;--g){var x=b[g].toString();for(m=this.executorsByZIndex_[x],y=ry.length-1;y>=0;--y)if(void 0!==(v=m[h=ry[y]])&&(_=v.executeHitDetection(c,s,r,f,u)))return _}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var r=e[0],n=e[1],i=e[2],o=e[3],a=[r,n,r,o,i,o,i,n];return ln(a,0,8,2,t,a),a},t.prototype.isEmpty=function(){return I(this.executorsByZIndex_)},t.prototype.execute=function(t,e,r,n,i,o,a){var s=Object.keys(this.executorsByZIndex_).map(Number);s.sort(d),this.maxExtent_&&(t.save(),this.clip(t,r));var l,u,c,h,p,f,g=o||ry;for(a&&s.reverse(),l=0,u=s.length;lr)break;var s=n[a];s||(s=[],n[a]=s),s.push(4*((t+i)*e+(t+o))+3),i>0&&s.push(4*((t-i)*e+(t+o))+3),o>0&&(s.push(4*((t+i)*e+(t-o))+3),i>0&&s.push(4*((t-i)*e+(t-o))+3))}for(var l=[],u=(i=0,n.length);i0&&(a.width=0),this.container;var u=Math.round(t.size[0]*r),c=Math.round(t.size[1]*r);a.width!=u||a.height!=c?(a.width=u,a.height=c,a.style.transform!==i&&(a.style.transform=i)):this.containerReused||o.clearRect(0,0,u,c),this.preRender(o,t);var h=t.viewState,p=h.projection,f=!1;if(n.extent&&this.clipping){var d=on(n.extent,p);(f=!te(d,t.extent)&&Re(d,t.extent))&&this.clipUnrotated(o,t,d)}this.renderWorlds(s,t),f&&o.restore(),this.postRender(o,t);var g=n.opacity,y=this.container;return g!==parseFloat(y.style.opacity)&&(y.style.opacity=1===g?"":String(g)),this.renderedRotation_!==h.rotation&&(this.renderedRotation_=h.rotation,this.hitDetectionImageData_=null),this.container},e.prototype.getFeatures=function(t){return new Promise(function(e){if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){var r=[this.context.canvas.width,this.context.canvas.height];It(this.pixelTransform,r);var n=this.renderedCenter_,i=this.renderedResolution_,o=this.renderedRotation_,a=this.renderedProjection_,s=this.renderedExtent_,l=this.getLayer(),u=[],c=r[0]/2,h=r[1]/2;u.push(this.getRenderTransform(n,i,o,.5,c,h,0).slice());var p=l.getSource(),f=a.getExtent();if(p.getWrapX()&&a.canWrapX()&&!te(f,s)){for(var d=s[0],g=Pe(f),y=0,m=void 0;df[2];)m=g*++y,u.push(this.getRenderTransform(n,i,o,.5,c,h,m).slice()),d-=g}this.hitDetectionImageData_=sy(r,u,this.renderedFeatures_,l.getStyleFunction(),s,i,o)}e(ly(t,this.renderedFeatures_,this.hitDetectionImageData_))}.bind(this))},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){var a=this;if(this.replayGroup_){var s,l=e.viewState.resolution,u=e.viewState.rotation,c=this.getLayer(),h={},p=function(t,e,r){var a=o(t),s=h[a];if(s){if(!0!==s&&rv[0]&&x[2]>v[2]&&m.push([x[0]-_,x[1],x[2]-_,x[3]])}if(!this.dirty_&&this.renderedResolution_==c&&this.renderedRevision_==p&&this.renderedRenderOrder_==d&&te(this.renderedExtent_,y))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var w,S=new Yg(Xu(c,h),y,c,h);this.getLayer().getDeclutter()&&(w=new Yg(Xu(c,h),y,c,h));var E,T=tn();if(T){for(var C=0,O=m.length;C0)e([]);else{var m=Ce(h.getTileCoordExtent(n.wrappedTileCoord)),v=[(p[0]-m[0])/c,(m[1]-p[1])/c],_=n.getSourceTiles().reduce((function(t,e){return t.concat(e.getFeatures())}),[]),b=n.hitDetectionImageData[a];if(!b&&!this.animatingOrInteracting_){var x=Is(h.getTileSize(h.getZForResolution(c))),w=[x[0]/2,x[1]/2],S=this.renderedRotation_;b=sy(x,[this.getRenderTransform(h.getTileCoordCenter(n.wrappedTileCoord),c,0,.5,w[0],w[1],0)],_,i.getStyleFunction(),h.getTileCoordExtent(n.wrappedTileCoord),n.getReplayState(i).renderedResolution,S),n.hitDetectionImageData[a]=b}e(ly(v,_,b))}}.bind(this))},e.prototype.handleFontsChanged=function(){P(this.renderTileImageQueue_);var t=this.getLayer();t.getVisible()&&void 0!==this.renderedLayerRevision_&&t.changed()},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.renderDeclutter=function(t){for(var e=t.viewHints,r=!(e[ns]||e[is]),n=this.renderedTiles,i=0,a=n.length;i=0;--u)l[u].execute(this.context,1,this.getTileRenderTransform(s,t),t.viewState.rotation,r,void 0,t.declutterTree)}},e.prototype.getTileRenderTransform=function(t,e){var r=e.pixelRatio,n=e.viewState,i=n.center,o=n.resolution,a=n.rotation,s=e.size,l=Math.round(s[0]*r),u=Math.round(s[1]*r),c=this.getLayer().getSource().getTileGridForProjection(e.viewState.projection),h=t.tileCoord,p=c.getTileCoordExtent(t.wrappedTileCoord),f=c.getTileCoordExtent(h,this.tmpExtent)[0]-p[0];return Ot(Mt(this.inversePixelTransform.slice(),1/r,1/r),this.getRenderTransform(i,o,a,r,l,u,f))},e.prototype.renderFrame=function(e,r){var n=e.viewHints,i=!(n[ns]||n[is]);this.renderQueuedTileImages_(i,e),t.prototype.renderFrame.call(this,e,r),this.renderedPixelToCoordinateTransform_=e.pixelToCoordinateTransform.slice(),this.renderedRotation_=e.viewState.rotation;var a=this.getLayer(),s=a.getRenderMode();if(s===fy)return this.container;var l=a.getSource(),u=e.usedTiles[o(l)];for(var c in this.renderTileImageQueue_)u&&c in u||delete this.renderTileImageQueue_[c];for(var h=this.context,p=vy[s],f=e.viewState.rotation,d=this.renderedTiles,g=[],y=[],m=d.length-1;m>=0;--m)for(var v=d[m],_=this.getTileRenderTransform(v,e),b=v.executorGroups[o(a)],x=!1,w=0,S=b.length;w8){e.animate=!0;break}var n=this.renderTileImageQueue_[r];delete this.renderTileImageQueue_[r],this.renderTileImage_(n,e)}},e.prototype.renderFeature=function(t,e,r,n,i){if(!r)return!1;var o=!1;if(Array.isArray(r))for(var a=0,s=r.length;a1?a:2,x=o||new Array(b);for(g=0;g>1;i0&&y.length>0;)o=y.pop(),c=d.pop(),p=g.pop(),(l=o.toString())in m||(u.push(p[0],p[1]),m[l]=!0),a=y.pop(),h=d.pop(),f=g.pop(),ze((i=e(n=t(s=(o+a)/2)))[0],i[1],p[0],p[1],f[0],f[1])this.featurePool_.length;)s=new gt,this.featurePool_.push(s);var u=n.getFeaturesCollection();u.clear();var c,h,p=0;for(c=0,h=this.meridians_.length;cMath.PI/2);for(var y=Ku(t),m=h;m<=p;++m){var v=this.meridians_.length+this.parallels_.length,_=void 0,b=void 0,x=void 0,w=void 0;if(this.meridiansLabels_)for(b=0,x=this.meridiansLabels_.length;b=s?(t[0]=a[0],t[2]=a[2]):o=!0);var l=[Ne(e[0],this.minX_,this.maxX_),Ne(e[1],this.minY_,this.maxY_)],u=this.toLonLatTransform_(l);isNaN(u[1])&&(u[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_);var c,h,p,f,d=Ne(u[0],this.minLon_,this.maxLon_),g=Ne(u[1],this.minLat_,this.maxLat_),y=this.maxLines_,m=t;o||(m=[Ne(t[0],this.minX_,this.maxX_),Ne(t[1],this.minY_,this.maxY_),Ne(t[2],this.minX_,this.maxX_),Ne(t[3],this.minY_,this.maxY_)]);var v=Ae(m,this.toLonLatTransform_,void 0,8),_=v[3],b=v[2],x=v[1],w=v[0];if(o||(Qt(m,this.bottomLeft_)&&(w=this.minLon_,x=this.minLat_),Qt(m,this.bottomRight_)&&(b=this.maxLon_,x=this.minLat_),Qt(m,this.topLeft_)&&(w=this.minLon_,_=this.maxLat_),Qt(m,this.topRight_)&&(b=this.maxLon_,_=this.maxLat_),_=Ne(_,g,this.maxLat_),b=Ne(b,d,this.maxLon_),x=Ne(x,this.minLat_,g),w=Ne(w,this.minLon_,d)),f=Ne(d=Math.floor(d/i)*i,this.minLon_,this.maxLon_),h=this.addMeridian_(f,x,_,n,t,0),c=0,o)for(;(f-=i)>=w&&c++n[o]&&(i=o,o=1);var a=Math.max(e[1],n[i]),s=Math.min(e[3],n[o]),l=Ne(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,a,s),u=[n[i-1]+(n[o-1]-n[i-1])*(l-n[i])/(n[o]-n[i]),l],c=this.meridiansLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getMeridians=function(){return this.meridians_},e.prototype.getParallel_=function(t,e,r,n,i){var o=Fy(t,e,r,this.projection_,n),a=this.parallels_[i];return a?(a.setFlatCoordinates(yt,o),a.changed()):a=new Py(o,yt),a},e.prototype.getParallelPoint_=function(t,e,r){var n=t.getFlatCoordinates(),i=0,o=n.length-2;n[i]>n[o]&&(i=o,o=0);var a=Math.max(e[0],n[i]),s=Math.min(e[2],n[o]),l=Ne(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,a,s),u=[l,n[i+1]+(n[o+1]-n[i+1])*(l-n[i])/(n[o]-n[i])],c=this.parallelsLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getParallels=function(){return this.parallels_},e.prototype.updateProjectionInfo_=function(t){var e=Gr("EPSG:4326"),r=t.getWorldExtent();this.maxLat_=r[3],this.maxLon_=r[2],this.minLat_=r[1],this.minLon_=r[0];var n=Kr(t,e);if(this.minLon_=Math.abs(this.minLat_)?this.maxLat_:this.minLat_),this.projection_=t},e}(Iy),Dy=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gy="blur",zy="gradient",Uy="radius",By=["#00f","#0ff","#0f0","#ff0","#f00"];var Vy=function(t){function e(e){var r=this,n=e||{},i=O({},n);delete i.gradient,delete i.radius,delete i.blur,delete i.weight,(r=t.call(this,i)||this).gradient_=null,r.addEventListener(it(zy),r.handleGradientChanged_),r.setGradient(n.gradient?n.gradient:By),r.setBlur(void 0!==n.blur?n.blur:15),r.setRadius(void 0!==n.radius?n.radius:8);var o=n.weight?n.weight:"weight";return r.weightFunction_="string"==typeof o?function(t){return t.get(o)}:o,r.setRenderOrder(null),r}return Dy(e,t),e.prototype.getBlur=function(){return this.get(Gy)},e.prototype.getGradient=function(){return this.get(zy)},e.prototype.getRadius=function(){return this.get(Uy)},e.prototype.handleGradientChanged_=function(){this.gradient_=function(t){for(var e=uo(1,256),r=e.createLinearGradient(0,0,1,256),n=1/(t.length-1),i=0,o=t.length;i>3)?r.readString():2===t?r.readFloat():3===t?r.readDouble():4===t?r.readVarint64():5===t?r.readVarint():6===t?r.readSVarint():7===t?r.readBoolean():null;e.values.push(n)}}function im(t,e,r){if(1==t)e.id=r.readVarint();else if(2==t)for(var n=r.readVarint()+r.pos;r.pos>3}a--,1===o||2===o?(s+=t.readSVarint(),l+=t.readSVarint(),1===o&&u>c&&(n.push(u),c=u),r.push(s,l),u+=2):7===o?u>c&&(r.push(r[c],r[c+1]),u+=2):pt(!1,59)}u>c&&(n.push(u),c=u)},e.prototype.createFeature_=function(t,e,r){var n,i=e.type;if(0===i)return null;var o,a=e.properties;this.idProperty_?(o=a[this.idProperty_],delete a[this.idProperty_]):o=e.id,a[this.layerName_]=e.layer.name;var s=[],l=[];this.readRawGeometry_(t,e,s,l);var u=function(t,e){var r;1===t?r=1===e?bt.POINT:bt.MULTI_POINT:2===t?r=1===e?bt.LINE_STRING:bt.MULTI_LINE_STRING:3===t&&(r=bt.POLYGON);return r}(i,l.length);if(this.featureClass_===Cy)(n=new this.featureClass_(u,s,l,a,o)).transform(r.dataProjection);else{var c=void 0;if(u==bt.POLYGON){for(var h=[],p=0,f=0,d=0,g=l.length;d1?new Jy(s,yt,h):new fi(s,yt,l)}else c=u===bt.POINT?new qn(s,yt):u===bt.LINE_STRING?new Py(s,yt):u===bt.POLYGON?new fi(s,yt,l):u===bt.MULTI_POINT?new Hy(s,yt):u===bt.MULTI_LINE_STRING?new Zy(s,yt,l):null;n=new(0,this.featureClass_),this.geometryName_&&n.setGeometryName(this.geometryName_);var m=Wy(c,!1,r);n.setGeometry(m),n.setId(o),n.setProperties(a,!0)}return n},e.prototype.getType=function(){return Cu},e.prototype.readFeatures=function(t,e){var r=this.layers_,n=this.adaptOptions(e),i=Gr(n.dataProjection);i.setWorldExtent(n.extent),n.dataProjection=i;var o=new tm.a(t),a=o.readFields(rm,{}),s=[];for(var l in a)if(!r||-1!=r.indexOf(l)){var u=a[l],c=u?[0,0,u.extent,u.extent]:null;i.setExtent(c);for(var h=0,p=u.length;h=.05){for(var r="",n=t.split("\n"),i=ym.slice(0,Math.round(e/.1)),o=0,a=n.length;o0&&(r+="\n"),r+=n[o].split("").join(i);return r}return t}function vm(){return gm||(gm=dm(1,1).getContext("2d")),gm}function _m(t,e){return vm().measureText(t).width+(t.length-1)*e}var bm={};ga&&Z(ga,k,(function(){bm={}}));var xm,wm,Sm=hm.e.isFunction,Em=hm.e.convertFunction,Tm=hm.c.isExpression,Cm=hm.c.createPropertyExpression,Om={Point:1,MultiPoint:1,LineString:2,MultiLineString:2,Polygon:3,MultiPolygon:3},Pm={center:[.5,.5],left:[0,.5],right:[1,.5],top:[.5,0],bottom:[.5,1],"top-left":[0,0],"top-right":[1,0],"bottom-left":[0,1],"bottom-right":[1,1]},Rm={},Im={zoom:0},Lm={};function Mm(t,e,r,n,i){var o=t.id;Lm[o]||(Lm[o]={});var a=Lm[o];if(!a[r]){var s=(t[e]||Rm)[r],l=hm.f[e+"_"+t.type][r];void 0===s&&(s=l.default);var u=Tm(s);if(!u&&Sm(s)&&(s=Em(s,l),u=!0),u){var c=function(t,e){var r=Cm(t,e);if("error"===r.result)throw new Error(r.value.map((function(t){return t.key+": "+t.message})).join(", "));return r.value}(s,l);a[r]=c.evaluate.bind(c)}else"color"==l.type&&(s=hm.a.parse(s)),a[r]=function(){return s}}return Im.zoom=n,a[r](Im,i)}var Fm={};function Am(t,e){if(t){if(0===t.a||0===e)return;var r=t.a;return e=void 0===e?1:e,"rgba("+Math.round(255*t.r/r)+","+Math.round(255*t.g/r)+","+Math.round(255*t.b/r)+","+r*e+")"}return t}var km=/^([^]*)\{(.*)\}([^]*)$/;function jm(t,e){var r;do{if(r=t.match(km)){var n=e[r[2]]||"";t=r[1]+n+r[3]}}while(r);return t}var Nm=!1;var Dm=function(t,e,r,n,i,o,a){if(void 0===n&&(n=fm),"string"==typeof e&&(e=JSON.parse(e)),8!=e.version)throw new Error("glStyle version 8 required.");var s,l;if(o)if("undefined"!=typeof Image){var u=new Image;u.crossOrigin="anonymous",u.onload=function(){s=u,l=[u.width,u.height],t.changed(),u.onload=null},u.src=o}else if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope){var c=self;c.postMessage({action:"loadImage",src:o}),c.addEventListener("message",(function(t){"imageLoaded"===t.data.action&&t.data.src===o&&(s=t.data.image,l=[s.width,s.height])}))}for(var h,p=Object(hm.b)(e.layers),f={},d=[],g=0,y=p.length;g=y.maxzoom)return"continue";var b=y.filter;if(!b||function(t,e,r,n){return t in Fm||(Fm[t]=Object(hm.d)(e).filter),Im.zoom=n,Fm[t](Im,r)}(m,b,p,u)){c=y;var x=void 0,w=void 0,P=void 0,R=void 0,I=void 0,L=void 0,M=g.index;if(3==h&&("fill"==y.type||"fill-extrusion"==y.type))if(w=Mm(y,"paint",y.type+"-opacity",u,p),y.type+"-pattern"in _){var F=Mm(y,"paint",y.type+"-pattern",u,p);if(F){var A="string"==typeof F?jm(F,r):F.toString();if(s&&i&&i[A]){++d,(L=O[d])&&L.getFill()&&!L.getStroke()&&!L.getText()||(L=O[d]=new wp({fill:new ep})),P=L.getFill(),L.setZIndex(M);var k=C[ut=A+"."+w];if(!k)(pt=(ht=dm((ct=i[A]).width,ct.height)).getContext("2d")).globalAlpha=w,pt.drawImage(s,ct.x,ct.y,ct.width,ct.height,0,0,ct.width,ct.height),k=pt.createPattern(ht,"repeat"),C[ut]=k;P.setColor(k)}}}else(x=Am(Mm(y,"paint",y.type+"-color",u,p),w))&&(y.type+"-outline-color"in _&&(I=Am(Mm(y,"paint",y.type+"-outline-color",u,p),w)),I||(I=x),++d,(L=O[d])&&L.getFill()&&L.getStroke()&&!L.getText()||(L=O[d]=new wp({fill:new ep,stroke:new gp})),(P=L.getFill()).setColor(x),(R=L.getStroke()).setColor(I),R.setWidth(1),L.setZIndex(M));if(1!=h&&"line"==y.type){x=!("line-pattern"in _)&&"line-color"in _?Am(Mm(y,"paint","line-color",u,p),Mm(y,"paint","line-opacity",u,p)):void 0;var j=Mm(y,"paint","line-width",u,p);x&&j>0&&(++d,(L=O[d])&&L.getStroke()&&!L.getFill()&&!L.getText()||(L=O[d]=new wp({stroke:new gp})),(R=L.getStroke()).setLineCap(Mm(y,"layout","line-cap",u,p)),R.setLineJoin(Mm(y,"layout","line-join",u,p)),R.setMiterLimit(Mm(y,"layout","line-miter-limit",u,p)),R.setColor(x),R.setWidth(j),R.setLineDash(_["line-dasharray"]?Mm(y,"paint","line-dasharray",u,p).map((function(t){return t*j})):null),L.setZIndex(M))}var N=!1,D=null,G=0,z=void 0,U=void 0,B=void 0;if((1==h||2==h)&&"icon-image"in v){var V=Mm(y,"layout","icon-image",u,p);if(V){z="string"==typeof V?jm(V,r):V.toString();var Y=void 0;if(s&&i&&i[z]){var W=Mm(y,"layout","icon-rotation-alignment",u,p);if(2==h){var q=t.getGeometry();if(q.getFlatMidpoint||q.getFlatMidpoints){var X=q.getExtent();if(Math.sqrt(Math.max(Math.pow((X[2]-X[0])/e,2),Math.pow((X[3]-X[1])/e,2)))>150){var Z="MultiLineString"===q.getType()?q.getFlatMidpoints():q.getFlatMidpoint();if(wm||(wm=new Cy("Point",xm=[NaN,NaN],[],{},null)),Y=wm,xm[0]=Z[0],xm[1]=Z[1],"line"===(Mt=Mm(y,"layout","symbol-placement",u,p))&&"map"===W)for(var K=q.getStride(),H=q.getFlatCoordinates(),$=0,J=H.length-K;$=nt&&Z[0]<=ot&&Z[1]>=it&&Z[1]<=at){G=Math.atan2(tt-rt,et-Q);break}}}}}if(2!==h||Y){++d,(L=O[d])&&L.getImage()&&!L.getFill()&&!L.getStroke()||(L=O[d]=new wp),L.setGeometry(Y);var st=Mm(y,"layout","icon-size",u,p),lt=void 0!==_["icon-color"]?Mm(y,"paint","icon-color",u,p):null,ut=z+"."+st;if(null!==lt&&(ut+="."+lt),!(U=T[ut])){var ct=i[z];if(null!==lt){var ht,pt;(pt=(ht=dm(ct.width,ct.height)).getContext("2d")).drawImage(s,ct.x,ct.y,ct.width,ct.height,0,0,ct.width,ct.height);for(var ft=pt.getImageData(0,0,ht.width,ht.height),dt=0,gt=ft.data.length;dt0?new gp({width:bt,color:vt}):void 0,fill:_t?new ep({color:_t}):void 0})),L.setImage(U),D=L.getText(),L.setText(void 0),L.setGeometry(void 0),L.setZIndex(M),N=!0}var wt=void 0;if("text-field"in v)wt=jm(Mm(y,"layout","text-field",u,p).toString(),r).trim(),w=Mm(y,"paint","text-opacity",u,p);if(wt&&w&&!B){N||(++d,(L=O[d])&&L.getText()&&!L.getFill()&&!L.getStroke()||(L=O[d]=new wp),L.setImage(void 0),L.setGeometry(void 0)),L.getText()||L.setText(D||new Tp({padding:[2,2,2,2]})),D=L.getText();var St=Math.round(Mm(y,"layout","text-size",u,p)),Et=Mm(y,"layout","text-font",u,p),Tt=Mm(y,"layout","text-line-height",u,p),Ct=cm()(a?a(Et):Et,St,Tt),Ot=v["text-transform"];"uppercase"==Ot?wt=wt.toUpperCase():"lowercase"==Ot&&(wt=wt.toLowerCase());var Pt=Mm(y,"layout","text-max-width",u,p),Rt=Mm(y,"layout","text-letter-spacing",u,p),It=2==h?mm(wt,Rt):function t(e,r,n,i){if(-1!==e.indexOf("\n")){for(var o=e.split("\n"),a=[],s=0,l=o.length;s1){var p=vm();p.font=r;var f=p.measureText("M").width*n,d="";for(a=[],s=0,l=h.length;s1;++s){var m=a[s];if(_m(m,i)<.35*f){var v=s>0?_m(a[s-1],i):1/0,_=s.7*f&&_m(x,i)<.6*f){var w=b.split(" "),S=w.pop();_m(S,i)<.2*f&&(a[s]=w.join(" "),a[s+1]=S+" "+x),l-=1}}c=a.join("\n")}else c=e;c=mm(c,i),bm[u]=c}return c}(wt,Ct,Pt,Rt);D.setText(It),D.setFont(Ct),D.setRotation(pm(Mm(y,"layout","text-rotate",u,p)));var Lt=Mm(y,"layout","text-anchor",u,p),Mt=N||1==h?"point":Mm(y,"layout","symbol-placement",u,p);D.setPlacement(Mt);var Ft=Mm(y,"paint","text-halo-width",u,p),At=Mm(y,"layout","text-offset",u,p),kt=Mm(y,"paint","text-translate",u,p),jt=0,Nt=0;if("point"==Mt){var Dt="center";-1!==Lt.indexOf("left")?(Dt="left",Nt=Ft):-1!==Lt.indexOf("right")&&(Dt="right",Nt=-Ft),D.setTextAlign(Dt);var Gt=Mm(y,"layout","text-rotation-alignment",u,p);D.setRotateWithView("map"==Gt)}else D.setMaxAngle(pm(Mm(y,"layout","text-max-angle",u,p))*wt.length/It.length),D.setTextAlign(),D.setRotateWithView(!1);var zt="middle";0==Lt.indexOf("bottom")?(zt="bottom",jt=-Ft-.5*(Tt-1)*St):0==Lt.indexOf("top")&&(zt="top",jt=Ft+.5*(Tt-1)*St),D.setTextBaseline(zt),D.setOffsetX(At[0]*St+Nt+kt[0]),D.setOffsetY(At[1]*St+jt+kt[1]),E.setColor(Am(Mm(y,"paint","text-color",u,p),w)),D.setFill(E);var Ut=Am(Mm(y,"paint","text-halo-color",u,p),w);if(Ut){S.setColor(Ut),Ft*=2;var Bt=.5*St;S.setWidth(Ft<=Bt?Ft:Bt),D.setStroke(S)}else D.setStroke(void 0);var Vt=Mm(y,"layout","text-padding",u,p),Yt=D.getPadding();Vt!==Yt[0]&&(Yt[0]=Yt[1]=Yt[2]=Yt[3]=Vt),L.setZIndex(M)}}},y=0,m=o.length;y-1?(O.length=d+1,Nm&&("function"==typeof t.set?t.set("mapbox-layer",c):t.getProperties()["mapbox-layer"]=c),O):void 0}};return t.setStyle(P),t.set("mapbox-source",h),t.set("mapbox-layers",d),P},Gm=r(6),zm=r.n(Gm),Um=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Bm(t){for(var e=[],r=0,n=t.length;r2?n[2]:""):t+r}function sv(t,e,r,n,i){return new Promise((function(o,a){if("object"!=typeof e&&(e=JSON.parse(e)),8!=e.version)return a(new Error("glStyle version 8 required."));if(!(t instanceof Iy||t instanceof lm))return a(new Error("Can only apply to VectorLayer or VectorTileLayer"));var s,l,u;function c(){u||e.sprite&&!s?u?(t.setStyle(u),o()):a(new Error("Something went wrong trying to apply style.")):(u=Dm(t,e,r,i,s,l,nv),t.getStyle()?o():a(new Error("Nothing to show for source ["+r+"]")))}if(e.sprite){var h=.5==(window.devicePixelRatio>=1.5?.5:1)?"@2x":"",p=av(e.sprite,n,h+".json");fetch(p,{credentials:"same-origin"}).then((function(t){return t.ok||""===h?t:(p=av(e.sprite,n,".json"),fetch(p,{credentials:"same-origin"}))})).then((function(t){if(t.ok)return t.json();a(new Error("Problem fetching sprite from "+p+": "+t.statusText))})).then((function(t){if(void 0===t)return a(new Error("No sprites found."));s=t,l=av(e.sprite,n,h+".png"),c()})).catch((function(t){a(new Error("Sprites cannot be loaded: "+p+": "+t.message))}))}else c()}))}new $m;var lv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function uv(t){return 0!==t.indexOf("mapbox://")?"":t.slice("mapbox://".length)}function cv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("sprites/"))throw new Error("unexpected sprites url: "+t);return"https://api.mapbox.com/styles/v1/"+r.slice("sprites/".length)+"/sprite?access_token="+e}function hv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("fonts/"))throw new Error("unexpected fonts url: "+t);return"https://api.mapbox.com/fonts/v1/"+r.slice("fonts/".length)+"/0-255.pbf?access_token="+e}function pv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("styles/"))throw new Error("unexpected style url: "+t);return"https://api.mapbox.com/styles/v1/"+r.slice("styles/".length)+"?&access_token="+e}function fv(t,e){var r=uv(t);return r?"https://{a-d}.tiles.mapbox.com/v4/"+r+"/{z}/{x}/{y}.vector.pbf?access_token="+e:t}var dv=function(t){function e(e){var r=t.call(this,A)||this;return r.error=e,r}return lv(e,t),e}(c),gv="vector",yv=function(t){function e(e){var r=this,n=!("declutter"in e)||e.declutter,i=new og({state:Jo,format:new am});return(r=t.call(this,{source:i,declutter:n,className:e.className,opacity:e.opacity,visible:e.visible,zIndex:e.zIndex,minResolution:e.minResolution,maxResolution:e.maxResolution,minZoom:e.minZoom,maxZoom:e.maxZoom,renderOrder:e.renderOrder,renderBuffer:e.renderBuffer,renderMode:e.renderMode,map:e.map,updateWhileAnimating:e.updateWhileAnimating,updateWhileInteracting:e.updateWhileInteracting,preload:e.preload,useInterimTilesOnError:e.useInterimTilesOnError})||this).sourceId=e.source,r.layers=e.layers,r.accessToken=e.accessToken,r.fetchStyle(e.styleUrl),r}return lv(e,t),e.prototype.fetchStyle=function(t){var e=this,r=pv(t,this.accessToken);fetch(r).then((function(t){if(!t.ok)throw new Error("unexpected response when fetching style: "+t.status);return t.json()})).then((function(t){e.onStyleLoad(t)})).catch((function(t){e.handleError(t)}))},e.prototype.onStyleLoad=function(t){var e,r,n=this;if(this.layers){for(var i={},o=0;o0){this.source_&&(this.source_.clear(),this.source_.addFeatures(h)),this.dispatchEvent(new Sv(wv,t,h,o));break}}},e.prototype.registerListeners_=function(){var t=this.getMap();if(t){var e=this.target?this.target:t.getViewport();this.dropListenKeys_=[Z(e,U,this.handleDrop,this),Z(e,G,this.handleStop,this),Z(e,z,this.handleStop,this),Z(e,U,this.handleStop,this)]}},e.prototype.setActive=function(e){!this.getActive()&&e&&this.registerListeners_(),this.getActive()&&!e&&this.unregisterListeners_(),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.unregisterListeners_(),t.prototype.setMap.call(this,e),this.getActive()&&this.registerListeners_()},e.prototype.tryReadFeatures_=function(t,e,r){try{return t.readFeatures(e,r)}catch(t){return null}},e.prototype.unregisterListeners_=function(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(H),this.dropListenKeys_=null)},e.prototype.handleDrop=function(t){for(var e=t.dataTransfer.files,r=0,n=e.length;r1?1:-1;return e.endInteraction(this.duration_,r),this.lastScaleDelta_=0,!1},e.prototype.handleDownEvent=function(t){return!!cl(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))},e}($s),Ov=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Pv=function(t){function e(e,r,n){var i=t.call(this)||this;if(void 0!==n&&void 0===r)i.setFlatCoordinates(n,e);else{var o=r||0;i.setCenterAndRadius(e,o,n)}return i}return Ov(e,t),e.prototype.clone=function(){var t=new e(this.flatCoordinates.slice(),void 0,this.layout);return t.applyProperties(this),t},e.prototype.closestPointXY=function(t,e,r,n){var i=this.flatCoordinates,o=t-i[0],a=e-i[1],s=o*o+a*a;if(s=e[0]||(t[1]<=e[1]&&t[3]>=e[1]||me(t,this.intersectsCoordinate.bind(this)))}return!1},e.prototype.setCenter=function(t){var e=this.stride,r=this.flatCoordinates[e]-this.flatCoordinates[0],n=t.slice();n[e]=n[0]+r;for(var i=1;i=this.dragVertexDelay_?(this.downPx_=e.pixel,this.shouldHandle_=!this.freehand_,r=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0));return this.freehand_&&e.type===Ga.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(e.coordinate),n=!1):this.freehand_&&e.type===Ga.POINTERDOWN?n=!1:r&&this.getPointerCount()<2?(n=e.type===Ga.POINTERMOVE)&&this.freehand_?(this.handlePointerMove_(e),this.shouldHandle_&&e.originalEvent.preventDefault()):("mouse"===e.originalEvent.pointerType||e.type===Ga.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(e):e.type===Ga.DBLCLICK&&(n=!1),t.prototype.handleEvent.call(this,e)&&n},e.prototype.handleDownEvent=function(t){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=t.pixel,this.finishCoordinate_||this.startDrawing_(t.coordinate),!0):this.condition_(t)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout(function(){this.handlePointerMove_(new Da(Ga.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}.bind(this),this.dragVertexDelay_),this.downPx_=t.pixel,!0):(this.lastDragTime_=void 0,!1)},e.prototype.handleUpEvent=function(t){var e=!0;if(0===this.getPointerCount())if(this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0),this.handlePointerMove_(t),this.shouldHandle_){switch(!0){case!this.finishCoordinate_:if(this.startDrawing_(t.coordinate),this.mode_!==Lv)break;case this.freehand_||this.atFinish_(t.pixel)&&this.finishCondition_(t):this.finishDrawing();break;case!this.freehand_:this.addToDrawing_(t.coordinate)}e=!1}else this.freehand_&&this.abortDrawing();return!e&&this.stopClick_&&t.originalEvent.stopPropagation(),e},e.prototype.handlePointerMove_=function(t){if(this.pointerType_=t.originalEvent.pointerType,this.downPx_&&(!this.freehand_&&this.shouldHandle_||this.freehand_&&!this.shouldHandle_)){var e=this.downPx_,r=t.pixel,n=e[0]-r[0],i=e[1]-r[1],o=n*n+i*i;if(this.shouldHandle_=this.freehand_?o>this.squaredClickTolerance_:o<=this.squaredClickTolerance_,!this.shouldHandle_)return}this.finishCoordinate_?this.modifyDrawing_(t.coordinate):this.createOrUpdateSketchPoint_(t)},e.prototype.atFinish_=function(t){var e=!1;if(this.sketchFeature_){var r=!1,n=[this.finishCoordinate_],i=this.mode_;if(i===Lv)e=!0;else if(i===Av)e=2===this.sketchCoords_.length;else if(i===Mv)r=this.sketchCoords_.length>this.minPoints_;else if(i===Fv){var o=this.sketchCoords_;r=o[0].length>this.minPoints_,n=[o[0][0],o[0][o[0].length-2]]}if(r)for(var a=this.getMap(),s=0,l=n.length;s=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),this.geometryFunction_(r,n,i)):o===Fv&&((r=this.sketchCoords_[0]).length>=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),e&&(this.finishCoordinate_=r[0]),this.geometryFunction_(this.sketchCoords_,n,i)),this.updateSketchFeatures_(),e&&this.finishDrawing()},e.prototype.removeLastPoint=function(){if(this.sketchFeature_){var t,e=this.sketchFeature_.getGeometry(),r=this.getMap().getView().getProjection(),n=this.mode_;if(n===Mv||n===Av){if((t=this.sketchCoords_).splice(-2,1),t.length>=2){this.finishCoordinate_=t[t.length-2].slice();var i=this.finishCoordinate_.slice();t[t.length-1]=i,this.sketchPoint_.setGeometry(new qn(i))}this.geometryFunction_(t,e,r),e.getType()===bt.POLYGON&&this.sketchLine_&&this.createOrUpdateCustomSketchLine_(e)}else if(n===Fv){(t=this.sketchCoords_[0]).splice(-2,1);var o=this.sketchLine_.getGeometry();if(t.length>=2){i=t[t.length-2].slice();t[t.length-1]=i,this.sketchPoint_.setGeometry(new qn(i))}o.setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e,r)}1===t.length&&this.abortDrawing(),this.updateSketchFeatures_()}},e.prototype.finishDrawing=function(){var t=this.abortDrawing_();if(t){var e=this.sketchCoords_,r=t.getGeometry(),n=this.getMap().getView().getProjection();this.mode_===Mv?(e.pop(),this.geometryFunction_(e,r,n)):this.mode_===Fv&&(e[0].pop(),this.geometryFunction_(e,r,n),e=r.getCoordinates()),this.type_===bt.MULTI_POINT?t.setGeometry(new Hy([e])):this.type_===bt.MULTI_LINE_STRING?t.setGeometry(new Zy([e])):this.type_===bt.MULTI_POLYGON&&t.setGeometry(new Jy([e])),this.dispatchEvent(new Dv(jv,t)),this.features_&&this.features_.push(t),this.source_&&this.source_.addFeature(t)}},e.prototype.abortDrawing_=function(){this.finishCoordinate_=null;var t=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),t},e.prototype.abortDrawing=function(){var t=this.abortDrawing_();t&&this.dispatchEvent(new Dv(Nv,t))},e.prototype.appendCoordinates=function(t){var e,r=this.mode_,n=!this.sketchFeature_;if(n&&this.startDrawing_(t[0]),r===Mv||r===Av)e=this.sketchCoords_;else{if(r!==Fv)return;e=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]}n&&e.shift(),e.pop();for(var i=0;ih?o[1]:o[0]),a}}return null},e.prototype.handlePointerMove_=function(t){var e=t.pixel,r=t.map,n=this.snapToVertex_(e,r);n||(n=r.getCoordinateFromPixelInternal(e)),this.createOrUpdatePointerFeature_(n)},e.prototype.createOrUpdateExtentFeature_=function(t){var e=this.extentFeature_;return e?t?e.setGeometry(gi(t)):e.setGeometry(void 0):(e=new gt(t?gi(t):{}),this.extentFeature_=e,this.extentOverlay_.getSource().addFeature(e)),e},e.prototype.createOrUpdatePointerFeature_=function(t){var e=this.vertexFeature_;e?e.getGeometry().setCoordinates(t):(e=new gt(new qn(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e));return e},e.prototype.handleEvent=function(e){return!e.originalEvent||!this.condition_(e)||(e.type!=Ga.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(e),t.prototype.handleEvent.call(this,e),!1)},e.prototype.handleDownEvent=function(t){var e=t.pixel,r=t.map,n=this.getExtentInternal(),i=this.snapToVertex_(e,r),o=function(t){var e=null,r=null;return t[0]==n[0]?e=n[2]:t[0]==n[2]&&(e=n[0]),t[1]==n[1]?r=n[3]:t[1]==n[3]&&(r=n[1]),null!==e&&null!==r?[e,r]:null};if(i&&n){var a=i[0]==n[0]||i[0]==n[2]?i[0]:null,s=i[1]==n[1]||i[1]==n[3]?i[1]:null;null!==a&&null!==s?this.pointerHandler_=Yv(o(i)):null!==a?this.pointerHandler_=Wv(o([a,n[1]]),o([a,n[3]])):null!==s&&(this.pointerHandler_=Wv(o([n[0],s]),o([n[2],s])))}else i=r.getCoordinateFromPixelInternal(e),this.setExtent([i[0],i[1],i[0],i[1]]),this.pointerHandler_=Yv(i);return!0},e.prototype.handleDragEvent=function(t){if(this.pointerHandler_){var e=t.coordinate;this.setExtent(this.pointerHandler_(e)),this.createOrUpdatePointerFeature_(e)}},e.prototype.handleUpEvent=function(t){this.pointerHandler_=null;var e=this.getExtentInternal();return e&&0!==ve(e)||this.setExtent(null),!1},e.prototype.setMap=function(e){this.extentOverlay_.setMap(e),this.vertexOverlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getExtent=function(){return nn(this.getExtentInternal(),this.getMap().getView().getProjection())},e.prototype.getExtentInternal=function(){return this.extent_},e.prototype.setExtent=function(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new Bv(this.extent_))},e}($s),Xv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zv=[0,0,0,0],Kv=[],Hv="modifystart",$v="modifyend",Jv=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.features=r,i.mapBrowserEvent=n,i}return Xv(e,t),e}(c);function Qv(t,e){return t.index-e.index}function t_(t,e,r){var n=e.geometry;if(n.getType()===bt.CIRCLE){var i=n;if(1===e.index){var o=tn();o&&(i=i.clone().transform(o,r));var a=Rr(i.getCenter(),rn(t,r)),s=Math.sqrt(a)-i.getRadius();return s*s}}var l=rn(t,r);return Kv[0]=rn(e.segment[0],r),Kv[1]=rn(e.segment[1],r),Lr(l,Kv)}function e_(t,e,r){var n=e.geometry;if(n.getType()===bt.CIRCLE&&1===e.index){var i=n,o=tn();return o&&(i=i.clone().transform(o,r)),en(i.getClosestPoint(rn(t,r)),r)}var a=rn(t,r);return Kv[0]=rn(e.segment[0],r),Kv[1]=rn(e.segment[1],r),en(Sr(a,Kv),r)}var r_=function(t){function e(e){var r,n,i=t.call(this,e)||this;if(i.boundHandleFeatureChange_=i.handleFeatureChange_.bind(i),i.condition_=e.condition?e.condition:hl,i.defaultDeleteCondition_=function(t){return Qs(t)&&al(t)},i.deleteCondition_=e.deleteCondition?e.deleteCondition:i.defaultDeleteCondition_,i.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:nl,i.vertexFeature_=null,i.vertexSegments_=null,i.lastPixel_=[0,0],i.ignoreNextSingleClick_=!1,i.featuresBeingModified_=null,i.rBush_=new Rp,i.pixelTolerance_=void 0!==e.pixelTolerance?e.pixelTolerance:10,i.snappedToVertex_=!1,i.changingFeature_=!1,i.dragSegments_=[],i.overlay_=new Iy({source:new hf({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:(r=bp(),function(t,e){return r[bt.POINT]}),updateWhileAnimating:!0,updateWhileInteracting:!0}),i.SEGMENT_WRITERS_={Point:i.writePointGeometry_.bind(i),LineString:i.writeLineStringGeometry_.bind(i),LinearRing:i.writeLineStringGeometry_.bind(i),Polygon:i.writePolygonGeometry_.bind(i),MultiPoint:i.writeMultiPointGeometry_.bind(i),MultiLineString:i.writeMultiLineStringGeometry_.bind(i),MultiPolygon:i.writeMultiPolygonGeometry_.bind(i),Circle:i.writeCircleGeometry_.bind(i),GeometryCollection:i.writeGeometryCollectionGeometry_.bind(i)},i.source_=null,i.hitDetection_=null,e.features?n=e.features:e.source&&(i.source_=e.source,n=new ht(i.source_.getFeatures()),i.source_.addEventListener(ef,i.handleSourceAdd_.bind(i)),i.source_.addEventListener(of,i.handleSourceRemove_.bind(i))),!n)throw new Error("The modify interaction requires features, a source or a layer");return e.hitDetection&&(i.hitDetection_=e.hitDetection),i.features_=n,i.features_.forEach(i.addFeature_.bind(i)),i.features_.addEventListener(at,i.handleFeatureAdd_.bind(i)),i.features_.addEventListener(st,i.handleFeatureRemove_.bind(i)),i.lastPointerEvent_=null,i.delta_=[0,0],i}return Xv(e,t),e.prototype.addFeature_=function(t){var e=t.getGeometry();if(e){var r=this.SEGMENT_WRITERS_[e.getType()];r&&r(t,e)}var n=this.getMap();n&&n.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,n),t.addEventListener(F,this.boundHandleFeatureChange_)},e.prototype.willModifyFeatures_=function(t,e){if(!this.featuresBeingModified_){this.featuresBeingModified_=new ht;for(var r=this.featuresBeingModified_.getArray(),n=0,i=e.length;n=0;--n){for(var i=r[n],o=this.dragSegments_.length-1;o>=0;--o)this.dragSegments_[o][0]===i&&this.dragSegments_.splice(o,1);e.remove(i)}},e.prototype.setActive=function(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.overlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getOverlay=function(){return this.overlay_},e.prototype.handleSourceAdd_=function(t){t.feature&&this.features_.push(t.feature)},e.prototype.handleSourceRemove_=function(t){t.feature&&this.features_.remove(t.feature)},e.prototype.handleFeatureAdd_=function(t){this.addFeature_(t.element)},e.prototype.handleFeatureChange_=function(t){if(!this.changingFeature_){var e=t.target;this.removeFeature_(e),this.addFeature_(e)}},e.prototype.handleFeatureRemove_=function(t){var e=t.element;this.removeFeature_(e)},e.prototype.writePointGeometry_=function(t,e){var r=e.getCoordinates(),n={feature:t,geometry:e,segment:[r,r]};this.rBush_.insert(e.getExtent(),n)},e.prototype.writeMultiPointGeometry_=function(t,e){for(var r=e.getCoordinates(),n=0,i=r.length;n=0;--y)this.insertVertex_(i[y],a)}return!!this.vertexFeature_},e.prototype.handleUpEvent=function(t){for(var e=this.dragSegments_.length-1;e>=0;--e){var r=this.dragSegments_[e][0],n=r.geometry;if(n.getType()===bt.CIRCLE){var i=n.getCenter(),o=r.featureSegments[0],a=r.featureSegments[1];o.segment[0]=i,o.segment[1]=i,a.segment[0]=i,a.segment[1]=i,this.rBush_.update(ae(i),o);var s=n,l=tn();if(l){var u=t.map.getView().getProjection();s=yi(s=s.clone().transform(l,u)).transform(u,l)}this.rBush_.update(s.getExtent(),a)}else this.rBush_.update(Kt(r.segment),r)}return this.featuresBeingModified_&&(this.dispatchEvent(new Jv($v,this.featuresBeingModified_,t)),this.featuresBeingModified_=null),!1},e.prototype.handlePointerMove_=function(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.pixel,t.map,t.coordinate)},e.prototype.handlePointerAtPixel_=function(t,e,r){var n,i,a=this,s=r||e.getCoordinateFromPixel(t),l=e.getView().getProjection();if(this.hitDetection_){var u="object"==typeof this.hitDetection_?function(t){return t===a.hitDetection_}:void 0;e.forEachFeatureAtPixel(t,(function(t,e,r){if((r=r||t.getGeometry()).getType()===bt.POINT){i=r;var o=r.getCoordinates();n=[{feature:t,geometry:r,segment:[o,o]}]}return!0}),{layerFilter:u})}if(!n){var c=nn(Ht(on(ae(s,Zv),l),e.getView().getResolution()*this.pixelTolerance_,Zv),l);n=this.rBush_.getInExtent(c)}if(n&&n.length>0){var h=n.sort((function(t,e){return t_(s,t,l)-t_(s,e,l)}))[0],p=h.segment,f=e_(s,h,l),d=e.getPixelFromCoordinate(f),g=Ir(t,d);if(i||g<=this.pixelTolerance_){var y={};if(y[o(p)]=!0,this.delta_[0]=f[0]-s[0],this.delta_[1]=f[1]-s[1],h.geometry.getType()===bt.CIRCLE&&1===h.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(f,[h.feature],[h.geometry]);else{var m=e.getPixelFromCoordinate(p[0]),v=e.getPixelFromCoordinate(p[1]),_=Rr(d,m),b=Rr(d,v);g=Math.sqrt(Math.min(_,b)),this.snappedToVertex_=g<=this.pixelTolerance_,this.snappedToVertex_&&(f=_>b?p[1]:p[0]),this.createOrUpdateVertexFeature_(f,[h.feature],[h.geometry]);var x={};x[o(h.geometry)]=!0;for(var w=1,S=n.length;w=0;--i)h=o((c=(r=p[i])[0]).feature),c.depth&&(h+="-"+c.depth.join("-")),h in f||(f[h]={}),0===r[1]?(f[h].right=c,f[h].index=c.index):1==r[1]&&(f[h].left=c,f[h].index=c.index+1);for(h in f){switch(u=f[h].right,s=f[h].left,(l=(a=f[h].index)-1)<0&&(l=0),t=e=(n=(c=void 0!==s?s:u).geometry).getCoordinates(),d=!1,n.getType()){case bt.MULTI_LINE_STRING:e[c.depth[0]].length>2&&(e[c.depth[0]].splice(a,1),d=!0);break;case bt.LINE_STRING:e.length>2&&(e.splice(a,1),d=!0);break;case bt.MULTI_POLYGON:t=t[c.depth[1]];case bt.POLYGON:(t=t[c.depth[0]]).length>4&&(a==t.length-1&&(a=0),t.splice(a,1),d=!0,0===a&&(t.pop(),t.push(t[0]),l=t.length-1))}if(d){this.setGeometryCoordinates_(n,e);var g=[];if(void 0!==s&&(this.rBush_.remove(s),g.push(s.segment[0])),void 0!==u&&(this.rBush_.remove(u),g.push(u.segment[1])),void 0!==s&&void 0!==u){var y={depth:c.depth,feature:c.feature,geometry:c.geometry,index:l,segment:g};this.rBush_.insert(Kt(y.segment),y)}this.updateSegmentIndices_(n,a,c.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),p.length=0}}return d},e.prototype.setGeometryCoordinates_=function(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1},e.prototype.updateSegmentIndices_=function(t,e,r,n){this.rBush_.forEachInExtent(t.getExtent(),(function(i){i.geometry===t&&(void 0===r||void 0===i.depth||b(i.depth,r))&&i.index>e&&(i.index+=n)}))},e}($s),n_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i_="select",o_=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.selected=r,o.deselected=n,o.mapBrowserEvent=i,o}return n_(e,t),e}(c),a_={};var s_=function(t){function e(e){var r,n,i=t.call(this)||this,o=e||{};if(i.boundAddFeature_=i.addFeature_.bind(i),i.boundRemoveFeature_=i.removeFeature_.bind(i),i.condition_=o.condition?o.condition:al,i.addCondition_=o.addCondition?o.addCondition:ol,i.removeCondition_=o.removeCondition?o.removeCondition:ol,i.toggleCondition_=o.toggleCondition?o.toggleCondition:ll,i.multi_=!!o.multi&&o.multi,i.filter_=o.filter?o.filter:S,i.hitTolerance_=o.hitTolerance?o.hitTolerance:0,i.style_=void 0!==o.style?o.style:(v((r=bp())[bt.POLYGON],r[bt.LINE_STRING]),v(r[bt.GEOMETRY_COLLECTION],r[bt.LINE_STRING]),function(t){return t.getGeometry()?r[t.getGeometry().getType()]:null}),i.features_=o.features||new ht,o.layers)if("function"==typeof o.layers)n=o.layers;else{var a=o.layers;n=function(t){return g(a,t)}}else n=S;return i.layerFilter_=n,i.featureLayerAssociation_={},i}return n_(e,t),e.prototype.addFeatureLayerAssociation_=function(t,e){this.featureLayerAssociation_[o(t)]=e},e.prototype.getFeatures=function(){return this.features_},e.prototype.getHitTolerance=function(){return this.hitTolerance_},e.prototype.getLayer=function(t){return this.featureLayerAssociation_[o(t)]},e.prototype.setHitTolerance=function(t){this.hitTolerance_=t},e.prototype.setMap=function(e){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),t.prototype.setMap.call(this,e),e?(this.features_.addEventListener(at,this.boundAddFeature_),this.features_.addEventListener(st,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(at,this.boundAddFeature_),this.features_.removeEventListener(st,this.boundRemoveFeature_))},e.prototype.addFeature_=function(t){var e=t.element;this.style_&&this.applySelectedStyle_(e)},e.prototype.removeFeature_=function(t){var e=t.element;this.style_&&this.restorePreviousStyle_(e)},e.prototype.getStyle=function(){return this.style_},e.prototype.applySelectedStyle_=function(t){var e=o(t);e in a_||(a_[e]=t.getStyle()),t.setStyle(this.style_)},e.prototype.restorePreviousStyle_=function(t){for(var r=this.getMap().getInteractions().getArray(),n=r.length-1;n>=0;--n){var i=r[n];if(i!==this&&i instanceof e&&i.getStyle()&&-1!==i.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(i.getStyle())}var a=o(t);t.setStyle(a_[a]),delete a_[a]},e.prototype.removeFeatureLayerAssociation_=function(t){delete this.featureLayerAssociation_[o(t)]},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;var e=this.addCondition_(t),r=this.removeCondition_(t),n=this.toggleCondition_(t),i=!e&&!r&&!n,o=t.map,a=this.getFeatures(),s=[],l=[];if(i){P(this.featureLayerAssociation_),o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.filter_(t,e))return l.push(t),this.addFeatureLayerAssociation_(t,e),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var u=a.getLength()-1;u>=0;--u){var c=a.item(u),h=l.indexOf(c);h>-1?l.splice(h,1):(a.remove(c),s.push(c))}0!==l.length&&a.extend(l)}else{o.forEachFeatureAtPixel(t.pixel,function(t,i){if(this.filter_(t,i))return!e&&!n||g(a.getArray(),t)?(r||n)&&g(a.getArray(),t)&&(s.push(t),this.removeFeatureLayerAssociation_(t)):(l.push(t),this.addFeatureLayerAssociation_(t,i)),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var p=s.length-1;p>=0;--p)a.remove(s[p]);a.extend(l)}return(l.length>0||s.length>0)&&this.dispatchEvent(new o_(i_,l,s,t)),!0},e}(qs),l_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function u_(t){return t.feature?t.feature:t.element?t.element:void 0}var c_=[],h_=function(t){function e(e){var r=this,n=e||{},i=n;return i.handleDownEvent||(i.handleDownEvent=S),i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).source_=n.source?n.source:null,r.vertex_=void 0===n.vertex||n.vertex,r.edge_=void 0===n.edge||n.edge,r.features_=n.features?n.features:null,r.featuresListenerKeys_=[],r.featureChangeListenerKeys_={},r.indexedFeaturesExtents_={},r.pendingFeatures_={},r.pixelTolerance_=void 0!==n.pixelTolerance?n.pixelTolerance:10,r.rBush_=new Rp,r.SEGMENT_WRITERS_={Point:r.writePointGeometry_.bind(r),LineString:r.writeLineStringGeometry_.bind(r),LinearRing:r.writeLineStringGeometry_.bind(r),Polygon:r.writePolygonGeometry_.bind(r),MultiPoint:r.writeMultiPointGeometry_.bind(r),MultiLineString:r.writeMultiLineStringGeometry_.bind(r),MultiPolygon:r.writeMultiPolygonGeometry_.bind(r),GeometryCollection:r.writeGeometryCollectionGeometry_.bind(r),Circle:r.writeCircleGeometry_.bind(r)},r}return l_(e,t),e.prototype.addFeature=function(t,e){var r=void 0===e||e,n=o(t),i=t.getGeometry();if(i){var a=this.SEGMENT_WRITERS_[i.getType()];a&&(this.indexedFeaturesExtents_[n]=i.getExtent([1/0,1/0,-1/0,-1/0]),a(t,i))}r&&(this.featureChangeListenerKeys_[n]=Z(t,F,this.handleFeatureChange_,this))},e.prototype.forEachFeatureAdd_=function(t){this.addFeature(t)},e.prototype.forEachFeatureRemove_=function(t){this.removeFeature(t)},e.prototype.getFeatures_=function(){var t;return this.features_?t=this.features_:this.source_&&(t=this.source_.getFeatures()),t},e.prototype.handleEvent=function(e){var r=this.snapTo(e.pixel,e.coordinate,e.map);return r.snapped&&(e.coordinate=r.vertex.slice(0,2),e.pixel=r.vertexPixel),t.prototype.handleEvent.call(this,e)},e.prototype.handleFeatureAdd_=function(t){var e=u_(t);this.addFeature(e)},e.prototype.handleFeatureRemove_=function(t){var e=u_(t);this.removeFeature(e)},e.prototype.handleFeatureChange_=function(t){var e=t.target;if(this.handlingDownUpSequence){var r=o(e);r in this.pendingFeatures_||(this.pendingFeatures_[r]=e)}else this.updateFeature_(e)},e.prototype.handleUpEvent=function(t){var e=R(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1},e.prototype.removeFeature=function(t,e){var r=void 0===e||e,n=o(t),i=this.indexedFeaturesExtents_[n];if(i){var a=this.rBush_,s=[];a.forEachInExtent(i,(function(e){t===e.feature&&s.push(e)}));for(var l=s.length-1;l>=0;--l)a.remove(s[l])}r&&(H(this.featureChangeListenerKeys_[n]),delete this.featureChangeListenerKeys_[n])},e.prototype.setMap=function(e){var r=this.getMap(),n=this.featuresListenerKeys_,i=this.getFeatures_();r&&(n.forEach(H),n.length=0,i.forEach(this.forEachFeatureRemove_.bind(this))),t.prototype.setMap.call(this,e),e&&(this.features_?n.push(Z(this.features_,at,this.handleFeatureAdd_,this),Z(this.features_,st,this.handleFeatureRemove_,this)):this.source_&&n.push(Z(this.source_,ef,this.handleFeatureAdd_,this),Z(this.source_,of,this.handleFeatureRemove_,this)),i.forEach(this.forEachFeatureAdd_.bind(this)))},e.prototype.snapTo=function(t,e,r){var n=Kt([r.getCoordinateFromPixel([t[0]-this.pixelTolerance_,t[1]+this.pixelTolerance_]),r.getCoordinateFromPixel([t[0]+this.pixelTolerance_,t[1]-this.pixelTolerance_])]),i=this.rBush_.getInExtent(n);this.vertex_&&!this.edge_&&(i=i.filter((function(t){return t.feature.getGeometry().getType()!==bt.CIRCLE})));var o=!1,a=null,s=null;if(0===i.length)return{snapped:o,vertex:a,vertexPixel:s};for(var l,u=r.getView().getProjection(),c=rn(e,u),h=1/0,p=0;p_?g[1]:g[0],s=r.getPixelFromCoordinate(a))}else if(this.edge_){var b=l.feature.getGeometry().getType()===bt.CIRCLE;if(b){var x=l.feature.getGeometry(),w=tn();w&&(x=x.clone().transform(w,u)),a=en(wr(c,x),u)}else c_[0]=rn(g[0],u),c_[1]=rn(g[1],u),a=en(Sr(c,c_),u);if(Ir(t,s=r.getPixelFromCoordinate(a))<=this.pixelTolerance_&&(o=!0,this.vertex_&&!b)){y=r.getPixelFromCoordinate(g[0]),m=r.getPixelFromCoordinate(g[1]),v=Rr(s,y),_=Rr(s,m);Math.sqrt(Math.min(v,_))<=this.pixelTolerance_&&(a=v>_?g[1]:g[0],s=r.getPixelFromCoordinate(a))}}return o&&(s=[Math.round(s[0]),Math.round(s[1])]),{snapped:o,vertex:a,vertexPixel:s}},e.prototype.updateFeature_=function(t){this.removeFeature(t,!1),this.addFeature(t,!1)},e.prototype.writeCircleGeometry_=function(t,e){var r=this.getMap().getView().getProjection(),n=e,i=tn();i&&(n=n.clone().transform(i,r));var o=yi(n);i&&o.transform(r,i);for(var a=o.getCoordinates()[0],s=0,l=a.length-1;s=0;r--){var u=o[r][0];if(te(new Yn(u).getExtent(),new Yn(s).getExtent())){o[r].push(s),l=!0;break}}l||o.push([s.reverse()])}return o}(o.rings,a);1===s.length?(i=bt.POLYGON,t=O({},t,((r={}).rings=s[0],r))):(i=bt.MULTI_POLYGON,t=O({},t,((n={}).rings=s,n)))}return Wy((0,b_[i])(t),!1,e)}function S_(t){var e=yt;return!0===t.hasZ&&!0===t.hasM?e=_t:!0===t.hasZ?e=mt:!0===t.hasM&&(e=vt),e}function E_(t){var e=t.getLayout();return{hasZ:e===mt||e===_t,hasM:e===vt||e===_t}}function T_(t,e){return(0,x_[t.getType()])(Wy(t,!0,e),e)}x_[bt.POINT]=function(t,e){var r,n=t.getCoordinates(),i=t.getLayout();i===mt?r={x:n[0],y:n[1],z:n[2]}:i===vt?r={x:n[0],y:n[1],m:n[2]}:i===_t?r={x:n[0],y:n[1],z:n[2],m:n[3]}:i===yt?r={x:n[0],y:n[1]}:pt(!1,34);return r},x_[bt.LINE_STRING]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:[t.getCoordinates()]}},x_[bt.POLYGON]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,rings:t.getCoordinates(!1)}},x_[bt.MULTI_POINT]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,points:t.getCoordinates()}},x_[bt.MULTI_LINE_STRING]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:t.getCoordinates()}},x_[bt.MULTI_POLYGON]=function(t,e){for(var r=E_(t),n=t.getCoordinates(!1),i=[],o=0;o=0;a--)i.push(n[o][a]);return{hasZ:r.hasZ,hasM:r.hasM,rings:i}};var C_=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this)||this).geometryName_=n.geometryName,r}return __(e,t),e.prototype.readFeatureFromObject=function(t,e,r){var n=t,i=w_(n.geometry,e),o=new gt;if(this.geometryName_&&o.setGeometryName(this.geometryName_),o.setGeometry(i),n.attributes){o.setProperties(n.attributes,!0);var a=n.attributes[r];void 0!==a&&o.setId(a)}return o},e.prototype.readFeaturesFromObject=function(t,e){var r=e||{};if(t.features){for(var n=[],i=t.features,o=0,a=i.length;o0?r[0]:null},e.prototype.readFeatureFromNode=function(t,e){return null},e.prototype.readFeatures=function(t,e){if(t){if("string"==typeof t){var r=Pc(t);return this.readFeaturesFromDocument(r,e)}return Cc(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}return[]},e.prototype.readFeaturesFromDocument=function(t,e){for(var r=[],n=t.firstChild;n;n=n.nextSibling)n.nodeType==Node.ELEMENT_NODE&&v(r,this.readFeaturesFromNode(n,e));return r},e.prototype.readFeaturesFromNode=function(t,e){return n()},e.prototype.readGeometry=function(t,e){if(t){if("string"==typeof t){var r=Pc(t);return this.readGeometryFromDocument(r,e)}return Cc(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e)}return null},e.prototype.readGeometryFromDocument=function(t,e){return null},e.prototype.readGeometryFromNode=function(t,e){return null},e.prototype.readProjection=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readProjectionFromDocument(e)}return Cc(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},e.prototype.readProjectionFromDocument=function(t){return this.dataProjection},e.prototype.readProjectionFromNode=function(t){return this.dataProjection},e.prototype.writeFeature=function(t,e){var r=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeatureNode=function(t,e){return null},e.prototype.writeFeatures=function(t,e){var r=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeaturesNode=function(t,e){return null},e.prototype.writeGeometry=function(t,e){var r=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeGeometryNode=function(t,e){return null},e}(Yy),R_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),I_="http://www.opengis.net/gml",L_=/^[\s\xa0]*$/,M_=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureType=n.featureType,r.featureNS=n.featureNS,r.srsName=n.srsName,r.schemaLocation="",r.FEATURE_COLLECTION_PARSERS={},r.FEATURE_COLLECTION_PARSERS[r.namespace]={featureMember:Ic(r.readFeaturesInternal),featureMembers:Lc(r.readFeaturesInternal)},r}return R_(e,t),e.prototype.readFeaturesInternal=function(t,e){var r=t.localName,n=null;if("FeatureCollection"==r)n=Uc([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==r||"featureMember"==r||"member"==r){var i=e[0],o=i.featureType,a=i.featureNS;if(!o&&t.childNodes){o=[],a={};for(var s=0,l=t.childNodes.length;s0){i[s]={_content_:i[s]};for(var u=0;u0:h===bt.POINT||h===bt.MULTI_POINT}}s&&(l=o.get("name"),(s=s&&!!l)&&l.search(/&[^&]+;/)>-1&&(Tx||(Tx=document.createElement("textarea")),Tx.innerHTML=l,l=Tx.value));var p=r;if(t?p=t:e&&(p=function t(e,r,n){return Array.isArray(e)?e:"string"==typeof e?t(n[e],r,n):r}(e,r,n)),s){var f=function(t,e){var r=[0,0],n="start",i=t.getImage();if(i){var o=i.getImageSize();if(null===o&&(o=Kb),2==o.length){var a=i.getScaleArray();r[0]=a[0]*o[0]/2,r[1]=-a[1]*o[1]/2,n="left"}}var s=t.getText();s?((s=s.clone()).setFont(s.getFont()||Sx.getFont()),s.setScale(s.getScale()||Sx.getScale()),s.setFill(s.getFill()||Sx.getFill()),s.setStroke(s.getStroke()||xx)):s=Sx.clone();return s.setText(e),s.setOffsetX(r[0]),s.setOffsetY(r[1]),s.setTextAlign(n),new wp({image:i,text:s})}(p[0],l);return u.length>0?(f.setGeometry(new Vm(u)),[f,new wp({geometry:p[0].getGeometry(),image:null,fill:p[0].getFill(),stroke:p[0].getStroke(),text:null})].concat(p.slice(1))):f}return p}}(r.Style,r.styleUrl,this.defaultStyle_,this.sharedStyles_,this.showPointNames_);n.setStyle(s)}return delete r.Style,n.setProperties(r,!0),n}},e.prototype.readSharedStyle_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=nw.call(this,t,e);if(n){var i=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readSharedStyleMap_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=kx.call(this,t,e);if(n){var i,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readFeatureFromNode=function(t,e){if(!g(cx,t.namespaceURI))return null;var r=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return r||null},e.prototype.readFeaturesFromNode=function(t,e){if(!g(cx,t.namespaceURI))return[];var r,n=t.localName;if("Document"==n||"Folder"==n)return(r=this.readDocumentOrFolder_(t,[this.getReadOptions(t,e)]))||[];if("Placemark"==n){var i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i?[i]:[]}if("kml"==n){r=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var a=this.readFeaturesFromNode(o,e);a&&v(r,a)}return r}return[]},e.prototype.readName=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readNameFromDocument(e)}return Cc(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},e.prototype.readNameFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE){var r=this.readNameFromNode(e);if(r)return r}},e.prototype.readNameFromNode=function(t){for(var e=t.firstElementChild;e;e=e.nextElementSibling)if(g(cx,e.namespaceURI)&&"name"==e.localName)return U_(e);for(e=t.firstElementChild;e;e=e.nextElementSibling){var r=e.localName;if(g(cx,e.namespaceURI)&&("Document"==r||"Folder"==r||"Placemark"==r||"kml"==r)){var n=this.readNameFromNode(e);if(n)return n}}},e.prototype.readNetworkLinks=function(t){var e=[];if("string"==typeof t){var r=Pc(t);v(e,this.readNetworkLinksFromDocument(r))}else Cc(t)?v(e,this.readNetworkLinksFromDocument(t)):v(e,this.readNetworkLinksFromNode(t));return e},e.prototype.readNetworkLinksFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&v(e,this.readNetworkLinksFromNode(r));return e},e.prototype.readNetworkLinksFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(g(cx,r.namespaceURI)&&"NetworkLink"==r.localName){var n=Uc({},fx,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!g(cx,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||v(e,this.readNetworkLinksFromNode(r))}return e},e.prototype.readRegion=function(t){var e=[];if("string"==typeof t){var r=Pc(t);v(e,this.readRegionFromDocument(r))}else Cc(t)?v(e,this.readRegionFromDocument(t)):v(e,this.readRegionFromNode(t));return e},e.prototype.readRegionFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&v(e,this.readRegionFromNode(r));return e},e.prototype.readRegionFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(g(cx,r.namespaceURI)&&"Region"==r.localName){var n=Uc({},gx,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!g(cx,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||v(e,this.readRegionFromNode(r))}return e},e.prototype.writeFeaturesNode=function(t,e){e=this.adaptOptions(e);var r=Sc(cx[4],"kml"),n="http://www.w3.org/2000/xmlns/";r.setAttributeNS(n,"xmlns:gx",ux[0]),r.setAttributeNS(n,"xmlns:xsi",wc),r.setAttributeNS(wc,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var i={node:r},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var a=yx[r.namespaceURI],s=Dc(o,a);return Vc(i,mx,Nc,s,[e],a,this),r},e}(P_);function Rx(t){var e=Ec(t,!1),r=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e);if(r){var n=r[1];return[parseInt(n.substr(6,2),16),parseInt(n.substr(4,2),16),parseInt(n.substr(2,2),16),parseInt(n.substr(0,2),16)/255]}}function Ix(t){var e=Ec(t,!1),r=[];e=e.replace(/\s*,\s*/g,",");for(var n,i=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;n=i.exec(e);){var o=parseFloat(n[1]),a=parseFloat(n[2]),s=n[3]?parseFloat(n[3]):0;r.push(o,a,s),e=e.substr(n[0].length)}if(""===e)return r}function Lx(t){var e=Ec(t,!1).trim(),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function Mx(t){var e=Ec(t,!1).trim().replace(/^(?!.*#)/,"#"),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function Fx(t){return N_(t)}var Ax=Gc(cx,{Pair:function(t,e){var r=Uc({},uw,t,e,this);if(!r)return;var n=r.key;if(n&&"normal"==n){var i=r.styleUrl;i&&(e[e.length-1]=i);var o=r.Style;o&&(e[e.length-1]=o)}}});function kx(t,e){return Uc(void 0,Ax,t,e,this)}var jx=Gc(cx,{Icon:Fc((function(t,e){var r=Uc({},Wx,t,e);return r||null})),color:Fc(Rx),heading:Fc(N_),hotSpot:Fc((function(t){var e,r=t.getAttribute("xunits"),n=t.getAttribute("yunits");return e="insetPixels"!==r?"insetPixels"!==n?ip:ap:"insetPixels"!==n?op:sp,{x:parseFloat(t.getAttribute("x")),xunits:hx[r],y:parseFloat(t.getAttribute("y")),yunits:hx[n],origin:e}})),scale:Fc(Fx)});var Nx=Gc(cx,{color:Fc(Rx),scale:Fc(Fx)});var Dx=Gc(cx,{color:Fc(Rx),width:Fc(N_)});var Gx=Gc(cx,{color:Fc(Rx),fill:Fc(A_),outline:Fc(A_)});var zx=Gc(cx,{coordinates:Lc(Ix)});function Ux(t,e){return Uc(null,zx,t,e)}var Bx=Gc(ux,{Track:Ic(Yx)});var Vx=Gc(cx,{when:function(t,e){var r=e[e.length-1].whens,n=Ec(t,!1),i=Date.parse(n);r.push(isNaN(i)?0:i)}},Gc(ux,{coord:function(t,e){var r=e[e.length-1].flatCoordinates,n=Ec(t,!1),i=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(n);if(i){var o=parseFloat(i[1]),a=parseFloat(i[2]),s=parseFloat(i[3]);r.push(o,a,s,0)}else r.push(0,0,0,0)}}));function Yx(t,e){var r=Uc({flatCoordinates:[],whens:[]},Vx,t,e);if(r){for(var n=r.flatCoordinates,i=r.whens,o=0,a=Math.min(n.length,i.length);o0,c=l.href;c?n=c:u&&(n=Hb);var h,p=ip,f=r.hotSpot;f?(i=[f.x,f.y],o=f.xunits,a=f.yunits,p=f.origin):n===Hb?(i=qb,o=Xb,a=Zb):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(n)&&(i=[.5,0],o=rp,a=rp);var d,g=l.x,y=l.y;void 0!==g&&void 0!==y&&(h=[g,y]);var m,v=l.w,_=l.h;void 0!==v&&void 0!==_&&(d=[v,_]);var b=r.heading;void 0!==b&&(m=Ye(b));var x=r.scale,w=r.color;if(u){n==Hb&&(d=Kb,void 0===x&&(x=$b));var S=new dp({anchor:i,anchorOrigin:p,anchorXUnits:o,anchorYUnits:a,crossOrigin:this.crossOrigin_,offset:h,offsetOrigin:ip,rotation:m,scale:x,size:d,src:this.iconUrlFunction_(n),color:w});s.imageStyle=S}else s.imageStyle=_x}},LabelStyle:function(t,e){var r=Uc({},Nx,t,e);if(r){var n=e[e.length-1],i=new Tp({fill:new ep({color:"color"in r?r.color:Wb}),scale:r.scale});n.textStyle=i}},LineStyle:function(t,e){var r=Uc({},Dx,t,e);if(r){var n=e[e.length-1],i=new gp({color:"color"in r?r.color:Wb,width:"width"in r?r.width:1});n.strokeStyle=i}},PolyStyle:function(t,e){var r=Uc({},Gx,t,e);if(r){var n=e[e.length-1],i=new ep({color:"color"in r?r.color:Wb});n.fillStyle=i;var o=r.fill;void 0!==o&&(n.fill=o);var a=r.outline;void 0!==a&&(n.outline=a)}}});function nw(t,e){var r=Uc({},rw,t,e,this);if(!r)return null;var n,i="fillStyle"in r?r.fillStyle:vx,o=r.fill;void 0===o||o||(i=null),"imageStyle"in r?r.imageStyle!=_x&&(n=r.imageStyle):n=bx;var a="textStyle"in r?r.textStyle:Sx,s="strokeStyle"in r?r.strokeStyle:wx,l=r.outline;return void 0===l||l?[new wp({fill:i,image:n,stroke:s,text:a,zIndex:void 0})]:[new wp({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===bt.GEOMETRY_COLLECTION?new Vm(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e!==bt.POLYGON&&e!==bt.MULTI_POLYGON}))):r!==bt.POLYGON&&r!==bt.MULTI_POLYGON?e:void 0},fill:i,image:n,stroke:s,text:a,zIndex:void 0}),new wp({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===bt.GEOMETRY_COLLECTION?new Vm(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e===bt.POLYGON||e===bt.MULTI_POLYGON}))):r===bt.POLYGON||r===bt.MULTI_POLYGON?e:void 0},fill:i,stroke:null,zIndex:void 0})]}function iw(t,e){var r,n,i,o=e.length,a=new Array(e.length),s=new Array(e.length),l=new Array(e.length);r=!1,n=!1,i=!1;for(var u=0;u0){var m=Dc(i,a);Vc(n,Gw,Uw,[{names:a,values:m}],r)}var v=r[0],_=e.getGeometry();_&&(_=Wy(_,!0,v)),Vc(n,Gw,Iw,[_],r)}var Vw=Gc(cx,["extrude","tessellate","altitudeMode","coordinates"]),Yw=Gc(cx,{extrude:Ac(B_),tessellate:Ac(B_),altitudeMode:Ac(X_),coordinates:Ac((function(t,e,r){var n,i=r[r.length-1],o=i.layout,a=i.stride;o==yt||o==vt?n=2:o==mt||o==_t?n=3:pt(!1,34);var s=e.length,l="";if(s>0){l+=e[0];for(var u=1;u>1):i>>1}return e}function NS(t){for(var e="",r=0,n=t.length;r=32;)e=63+(32|31&t),r+=String.fromCharCode(e),t>>=5;return e=t+63,r+=String.fromCharCode(e)}var zS=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.dataProjection=Gr("EPSG:4326"),r.factor_=n.factor?n.factor:1e5,r.geometryLayout_=n.geometryLayout?n.geometryLayout:yt,r}return IS(e,t),e.prototype.readFeatureFromText=function(t,e){var r=this.readGeometryFromText(t,e);return new gt(r)},e.prototype.readFeaturesFromText=function(t,e){return[this.readFeatureFromText(t,e)]},e.prototype.readGeometryFromText=function(t,e){var r=yn(this.geometryLayout_),n=MS(t,r,this.factor_);v_(n,0,n.length,r,n);var i=Nn(n,0,n.length,r);return Wy(new Py(i,this.geometryLayout_),!1,this.adaptOptions(e))},e.prototype.writeFeatureText=function(t,e){var r=t.getGeometry();return r?this.writeGeometryText(r,e):(pt(!1,40),"")},e.prototype.writeFeaturesText=function(t,e){return this.writeFeatureText(t[0],e)},e.prototype.writeGeometryText=function(t,e){var r=(t=Wy(t,!0,this.adaptOptions(e))).getFlatCoordinates(),n=t.getStride();return v_(r,0,r.length,n,r),LS(r,n,this.factor_)},e}(Jb),US=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),BS=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.layerName_=n.layerName,r.layers_=n.layers?n.layers:null,r.dataProjection=Gr(n.dataProjection?n.dataProjection:"EPSG:4326"),r}return US(e,t),e.prototype.readFeaturesFromObject=function(t,e){if("Topology"==t.type){var r=t,n=void 0,i=null,o=null;r.transform&&(i=(n=r.transform).scale,o=n.translate);var a=r.arcs;n&&function(t,e,r){for(var n=0,i=t.length;n0&&i.pop(),n=r>=0?e[r]:e[~r].slice().reverse(),i.push.apply(i,n);for(var s=0,l=i.length;s=2,57),n}return $S(e,t),e}(HS),QS=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tE=function(t){function e(e){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return QS(e,t),e}(JS),eE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rE=function(t){function e(e,r,n){var i=t.call(this,"BBOX")||this;if(i.geometryName=e,i.extent=r,4!==r.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return i.srsName=n,i}return eE(e,t),e}(HS),nE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),iE=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.geometryName=r||"the_geom",o.geometry=n,o.srsName=i,o}return nE(e,t),e}(HS),oE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),aE=function(t){function e(e,r,n){return t.call(this,"Contains",e,r,n)||this}return oE(e,t),e}(iE),sE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),lE=function(t){function e(e,r,n,i,o){var a=t.call(this,"DWithin",e,r,o)||this;return a.distance=n,a.unit=i,a}return sE(e,t),e}(iE),uE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cE=function(t){function e(e,r,n){return t.call(this,"Disjoint",e,r,n)||this}return uE(e,t),e}(iE),hE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pE=function(t){function e(e,r){var n=t.call(this,e)||this;return n.propertyName=r,n}return hE(e,t),e}(HS),fE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),dE=function(t){function e(e,r,n){var i=t.call(this,"During",e)||this;return i.begin=r,i.end=n,i}return fE(e,t),e}(pE),gE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),yE=function(t){function e(e,r,n,i){var o=t.call(this,e,r)||this;return o.expression=n,o.matchCase=i,o}return gE(e,t),e}(pE),mE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vE=function(t){function e(e,r,n){return t.call(this,"PropertyIsEqualTo",e,r,n)||this}return mE(e,t),e}(yE),_E=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bE=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThan",e,r)||this}return _E(e,t),e}(yE),xE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),wE=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThanOrEqualTo",e,r)||this}return xE(e,t),e}(yE),SE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),EE=function(t){function e(e,r,n){return t.call(this,"Intersects",e,r,n)||this}return SE(e,t),e}(iE),TE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),CE=function(t){function e(e,r,n){var i=t.call(this,"PropertyIsBetween",e)||this;return i.lowerBoundary=r,i.upperBoundary=n,i}return TE(e,t),e}(pE),OE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),PE=function(t){function e(e,r,n,i,o,a){var s=t.call(this,"PropertyIsLike",e)||this;return s.pattern=r,s.wildCard=void 0!==n?n:"*",s.singleChar=void 0!==i?i:".",s.escapeChar=void 0!==o?o:"!",s.matchCase=a,s}return OE(e,t),e}(pE),RE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),IE=function(t){function e(e){return t.call(this,"PropertyIsNull",e)||this}return RE(e,t),e}(pE),LE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ME=function(t){function e(e,r){return t.call(this,"PropertyIsLessThan",e,r)||this}return LE(e,t),e}(yE),FE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),AE=function(t){function e(e,r){return t.call(this,"PropertyIsLessThanOrEqualTo",e,r)||this}return FE(e,t),e}(yE),kE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jE=function(t){function e(e){var r=t.call(this,"Not")||this;return r.condition=e,r}return kE(e,t),e}(HS),NE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),DE=function(t){function e(e,r,n){return t.call(this,"PropertyIsNotEqualTo",e,r,n)||this}return NE(e,t),e}(yE),GE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zE=function(t){function e(e){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return GE(e,t),e}(JS),UE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),BE=function(t){function e(e){var r=t.call(this,"ResourceId")||this;return r.rid=e,r}return UE(e,t),e}(HS),VE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),YE=function(t){function e(e,r,n){return t.call(this,"Within",e,r,n)||this}return VE(e,t),e}(iE);function WE(t){var e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(tE,e))}function qE(t,e,r){return new rE(t,e,r)}var XE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ZE={"http://www.opengis.net/gml":{boundedBy:Fc(F_.prototype.readGeometryElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:Ic(F_.prototype.readFeaturesInternal)}},KE={"http://www.opengis.net/wfs":{totalInserted:Fc(G_),totalUpdated:Fc(G_),totalDeleted:Fc(G_)},"http://www.opengis.net/wfs/2.0":{totalInserted:Fc(G_),totalUpdated:Fc(G_),totalDeleted:Fc(G_)}},HE={"http://www.opengis.net/wfs":{TransactionSummary:Fc(sT,"transactionSummary"),InsertResults:Fc(hT,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:Fc(sT,"transactionSummary"),InsertResults:Fc(hT,"insertIds")}},$E={"http://www.opengis.net/wfs":{PropertyName:Ac(X_)},"http://www.opengis.net/wfs/2.0":{PropertyName:Ac(X_)}},JE={"http://www.opengis.net/wfs":{Insert:Ac(pT),Update:Ac(yT),Delete:Ac(gT),Property:Ac(mT),Native:Ac(vT)},"http://www.opengis.net/wfs/2.0":{Insert:Ac(pT),Update:Ac(yT),Delete:Ac(gT),Property:Ac(mT),Native:Ac(vT)}},QE="http://www.w3.org/2000/xmlns/",tT={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},eT={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},rT={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},nT={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},iT={"2.0.0":ab,"1.1.0":eb,"1.0.0":$_},oT=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.version_=n.version?n.version:"1.1.0",r.featureType_=n.featureType,r.featureNS_=n.featureNS,r.gmlFormat_=n.gmlFormat?n.gmlFormat:new iT[r.version_],r.schemaLocation_=n.schemaLocation?n.schemaLocation:nT[r.version_],r}return XE(e,t),e.prototype.getFeatureType=function(){return this.featureType_},e.prototype.setFeatureType=function(t){this.featureType_=t},e.prototype.readFeaturesFromNode=function(t,e){var r={node:t};O(r,{featureType:this.featureType_,featureNS:this.featureNS_}),O(r,this.getReadOptions(t,e||{}));var n=[r],i=Uc([],"2.0.0"===this.version_?ZE:this.gmlFormat_.FEATURE_COLLECTION_PARSERS,t,n,this.gmlFormat_);return i||(i=[]),i},e.prototype.readTransactionResponse=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readTransactionResponseFromDocument(e)}return Cc(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}},e.prototype.readFeatureCollectionMetadata=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readFeatureCollectionMetadataFromDocument(e)}return Cc(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}},e.prototype.readFeatureCollectionMetadataFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(e)},e.prototype.readFeatureCollectionMetadataFromNode=function(t){var e={},r=z_(t.getAttribute("numberOfFeatures"));return e.numberOfFeatures=r,Uc(e,ZE,t,[],this.gmlFormat_)},e.prototype.readTransactionResponseFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(e)},e.prototype.readTransactionResponseFromNode=function(t){return Uc({},HE,t,[])},e.prototype.writeGetFeature=function(t){var e=this,r=Sc(eT[this.version_],"GetFeature");r.setAttribute("service","WFS"),r.setAttribute("version",this.version_),t.handle&&r.setAttribute("handle",t.handle),t.outputFormat&&r.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&r.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&r.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&r.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&r.setAttribute("count",String(t.count)),void 0!==t.viewParams&&r.setAttribute("viewParams",t.viewParams),r.setAttributeNS(wc,"xsi:schemaLocation",this.schemaLocation_);var n={node:r};if(O(n,{version:this.version_,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.featureNS_,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),pt(Array.isArray(t.featureTypes),11),"string"==typeof t.featureTypes[0]){var i=t.filter;t.bbox&&(pt(t.geometryName,12),i=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,i)),O(n,{geometryName:t.geometryName,filter:i}),jT(r,t.featureTypes,[n])}else t.featureTypes.forEach((function(i){var o=e.combineBboxAndFilter(i.geometryName,i.bbox,t.srsName,t.filter);O(n,{geometryName:i.geometryName,filter:o}),jT(r,[i.name],[n])}));return r},e.prototype.combineBboxAndFilter=function(t,e,r,n){var i=qE(t,e,r);return n?WE(n,i):i},e.prototype.writeTransaction=function(t,e,r,n){var i,o=[],a=n.version?n.version:this.version_,s=Sc(eT[a],"Transaction");s.setAttribute("service","WFS"),s.setAttribute("version",a),n&&(i=n.gmlOptions?n.gmlOptions:{},n.handle&&s.setAttribute("handle",n.handle)),s.setAttributeNS(wc,"xsi:schemaLocation",nT[a]);var l=function(t,e,r,n){var i,o=n.featurePrefix?n.featurePrefix:"feature";"1.0.0"===r?i=2:"1.1.0"===r?i=3:"2.0.0"===r&&(i=3.2);return O({node:t},{version:r,featureNS:n.featureNS,featureType:n.featureType,featurePrefix:o,gmlVersion:i,hasZ:n.hasZ,srsName:n.srsName},e)}(s,i,a,n);return t&&aT("Insert",t,o,l),e&&aT("Update",e,o,l),r&&aT("Delete",r,o,l),n.nativeElements&&aT("Native",n.nativeElements,o,l),s},e.prototype.readProjectionFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(e);return null},e.prototype.readProjectionFromNode=function(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(var e=(t=t.firstElementChild.firstElementChild).firstElementChild;e;e=e.nextElementSibling)if(0!==e.childNodes.length&&(1!==e.childNodes.length||3!==e.firstChild.nodeType)){var r=[{}];return this.gmlFormat_.readGeometryElement(e,r),Gr(r.pop().srsName)}return null},e}(P_);function aT(t,e,r,n){Vc(n,JE,jc(t),e,r)}function sT(t,e){return Uc({},KE,t,e)}var lT={"http://www.opengis.net/ogc":{FeatureId:Ic((function(t,e){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:Ic((function(t,e){return t.getAttribute("fid")}))}};function uT(t,e){zc(lT,t,e)}var cT={"http://www.opengis.net/wfs":{Feature:uT},"http://www.opengis.net/wfs/2.0":{Feature:uT}};function hT(t,e){return Uc([],cT,t,e)}function pT(t,e,r){var n=r[r.length-1],i=n.featureType,o=n.featureNS,a=n.gmlVersion,s=Sc(o,i);t.appendChild(s),2===a?$_.prototype.writeFeatureElement(s,e,r):3===a?eb.prototype.writeFeatureElement(s,e,r):ab.prototype.writeFeatureElement(s,e,r)}function fT(t,e,r){var n=r[r.length-1].version,i=tT[n],o=Sc(i,"Filter"),a=Sc(i,"FeatureId");o.appendChild(a),a.setAttribute("fid",e),t.appendChild(o)}function dT(t,e){var r=(t=t||"feature")+":";return 0===e.indexOf(r)?e:r+e}function gT(t,e,r){var n=r[r.length-1];pt(void 0!==e.getId(),26);var i=n.featureType,o=n.featurePrefix,a=n.featureNS,s=dT(o,i);t.setAttribute("typeName",s),t.setAttributeNS(QE,"xmlns:"+o,a);var l=e.getId();void 0!==l&&fT(t,l,r)}function yT(t,e,r){var n=r[r.length-1];pt(void 0!==e.getId(),27);var i=n.version,o=n.featureType,a=n.featurePrefix,s=n.featureNS,l=dT(a,o),u=e.getGeometryName();t.setAttribute("typeName",l),t.setAttributeNS(QE,"xmlns:"+a,s);var c=e.getId();if(void 0!==c){for(var h=e.getKeys(),p=[],f=0,d=h.length;f="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.isNumeric_=function(t,e){return t>="0"&&t<="9"||"."==t&&!(void 0!==e&&e)},t.prototype.isWhiteSpace_=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.nextChar_=function(){return this.wkt.charAt(++this.index_)},t.prototype.nextToken=function(){var t,e=this.nextChar_(),r=this.index_,n=e;if("("==e)t=BT;else if(","==e)t=WT;else if(")"==e)t=VT;else if(this.isNumeric_(e)||"-"==e)t=YT,n=this.readNumber_();else if(this.isAlpha_(e))t=UT,n=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(""!==e)throw new Error("Unexpected character: "+e);t=qT}return{position:r,value:n,type:t}},t.prototype.readNumber_=function(){var t,e=this.index_,r=!1,n=!1;do{"."==t?r=!0:"e"!=t&&"E"!=t||(n=!0),t=this.nextChar_()}while(this.isNumeric_(t,r)||!n&&("e"==t||"E"==t)||n&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))},t.prototype.readText_=function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()},t}(),HT=function(){function t(t){this.lexer_=t,this.token_,this.layout_=yt}return t.prototype.consume_=function(){this.token_=this.lexer_.nextToken()},t.prototype.isTokenType=function(t){return this.token_.type==t},t.prototype.match=function(t){var e=this.isTokenType(t);return e&&this.consume_(),e},t.prototype.parse=function(){return this.consume_(),this.parseGeometry_()},t.prototype.parseGeometryLayout_=function(){var t=yt,e=this.token_;if(this.isTokenType(UT)){var r=e.value;"Z"===r?t=mt:"M"===r?t=vt:"ZM"===r&&(t=_t),t!==yt&&this.consume_()}return t},t.prototype.parseGeometryCollectionText_=function(){if(this.match(BT)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(WT));if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePointText_=function(){if(this.match(BT)){var t=this.parsePoint_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())},t.prototype.parseLineStringText_=function(){if(this.match(BT)){var t=this.parsePointList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePolygonText_=function(){if(this.match(BT)){var t=this.parseLineStringTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPointText_=function(){if(this.match(BT)){var t=void 0;if(t=this.token_.type==BT?this.parsePointTextList_():this.parsePointList_(),this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiLineStringText_=function(){if(this.match(BT)){var t=this.parseLineStringTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPolygonText_=function(){if(this.match(BT)){var t=this.parsePolygonTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePoint_=function(){for(var t=[],e=this.layout_.length,r=0;r0&&(e+=" "+n)}return 0===r.length?e+" EMPTY":e+"("+r+")"}var nC=$T,iC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),oC=[null,"http://www.opengis.net/wms"],aC=Gc(oC,{Service:Fc((function(t,e){return Uc({},uC,t,e)})),Capability:Fc((function(t,e){return Uc({},sC,t,e)}))}),sC=Gc(oC,{Request:Fc((function(t,e){return Uc({},mC,t,e)})),Exception:Fc((function(t,e){return Uc([],fC,t,e)})),Layer:Fc((function(t,e){var r=Uc({},dC,t,e);if(void 0===r.Layer)return Object.assign(r,EC(t,e));return r}))}),lC=function(t){function e(){var e=t.call(this)||this;return e.version=void 0,e}return iC(e,t),e.prototype.readFromNode=function(t){this.version=t.getAttribute("version").trim();var e=Uc({version:this.version},aC,t,[]);return e||null},e}(cS),uC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),KeywordList:Fc(PC),OnlineResource:Fc(hS),ContactInformation:Fc((function(t,e){return Uc({},cC,t,e)})),Fees:Fc(U_),AccessConstraints:Fc(U_),LayerLimit:Fc(G_),MaxWidth:Fc(G_),MaxHeight:Fc(G_)}),cC=Gc(oC,{ContactPersonPrimary:Fc((function(t,e){return Uc({},hC,t,e)})),ContactPosition:Fc(U_),ContactAddress:Fc((function(t,e){return Uc({},pC,t,e)})),ContactVoiceTelephone:Fc(U_),ContactFacsimileTelephone:Fc(U_),ContactElectronicMailAddress:Fc(U_)}),hC=Gc(oC,{ContactPerson:Fc(U_),ContactOrganization:Fc(U_)}),pC=Gc(oC,{AddressType:Fc(U_),Address:Fc(U_),City:Fc(U_),StateOrProvince:Fc(U_),PostCode:Fc(U_),Country:Fc(U_)}),fC=Gc(oC,{Format:Ic(U_)}),dC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),KeywordList:Fc(PC),CRS:Mc(U_),EX_GeographicBoundingBox:Fc((function(t,e){var r=Uc({},yC,t,e);if(!r)return;var n=r.westBoundLongitude,i=r.southBoundLatitude,o=r.eastBoundLongitude,a=r.northBoundLatitude;if(void 0===n||void 0===i||void 0===o||void 0===a)return;return[n,i,o,a]})),BoundingBox:Mc((function(t,e){var r=[D_(t.getAttribute("minx")),D_(t.getAttribute("miny")),D_(t.getAttribute("maxx")),D_(t.getAttribute("maxy"))],n=[D_(t.getAttribute("resx")),D_(t.getAttribute("resy"))];return{crs:t.getAttribute("CRS"),extent:r,res:n}})),Dimension:Mc((function(t,e){return{name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol"),default:t.getAttribute("default"),multipleValues:k_(t.getAttribute("multipleValues")),nearestValue:k_(t.getAttribute("nearestValue")),current:k_(t.getAttribute("current")),values:U_(t)}})),Attribution:Fc((function(t,e){return Uc({},gC,t,e)})),AuthorityURL:Mc((function(t,e){var r=TC(t,e);if(r)return r.name=t.getAttribute("name"),r;return})),Identifier:Mc(U_),MetadataURL:Mc((function(t,e){var r=TC(t,e);if(r)return r.type=t.getAttribute("type"),r;return})),DataURL:Mc(TC),FeatureListURL:Mc(TC),Style:Mc((function(t,e){return Uc({},xC,t,e)})),MinScaleDenominator:Fc(N_),MaxScaleDenominator:Fc(N_),Layer:Mc(EC)}),gC=Gc(oC,{Title:Fc(U_),OnlineResource:Fc(hS),LogoURL:Fc(OC)}),yC=Gc(oC,{westBoundLongitude:Fc(N_),eastBoundLongitude:Fc(N_),southBoundLatitude:Fc(N_),northBoundLatitude:Fc(N_)}),mC=Gc(oC,{GetCapabilities:Fc(CC),GetMap:Fc(CC),GetFeatureInfo:Fc(CC)}),vC=Gc(oC,{Format:Mc(U_),DCPType:Mc((function(t,e){return Uc({},_C,t,e)}))}),_C=Gc(oC,{HTTP:Fc((function(t,e){return Uc({},bC,t,e)}))}),bC=Gc(oC,{Get:Fc(TC),Post:Fc(TC)}),xC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),LegendURL:Mc(OC),StyleSheetURL:Fc(TC),StyleURL:Fc(TC)}),wC=Gc(oC,{Format:Fc(U_),OnlineResource:Fc(hS)}),SC=Gc(oC,{Keyword:Ic(U_)});function EC(t,e){var r=e[e.length-1],n=Uc({},dC,t,e);if(n){var i=k_(t.getAttribute("queryable"));void 0===i&&(i=r.queryable),n.queryable=void 0!==i&&i;var o=z_(t.getAttribute("cascaded"));void 0===o&&(o=r.cascaded),n.cascaded=o;var a=k_(t.getAttribute("opaque"));void 0===a&&(a=r.opaque),n.opaque=void 0!==a&&a;var s=k_(t.getAttribute("noSubsets"));void 0===s&&(s=r.noSubsets),n.noSubsets=void 0!==s&&s;var l=D_(t.getAttribute("fixedWidth"));l||(l=r.fixedWidth),n.fixedWidth=l;var u=D_(t.getAttribute("fixedHeight"));u||(u=r.fixedHeight),n.fixedHeight=u;["Style","CRS","AuthorityURL"].forEach((function(t){if(t in r){var e=n[t]||[];n[t]=e.concat(r[t])}}));return["EX_GeographicBoundingBox","BoundingBox","Dimension","Attribution","MinScaleDenominator","MaxScaleDenominator"].forEach((function(t){if(!(t in n)){var e=r[t];n[t]=e}})),n}}function TC(t,e){return Uc({},wC,t,e)}function CC(t,e){return Uc({},vC,t,e)}function OC(t,e){var r=TC(t,e);if(r){var n=[z_(t.getAttribute("width")),z_(t.getAttribute("height"))];return r.size=n,r}}function PC(t,e){return Uc([],SC,t,e)}var RC=lC,IC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),LC=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureNS_="http://mapserver.gis.umn.edu/mapserver",r.gmlFormat_=new $_,r.layers_=n.layers?n.layers:null,r}return IC(e,t),e.prototype.getLayers=function(){return this.layers_},e.prototype.setLayers=function(t){this.layers_=t},e.prototype.readFeatures_=function(t,e){t.setAttribute("namespaceURI",this.featureNS_);var r=t.localName,n=[];if(0===t.childNodes.length)return n;if("msGMLOutput"==r)for(var i=0,o=t.childNodes.length;i.75*c||u>.75*h?this.resetExtent_():te(o,n)||this.recenter_()}}},e.prototype.resetExtent_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getSize(),n=t.getView().calculateExtentInternal(r),i=e.getView(),o=Math.log(7.5)/Math.LN2;Me(n,1/(.1*Math.pow(2,o/2))),i.fitInternal(gi(n))},e.prototype.recenter_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getView();e.getView().setCenterInternal(r.getCenterInternal())},e.prototype.updateBox_=function(){var t=this.getMap(),e=this.ovmap_;if(t.isRendered()&&e.isRendered()){var r=t.getSize(),n=t.getView(),i=e.getView(),o=this.rotateWithView_?0:-n.getRotation(),a=this.boxOverlay_,s=this.boxOverlay_.getElement(),l=n.getCenterInternal(),u=n.getResolution(),c=i.getResolution(),h=r[0]*u/c,p=r[1]*u/c;if(a.setPosition(l),s){s.style.width=h+"px",s.style.height=p+"px";var f="rotate("+o+"rad)";s.style.transform=f}}},e.prototype.handleClick_=function(t){t.preventDefault(),this.handleToggle_()},e.prototype.handleToggle_=function(){this.element.classList.toggle("ol-collapsed"),this.collapsed_?po(this.collapseLabel_,this.label_):po(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;var t=this.ovmap_;if(!this.collapsed_){if(t.isRendered())return this.viewExtent_=void 0,void t.render();t.updateSize(),this.resetExtent_(),K(t,qa,(function(t){this.updateBox_()}),this)}},e.prototype.getCollapsible=function(){return this.collapsible_},e.prototype.setCollapsible=function(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.collapsed_&&this.handleToggle_())},e.prototype.setCollapsed=function(t){this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()},e.prototype.getCollapsed=function(){return this.collapsed_},e.prototype.getRotateWithView=function(){return this.rotateWithView_},e.prototype.setRotateWithView=function(t){this.rotateWithView_!==t&&(this.rotateWithView_=t,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))},e.prototype.getOverviewMap=function(){return this.ovmap_},e.prototype.render=function(t){this.validateExtent_(),this.updateBox_()},e}(As),lO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),uO="degrees",cO="imperial",hO="nautical",pO="metric",fO="us",dO=[1,2,5],gO=function(t){function e(e){var r=this,n=e||{},i=void 0!==n.className?n.className:n.bar?"ol-scale-bar":"ol-scale-line";return(r=t.call(this,{element:document.createElement("div"),render:n.render,target:n.target})||this).innerElement_=document.createElement("div"),r.innerElement_.className=i+"-inner",r.element.className=i+" ol-unselectable",r.element.appendChild(r.innerElement_),r.viewState_=null,r.minWidth_=void 0!==n.minWidth?n.minWidth:64,r.renderedVisible_=!1,r.renderedWidth_=void 0,r.renderedHTML_="",r.addEventListener(it("units"),r.handleUnitsChanged_),r.setUnits(n.units||pO),r.scaleBar_=n.bar||!1,r.scaleBarSteps_=n.steps||4,r.scaleBarText_=n.text||!1,r.dpi_=n.dpi||void 0,r}return lO(e,t),e.prototype.getUnits=function(){return this.get("units")},e.prototype.handleUnitsChanged_=function(){this.updateElement_()},e.prototype.setUnits=function(t){this.set("units",t)},e.prototype.setDpi=function(t){this.dpi_=t},e.prototype.updateElement_=function(){var t=this.viewState_;if(t){var e=t.center,r=t.projection,n=this.getUnits(),i=n==uO?St.DEGREES:St.METERS,o=zr(r,t.resolution,e,i),a=this.minWidth_*(this.dpi_||25.4/.28)/(25.4/.28),s=a*o,l="";if(n==uO){var u=wt[St.DEGREES];(s*=u)=a)break;++d}f=this.scaleBar_?this.createScaleBar(h,c,l):c.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=f&&(this.innerElement_.innerHTML=f,this.renderedHTML_=f),this.renderedWidth_!=h&&(this.innerElement_.style.width=h+"px",this.renderedWidth_=h),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,r){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),i=[],o=t/this.scaleBarSteps_,a="#ffffff",s=0;s

'+this.createMarker("relative",s)+(s%2==0||2===this.scaleBarSteps_?this.createStepText(s,t,!1,e,r):"")+""),s===this.scaleBarSteps_-1&&i.push(this.createStepText(s+1,t,!0,e,r)),a="#ffffff"===a?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+n+"
":"")+i.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,r,n,i){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+i);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=zr(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center),e=this.dpi_||25.4/.28,r=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*r*(1e3/25.4)*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(As),yO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),mO=0,vO=1,_O=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),render:n.render})||this).dragListenerKeys_=[],r.currentResolution_=void 0,r.direction_=mO,r.dragging_,r.heightLimit_=0,r.widthLimit_=0,r.startX_,r.startY_,r.thumbSize_=null,r.sliderInitialized_=!1,r.duration_=void 0!==n.duration?n.duration:200;var i=void 0!==n.className?n.className:"ol-zoomslider",o=document.createElement("button");o.setAttribute("type","button"),o.className=i+"-thumb ol-unselectable";var a=r.element;return a.className=i+" ol-unselectable ol-control",a.appendChild(o),a.addEventListener(Ua,r.handleDraggerStart_.bind(r),!1),a.addEventListener(za,r.handleDraggerDrag_.bind(r),!1),a.addEventListener(Ba,r.handleDraggerEnd_.bind(r),!1),a.addEventListener(N,r.handleContainerClick_.bind(r),!1),o.addEventListener(N,u,!1),r}return yO(e,t),e.prototype.setMap=function(e){t.prototype.setMap.call(this,e),e&&e.render()},e.prototype.initSlider_=function(){var t=this.element,e=t.offsetWidth,r=t.offsetHeight;if(0===e&&0===r)return this.sliderInitialized_=!1;var n=t.firstElementChild,i=getComputedStyle(n),o=n.offsetWidth+parseFloat(i.marginRight)+parseFloat(i.marginLeft),a=n.offsetHeight+parseFloat(i.marginTop)+parseFloat(i.marginBottom);return this.thumbSize_=[o,a],e>r?(this.direction_=vO,this.widthLimit_=e-o):(this.direction_=mO,this.heightLimit_=r-a),this.sliderInitialized_=!0},e.prototype.handleContainerClick_=function(t){var e=this.getMap().getView(),r=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),n=this.getResolutionForPosition_(r),i=e.getConstrainedZoom(e.getZoomForResolution(n));e.animateInternal({zoom:i,duration:this.duration_,easing:io})},e.prototype.handleDraggerStart_=function(t){if(!this.dragging_&&t.target===this.element.firstElementChild){var e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,0===this.dragListenerKeys_.length){var r=this.handleDraggerDrag_,n=this.handleDraggerEnd_,i=this.getMap().getOwnerDocument();this.dragListenerKeys_.push(Z(i,za,r,this),Z(i,Ba,n,this))}}},e.prototype.handleDraggerDrag_=function(t){if(this.dragging_){var e=t.clientX-this.startX_,r=t.clientY-this.startY_,n=this.getRelativePosition_(e,r);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_)}},e.prototype.handleDraggerEnd_=function(t){this.dragging_&&(this.getMap().getView().endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(H),this.dragListenerKeys_.length=0)},e.prototype.setThumbPosition_=function(t){var e=this.getPositionForResolution_(t),r=this.element.firstElementChild;this.direction_==vO?r.style.left=this.widthLimit_*e+"px":r.style.top=this.heightLimit_*e+"px"},e.prototype.getRelativePosition_=function(t,e){return Ne(this.direction_===vO?t/this.widthLimit_:e/this.heightLimit_,0,1)},e.prototype.getResolutionForPosition_=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},e.prototype.getPositionForResolution_=function(t){return Ne(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)},e.prototype.render=function(t){if(t.frameState&&(this.sliderInitialized_||this.initSlider_())){var e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}},e}(As),bO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xO=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),target:n.target})||this).extent=n.extent?n.extent:null;var i=void 0!==n.className?n.className:"ol-zoom-extent",o=void 0!==n.label?n.label:"E",a=void 0!==n.tipLabel?n.tipLabel:"Fit to extent",s=document.createElement("button");s.setAttribute("type","button"),s.title=a,s.appendChild("string"==typeof o?document.createTextNode(o):o),s.addEventListener(N,r.handleClick_.bind(r),!1);var l=i+" ol-unselectable ol-control",u=r.element;return u.className=l,u.appendChild(s),r}return bO(e,t),e.prototype.handleClick_=function(t){t.preventDefault(),this.handleZoomToExtent()},e.prototype.handleZoomToExtent=function(){var t=this.getMap().getView(),e=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal(gi(e))},e}(As),wO={};wO.AssertionError=l||{},wO.Collection=ht||{},wO.Collection.CollectionEvent=ct||{},wO.Disposable=p||{},wO.Feature=gt||{},wO.Feature.createStyleFunction=dt||{},wO.Geolocation=Ii||{},wO.Image=Ki||{},wO.Image.listenImage=Zi||{},wO.ImageBase=Mi||{},wO.ImageCanvas=$i||{},wO.ImageTile=vo||{},wO.Kinetic=_o||{},wO.Map=Wl||{},wO.MapBrowserEvent=Da||{},wO.MapBrowserEventHandler=Wa||{},wO.MapEvent=ja||{},wO.Object=ot||{},wO.Object.ObjectEvent=et||{},wO.Object.getChangeEventType=it||{},wO.Observable=Q||{},wO.Observable.unByKey=J||{},wO.Overlay=su||{},wO.PluggableMap=Ms||{},wO.Tile=lo||{},wO.TileCache=yu||{},wO.TileQueue=es||{},wO.TileQueue.getTilePriority=rs||{},wO.TileRange=_u||{},wO.TileRange.createOrUpdate=vu||{},wO.VectorRenderTile=wu||{},wO.VectorTile=Eu||{},wO.View=Cs||{},wO.View.createCenterConstraint=xs||{},wO.View.createResolutionConstraint=ws||{},wO.View.createRotationConstraint=Ss||{},wO.View.isNoopAnimation=Es||{},wO.array={},wO.array.binarySearch=f||{},wO.array.equals=b||{},wO.array.extend=v||{},wO.array.find=_||{},wO.array.findIndex=x||{},wO.array.includes=g||{},wO.array.isSorted=w||{},wO.array.linearFindNearest=y||{},wO.array.numberSafeCompareFunction=d||{},wO.array.remove=function(t,e){var r=t.indexOf(e),n=r>-1;return n&&t.splice(r,1),n}||{},wO.array.reverseSubArray=m||{},wO.array.stableSort=function(t,e){var r,n=t.length,i=Array(t.length);for(r=0;r3&&!!zn(t,e,r,n)}||{},wO.geom.flat.transform={},wO.geom.flat.transform.rotate=un||{},wO.geom.flat.transform.scale=cn||{},wO.geom.flat.transform.transform2D=ln||{},wO.geom.flat.transform.translate=hn||{},wO.has={},wO.has.DEVICE_PIXEL_RATIO=Vi||{},wO.has.FIREFOX=Gi||{},wO.has.IMAGE_DECODE=Wi||{},wO.has.MAC=Bi||{},wO.has.PASSIVE_EVENT_LISTENERS=qi||{},wO.has.SAFARI=zi||{},wO.has.WEBKIT=Ui||{},wO.has.WORKER_OFFSCREEN_CANVAS=Yi||{},wO.interaction={},wO.interaction.DoubleClickZoom=Zs||{},wO.interaction.DragAndDrop=Ev||{},wO.interaction.DragAndDrop.DragAndDropEvent=Sv||{},wO.interaction.DragBox=El||{},wO.interaction.DragBox.DragBoxEvent=Sl||{},wO.interaction.DragPan=fl||{},wO.interaction.DragRotate=gl||{},wO.interaction.DragRotateAndZoom=Cv||{},wO.interaction.DragZoom=Cl||{},wO.interaction.Draw=Gv||{},wO.interaction.Draw.DrawEvent=Dv||{},wO.interaction.Draw.createBox=function(){return function(t,e,r){var n=Kt([t[0],t[t.length-1]].map((function(t){return rn(t,r)}))),i=[[_e(n),be(n),Oe(n),Ce(n),_e(n)]],o=e;o?o.setCoordinates(i):o=new fi(i);var a=tn();return a&&o.transform(r,a),o}}||{},wO.interaction.Draw.createRegularPolygon=function(t,e){return function(r,n,i){var o=rn(r[0],i),a=rn(r[r.length-1],i),s=Math.sqrt(Rr(o,a)),l=n||yi(new Rv(o),t),u=e;if(!e&&0!==e){var c=a[0]-o[0],h=a[1]-o[1];u=Math.atan2(h,c)}mi(l,o,s,u);var p=tn();return p&&l.transform(i,p),l}}||{},wO.interaction.Extent=qv||{},wO.interaction.Extent.ExtentEvent=Bv||{},wO.interaction.Interaction=qs||{},wO.interaction.Interaction.pan=Ys||{},wO.interaction.Interaction.zoomByDelta=Ws||{},wO.interaction.KeyboardPan=Ml||{},wO.interaction.KeyboardZoom=Al||{},wO.interaction.Modify=r_||{},wO.interaction.Modify.ModifyEvent=Jv||{},wO.interaction.MouseWheelZoom=Dl||{},wO.interaction.PinchRotate=zl||{},wO.interaction.PinchZoom=Bl||{},wO.interaction.Pointer=$s||{},wO.interaction.Pointer.centroid=Hs||{},wO.interaction.Select=s_||{},wO.interaction.Select.SelectEvent=o_||{},wO.interaction.Snap=h_||{},wO.interaction.Translate=m_||{},wO.interaction.Translate.TranslateEvent=y_||{},wO.interaction.defaults=Vl||{},wO.layer={},wO.layer.Base=Wo||{},wO.layer.BaseImage=ad||{},wO.layer.BaseTile=vd||{},wO.layer.BaseVector=wg||{},wO.layer.Graticule=Ny||{},wO.layer.Group=Aa||{},wO.layer.Heatmap=Vy||{},wO.layer.Image=dd||{},wO.layer.Layer=na||{},wO.layer.Layer.inView=ra||{},wO.layer.MapboxVector=yv||{},wO.layer.MapboxVector.getMapboxPath=uv||{},wO.layer.MapboxVector.normalizeGlyphsUrl=hv||{},wO.layer.MapboxVector.normalizeSourceUrl=fv||{},wO.layer.MapboxVector.normalizeSpriteUrl=cv||{},wO.layer.MapboxVector.normalizeStyleUrl=pv||{},wO.layer.Tile=Sd||{},wO.layer.Vector=Iy||{},wO.layer.VectorImage=vv||{},wO.layer.VectorTile=lm||{},wO.layer.WebGLPoints=bv||{},wO.loadingstrategy={},wO.loadingstrategy.all=Fu||{},wO.loadingstrategy.bbox=function(t,e){return[t]}||{},wO.loadingstrategy.tile=function(t){return function(e,r){var n=t.getZForResolution(r),i=t.getTileRangeForExtentAndZ(e,n),o=[],a=[n,0,0];for(a[1]=i.minX;a[1]<=i.maxX;++a[1])for(a[2]=i.minY;a[2]<=i.maxY;++a[2])o.push(t.getTileCoordExtent(a));return o}}||{},wO.math={},wO.math.clamp=Ne||{},wO.math.cosh=De||{},wO.math.lerp=qe||{},wO.math.log2=Ge||{},wO.math.modulo=We||{},wO.math.solveLinearSystem=Be||{},wO.math.squaredDistance=Ue||{},wO.math.squaredSegmentDistance=ze||{},wO.math.toDegrees=Ve||{},wO.math.toRadians=Ye||{},wO.net={},wO.net.jsonp=Au||{},wO.obj={},wO.obj.assign=O||{},wO.obj.clear=P||{},wO.obj.getValues=R||{},wO.obj.isEmpty=I||{},wO.proj={},wO.proj.Projection=je||{},wO.proj.Units=St||{},wO.proj.Units.METERS_PER_UNIT=wt||{},wO.proj.addCommon=sn||{},wO.proj.addCoordinateTransforms=Wr||{},wO.proj.addEquivalentProjections=Ur||{},wO.proj.addEquivalentTransforms=Br||{},wO.proj.addProjection=Nr||{},wO.proj.addProjections=Dr||{},wO.proj.clearAllProjections=function(){lr(),pr()}||{},wO.proj.clearUserProjection=function(){Jr=null}||{},wO.proj.cloneTransform=kr||{},wO.proj.createProjection=Vr||{},wO.proj.createSafeCoordinateTransform=an||{},wO.proj.createTransformFromCoordinateTransform=Yr||{},wO.proj.epsg3857={},wO.proj.epsg3857.EXTENT=Ke||{},wO.proj.epsg3857.HALF_SIZE=Ze||{},wO.proj.epsg3857.MAX_SAFE_Y=$e||{},wO.proj.epsg3857.PROJECTIONS=Qe||{},wO.proj.epsg3857.RADIUS=6378137,wO.proj.epsg3857.WORLD_EXTENT=He||{},wO.proj.epsg3857.fromEPSG4326=tr||{},wO.proj.epsg3857.toEPSG4326=er||{},wO.proj.epsg4326={},wO.proj.epsg4326.EXTENT=nr||{},wO.proj.epsg4326.METERS_PER_UNIT=ir||{},wO.proj.epsg4326.PROJECTIONS=ar||{},wO.proj.epsg4326.RADIUS=6378137,wO.proj.equivalent=Xr||{},wO.proj.fromLonLat=qr||{},wO.proj.fromUserCoordinate=rn||{},wO.proj.fromUserExtent=on||{},wO.proj.get=Gr||{},wO.proj.getPointResolution=zr||{},wO.proj.getTransform=Kr||{},wO.proj.getTransformFromProjections=Zr||{},wO.proj.getUserProjection=tn||{},wO.proj.identityTransform=jr||{},wO.proj.proj4={},wO.proj.proj4.register=function(t){var e,r,n=Object.keys(t.defs),i=n.length;for(e=0;e180)&&(r[0]=We(n+180,360)-180),r}||{},wO.proj.toUserCoordinate=en||{},wO.proj.toUserExtent=nn||{},wO.proj.transform=Hr||{},wO.proj.transformExtent=$r||{},wO.proj.transformWithProjections=function(t,e,r){return Zr(e,r)(t)}||{},wO.proj.transforms={},wO.proj.transforms.add=fr||{},wO.proj.transforms.clear=pr||{},wO.proj.transforms.get=dr||{},wO.proj.transforms.remove=function(t,e){var r=t.getCode(),n=e.getCode(),i=hr[r][n];return delete hr[r][n],I(hr[r])&&delete hr[r],i}||{},wO.proj.useGeographic=function(){Qr("EPSG:4326")}||{},wO.render={},wO.render.Box=ml||{},wO.render.Event=la||{},wO.render.Feature=Cy||{},wO.render.VectorContext=ku||{},wO.render.canvas={},wO.render.canvas.Builder=Mg||{},wO.render.canvas.BuilderGroup=Yg||{},wO.render.canvas.Executor=ey||{},wO.render.canvas.ExecutorGroup=ay||{},wO.render.canvas.ExecutorGroup.getPixelIndexArray=oy||{},wO.render.canvas.ImageBuilder=Ag||{},wO.render.canvas.Immediate=Nu||{},wO.render.canvas.Instruction=Ig||{},wO.render.canvas.Instruction.beginPathInstruction=Pg||{},wO.render.canvas.Instruction.closePathInstruction=Rg||{},wO.render.canvas.Instruction.fillInstruction=Cg||{},wO.render.canvas.Instruction.strokeInstruction=Og||{},wO.render.canvas.LineStringBuilder=jg||{},wO.render.canvas.PolygonBuilder=Dg||{},wO.render.canvas.TextBuilder=Bg||{},wO.render.canvas.checkedFonts=da||{},wO.render.canvas.createTransformString=Ra||{},wO.render.canvas.defaultFillStyle="#000",wO.render.canvas.defaultFont="10px sans-serif",wO.render.canvas.defaultLineCap="round",wO.render.canvas.defaultLineDash=pa||{},wO.render.canvas.defaultLineDashOffset={},wO.render.canvas.defaultLineJoin="round",wO.render.canvas.defaultLineWidth=1,wO.render.canvas.defaultMiterLimit=10,wO.render.canvas.defaultPadding=fa||{},wO.render.canvas.defaultStrokeStyle="#000",wO.render.canvas.defaultTextAlign="center",wO.render.canvas.defaultTextBaseline="middle",wO.render.canvas.drawImageOrLabel=Oa||{},wO.render.canvas.hitdetect={},wO.render.canvas.hitdetect.createHitDetectionImageData=sy||{},wO.render.canvas.hitdetect.hitDetect=ly||{},wO.render.canvas.labelCache=ga||{},wO.render.canvas.measureAndCacheTextWidth=Ea||{},wO.render.canvas.measureTextHeight=xa||{},wO.render.canvas.measureTextWidth=Sa||{},wO.render.canvas.measureTextWidths=Ta||{},wO.render.canvas.registerFont=ba||{},wO.render.canvas.rotateAtOffset=Ca||{},wO.render.canvas.textHeights=_a||{},wO.render.getRenderPixel=function(t,e){var r=e.slice(0);return It(t.inversePixelTransform.slice(),r),r}||{},wO.render.getVectorContext=Ku||{},wO.render.toContext=function(t,e){var r=t.canvas,n=e||{},i=n.pixelRatio||Vi,o=n.size;o&&(r.width=o[0]*i,r.height=o[1]*i,r.style.width=o[0]+"px",r.style.height=o[1]+"px");var a=[0,0,r.width,r.height],s=Mt([1,0,0,1,0,0],i,i);return new Nu(t,i,a,s,0)}||{},wO.renderer={},wO.renderer.Composite=La||{},wO.renderer.Layer=ld||{},wO.renderer.Map=aa||{},wO.renderer.canvas={},wO.renderer.canvas.ImageLayer=pd||{},wO.renderer.canvas.Layer=cd||{},wO.renderer.canvas.TileLayer=xd||{},wO.renderer.canvas.VectorImageLayer=py||{},wO.renderer.canvas.VectorLayer=cy||{},wO.renderer.canvas.VectorTileLayer=_y||{},wO.renderer.vector={},wO.renderer.vector.defaultOrder=Wu||{},wO.renderer.vector.getSquaredTolerance=qu||{},wO.renderer.vector.getTolerance=Xu||{},wO.renderer.vector.renderFeature=Zu||{},wO.renderer.webgl={},wO.renderer.webgl.Layer=_g||{},wO.renderer.webgl.Layer.colorDecodeId=vg||{},wO.renderer.webgl.Layer.colorEncodeId=mg||{},wO.renderer.webgl.Layer.getBlankImageData=function(){var t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t}||{},wO.renderer.webgl.Layer.writePointFeatureToBuffers=function(t,e,r,n,i,o){var a=3+i,s=t[e+0],l=t[e+1],u=dg;u.length=i;for(var c=0;c1?x(r.TileMatrixSetLink,"projection"in e?function(t,r,n){var o=_(i,(function(e){return e.Identifier==t.TileMatrixSet})).SupportedCRS,a=Gr(o),s=Gr(e.projection);return a&&s?Xr(a,s):o==e.projection}:function(t,r,n){return t.TileMatrixSet==e.matrixSet}):0)<0&&(n=0);var o=r.TileMatrixSetLink[n].TileMatrixSet,a=r.TileMatrixSetLink[n].TileMatrixSetLimits,s=r.Format[0];"format"in e&&(s=e.format),(n=x(r.Style,(function(t,r,n){return"style"in e?t.Title==e.style:t.isDefault})))<0&&(n=0);var l=r.Style[n].Identifier,u={};"Dimension"in r&&r.Dimension.forEach((function(t,e,r){var n=t.Identifier,i=t.Default;void 0===i&&(i=t.Value[0]),u[n]=i}));var c,h=_(t.Contents.TileMatrixSet,(function(t,e,r){return t.Identifier==o})),p=h.SupportedCRS;if(p&&(c=Gr(p)),"projection"in e){var f=Gr(e.projection);f&&(c&&!Xr(f,c)||(c=f))}var d="ne"==c.getAxisOrientation().substr(0,2),y=h.TileMatrix[0],m={MinTileCol:0,MinTileRow:0,MaxTileCol:y.MatrixWidth-1,MaxTileRow:y.MatrixHeight-1};if(a){m=a[a.length-1];var v=_(h.TileMatrix,(function(t){return t.Identifier===m.TileMatrix||h.Identifier+":"+t.Identifier===m.TileMatrix}));v&&(y=v)}var b=28e-5*y.ScaleDenominator/c.getMetersPerUnit(),w=d?[y.TopLeftCorner[1],y.TopLeftCorner[0]]:y.TopLeftCorner,S=y.TileWidth*b,E=y.TileHeight*b,T=[w[0]+S*m.MinTileCol,w[1]-E*(1+m.MaxTileRow),w[0]+S*(1+m.MaxTileCol),w[1]-E*m.MinTileRow];null===c.getExtent()&&c.setExtent(T);var C=Kh(h,T,a),O=[],P=e.requestEncoding;if(P=void 0!==P?P:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var R=t.OperationsMetadata.GetTile.DCP.HTTP.Get,I=0,L=R.length;I - - - - - - - @@ -78,115 +78,115 @@ L 461.875031 10.8 - - - - - - - - - @@ -243,66 +243,66 @@ z - - @@ -359,23 +359,23 @@ z - - - - diff --git a/images/parcels_user_diagram.drawio b/old_website_images/parcels_user_diagram.drawio similarity index 100% rename from images/parcels_user_diagram.drawio rename to old_website_images/parcels_user_diagram.drawio diff --git a/images/parcels_user_diagram.svg b/old_website_images/parcels_user_diagram.svg similarity index 99% rename from images/parcels_user_diagram.svg rename to old_website_images/parcels_user_diagram.svg index f92c854d..4b53319e 100644 --- a/images/parcels_user_diagram.svg +++ b/old_website_images/parcels_user_diagram.svg @@ -1,3 +1,3 @@ -
FieldSet
FieldSet
ParticleSet
ParticleSet
ParticleFile
ParticleFile
execute()
execute()
Kernel
Kernel
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
Depth
Depth
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Latitude
Latitude
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Longitude
Longitude
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Time
Time
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Viewer does not support full SVG 1.1
\ No newline at end of file +
FieldSet
FieldSet
ParticleSet
ParticleSet
ParticleFile
ParticleFile
execute()
execute()
Kernel
Kernel
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
Depth
Depth
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Latitude
Latitude
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Longitude
Longitude
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Time
Time
P 0
P 0
t = 0
t = 0
t = 1
t = 1
t = 2
t = 2
P 1
P 1
P 2
P 2
Viewer does not support full SVG 1.1
diff --git a/images/parcelsdesign.pdf b/old_website_images/parcelsdesign.pdf similarity index 100% rename from images/parcelsdesign.pdf rename to old_website_images/parcelsdesign.pdf diff --git a/images/parcelsdesign.png b/old_website_images/parcelsdesign.png similarity index 100% rename from images/parcelsdesign.png rename to old_website_images/parcelsdesign.png diff --git a/images/parcelsdesign.pptx b/old_website_images/parcelsdesign.pptx similarity index 100% rename from images/parcelsdesign.pptx rename to old_website_images/parcelsdesign.pptx diff --git a/images/parcelsdesign_minimal.pdf b/old_website_images/parcelsdesign_minimal.pdf similarity index 100% rename from images/parcelsdesign_minimal.pdf rename to old_website_images/parcelsdesign_minimal.pdf diff --git a/images/parcelsdesign_minimal.png b/old_website_images/parcelsdesign_minimal.png similarity index 100% rename from images/parcelsdesign_minimal.png rename to old_website_images/parcelsdesign_minimal.png diff --git a/images/parcelslogo.png b/old_website_images/parcelslogo.png similarity index 100% rename from images/parcelslogo.png rename to old_website_images/parcelslogo.png diff --git a/images/parcelslogo_inverse.png b/old_website_images/parcelslogo_inverse.png similarity index 100% rename from images/parcelslogo_inverse.png rename to old_website_images/parcelslogo_inverse.png diff --git a/images/parcelslogo_large.png b/old_website_images/parcelslogo_large.png similarity index 100% rename from images/parcelslogo_large.png rename to old_website_images/parcelslogo_large.png diff --git a/images/plasticparcelslogo.png b/old_website_images/plasticparcelslogo.png similarity index 100% rename from images/plasticparcelslogo.png rename to old_website_images/plasticparcelslogo.png diff --git a/images/reservoirschematic_forB2.png b/old_website_images/reservoirschematic_forB2.png similarity index 100% rename from images/reservoirschematic_forB2.png rename to old_website_images/reservoirschematic_forB2.png diff --git a/images/tutorial_argo.svg b/old_website_images/tutorial_argo.svg similarity index 100% rename from images/tutorial_argo.svg rename to old_website_images/tutorial_argo.svg diff --git a/images/tutorial_delaystart.gif b/old_website_images/tutorial_delaystart.gif similarity index 100% rename from images/tutorial_delaystart.gif rename to old_website_images/tutorial_delaystart.gif diff --git a/old_website_images/tutorial_diffusion.svg b/old_website_images/tutorial_diffusion.svg new file mode 100644 index 00000000..b1faa940 --- /dev/null +++ b/old_website_images/tutorial_diffusion.svg @@ -0,0 +1,11424 @@ + + + + + + + + + 2020-11-18T15:37:05.682692 + image/svg+xml + + + Matplotlib v3.3.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/tutorial_interpolation.svg b/old_website_images/tutorial_interpolation.svg similarity index 79% rename from images/tutorial_interpolation.svg rename to old_website_images/tutorial_interpolation.svg index fd946e1c..ea5ddaa3 100644 --- a/images/tutorial_interpolation.svg +++ b/old_website_images/tutorial_interpolation.svg @@ -22,155 +22,155 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -373,10 +373,10 @@ z - @@ -415,168 +415,168 @@ L 3 3 - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -772,48 +772,48 @@ z - - - - - - - - - @@ -853,23 +853,23 @@ L 538.02 10.8 - - - - diff --git a/images/tutorial_nemo.svg b/old_website_images/tutorial_nemo.svg similarity index 100% rename from images/tutorial_nemo.svg rename to old_website_images/tutorial_nemo.svg diff --git a/images/tutorial_nemo3d.png b/old_website_images/tutorial_nemo3d.png similarity index 100% rename from images/tutorial_nemo3d.png rename to old_website_images/tutorial_nemo3d.png diff --git a/old_website_images/tutorial_nemo3d.svg b/old_website_images/tutorial_nemo3d.svg new file mode 100644 index 00000000..ed4d9426 --- /dev/null +++ b/old_website_images/tutorial_nemo3d.svg @@ -0,0 +1,4035 @@ + + + + + + + + + 2020-11-18T15:24:31.953255 + image/svg+xml + + + Matplotlib v3.3.1, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/tutorial_nestedfields.svg b/old_website_images/tutorial_nestedfields.svg similarity index 83% rename from images/tutorial_nestedfields.svg rename to old_website_images/tutorial_nestedfields.svg index 45ee04e3..e005397d 100644 --- a/images/tutorial_nestedfields.svg +++ b/old_website_images/tutorial_nestedfields.svg @@ -22,83 +22,83 @@ - - - - - - - - - - - @@ -106,286 +106,286 @@ L 527.4 10.8 - - - - - - - - - - - @@ -674,39 +674,39 @@ z - - - - - - diff --git a/images/tutorial_output.svg b/old_website_images/tutorial_output.svg similarity index 67% rename from images/tutorial_output.svg rename to old_website_images/tutorial_output.svg index 03c047d1..1a28a1fa 100644 --- a/images/tutorial_output.svg +++ b/old_website_images/tutorial_output.svg @@ -22,19 +22,19 @@ - - @@ -56,30 +56,30 @@ z - - @@ -100,29 +100,29 @@ z - - @@ -142,28 +142,28 @@ z - - @@ -182,27 +182,27 @@ z - - @@ -220,26 +220,26 @@ z - - @@ -256,25 +256,25 @@ z - - @@ -290,24 +290,24 @@ z - - @@ -322,23 +322,23 @@ z - - @@ -352,22 +352,22 @@ z - - @@ -380,21 +380,21 @@ z - - @@ -406,23 +406,23 @@ z - - - - diff --git a/images/tutorial_periodicbcs.svg b/old_website_images/tutorial_periodicbcs.svg similarity index 75% rename from images/tutorial_periodicbcs.svg rename to old_website_images/tutorial_periodicbcs.svg index 43754b2f..6cca76c0 100644 --- a/images/tutorial_periodicbcs.svg +++ b/old_website_images/tutorial_periodicbcs.svg @@ -22,19 +22,19 @@ - - @@ -53,42 +53,42 @@ z - - @@ -121,42 +121,42 @@ z - - @@ -189,42 +189,42 @@ z - - @@ -257,42 +257,42 @@ z - - @@ -325,42 +325,42 @@ z - - @@ -393,42 +393,42 @@ z - - @@ -461,42 +461,42 @@ z - - @@ -529,42 +529,42 @@ z - - @@ -597,42 +597,42 @@ z - - @@ -665,42 +665,42 @@ z - - @@ -733,23 +733,23 @@ z - - - - diff --git a/images/tutorial_plotting.png b/old_website_images/tutorial_plotting.png similarity index 100% rename from images/tutorial_plotting.png rename to old_website_images/tutorial_plotting.png diff --git a/images/tutorial_sampling.svg b/old_website_images/tutorial_sampling.svg similarity index 82% rename from images/tutorial_sampling.svg rename to old_website_images/tutorial_sampling.svg index 19b1a2d0..d8742498 100644 --- a/images/tutorial_sampling.svg +++ b/old_website_images/tutorial_sampling.svg @@ -22,270 +22,270 @@ - - - - - - - - - - - - @@ -302,15 +302,15 @@ L 225.821919 20.340027 - @@ -976,36 +976,36 @@ z - - - - - @@ -1017,83 +1017,83 @@ iVBORw0KGgoAAAANSUhEUgAAABEAAAFSCAYAAAAU1jSMAAACB0lEQVR4nO2cQW7EQAgEYTL5/4/jvS++ - - - - - @@ -1107,14 +1107,14 @@ z - diff --git a/images/tutorial_summedfields.svg b/old_website_images/tutorial_summedfields.svg similarity index 71% rename from images/tutorial_summedfields.svg rename to old_website_images/tutorial_summedfields.svg index bdefdc84..b39edf1e 100644 --- a/images/tutorial_summedfields.svg +++ b/old_website_images/tutorial_summedfields.svg @@ -22,62 +22,62 @@ - - - - - - - - @@ -85,91 +85,91 @@ L 540 10.8 - - - - - - - - - - - @@ -188,23 +188,23 @@ z - - - - diff --git a/images/tutorial_unitconverters.png b/old_website_images/tutorial_unitconverters.png similarity index 100% rename from images/tutorial_unitconverters.png rename to old_website_images/tutorial_unitconverters.png diff --git a/images/tutorial_unitconverters.svg b/old_website_images/tutorial_unitconverters.svg similarity index 100% rename from images/tutorial_unitconverters.svg rename to old_website_images/tutorial_unitconverters.svg diff --git a/images/waddendrifter.jpg b/old_website_images/waddendrifter.jpg similarity index 100% rename from images/waddendrifter.jpg rename to old_website_images/waddendrifter.jpg diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..02879799 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10168 @@ +{ + "name": "oceanparcels_website", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "oceanparcels_website", + "version": "1.0.0", + "license": "Apache 2.0", + "dependencies": { + "@chakra-ui/icons": "^2.2.1", + "@chakra-ui/next-js": "^2.3.1", + "@chakra-ui/react": "^2.9.1", + "@chakra-ui/system": "^2.6.2", + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@fontsource-variable/inter": "^5.1.1", + "@mdx-js/loader": "^3.0.1", + "@mdx-js/react": "^3.0.1", + "@next/mdx": "^14.2.14", + "apexcharts": "^4", + "d3": "^7.9.0", + "date-fns": "^3.0.0", + "date-fns-tz": "^3.2.0", + "feed": "^4.2.2", + "framer-motion": "^11.9.0", + "glob": "^11.0.1", + "gray-matter": "^4.0.3", + "isomorphic-dompurify": "^2.16.0", + "next": "^14.2.21", + "next-mdx-remote": "^5.0.0", + "react": "^18.3.1", + "react-apexcharts": "^1.4.1", + "react-dom": "^18.3.1", + "react-icons": "^5.3.0", + "react-syntax-highlighter": "^15.5.0", + "rehype-slug": "^6.0.0", + "swr": "^2.2.5" + }, + "devDependencies": { + "@types/react": "^18.3.11", + "eslint": "^9.12.0", + "eslint-config-next": "15.2.4", + "playwright": "^1.47.2", + "typescript": ">=5.7.3", + "webpack": "^5.97.1" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", + "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.2", + "@csstools/css-color-parser": "^3.0.8", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@chakra-ui/anatomy": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.2.2.tgz", + "integrity": "sha512-MV6D4VLRIHr4PkW4zMyqfrNS1mPlCTiCXwvYGtDFQYr+xHFfonhAuf9WjsSc0nyp2m0OdkSLnzmVKkZFLo25Tg==", + "license": "MIT" + }, + "node_modules/@chakra-ui/color-mode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/color-mode/-/color-mode-2.2.0.tgz", + "integrity": "sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg==", + "license": "MIT", + "dependencies": { + "@chakra-ui/react-use-safe-layout-effect": "2.1.0" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/hooks": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/hooks/-/hooks-2.4.4.tgz", + "integrity": "sha512-+gMwLIkabtddIL/GICU7JmnYtvfONP+fNiTfdYLV9/I1eyCz8igKgLmFJOGM6F+BpUev6hh+/+DX5ezGQ9VTbQ==", + "license": "MIT", + "dependencies": { + "@chakra-ui/utils": "2.2.4", + "@zag-js/element-size": "0.31.1", + "copy-to-clipboard": "3.3.3", + "framesync": "6.1.2" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/icons": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/icons/-/icons-2.2.4.tgz", + "integrity": "sha512-l5QdBgwrAg3Sc2BRqtNkJpfuLw/pWRDwwT58J6c4PqQT6wzXxyNa8Q0PForu1ltB5qEiFb1kxr/F/HO1EwNa6g==", + "license": "MIT", + "peerDependencies": { + "@chakra-ui/react": ">=2.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/next-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/next-js/-/next-js-2.4.2.tgz", + "integrity": "sha512-loo82RyPbMyvJwRhhZVZovut9v2hFBSkqd1vQoNXgMrCRApLwrrttu5Iuodns15gLE3mqI+it5oEhxTtO5DrxA==", + "license": "MIT", + "dependencies": { + "@emotion/cache": "^11.11.0" + }, + "peerDependencies": { + "@chakra-ui/react": ">=2.4.0", + "@emotion/react": ">=11", + "next": ">=13", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/object-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz", + "integrity": "sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ==", + "license": "MIT" + }, + "node_modules/@chakra-ui/react": { + "version": "2.10.7", + "resolved": "https://registry.npmjs.org/@chakra-ui/react/-/react-2.10.7.tgz", + "integrity": "sha512-GX1dCmnvrxxyZEofDX9GMAtRakZJKnUqFM9k8qhaycPaeyfkiTNNTjhPNX917hgVx1yhC3kcJOs5IeC7yW56/g==", + "license": "MIT", + "dependencies": { + "@chakra-ui/hooks": "2.4.4", + "@chakra-ui/styled-system": "2.12.2", + "@chakra-ui/theme": "3.4.8", + "@chakra-ui/utils": "2.2.4", + "@popperjs/core": "^2.11.8", + "@zag-js/focus-visible": "^0.31.1", + "aria-hidden": "^1.2.3", + "react-fast-compare": "3.2.2", + "react-focus-lock": "^2.9.6", + "react-remove-scroll": "^2.5.7" + }, + "peerDependencies": { + "@emotion/react": ">=11", + "@emotion/styled": ">=11", + "framer-motion": ">=4.0.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@chakra-ui/react-use-safe-layout-effect": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.1.0.tgz", + "integrity": "sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw==", + "license": "MIT", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-utils": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz", + "integrity": "sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==", + "license": "MIT", + "dependencies": { + "@chakra-ui/utils": "2.0.15" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@chakra-ui/react-utils/node_modules/@chakra-ui/utils": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.15.tgz", + "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==", + "license": "MIT", + "dependencies": { + "@types/lodash.mergewith": "4.6.7", + "css-box-model": "1.2.1", + "framesync": "6.1.2", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/react-utils/node_modules/@types/lodash.mergewith": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz", + "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@chakra-ui/react/node_modules/@chakra-ui/anatomy": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@chakra-ui/anatomy/-/anatomy-2.3.6.tgz", + "integrity": "sha512-TjmjyQouIZzha/l8JxdBZN1pKZTj7sLpJ0YkFnQFyqHcbfWggW9jKWzY1E0VBnhtFz/xF3KC6UAVuZVSJx+y0g==", + "license": "MIT" + }, + "node_modules/@chakra-ui/react/node_modules/@chakra-ui/styled-system": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.12.2.tgz", + "integrity": "sha512-BlQ7i3+GYC0S0c72B+paa0sYo+QeNSMfz6fwQRFsc8A5Aax9i9lSdRL+vwJVC+k6r/0HWfRwk016R2RD2ihEwQ==", + "license": "MIT", + "dependencies": { + "@chakra-ui/utils": "2.2.4", + "csstype": "^3.1.2" + } + }, + "node_modules/@chakra-ui/react/node_modules/@chakra-ui/theme": { + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-3.4.8.tgz", + "integrity": "sha512-ZLMP2Gek38ZTIlj+sMZLsd1TW27yVdmUKMfBmjsr1psAeOa5bDBLKDszICjhEqk7gAbiWB7jr1/HzBXid4kduQ==", + "license": "MIT", + "dependencies": { + "@chakra-ui/anatomy": "2.3.6", + "@chakra-ui/theme-tools": "2.2.8", + "@chakra-ui/utils": "2.2.4" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.8.0" + } + }, + "node_modules/@chakra-ui/react/node_modules/@chakra-ui/theme-tools": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.2.8.tgz", + "integrity": "sha512-X2i2qgkG+k3DQfh/adn3zzM4Ty8QrGobVPjMl9rMrEYq3ac+pur6KVdVHy/SwwoPvB6S4i84uq7y35+KbJan9g==", + "license": "MIT", + "dependencies": { + "@chakra-ui/anatomy": "2.3.6", + "@chakra-ui/utils": "2.2.4", + "color2k": "^2.0.2" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" + } + }, + "node_modules/@chakra-ui/shared-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz", + "integrity": "sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==", + "license": "MIT" + }, + "node_modules/@chakra-ui/styled-system": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/styled-system/-/styled-system-2.9.2.tgz", + "integrity": "sha512-To/Z92oHpIE+4nk11uVMWqo2GGRS86coeMmjxtpnErmWRdLcp1WVCVRAvn+ZwpLiNR+reWFr2FFqJRsREuZdAg==", + "license": "MIT", + "dependencies": { + "@chakra-ui/shared-utils": "2.0.5", + "csstype": "^3.1.2", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/system": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/system/-/system-2.6.2.tgz", + "integrity": "sha512-EGtpoEjLrUu4W1fHD+a62XR+hzC5YfsWm+6lO0Kybcga3yYEij9beegO0jZgug27V+Rf7vns95VPVP6mFd/DEQ==", + "license": "MIT", + "dependencies": { + "@chakra-ui/color-mode": "2.2.0", + "@chakra-ui/object-utils": "2.1.0", + "@chakra-ui/react-utils": "2.0.12", + "@chakra-ui/styled-system": "2.9.2", + "@chakra-ui/theme-utils": "2.0.21", + "@chakra-ui/utils": "2.0.15", + "react-fast-compare": "3.2.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "react": ">=18" + } + }, + "node_modules/@chakra-ui/system/node_modules/@chakra-ui/utils": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.0.15.tgz", + "integrity": "sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==", + "license": "MIT", + "dependencies": { + "@types/lodash.mergewith": "4.6.7", + "css-box-model": "1.2.1", + "framesync": "6.1.2", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/system/node_modules/@types/lodash.mergewith": { + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz", + "integrity": "sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@chakra-ui/theme": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme/-/theme-3.3.1.tgz", + "integrity": "sha512-Hft/VaT8GYnItGCBbgWd75ICrIrIFrR7lVOhV/dQnqtfGqsVDlrztbSErvMkoPKt0UgAkd9/o44jmZ6X4U2nZQ==", + "license": "MIT", + "dependencies": { + "@chakra-ui/anatomy": "2.2.2", + "@chakra-ui/shared-utils": "2.0.5", + "@chakra-ui/theme-tools": "2.1.2" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.8.0" + } + }, + "node_modules/@chakra-ui/theme-tools": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-tools/-/theme-tools-2.1.2.tgz", + "integrity": "sha512-Qdj8ajF9kxY4gLrq7gA+Azp8CtFHGO9tWMN2wfF9aQNgG9AuMhPrUzMq9AMQ0MXiYcgNq/FD3eegB43nHVmXVA==", + "license": "MIT", + "dependencies": { + "@chakra-ui/anatomy": "2.2.2", + "@chakra-ui/shared-utils": "2.0.5", + "color2k": "^2.0.2" + }, + "peerDependencies": { + "@chakra-ui/styled-system": ">=2.0.0" + } + }, + "node_modules/@chakra-ui/theme-utils": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@chakra-ui/theme-utils/-/theme-utils-2.0.21.tgz", + "integrity": "sha512-FjH5LJbT794r0+VSCXB3lT4aubI24bLLRWB+CuRKHijRvsOg717bRdUN/N1fEmEpFnRVrbewttWh/OQs0EWpWw==", + "license": "MIT", + "dependencies": { + "@chakra-ui/shared-utils": "2.0.5", + "@chakra-ui/styled-system": "2.9.2", + "@chakra-ui/theme": "3.3.1", + "lodash.mergewith": "4.6.2" + } + }, + "node_modules/@chakra-ui/utils": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@chakra-ui/utils/-/utils-2.2.4.tgz", + "integrity": "sha512-nRpR9SnX7aLcJx7lKu8kgQWxdJso1oR/78HcBI+mzidvWdTykbTGdm5Q2R7S0PVH1IFBzBTgi6TiAjHvu96auA==", + "license": "MIT", + "dependencies": { + "@types/lodash.mergewith": "4.6.9", + "lodash.mergewith": "4.6.2" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.3.3", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/js": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@fontsource-variable/inter": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.5.tgz", + "integrity": "sha512-TrWffUAFOnT8zroE9YmGybagoOgM/HjRqMQ8k9R0vVgXlnUh/vnpbGPAS/Caz1KIlOPnPGh6fvJbb7DHbFCncA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/loader": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-3.1.0.tgz", + "integrity": "sha512-xU/lwKdOyfXtQGqn3VnJjlDrmKXEvMi1mgYxVmukEUtVycIz1nh7oQ40bKTd4cA7rLStqu0740pnhGYxGoqsCg==", + "license": "MIT", + "dependencies": { + "@mdx-js/mdx": "^3.0.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "webpack": ">=5" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", + "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@next/env": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.26.tgz", + "integrity": "sha512-vO//GJ/YBco+H7xdQhzJxF7ub3SUwft76jwaeOyVVQFHCi5DCnkP16WHB+JBylo4vOKPoZBlR94Z8xBxNBdNJA==", + "license": "MIT" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.2.4.tgz", + "integrity": "sha512-O8ScvKtnxkp8kL9TpJTTKnMqlkZnS+QxwoQnJwPGBxjBbzd6OVVPEJ5/pMNrktSyXQD/chEfzfFzYLM6JANOOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "3.3.1" + } + }, + "node_modules/@next/mdx": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-14.2.26.tgz", + "integrity": "sha512-Sw28KDWr57wzZa7mPfpCxGoLdlROllOAiTlZx0dcnDDwOctOrlr83ifkvOVZ7C3+YCbYZHqzxB8Dhu0q+47qDg==", + "license": "MIT", + "dependencies": { + "source-map": "^0.7.0" + }, + "peerDependencies": { + "@mdx-js/loader": ">=0.15.0", + "@mdx-js/react": ">=0.15.0" + }, + "peerDependenciesMeta": { + "@mdx-js/loader": { + "optional": true + }, + "@mdx-js/react": { + "optional": true + } + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.26.tgz", + "integrity": "sha512-zDJY8gsKEseGAxG+C2hTMT0w9Nk9N1Sk1qV7vXYz9MEiyRoF5ogQX2+vplyUMIfygnjn9/A04I6yrUTRTuRiyQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.26.tgz", + "integrity": "sha512-U0adH5ryLfmTDkahLwG9sUQG2L0a9rYux8crQeC92rPhi3jGQEY47nByQHrVrt3prZigadwj/2HZ1LUUimuSbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.26.tgz", + "integrity": "sha512-SINMl1I7UhfHGM7SoRiw0AbwnLEMUnJ/3XXVmhyptzriHbWvPPbbm0OEVG24uUKhuS1t0nvN/DBvm5kz6ZIqpg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.26.tgz", + "integrity": "sha512-s6JaezoyJK2DxrwHWxLWtJKlqKqTdi/zaYigDXUJ/gmx/72CrzdVZfMvUc6VqnZ7YEvRijvYo+0o4Z9DencduA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.26.tgz", + "integrity": "sha512-FEXeUQi8/pLr/XI0hKbe0tgbLmHFRhgXOUiPScz2hk0hSmbGiU8aUqVslj/6C6KA38RzXnWoJXo4FMo6aBxjzg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.26.tgz", + "integrity": "sha512-BUsomaO4d2DuXhXhgQCVt2jjX4B4/Thts8nDoIruEJkhE5ifeQFtvW5c9JkdOtYvE5p2G0hcwQ0UbRaQmQwaVg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.26.tgz", + "integrity": "sha512-5auwsMVzT7wbB2CZXQxDctpWbdEnEW/e66DyXO1DcgHxIyhP06awu+rHKshZE+lPLIGiwtjo7bsyeuubewwxMw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.26.tgz", + "integrity": "sha512-GQWg/Vbz9zUGi9X80lOeGsz1rMH/MtFO/XqigDznhhhTfDlDoynCM6982mPCbSlxJ/aveZcKtTlwfAjwhyxDpg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.26.tgz", + "integrity": "sha512-2rdB3T1/Gp7bv1eQTTm9d1Y1sv9UuJ2LAwOE0Pe2prHKe32UNscj7YS13fRB37d0GAiGNR+Y7ZcW8YjDI8Ns0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.11.0.tgz", + "integrity": "sha512-zxnHvoMQVqewTJr/W4pKjF0bMGiKJv1WX7bSrkl46Hg0QjESbzBROWK0Wg4RphzSOS5Jiy7eFimmM3UgMrMZbQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@svgdotjs/svg.draggable.js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz", + "integrity": "sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==", + "license": "MIT", + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, + "node_modules/@svgdotjs/svg.filter.js": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz", + "integrity": "sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==", + "license": "MIT", + "dependencies": { + "@svgdotjs/svg.js": "^3.2.4" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@svgdotjs/svg.js": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.js/-/svg.js-3.2.4.tgz", + "integrity": "sha512-BjJ/7vWNowlX3Z8O4ywT58DqbNRyYlkk6Yz/D13aB7hGmfQTvGX4Tkgtm/ApYlu9M7lCQi15xUEidqMUmdMYwg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Fuzzyma" + } + }, + "node_modules/@svgdotjs/svg.resize.js": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz", + "integrity": "sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.select.js": "^4.0.1" + } + }, + "node_modules/@svgdotjs/svg.select.js": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.select.js/-/svg.select.js-4.0.2.tgz", + "integrity": "sha512-5gWdrvoQX3keo03SCmgaBbD+kFftq0F/f2bzCbNnpkkvW6tk4rl4MakORzFuNjvXPWwB4az9GwuvVxQVnjaK2g==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", + "license": "MIT" + }, + "node_modules/@types/lodash.mergewith": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/@types/lodash.mergewith/-/lodash.mergewith-4.6.9.tgz", + "integrity": "sha512-fgkoCAOF47K7sxrQ7Mlud2TH023itugZs2bUg8h/KzT+BnZNrR2jAOmaokbLunHNnobXVWOezAeNn/lZqwxkcw==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.13.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", + "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.20.tgz", + "integrity": "sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.28.0.tgz", + "integrity": "sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/type-utils": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.28.0.tgz", + "integrity": "sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.28.0.tgz", + "integrity": "sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.28.0.tgz", + "integrity": "sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.28.0", + "@typescript-eslint/utils": "8.28.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.28.0.tgz", + "integrity": "sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.28.0.tgz", + "integrity": "sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/visitor-keys": "8.28.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.28.0.tgz", + "integrity": "sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.28.0", + "@typescript-eslint/types": "8.28.0", + "@typescript-eslint/typescript-estree": "8.28.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.28.0.tgz", + "integrity": "sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.28.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.3.2.tgz", + "integrity": "sha512-ddnlXgRi0Fog5+7U5Q1qY62wl95Q1lB4tXQX1UIA9YHmRCHN2twaQW0/4tDVGCvTVEU3xEayU7VemEr7GcBYUw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" + }, + "node_modules/@zag-js/dom-query": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-0.31.1.tgz", + "integrity": "sha512-oiuohEXAXhBxpzzNm9k2VHGEOLC1SXlXSbRPcfBZ9so5NRQUA++zCE7cyQJqGLTZR0t3itFLlZqDbYEXRrefwg==", + "license": "MIT" + }, + "node_modules/@zag-js/element-size": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.31.1.tgz", + "integrity": "sha512-4T3yvn5NqqAjhlP326Fv+w9RqMIBbNN9H72g5q2ohwzhSgSfZzrKtjL4rs9axY/cw9UfMfXjRjEE98e5CMq7WQ==", + "license": "MIT" + }, + "node_modules/@zag-js/focus-visible": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.31.1.tgz", + "integrity": "sha512-dbLksz7FEwyFoANbpIlNnd3bVm0clQSUsnP8yUVQucStZPsuWjCrhL2jlAbGNrTrahX96ntUMXHb/sM68TibFg==", + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.31.1" + } + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/apexcharts": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-4.5.0.tgz", + "integrity": "sha512-E7ZkrVqPNBUWy/Rmg8DEIqHNBmElzICE/oxOX5Ekvs2ICQUOK/VkEkMH09JGJu+O/EA0NL31hxlmF+wrwrSLaQ==", + "license": "MIT", + "dependencies": { + "@svgdotjs/svg.draggable.js": "^3.0.4", + "@svgdotjs/svg.filter.js": "^3.0.8", + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.resize.js": "^2.0.2", + "@svgdotjs/svg.select.js": "^4.0.1", + "@yr/monotone-cubic-spline": "^1.0.3" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001707", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz", + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color2k": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz", + "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "license": "MIT", + "dependencies": { + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/cssstyle": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", + "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^3.1.1", + "rrweb-cssom": "^0.8.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/data-urls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/date-fns-tz": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.2.0.tgz", + "integrity": "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==", + "license": "MIT", + "peerDependencies": { + "date-fns": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "license": "MIT" + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decode-named-character-reference/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dompurify": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.126", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.126.tgz", + "integrity": "sha512-AtH1uLcTC72LA4vfYcEJJkrMk/MY/X0ub8Hv7QGAePW2JkeUFHEL/QfS4J77R6M87Sss8O0OcqReSaN1bpyA+Q==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.2.4.tgz", + "integrity": "sha512-v4gYjd4eYIme8qzaJItpR5MMBXJ0/YV07u7eb50kEnlEmX7yhOjdUdzz70v4fiINYRjLf8X8TbogF0k7wlz6sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "15.2.4", + "@rushstack/eslint-patch": "^1.10.3", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jsx-a11y": "^6.10.0", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.0.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.0.tgz", + "integrity": "sha512-aV3/dVsT0/H9BtpNwbaqvl+0xGMRGzncLyhm793NFGvbwGGvzyAykqWZ8oZlZuGwuHkwJjhWJkG1cM3ynvd2pQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.4.0", + "get-tsconfig": "^4.10.0", + "is-bun-module": "^2.0.0", + "stable-hash": "^0.0.5", + "tinyglobby": "^0.2.12", + "unrs-resolver": "^1.3.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "devOptional": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "license": "MIT", + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/focus-lock": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/focus-lock/-/focus-lock-1.3.6.tgz", + "integrity": "sha512-Ik/6OCk9RQQ0T5Xw+hKNLWrjSMtv51dD4GRmJjbD5a58TIEpI5a5iXagKVl3Z5UuyslMCA8Xwnu76jQob62Yhg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/framer-motion": { + "version": "11.18.2", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz", + "integrity": "sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==", + "license": "MIT", + "dependencies": { + "motion-dom": "^11.18.1", + "motion-utils": "^11.18.1", + "tslib": "^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 + } + } + }, + "node_modules/framesync": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", + "license": "MIT", + "dependencies": { + "tslib": "2.4.0" + } + }, + "node_modules/framesync/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "license": "0BSD" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "devOptional": true, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-heading-rank": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-heading-rank/-/hast-util-heading-rank-3.0.0.tgz", + "integrity": "sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/hastscript/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/hastscript/node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hastscript/node_modules/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hastscript/node_modules/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/highlightjs-vue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", + "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==", + "license": "CC0-1.0" + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "license": "MIT" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isomorphic-dompurify": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.22.0.tgz", + "integrity": "sha512-A2xsDNST1yB94rErEnwqlzSvGllCJ4e8lDMe1OWBH2hvpfc/2qzgMEiDshTO1HwO+PIDTiYeOc7ZDB7Ds49BOg==", + "license": "MIT", + "dependencies": { + "dompurify": "^3.2.4", + "jsdom": "^26.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowlight": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", + "license": "MIT", + "dependencies": { + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/motion-dom": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz", + "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^11.18.1" + } + }, + "node_modules/motion-utils": { + "version": "11.18.1", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz", + "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/next": { + "version": "14.2.26", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.26.tgz", + "integrity": "sha512-b81XSLihMwCfwiUVRRja3LphLo4uBBMZEzBBWMaISbKTwOmq3wPknIETy/8000tr7Gq4WmbuFYPS7jOYIf+ZJw==", + "license": "MIT", + "dependencies": { + "@next/env": "14.2.26", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.26", + "@next/swc-darwin-x64": "14.2.26", + "@next/swc-linux-arm64-gnu": "14.2.26", + "@next/swc-linux-arm64-musl": "14.2.26", + "@next/swc-linux-x64-gnu": "14.2.26", + "@next/swc-linux-x64-musl": "14.2.26", + "@next/swc-win32-arm64-msvc": "14.2.26", + "@next/swc-win32-ia32-msvc": "14.2.26", + "@next/swc-win32-x64-msvc": "14.2.26" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-mdx-remote": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/next-mdx-remote/-/next-mdx-remote-5.0.0.tgz", + "integrity": "sha512-RNNbqRpK9/dcIFZs/esQhuLA8jANqlH694yqoDBK8hkVdJUndzzGmnPHa2nyi90N4Z9VmzuSWNRpr5ItT3M7xQ==", + "license": "MPL-2.0", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@mdx-js/mdx": "^3.0.1", + "@mdx-js/react": "^3.0.1", + "unist-util-remove": "^3.1.0", + "vfile": "^6.0.1", + "vfile-matter": "^5.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=7" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.19.tgz", + "integrity": "sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "license": "MIT", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "license": "MIT", + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.51.1.tgz", + "integrity": "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.51.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.51.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.51.1.tgz", + "integrity": "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prismjs": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-apexcharts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.7.0.tgz", + "integrity": "sha512-03oScKJyNLRf0Oe+ihJxFZliBQM9vW3UWwomVn4YVRTN1jsIR58dLWt0v1sb8RwJVHDMbeHiKQueM0KGpn7nOA==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": ">=4.0.0", + "react": ">=0.13" + } + }, + "node_modules/react-clientside-effect": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.7.tgz", + "integrity": "sha512-gce9m0Pk/xYYMEojRI9bgvqQAkl6hm7ozQvqWPyQx+kULiatdHgkNM1QG4DQRx5N9BAzWSCJmt9mMV8/KsdgVg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.13" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "license": "MIT" + }, + "node_modules/react-focus-lock": { + "version": "2.13.6", + "resolved": "https://registry.npmjs.org/react-focus-lock/-/react-focus-lock-2.13.6.tgz", + "integrity": "sha512-ehylFFWyYtBKXjAO9+3v8d0i+cnc1trGS0vlTGhzFW1vbFXVUTmR8s2tt/ZQG8x5hElg6rhENlLG1H3EZK0Llg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.0.0", + "focus-lock": "^1.3.6", + "prop-types": "^15.6.2", + "react-clientside-effect": "^1.2.7", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-icons": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/react-remove-scroll": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-syntax-highlighter": { + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz", + "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.3.1", + "highlight.js": "^10.4.1", + "highlightjs-vue": "^1.0.0", + "lowlight": "^1.17.0", + "prismjs": "^1.27.0", + "refractor": "^3.6.0" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", + "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/refractor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", + "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", + "license": "MIT", + "dependencies": { + "hastscript": "^6.0.0", + "parse-entities": "^2.0.0", + "prismjs": "~1.27.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/refractor/node_modules/prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-slug": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/rehype-slug/-/rehype-slug-6.0.0.tgz", + "integrity": "sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "github-slugger": "^2.0.0", + "hast-util-heading-rank": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "license": "MIT", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "devOptional": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "devOptional": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/stable-hash": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.8" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swr": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", + "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tldts": { + "version": "6.1.85", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", + "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.85" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.85", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", + "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-3.1.1.tgz", + "integrity": "sha512-kfCqZK5YVY5yEa89tvpl7KnBBHu2c6CzMkqHUrlOqaRgGOMp0sMvwWOVrbAtj03KhovQB7i96Gda72v/EFE0vw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/unist-util-remove/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/unist-util-visit-parents/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unrs-resolver": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.3.2.tgz", + "integrity": "sha512-ZKQBC351Ubw0PY8xWhneIfb6dygTQeUHtCcNGd0QB618zabD/WbFMYdRyJ7xeVT+6G82K5v/oyZO0QSHFtbIuw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/JounQin" + }, + "optionalDependencies": { + "@unrs/resolver-binding-darwin-arm64": "1.3.2", + "@unrs/resolver-binding-darwin-x64": "1.3.2", + "@unrs/resolver-binding-freebsd-x64": "1.3.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.3.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.3.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.3.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.3.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.3.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.3.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.3.2", + "@unrs/resolver-binding-linux-x64-musl": "1.3.2", + "@unrs/resolver-binding-wasm32-wasi": "1.3.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.3.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.3.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.3.2" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-5.0.1.tgz", + "integrity": "sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==", + "license": "MIT", + "dependencies": { + "vfile": "^6.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack": { + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..0e6bd8b5 --- /dev/null +++ b/package.json @@ -0,0 +1,56 @@ +{ + "name": "oceanparcels_website", + "version": "1.0.0", + "private": true, + "scripts": { + "build-cards": "node build-cards.js", + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/OceanParcels/oceanparcels_website.git" + }, + "author": "Parcels Developers & Contributors", + "license": "Apache 2.0", + "dependencies": { + "@chakra-ui/icons": "^2.2.1", + "@chakra-ui/next-js": "^2.3.1", + "@chakra-ui/react": "^2.9.1", + "@chakra-ui/system": "^2.6.2", + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@fontsource-variable/inter": "^5.1.1", + "@mdx-js/loader": "^3.0.1", + "@mdx-js/react": "^3.0.1", + "@next/mdx": "^14.2.14", + "apexcharts": "^4", + "d3": "^7.9.0", + "date-fns": "^3.0.0", + "date-fns-tz": "^3.2.0", + "feed": "^4.2.2", + "framer-motion": "^11.9.0", + "glob": "^11.0.1", + "gray-matter": "^4.0.3", + "isomorphic-dompurify": "^2.16.0", + "next": "^14.2.21", + "next-mdx-remote": "^5.0.0", + "react": "^18.3.1", + "react-apexcharts": "^1.4.1", + "react-dom": "^18.3.1", + "react-icons": "^5.3.0", + "react-syntax-highlighter": "^15.5.0", + "rehype-slug": "^6.0.0", + "swr": "^2.2.5" + }, + "devDependencies": { + "@types/react": "^18.3.11", + "eslint": "^9.12.0", + "eslint-config-next": "15.2.4", + "playwright": "^1.47.2", + "typescript": ">=5.7.3", + "webpack": "^5.97.1" + } +} diff --git a/CNAME b/public/CNAME similarity index 100% rename from CNAME rename to public/CNAME diff --git a/public/TrAtlDrifters.json b/public/TrAtlDrifters.json new file mode 100644 index 00000000..82ccdf6c --- /dev/null +++ b/public/TrAtlDrifters.json @@ -0,0 +1,17409 @@ +{ + "drifter_1": [ + ["2019-07-20T18:46:00", 6.99878, -29.91771], + ["2019-07-20T19:05:56", 6.99525, -29.91513], + ["2019-07-20T19:35:19", 6.98882, -29.91025], + ["2019-07-20T20:04:49", 6.98243, -29.90597], + ["2019-07-20T20:34:49", 6.97655, -29.90271], + ["2019-07-20T21:05:58", 6.97117, -29.89978], + ["2019-07-20T21:34:21", 6.96602, -29.89719], + ["2019-07-20T23:03:07", 6.95064, -29.88733], + ["2019-07-20T23:33:07", 6.94622, -29.88398], + ["2019-07-21T00:03:07", 6.94343, -29.88141], + ["2019-07-21T00:34:29", 6.94126, -29.87893], + ["2019-07-21T01:04:29", 6.93924, -29.87653], + ["2019-07-21T02:32:26", 6.93622, -29.86786], + ["2019-07-21T03:02:27", 6.93581, -29.86486], + ["2019-07-21T03:32:27", 6.93637, -29.86203], + ["2019-07-21T06:59:58", 6.95256, -29.84344], + ["2019-07-21T08:01:25", 6.95332, -29.83661], + ["2019-07-21T08:28:22", 6.95326, -29.83353], + ["2019-07-21T08:58:22", 6.95244, -29.83035], + ["2019-07-21T09:27:31", 6.95038, -29.82753], + ["2019-07-21T09:57:31", 6.94961, -29.82538], + ["2019-07-21T10:27:31", 6.94849, -29.82263], + ["2019-07-21T11:26:47", 6.94633, -29.81553], + ["2019-07-21T11:56:47", 6.94607, -29.81244], + ["2019-07-21T12:26:33", 6.94651, -29.80862], + ["2019-07-21T13:56:57", 6.95035, -29.79354], + ["2019-07-21T14:25:46", 6.95223, -29.78839], + ["2019-07-21T14:56:57", 6.95426, -29.7829], + ["2019-07-21T15:26:56", 6.95652, -29.77697], + ["2019-07-21T15:56:56", 6.95884, -29.76959], + ["2019-07-21T16:54:34", 6.96133, -29.75711], + ["2019-07-21T17:23:54", 6.96297, -29.74962], + ["2019-07-21T17:53:54", 6.96563, -29.74421], + ["2019-07-21T18:23:54", 6.96808, -29.74069], + ["2019-07-21T19:52:45", 6.97432, -29.72836], + ["2019-07-21T20:22:45", 6.97698, -29.72433], + ["2019-07-21T20:52:45", 6.9799, -29.71927], + ["2019-07-21T22:51:06", 6.98808, -29.69198], + ["2019-07-21T23:21:06", 6.9892, -29.68589], + ["2019-07-21T23:51:06", 6.98984, -29.6792], + ["2019-07-22T00:20:36", 6.99149, -29.67172], + ["2019-07-22T00:50:36", 6.99376, -29.66537], + ["2019-07-22T01:22:57", 6.99779, -29.65845], + ["2019-07-22T03:18:52", 7.01418, -29.63058], + ["2019-07-22T05:47:29", 7.03277, -29.59125] + ], + "drifter_2": [ + ["2019-07-20T18:46:00", 6.99878, -29.91771], + ["2019-07-20T19:37:00", 6.98829, -29.90997], + ["2019-07-20T20:07:00", 6.98177, -29.90576], + ["2019-07-20T20:37:00", 6.97611, -29.9025], + ["2019-07-20T23:06:28", 6.95002, -29.88673], + ["2019-07-20T23:36:28", 6.94633, -29.88381], + ["2019-07-21T00:06:28", 6.9432, -29.88089], + ["2019-07-21T03:34:36", 6.93675, -29.86139], + ["2019-07-21T04:04:15", 6.93753, -29.85982], + ["2019-07-21T04:34:15", 6.93998, -29.85785], + ["2019-07-21T05:33:51", 6.94575, -29.85236], + ["2019-07-21T12:01:00", 6.94629, -29.81131], + ["2019-07-21T13:32:25", 6.94902, -29.79665], + ["2019-07-21T14:02:25", 6.95074, -29.79184], + ["2019-07-21T14:32:25", 6.95289, -29.78635], + ["2019-07-21T17:58:54", 6.96636, -29.74298], + ["2019-07-21T18:28:54", 6.96872, -29.7392], + ["2019-07-21T18:58:54", 6.97031, -29.7356], + ["2019-07-21T19:29:33", 6.97225, -29.73175], + ["2019-07-21T19:58:18", 6.97494, -29.72752], + ["2019-07-21T20:28:18", 6.97803, -29.72246], + ["2019-07-21T20:58:18", 6.98086, -29.71783], + ["2019-07-21T21:59:26", 6.98624, -29.70472], + ["2019-07-21T22:29:26", 6.98787, -29.69734], + ["2019-07-21T22:59:26", 6.98864, -29.6897], + ["2019-07-22T00:27:28", 6.99208, -29.66946], + ["2019-07-22T01:56:25", 7.0036, -29.65205], + ["2019-07-22T02:26:25", 7.00858, -29.64536], + ["2019-07-22T02:56:25", 7.01266, -29.63712], + ["2019-07-22T03:25:21", 7.01499, -29.62778], + ["2019-07-22T06:24:13", 7.03823, -29.58093], + ["2019-07-22T07:23:58", 7.04612, -29.56509], + ["2019-07-22T07:53:58", 7.0496, -29.55685], + ["2019-07-22T08:23:58", 7.05312, -29.54913], + ["2019-07-22T08:53:21", 7.05681, -29.5418], + ["2019-07-22T09:25:28", 7.0609, -29.53412], + ["2019-07-22T09:53:21", 7.06561, -29.52893], + ["2019-07-22T10:23:14", 7.07053, -29.52402], + ["2019-07-22T13:23:28", 7.11236, -29.5023], + ["2019-07-22T13:53:28", 7.12004, -29.49878], + ["2019-07-22T14:23:28", 7.12991, -29.49603], + ["2019-07-22T14:52:25", 7.13912, -29.4925], + ["2019-07-22T15:22:25", 7.14912, -29.48718], + ["2019-07-22T16:50:36", 7.17569, -29.46806], + ["2019-07-22T17:20:36", 7.18299, -29.46162], + ["2019-07-22T17:50:36", 7.18896, -29.45596], + ["2019-07-22T18:20:14", 7.19508, -29.45065], + ["2019-07-22T18:50:14", 7.20066, -29.44473], + ["2019-07-22T19:20:26", 7.20668, -29.43855], + ["2019-07-22T19:50:26", 7.21243, -29.43349], + ["2019-07-22T20:20:26", 7.22003, -29.42645], + ["2019-07-22T20:50:55", 7.22676, -29.41941], + ["2019-07-22T21:20:55", 7.23457, -29.41211], + ["2019-07-22T21:49:58", 7.24072, -29.40536], + ["2019-07-22T22:19:58", 7.24737, -29.39703], + ["2019-07-23T00:20:32", 7.26731, -29.3573], + ["2019-07-23T02:48:26", 7.2981, -29.30466], + ["2019-07-23T05:16:51", 7.31694, -29.24878], + ["2019-07-23T05:46:27", 7.32004, -29.23648], + ["2019-07-23T06:16:27", 7.32339, -29.22446], + ["2019-07-23T07:47:01", 7.3318, -29.18622], + ["2019-07-23T14:45:28", 7.33055, -29.01465], + ["2019-07-23T15:12:43", 7.3294, -29.00188], + ["2019-07-23T15:42:43", 7.32713, -28.9884], + ["2019-07-23T17:42:08", 7.31799, -28.93427], + ["2019-07-23T19:11:27", 7.30449, -28.89601], + ["2019-07-23T19:41:27", 7.29758, -28.88322], + ["2019-07-23T20:11:27", 7.29033, -28.87369], + ["2019-07-23T21:41:54", 7.2766, -28.84187], + ["2019-07-23T22:11:54", 7.27433, -28.83183], + ["2019-07-23T22:41:54", 7.27257, -28.82144], + ["2019-07-23T23:43:12", 7.27432, -28.80093], + ["2019-07-24T00:39:42", 7.27901, -28.78192], + ["2019-07-24T02:09:15", 7.28385, -28.75024], + ["2019-07-24T02:38:48", 7.28485, -28.73975], + ["2019-07-24T03:08:48", 7.28558, -28.73117], + ["2019-07-24T04:10:30", 7.28791, -28.71381], + ["2019-07-24T06:37:34", 7.292, -28.67236], + ["2019-07-24T11:05:27", 7.28944, -28.57922], + ["2019-07-24T11:35:18", 7.28861, -28.5687], + ["2019-07-24T15:33:58", 7.28661, -28.49728], + ["2019-07-24T17:33:10", 7.30084, -28.46378], + ["2019-07-24T18:05:11", 7.30642, -28.45599], + ["2019-07-24T18:32:47", 7.31122, -28.44973], + ["2019-07-24T19:02:47", 7.31555, -28.44321], + ["2019-07-24T19:33:45", 7.31859, -28.43631], + ["2019-07-24T20:33:29", 7.32301, -28.42267], + ["2019-07-24T22:01:31", 7.32926, -28.40046], + ["2019-07-24T22:31:31", 7.32947, -28.39162], + ["2019-07-24T23:01:31", 7.32994, -28.38226], + ["2019-07-25T01:30:08", 7.34188, -28.34142], + ["2019-07-25T02:00:30", 7.34455, -28.33661], + ["2019-07-25T02:30:08", 7.34715, -28.33112], + ["2019-07-25T03:29:14", 7.3534, -28.31484], + ["2019-07-25T03:59:14", 7.35713, -28.30643], + ["2019-07-25T04:29:14", 7.36031, -28.29965], + ["2019-07-25T04:59:26", 7.36281, -28.29166], + ["2019-07-25T05:29:26", 7.36611, -28.28308], + ["2019-07-25T06:58:27", 7.37554, -28.26074], + ["2019-07-25T07:58:05", 7.38402, -28.24591], + ["2019-07-25T10:27:15", 7.40835, -28.20935], + ["2019-07-25T12:56:00", 7.42805, -28.17301], + ["2019-07-25T13:26:00", 7.43041, -28.16657], + ["2019-07-25T13:56:00", 7.43268, -28.16168], + ["2019-07-25T14:56:05", 7.43991, -28.14828], + ["2019-07-25T20:24:28", 7.49933, -28.07285], + ["2019-07-25T21:52:28", 7.50971, -28.05314], + ["2019-07-25T22:22:28", 7.51469, -28.04687], + ["2019-07-25T22:52:28", 7.51984, -28.0394], + ["2019-07-26T00:21:41", 7.53547, -28.0117], + ["2019-07-26T00:51:41", 7.53835, -28.00303], + ["2019-07-26T01:21:41", 7.54041, -27.99393], + ["2019-07-26T02:21:22", 7.54567, -27.97794], + ["2019-07-26T03:50:49", 7.56255, -27.95966], + ["2019-07-26T04:20:28", 7.56863, -27.95163], + ["2019-07-26T04:50:28", 7.57378, -27.94348], + ["2019-07-26T07:19:58", 7.59491, -27.90499], + ["2019-07-26T07:49:58", 7.59882, -27.89795], + ["2019-07-26T08:19:58", 7.60191, -27.88928], + ["2019-07-26T09:48:34", 7.60884, -27.86055], + ["2019-07-26T10:18:34", 7.61232, -27.85171], + ["2019-07-26T10:48:34", 7.6164, -27.84433], + ["2019-07-26T11:19:00", 7.61933, -27.83679], + ["2019-07-26T11:48:11", 7.62251, -27.82883], + ["2019-07-26T12:17:53", 7.62543, -27.82075], + ["2019-07-26T12:47:53", 7.62831, -27.8132], + ["2019-07-26T13:17:36", 7.63097, -27.80437], + ["2019-07-26T13:47:36", 7.63209, -27.79587], + ["2019-07-26T14:17:59", 7.63187, -27.7843], + ["2019-07-26T14:47:16", 7.63113, -27.77289], + ["2019-07-26T15:17:26", 7.63002, -27.76152], + ["2019-07-26T15:47:26", 7.62805, -27.75071], + ["2019-07-26T16:17:26", 7.62642, -27.73929], + ["2019-07-26T16:46:40", 7.62577, -27.72882], + ["2019-07-26T17:16:55", 7.62455, -27.71927], + ["2019-07-26T17:46:03", 7.62324, -27.70975], + ["2019-07-26T18:16:03", 7.62097, -27.69911], + ["2019-07-26T18:46:03", 7.61921, -27.6889], + ["2019-07-26T19:16:30", 7.61634, -27.67822], + ["2019-07-26T19:45:47", 7.61215, -27.66861], + ["2019-07-26T20:15:26", 7.60694, -27.65923], + ["2019-07-26T20:45:26", 7.60196, -27.65039], + ["2019-07-26T21:15:28", 7.59751, -27.64098], + ["2019-07-26T21:45:28", 7.59343, -27.63308], + ["2019-07-26T22:15:28", 7.58935, -27.62527], + ["2019-07-26T22:45:05", 7.58545, -27.61789], + ["2019-07-26T23:15:05", 7.58137, -27.60956], + ["2019-07-26T23:44:34", 7.57695, -27.60071], + ["2019-07-27T00:14:57", 7.57243, -27.59076], + ["2019-07-27T00:43:52", 7.56805, -27.58131], + ["2019-07-27T01:13:52", 7.56329, -27.57316], + ["2019-07-27T01:43:52", 7.55668, -27.56586], + ["2019-07-27T02:13:25", 7.54964, -27.55866], + ["2019-07-27T02:43:25", 7.54247, -27.55231], + ["2019-07-27T03:13:26", 7.53509, -27.54585], + ["2019-07-27T03:43:26", 7.52754, -27.5395], + ["2019-07-27T04:13:26", 7.51879, -27.53229], + ["2019-07-27T04:42:55", 7.51044, -27.52464], + ["2019-07-27T05:12:55", 7.50203, -27.51666], + ["2019-07-27T05:42:28", 7.49455, -27.50909], + ["2019-07-27T06:12:28", 7.48773, -27.50214], + ["2019-07-27T06:41:55", 7.48067, -27.49622], + ["2019-07-27T07:12:05", 7.47364, -27.48935], + ["2019-07-27T07:41:36", 7.46748, -27.48218], + ["2019-07-27T08:11:56", 7.4618, -27.47525], + ["2019-07-27T08:41:02", 7.45671, -27.46938], + ["2019-07-27T09:11:02", 7.45126, -27.46423], + ["2019-07-27T09:41:02", 7.44701, -27.45831], + ["2019-07-27T10:10:45", 7.44328, -27.45082], + ["2019-07-27T10:40:45", 7.4392, -27.44318], + ["2019-07-27T11:10:59", 7.435, -27.43536], + ["2019-07-27T12:10:26", 7.42679, -27.42179], + ["2019-07-27T12:40:26", 7.4228, -27.41655], + ["2019-07-27T13:10:26", 7.41911, -27.41089], + ["2019-07-27T13:39:57", 7.41604, -27.40643], + ["2019-07-27T14:09:57", 7.41325, -27.40128], + ["2019-07-27T14:39:24", 7.41028, -27.396], + ["2019-07-27T15:09:24", 7.40796, -27.38922], + ["2019-07-27T15:38:44", 7.40536, -27.38138], + ["2019-07-27T16:38:12", 7.39775, -27.36866], + ["2019-07-27T17:08:12", 7.39376, -27.36325], + ["2019-07-27T17:38:12", 7.39067, -27.35904], + ["2019-07-27T18:08:25", 7.38675, -27.35358], + ["2019-07-27T18:37:56", 7.38328, -27.3486], + ["2019-07-27T19:07:56", 7.37993, -27.34406], + ["2019-07-27T19:37:56", 7.37791, -27.34003], + ["2019-07-27T20:07:56", 7.37499, -27.33548], + ["2019-07-27T21:36:42", 7.36587, -27.32317], + ["2019-07-27T22:06:42", 7.36377, -27.3212], + ["2019-07-27T22:36:42", 7.36218, -27.31888], + ["2019-07-27T23:06:55", 7.36035, -27.31592], + ["2019-07-28T00:06:27", 7.35679, -27.31075], + ["2019-07-28T00:36:27", 7.35456, -27.30783], + ["2019-07-28T01:06:27", 7.35203, -27.3038], + ["2019-07-28T01:35:38", 7.35068, -27.30084], + ["2019-07-28T02:05:56", 7.34989, -27.29813], + ["2019-07-28T02:35:11", 7.34902, -27.29575], + ["2019-07-28T03:04:55", 7.34852, -27.29231], + ["2019-07-28T03:34:55", 7.34758, -27.28888], + ["2019-07-28T04:04:55", 7.34711, -27.2851], + ["2019-07-28T04:34:55", 7.34701, -27.2811], + ["2019-07-28T05:04:55", 7.34735, -27.27655], + ["2019-07-28T05:33:51", 7.34807, -27.27294], + ["2019-07-28T06:03:51", 7.3482, -27.26968], + ["2019-07-28T06:33:51", 7.3488, -27.26599], + ["2019-07-28T07:33:18", 7.35044, -27.25785], + ["2019-07-28T08:03:18", 7.35168, -27.25425], + ["2019-07-28T08:33:18", 7.35159, -27.24979], + ["2019-07-28T09:03:54", 7.35145, -27.2464], + ["2019-07-28T10:23:29", 7.35399, -27.2392], + ["2019-07-28T10:53:07", 7.35587, -27.23617], + ["2019-07-28T11:23:07", 7.35947, -27.23334], + ["2019-07-28T11:52:48", 7.36395, -27.22986], + ["2019-07-28T12:23:08", 7.36947, -27.22537], + ["2019-07-28T12:52:44", 7.37495, -27.22015], + ["2019-07-28T13:22:34", 7.37982, -27.21527], + ["2019-07-28T13:52:34", 7.38368, -27.21072], + ["2019-07-28T15:21:57", 7.39258, -27.18867], + ["2019-07-28T15:51:57", 7.39537, -27.18155], + ["2019-07-28T16:21:57", 7.39893, -27.17554], + ["2019-07-28T16:51:56", 7.4028, -27.16956], + ["2019-07-28T17:21:56", 7.40748, -27.16269], + ["2019-07-28T17:50:47", 7.41153, -27.15415], + ["2019-07-28T18:20:47", 7.41389, -27.14557], + ["2019-07-28T18:50:47", 7.41483, -27.13699], + ["2019-07-28T19:20:57", 7.41591, -27.12811], + ["2019-07-28T19:50:25", 7.41646, -27.11908], + ["2019-07-28T20:20:27", 7.41574, -27.10869], + ["2019-07-28T20:50:27", 7.416, -27.09916], + ["2019-07-28T21:20:27", 7.41763, -27.08972], + ["2019-07-28T21:49:43", 7.42041, -27.08112], + ["2019-07-28T22:20:27", 7.4237, -27.07153], + ["2019-07-28T22:49:14", 7.42797, -27.0632], + ["2019-07-28T23:19:27", 7.43293, -27.05514], + ["2019-07-28T23:49:27", 7.43752, -27.04767], + ["2019-07-29T00:19:27", 7.44297, -27.03986], + ["2019-07-29T00:48:32", 7.44975, -27.03326], + ["2019-07-29T01:18:57", 7.45753, -27.02612], + ["2019-07-29T01:48:37", 7.46438, -27.01953], + ["2019-07-29T02:18:37", 7.47086, -27.01215], + ["2019-07-29T02:47:51", 7.47629, -27.00368], + ["2019-07-29T03:17:51", 7.48114, -26.99458], + ["2019-07-29T03:47:51", 7.48608, -26.98608], + ["2019-07-29T04:47:09", 7.49721, -26.96936], + ["2019-07-29T05:17:09", 7.50236, -26.96164], + ["2019-07-29T05:47:09", 7.50704, -26.9552], + ["2019-07-29T06:17:26", 7.51107, -26.94861], + ["2019-07-29T06:47:06", 7.51495, -26.94106], + ["2019-07-29T07:17:06", 7.5183, -26.93188], + ["2019-07-29T07:46:24", 7.51986, -26.92165], + ["2019-07-29T08:16:24", 7.52188, -26.91238], + ["2019-07-29T08:45:34", 7.52427, -26.90248], + ["2019-07-29T09:15:34", 7.52564, -26.89064], + ["2019-07-29T09:45:34", 7.5274, -26.87897], + ["2019-07-29T10:15:56", 7.52979, -26.86804], + ["2019-07-29T10:45:09", 7.53282, -26.85834], + ["2019-07-29T12:15:10", 7.54265, -26.82463], + ["2019-07-29T12:45:10", 7.54587, -26.81364], + ["2019-07-29T13:15:10", 7.54965, -26.80231], + ["2019-07-29T14:14:26", 7.55964, -26.77856], + ["2019-07-29T14:44:26", 7.56393, -26.76569], + ["2019-07-29T15:14:26", 7.56891, -26.75427], + ["2019-07-29T15:43:46", 7.57255, -26.74307], + ["2019-07-29T16:13:57", 7.57528, -26.73181], + ["2019-07-29T16:42:51", 7.57668, -26.72233], + ["2019-07-29T17:12:51", 7.5787, -26.714], + ["2019-07-29T17:42:51", 7.57977, -26.7049], + ["2019-07-29T18:12:56", 7.58065, -26.69458], + ["2019-07-29T18:42:28", 7.58082, -26.68475], + ["2019-07-29T19:12:08", 7.58005, -26.67513], + ["2019-07-29T19:42:08", 7.57945, -26.66577], + ["2019-07-29T20:11:56", 7.57924, -26.6554], + ["2019-07-29T20:41:56", 7.57941, -26.64536], + ["2019-07-29T21:11:56", 7.57941, -26.63583], + ["2019-07-29T21:41:17", 7.57876, -26.6268], + ["2019-07-29T22:11:28", 7.5787, -26.61508], + ["2019-07-29T22:41:23", 7.5796, -26.6024], + ["2019-07-29T23:11:23", 7.58003, -26.58841], + ["2019-07-29T23:40:17", 7.57958, -26.57533], + ["2019-07-30T00:10:17", 7.57911, -26.56185], + ["2019-07-30T00:40:17", 7.57842, -26.54932], + ["2019-07-30T01:09:57", 7.57851, -26.53653], + ["2019-07-30T01:39:57", 7.57821, -26.52451], + ["2019-07-30T02:09:58", 7.57629, -26.51191], + ["2019-07-30T02:39:58", 7.57414, -26.49938], + ["2019-07-30T03:09:58", 7.57311, -26.48642], + ["2019-07-30T03:39:37", 7.57236, -26.47427], + ["2019-07-30T04:09:37", 7.57026, -26.46182], + ["2019-07-30T04:39:07", 7.56696, -26.45086], + ["2019-07-30T05:09:07", 7.5646, -26.43979], + ["2019-07-30T06:08:24", 7.56099, -26.41887], + ["2019-07-30T06:38:17", 7.55969, -26.40918], + ["2019-07-30T07:08:24", 7.5588, -26.39999], + ["2019-07-30T08:37:41", 7.5553, -26.37473], + ["2019-07-30T09:07:41", 7.55453, -26.36743], + ["2019-07-30T09:37:41", 7.55492, -26.35971], + ["2019-07-30T10:07:58", 7.55469, -26.35223], + ["2019-07-30T10:37:23", 7.55488, -26.3446], + ["2019-07-30T11:07:25", 7.55539, -26.33566], + ["2019-07-30T11:37:25", 7.55539, -26.32716], + ["2019-07-30T12:07:25", 7.5559, -26.31866], + ["2019-07-30T12:37:06", 7.55561, -26.30867], + ["2019-07-30T13:07:06", 7.55454, -26.29837], + ["2019-07-30T13:36:54", 7.55416, -26.28818], + ["2019-07-30T14:06:54", 7.55334, -26.27728], + ["2019-07-30T14:35:49", 7.55369, -26.26812], + ["2019-07-30T15:05:49", 7.55395, -26.25988], + ["2019-07-30T15:35:49", 7.55361, -26.25241], + ["2019-07-30T16:05:25", 7.55383, -26.24413], + ["2019-07-30T16:35:25", 7.55477, -26.23615], + ["2019-07-30T17:05:27", 7.55568, -26.22841], + ["2019-07-30T17:35:27", 7.55564, -26.22043], + ["2019-07-30T18:05:27", 7.555, -26.21039], + ["2019-07-30T18:35:08", 7.55379, -26.2005], + ["2019-07-30T19:05:08", 7.55173, -26.19037], + ["2019-07-30T19:34:03", 7.55001, -26.18072], + ["2019-07-30T20:04:03", 7.54907, -26.17179], + ["2019-07-30T20:34:03", 7.54886, -26.16269], + ["2019-07-30T21:03:37", 7.54858, -26.15362], + ["2019-07-30T21:33:37", 7.54862, -26.14529], + ["2019-07-30T22:33:16", 7.54918, -26.13089], + ["2019-07-30T23:03:30", 7.54848, -26.12352], + ["2019-07-30T23:33:30", 7.54663, -26.11657], + ["2019-07-31T00:03:30", 7.54423, -26.10962], + ["2019-07-31T00:33:25", 7.54088, -26.10279], + ["2019-07-31T01:03:25", 7.53758, -26.09567], + ["2019-07-31T03:02:38", 7.52594, -26.06762], + ["2019-07-31T03:32:25", 7.52223, -26.06094], + ["2019-07-31T04:02:38", 7.51796, -26.05466], + ["2019-07-31T04:32:06", 7.51409, -26.04782], + ["2019-07-31T05:01:47", 7.5099, -26.04158], + ["2019-07-31T05:31:47", 7.50685, -26.03583], + ["2019-07-31T06:01:25", 7.50426, -26.02954], + ["2019-07-31T06:31:25", 7.50147, -26.02448], + ["2019-07-31T07:01:10", 7.4992, -26.01883], + ["2019-07-31T07:31:10", 7.4983, -26.01291], + ["2019-07-31T08:01:07", 7.49825, -26.00679], + ["2019-07-31T08:31:07", 7.49786, -26.00147], + ["2019-07-31T09:01:07", 7.49756, -25.99615], + ["2019-07-31T09:30:33", 7.49739, -25.99054], + ["2019-07-31T10:00:56", 7.4974, -25.98474], + ["2019-07-31T10:59:57", 7.49854, -25.97364], + ["2019-07-31T11:29:57", 7.49815, -25.96935], + ["2019-07-31T11:59:57", 7.49673, -25.96429], + ["2019-07-31T12:29:27", 7.49484, -25.95993], + ["2019-07-31T12:59:06", 7.49223, -25.95539], + ["2019-07-31T13:29:06", 7.49026, -25.95084], + ["2019-07-31T13:58:57", 7.48831, -25.9468], + ["2019-07-31T14:28:57", 7.48634, -25.94199], + ["2019-07-31T14:58:57", 7.48484, -25.93701], + ["2019-07-31T15:28:55", 7.48359, -25.93242], + ["2019-07-31T15:58:55", 7.48226, -25.92899], + ["2019-07-31T16:28:25", 7.48144, -25.92589], + ["2019-07-31T16:58:25", 7.4814, -25.92297], + ["2019-07-31T18:27:18", 7.48546, -25.90521], + ["2019-07-31T20:26:01", 7.49041, -25.87849], + ["2019-07-31T20:56:01", 7.49105, -25.87128], + ["2019-07-31T21:26:01", 7.49122, -25.86356], + ["2019-07-31T21:55:38", 7.49113, -25.85562], + ["2019-07-31T22:25:38", 7.49104, -25.84918], + ["2019-07-31T22:55:28", 7.49288, -25.84417], + ["2019-07-31T23:25:28", 7.49503, -25.83919], + ["2019-07-31T23:55:28", 7.4961, -25.83301], + ["2019-08-01T00:24:44", 7.49619, -25.82565], + ["2019-08-01T00:54:57", 7.49614, -25.81885], + ["2019-08-01T01:24:15", 7.49597, -25.81349], + ["2019-08-01T01:54:15", 7.49567, -25.8092], + ["2019-08-01T02:24:15", 7.49528, -25.80499], + ["2019-08-01T02:53:56", 7.49528, -25.80005], + ["2019-08-01T03:23:56", 7.49549, -25.79456], + ["2019-08-01T03:53:32", 7.49606, -25.78819], + ["2019-08-01T04:23:32", 7.49636, -25.78201], + ["2019-08-01T04:53:28", 7.49639, -25.77648], + ["2019-08-01T05:23:02", 7.49718, -25.77142], + ["2019-08-01T05:53:28", 7.49815, -25.76584], + ["2019-08-01T06:22:36", 7.49967, -25.75922], + ["2019-08-01T06:52:36", 7.50224, -25.75235], + ["2019-08-01T08:21:19", 7.51365, -25.7336], + ["2019-08-01T08:51:19", 7.51721, -25.72794], + ["2019-08-01T09:21:19", 7.52039, -25.7215], + ["2019-08-01T10:20:39", 7.52709, -25.70469], + ["2019-08-01T10:50:39", 7.53035, -25.69551], + ["2019-08-01T11:20:39", 7.53327, -25.68787], + ["2019-08-01T11:50:08", 7.53602, -25.68069], + ["2019-08-01T12:20:08", 7.53911, -25.67468], + ["2019-08-01T12:50:32", 7.54138, -25.66901], + ["2019-08-01T13:19:40", 7.54359, -25.66296], + ["2019-08-01T13:49:10", 7.54498, -25.65613], + ["2019-08-01T14:19:10", 7.54571, -25.64969], + ["2019-08-01T14:48:41", 7.54664, -25.64324], + ["2019-08-01T15:18:41", 7.54763, -25.63586], + ["2019-08-01T16:48:36", 7.55011, -25.61227], + ["2019-08-01T17:17:49", 7.55127, -25.60485], + ["2019-08-01T17:47:49", 7.55226, -25.59755], + ["2019-08-01T18:17:49", 7.55355, -25.59189], + ["2019-08-01T18:47:27", 7.55488, -25.58721], + ["2019-08-01T19:17:27", 7.55557, -25.58206], + ["2019-08-01T19:47:27", 7.55608, -25.57511], + ["2019-08-01T20:17:27", 7.5575, -25.5685], + ["2019-08-01T20:47:27", 7.5602, -25.56241], + ["2019-08-01T23:36:09", 7.57224, -25.5278], + ["2019-08-02T02:05:24", 7.56944, -25.48341], + ["2019-08-02T02:35:24", 7.56695, -25.47448], + ["2019-08-02T03:05:24", 7.56455, -25.46573], + ["2019-08-02T03:34:39", 7.56397, -25.45807], + ["2019-08-02T05:24:26", 7.56536, -25.43135], + ["2019-08-02T05:54:26", 7.56566, -25.42594], + ["2019-08-02T06:24:26", 7.56669, -25.42139], + ["2019-08-02T06:53:49", 7.56769, -25.41754], + ["2019-08-02T07:52:57", 7.56993, -25.40911], + ["2019-08-02T08:22:57", 7.5713, -25.40465], + ["2019-08-02T08:52:57", 7.57173, -25.3989], + ["2019-08-02T09:22:41", 7.56973, -25.39269], + ["2019-08-02T09:52:41", 7.56797, -25.38754], + ["2019-08-02T10:22:54", 7.56566, -25.38143], + ["2019-08-02T10:52:54", 7.56309, -25.37508], + ["2019-08-02T11:22:54", 7.55944, -25.36899], + ["2019-08-02T11:52:09", 7.55658, -25.36309], + ["2019-08-02T12:22:09", 7.55353, -25.35605], + ["2019-08-02T12:51:54", 7.55189, -25.34962], + ["2019-08-02T13:21:54", 7.54996, -25.34232], + ["2019-08-02T13:51:16", 7.54826, -25.33472], + ["2019-08-02T14:20:57", 7.54726, -25.32645], + ["2019-08-02T14:50:57", 7.54623, -25.3183], + ["2019-08-02T15:20:31", 7.54535, -25.30942], + ["2019-08-02T15:50:31", 7.54355, -25.30075], + ["2019-08-02T16:49:42", 7.53989, -25.28101], + ["2019-08-02T17:19:42", 7.5374, -25.26959], + ["2019-08-02T17:49:42", 7.53654, -25.25903], + ["2019-08-02T18:19:55", 7.53605, -25.24866], + ["2019-08-02T20:48:47", 7.53494, -25.20219], + ["2019-08-02T21:18:47", 7.5355, -25.19489], + ["2019-08-02T21:48:47", 7.53726, -25.18777], + ["2019-08-02T22:48:03", 7.54158, -25.17209], + ["2019-08-02T23:18:03", 7.54261, -25.16351], + ["2019-08-02T23:48:03", 7.54317, -25.15527], + ["2019-08-03T01:17:35", 7.54204, -25.13201], + ["2019-08-03T01:47:35", 7.53985, -25.12454], + ["2019-08-03T02:17:35", 7.53775, -25.11682], + ["2019-08-03T02:47:04", 7.53725, -25.10861], + ["2019-08-03T03:17:29", 7.53654, -25.09988], + ["2019-08-03T03:46:22", 7.53529, -25.09202], + ["2019-08-03T04:16:22", 7.53469, -25.08507], + ["2019-08-03T04:46:22", 7.53512, -25.07855], + ["2019-08-03T05:15:58", 7.53483, -25.07122], + ["2019-08-03T05:45:58", 7.53526, -25.06375], + ["2019-08-03T06:15:28", 7.53594, -25.05544], + ["2019-08-03T06:45:28", 7.53573, -25.04703], + ["2019-08-03T07:15:23", 7.53553, -25.03837], + ["2019-08-03T07:45:23", 7.53626, -25.03116], + ["2019-08-03T08:15:23", 7.53742, -25.02438], + ["2019-08-03T08:44:57", 7.53912, -25.01656], + ["2019-08-03T09:14:57", 7.54071, -25.00772], + ["2019-08-03T09:44:57", 7.54258, -24.99903], + ["2019-08-03T10:14:57", 7.54417, -24.98959], + ["2019-08-03T10:43:47", 7.547, -24.98036], + ["2019-08-03T11:13:47", 7.54876, -24.96989], + ["2019-08-03T11:43:47", 7.55009, -24.95993], + ["2019-08-03T13:13:56", 7.55564, -24.92957], + ["2019-08-03T13:43:25", 7.55793, -24.92022], + ["2019-08-03T14:13:25", 7.56046, -24.91052], + ["2019-08-03T14:43:25", 7.56414, -24.90035], + ["2019-08-03T15:13:25", 7.56826, -24.89108], + ["2019-08-03T16:12:55", 7.57767, -24.8713], + ["2019-08-03T16:42:55", 7.58248, -24.86263], + ["2019-08-03T17:12:55", 7.58677, -24.85345], + ["2019-08-03T17:42:56", 7.59194, -24.84496], + ["2019-08-03T18:12:56", 7.59726, -24.83578], + ["2019-08-03T18:42:14", 7.60261, -24.82697], + ["2019-08-03T19:11:48", 7.60788, -24.81734], + ["2019-08-03T19:41:48", 7.61324, -24.80756], + ["2019-08-03T20:11:22", 7.61791, -24.79797], + ["2019-08-03T20:41:22", 7.62199, -24.78973], + ["2019-08-03T21:11:38", 7.62666, -24.78018], + ["2019-08-03T21:41:02", 7.63152, -24.77017], + ["2019-08-03T22:10:40", 7.63572, -24.75925], + ["2019-08-03T22:40:40", 7.63902, -24.74886], + ["2019-08-03T23:10:40", 7.64172, -24.73822], + ["2019-08-03T23:40:29", 7.64481, -24.72762], + ["2019-08-04T00:10:29", 7.64841, -24.71603], + ["2019-08-04T00:39:46", 7.65288, -24.70511], + ["2019-08-04T01:09:32", 7.65841, -24.69509], + ["2019-08-04T01:39:32", 7.66455, -24.68582], + ["2019-08-04T02:09:57", 7.67111, -24.67563], + ["2019-08-04T02:39:22", 7.67704, -24.66534], + ["2019-08-04T03:08:58", 7.68254, -24.65464], + ["2019-08-04T03:38:58", 7.68692, -24.64383], + ["2019-08-04T04:09:27", 7.69192, -24.63242], + ["2019-08-04T04:38:39", 7.69694, -24.62136], + ["2019-08-04T05:08:39", 7.70222, -24.61072], + ["2019-08-04T07:07:56", 7.72402, -24.57271], + ["2019-08-04T07:37:56", 7.7311, -24.56516], + ["2019-08-04T08:07:56", 7.73857, -24.55563], + ["2019-08-04T08:37:12", 7.74602, -24.54596], + ["2019-08-04T10:36:00", 7.77739, -24.50687], + ["2019-08-04T11:06:00", 7.78619, -24.49631], + ["2019-08-04T11:36:00", 7.79486, -24.48618], + ["2019-08-04T12:06:27", 7.80458, -24.47571], + ["2019-08-04T13:05:26", 7.8227, -24.45468], + ["2019-08-04T13:35:26", 7.83171, -24.44421], + ["2019-08-04T14:05:26", 7.84107, -24.43271], + ["2019-08-04T14:35:26", 7.85035, -24.42151], + ["2019-08-04T15:05:26", 7.85945, -24.40872], + ["2019-08-04T15:34:47", 7.86807, -24.39548], + ["2019-08-04T16:04:37", 7.87565, -24.38133], + ["2019-08-04T16:34:37", 7.88265, -24.367], + ["2019-08-04T17:04:35", 7.88956, -24.35236], + ["2019-08-04T17:34:35", 7.89595, -24.33725], + ["2019-08-04T18:34:26", 7.90404, -24.30807], + ["2019-08-04T19:04:26", 7.90708, -24.29283], + ["2019-08-04T19:34:26", 7.90983, -24.27781], + ["2019-08-04T20:04:26", 7.91262, -24.26227], + ["2019-08-04T20:34:25", 7.91549, -24.24862], + ["2019-08-04T21:04:25", 7.91922, -24.23523], + ["2019-08-04T22:32:43", 7.93033, -24.19498], + ["2019-08-04T23:02:43", 7.93222, -24.18236], + ["2019-08-04T23:32:43", 7.93115, -24.17249], + ["2019-08-05T00:32:32", 7.92563, -24.14771], + ["2019-08-05T01:03:26", 7.92235, -24.13465], + ["2019-08-05T01:33:26", 7.91892, -24.12298], + ["2019-08-05T02:03:26", 7.91613, -24.11105], + ["2019-08-05T02:31:57", 7.91361, -24.10002], + ["2019-08-05T03:01:57", 7.91185, -24.08929], + ["2019-08-05T06:30:24", 7.91038, -23.98379], + ["2019-08-05T07:00:24", 7.91141, -23.96783], + ["2019-08-05T07:30:24", 7.9127, -23.95221], + ["2019-08-05T08:00:02", 7.91349, -23.93601], + ["2019-08-05T08:30:02", 7.91542, -23.92099], + ["2019-08-05T08:59:54", 7.91708, -23.90512], + ["2019-08-05T09:29:54", 7.91734, -23.88898], + ["2019-08-05T12:00:01", 7.90665, -23.80145], + ["2019-08-05T13:28:15", 7.88858, -23.74811], + ["2019-08-05T13:58:15", 7.88158, -23.7294], + ["2019-08-05T14:28:15", 7.87411, -23.71198], + ["2019-08-05T14:58:59", 7.86668, -23.69385], + ["2019-08-05T15:28:59", 7.8605, -23.6772], + ["2019-08-05T15:58:59", 7.8535, -23.66046], + ["2019-08-05T19:26:44", 7.81303, -23.55859], + ["2019-08-05T22:56:34", 7.78615, -23.47107], + ["2019-08-06T01:55:35", 7.76503, -23.41183], + ["2019-08-06T03:23:37", 7.75518, -23.38829], + ["2019-08-06T03:53:37", 7.75102, -23.38099], + ["2019-08-06T04:23:37", 7.7457, -23.37387], + ["2019-08-06T05:23:22", 7.73365, -23.3587], + ["2019-08-06T06:23:01", 7.71885, -23.34445], + ["2019-08-06T07:52:35", 7.69656, -23.32141], + ["2019-08-06T09:21:46", 7.68241, -23.30008], + ["2019-08-06T09:51:46", 7.67988, -23.2939], + ["2019-08-06T10:21:46", 7.67911, -23.28824], + ["2019-08-06T11:53:27", 7.67897, -23.26632], + ["2019-08-06T12:23:27", 7.67884, -23.25885], + ["2019-08-06T12:53:27", 7.67798, -23.25027], + ["2019-08-06T13:20:38", 7.6775, -23.24319], + ["2019-08-06T13:50:04", 7.6759, -23.23517], + ["2019-08-06T14:20:04", 7.6729, -23.22736], + ["2019-08-06T14:50:04", 7.66951, -23.22247], + ["2019-08-06T15:49:12", 7.65882, -23.21225], + ["2019-08-06T16:19:12", 7.65105, -23.20538], + ["2019-08-06T16:49:12", 7.64393, -23.19843], + ["2019-08-06T18:19:00", 7.62079, -23.17676], + ["2019-08-06T18:49:00", 7.61397, -23.17024], + ["2019-08-06T19:19:00", 7.60676, -23.16397], + ["2019-08-06T20:18:53", 7.59355, -23.14957], + ["2019-08-06T20:46:53", 7.58866, -23.14132], + ["2019-08-06T21:16:53", 7.58428, -23.13325], + ["2019-08-06T21:46:53", 7.58033, -23.12561], + ["2019-08-06T22:16:24", 7.57584, -23.11776], + ["2019-08-06T22:46:24", 7.57185, -23.11115], + ["2019-08-07T04:43:50", 7.53979, -23.03958], + ["2019-08-07T07:12:53", 7.537, -23.01587], + ["2019-08-07T13:41:56", 7.52594, -22.9393], + ["2019-08-07T15:10:10", 7.52482, -22.91704], + ["2019-08-07T15:40:10", 7.52207, -22.90983], + ["2019-08-07T16:10:10", 7.51718, -22.90271], + ["2019-08-07T22:07:41", 7.46766, -22.82593], + ["2019-08-07T23:40:05", 7.4484, -22.80462], + ["2019-08-08T00:10:05", 7.44437, -22.79381], + ["2019-08-08T00:40:05", 7.44102, -22.78308], + ["2019-08-08T07:07:30", 7.43542, -22.67642], + ["2019-08-08T07:34:15", 7.43597, -22.67031], + ["2019-08-08T08:04:15", 7.43576, -22.66422], + ["2019-08-08T11:32:46", 7.43558, -22.63605], + ["2019-08-08T13:02:09", 7.44471, -22.63255], + ["2019-08-08T13:32:09", 7.44862, -22.63006], + ["2019-08-08T14:02:09", 7.4515, -22.62646], + ["2019-08-08T20:02:11", 7.5265, -22.54517], + ["2019-08-09T00:31:00", 7.5995, -22.47546], + ["2019-08-09T01:29:27", 7.61479, -22.461], + ["2019-08-09T01:59:05", 7.62249, -22.4533], + ["2019-08-09T02:29:05", 7.63026, -22.4454], + ["2019-08-09T06:27:38", 7.66124, -22.35583], + ["2019-08-09T07:26:59", 7.66041, -22.32581], + ["2019-08-09T07:58:30", 7.66012, -22.31009], + ["2019-08-09T08:28:30", 7.65913, -22.29541], + ["2019-08-09T08:58:30", 7.65771, -22.27902], + ["2019-08-09T09:26:01", 7.65597, -22.26501], + ["2019-08-09T09:56:01", 7.65528, -22.25119], + ["2019-08-09T11:25:55", 7.65601, -22.20346], + ["2019-08-09T11:55:55", 7.65567, -22.18792], + ["2019-08-09T12:25:55", 7.6555, -22.17075], + ["2019-08-09T12:55:13", 7.65519, -22.15482], + ["2019-08-09T16:24:26", 7.64474, -22.06723], + ["2019-08-09T17:23:25", 7.64243, -22.04232], + ["2019-08-09T17:53:25", 7.64243, -22.0309], + ["2019-08-09T18:23:25", 7.64166, -22.01871], + ["2019-08-09T18:52:43", 7.64095, -22.00671], + ["2019-08-09T19:22:16", 7.63931, -21.99495], + ["2019-08-09T19:52:16", 7.63734, -21.98508], + ["2019-08-09T20:21:59", 7.63349, -21.97556], + ["2019-08-09T20:51:44", 7.62837, -21.96649], + ["2019-08-09T21:21:59", 7.6222, -21.95599], + ["2019-08-09T21:51:16", 7.61532, -21.94611], + ["2019-08-09T22:21:28", 7.60824, -21.93573], + ["2019-08-09T22:50:36", 7.60076, -21.92508], + ["2019-08-09T23:20:36", 7.59437, -21.91401], + ["2019-08-09T23:50:36", 7.58918, -21.90302], + ["2019-08-10T00:20:05", 7.58379, -21.89116], + ["2019-08-10T00:50:05", 7.57911, -21.88095], + ["2019-08-10T03:19:07", 7.56143, -21.84203], + ["2019-08-10T03:49:07", 7.558, -21.83637], + ["2019-08-10T04:19:07", 7.555, -21.82959], + ["2019-08-10T04:48:24", 7.55269, -21.82245], + ["2019-08-10T06:17:55", 7.54898, -21.80101], + ["2019-08-10T06:47:55", 7.54683, -21.79457], + ["2019-08-10T07:17:55", 7.5434, -21.78839], + ["2019-08-10T07:46:37", 7.54052, -21.78292], + ["2019-08-10T08:16:37", 7.53683, -21.77794], + ["2019-08-10T08:46:37", 7.5331, -21.77313], + ["2019-08-10T09:16:12", 7.52869, -21.7679], + ["2019-08-10T09:46:12", 7.52418, -21.76395], + ["2019-08-10T11:15:37", 7.51258, -21.75423], + ["2019-08-10T11:45:37", 7.51121, -21.75191], + ["2019-08-10T12:15:37", 7.51078, -21.75079], + ["2019-08-10T13:44:37", 7.51424, -21.74652], + ["2019-08-10T14:14:57", 7.51684, -21.74481], + ["2019-08-10T14:44:37", 7.51849, -21.74249], + ["2019-08-10T15:13:58", 7.52223, -21.73926], + ["2019-08-10T15:43:58", 7.52764, -21.73608], + ["2019-08-10T16:43:39", 7.53827, -21.72754], + ["2019-08-10T17:13:27", 7.54235, -21.72303], + ["2019-08-10T17:43:27", 7.54673, -21.71891], + ["2019-08-10T18:13:27", 7.5527, -21.71393], + ["2019-08-10T18:42:55", 7.55834, -21.70963], + ["2019-08-10T20:30:56", 7.57705, -21.69224], + ["2019-08-10T21:00:56", 7.58211, -21.68829], + ["2019-08-10T21:30:56", 7.58627, -21.68546], + ["2019-08-10T22:00:57", 7.58982, -21.68187], + ["2019-08-10T22:30:57", 7.59308, -21.67844], + ["2019-08-10T22:59:47", 7.59593, -21.67506], + ["2019-08-10T23:29:47", 7.59717, -21.67197], + ["2019-08-10T23:59:47", 7.59854, -21.6694], + ["2019-08-11T00:29:56", 7.60076, -21.66754], + ["2019-08-11T00:59:28", 7.60338, -21.66605], + ["2019-08-11T01:29:04", 7.60659, -21.66402], + ["2019-08-11T01:59:04", 7.61092, -21.66248], + ["2019-08-11T02:28:59", 7.61592, -21.66059], + ["2019-08-11T02:58:40", 7.62144, -21.65982], + ["2019-08-11T03:28:59", 7.62785, -21.65802], + ["2019-08-11T03:58:31", 7.63449, -21.65607], + ["2019-08-11T04:28:56", 7.64181, -21.65399], + ["2019-08-11T04:58:19", 7.6485, -21.65219], + ["2019-08-11T05:28:02", 7.65507, -21.6503], + ["2019-08-11T05:58:02", 7.66099, -21.64893], + ["2019-08-11T06:28:26", 7.66526, -21.64877], + ["2019-08-11T06:57:35", 7.67058, -21.6492], + ["2019-08-11T07:56:46", 7.68283, -21.64878], + ["2019-08-11T08:27:29", 7.68825, -21.64853], + ["2019-08-11T08:56:46", 7.69219, -21.64801], + ["2019-08-11T09:26:58", 7.69916, -21.64722], + ["2019-08-11T09:56:58", 7.70467, -21.64673], + ["2019-08-11T10:26:58", 7.71128, -21.64673], + ["2019-08-11T10:56:08", 7.71894, -21.64496], + ["2019-08-11T11:25:49", 7.72684, -21.64191], + ["2019-08-11T11:55:49", 7.73426, -21.63968], + ["2019-08-11T12:25:58", 7.74294, -21.63715], + ["2019-08-11T12:55:28", 7.75125, -21.63388], + ["2019-08-11T13:54:47", 7.76212, -21.62391], + ["2019-08-11T14:24:47", 7.76671, -21.61902], + ["2019-08-11T14:54:47", 7.77207, -21.61584], + ["2019-08-11T15:24:16", 7.77806, -21.61182], + ["2019-08-11T15:54:16", 7.78394, -21.6077], + ["2019-08-11T16:23:55", 7.78982, -21.6045], + ["2019-08-11T16:53:55", 7.79621, -21.60107], + ["2019-08-11T17:23:54", 7.80324, -21.59686], + ["2019-08-11T17:53:54", 7.80835, -21.59291], + ["2019-08-11T18:23:54", 7.81436, -21.58896], + ["2019-08-11T18:53:03", 7.82087, -21.58496], + ["2019-08-11T19:22:37", 7.83, -21.57988], + ["2019-08-11T19:52:37", 7.84056, -21.57516], + ["2019-08-11T20:22:37", 7.8509, -21.57095], + ["2019-08-11T20:51:58", 7.86043, -21.56778], + ["2019-08-11T21:22:08", 7.87114, -21.56519], + ["2019-08-11T22:21:31", 7.89548, -21.55953], + ["2019-08-11T22:51:31", 7.90677, -21.55747], + ["2019-08-11T23:21:31", 7.91771, -21.55515], + ["2019-08-11T23:51:15", 7.92778, -21.55321], + ["2019-08-12T00:21:15", 7.93666, -21.55106], + ["2019-08-12T00:50:57", 7.94595, -21.54837], + ["2019-08-12T01:20:57", 7.95638, -21.54605], + ["2019-08-12T01:49:51", 7.96654, -21.54198], + ["2019-08-12T02:19:51", 7.97598, -21.53692], + ["2019-08-12T02:49:51", 7.98564, -21.5322], + ["2019-08-12T03:19:58", 7.9975, -21.52747], + ["2019-08-12T06:48:30", 8.08324, -21.48444], + ["2019-08-12T08:18:27", 8.11178, -21.45609], + ["2019-08-12T08:47:43", 8.12215, -21.44788], + ["2019-08-12T09:17:54", 8.13223, -21.43927], + ["2019-08-12T09:47:58", 8.14281, -21.42982], + ["2019-08-12T10:17:58", 8.15143, -21.42004], + ["2019-08-12T10:46:41", 8.15874, -21.41025], + ["2019-08-12T11:16:41", 8.16663, -21.39986], + ["2019-08-12T11:46:41", 8.17467, -21.38947], + ["2019-08-12T13:16:26", 8.19989, -21.3572], + ["2019-08-12T13:46:26", 8.20706, -21.3463], + ["2019-08-12T14:16:26", 8.21371, -21.33514], + ["2019-08-12T14:45:55", 8.22068, -21.32436], + ["2019-08-12T15:15:55", 8.22866, -21.31363], + ["2019-08-12T15:45:26", 8.23624, -21.30352], + ["2019-08-12T16:15:26", 8.24332, -21.29279], + ["2019-08-12T16:44:25", 8.24982, -21.28178], + ["2019-08-12T17:14:25", 8.25639, -21.26976], + ["2019-08-12T17:44:25", 8.26232, -21.25809], + ["2019-08-12T19:13:56", 8.2767, -21.22186], + ["2019-08-12T19:43:56", 8.28125, -21.21062], + ["2019-08-12T20:13:56", 8.28576, -21.19852], + ["2019-08-12T20:42:49", 8.28867, -21.18674], + ["2019-08-12T21:13:25", 8.29045, -21.17438], + ["2019-08-12T21:42:49", 8.29224, -21.16254], + ["2019-08-12T22:13:09", 8.29385, -21.14938], + ["2019-08-13T00:12:28", 8.29599, -21.10083], + ["2019-08-13T00:42:28", 8.29776, -21.09087], + ["2019-08-13T01:12:28", 8.29978, -21.08109], + ["2019-08-13T01:41:43", 8.3023, -21.07318], + ["2019-08-13T02:11:25", 8.30463, -21.06436], + ["2019-08-13T02:41:25", 8.30711, -21.05475], + ["2019-08-13T03:11:39", 8.31077, -21.04514], + ["2019-08-13T03:41:07", 8.3145, -21.03482], + ["2019-08-13T04:10:58", 8.31739, -21.0232], + ["2019-08-13T04:40:49", 8.31826, -21.01151], + ["2019-08-13T05:10:58", 8.3195, -20.99908], + ["2019-08-13T05:40:09", 8.32016, -20.98596], + ["2019-08-13T06:10:26", 8.32013, -20.97208], + ["2019-08-13T06:39:34", 8.31917, -20.95935], + ["2019-08-13T07:09:57", 8.3187, -20.94724], + ["2019-08-13T07:38:38", 8.31816, -20.93499], + ["2019-08-13T08:08:38", 8.31687, -20.92203], + ["2019-08-13T08:38:38", 8.31528, -20.91293], + ["2019-08-13T09:08:57", 8.31255, -20.905], + ["2019-08-13T09:38:18", 8.30974, -20.89752], + ["2019-08-13T11:07:56", 8.30312, -20.8739], + ["2019-08-13T11:37:56", 8.30188, -20.86549], + ["2019-08-13T12:07:56", 8.30016, -20.85699], + ["2019-08-13T12:37:15", 8.29979, -20.84906], + ["2019-08-13T13:07:27", 8.29993, -20.84121], + ["2019-08-13T13:37:27", 8.29932, -20.83374], + ["2019-08-13T14:07:27", 8.29899, -20.82593], + ["2019-08-13T14:36:43", 8.29895, -20.81677], + ["2019-08-13T16:36:04", 8.29521, -20.77682], + ["2019-08-13T17:06:04", 8.29311, -20.76738], + ["2019-08-13T17:36:04", 8.29144, -20.75888], + ["2019-08-13T18:06:28", 8.28958, -20.7511], + ["2019-08-13T18:35:39", 8.28815, -20.74442], + ["2019-08-13T19:05:25", 8.28633, -20.73737], + ["2019-08-13T19:35:25", 8.2837, -20.73059], + ["2019-08-13T20:05:25", 8.28045, -20.72321], + ["2019-08-13T20:35:07", 8.27746, -20.71595], + ["2019-08-13T21:05:07", 8.2753, -20.7084], + ["2019-08-13T21:34:32", 8.27326, -20.70087], + ["2019-08-13T22:04:57", 8.26972, -20.69278], + ["2019-08-13T22:33:57", 8.26702, -20.68503], + ["2019-08-13T23:03:57", 8.26474, -20.67765], + ["2019-08-13T23:33:57", 8.26252, -20.67001], + ["2019-08-14T00:04:25", 8.25914, -20.66257], + ["2019-08-14T00:33:40", 8.2562, -20.65604], + ["2019-08-14T01:03:24", 8.2524, -20.65026], + ["2019-08-14T01:33:24", 8.24919, -20.64468], + ["2019-08-14T02:03:24", 8.24464, -20.63919], + ["2019-08-14T02:32:53", 8.24098, -20.63435], + ["2019-08-14T03:02:53", 8.2375, -20.6286], + ["2019-08-14T03:32:53", 8.2341, -20.62311], + ["2019-08-14T04:32:16", 8.22835, -20.60946], + ["2019-08-14T05:02:16", 8.22551, -20.60242], + ["2019-08-14T05:32:16", 8.22289, -20.59555], + ["2019-08-14T06:02:36", 8.22016, -20.58868], + ["2019-08-14T07:31:19", 8.20862, -20.57093], + ["2019-08-14T08:01:19", 8.20433, -20.56707], + ["2019-08-14T08:31:19", 8.20193, -20.56415], + ["2019-08-14T09:01:39", 8.20085, -20.56052], + ["2019-08-14T11:00:25", 8.195, -20.54098], + ["2019-08-14T11:30:11", 8.19314, -20.53476], + ["2019-08-14T12:00:25", 8.19075, -20.52759], + ["2019-08-14T12:29:55", 8.18857, -20.5204], + ["2019-08-14T12:59:55", 8.18587, -20.51233], + ["2019-08-14T13:29:17", 8.18385, -20.50458], + ["2019-08-14T13:58:49", 8.18233, -20.49625], + ["2019-08-14T14:28:49", 8.18121, -20.48947], + ["2019-08-14T14:58:31", 8.17939, -20.48247], + ["2019-08-14T15:28:31", 8.17664, -20.47586], + ["2019-08-14T15:58:09", 8.17351, -20.46984], + ["2019-08-14T16:28:09", 8.17059, -20.46478], + ["2019-08-14T16:58:26", 8.16915, -20.45917], + ["2019-08-14T17:27:39", 8.16925, -20.45441], + ["2019-08-14T17:57:25", 8.16897, -20.4491], + ["2019-08-14T18:27:25", 8.1685, -20.44421], + ["2019-08-14T18:57:25", 8.1683, -20.44052], + ["2019-08-14T19:26:14", 8.16764, -20.43689], + ["2019-08-14T19:56:14", 8.16686, -20.43191], + ["2019-08-14T20:26:14", 8.16618, -20.42676], + ["2019-08-14T20:55:54", 8.16562, -20.42231], + ["2019-08-14T21:25:54", 8.16549, -20.41742], + ["2019-08-14T22:25:05", 8.16554, -20.40644], + ["2019-08-14T22:55:42", 8.16553, -20.39966], + ["2019-08-14T23:25:05", 8.1652, -20.39297], + ["2019-08-14T23:55:29", 8.16423, -20.38562], + ["2019-08-15T01:54:25", 8.15737, -20.35918], + ["2019-08-15T02:24:25", 8.1569, -20.35326], + ["2019-08-15T02:54:25", 8.1571, -20.34708], + ["2019-08-15T03:23:58", 8.15809, -20.34158], + ["2019-08-15T04:23:08", 8.16356, -20.3303], + ["2019-08-15T04:53:08", 8.16527, -20.32446], + ["2019-08-15T05:23:08", 8.16614, -20.31845], + ["2019-08-15T05:52:53", 8.16717, -20.31152], + ["2019-08-15T06:22:53", 8.16789, -20.30603], + ["2019-08-15T06:53:06", 8.16977, -20.30078], + ["2019-08-15T07:22:56", 8.17245, -20.29468], + ["2019-08-15T07:52:56", 8.17495, -20.28833], + ["2019-08-15T08:22:19", 8.17679, -20.28201], + ["2019-08-15T08:52:39", 8.17848, -20.27466], + ["2019-08-15T09:21:35", 8.1808, -20.2677], + ["2019-08-15T09:51:55", 8.18209, -20.2594], + ["2019-08-15T10:21:35", 8.18266, -20.2507], + ["2019-08-15T10:51:58", 8.18225, -20.24153], + ["2019-08-15T11:21:58", 8.1811, -20.23243], + ["2019-08-15T11:51:58", 8.1805, -20.2229], + ["2019-08-15T13:20:26", 8.1799, -20.1926], + ["2019-08-15T13:50:26", 8.17916, -20.17998], + ["2019-08-15T14:20:26", 8.17758, -20.16788], + ["2019-08-15T16:49:56", 8.17669, -20.10789], + ["2019-08-15T17:19:56", 8.17883, -20.09476], + ["2019-08-15T17:49:56", 8.18206, -20.08206], + ["2019-08-15T18:19:02", 8.18532, -20.07031], + ["2019-08-15T19:18:02", 8.19089, -20.04813], + ["2019-08-15T19:48:02", 8.19335, -20.03689], + ["2019-08-15T20:18:02", 8.19605, -20.02573], + ["2019-08-15T20:47:35", 8.19848, -20.01424], + ["2019-08-15T21:17:35", 8.20177, -20.0036], + ["2019-08-15T21:47:27", 8.20457, -19.99163], + ["2019-08-15T22:17:27", 8.20526, -19.97944], + ["2019-08-15T22:47:27", 8.20539, -19.96588], + ["2019-08-15T23:16:55", 8.20417, -19.95247], + ["2019-08-15T23:46:55", 8.20313, -19.93942], + ["2019-08-16T01:15:13", 8.20287, -19.89911], + ["2019-08-16T01:45:13", 8.20321, -19.88606], + ["2019-08-16T02:15:13", 8.20368, -19.8743], + ["2019-08-16T02:45:27", 8.20473, -19.86255], + ["2019-08-16T11:43:57", 8.24658, -19.63269], + ["2019-08-16T17:09:56", 8.26618, -19.47202], + ["2019-08-16T23:08:00", 8.26174, -19.26419], + ["2019-08-17T04:36:45", 8.18881, -19.09045], + ["2019-08-17T09:05:39", 8.14087, -18.99777], + ["2019-08-17T12:33:03", 8.11097, -18.94122], + ["2019-08-17T13:03:57", 8.10731, -18.93137], + ["2019-08-17T13:31:57", 8.10421, -18.92259], + ["2019-08-17T14:01:57", 8.10065, -18.91418], + ["2019-08-17T14:31:57", 8.09627, -18.90585], + ["2019-08-17T16:01:55", 8.08048, -18.88235], + ["2019-08-17T17:01:08", 8.0708, -18.86783], + ["2019-08-17T17:30:34", 8.06673, -18.86096], + ["2019-08-17T19:00:27", 8.05308, -18.84268], + ["2019-08-17T19:30:27", 8.04895, -18.8371], + ["2019-08-17T20:00:27", 8.0442, -18.83075], + ["2019-08-18T03:56:59", 7.9876, -18.78354], + ["2019-08-18T07:25:40", 7.96246, -18.76343], + ["2019-08-18T10:23:32", 7.95116, -18.74734], + ["2019-08-18T18:50:09", 7.95439, -18.71881], + ["2019-08-18T19:19:45", 7.95503, -18.71463], + ["2019-08-18T19:49:45", 7.95593, -18.71008], + ["2019-08-18T21:20:32", 7.95758, -18.69009], + ["2019-08-18T21:52:04", 7.95781, -18.68415], + ["2019-08-18T22:22:04", 7.95837, -18.67883], + ["2019-08-19T09:44:47", 7.96473, -18.58948], + ["2019-08-19T10:14:44", 7.9652, -18.58282], + ["2019-08-19T10:44:44", 7.9664, -18.57587], + ["2019-08-19T12:15:00", 7.96761, -18.55469], + ["2019-08-19T12:43:46", 7.96777, -18.54813], + ["2019-08-19T13:14:27", 7.9683, -18.54141], + ["2019-08-19T14:42:58", 7.96738, -18.52414], + ["2019-08-19T15:12:58", 7.96661, -18.51993], + ["2019-08-19T15:42:58", 7.96476, -18.51624], + ["2019-08-19T16:13:25", 7.96168, -18.51166], + ["2019-08-19T16:42:31", 7.95965, -18.50696], + ["2019-08-19T18:41:07", 7.95021, -18.48778], + ["2019-08-19T19:11:07", 7.9463, -18.48366], + ["2019-08-19T19:41:07", 7.94218, -18.47885], + ["2019-08-19T23:10:36", 7.91674, -18.43857], + ["2019-08-19T23:39:38", 7.91461, -18.43296], + ["2019-08-20T00:09:38", 7.91221, -18.4273], + ["2019-08-20T00:39:38", 7.90994, -18.42172], + ["2019-08-20T01:09:55", 7.90783, -18.41733], + ["2019-08-20T01:39:11", 7.90583, -18.41333], + ["2019-08-20T02:08:58", 7.9036, -18.40922], + ["2019-08-20T02:38:58", 7.90094, -18.40579], + ["2019-08-20T03:08:58", 7.89746, -18.40201], + ["2019-08-20T03:38:17", 7.89432, -18.39877], + ["2019-08-20T04:08:25", 7.89122, -18.39465], + ["2019-08-20T04:37:51", 7.88809, -18.39011], + ["2019-08-20T05:07:59", 7.88529, -18.38461], + ["2019-08-20T08:37:00", 7.86954, -18.35699], + ["2019-08-20T09:07:27", 7.86578, -18.354], + ["2019-08-20T10:06:57", 7.85932, -18.34677], + ["2019-08-20T12:05:28", 7.85209, -18.33364], + ["2019-08-20T12:35:28", 7.85055, -18.33029], + ["2019-08-20T13:05:28", 7.84862, -18.32806], + ["2019-08-20T15:33:32", 7.83876, -18.30503], + ["2019-08-20T16:04:25", 7.83631, -18.30075], + ["2019-08-20T16:33:32", 7.83357, -18.29645], + ["2019-08-20T20:31:37", 7.82321, -18.26963], + ["2019-08-20T21:01:37", 7.82278, -18.26697], + ["2019-08-20T21:31:37", 7.82214, -18.26465], + ["2019-08-20T22:02:28", 7.82193, -18.26221], + ["2019-08-21T01:30:29", 7.82053, -18.22397], + ["2019-08-21T01:59:21", 7.81855, -18.21662], + ["2019-08-21T02:29:21", 7.81623, -18.20915], + ["2019-08-21T02:59:21", 7.81391, -18.2016], + ["2019-08-21T03:29:57", 7.81159, -18.19296], + ["2019-08-21T05:28:56", 7.80981, -18.16195], + ["2019-08-21T05:58:56", 7.81063, -18.1538], + ["2019-08-21T06:28:56", 7.81127, -18.14505], + ["2019-08-21T14:56:28", 7.80895, -18.0036], + ["2019-08-22T03:21:17", 7.75801, -17.74405], + ["2019-08-22T04:50:37", 7.74719, -17.71971], + ["2019-08-22T05:20:37", 7.74474, -17.71482], + ["2019-08-22T05:50:37", 7.74195, -17.70941], + ["2019-08-22T06:20:14", 7.73829, -17.70322], + ["2019-08-22T06:50:14", 7.73451, -17.69678], + ["2019-08-22T09:19:04", 7.71274, -17.66428], + ["2019-08-22T09:49:04", 7.70768, -17.65819], + ["2019-08-22T10:19:04", 7.70373, -17.65158], + ["2019-08-22T10:48:56", 7.69938, -17.64363], + ["2019-08-22T11:18:56", 7.6947, -17.6353], + ["2019-08-22T11:48:56", 7.69024, -17.62723], + ["2019-08-22T12:18:25", 7.68619, -17.61998], + ["2019-08-22T12:48:25", 7.6822, -17.61337], + ["2019-08-22T13:18:26", 7.67863, -17.60873], + ["2019-08-22T13:48:26", 7.67537, -17.60452], + ["2019-08-22T14:47:54", 7.67016, -17.59532], + ["2019-08-22T15:17:29", 7.66832, -17.59079], + ["2019-08-22T15:47:54", 7.66694, -17.58682], + ["2019-08-22T16:17:02", 7.66608, -17.58261], + ["2019-08-22T16:46:56", 7.66537, -17.5782], + ["2019-08-22T17:16:56", 7.66451, -17.57348], + ["2019-08-22T17:46:56", 7.66369, -17.56876], + ["2019-08-22T18:16:07", 7.66278, -17.56402], + ["2019-08-22T18:46:07", 7.66124, -17.55973], + ["2019-08-22T19:16:07", 7.65965, -17.55518], + ["2019-08-22T20:15:15", 7.65409, -17.54821], + ["2019-08-22T20:45:56", 7.65087, -17.5462], + ["2019-08-22T21:15:15", 7.64761, -17.54443], + ["2019-08-22T21:45:26", 7.64436, -17.54288], + ["2019-08-22T22:14:25", 7.64095, -17.54091], + ["2019-08-22T22:44:25", 7.63735, -17.54005], + ["2019-08-22T23:14:25", 7.63375, -17.53928], + ["2019-08-22T23:44:27", 7.63008, -17.53732], + ["2019-08-23T00:13:55", 7.62631, -17.53418], + ["2019-08-23T00:43:55", 7.62254, -17.53061], + ["2019-08-23T01:13:28", 7.61904, -17.52728], + ["2019-08-23T01:43:25", 7.6152, -17.52439], + ["2019-08-23T02:13:25", 7.6125, -17.52276], + ["2019-08-23T02:43:25", 7.60988, -17.52164], + ["2019-08-23T03:12:43", 7.6083, -17.521], + ["2019-08-23T03:42:54", 7.60711, -17.52032], + ["2019-08-23T05:41:55", 7.61139, -17.52522], + ["2019-08-23T06:11:55", 7.61422, -17.52651], + ["2019-08-23T06:41:55", 7.61825, -17.5278], + ["2019-08-23T08:40:58", 7.63445, -17.53078], + ["2019-08-23T09:10:58", 7.63788, -17.53129], + ["2019-08-23T09:40:58", 7.64084, -17.53189], + ["2019-08-23T11:09:39", 7.64889, -17.53354], + ["2019-08-23T11:39:39", 7.65099, -17.53388], + ["2019-08-23T12:09:39", 7.65374, -17.53345], + ["2019-08-23T12:39:54", 7.6578, -17.53296], + ["2019-08-23T13:08:58", 7.66233, -17.5336], + ["2019-08-23T13:38:58", 7.66662, -17.53463], + ["2019-08-23T14:08:58", 7.67091, -17.53635], + ["2019-08-23T14:38:43", 7.67557, -17.53862], + ["2019-08-23T15:08:43", 7.68068, -17.54059], + ["2019-08-23T15:38:30", 7.68683, -17.5432], + ["2019-08-23T16:08:30", 7.69288, -17.5462], + ["2019-08-23T16:38:27", 7.69978, -17.54899], + ["2019-08-23T17:08:27", 7.70639, -17.55079], + ["2019-08-23T17:38:27", 7.71364, -17.55191], + ["2019-08-23T18:07:57", 7.721, -17.553], + ["2019-08-23T18:37:57", 7.72838, -17.55334], + ["2019-08-23T19:07:24", 7.73488, -17.55344], + ["2019-08-23T20:06:41", 7.75013, -17.55531], + ["2019-08-23T20:36:41", 7.7588, -17.55565], + ["2019-08-23T21:06:41", 7.76713, -17.55548], + ["2019-08-23T21:36:56", 7.77508, -17.55502], + ["2019-08-23T22:06:28", 7.78282, -17.55476], + ["2019-08-23T22:36:28", 7.79067, -17.5545], + ["2019-08-23T23:05:57", 7.79751, -17.55402], + ["2019-08-23T23:35:57", 7.80459, -17.55325], + ["2019-08-24T00:05:15", 7.81195, -17.55204], + ["2019-08-24T00:35:15", 7.81925, -17.5505], + ["2019-08-24T01:05:15", 7.8259, -17.54904], + ["2019-08-24T01:34:57", 7.83278, -17.5476], + ["2019-08-24T02:04:57", 7.8399, -17.54709], + ["2019-08-24T02:35:25", 7.84799, -17.54745], + ["2019-08-24T03:04:42", 7.85645, -17.54715], + ["2019-08-24T05:03:54", 7.89083, -17.54211], + ["2019-08-24T05:33:54", 7.89997, -17.54005], + ["2019-08-24T06:03:54", 7.90915, -17.53748], + ["2019-08-24T06:34:07", 7.91856, -17.53357], + ["2019-08-24T07:03:31", 7.92754, -17.52994], + ["2019-08-24T07:33:25", 7.93631, -17.52683], + ["2019-08-24T08:03:25", 7.94446, -17.5234], + ["2019-08-24T08:33:25", 7.95227, -17.51834], + ["2019-08-24T09:32:28", 7.96721, -17.5078], + ["2019-08-24T10:02:28", 7.97498, -17.50291], + ["2019-08-24T10:32:28", 7.98309, -17.49802], + ["2019-08-24T11:01:55", 7.99165, -17.49258], + ["2019-08-24T11:31:55", 8.0007, -17.48628], + ["2019-08-24T12:01:55", 8.00984, -17.48182], + ["2019-08-24T12:31:55", 8.01971, -17.47684], + ["2019-08-24T13:01:38", 8.02952, -17.47128], + ["2019-08-24T13:31:38", 8.04021, -17.4657], + ["2019-08-24T14:00:56", 8.05084, -17.45994], + ["2019-08-24T14:30:56", 8.06199, -17.45367], + ["2019-08-24T15:00:25", 8.07238, -17.44641], + ["2019-08-24T15:30:25", 8.08272, -17.4386], + ["2019-08-24T16:29:26", 8.10127, -17.42087], + ["2019-08-24T16:59:26", 8.10908, -17.41091], + ["2019-08-24T17:29:26", 8.11655, -17.40018], + ["2019-08-24T17:58:52", 8.12364, -17.38858], + ["2019-08-24T19:28:24", 8.13498, -17.3531], + ["2019-08-24T19:58:24", 8.1379, -17.34031], + ["2019-08-24T20:28:24", 8.14082, -17.32709], + ["2019-08-24T20:57:55", 8.14367, -17.31474], + ["2019-08-24T21:27:55", 8.14689, -17.30255], + ["2019-08-24T22:27:09", 8.15102, -17.27899], + ["2019-08-24T22:57:09", 8.15252, -17.26706], + ["2019-08-24T23:27:09", 8.15389, -17.25427], + ["2019-08-24T23:56:27", 8.15509, -17.24185], + ["2019-08-25T00:26:37", 8.15611, -17.22992], + ["2019-08-25T00:55:36", 8.15778, -17.21951], + ["2019-08-25T01:25:36", 8.1594, -17.20938], + ["2019-08-25T01:55:36", 8.16043, -17.19934], + ["2019-08-25T02:25:17", 8.16156, -17.18928], + ["2019-08-25T02:55:17", 8.16245, -17.17975], + ["2019-08-25T03:25:27", 8.16325, -17.16971], + ["2019-08-25T03:54:51", 8.16352, -17.15933], + ["2019-08-25T04:24:26", 8.16344, -17.14798], + ["2019-08-25T04:54:26", 8.16348, -17.13725], + ["2019-08-25T05:24:26", 8.16292, -17.12549], + ["2019-08-25T05:54:25", 8.16149, -17.11358], + ["2019-08-25T06:24:25", 8.16006, -17.10199], + ["2019-08-25T06:53:17", 8.1583, -17.09115], + ["2019-08-25T07:23:17", 8.15598, -17.07956], + ["2019-08-25T07:53:17", 8.15358, -17.06857], + ["2019-08-25T08:22:57", 8.1521, -17.05812], + ["2019-08-25T08:52:57", 8.15043, -17.04773], + ["2019-08-25T09:22:38", 8.14823, -17.03665], + ["2019-08-25T09:52:38", 8.14644, -17.02609], + ["2019-08-25T10:22:56", 8.14464, -17.01555], + ["2019-08-25T10:52:56", 8.14288, -17.00568], + ["2019-08-25T11:22:56", 8.14068, -16.99564], + ["2019-08-25T11:52:20", 8.13859, -16.98651], + ["2019-08-25T12:22:37", 8.13626, -16.97754], + ["2019-08-25T14:21:37", 8.12374, -16.94037], + ["2019-08-25T14:51:37", 8.12062, -16.93127], + ["2019-08-25T15:21:37", 8.11659, -16.92209], + ["2019-08-25T16:50:22", 8.10493, -16.8986], + ["2019-08-25T17:20:22", 8.10163, -16.89156], + ["2019-08-25T17:50:22", 8.09828, -16.88504], + ["2019-08-25T19:19:57", 8.08907, -16.86777], + ["2019-08-25T19:49:57", 8.08662, -16.86314], + ["2019-08-25T20:19:57", 8.08417, -16.85876], + ["2019-08-25T20:49:10", 8.08146, -16.85394], + ["2019-08-25T21:19:27", 8.07831, -16.84872], + ["2019-08-25T21:48:33", 8.0747, -16.84343], + ["2019-08-25T22:18:33", 8.07058, -16.83819], + ["2019-08-25T22:48:33", 8.06629, -16.83356], + ["2019-08-25T23:18:56", 8.06197, -16.82889], + ["2019-08-25T23:48:17", 8.05814, -16.82538], + ["2019-08-26T01:17:57", 8.04834, -16.81971], + ["2019-08-26T01:47:57", 8.04632, -16.81937], + ["2019-08-26T02:17:57", 8.04461, -16.81894], + ["2019-08-26T02:47:26", 8.04332, -16.81845], + ["2019-08-26T03:17:55", 8.04224, -16.81772], + ["2019-08-26T03:46:57", 8.0418, -16.81689], + ["2019-08-26T04:16:57", 8.04149, -16.8162], + ["2019-08-26T04:46:57", 8.0406, -16.815], + ["2019-08-26T05:16:54", 8.03928, -16.81358], + ["2019-08-26T05:46:29", 8.03785, -16.81223], + ["2019-08-26T06:16:54", 8.03594, -16.81067], + ["2019-08-26T06:46:00", 8.03423, -16.80902], + ["2019-08-26T07:16:00", 8.03346, -16.80722], + ["2019-08-26T07:46:00", 8.03276, -16.80447], + ["2019-08-26T08:16:26", 8.03095, -16.79929], + ["2019-08-26T10:15:26", 8.0282, -16.78455], + ["2019-08-26T10:45:26", 8.02833, -16.78223], + ["2019-08-26T11:15:26", 8.02884, -16.78043], + ["2019-08-26T11:44:54", 8.02999, -16.77985], + ["2019-08-26T12:14:54", 8.03171, -16.77899], + ["2019-08-26T12:44:01", 8.03327, -16.77869], + ["2019-08-26T13:14:01", 8.03503, -16.7786], + ["2019-08-26T13:44:01", 8.03755, -16.77869], + ["2019-08-26T14:13:36", 8.04113, -16.77813], + ["2019-08-26T14:43:36", 8.04401, -16.77676], + ["2019-08-26T15:43:12", 8.04941, -16.77368], + ["2019-08-26T16:12:54", 8.05274, -16.77154], + ["2019-08-26T16:42:54", 8.05626, -16.76965], + ["2019-08-26T17:12:54", 8.06004, -16.76819], + ["2019-08-26T17:42:25", 8.0642, -16.76712], + ["2019-08-26T18:11:51", 8.06825, -16.76586], + ["2019-08-26T18:41:51", 8.0718, -16.76474], + ["2019-08-26T19:11:25", 8.07518, -16.76336], + ["2019-08-26T19:41:25", 8.07879, -16.76199], + ["2019-08-26T20:11:26", 8.08282, -16.75998], + ["2019-08-26T20:41:02", 8.08691, -16.75787], + ["2019-08-26T21:11:26", 8.0911, -16.75586], + ["2019-08-26T22:10:24", 8.09939, -16.75238], + ["2019-08-26T22:40:24", 8.10369, -16.75109], + ["2019-08-26T23:10:24", 8.10854, -16.75058], + ["2019-08-26T23:39:56", 8.11341, -16.75095], + ["2019-08-27T01:09:28", 8.13283, -16.7507], + ["2019-08-27T01:39:28", 8.13944, -16.74898], + ["2019-08-27T02:09:28", 8.14601, -16.74683], + ["2019-08-27T02:39:08", 8.15174, -16.74383], + ["2019-08-27T03:09:08", 8.15762, -16.74023], + ["2019-08-27T03:38:09", 8.16302, -16.73564], + ["2019-08-27T04:08:09", 8.16844, -16.73015], + ["2019-08-27T04:38:09", 8.17393, -16.72534], + ["2019-08-27T05:07:36", 8.17916, -16.71995], + ["2019-08-27T05:37:36", 8.18359, -16.71463], + ["2019-08-27T06:07:10", 8.18812, -16.70857], + ["2019-08-27T06:37:10", 8.19186, -16.70316], + ["2019-08-27T07:06:50", 8.19537, -16.69714], + ["2019-08-27T07:36:50", 8.19863, -16.69122], + ["2019-08-27T08:06:55", 8.20236, -16.68576], + ["2019-08-27T08:36:26", 8.20581, -16.68118], + ["2019-08-27T09:06:37", 8.2098, -16.67755], + ["2019-08-27T09:36:05", 8.21367, -16.67447], + ["2019-08-27T10:05:51", 8.2181, -16.67073], + ["2019-08-27T10:35:51", 8.22325, -16.66644], + ["2019-08-27T12:05:57", 8.23931, -16.65054], + ["2019-08-27T12:35:57", 8.2448, -16.64445], + ["2019-08-27T13:05:57", 8.25038, -16.63715], + ["2019-08-27T13:35:05", 8.25609, -16.63031], + ["2019-08-27T14:05:26", 8.26219, -16.62329], + ["2019-08-27T14:34:43", 8.26779, -16.61606], + ["2019-08-27T16:04:25", 8.2867, -16.59349], + ["2019-08-27T16:34:25", 8.29155, -16.58482], + ["2019-08-27T17:04:25", 8.29609, -16.57718], + ["2019-08-27T17:33:39", 8.30045, -16.57034], + ["2019-08-27T19:32:49", 8.31762, -16.54139], + ["2019-08-27T20:02:49", 8.32144, -16.53246], + ["2019-08-27T20:32:49", 8.32474, -16.52319], + ["2019-08-27T22:02:27", 8.33385, -16.49406], + ["2019-08-27T22:32:07", 8.33768, -16.48465], + ["2019-08-27T23:02:27", 8.34162, -16.47501], + ["2019-08-27T23:31:56", 8.34573, -16.46541], + ["2019-08-28T00:01:56", 8.34908, -16.45563], + ["2019-08-28T00:31:28", 8.35182, -16.44604], + ["2019-08-28T01:01:11", 8.35402, -16.43673], + ["2019-08-28T01:31:11", 8.35548, -16.42798], + ["2019-08-28T02:01:28", 8.35651, -16.41907], + ["2019-08-28T03:29:56", 8.35553, -16.39215], + ["2019-08-28T04:00:27", 8.35436, -16.38272], + ["2019-08-28T04:29:56", 8.35364, -16.37378], + ["2019-08-28T05:00:08", 8.35345, -16.36475], + ["2019-08-28T06:59:28", 8.35084, -16.32812], + ["2019-08-28T07:29:05", 8.34922, -16.32022], + ["2019-08-28T07:59:28", 8.34789, -16.31241], + ["2019-08-28T08:28:39", 8.34632, -16.30527], + ["2019-08-28T13:56:56", 8.32067, -16.20316], + ["2019-08-28T15:25:52", 8.31714, -16.17768], + ["2019-08-28T15:55:52", 8.31311, -16.16953], + ["2019-08-28T16:25:52", 8.30757, -16.16086], + ["2019-08-28T17:25:28", 8.29393, -16.14465], + ["2019-08-28T17:55:26", 8.28651, -16.13638], + ["2019-08-28T18:25:26", 8.27905, -16.12857], + ["2019-08-28T18:55:26", 8.2714, -16.12067], + ["2019-08-28T19:25:01", 8.26348, -16.11322], + ["2019-08-28T19:55:25", 8.25589, -16.10492], + ["2019-08-28T20:54:56", 8.24386, -16.08923], + ["2019-08-28T21:24:17", 8.23816, -16.08271], + ["2019-08-28T21:54:17", 8.23237, -16.0761], + ["2019-08-28T22:24:17", 8.22678, -16.07001], + ["2019-08-28T22:54:39", 8.22129, -16.06378], + ["2019-08-28T23:53:56", 8.21271, -16.05251], + ["2019-08-29T00:23:56", 8.20936, -16.04693], + ["2019-08-29T00:53:56", 8.20627, -16.04187], + ["2019-08-29T01:23:28", 8.20382, -16.03715], + ["2019-08-29T01:53:28", 8.20125, -16.03217], + ["2019-08-29T06:20:55", 8.18037, -15.99062], + ["2019-08-29T06:50:55", 8.17761, -15.98513], + ["2019-08-29T07:20:55", 8.17432, -15.97989], + ["2019-08-29T07:50:39", 8.17134, -15.97538], + ["2019-08-29T08:20:39", 8.16855, -15.97272], + ["2019-08-29T08:50:24", 8.16489, -15.97002], + ["2019-08-29T09:20:24", 8.16151, -15.96753], + ["2019-08-29T09:50:24", 8.15765, -15.96393], + ["2019-08-29T10:49:56", 8.1506, -15.95752], + ["2019-08-29T11:19:08", 8.1478, -15.95514], + ["2019-08-29T11:49:26", 8.14504, -15.95294], + ["2019-08-29T12:18:18", 8.14106, -15.94928], + ["2019-08-29T12:48:18", 8.13655, -15.94422], + ["2019-08-29T13:18:18", 8.13222, -15.9407], + ["2019-08-29T13:48:26", 8.12914, -15.93851], + ["2019-08-29T14:48:09", 8.12543, -15.9331], + ["2019-08-29T15:18:09", 8.12423, -15.93138], + ["2019-08-29T15:48:09", 8.12269, -15.92966], + ["2019-08-29T16:17:24", 8.12104, -15.92842], + ["2019-08-29T16:47:57", 8.12016, -15.9277], + ["2019-08-29T17:17:24", 8.11932, -15.92679], + ["2019-08-29T17:47:10", 8.11924, -15.92504], + ["2019-08-29T18:17:10", 8.12048, -15.92358], + ["2019-08-29T18:46:55", 8.12238, -15.92301], + ["2019-08-29T19:16:55", 8.12561, -15.92224], + ["2019-08-29T21:15:56", 8.13902, -15.90801], + ["2019-08-29T21:45:56", 8.14108, -15.90338], + ["2019-08-29T22:15:56", 8.14207, -15.89883], + ["2019-08-29T22:45:58", 8.14209, -15.89432], + ["2019-08-30T00:14:58", 8.14134, -15.88028], + ["2019-08-30T00:44:58", 8.14178, -15.87547], + ["2019-08-30T01:14:58", 8.14298, -15.87152], + ["2019-08-30T02:44:26", 8.14811, -15.86244], + ["2019-08-30T03:14:26", 8.15047, -15.86021], + ["2019-08-30T03:44:26", 8.15372, -15.85721], + ["2019-08-30T04:13:53", 8.15766, -15.85437], + ["2019-08-30T04:43:30", 8.16222, -15.85129], + ["2019-08-30T05:13:30", 8.16728, -15.84854], + ["2019-08-30T06:43:59", 8.18272, -15.83835], + ["2019-08-30T07:13:21", 8.18891, -15.83359], + ["2019-08-30T07:43:56", 8.1953, -15.828], + ["2019-08-30T08:12:47", 8.20143, -15.82216], + ["2019-08-30T08:42:47", 8.2074, -15.81495], + ["2019-08-30T09:12:47", 8.21181, -15.80826], + ["2019-08-30T09:48:35", 8.21607, -15.79975], + ["2019-08-30T10:18:35", 8.21881, -15.79254], + ["2019-08-30T13:09:36", 8.23018, -15.74982], + ["2019-08-30T15:51:40", 8.24632, -15.70526], + ["2019-08-30T22:20:56", 8.26662, -15.60889], + ["2019-08-31T01:30:27", 8.271, -15.56116], + ["2019-08-31T03:37:28", 8.26619, -15.53152], + ["2019-08-31T04:06:31", 8.26538, -15.52359], + ["2019-08-31T06:09:18", 8.26148, -15.48558], + ["2019-08-31T06:39:18", 8.25916, -15.47717], + ["2019-08-31T07:09:18", 8.25538, -15.46979], + ["2019-08-31T07:39:06", 8.25009, -15.46242], + ["2019-08-31T08:09:06", 8.24455, -15.45512], + ["2019-08-31T08:39:06", 8.23969, -15.44971], + ["2019-08-31T09:08:33", 8.23466, -15.44464], + ["2019-08-31T09:38:56", 8.22788, -15.44205], + ["2019-08-31T10:08:11", 8.22151, -15.43878], + ["2019-08-31T11:07:18", 8.20974, -15.42997], + ["2019-08-31T11:37:18", 8.20407, -15.42534], + ["2019-08-31T12:07:18", 8.19952, -15.42053], + ["2019-08-31T13:36:55", 8.18842, -15.40308], + ["2019-08-31T14:06:55", 8.18572, -15.39596], + ["2019-08-31T14:36:55", 8.18352, -15.38721], + ["2019-08-31T18:27:03", 8.16568, -15.30017], + ["2019-08-31T18:57:24", 8.15766, -15.29279], + ["2019-08-31T20:33:21", 8.12794, -15.27948], + ["2019-08-31T21:03:21", 8.11961, -15.27673], + ["2019-08-31T21:33:21", 8.11184, -15.2739], + ["2019-08-31T22:41:58", 8.09498, -15.2652], + ["2019-08-31T23:11:26", 8.08766, -15.26116], + ["2019-08-31T23:41:26", 8.08042, -15.25653], + ["2019-09-01T03:22:22", 8.04091, -15.18625], + ["2019-09-01T09:40:55", 7.96875, -15.11755], + ["2019-09-01T10:10:05", 7.96179, -15.11362], + ["2019-09-01T12:08:34", 7.93952, -15.09429], + ["2019-09-01T12:38:34", 7.93437, -15.08914], + ["2019-09-01T13:08:34", 7.92909, -15.08493], + ["2019-09-01T15:07:51", 7.913, -15.06671], + ["2019-09-01T15:37:51", 7.90957, -15.06268], + ["2019-09-01T16:07:51", 7.90687, -15.05847], + ["2019-09-01T17:07:30", 7.90254, -15.04882], + ["2019-09-01T17:37:30", 7.90009, -15.04496], + ["2019-09-01T18:07:30", 7.89739, -15.04196], + ["2019-09-02T03:24:53", 7.86387, -14.97528], + ["2019-09-02T07:28:57", 7.82714, -14.96841], + ["2019-09-02T15:35:48", 7.78259, -14.90866], + ["2019-09-02T19:31:56", 7.71326, -14.87863], + ["2019-09-03T09:06:55", 7.62302, -14.77414], + ["2019-09-03T09:36:00", 7.61825, -14.76962], + ["2019-09-03T11:05:26", 7.60514, -14.75536], + ["2019-09-03T11:35:20", 7.60143, -14.75012], + ["2019-09-03T12:05:26", 7.59686, -14.74557], + ["2019-09-03T15:34:23", 7.56241, -14.71765], + ["2019-09-03T17:03:37", 7.54697, -14.70786], + ["2019-09-03T17:33:37", 7.54113, -14.7052], + ["2019-09-03T18:03:37", 7.53697, -14.70297], + ["2019-09-03T18:33:02", 7.5354, -14.70062], + ["2019-09-03T19:02:58", 7.53373, -14.69889], + ["2019-09-03T19:32:58", 7.5318, -14.69786], + ["2019-09-03T20:02:58", 7.52983, -14.69632], + ["2019-09-03T21:02:25", 7.52365, -14.69373], + ["2019-09-03T21:32:07", 7.52122, -14.69284], + ["2019-09-03T22:02:25", 7.52051, -14.69125], + ["2019-09-03T22:31:30", 7.52053, -14.68947], + ["2019-09-03T23:01:30", 7.52057, -14.68767], + ["2019-09-03T23:31:30", 7.52023, -14.6857], + ["2019-09-04T00:01:18", 7.52025, -14.68313], + ["2019-09-04T00:31:18", 7.51965, -14.68073], + ["2019-09-04T02:01:55", 7.52143, -14.6724], + ["2019-09-04T02:31:55", 7.52134, -14.66974], + ["2019-09-04T03:01:55", 7.52258, -14.66794], + ["2019-09-04T03:31:57", 7.52246, -14.66639], + ["2019-09-04T04:01:57", 7.52272, -14.6651], + ["2019-09-04T04:31:07", 7.52254, -14.6631], + ["2019-09-04T05:01:07", 7.52258, -14.66224], + ["2019-09-04T05:31:07", 7.52305, -14.66138], + ["2019-09-04T07:45:21", 7.52548, -14.65511], + ["2019-09-04T08:15:21", 7.52642, -14.65408], + ["2019-09-04T08:45:21", 7.52754, -14.65228], + ["2019-09-04T09:15:27", 7.53014, -14.6507], + ["2019-09-04T11:44:16", 7.55052, -14.63867], + ["2019-09-04T12:27:08", 7.55878, -14.63425], + ["2019-09-04T12:56:26", 7.5646, -14.63083], + ["2019-09-04T14:25:55", 7.5875, -14.61998], + ["2019-09-04T14:55:55", 7.59407, -14.6168], + ["2019-09-04T15:25:55", 7.60137, -14.61337], + ["2019-09-04T16:54:34", 7.62117, -14.60339], + ["2019-09-04T17:24:34", 7.62855, -14.59987], + ["2019-09-04T17:54:34", 7.63593, -14.59592], + ["2019-09-04T18:54:14", 7.6519, -14.5867], + ["2019-09-04T19:24:08", 7.6595, -14.58076], + ["2019-09-04T19:54:08", 7.66628, -14.57389], + ["2019-09-04T20:24:08", 7.67297, -14.56668], + ["2019-09-04T20:53:29", 7.6796, -14.56055], + ["2019-09-04T22:52:30", 7.71308, -14.53876], + ["2019-09-04T23:22:30", 7.71977, -14.53361], + ["2019-09-04T23:52:30", 7.72719, -14.52795], + ["2019-09-05T00:22:39", 7.73233, -14.52106], + ["2019-09-05T00:52:27", 7.73757, -14.51363], + ["2019-09-05T01:22:27", 7.74302, -14.5047], + ["2019-09-05T02:22:00", 7.75411, -14.4846], + ["2019-09-05T02:52:00", 7.75844, -14.47559], + ["2019-09-05T03:22:00", 7.76235, -14.46701], + ["2019-09-05T03:51:08", 7.76582, -14.45914], + ["2019-09-05T04:20:56", 7.76876, -14.45125], + ["2019-09-05T04:50:56", 7.77194, -14.44241], + ["2019-09-05T05:20:56", 7.77645, -14.4328], + ["2019-09-05T08:49:03", 7.79411, -14.38638], + ["2019-09-05T09:19:26", 7.7961, -14.38065], + ["2019-09-05T09:48:53", 7.79793, -14.3746], + ["2019-09-05T10:18:57", 7.80018, -14.36846], + ["2019-09-05T10:48:43", 7.80277, -14.362], + ["2019-09-05T11:18:57", 7.80447, -14.3555], + ["2019-09-05T11:48:27", 7.80625, -14.34897], + ["2019-09-05T13:18:24", 7.81736, -14.32904], + ["2019-09-05T13:48:24", 7.82161, -14.322], + ["2019-09-05T14:18:24", 7.82624, -14.31479], + ["2019-09-05T14:47:44", 7.82955, -14.30829], + ["2019-09-05T16:17:26", 7.83841, -14.28805], + ["2019-09-05T16:47:26", 7.84227, -14.27861], + ["2019-09-05T17:17:26", 7.84566, -14.26874], + ["2019-09-05T18:33:54", 7.85146, -14.24222], + ["2019-09-05T19:03:11", 7.85191, -14.23177], + ["2019-09-05T19:33:11", 7.8514, -14.22199], + ["2019-09-05T20:03:11", 7.84822, -14.21118], + ["2019-09-05T20:33:28", 7.84265, -14.19949], + ["2019-09-05T21:02:49", 7.83664, -14.18927], + ["2019-09-05T22:02:08", 7.82512, -14.17], + ["2019-09-05T22:32:08", 7.82027, -14.16116], + ["2019-09-05T23:02:08", 7.81499, -14.15292], + ["2019-09-05T23:32:28", 7.80883, -14.14508], + ["2019-09-06T00:01:51", 7.80342, -14.13773] + ], + "drifter_3": [ + ["2019-07-22T10:28:00", 7.16194, -31.75391], + ["2019-07-22T10:35:26", 7.16329, -31.75302], + ["2019-07-22T11:34:27", 7.17058, -31.75021], + ["2019-07-22T12:34:27", 7.18285, -31.7424], + ["2019-07-22T13:34:27", 7.19793, -31.72913], + ["2019-07-22T14:33:59", 7.21471, -31.71412], + ["2019-07-22T15:33:59", 7.22994, -31.70013], + ["2019-07-22T17:33:56", 7.25925, -31.67999], + ["2019-07-22T18:34:57", 7.27572, -31.67007], + ["2019-07-22T19:32:08", 7.29258, -31.66089], + ["2019-07-23T06:29:28", 7.45924, -31.46402], + ["2019-07-23T07:28:58", 7.4748, -31.44174], + ["2019-07-23T08:28:24", 7.48592, -31.41617], + ["2019-07-23T09:27:50", 7.49747, -31.38726], + ["2019-07-23T10:27:50", 7.50867, -31.35876], + ["2019-07-23T11:27:50", 7.51841, -31.33267], + ["2019-07-23T12:26:54", 7.52641, -31.30584], + ["2019-07-23T13:26:54", 7.53285, -31.27958], + ["2019-07-23T14:26:54", 7.5386, -31.25143], + ["2019-07-23T15:26:25", 7.54243, -31.2226], + ["2019-07-23T16:25:58", 7.54509, -31.19464], + ["2019-07-23T20:25:07", 7.53214, -31.09012], + ["2019-07-23T21:24:56", 7.52601, -31.06497], + ["2019-07-23T22:24:27", 7.52148, -31.03973], + ["2019-07-23T23:24:27", 7.51818, -31.01578], + ["2019-07-24T00:23:59", 7.5137, -30.99523], + ["2019-07-24T01:23:59", 7.50675, -30.97171], + ["2019-07-24T02:23:59", 7.49563, -30.95163], + ["2019-07-24T05:23:29", 7.46075, -30.8913], + ["2019-07-24T10:21:28", 7.42578, -30.79492], + ["2019-07-24T11:20:58", 7.42346, -30.77924], + ["2019-07-24T12:19:54", 7.4227, -30.76465], + ["2019-07-24T13:19:58", 7.42033, -30.74924], + ["2019-07-24T21:16:15", 7.39116, -30.62564], + ["2019-07-24T22:16:59", 7.39473, -30.61346], + ["2019-07-24T23:16:30", 7.40149, -30.60339], + ["2019-07-25T02:15:26", 7.42373, -30.56564], + ["2019-07-25T03:14:57", 7.43015, -30.55341], + ["2019-07-25T04:14:27", 7.43547, -30.53943], + ["2019-07-25T08:13:27", 7.45931, -30.49081], + ["2019-07-25T09:13:02", 7.4661, -30.47943], + ["2019-07-25T10:14:27", 7.47296, -30.46683], + ["2019-07-25T11:11:41", 7.47945, -30.45685], + ["2019-07-25T15:13:28", 7.49705, -30.41367], + ["2019-07-25T16:09:59", 7.50597, -30.39926], + ["2019-07-25T17:10:25", 7.51726, -30.38327], + ["2019-07-25T18:09:58", 7.527, -30.36835], + ["2019-07-25T19:09:58", 7.53561, -30.35141], + ["2019-07-25T20:09:27", 7.54057, -30.3342], + ["2019-07-25T21:08:59", 7.54697, -30.31754], + ["2019-07-25T22:08:59", 7.55341, -30.30286], + ["2019-07-25T23:08:59", 7.55616, -30.28775], + ["2019-07-26T00:08:04", 7.55857, -30.27451], + ["2019-07-26T08:06:11", 7.56499, -30.15671], + ["2019-07-26T09:05:27", 7.5636, -30.13828], + ["2019-07-26T10:05:27", 7.5603, -30.11588], + ["2019-07-26T11:05:56", 7.55816, -30.09622], + ["2019-07-26T12:05:25", 7.55644, -30.0799], + ["2019-07-26T13:04:27", 7.55901, -30.06485], + ["2019-07-26T14:03:55", 7.56191, -30.04843], + ["2019-07-26T15:03:28", 7.56542, -30.03113], + ["2019-07-26T17:02:16", 7.56648, -29.99745], + ["2019-07-26T18:02:16", 7.56416, -29.9826], + ["2019-07-26T19:02:16", 7.56416, -29.96912], + ["2019-07-26T20:01:38", 7.56279, -29.95435], + ["2019-07-26T21:01:25", 7.56024, -29.94101], + ["2019-07-26T22:00:56", 7.5528, -29.92746], + ["2019-07-26T23:00:27", 7.5486, -29.91511], + ["2019-07-27T00:00:27", 7.54328, -29.90198], + ["2019-07-27T00:59:36", 7.53367, -29.88753], + ["2019-07-27T01:59:36", 7.52496, -29.87543], + ["2019-07-27T02:58:58", 7.51642, -29.86174], + ["2019-07-27T03:58:58", 7.50646, -29.84998], + ["2019-07-27T04:58:27", 7.49394, -29.83566], + ["2019-07-27T05:58:26", 7.48255, -29.82346], + ["2019-07-27T07:57:57", 7.45683, -29.80045], + ["2019-07-27T08:57:28", 7.44375, -29.79026], + ["2019-07-27T09:57:28", 7.43066, -29.78082], + ["2019-07-27T10:57:28", 7.41555, -29.77176], + ["2019-07-27T11:56:57", 7.39676, -29.75765], + ["2019-07-27T12:56:57", 7.37839, -29.74615], + ["2019-07-27T14:55:58", 7.35298, -29.72443], + ["2019-07-27T15:56:28", 7.34482, -29.71426], + ["2019-07-27T16:55:58", 7.33809, -29.70529], + ["2019-07-27T17:55:25", 7.33242, -29.69748], + ["2019-07-27T18:54:56", 7.32474, -29.68798], + ["2019-07-27T19:54:56", 7.31744, -29.67871], + ["2019-07-27T20:53:55", 7.31176, -29.67194], + ["2019-07-27T21:53:55", 7.30515, -29.66525], + ["2019-07-27T22:53:26", 7.29449, -29.65725], + ["2019-07-27T23:53:26", 7.28784, -29.65296], + ["2019-07-28T00:53:26", 7.28462, -29.64944], + ["2019-07-28T01:53:08", 7.2828, -29.64359], + ["2019-07-28T02:52:27", 7.28483, -29.63397], + ["2019-07-28T03:52:27", 7.28436, -29.62067], + ["2019-07-28T04:52:09", 7.2833, -29.60818], + ["2019-07-28T05:51:38", 7.2835, -29.59753], + ["2019-07-28T06:51:38", 7.28397, -29.58594], + ["2019-07-28T07:51:27", 7.28341, -29.57544], + ["2019-07-28T08:50:59", 7.27862, -29.56461], + ["2019-07-28T09:50:09", 7.27537, -29.55428], + ["2019-07-28T10:50:09", 7.27425, -29.54553], + ["2019-07-28T11:49:25", 7.27624, -29.53801], + ["2019-07-28T12:49:25", 7.28156, -29.52728], + ["2019-07-28T13:49:07", 7.28959, -29.51648], + ["2019-07-28T14:48:36", 7.29653, -29.50606], + ["2019-07-28T15:48:36", 7.30232, -29.49731], + ["2019-07-28T16:48:26", 7.30976, -29.48672], + ["2019-07-28T17:47:28", 7.31766, -29.47244], + ["2019-07-28T18:47:28", 7.32388, -29.45957], + ["2019-07-28T19:47:28", 7.32985, -29.44592], + ["2019-07-28T20:47:24", 7.336, -29.43154], + ["2019-07-28T21:47:24", 7.34184, -29.41901], + ["2019-07-28T22:46:55", 7.35159, -29.40573], + ["2019-07-28T23:46:41", 7.36263, -29.39337], + ["2019-07-29T00:45:58", 7.37545, -29.38082], + ["2019-07-29T01:45:58", 7.38695, -29.3676], + ["2019-07-29T02:45:58", 7.39914, -29.35284], + ["2019-07-29T03:45:55", 7.41053, -29.33856], + ["2019-07-29T04:45:39", 7.42206, -29.32364], + ["2019-07-29T07:44:27", 7.45176, -29.27365], + ["2019-07-29T08:44:27", 7.46082, -29.25777], + ["2019-07-29T09:44:27", 7.46691, -29.23932], + ["2019-07-29T10:43:58", 7.47133, -29.22153], + ["2019-07-29T11:43:24", 7.47732, -29.20515], + ["2019-07-29T12:43:24", 7.48183, -29.18884], + ["2019-07-29T13:42:26", 7.48758, -29.16978], + ["2019-07-29T14:42:26", 7.49543, -29.15176], + ["2019-07-29T15:42:26", 7.50586, -29.13382], + ["2019-07-29T16:41:27", 7.51848, -29.1169], + ["2019-07-29T17:41:27", 7.52771, -29.09793], + ["2019-07-29T18:41:23", 7.53658, -29.07785], + ["2019-07-29T19:40:56", 7.54649, -29.05786], + ["2019-07-30T00:38:58", 7.57509, -28.95773], + ["2019-07-30T01:38:54", 7.57862, -28.93634], + ["2019-07-30T02:37:38", 7.58071, -28.91761], + ["2019-07-30T03:37:38", 7.58165, -28.89727], + ["2019-07-30T04:37:38", 7.58547, -28.87796], + ["2019-07-30T06:37:27", 7.59725, -28.8338], + ["2019-07-30T07:36:25", 7.60503, -28.81303], + ["2019-07-30T08:36:25", 7.61061, -28.79535], + ["2019-07-30T09:36:25", 7.61322, -28.7774], + ["2019-07-30T10:35:57", 7.61878, -28.76065], + ["2019-07-30T15:34:08", 7.64351, -28.68402], + ["2019-07-30T16:33:54", 7.64366, -28.6749], + ["2019-07-30T17:33:24", 7.64501, -28.6633], + ["2019-07-30T18:32:54", 7.64387, -28.64877], + ["2019-07-30T19:32:54", 7.63842, -28.62808], + ["2019-07-31T01:30:28", 7.64663, -28.5181], + ["2019-07-31T05:29:27", 7.63475, -28.46677], + ["2019-07-31T06:28:56", 7.63222, -28.45419], + ["2019-07-31T07:28:29", 7.63007, -28.44089], + ["2019-07-31T10:27:25", 7.62557, -28.40308], + ["2019-07-31T11:26:38", 7.62291, -28.3883], + ["2019-07-31T12:26:38", 7.62089, -28.37534], + ["2019-07-31T13:26:38", 7.61995, -28.36487], + ["2019-07-31T14:25:56", 7.61945, -28.35495], + ["2019-07-31T15:25:56", 7.61928, -28.34671], + ["2019-07-31T21:23:58", 7.63198, -28.31366], + ["2019-07-31T22:23:38", 7.64084, -28.30984], + ["2019-08-01T00:22:58", 7.65313, -28.30145], + ["2019-08-01T01:21:56", 7.65566, -28.29614], + ["2019-08-01T02:21:56", 7.65532, -28.29288], + ["2019-08-01T03:21:28", 7.65637, -28.29117], + ["2019-08-01T04:20:57", 7.66158, -28.28751], + ["2019-08-01T11:18:59", 7.6928, -28.2565], + ["2019-08-01T12:18:29", 7.69883, -28.25299], + ["2019-08-01T13:17:56", 7.70595, -28.24496], + ["2019-08-01T14:16:55", 7.71448, -28.23641], + ["2019-08-01T15:16:55", 7.72504, -28.22766], + ["2019-08-01T18:16:25", 7.7754, -28.19568], + ["2019-08-01T19:15:56", 7.78684, -28.186], + ["2019-08-02T00:13:55", 7.82731, -28.13629], + ["2019-08-02T01:13:36", 7.82731, -28.13626], + ["2019-08-02T02:13:36", 7.83134, -28.12931], + ["2019-08-02T03:13:36", 7.84104, -28.11566], + ["2019-08-02T04:13:28", 7.84706, -28.11022], + ["2019-08-02T05:13:28", 7.85234, -28.10516], + ["2019-08-02T06:12:25", 7.85529, -28.10121], + ["2019-08-02T07:12:25", 7.85456, -28.09803], + ["2019-08-02T08:12:25", 7.8507, -28.0946], + ["2019-08-02T09:11:57", 7.85068, -28.08939], + ["2019-08-02T10:11:28", 7.85404, -28.08368], + ["2019-08-02T11:11:26", 7.85764, -28.07745], + ["2019-08-02T12:09:56", 7.86005, -28.07119], + ["2019-08-02T13:09:56", 7.86224, -28.06475], + ["2019-08-02T14:09:56", 7.86709, -28.05737], + ["2019-08-02T15:09:54", 7.86919, -28.04822], + ["2019-08-02T16:09:25", 7.87017, -28.0394], + ["2019-08-02T17:08:53", 7.8694, -28.02979], + ["2019-08-02T19:07:26", 7.86482, -28.01493], + ["2019-08-02T20:07:36", 7.85978, -28.00903], + ["2019-08-02T21:07:26", 7.85418, -28.00549], + ["2019-08-02T22:06:39", 7.85079, -28.00134], + ["2019-08-02T23:06:39", 7.84869, -27.99774], + ["2019-08-03T00:06:29", 7.8452, -27.99966], + ["2019-08-03T05:04:56", 7.84517, -27.99744], + ["2019-08-03T06:04:24", 7.8455, -27.99643], + ["2019-08-03T08:03:27", 7.8419, -27.99594], + ["2019-08-03T12:02:06", 7.84418, -27.98923], + ["2019-08-03T15:01:26", 7.83895, -27.98953], + ["2019-08-03T16:00:55", 7.83628, -27.98772], + ["2019-08-03T17:00:55", 7.83272, -27.98532], + ["2019-08-03T17:59:55", 7.82571, -27.98615], + ["2019-08-03T18:59:55", 7.82163, -27.98864], + ["2019-08-03T19:59:55", 7.81768, -27.99036], + ["2019-08-03T20:59:25", 7.81455, -27.99133], + ["2019-08-04T01:57:57", 7.82806, -27.98163], + ["2019-08-04T09:55:28", 7.85822, -27.93314], + ["2019-08-04T10:55:26", 7.86967, -27.92337], + ["2019-08-04T11:54:58", 7.88632, -27.91226], + ["2019-08-04T13:53:07", 7.9159, -27.89487], + ["2019-08-04T14:52:41", 7.93739, -27.88512], + ["2019-08-04T15:52:41", 7.95503, -27.86924], + ["2019-08-04T16:52:41", 7.96851, -27.85199], + ["2019-08-04T17:52:57", 7.97787, -27.83646], + ["2019-08-04T18:52:55", 7.98599, -27.82202], + ["2019-08-05T01:50:55", 8.07493, -27.7103], + ["2019-08-05T07:48:58", 8.1061, -27.61734], + ["2019-08-05T09:47:28", 8.11163, -27.59241], + ["2019-08-05T10:47:57", 8.11401, -27.57376], + ["2019-08-05T17:45:58", 8.09944, -27.46573], + ["2019-08-05T18:44:59", 8.08801, -27.45219], + ["2019-08-05T19:44:59", 8.07436, -27.43854], + ["2019-08-06T01:43:27", 8.01182, -27.36728], + ["2019-08-06T02:40:17", 8.00127, -27.35619], + ["2019-08-06T03:40:17", 7.98998, -27.34237], + ["2019-08-06T04:40:17", 7.97959, -27.33224], + ["2019-08-06T07:39:59", 7.93345, -27.30835], + ["2019-08-06T14:37:04", 7.88395, -27.26666], + ["2019-08-06T15:36:38", 7.87907, -27.25681], + ["2019-08-06T16:36:38", 7.8728, -27.24951], + ["2019-08-06T17:35:56", 7.86603, -27.24194], + ["2019-08-06T18:35:56", 7.85839, -27.23773], + ["2019-08-06T19:35:58", 7.85072, -27.23428], + ["2019-08-06T20:35:37", 7.84153, -27.23105], + ["2019-08-06T23:34:25", 7.82446, -27.23143], + ["2019-08-07T00:34:25", 7.82322, -27.22903], + ["2019-08-07T01:34:25", 7.82313, -27.22791], + ["2019-08-07T02:33:55", 7.82282, -27.22513], + ["2019-08-07T03:33:26", 7.82297, -27.22092], + ["2019-08-07T04:32:37", 7.82095, -27.21465], + ["2019-08-07T05:32:37", 7.81945, -27.20761], + ["2019-08-07T06:32:26", 7.8158, -27.20218], + ["2019-08-07T07:32:27", 7.80779, -27.19766], + ["2019-08-07T08:31:29", 7.80271, -27.19413], + ["2019-08-07T09:31:29", 7.79979, -27.1931], + ["2019-08-07T10:31:29", 7.79537, -27.19241], + ["2019-08-07T11:31:25", 7.79335, -27.19049], + ["2019-08-07T13:29:59", 7.80058, -27.18006], + ["2019-08-07T14:30:29", 7.80896, -27.1716], + ["2019-08-07T15:29:59", 7.81886, -27.1622], + ["2019-08-07T16:29:34", 7.82892, -27.15265], + ["2019-08-07T18:29:00", 7.84395, -27.12878], + ["2019-08-07T19:27:57", 7.84593, -27.11745], + ["2019-08-07T20:27:57", 7.84687, -27.10543], + ["2019-08-07T21:27:57", 7.84726, -27.0947], + ["2019-08-07T22:28:24", 7.84441, -27.08777], + ["2019-08-08T01:26:55", 7.84109, -27.07318], + ["2019-08-08T05:25:01", 7.84639, -27.04547], + ["2019-08-08T06:24:55", 7.84754, -27.03671], + ["2019-08-08T07:24:53", 7.84576, -27.0307], + ["2019-08-08T08:24:25", 7.84575, -27.02347], + ["2019-08-08T13:22:30", 7.87358, -26.97949], + ["2019-08-08T22:19:39", 7.99455, -26.81277], + ["2019-08-09T05:19:00", 8.03852, -26.6546], + ["2019-08-09T20:12:30", 8.0276, -26.17041], + ["2019-08-09T21:12:30", 8.01925, -26.13684], + ["2019-08-09T23:10:56", 7.99164, -26.06908], + ["2019-08-10T00:10:56", 7.97598, -26.03612], + ["2019-08-10T01:10:56", 7.96281, -26.00565], + ["2019-08-10T03:10:25", 7.94921, -25.94476], + ["2019-08-10T06:32:56", 7.94682, -25.84363], + ["2019-08-10T07:32:37", 7.94469, -25.81134], + ["2019-08-10T13:30:26", 7.93052, -25.64227], + ["2019-08-10T14:29:25", 7.92662, -25.61569], + ["2019-08-10T15:29:25", 7.92426, -25.58994], + ["2019-08-10T16:29:25", 7.92211, -25.56436], + ["2019-08-10T19:14:08", 7.90486, -25.49274], + ["2019-08-10T20:13:54", 7.8978, -25.46793], + ["2019-08-11T02:11:36", 7.86441, -25.35583], + ["2019-08-11T03:11:28", 7.85819, -25.34277], + ["2019-08-11T04:11:08", 7.85384, -25.33289], + ["2019-08-11T05:10:56", 7.85207, -25.32675], + ["2019-08-11T06:10:26", 7.84931, -25.31805], + ["2019-08-11T07:10:26", 7.84631, -25.3093], + ["2019-08-11T08:08:58", 7.8463, -25.30255], + ["2019-08-11T09:08:58", 7.84896, -25.29637], + ["2019-08-11T10:08:58", 7.85072, -25.28796], + ["2019-08-11T11:08:27", 7.84998, -25.27869], + ["2019-08-11T12:07:58", 7.84984, -25.27768], + ["2019-08-11T13:07:58", 7.85679, -25.27399], + ["2019-08-11T14:06:56", 7.86343, -25.26955], + ["2019-08-11T15:06:56", 7.8694, -25.26346], + ["2019-08-11T16:05:24", 7.87629, -25.25778], + ["2019-08-11T17:05:24", 7.88698, -25.25177], + ["2019-08-11T18:05:24", 7.899, -25.24731], + ["2019-08-11T19:05:07", 7.91036, -25.2424], + ["2019-08-11T20:04:25", 7.92299, -25.23785], + ["2019-08-11T21:03:55", 7.93387, -25.23377], + ["2019-08-11T22:03:55", 7.9446, -25.22733], + ["2019-08-11T23:03:29", 7.95664, -25.22031], + ["2019-08-12T00:03:29", 7.9696, -25.21344], + ["2019-08-12T01:02:26", 7.98274, -25.20483], + ["2019-08-12T04:01:57", 8.02533, -25.16611], + ["2019-08-12T05:00:26", 8.0397, -25.1511], + ["2019-08-12T06:00:26", 8.05353, -25.13634], + ["2019-08-12T07:00:26", 8.06799, -25.11917], + ["2019-08-12T12:58:37", 8.13439, -25.0101], + ["2019-08-12T13:58:26", 8.14521, -24.98923], + ["2019-08-12T14:58:25", 8.15493, -24.96719], + ["2019-08-12T15:56:57", 8.16671, -24.94512], + ["2019-08-12T16:56:57", 8.17855, -24.92383], + ["2019-08-12T17:56:57", 8.19039, -24.90186], + ["2019-08-12T18:56:05", 8.19694, -24.87502], + ["2019-08-12T19:56:05", 8.20343, -24.85064], + ["2019-08-12T20:56:05", 8.206, -24.82669], + ["2019-08-12T21:55:27", 8.20758, -24.80387], + ["2019-08-12T22:55:27", 8.2093, -24.78387], + ["2019-08-12T23:55:27", 8.20977, -24.76215], + ["2019-08-13T05:53:08", 8.20578, -24.60904], + ["2019-08-13T06:52:56", 8.20313, -24.58728], + ["2019-08-13T10:51:27", 8.18896, -24.50055], + ["2019-08-13T11:51:27", 8.18235, -24.47949], + ["2019-08-13T14:50:07", 8.16977, -24.41852], + ["2019-08-13T16:48:53", 8.15903, -24.37672], + ["2019-08-13T17:48:53", 8.15621, -24.35458], + ["2019-08-13T18:48:53", 8.15029, -24.33347], + ["2019-08-13T20:48:01", 8.13841, -24.30112], + ["2019-08-13T21:48:01", 8.13162, -24.28773], + ["2019-08-13T22:48:01", 8.12252, -24.27451], + ["2019-08-13T23:46:27", 8.11215, -24.26121], + ["2019-08-14T00:46:27", 8.10382, -24.24533], + ["2019-08-14T01:46:27", 8.09498, -24.22937], + ["2019-08-14T02:45:56", 8.08567, -24.21225], + ["2019-08-14T03:45:38", 8.07797, -24.19653], + ["2019-08-14T04:45:08", 8.06831, -24.18207], + ["2019-08-14T05:45:08", 8.05835, -24.16885], + ["2019-08-14T06:44:53", 8.04696, -24.15663], + ["2019-08-14T07:44:53", 8.03584, -24.14496], + ["2019-08-14T08:43:57", 8.02608, -24.13187], + ["2019-08-14T15:42:07", 7.93493, -24.0459] + ], + "drifter_4": [ + ["2019-07-22T10:28:00", 7.16194, -31.75391], + ["2019-07-22T11:35:56", 7.17107, -31.75095], + ["2019-07-22T13:35:59", 7.19841, -31.72906], + ["2019-07-22T14:34:58", 7.21513, -31.71399], + ["2019-07-22T15:35:45", 7.23075, -31.69992], + ["2019-07-22T16:33:09", 7.24614, -31.68937], + ["2019-07-22T17:33:09", 7.25901, -31.68036], + ["2019-07-22T18:33:32", 7.27519, -31.67078], + ["2019-07-22T19:33:56", 7.29287, -31.66098], + ["2019-07-22T23:31:20", 7.36146, -31.60181], + ["2019-07-23T00:31:48", 7.37774, -31.57956], + ["2019-07-23T02:31:58", 7.40764, -31.54071], + ["2019-07-23T03:29:38", 7.42294, -31.52555], + ["2019-07-23T04:29:38", 7.43599, -31.50847], + ["2019-07-23T05:29:38", 7.44711, -31.48727], + ["2019-07-23T06:29:29", 7.45956, -31.46381], + ["2019-07-23T07:29:00", 7.47488, -31.44174], + ["2019-07-23T08:29:05", 7.48601, -31.41583], + ["2019-07-23T09:28:55", 7.49751, -31.38708], + ["2019-07-23T10:28:27", 7.50868, -31.35855], + ["2019-07-23T11:28:27", 7.51846, -31.33246], + ["2019-07-23T12:27:26", 7.52631, -31.30584], + ["2019-07-23T13:27:26", 7.53296, -31.27923], + ["2019-07-23T14:27:26", 7.53862, -31.25116], + ["2019-07-23T15:26:58", 7.54239, -31.22232], + ["2019-07-23T16:27:26", 7.54513, -31.19391], + ["2019-07-23T17:26:26", 7.5447, -31.16602], + ["2019-07-23T18:26:26", 7.53959, -31.1413], + ["2019-07-23T19:25:59", 7.53468, -31.11584], + ["2019-07-23T20:25:59", 7.53206, -31.08975], + ["2019-07-23T21:25:56", 7.52591, -31.06451], + ["2019-07-23T22:25:26", 7.52139, -31.03937], + ["2019-07-23T23:25:31", 7.51807, -31.01532], + ["2019-07-24T06:22:44", 7.44919, -30.86853], + ["2019-07-24T07:23:31", 7.43936, -30.84729], + ["2019-07-24T11:22:00", 7.42419, -30.77866], + ["2019-07-24T12:21:55", 7.42325, -30.76349], + ["2019-07-24T13:21:57", 7.42099, -30.74838], + ["2019-07-24T15:19:28", 7.41568, -30.71617], + ["2019-07-24T16:20:10", 7.41186, -30.70233], + ["2019-07-24T17:19:28", 7.40718, -30.68759], + ["2019-07-24T18:18:56", 7.40131, -30.67111], + ["2019-07-24T19:19:28", 7.39837, -30.6524], + ["2019-07-24T20:19:28", 7.39528, -30.63635], + ["2019-07-24T21:19:47", 7.39436, -30.62434], + ["2019-07-24T22:17:59", 7.3976, -30.61261], + ["2019-07-24T23:19:47", 7.40457, -30.60254], + ["2019-07-25T00:16:38", 7.41196, -30.59222], + ["2019-07-25T01:16:38", 7.42041, -30.57874], + ["2019-07-25T02:16:38", 7.42715, -30.56552], + ["2019-07-25T07:13:42", 7.45633, -30.50024], + ["2019-07-25T08:14:27", 7.46301, -30.48926], + ["2019-07-25T09:14:57", 7.47024, -30.47763], + ["2019-07-25T14:12:56", 7.49788, -30.42719], + ["2019-07-25T15:10:41", 7.50084, -30.41316], + ["2019-07-25T16:10:41", 7.50912, -30.39805], + ["2019-07-25T17:10:41", 7.51972, -30.38251], + ["2019-07-25T19:09:41", 7.53797, -30.35144], + ["2019-07-25T20:08:46", 7.54324, -30.33345], + ["2019-07-25T21:08:46", 7.54955, -30.31654], + ["2019-07-25T22:08:46", 7.55564, -30.30212], + ["2019-07-25T23:09:30", 7.55827, -30.28723], + ["2019-07-26T05:07:59", 7.56918, -30.20547], + ["2019-07-26T06:06:33", 7.57197, -30.19772], + ["2019-07-26T07:06:29", 7.56998, -30.17392], + ["2019-07-26T08:06:33", 7.56841, -30.15652], + ["2019-07-26T09:06:01", 7.56727, -30.13806], + ["2019-07-26T10:05:57", 7.56477, -30.1155], + ["2019-07-26T11:05:57", 7.56383, -30.09662], + ["2019-07-26T12:05:55", 7.56325, -30.08255], + ["2019-07-26T13:06:03", 7.56461, -30.0664], + ["2019-07-26T14:06:03", 7.56753, -30.0488], + ["2019-07-26T15:04:58", 7.57057, -30.0311], + ["2019-07-26T17:04:28", 7.57023, -29.99654], + ["2019-07-26T18:04:28", 7.56916, -29.98178], + ["2019-07-26T19:04:28", 7.56967, -29.96899], + ["2019-07-26T20:03:20", 7.56795, -29.95486], + ["2019-07-26T21:03:26", 7.56438, -29.94226], + ["2019-07-26T22:02:27", 7.55708, -29.93002], + ["2019-07-26T23:01:58", 7.55353, -29.91844], + ["2019-07-27T00:01:58", 7.54748, -29.90488], + ["2019-07-27T01:01:26", 7.53697, -29.89003], + ["2019-07-27T02:01:26", 7.52937, -29.87827], + ["2019-07-27T03:00:24", 7.52084, -29.86433], + ["2019-07-27T04:00:24", 7.51123, -29.85214], + ["2019-07-27T05:00:25", 7.49988, -29.83649], + ["2019-07-27T08:59:07", 7.45002, -29.79092], + ["2019-07-27T09:58:25", 7.43695, -29.78198], + ["2019-07-27T10:58:08", 7.42176, -29.77341], + ["2019-07-27T11:57:58", 7.40318, -29.76071], + ["2019-07-27T12:57:28", 7.38516, -29.74945], + ["2019-07-27T14:56:25", 7.36091, -29.72999], + ["2019-07-27T15:57:00", 7.35252, -29.72098], + ["2019-07-27T16:56:25", 7.34598, -29.71317], + ["2019-07-27T17:55:56", 7.33954, -29.70645], + ["2019-07-27T18:55:06", 7.33175, -29.69769], + ["2019-07-27T19:55:06", 7.32403, -29.68954], + ["2019-07-27T20:53:56", 7.3196, -29.68257], + ["2019-07-27T21:53:56", 7.31166, -29.6763], + ["2019-07-27T22:53:26", 7.30121, -29.66887], + ["2019-07-27T23:53:26", 7.2943, -29.66475], + ["2019-07-28T00:53:26", 7.29125, -29.66089], + ["2019-07-28T01:52:57", 7.28947, -29.65448], + ["2019-07-28T02:52:57", 7.2912, -29.64474], + ["2019-07-28T03:52:29", 7.29075, -29.63135], + ["2019-07-28T04:52:26", 7.29, -29.61847], + ["2019-07-28T05:51:27", 7.29, -29.6084], + ["2019-07-28T06:51:27", 7.29086, -29.59741], + ["2019-07-28T07:50:57", 7.2897, -29.58752], + ["2019-07-28T08:50:28", 7.284, -29.57693], + ["2019-07-28T10:50:28", 7.27895, -29.55768], + ["2019-07-28T11:49:29", 7.28034, -29.54875], + ["2019-07-28T12:49:29", 7.28532, -29.53879], + ["2019-07-28T13:48:59", 7.29271, -29.53122], + ["2019-07-28T14:48:26", 7.29907, -29.52211], + ["2019-07-28T15:48:26", 7.30516, -29.51456], + ["2019-07-28T21:46:55", 7.33817, -29.43549], + ["2019-07-28T22:46:57", 7.34687, -29.42279], + ["2019-07-28T23:47:29", 7.35806, -29.41061], + ["2019-07-29T03:43:58", 7.3999, -29.35947], + ["2019-07-29T04:44:32", 7.40803, -29.34409], + ["2019-07-29T05:44:33", 7.41624, -29.32834], + ["2019-07-29T06:43:57", 7.42372, -29.31368], + ["2019-07-29T07:43:57", 7.43166, -29.2984], + ["2019-07-29T09:42:30", 7.44266, -29.26782], + ["2019-07-29T10:41:28", 7.44572, -29.25245], + ["2019-07-29T11:41:28", 7.45048, -29.23752], + ["2019-07-29T12:41:28", 7.4549, -29.21881], + ["2019-07-29T13:42:56", 7.45792, -29.20041], + ["2019-07-29T14:40:13", 7.4612, -29.18179], + ["2019-07-29T16:39:55", 7.47746, -29.14793], + ["2019-07-29T17:39:26", 7.48845, -29.1283], + ["2019-07-29T18:39:55", 7.49699, -29.10861], + ["2019-07-29T19:38:59", 7.50255, -29.08914], + ["2019-07-29T20:38:34", 7.50756, -29.06985], + ["2019-07-29T21:38:34", 7.5134, -29.052], + ["2019-07-29T22:37:57", 7.51837, -29.03458], + ["2019-07-30T01:36:56", 7.52002, -28.97113], + ["2019-07-30T02:36:28", 7.52097, -28.95249], + ["2019-07-30T03:36:28", 7.52097, -28.93378], + ["2019-07-30T04:35:57", 7.52021, -28.91708], + ["2019-07-30T06:35:25", 7.52529, -28.8801], + ["2019-07-30T07:35:25", 7.53383, -28.86388], + ["2019-07-30T08:35:25", 7.53907, -28.8468], + ["2019-07-30T09:35:07", 7.54484, -28.83109], + ["2019-07-30T10:34:57", 7.54603, -28.81604], + ["2019-07-30T11:34:25", 7.54979, -28.80112], + ["2019-07-30T12:33:58", 7.5572, -28.78525], + ["2019-07-30T13:33:27", 7.56416, -28.76721], + ["2019-07-30T14:33:27", 7.57098, -28.75064], + ["2019-07-30T15:33:27", 7.57772, -28.73416], + ["2019-07-30T17:32:09", 7.58502, -28.71848], + ["2019-07-30T18:32:09", 7.59287, -28.69162], + ["2019-07-30T19:32:09", 7.59034, -28.66699], + ["2019-07-30T20:31:55", 7.5905, -28.64346], + ["2019-07-30T21:31:55", 7.59488, -28.61823], + ["2019-07-30T22:30:56", 7.59837, -28.59958], + ["2019-07-30T23:30:56", 7.60004, -28.58078], + ["2019-07-31T00:30:56", 7.60163, -28.56396], + ["2019-07-31T06:27:28", 7.59196, -28.47632], + ["2019-07-31T07:26:57", 7.59133, -28.45886], + ["2019-07-31T08:26:33", 7.59278, -28.44303], + ["2019-07-31T09:26:33", 7.59235, -28.4281], + ["2019-07-31T15:24:56", 7.58577, -28.34164], + ["2019-07-31T21:23:36", 7.59448, -28.29456], + ["2019-07-31T22:23:26", 7.59849, -28.29053], + ["2019-07-31T23:23:31", 7.60617, -28.28687], + ["2019-08-01T00:22:38", 7.61119, -28.28162], + ["2019-08-01T01:22:08", 7.61286, -28.27665], + ["2019-08-01T02:22:08", 7.61209, -28.27365], + ["2019-08-01T03:21:59", 7.61094, -28.27279], + ["2019-08-01T04:21:59", 7.61244, -28.26953], + ["2019-08-01T05:21:28", 7.61527, -28.26677], + ["2019-08-01T06:21:28", 7.61849, -28.26505], + ["2019-08-01T07:21:08", 7.62235, -28.2613], + ["2019-08-01T08:21:08", 7.62771, -28.25761], + ["2019-08-01T09:21:08", 7.63307, -28.25409], + ["2019-08-02T04:48:38", 7.78473, -28.11127], + ["2019-08-02T05:48:07", 7.79278, -28.10748], + ["2019-08-02T10:55:26", 7.8071, -28.08536], + ["2019-08-02T11:54:29", 7.80967, -28.07771], + ["2019-08-02T12:54:29", 7.81109, -28.07084], + ["2019-08-02T13:54:29", 7.81173, -28.06415], + ["2019-08-02T14:54:08", 7.81428, -28.05569], + ["2019-08-02T16:53:58", 7.8169, -28.03787], + ["2019-08-02T17:53:36", 7.81831, -28.03072], + ["2019-08-02T18:53:36", 7.81719, -28.02222], + ["2019-08-02T19:53:07", 7.81577, -28.01176], + ["2019-08-02T20:53:07", 7.81272, -28.00455], + ["2019-08-02T21:52:58", 7.80912, -27.99847], + ["2019-08-02T22:52:39", 7.80829, -27.99319], + ["2019-08-03T01:51:26", 7.79538, -27.98996], + ["2019-08-03T03:49:57", 7.79535, -27.98991], + ["2019-08-03T04:49:57", 7.79269, -27.98588], + ["2019-08-03T05:49:57", 7.78505, -27.97498], + ["2019-08-03T06:48:56", 7.78279, -27.97233], + ["2019-08-03T07:48:56", 7.77996, -27.97061], + ["2019-08-03T08:48:56", 7.77846, -27.96967], + ["2019-08-03T09:48:25", 7.77637, -27.96661], + ["2019-08-03T10:48:25", 7.77586, -27.96472], + ["2019-08-03T11:48:23", 7.77762, -27.96066], + ["2019-08-03T12:47:55", 7.77376, -27.95672], + ["2019-08-03T13:47:55", 7.77097, -27.95346], + ["2019-08-04T08:23:24", 7.76803, -27.76834], + ["2019-08-04T09:22:56", 7.77793, -27.75308], + ["2019-08-04T13:21:57", 7.85195, -27.7012], + ["2019-08-04T14:21:25", 7.86903, -27.68552], + ["2019-08-04T15:21:07", 7.88456, -27.66534], + ["2019-08-05T00:19:29", 8.01715, -27.5007], + ["2019-08-05T01:19:10", 8.03246, -27.47891], + ["2019-08-05T02:18:57", 8.04557, -27.45599], + ["2019-08-05T03:18:37", 8.05437, -27.43196], + ["2019-08-05T04:18:37", 8.05767, -27.40707], + ["2019-08-05T05:18:27", 8.05683, -27.38385], + ["2019-08-05T06:18:27", 8.0542, -27.36966], + ["2019-08-05T09:17:26", 8.06259, -27.34107], + ["2019-08-05T10:17:26", 8.06628, -27.32905], + ["2019-08-05T11:17:26", 8.07001, -27.31763], + ["2019-08-05T12:16:58", 8.07236, -27.30408], + ["2019-08-05T13:16:58", 8.07335, -27.28906], + ["2019-08-05T18:58:56", 8.02649, -27.19003], + ["2019-08-05T20:57:30", 8.00754, -27.15828], + ["2019-08-05T21:57:30", 7.99724, -27.14515], + ["2019-08-05T22:57:30", 7.98668, -27.13348], + ["2019-08-06T05:55:36", 7.91336, -27.07404], + ["2019-08-06T06:55:28", 7.90185, -27.0655], + ["2019-08-06T07:55:28", 7.88906, -27.0582], + ["2019-08-06T08:54:57", 7.87888, -27.05386], + ["2019-08-06T09:54:40", 7.87072, -27.05086], + ["2019-08-06T10:54:40", 7.86471, -27.04477], + ["2019-08-06T11:53:56", 7.85717, -27.03682], + ["2019-08-06T12:53:56", 7.85223, -27.02927], + ["2019-08-06T13:53:28", 7.84771, -27.02206], + ["2019-08-06T14:53:26", 7.84405, -27.01303], + ["2019-08-06T17:52:05", 7.83118, -26.98944], + ["2019-08-06T18:52:05", 7.82693, -26.98498], + ["2019-08-06T19:52:05", 7.82268, -26.9794], + ["2019-08-06T21:50:31", 7.81413, -26.9671], + ["2019-08-06T22:50:31", 7.81147, -26.96015], + ["2019-08-06T23:50:31", 7.81031, -26.95346], + ["2019-08-07T00:49:55", 7.806, -26.94411], + ["2019-08-07T01:49:55", 7.80321, -26.93604], + ["2019-08-07T02:49:02", 7.80323, -26.93596], + ["2019-08-07T03:49:02", 7.80435, -26.92866], + ["2019-08-07T04:49:02", 7.80757, -26.91965], + ["2019-08-07T05:48:40", 7.8057, -26.91565], + ["2019-08-07T07:48:28", 7.79811, -26.9054], + ["2019-08-07T09:00:57", 7.79257, -26.89789], + ["2019-08-07T09:59:55", 7.78716, -26.89226], + ["2019-08-07T10:59:55", 7.7857, -26.88565], + ["2019-08-07T13:42:57", 7.7909, -26.85605], + ["2019-08-07T19:40:42", 7.8385, -26.77637], + ["2019-08-07T20:39:57", 7.84122, -26.76035], + ["2019-08-08T01:38:28", 7.83268, -26.70508], + ["2019-08-08T07:26:54", 7.84482, -26.65359], + ["2019-08-08T08:25:58", 7.84654, -26.6376], + ["2019-08-08T09:25:58", 7.848, -26.6182], + ["2019-08-08T10:25:58", 7.84894, -26.59915], + ["2019-08-08T11:24:56", 7.85309, -26.58085], + ["2019-08-08T12:24:56", 7.86069, -26.56531], + ["2019-08-08T13:24:56", 7.86996, -26.5448], + ["2019-08-08T19:23:26", 7.98601, -26.40106], + ["2019-08-08T23:21:59", 8.03491, -26.29034], + ["2019-08-09T00:21:27", 8.04476, -26.26322], + ["2019-08-09T01:21:27", 8.05583, -26.23575], + ["2019-08-09T02:20:58", 8.06697, -26.20533], + ["2019-08-09T03:20:58", 8.07555, -26.17795], + ["2019-08-09T04:20:37", 8.08436, -26.1543], + ["2019-08-09T05:20:26", 8.09249, -26.12973], + ["2019-08-09T07:19:06", 8.10126, -26.07083], + ["2019-08-09T08:19:26", 8.10096, -26.04034], + ["2019-08-09T09:19:06", 8.09507, -26.01169], + ["2019-08-09T10:18:57", 8.08358, -25.98257], + ["2019-08-09T12:18:25", 8.06875, -25.92697], + ["2019-08-09T13:18:09", 8.0619, -25.90112], + ["2019-08-09T14:17:25", 8.05918, -25.87957], + ["2019-08-09T15:17:25", 8.05854, -25.85966], + ["2019-08-09T16:17:25", 8.05781, -25.83932], + ["2019-08-10T00:15:09", 8.02576, -25.64429], + ["2019-08-10T03:47:57", 7.99249, -25.556], + ["2019-08-10T04:47:08", 7.98391, -25.53183], + ["2019-08-10T15:27:57", 7.89964, -25.33612], + ["2019-08-11T05:38:36", 7.8745, -25.21365], + ["2019-08-11T06:37:58", 7.87393, -25.20541], + ["2019-08-11T07:38:00", 7.87329, -25.20041], + ["2019-08-11T12:36:10", 7.90015, -25.17499], + ["2019-08-11T13:35:57", 7.91081, -25.17267], + ["2019-08-11T14:34:56", 7.92203, -25.16761], + ["2019-08-11T15:34:56", 7.93572, -25.16306], + ["2019-08-11T16:34:55", 7.94964, -25.15994], + ["2019-08-11T17:33:56", 7.96424, -25.15675], + ["2019-08-11T18:33:56", 7.97896, -25.15237], + ["2019-08-11T19:32:57", 7.99436, -25.14684], + ["2019-08-11T20:32:57", 8.00555, -25.1398], + ["2019-08-11T21:32:57", 8.01767, -25.13351], + ["2019-08-11T22:32:38", 8.0306, -25.12561], + ["2019-08-11T23:32:25", 8.04505, -25.11639], + ["2019-08-12T00:32:25", 8.06157, -25.10635], + ["2019-08-12T01:31:39", 8.07811, -25.0958], + ["2019-08-12T02:31:39", 8.09515, -25.0831], + ["2019-08-12T03:31:32", 8.10968, -25.07019], + ["2019-08-12T09:29:27", 8.18069, -24.96536], + ["2019-08-12T10:28:25", 8.18924, -24.94514], + ["2019-08-12T11:28:56", 8.19828, -24.92542], + ["2019-08-12T12:28:25", 8.2113, -24.90454], + ["2019-08-12T13:28:26", 8.22613, -24.88083], + ["2019-08-12T14:28:27", 8.24053, -24.85625], + ["2019-08-12T15:28:27", 8.25379, -24.83265], + ["2019-08-12T16:28:27", 8.26211, -24.80896], + ["2019-08-12T17:27:27", 8.26704, -24.78247], + ["2019-08-12T18:27:07", 8.27111, -24.7536], + ["2019-08-12T19:26:56", 8.2764, -24.72549], + ["2019-08-12T23:48:26", 8.29782, -24.61578], + ["2019-08-13T00:47:38", 8.29533, -24.59055], + ["2019-08-13T01:47:28", 8.29022, -24.56451], + ["2019-08-13T05:45:55", 8.26267, -24.4624], + ["2019-08-13T06:45:57", 8.25947, -24.43521], + ["2019-08-13T07:44:58", 8.25577, -24.40882], + ["2019-08-13T08:44:58", 8.25512, -24.38384], + ["2019-08-13T09:44:58", 8.25465, -24.36032], + ["2019-08-13T11:44:56", 8.25473, -24.31171], + ["2019-08-13T15:43:35", 8.23786, -24.21103], + ["2019-08-13T19:41:57", 8.19272, -24.12242], + ["2019-08-13T20:42:28", 8.18465, -24.10507], + ["2019-08-13T21:41:57", 8.17778, -24.08731], + ["2019-08-14T00:41:01", 8.14897, -24.03848], + ["2019-08-14T01:40:58", 8.138, -24.02383], + ["2019-08-14T02:40:27", 8.12702, -24.01025], + ["2019-08-14T03:39:26", 8.11841, -23.99551], + ["2019-08-14T04:39:26", 8.10918, -23.97886], + ["2019-08-14T05:39:26", 8.10012, -23.96521], + ["2019-08-14T06:39:07", 8.09178, -23.95197], + ["2019-08-14T08:38:58", 8.07432, -23.92154], + ["2019-08-14T09:37:57", 8.06467, -23.90684], + ["2019-08-14T10:37:57", 8.05335, -23.89577], + ["2019-08-14T11:37:57", 8.04236, -23.88684], + ["2019-08-14T12:37:56", 8.02969, -23.87561], + ["2019-08-14T13:37:54", 8.01512, -23.86197], + ["2019-08-14T14:37:07", 8.00089, -23.84906], + ["2019-08-14T15:36:36", 7.98831, -23.83477], + ["2019-08-14T16:36:36", 7.97934, -23.82327], + ["2019-08-14T17:36:25", 7.97437, -23.81107], + ["2019-08-14T18:36:08", 7.96959, -23.80008], + ["2019-08-14T19:35:56", 7.96358, -23.79191], + ["2019-08-14T20:35:56", 7.95667, -23.78522], + ["2019-08-14T21:34:57", 7.9474, -23.77639], + ["2019-08-14T22:34:57", 7.9371, -23.76806], + ["2019-08-14T23:34:57", 7.92637, -23.7587], + ["2019-08-15T00:34:27", 7.91784, -23.75171], + ["2019-08-15T01:34:07", 7.9124, -23.74338], + ["2019-08-15T02:34:07", 7.90935, -23.73694], + ["2019-08-15T08:11:56", 7.87958, -23.68326], + ["2019-08-15T09:11:26", 7.8738, -23.67415], + ["2019-08-15T10:11:26", 7.86796, -23.66394], + ["2019-08-15T11:10:38", 7.86544, -23.65431], + ["2019-08-15T12:10:38", 7.86218, -23.64427], + ["2019-08-15T13:10:38", 7.86029, -23.63474], + ["2019-08-15T14:10:26", 7.85513, -23.62305], + ["2019-08-15T21:08:53", 7.84377, -23.53308], + ["2019-08-15T22:08:33", 7.84545, -23.52022], + ["2019-08-15T23:08:33", 7.84678, -23.50812], + ["2019-08-16T00:07:26", 7.84734, -23.49644], + ["2019-08-16T01:07:26", 7.85318, -23.48502], + ["2019-08-16T02:07:25", 7.86385, -23.47311], + ["2019-08-16T03:06:56", 7.87398, -23.45893], + ["2019-08-16T04:06:56", 7.88248, -23.44254], + ["2019-08-16T05:06:55", 7.89025, -23.42191], + ["2019-08-16T06:06:28", 7.89672, -23.39825], + ["2019-08-16T07:05:59", 7.9038, -23.37349], + ["2019-08-16T08:05:59", 7.91389, -23.35272], + ["2019-08-16T09:05:38", 7.92286, -23.33514], + ["2019-08-16T10:04:57", 7.93092, -23.31696], + ["2019-08-16T11:04:57", 7.93568, -23.29688], + ["2019-08-16T17:03:35", 7.97453, -23.14462], + ["2019-08-16T18:03:07", 7.9767, -23.11892], + ["2019-08-16T19:03:07", 7.97872, -23.09592], + ["2019-08-16T20:03:07", 7.97941, -23.07034], + ["2019-08-17T07:59:11", 7.93151, -22.82278], + ["2019-08-17T08:58:28", 7.92808, -22.80071], + ["2019-08-17T09:58:28", 7.924, -22.77917], + ["2019-08-17T10:58:28", 7.92181, -22.75565], + ["2019-08-17T15:57:58", 7.91332, -22.65897], + ["2019-08-17T16:57:34", 7.91319, -22.64474], + ["2019-08-17T21:56:28", 7.91639, -22.56619], + ["2019-08-17T22:56:17", 7.91321, -22.5509], + ["2019-08-17T23:56:08", 7.90928, -22.5376], + ["2019-08-18T00:55:01", 7.90285, -22.52645], + ["2019-08-18T01:55:01", 7.89693, -22.51581], + ["2019-08-18T02:55:01", 7.89272, -22.5062], + ["2019-08-18T03:54:57", 7.89176, -22.49457], + ["2019-08-18T04:54:29", 7.88716, -22.4801], + ["2019-08-18T10:52:40", 7.87317, -22.41446], + ["2019-08-18T11:51:25", 7.88369, -22.40414], + ["2019-08-18T12:51:58", 7.89178, -22.39429], + ["2019-08-18T13:51:25", 7.89837, -22.38406], + ["2019-08-18T14:50:57", 7.90379, -22.37357], + ["2019-08-18T15:50:29", 7.90725, -22.36288], + ["2019-08-18T16:50:29", 7.91107, -22.3494], + ["2019-08-18T17:49:55", 7.91624, -22.33406], + ["2019-08-18T18:49:55", 7.92135, -22.31964], + ["2019-08-18T19:49:32", 7.92576, -22.30637], + ["2019-08-18T20:49:28", 7.92789, -22.2923], + ["2019-08-19T01:47:57", 7.95072, -22.25568], + ["2019-08-19T02:46:56", 7.95467, -22.24293], + ["2019-08-19T03:46:56", 7.95853, -22.22705], + ["2019-08-19T04:46:56", 7.96149, -22.20825], + ["2019-08-19T09:45:26", 7.98582, -22.13104], + ["2019-08-19T10:45:04", 7.99149, -22.11768], + ["2019-08-19T11:44:28", 7.99524, -22.10196], + ["2019-08-19T12:44:28", 7.99563, -22.08539], + ["2019-08-19T13:44:27", 7.99423, -22.06723], + ["2019-08-19T14:43:38", 7.98941, -22.04763], + ["2019-08-19T15:43:38", 7.98581, -22.02634], + ["2019-08-19T16:43:40", 7.98911, -22.00711], + ["2019-08-19T17:43:27", 7.99694, -21.98956], + ["2019-08-19T18:43:04", 8.00475, -21.97437], + ["2019-08-19T19:43:04", 8.00694, -21.96021], + ["2019-08-19T20:43:09", 8.00769, -21.94565], + ["2019-08-19T21:43:11", 8.00691, -21.93127], + ["2019-08-19T22:43:04", 7.99986, -21.91388], + ["2019-08-19T23:41:57", 7.99361, -21.89883], + ["2019-08-20T00:42:04", 7.98988, -21.8887], + ["2019-08-20T01:41:25", 7.9844, -21.87778], + ["2019-08-20T02:40:28", 7.97835, -21.8666], + ["2019-08-20T03:40:56", 7.97465, -21.85202], + ["2019-08-20T04:40:28", 7.97299, -21.83673], + ["2019-08-20T05:40:26", 7.96858, -21.81963], + ["2019-08-20T06:40:26", 7.96575, -21.80118], + ["2019-08-20T07:39:58", 7.96366, -21.77914], + ["2019-08-20T08:39:57", 7.96651, -21.75555], + ["2019-08-20T10:39:08", 7.98192, -21.71031], + ["2019-08-20T11:39:08", 7.99029, -21.68628], + ["2019-08-20T11:39:10", 7.99028, -21.68634], + ["2019-08-20T12:39:08", 7.9945, -21.6601], + ["2019-08-20T18:37:59", 7.97605, -21.52383], + ["2019-08-20T19:37:38", 7.97501, -21.50446], + ["2019-08-20T20:36:49", 7.97023, -21.482], + ["2019-08-20T21:36:49", 7.96396, -21.45745], + ["2019-08-20T22:36:49", 7.96014, -21.43256], + ["2019-08-20T23:37:10", 7.95581, -21.41026], + ["2019-08-21T00:37:10", 7.95053, -21.38803], + ["2019-08-21T01:35:42", 7.94623, -21.36756], + ["2019-08-21T02:35:42", 7.94181, -21.34567], + ["2019-08-21T03:35:42", 7.93838, -21.32181], + ["2019-08-21T04:36:08", 7.93606, -21.29633], + ["2019-08-21T10:34:29", 7.90848, -21.14676], + ["2019-08-21T11:33:59", 7.90467, -21.12161], + ["2019-08-21T12:33:26", 7.90212, -21.0963], + ["2019-08-21T13:33:26", 7.89663, -21.0715], + ["2019-08-21T14:33:10", 7.89003, -21.04611], + ["2019-08-21T15:33:10", 7.88179, -21.01993], + ["2019-08-21T16:32:27", 7.87569, -20.99555], + ["2019-08-21T17:32:27", 7.87028, -20.97169], + ["2019-08-21T18:32:27", 7.86256, -20.9462], + ["2019-08-21T22:31:28", 7.83603, -20.84912], + ["2019-08-21T23:30:57", 7.83202, -20.82903], + ["2019-08-22T00:30:57", 7.82708, -20.80826], + ["2019-08-22T05:30:09", 7.77386, -20.69467], + ["2019-08-22T06:30:01", 7.76677, -20.67447], + ["2019-08-22T07:29:29", 7.76022, -20.65634], + ["2019-08-22T08:28:59", 7.75446, -20.64048], + ["2019-08-22T09:28:59", 7.74944, -20.62357], + ["2019-08-22T10:28:28", 7.74432, -20.60324], + ["2019-08-22T11:28:28", 7.74084, -20.58221], + ["2019-08-22T12:28:10", 7.73882, -20.56506], + ["2019-08-22T16:27:08", 7.69843, -20.51685], + ["2019-08-22T17:26:27", 7.68493, -20.50266], + ["2019-08-22T18:26:27", 7.67283, -20.48627], + ["2019-08-22T19:26:21", 7.66332, -20.46797], + ["2019-08-22T20:26:21", 7.65753, -20.449], + ["2019-08-22T21:26:21", 7.65714, -20.43381], + ["2019-08-23T02:25:28", 7.64565, -20.39203], + ["2019-08-23T03:25:09", 7.64565, -20.38165], + ["2019-08-23T04:24:59", 7.64314, -20.37137], + ["2019-08-23T08:23:27", 7.6369, -20.34052], + ["2019-08-23T09:23:56", 7.63787, -20.33414], + ["2019-08-23T10:23:30", 7.64121, -20.32867], + ["2019-08-23T12:23:22", 7.65266, -20.31464], + ["2019-08-23T13:22:56", 7.66137, -20.3046], + ["2019-08-23T14:22:56", 7.6697, -20.29499], + ["2019-08-23T15:22:56", 7.67691, -20.28546], + ["2019-08-23T16:22:29", 7.68091, -20.27338], + ["2019-08-23T17:22:09", 7.68486, -20.25979], + ["2019-08-23T18:22:09", 7.68907, -20.24734], + ["2019-08-23T19:22:30", 7.69309, -20.23822], + ["2019-08-23T20:22:05", 7.6982, -20.23068], + ["2019-08-23T21:21:40", 7.70731, -20.22299], + ["2019-08-23T22:21:41", 7.71791, -20.21417], + ["2019-08-23T23:21:08", 7.72637, -20.20562], + ["2019-08-24T00:21:08", 7.73431, -20.19592], + ["2019-08-24T01:21:56", 7.74342, -20.18463], + ["2019-08-24T05:19:27", 7.77514, -20.13663], + ["2019-08-24T06:20:26", 7.7848, -20.12228], + ["2019-08-24T11:19:56", 7.83114, -20.04019], + ["2019-08-24T15:17:27", 7.85504, -19.96683], + ["2019-08-24T18:16:08", 7.86689, -19.90319], + ["2019-08-24T19:16:08", 7.86813, -19.87976], + ["2019-08-24T20:16:08", 7.86929, -19.85547], + ["2019-08-24T21:16:30", 7.86813, -19.83148], + ["2019-08-25T02:14:58", 7.84173, -19.71707], + ["2019-08-25T09:13:06", 7.74961, -19.55511], + ["2019-08-25T15:12:33", 7.65485, -19.45361], + ["2019-08-25T16:11:00", 7.6406, -19.43818], + ["2019-08-25T17:11:00", 7.62755, -19.42393], + ["2019-08-25T18:11:00", 7.61819, -19.4126], + ["2019-08-25T22:09:59", 7.57211, -19.36831], + ["2019-08-25T23:08:47", 7.56143, -19.36295], + ["2019-08-26T00:09:59", 7.55013, -19.35492], + ["2019-08-26T05:07:57", 7.51343, -19.31378], + ["2019-08-26T06:07:35", 7.50836, -19.30737], + ["2019-08-26T14:06:23", 7.47932, -19.2467], + ["2019-08-26T15:07:16", 7.47336, -19.23792], + ["2019-08-26T21:02:55", 7.45618, -19.17783], + ["2019-08-27T01:04:12", 7.45413, -19.12885], + ["2019-08-27T02:01:39", 7.45295, -19.11877], + ["2019-08-27T09:00:24", 7.44266, -19.03601], + ["2019-08-27T09:58:48", 7.44397, -19.02105], + ["2019-08-27T10:58:48", 7.44792, -19.00818], + ["2019-08-27T15:58:43", 7.47188, -18.92236], + ["2019-08-28T07:54:37", 7.44392, -18.58499], + ["2019-08-28T08:54:41", 7.43675, -18.56238], + ["2019-08-28T12:53:01", 7.40528, -18.47559], + ["2019-08-28T13:52:35", 7.39926, -18.45142], + ["2019-08-28T14:52:28", 7.39296, -18.42795], + ["2019-08-28T18:51:57", 7.37972, -18.34525], + ["2019-08-28T19:51:00", 7.37918, -18.32849], + ["2019-08-28T20:51:11", 7.37971, -18.31127], + ["2019-08-28T21:51:11", 7.37889, -18.29187], + ["2019-08-28T22:51:11", 7.37584, -18.27118], + ["2019-08-28T23:48:49", 7.37232, -18.25266], + ["2019-08-29T03:48:30", 7.35607, -18.18243], + ["2019-08-29T04:48:37", 7.35106, -18.16824], + ["2019-08-29T09:49:33", 7.34262, -18.11584], + ["2019-08-29T10:47:23", 7.34327, -18.10792], + ["2019-08-29T11:47:23", 7.34499, -18.09796], + ["2019-08-30T00:42:07", 7.43205, -17.99219], + ["2019-08-30T01:43:11", 7.43848, -17.98376], + ["2019-08-30T06:43:17", 7.48305, -17.9458], + ["2019-08-30T07:40:28", 7.49666, -17.94144], + ["2019-08-30T08:39:55", 7.51374, -17.9376], + ["2019-08-30T09:39:55", 7.53241, -17.93245], + ["2019-08-30T10:39:55", 7.54988, -17.92807], + ["2019-08-30T11:40:29", 7.56816, -17.92122], + ["2019-08-30T12:40:29", 7.58451, -17.91324], + ["2019-08-30T13:40:29", 7.60112, -17.9032], + ["2019-08-30T19:38:30", 7.71232, -17.86115], + ["2019-08-30T21:37:37", 7.74678, -17.84744], + ["2019-08-30T22:39:09", 7.76017, -17.83566], + ["2019-08-30T23:38:17", 7.77017, -17.8208], + ["2019-08-31T03:37:38", 7.80864, -17.74664], + ["2019-08-31T04:33:53", 7.8162, -17.72678], + ["2019-08-31T05:36:57", 7.82788, -17.7049], + ["2019-08-31T06:34:17", 7.83868, -17.68788], + ["2019-08-31T07:34:17", 7.84838, -17.66943], + ["2019-08-31T09:32:13", 7.86595, -17.6326], + ["2019-08-31T11:32:04", 7.88141, -17.60163], + ["2019-08-31T12:32:04", 7.88523, -17.58197], + ["2019-08-31T13:32:04", 7.88853, -17.56128], + ["2019-08-31T18:31:30", 7.9173, -17.47162], + ["2019-08-31T19:30:07", 7.92111, -17.45508], + ["2019-08-31T20:29:30", 7.92395, -17.43976], + ["2019-08-31T21:29:30", 7.92588, -17.42628], + ["2019-08-31T22:29:30", 7.92644, -17.41229], + ["2019-08-31T23:28:56", 7.92659, -17.3986], + ["2019-09-01T00:28:56", 7.92333, -17.38736], + ["2019-09-01T01:28:08", 7.91962, -17.37819], + ["2019-09-01T02:28:08", 7.91443, -17.36823], + ["2019-09-01T03:28:08", 7.90829, -17.35776], + ["2019-09-01T05:27:07", 7.8963, -17.33737], + ["2019-09-01T06:27:07", 7.89141, -17.33059], + ["2019-09-01T07:27:07", 7.88896, -17.32587], + ["2019-09-01T08:26:26", 7.88866, -17.32477], + ["2019-09-01T09:26:26", 7.88922, -17.32468], + ["2019-09-01T10:26:27", 7.89002, -17.3248], + ["2019-09-01T11:25:57", 7.88915, -17.32689], + ["2019-09-01T12:25:57", 7.89078, -17.32663], + ["2019-09-01T13:24:54", 7.89251, -17.32056], + ["2019-09-01T14:24:54", 7.89436, -17.31387], + ["2019-09-01T15:24:27", 7.89361, -17.30865], + ["2019-09-01T16:24:27", 7.89202, -17.30081], + ["2019-09-02T00:21:56", 7.90739, -17.30667], + ["2019-09-02T01:20:40", 7.91323, -17.30944], + ["2019-09-02T02:20:40", 7.91778, -17.30953], + ["2019-09-02T03:20:40", 7.92306, -17.30884], + ["2019-09-02T04:19:26", 7.92689, -17.3088], + ["2019-09-02T05:19:26", 7.92706, -17.30554], + ["2019-09-02T06:19:26", 7.92899, -17.30194], + ["2019-09-02T07:19:27", 7.93249, -17.30264], + ["2019-09-02T08:18:28", 7.93599, -17.30327], + ["2019-09-02T09:18:28", 7.94041, -17.3067], + ["2019-09-02T11:17:26", 7.95536, -17.30598], + ["2019-09-02T12:17:26", 7.96137, -17.30684], + ["2019-09-02T13:17:26", 7.96605, -17.30804], + ["2019-09-02T18:15:56", 7.97584, -17.28516], + ["2019-09-02T19:15:27", 7.97138, -17.28001], + ["2019-09-02T20:15:27", 7.97142, -17.27829], + ["2019-09-02T21:15:09", 7.97358, -17.27629], + ["2019-09-02T22:15:09", 7.97482, -17.27234], + ["2019-09-02T23:14:38", 7.97498, -17.26827], + ["2019-09-03T00:14:38", 7.97717, -17.26535], + ["2019-09-03T01:14:27", 7.97845, -17.26126], + ["2019-09-03T04:13:37", 7.98593, -17.2446], + ["2019-09-03T10:11:56", 7.96339, -17.18439], + ["2019-09-03T18:09:26", 7.91656, -17.13965], + ["2019-09-03T19:08:54", 7.90566, -17.13611], + ["2019-09-03T20:08:26", 7.89827, -17.13482], + ["2019-09-03T21:08:26", 7.89188, -17.13113], + ["2019-09-03T22:07:43", 7.88633, -17.12989], + ["2019-09-03T23:07:43", 7.87869, -17.1304], + ["2019-09-04T00:07:27", 7.87144, -17.13013], + ["2019-09-04T03:06:54", 7.85612, -17.12939], + ["2019-09-04T10:05:26", 7.83745, -17.14716], + ["2019-09-04T11:04:56", 7.83777, -17.15323], + ["2019-09-04T12:04:56", 7.83691, -17.15726], + ["2019-09-04T13:04:10", 7.83719, -17.16123], + ["2019-09-04T14:04:10", 7.83848, -17.16956], + ["2019-09-04T15:03:59", 7.84102, -17.17853], + ["2019-09-04T16:03:56", 7.84899, -17.19128], + ["2019-09-04T17:03:07", 7.86057, -17.20214], + ["2019-09-04T18:03:07", 7.87353, -17.20746], + ["2019-09-04T19:02:55", 7.88583, -17.21323], + ["2019-09-04T20:02:35", 7.90164, -17.22576], + ["2019-09-04T21:02:35", 7.92091, -17.23477], + ["2019-09-05T01:01:00", 8.00996, -17.24533], + ["2019-09-05T03:00:28", 8.05265, -17.24191], + ["2019-09-05T09:58:27", 8.1633, -17.18265], + ["2019-09-05T10:58:28", 8.17824, -17.17184], + ["2019-09-05T11:58:00", 8.19166, -17.16144], + ["2019-09-05T12:57:55", 8.20553, -17.15186], + ["2019-09-05T20:54:56", 8.30866, -17.08313], + ["2019-09-05T21:55:10", 8.32011, -17.07078], + ["2019-09-05T22:55:10", 8.33337, -17.05765], + ["2019-09-06T00:52:59", 8.3553, -17.03189], + ["2019-09-06T01:52:59", 8.36576, -17.0215], + ["2019-09-06T02:52:59", 8.37598, -17.01257], + ["2019-09-06T08:50:57", 8.42817, -16.93384], + ["2019-09-06T11:49:08", 8.44641, -16.88997], + ["2019-09-06T12:49:08", 8.45069, -16.87478], + ["2019-09-06T13:49:08", 8.45349, -16.8595], + ["2019-09-06T14:48:57", 8.4567, -16.84271], + ["2019-09-06T20:47:27", 8.4543, -16.75275], + ["2019-09-06T21:46:55", 8.45046, -16.73846], + ["2019-09-06T22:46:55", 8.44621, -16.72284], + ["2019-09-06T23:46:38", 8.44152, -16.70547], + ["2019-09-07T00:46:27", 8.43777, -16.69162], + ["2019-09-07T01:46:26", 8.43242, -16.67834], + ["2019-09-07T02:45:58", 8.42444, -16.66374], + ["2019-09-07T03:45:58", 8.41779, -16.6476], + ["2019-09-07T04:45:58", 8.41118, -16.63232], + ["2019-09-07T06:45:26", 8.39411, -16.61113], + ["2019-09-07T07:45:26", 8.38402, -16.60375], + ["2019-09-07T08:45:26", 8.37664, -16.59714], + ["2019-09-07T17:42:56", 8.26852, -16.54056], + ["2019-09-07T18:42:11", 8.25483, -16.53502], + ["2019-09-07T19:42:27", 8.24366, -16.5307], + ["2019-09-07T20:42:11", 8.23316, -16.52609], + ["2019-09-08T01:40:19", 8.1877, -16.50998], + ["2019-09-08T02:40:39", 8.18479, -16.51089], + ["2019-09-08T03:39:07", 8.18214, -16.51312], + ["2019-09-08T04:39:07", 8.17909, -16.51492], + ["2019-09-08T05:39:07", 8.17557, -16.51492], + ["2019-09-08T06:38:36", 8.17193, -16.51498], + ["2019-09-08T07:38:36", 8.16924, -16.51301], + ["2019-09-08T08:38:36", 8.16691, -16.51138], + ["2019-09-08T09:39:25", 8.16469, -16.50753], + ["2019-09-08T10:39:25", 8.16379, -16.50641], + ["2019-09-08T11:39:25", 8.16362, -16.50787], + ["2019-09-08T16:37:27", 8.17357, -16.50461], + ["2019-09-08T17:36:27", 8.1768, -16.50229], + ["2019-09-08T20:35:26", 8.18838, -16.48433], + ["2019-09-08T21:35:26", 8.19211, -16.47592], + ["2019-09-08T22:35:26", 8.19593, -16.47043], + ["2019-09-08T23:35:38", 8.19834, -16.46567], + ["2019-09-09T05:32:59", 8.23113, -16.42633], + ["2019-09-09T13:30:58", 8.24829, -16.34457], + ["2019-09-09T14:29:58", 8.24642, -16.33032], + ["2019-09-09T23:28:04", 8.22335, -16.19736], + ["2019-09-10T00:28:27", 8.21766, -16.18225], + ["2019-09-10T04:25:40", 8.20273, -16.13895], + ["2019-09-10T05:25:27", 8.19588, -16.1293], + ["2019-09-10T08:24:09", 8.17444, -16.10765], + ["2019-09-10T09:24:09", 8.1653, -16.09941], + ["2019-09-10T10:24:09", 8.1577, -16.09177], + ["2019-09-10T11:23:54", 8.15152, -16.08231], + ["2019-09-10T13:23:25", 8.14347, -16.06494], + ["2019-09-10T14:22:54", 8.14016, -16.05701], + ["2019-09-10T15:22:54", 8.13738, -16.04834], + ["2019-09-10T22:20:41", 8.10326, -15.99405], + ["2019-09-10T23:19:57", 8.09838, -15.98902], + ["2019-09-11T00:19:57", 8.09319, -15.9873], + ["2019-09-11T01:19:29", 8.08906, -15.98627], + ["2019-09-11T02:18:58", 8.08647, -15.98535], + ["2019-09-11T03:18:28", 8.08548, -15.98448], + ["2019-09-11T04:18:28", 8.08552, -15.98328], + ["2019-09-11T05:17:28", 8.08555, -15.98322], + ["2019-09-11T06:17:28", 8.08723, -15.98296], + ["2019-09-11T07:17:28", 8.0892, -15.97815], + ["2019-09-11T13:15:36", 8.1023, -15.95471], + ["2019-09-11T14:14:26", 8.10835, -15.94905], + ["2019-09-11T15:14:26", 8.11487, -15.94296], + ["2019-09-11T16:14:26", 8.12101, -15.93524], + ["2019-09-11T19:13:26", 8.14209, -15.90729], + ["2019-09-11T20:12:56", 8.14607, -15.89539], + ["2019-09-11T21:12:56", 8.14929, -15.88294], + ["2019-09-11T22:12:56", 8.15044, -15.87195], + ["2019-09-12T01:11:57", 8.14872, -15.83746], + ["2019-09-12T02:11:27", 8.14845, -15.82625], + ["2019-09-12T03:11:27", 8.14879, -15.81415], + ["2019-09-12T04:10:54", 8.15098, -15.80142], + ["2019-09-12T10:09:27", 8.17188, -15.7294], + ["2019-09-12T12:08:38", 8.15728, -15.70389], + ["2019-09-12T13:07:56", 8.14889, -15.69315], + ["2019-09-12T13:08:26", 8.14894, -15.69321], + ["2019-09-12T14:07:56", 8.14134, -15.68285], + ["2019-09-12T15:07:56", 8.13683, -15.67349], + ["2019-09-12T16:06:58", 8.13406, -15.6634], + ["2019-09-12T17:06:58", 8.13336, -15.64992], + ["2019-09-12T18:06:58", 8.13341, -15.63705], + ["2019-09-12T19:06:36", 8.13508, -15.62463], + ["2019-09-12T20:06:27", 8.13476, -15.61212], + ["2019-09-12T21:05:57", 8.13028, -15.60045], + ["2019-09-12T22:05:57", 8.1213, -15.58646], + ["2019-09-12T23:04:58", 8.10853, -15.57333], + ["2019-09-13T00:05:27", 8.09373, -15.56351], + ["2019-09-13T01:04:58", 8.07746, -15.55994], + ["2019-09-13T09:02:38", 8.01884, -15.51498], + ["2019-09-13T10:02:27", 8.01535, -15.50391], + ["2019-09-13T11:01:56", 8.00769, -15.49787], + ["2019-09-13T12:01:56", 7.99271, -15.49933], + ["2019-09-13T16:00:57", 7.9586, -15.50378], + ["2019-09-13T17:00:24", 7.9534, -15.50406], + ["2019-09-13T17:59:55", 7.95067, -15.50263], + ["2019-09-13T18:59:55", 7.95016, -15.4986], + ["2019-09-13T19:59:59", 7.95233, -15.49374], + ["2019-09-13T20:59:56", 7.95928, -15.48547], + ["2019-09-13T21:59:11", 7.96712, -15.47419], + ["2019-09-13T22:59:11", 7.96884, -15.4675], + ["2019-09-13T23:59:11", 7.96253, -15.46613], + ["2019-09-14T06:57:56", 7.92226, -15.48755], + ["2019-09-14T08:56:57", 7.93492, -15.48129], + ["2019-09-14T10:56:25", 7.94677, -15.4689], + ["2019-09-14T11:56:26", 7.95248, -15.46088], + ["2019-09-14T12:55:08", 7.95752, -15.457], + ["2019-09-14T13:55:08", 7.95876, -15.45734], + ["2019-09-14T14:55:08", 7.95855, -15.4588], + ["2019-09-14T21:52:59", 8.00927, -15.4097], + ["2019-09-15T02:51:28", 7.99783, -15.38184], + ["2019-09-15T03:51:26", 7.99501, -15.3765], + ["2019-09-15T08:49:56", 8.01451, -15.31607], + ["2019-09-15T10:48:25", 8.01765, -15.29846], + ["2019-09-15T11:48:25", 8.01043, -15.29743], + ["2019-09-15T12:48:25", 8.00207, -15.29623], + ["2019-09-15T13:48:03", 7.99439, -15.29056], + ["2019-09-15T14:48:03", 7.98645, -15.28275], + ["2019-09-15T15:48:01", 7.97857, -15.27155], + ["2019-09-15T16:47:10", 7.97485, -15.25481], + ["2019-09-15T17:47:10", 7.97228, -15.23618], + ["2019-09-15T18:47:26", 7.97127, -15.21887], + ["2019-09-15T20:47:37", 7.98228, -15.19348], + ["2019-09-15T21:45:23", 7.98509, -15.18101], + ["2019-09-15T22:45:23", 7.97758, -15.16702], + ["2019-09-15T23:45:23", 7.96561, -15.15372], + ["2019-09-16T00:45:30", 7.95192, -15.13876], + ["2019-09-16T05:44:29", 7.87134, -15.07422], + ["2019-09-16T11:43:58", 7.82494, -15.02539], + ["2019-09-16T20:42:02", 7.70079, -14.92456], + ["2019-09-16T21:42:00", 7.68869, -14.9183], + ["2019-09-16T23:41:00", 7.66886, -14.90021], + ["2019-09-17T00:39:31", 7.66379, -14.89032], + ["2019-09-17T01:39:31", 7.6574, -14.88148], + ["2019-09-17T02:39:31", 7.64886, -14.87247], + ["2019-09-17T05:40:42", 7.60847, -14.84299], + ["2019-09-17T11:37:10", 7.52588, -14.83389], + ["2019-09-17T17:36:06", 7.48036, -14.83472], + ["2019-09-17T18:35:29", 7.47974, -14.83447], + ["2019-09-17T19:35:29", 7.4788, -14.83121], + ["2019-09-17T20:34:18", 7.47383, -14.82571], + ["2019-09-17T21:34:18", 7.4646, -14.82142], + ["2019-09-17T22:34:18", 7.45838, -14.8161], + ["2019-09-17T23:33:32", 7.45194, -14.81248], + ["2019-09-18T00:33:32", 7.4452, -14.81033], + ["2019-09-18T01:33:38", 7.43841, -14.80819], + ["2019-09-18T02:33:38", 7.4309, -14.80579], + ["2019-09-18T08:43:27", 7.38145, -14.80374], + ["2019-09-18T09:42:57", 7.37963, -14.80533], + ["2019-09-18T10:42:57", 7.37714, -14.80868], + ["2019-09-18T11:42:57", 7.37577, -14.814], + ["2019-09-18T17:42:28", 7.36605, -14.84177], + ["2019-09-18T20:40:39", 7.37324, -14.83773], + ["2019-09-18T21:40:39", 7.37521, -14.83661], + ["2019-09-18T22:40:39", 7.37731, -14.83575], + ["2019-09-18T23:40:57", 7.37724, -14.83554], + ["2019-09-19T01:39:00", 7.37415, -14.83416], + ["2019-09-19T02:38:11", 7.37203, -14.83176], + ["2019-09-19T03:39:00", 7.36981, -14.82867], + ["2019-09-19T04:38:57", 7.36779, -14.82697], + ["2019-09-19T13:36:28", 7.38851, -14.78171], + ["2019-09-19T17:34:15", 7.39498, -14.74844], + ["2019-09-19T18:34:53", 7.39765, -14.73901], + ["2019-09-19T19:35:27", 7.40045, -14.72961], + ["2019-09-19T20:34:57", 7.40163, -14.72244], + ["2019-09-19T21:34:27", 7.40305, -14.71584], + ["2019-09-19T22:34:27", 7.40236, -14.707], + ["2019-09-20T05:32:54", 7.38139, -14.65674], + ["2019-09-20T10:31:00", 7.37332, -14.63348], + ["2019-09-20T17:27:41", 7.35798, -14.62308], + ["2019-09-20T18:26:58", 7.35747, -14.61981], + ["2019-09-20T19:26:58", 7.3573, -14.61715], + ["2019-09-20T20:26:58", 7.3555, -14.612], + ["2019-09-21T01:25:53", 7.34335, -14.57846], + ["2019-09-21T03:24:28", 7.33167, -14.56042], + ["2019-09-21T04:24:58", 7.32463, -14.55374], + ["2019-09-21T05:24:28", 7.31665, -14.54721], + ["2019-09-21T06:23:57", 7.3054, -14.53982], + ["2019-09-21T07:23:57", 7.29514, -14.53055], + ["2019-09-21T08:23:28", 7.28494, -14.5231], + ["2019-09-21T13:22:26", 7.23883, -14.47849], + ["2019-09-21T14:21:59", 7.22775, -14.47318], + ["2019-09-21T15:20:59", 7.21301, -14.46428], + ["2019-09-21T16:20:59", 7.1943, -14.45999], + ["2019-09-21T17:20:56", 7.18105, -14.45883], + ["2019-09-21T22:18:56", 7.16244, -14.45685], + ["2019-09-21T23:19:01", 7.16167, -14.4519], + ["2019-09-22T03:17:27", 7.1525, -14.4248], + ["2019-09-22T04:17:09", 7.1472, -14.418], + ["2019-09-22T05:16:26", 7.14371, -14.41497], + ["2019-09-22T06:16:26", 7.1444, -14.41557], + ["2019-09-22T07:16:26", 7.14946, -14.41849], + ["2019-09-22T08:15:57", 7.15739, -14.4178], + ["2019-09-22T09:15:57", 7.16314, -14.41626], + ["2019-09-22T14:14:26", 7.18562, -14.41132], + ["2019-09-22T15:14:24", 7.18706, -14.40848], + ["2019-09-22T16:14:24", 7.18702, -14.40625], + ["2019-09-22T17:13:45", 7.18908, -14.40253], + ["2019-09-22T18:13:45", 7.19307, -14.39764], + ["2019-09-22T20:12:25", 7.20393, -14.38268], + ["2019-09-22T21:12:25", 7.20921, -14.37444], + ["2019-09-22T22:12:25", 7.20998, -14.36371], + ["2019-09-22T23:12:30", 7.21236, -14.35403], + ["2019-09-23T00:11:58", 7.2158, -14.34293], + ["2019-09-23T01:11:37", 7.21898, -14.32874], + ["2019-09-23T02:11:38", 7.21956, -14.31479], + ["2019-09-23T06:10:58", 7.21908, -14.2738] + ], + "drifter_5": [ + ["2019-07-23T21:32:00", 6.91487, -34.47964], + ["2019-07-23T21:46:24", 6.91421, -34.47717], + ["2019-07-24T03:43:59", 6.86178, -34.39658], + ["2019-07-24T04:42:25", 6.84651, -34.38155], + ["2019-07-24T05:42:25", 6.82853, -34.36859], + ["2019-07-24T06:41:36", 6.81202, -34.35306], + ["2019-07-24T07:41:36", 6.79438, -34.3389], + ["2019-07-24T08:40:40", 6.78022, -34.32289], + ["2019-07-24T09:40:40", 6.76859, -34.3077], + ["2019-07-24T10:40:40", 6.75233, -34.29337], + ["2019-07-24T11:39:57", 6.7371, -34.27917], + ["2019-07-24T12:39:55", 6.71989, -34.26575], + ["2019-07-24T14:39:00", 6.70559, -34.24625], + ["2019-07-24T18:36:55", 6.7019, -34.22429], + ["2019-07-24T19:36:55", 6.69941, -34.21545], + ["2019-07-24T20:36:55", 6.69585, -34.2067], + ["2019-07-24T22:36:27", 6.69842, -34.18704], + ["2019-07-24T23:36:06", 6.70477, -34.18536], + ["2019-07-25T00:34:52", 6.71653, -34.18221], + ["2019-07-25T01:34:52", 6.73039, -34.17749], + ["2019-07-25T02:34:57", 6.74579, -34.17288], + ["2019-07-25T03:34:09", 6.76491, -34.17111], + ["2019-07-25T08:34:26", 6.87285, -34.1409], + ["2019-07-25T09:31:26", 6.89346, -34.13721], + ["2019-07-25T10:31:26", 6.91559, -34.13568], + ["2019-07-25T11:31:08", 6.93905, -34.13474], + ["2019-07-25T12:30:57", 6.96401, -34.13065], + ["2019-07-25T14:28:55", 7.01366, -34.12687], + ["2019-07-25T15:28:55", 7.04117, -34.12618], + ["2019-07-25T16:28:55", 7.06971, -34.12524], + ["2019-07-25T17:28:08", 7.09787, -34.12549], + ["2019-07-25T18:27:54", 7.12399, -34.12524], + ["2019-07-25T22:26:26", 7.23273, -34.11691], + ["2019-07-25T23:26:26", 7.25956, -34.112], + ["2019-07-26T00:25:59", 7.28609, -34.10513], + ["2019-07-26T01:25:25", 7.31275, -34.09479], + ["2019-07-26T02:24:57", 7.34164, -34.08411], + ["2019-07-26T03:23:57", 7.36954, -34.07186], + ["2019-07-26T04:23:57", 7.39555, -34.0577], + ["2019-07-26T05:23:57", 7.41855, -34.0462], + ["2019-07-26T06:23:27", 7.43848, -34.0372], + ["2019-07-26T07:22:57", 7.46035, -34.02866], + ["2019-07-26T08:22:28", 7.48414, -34.0173], + ["2019-07-26T09:21:56", 7.50722, -34.00284], + ["2019-07-26T13:20:27", 7.57269, -33.94135], + ["2019-07-26T16:18:57", 7.62167, -33.89084], + ["2019-07-26T17:17:55", 7.64122, -33.86964], + ["2019-07-26T18:17:55", 7.6616, -33.84715], + ["2019-07-26T19:17:55", 7.68083, -33.82166], + ["2019-07-26T20:16:56", 7.6973, -33.79492], + ["2019-07-26T21:15:56", 7.71101, -33.76913], + ["2019-07-26T22:15:56", 7.72161, -33.74106], + ["2019-07-26T23:15:39", 7.72724, -33.71234], + ["2019-07-27T00:15:27", 7.73195, -33.68436], + ["2019-07-27T02:14:00", 7.74165, -33.62719], + ["2019-07-27T03:14:27", 7.74321, -33.60065], + ["2019-07-27T04:14:00", 7.74117, -33.57526], + ["2019-07-27T05:13:56", 7.73763, -33.54962], + ["2019-07-27T06:13:09", 7.73118, -33.52429], + ["2019-07-27T07:12:35", 7.72165, -33.50061], + ["2019-07-27T08:12:26", 7.70785, -33.47794], + ["2019-07-27T09:11:27", 7.69062, -33.45872], + ["2019-07-27T10:11:27", 7.67341, -33.44104], + ["2019-07-27T11:11:06", 7.65747, -33.42075], + ["2019-07-27T14:16:56", 7.59783, -33.35669], + ["2019-07-27T15:16:09", 7.57766, -33.33557], + ["2019-07-27T16:16:09", 7.55118, -33.3172], + ["2019-07-27T17:15:25", 7.52202, -33.29846], + ["2019-07-27T18:15:24", 7.49391, -33.28088], + ["2019-07-27T19:14:56", 7.46544, -33.26816], + ["2019-07-27T20:14:27", 7.43464, -33.26077], + ["2019-07-27T21:12:57", 7.40254, -33.25658], + ["2019-07-27T22:12:57", 7.37233, -33.25315], + ["2019-07-27T23:12:57", 7.34504, -33.25229], + ["2019-07-28T00:11:56", 7.31999, -33.25173], + ["2019-07-28T01:11:56", 7.29733, -33.25327], + ["2019-07-28T02:11:27", 7.27843, -33.25607], + ["2019-07-28T03:11:07", 7.26601, -33.25436], + ["2019-07-28T07:09:37", 7.23467, -33.24902], + ["2019-07-28T08:08:57", 7.22917, -33.25171], + ["2019-07-28T09:08:57", 7.22325, -33.25351], + ["2019-07-28T10:08:26", 7.21638, -33.25854], + ["2019-07-28T11:07:58", 7.20909, -33.2583], + ["2019-07-28T12:07:27", 7.20298, -33.26007], + ["2019-07-28T13:07:27", 7.20302, -33.2623], + ["2019-07-28T14:07:06", 7.20716, -33.26352], + ["2019-07-28T15:06:10", 7.21273, -33.26335], + ["2019-07-28T16:06:10", 7.21706, -33.26172], + ["2019-07-28T17:05:56", 7.22827, -33.25848], + ["2019-07-28T18:05:25", 7.24073, -33.25406], + ["2019-07-28T22:04:25", 7.29952, -33.22928], + ["2019-07-28T23:03:58", 7.31477, -33.22275], + ["2019-07-29T00:03:38", 7.33053, -33.2153], + ["2019-07-29T01:03:09", 7.34697, -33.20831], + ["2019-07-29T05:01:38", 7.41289, -33.14011], + ["2019-07-29T06:01:06", 7.43206, -33.1199], + ["2019-07-29T07:00:56", 7.45158, -33.10071], + ["2019-07-29T08:00:38", 7.4701, -33.08249], + ["2019-07-29T09:00:25", 7.48455, -33.06219], + ["2019-07-29T09:59:58", 7.49799, -33.04181], + ["2019-07-29T10:58:55", 7.51562, -33.02061], + ["2019-07-29T11:59:08", 7.53458, -32.99963], + ["2019-07-29T12:58:55", 7.55433, -32.97623], + ["2019-07-29T13:58:39", 7.57257, -32.95178], + ["2019-07-29T18:56:24", 7.65876, -32.8158], + ["2019-07-29T19:55:56", 7.6705, -32.78308], + ["2019-07-29T20:55:28", 7.68438, -32.75001], + ["2019-07-29T21:55:28", 7.69584, -32.71619], + ["2019-07-29T22:54:26", 7.70556, -32.68478], + ["2019-07-30T00:53:27", 7.72277, -32.62207], + ["2019-07-30T01:52:58", 7.72696, -32.58832], + ["2019-07-30T02:52:58", 7.7282, -32.55673], + ["2019-07-30T03:52:56", 7.72876, -32.52469], + ["2019-07-30T04:51:37", 7.7269, -32.49471], + ["2019-07-30T05:51:37", 7.72544, -32.46252], + ["2019-07-30T06:51:37", 7.7193, -32.4263], + ["2019-07-30T07:50:58", 7.7106, -32.38941], + ["2019-07-30T08:50:58", 7.70124, -32.35182], + ["2019-07-30T09:50:58", 7.68849, -32.31689], + ["2019-07-30T10:50:26", 7.67811, -32.28476], + ["2019-07-30T11:49:56", 7.66985, -32.25372], + ["2019-07-30T12:49:38", 7.6615, -32.22433], + ["2019-07-30T13:47:57", 7.64931, -32.19522], + ["2019-07-30T14:48:41", 7.63599, -32.16574], + ["2019-07-30T15:47:57", 7.62287, -32.13531], + ["2019-07-30T16:47:26", 7.60742, -32.10415], + ["2019-07-30T17:47:26", 7.59309, -32.07617], + ["2019-07-30T18:47:07", 7.5762, -32.04868], + ["2019-07-30T19:46:40", 7.55761, -32.02151], + ["2019-07-31T01:44:59", 7.42115, -31.87845], + ["2019-07-31T05:42:34", 7.34964, -31.8269], + ["2019-07-31T06:43:28", 7.33771, -31.81433], + ["2019-07-31T07:44:29", 7.32488, -31.8017], + ["2019-07-31T08:41:58", 7.31248, -31.78972], + ["2019-07-31T09:41:58", 7.30033, -31.77788], + ["2019-07-31T10:41:58", 7.29037, -31.76672], + ["2019-07-31T15:40:55", 7.24848, -31.73648], + ["2019-07-31T16:38:51", 7.24405, -31.73627], + ["2019-07-31T19:38:09", 7.23441, -31.72075], + ["2019-07-31T20:38:58", 7.23223, -31.71237], + ["2019-07-31T21:38:09", 7.229, -31.70187], + ["2019-07-31T22:37:58", 7.22483, -31.69269], + ["2019-07-31T23:35:39", 7.22155, -31.68566], + ["2019-08-01T00:35:39", 7.21992, -31.68137], + ["2019-08-01T04:34:55", 7.2186, -31.67239], + ["2019-08-01T05:36:29", 7.22136, -31.67043], + ["2019-08-01T06:36:29", 7.22621, -31.66837], + ["2019-08-01T07:33:21", 7.23132, -31.66544], + ["2019-08-01T12:31:51", 7.25707, -31.6362], + ["2019-08-01T13:31:58", 7.26535, -31.63113], + ["2019-08-01T20:28:55", 7.31323, -31.59238], + ["2019-08-01T21:28:26", 7.32434, -31.58594], + ["2019-08-01T22:28:26", 7.33703, -31.57858], + ["2019-08-01T23:27:57", 7.35138, -31.57019], + ["2019-08-02T00:26:39", 7.36458, -31.56036], + ["2019-08-02T01:26:39", 7.37578, -31.54955], + ["2019-08-02T02:26:39", 7.38475, -31.53891], + ["2019-08-02T03:25:57", 7.3892, -31.52856], + ["2019-08-02T04:25:57", 7.39308, -31.51932], + ["2019-08-02T05:25:25", 7.39462, -31.51055], + ["2019-08-02T06:25:25", 7.39715, -31.50171], + ["2019-08-02T07:23:54", 7.40236, -31.49141], + ["2019-08-02T08:23:54", 7.40704, -31.48145], + ["2019-08-02T09:23:54", 7.41069, -31.47003], + ["2019-08-02T10:23:54", 7.4126, -31.45801], + ["2019-08-02T11:23:08", 7.41283, -31.44565], + ["2019-08-02T12:22:57", 7.41074, -31.43451], + ["2019-08-02T13:22:38", 7.40481, -31.42496], + ["2019-08-02T14:22:26", 7.39642, -31.41452], + ["2019-08-02T15:21:27", 7.38947, -31.40349], + ["2019-08-02T16:21:27", 7.38449, -31.39456], + ["2019-08-02T17:21:27", 7.37878, -31.38812], + ["2019-08-02T18:20:56", 7.37109, -31.3812], + ["2019-08-02T19:20:35", 7.3628, -31.37408], + ["2019-08-02T20:19:55", 7.35478, -31.36649], + ["2019-08-02T21:19:55", 7.34598, -31.35593], + ["2019-08-03T01:18:26", 7.30829, -31.31613], + ["2019-08-03T02:18:11", 7.29271, -31.30606], + ["2019-08-03T03:17:55", 7.27503, -31.29501], + ["2019-08-03T04:16:58", 7.25792, -31.28324], + ["2019-08-03T05:16:58", 7.24097, -31.27079], + ["2019-08-03T06:16:58", 7.22252, -31.25998], + ["2019-08-03T07:16:06", 7.20746, -31.24397], + ["2019-08-03T08:16:06", 7.19677, -31.22989], + ["2019-08-03T09:15:56", 7.18802, -31.21588], + ["2019-08-03T10:15:31", 7.17878, -31.20267], + ["2019-08-03T11:14:39", 7.16701, -31.18986], + ["2019-08-03T12:14:39", 7.15564, -31.17432], + ["2019-08-03T13:14:07", 7.14314, -31.1593], + ["2019-08-03T14:13:55", 7.13037, -31.14624], + ["2019-08-03T15:12:56", 7.11668, -31.13586], + ["2019-08-03T16:12:54", 7.10063, -31.12531], + ["2019-08-03T17:12:29", 7.08508, -31.11273], + ["2019-08-03T18:11:54", 7.06926, -31.09982], + ["2019-08-03T19:10:25", 7.05575, -31.08295], + ["2019-08-03T20:10:25", 7.04296, -31.06295], + ["2019-08-03T21:10:25", 7.02979, -31.04407], + ["2019-08-03T22:10:05", 7.01902, -31.02636], + ["2019-08-03T23:10:05", 7.00975, -31.00937], + ["2019-08-04T00:09:38", 7.00302, -30.99402], + ["2019-08-04T01:08:56", 6.99929, -30.97852], + ["2019-08-04T02:08:08", 7.00089, -30.96274], + ["2019-08-04T03:08:08", 7.00046, -30.95047], + ["2019-08-04T04:07:56", 6.99953, -30.94006], + ["2019-08-04T05:07:27", 7.00104, -30.92728], + ["2019-08-04T06:07:28", 7.00536, -30.91418], + ["2019-08-04T07:06:25", 7.01199, -30.90226], + ["2019-08-04T08:06:25", 7.01796, -30.88861], + ["2019-08-04T10:04:56", 7.03241, -30.86312], + ["2019-08-04T11:04:56", 7.04121, -30.85145], + ["2019-08-04T12:04:56", 7.05099, -30.84055], + ["2019-08-04T13:04:27", 7.06128, -30.8266], + ["2019-08-04T14:04:27", 7.07201, -30.81561], + ["2019-08-04T15:03:55", 7.08247, -30.80536], + ["2019-08-04T16:03:26", 7.09352, -30.79471], + ["2019-08-04T20:03:25", 7.12316, -30.75076], + ["2019-08-04T21:01:01", 7.12967, -30.73495], + ["2019-08-05T01:59:06", 7.14668, -30.64423], + ["2019-08-05T02:58:54", 7.15087, -30.62524], + ["2019-08-05T03:58:26", 7.15425, -30.60687], + ["2019-08-05T04:57:56", 7.1576, -30.58783], + ["2019-08-05T05:57:55", 7.15944, -30.56863], + ["2019-08-05T06:57:27", 7.15885, -30.55124], + ["2019-08-05T07:56:58", 7.15745, -30.53568], + ["2019-08-05T08:55:56", 7.1551, -30.51807], + ["2019-08-05T09:55:56", 7.15192, -30.49953], + ["2019-08-05T10:55:56", 7.1475, -30.4809], + ["2019-08-05T13:54:38", 7.13184, -30.42538], + ["2019-08-05T14:53:56", 7.12708, -30.40625], + ["2019-08-05T15:53:56", 7.12493, -30.38874], + ["2019-08-05T16:53:56", 7.12364, -30.36874], + ["2019-08-05T17:53:27", 7.11425, -30.34814], + ["2019-08-05T18:52:38", 7.10612, -30.32903], + ["2019-08-05T19:52:38", 7.09784, -30.30817], + ["2019-08-05T20:51:56", 7.09176, -30.28916], + ["2019-08-05T21:51:56", 7.08313, -30.27448], + ["2019-08-06T01:50:57", 7.03257, -30.20166], + ["2019-08-06T07:59:58", 6.96311, -30.11789], + ["2019-08-06T08:58:57", 6.94437, -30.10704], + ["2019-08-06T09:58:57", 6.92639, -30.09708], + ["2019-08-06T13:57:26", 6.87877, -30.05835] + ], + "drifter_6": [ + ["2019-07-23T21:36:00", 6.90495, -34.47952], + ["2019-07-23T22:41:57", 6.91199, -34.46561], + ["2019-07-23T23:41:27", 6.90579, -34.45123], + ["2019-07-24T00:41:33", 6.90007, -34.43683], + ["2019-07-24T02:40:26", 6.87577, -34.41153], + ["2019-07-24T03:39:24", 6.86264, -34.39768], + ["2019-07-24T04:39:24", 6.84741, -34.38257], + ["2019-07-24T05:38:57", 6.82958, -34.36942], + ["2019-07-24T06:38:36", 6.81297, -34.35391], + ["2019-07-24T07:38:33", 6.79541, -34.33951], + ["2019-07-24T11:36:29", 6.73792, -34.27982], + ["2019-07-24T12:35:58", 6.72081, -34.26648], + ["2019-07-24T13:35:58", 6.71033, -34.25403], + ["2019-07-24T14:35:26", 6.70689, -34.24658], + ["2019-07-24T15:34:56", 6.7091, -34.24057], + ["2019-07-24T16:34:56", 6.70884, -34.23788], + ["2019-07-24T17:33:28", 6.70439, -34.23465], + ["2019-07-24T18:33:28", 6.70362, -34.22487], + ["2019-07-24T19:33:28", 6.70126, -34.21594], + ["2019-07-24T20:33:09", 6.69806, -34.2067], + ["2019-07-24T21:32:56", 6.69783, -34.19556], + ["2019-07-24T22:32:16", 6.70071, -34.18643], + ["2019-07-25T02:30:40", 6.74891, -34.17194], + ["2019-07-25T03:29:58", 6.76879, -34.16991], + ["2019-07-25T04:29:58", 6.78892, -34.1627], + ["2019-07-25T05:29:58", 6.80952, -34.15558], + ["2019-07-25T11:30:58", 6.94423, -34.13303], + ["2019-07-25T12:26:52", 6.96754, -34.12888], + ["2019-07-25T13:28:28", 6.99135, -34.1265], + ["2019-07-25T14:26:57", 7.01595, -34.12527], + ["2019-07-25T15:26:57", 7.04359, -34.12398], + ["2019-07-25T16:26:57", 7.07161, -34.12244], + ["2019-07-25T17:27:26", 7.09929, -34.1232], + ["2019-07-25T20:24:36", 7.17251, -34.11984], + ["2019-07-26T02:24:25", 7.3337, -34.0787], + ["2019-07-26T09:22:00", 7.49476, -33.99692], + ["2019-07-26T13:19:33", 7.5615, -33.93457], + ["2019-07-26T14:19:29", 7.5775, -33.9184], + ["2019-07-26T17:16:59", 7.63221, -33.86624], + ["2019-07-26T18:16:59", 7.65178, -33.84495], + ["2019-07-26T19:16:59", 7.67053, -33.81989], + ["2019-07-26T20:16:59", 7.68744, -33.79211], + ["2019-07-26T21:15:58", 7.70183, -33.76544], + ["2019-07-26T22:15:58", 7.71453, -33.73755], + ["2019-07-26T23:16:25", 7.72191, -33.70712], + ["2019-07-27T00:15:55", 7.72746, -33.67892], + ["2019-07-27T01:15:38", 7.73301, -33.64944], + ["2019-07-27T02:14:59", 7.73782, -33.62085], + ["2019-07-27T03:14:59", 7.73928, -33.59381], + ["2019-07-27T04:14:58", 7.73632, -33.56717], + ["2019-07-27T05:14:25", 7.73181, -33.5408], + ["2019-07-27T06:13:57", 7.72594, -33.51538], + ["2019-07-27T10:43:00", 7.65876, -33.42102], + ["2019-07-27T12:41:25", 7.61983, -33.37809], + ["2019-07-27T13:41:25", 7.5997, -33.35629], + ["2019-07-27T14:41:25", 7.57987, -33.3356], + ["2019-07-27T15:41:07", 7.55676, -33.31519], + ["2019-07-27T16:40:39", 7.52788, -33.29779], + ["2019-07-27T17:40:27", 7.49869, -33.28003], + ["2019-07-27T18:39:59", 7.46986, -33.26483], + ["2019-07-27T19:38:58", 7.44036, -33.25487], + ["2019-07-27T20:38:58", 7.40899, -33.24929], + ["2019-07-27T21:38:58", 7.37698, -33.24594], + ["2019-07-27T22:38:29", 7.3465, -33.24338], + ["2019-07-27T23:38:00", 7.31902, -33.24414], + ["2019-07-28T04:35:57", 7.23827, -33.24008], + ["2019-07-28T05:35:40", 7.23178, -33.23859], + ["2019-07-28T06:35:28", 7.22454, -33.23828], + ["2019-07-28T07:34:56", 7.2184, -33.23953], + ["2019-07-28T08:34:56", 7.21356, -33.24048], + ["2019-07-28T09:34:30", 7.21143, -33.24097], + ["2019-07-28T10:34:28", 7.20285, -33.24393], + ["2019-07-28T11:33:26", 7.19508, -33.24436], + ["2019-07-28T12:33:26", 7.19053, -33.24496], + ["2019-07-28T13:32:57", 7.19127, -33.24686], + ["2019-07-28T14:32:29", 7.19602, -33.24701], + ["2019-07-28T16:31:26", 7.21109, -33.23889], + ["2019-07-28T17:31:26", 7.22336, -33.23383], + ["2019-07-28T18:31:26", 7.23842, -33.22842], + ["2019-07-28T19:30:56", 7.25502, -33.21986], + ["2019-07-28T20:30:56", 7.26922, -33.21497], + ["2019-07-28T21:30:10", 7.28261, -33.21093], + ["2019-07-28T22:30:10", 7.29523, -33.20767], + ["2019-07-28T23:29:27", 7.30989, -33.20378], + ["2019-07-29T00:29:27", 7.32482, -33.1976], + ["2019-07-29T01:29:16", 7.33979, -33.18942], + ["2019-07-29T02:28:27", 7.35414, -33.17323], + ["2019-07-29T03:28:27", 7.36676, -33.15546], + ["2019-07-29T04:28:10", 7.38312, -33.13589], + ["2019-07-29T05:27:57", 7.4023, -33.11487], + ["2019-07-29T06:28:10", 7.42221, -33.09402], + ["2019-07-29T07:26:56", 7.44348, -33.07401], + ["2019-07-29T08:26:56", 7.46253, -33.05315], + ["2019-07-29T09:26:56", 7.47596, -33.03101], + ["2019-07-29T10:26:28", 7.49255, -33.01062], + ["2019-07-29T11:25:25", 7.51208, -32.98961], + ["2019-07-29T12:25:25", 7.53251, -32.96609], + ["2019-07-29T16:24:08", 7.61246, -32.86252], + ["2019-07-29T17:23:57", 7.63064, -32.83527], + ["2019-07-29T18:23:27", 7.64681, -32.80661], + ["2019-07-29T19:23:27", 7.66213, -32.77478], + ["2019-07-29T20:22:26", 7.67534, -32.74432], + ["2019-07-29T21:21:56", 7.68974, -32.70956], + ["2019-07-29T22:21:00", 7.70236, -32.6764], + ["2019-07-29T23:21:00", 7.7139, -32.64473], + ["2019-07-30T00:21:00", 7.72343, -32.61237], + ["2019-07-30T01:20:33", 7.72917, -32.57799], + ["2019-07-30T02:20:33", 7.73247, -32.54349], + ["2019-07-30T03:20:09", 7.73438, -32.50916], + ["2019-07-30T07:18:58", 7.72605, -32.37775], + ["2019-07-30T08:17:56", 7.71704, -32.33996], + ["2019-07-30T09:17:56", 7.70768, -32.30297], + ["2019-07-30T10:17:56", 7.69729, -32.2695], + ["2019-07-30T11:17:25", 7.68634, -32.23956], + ["2019-07-30T13:15:55", 7.66919, -32.1862], + ["2019-07-30T14:15:55", 7.65644, -32.15976], + ["2019-07-30T15:15:55", 7.64322, -32.13187], + ["2019-07-30T16:15:37", 7.62953, -32.10175], + ["2019-07-30T17:14:55", 7.61539, -32.0728], + ["2019-07-30T18:14:55", 7.60119, -32.04276], + ["2019-07-30T19:14:38", 7.5845, -32.01419], + ["2019-07-30T20:13:35", 7.56387, -31.98542], + ["2019-07-30T21:13:35", 7.54331, -31.95735], + ["2019-07-30T22:13:35", 7.52009, -31.93134], + ["2019-07-30T23:12:57", 7.49643, -31.90817], + ["2019-07-31T00:12:28", 7.47314, -31.88666], + ["2019-07-31T06:10:57", 7.36648, -31.80307], + ["2019-07-31T07:09:42", 7.35722, -31.79086], + ["2019-07-31T08:09:29", 7.3447, -31.77826], + ["2019-07-31T13:07:28", 7.28598, -31.7244], + ["2019-07-31T16:05:58", 7.26522, -31.71706], + ["2019-07-31T17:06:58", 7.2623, -31.71344], + ["2019-07-31T18:05:58", 7.25956, -31.70779], + ["2019-07-31T19:05:28", 7.25474, -31.70358], + ["2019-07-31T20:04:10", 7.24914, -31.6954], + ["2019-07-31T21:04:10", 7.24429, -31.68647], + ["2019-07-31T22:04:10", 7.23991, -31.67694], + ["2019-08-01T01:04:55", 7.23101, -31.65879], + ["2019-08-01T02:04:55", 7.22869, -31.6581], + ["2019-08-01T03:04:55", 7.22753, -31.6575], + ["2019-08-01T04:01:22", 7.22883, -31.65469], + ["2019-08-01T05:02:57", 7.22924, -31.65323], + ["2019-08-01T12:00:00", 7.26232, -31.62442], + ["2019-08-01T12:58:37", 7.27112, -31.62186], + ["2019-08-01T13:58:37", 7.27987, -31.61911], + ["2019-08-01T16:56:20", 7.30403, -31.60662], + ["2019-08-01T17:56:20", 7.31008, -31.60078], + ["2019-08-01T18:56:20", 7.31849, -31.5946], + ["2019-08-01T19:55:56", 7.32746, -31.58826], + ["2019-08-01T20:57:38", 7.33885, -31.58197], + ["2019-08-01T21:57:38", 7.35263, -31.57716], + ["2019-08-01T22:57:38", 7.36821, -31.57004], + ["2019-08-01T23:53:27", 7.38239, -31.56226], + ["2019-08-02T00:53:28", 7.39545, -31.55164], + ["2019-08-02T01:53:10", 7.40522, -31.54187], + ["2019-08-02T02:52:56", 7.41133, -31.5325], + ["2019-08-02T03:52:29", 7.41467, -31.52405], + ["2019-08-02T08:50:28", 7.42645, -31.48068], + ["2019-08-02T09:50:30", 7.42712, -31.47174], + ["2019-08-02T10:50:05", 7.42715, -31.46176], + ["2019-08-02T12:48:58", 7.4207, -31.4447], + ["2019-08-02T13:49:45", 7.41232, -31.43844], + ["2019-08-02T14:49:45", 7.40219, -31.43192], + ["2019-08-02T15:48:29", 7.39351, -31.42496], + ["2019-08-02T21:45:56", 7.34279, -31.38263], + ["2019-08-02T22:45:29", 7.33405, -31.37411], + ["2019-08-02T23:44:57", 7.32471, -31.3653] + ], + "drifter_7": [ + ["2019-07-25T11:14:00", 6.73472, -37.09499], + ["2019-07-25T14:55:32", 6.79446, -37.05554], + ["2019-07-25T15:55:58", 6.81744, -37.0412], + ["2019-07-26T03:54:11", 7.01507, -36.81375], + ["2019-07-26T04:50:19", 7.02369, -36.79694], + ["2019-07-26T11:50:28", 7.07576, -36.67075], + ["2019-07-26T12:47:57", 7.07802, -36.65671], + ["2019-07-26T13:47:05", 7.08175, -36.64059], + ["2019-07-26T14:47:05", 7.08587, -36.62772], + ["2019-07-26T15:46:05", 7.09132, -36.6134], + ["2019-07-26T16:46:05", 7.09694, -36.60138], + ["2019-07-26T17:48:28", 7.10118, -36.58948], + ["2019-07-26T18:46:30", 7.10275, -36.57935], + ["2019-07-26T19:46:30", 7.10322, -36.56802], + ["2019-07-27T07:40:29", 7.11624, -36.4516], + ["2019-07-27T08:39:57", 7.11318, -36.44208], + ["2019-07-27T09:39:57", 7.11005, -36.43521], + ["2019-07-27T10:40:30", 7.10428, -36.42892], + ["2019-07-27T11:40:57", 7.09936, -36.42273], + ["2019-07-27T13:40:27", 7.0929, -36.41251], + ["2019-07-27T14:38:00", 7.09015, -36.40817], + ["2019-07-27T15:38:00", 7.08792, -36.40405], + ["2019-07-27T16:37:58", 7.08673, -36.40143], + ["2019-07-27T17:36:57", 7.08534, -36.39905], + ["2019-07-27T18:36:25", 7.08352, -36.39511], + ["2019-07-27T22:34:54", 7.06151, -36.38364], + ["2019-07-27T23:34:00", 7.05183, -36.38174], + ["2019-07-28T00:34:03", 7.04488, -36.37915], + ["2019-07-28T01:33:11", 7.03936, -36.3739], + ["2019-07-28T02:32:59", 7.03222, -36.37006], + ["2019-07-28T05:31:00", 7.01252, -36.36746], + ["2019-07-28T06:31:00", 7.0066, -36.37124], + ["2019-07-28T07:31:00", 7.00046, -36.37399], + ["2019-07-28T08:30:56", 6.99691, -36.3793], + ["2019-07-28T09:31:28", 6.99867, -36.38586], + ["2019-07-28T13:31:30", 7.01027, -36.40274], + ["2019-07-28T16:28:58", 7.02707, -36.4072], + ["2019-07-28T17:27:05", 7.03688, -36.40948], + ["2019-07-29T00:24:06", 7.13221, -36.37692], + ["2019-07-29T02:22:22", 7.15639, -36.35976], + ["2019-07-29T03:22:22", 7.17141, -36.34963], + ["2019-07-29T04:22:22", 7.18549, -36.34036], + ["2019-07-29T08:21:00", 7.24077, -36.29483], + ["2019-07-29T09:20:34", 7.24984, -36.28143], + ["2019-07-29T10:21:28", 7.26072, -36.26816], + ["2019-07-29T11:19:24", 7.27317, -36.25421], + ["2019-07-29T12:19:30", 7.28942, -36.23978], + ["2019-07-29T13:21:36", 7.30791, -36.22327], + ["2019-07-29T14:17:52", 7.32451, -36.20966], + ["2019-07-29T22:15:04", 7.47192, -36.05472], + ["2019-07-30T03:14:08", 7.47871, -35.92654], + ["2019-07-30T04:14:29", 7.47548, -35.90573], + ["2019-07-30T07:10:01", 7.46976, -35.8395], + ["2019-07-30T08:10:01", 7.4698, -35.8177], + ["2019-07-30T09:10:01", 7.47006, -35.79727], + ["2019-07-30T14:07:59", 7.44857, -35.68326], + ["2019-07-30T18:08:40", 7.37691, -35.59573], + ["2019-07-30T19:06:09", 7.36092, -35.57516], + ["2019-07-30T20:08:28", 7.3403, -35.55389], + ["2019-07-31T00:07:45", 7.26148, -35.4837], + ["2019-07-31T01:05:08", 7.23839, -35.4733], + ["2019-07-31T02:04:27", 7.21432, -35.46692], + ["2019-07-31T04:03:41", 7.17158, -35.45746], + ["2019-07-31T09:00:50", 7.0759, -35.45676], + ["2019-07-31T10:03:59", 7.06337, -35.45935], + ["2019-07-31T12:02:28", 7.03311, -35.46442], + ["2019-07-31T13:00:16", 7.02092, -35.46645], + ["2019-07-31T14:00:16", 7.00989, -35.46808], + ["2019-07-31T15:00:16", 7.00105, -35.46902], + ["2019-07-31T15:58:01", 6.99656, -35.47263], + ["2019-07-31T18:57:32", 6.99183, -35.48877], + ["2019-07-31T19:55:37", 6.99218, -35.4928], + ["2019-07-31T20:55:37", 6.99634, -35.49323], + ["2019-07-31T21:55:37", 7.00295, -35.49426], + ["2019-07-31T22:55:00", 7.00869, -35.49477], + ["2019-07-31T23:55:00", 7.01388, -35.49554], + ["2019-08-01T00:54:28", 7.01951, -35.49341], + ["2019-08-01T01:53:29", 7.02817, -35.48971], + ["2019-08-01T02:53:29", 7.03701, -35.48611], + ["2019-08-01T06:52:00", 7.07403, -35.47562], + ["2019-08-01T07:52:05", 7.08283, -35.47308], + ["2019-08-01T11:49:02", 7.1327, -35.44977], + ["2019-08-01T13:48:39", 7.15811, -35.42719], + ["2019-08-01T14:48:57", 7.16976, -35.4151], + ["2019-08-01T15:47:29", 7.18218, -35.40414], + ["2019-08-01T16:47:29", 7.19767, -35.39581], + ["2019-08-01T17:47:29", 7.21278, -35.38568], + ["2019-08-01T18:46:02", 7.22834, -35.37414], + ["2019-08-01T19:46:02", 7.24276, -35.36195], + ["2019-08-01T20:46:02", 7.25718, -35.34985], + ["2019-08-01T21:45:38", 7.27232, -35.33765], + ["2019-08-01T22:45:25", 7.28872, -35.32321], + ["2019-08-02T01:43:09", 7.33295, -35.2815], + ["2019-08-02T02:43:09", 7.33909, -35.26493], + ["2019-08-02T03:43:09", 7.34377, -35.24802], + ["2019-08-02T04:42:56", 7.34662, -35.2309], + ["2019-08-02T05:42:58", 7.34893, -35.21341], + ["2019-08-02T06:42:27", 7.351, -35.19818], + ["2019-08-02T07:41:27", 7.35582, -35.18628], + ["2019-08-02T08:41:27", 7.36045, -35.17529], + ["2019-08-02T09:41:27", 7.36433, -35.16519], + ["2019-08-02T10:40:27", 7.36887, -35.15273], + ["2019-08-02T11:40:27", 7.37269, -35.13968], + ["2019-08-02T12:39:57", 7.37415, -35.12781], + ["2019-08-02T13:39:36", 7.36966, -35.11847], + ["2019-08-02T14:38:56", 7.35934, -35.11266], + ["2019-08-02T15:38:56", 7.35153, -35.1088], + ["2019-08-02T16:37:56", 7.34296, -35.10765], + ["2019-08-02T17:37:56", 7.33348, -35.10602], + ["2019-08-02T18:37:27", 7.32527, -35.10272], + ["2019-08-02T19:36:57", 7.31789, -35.0983], + ["2019-08-02T20:36:54", 7.31228, -35.09305], + ["2019-08-02T21:36:26", 7.31141, -35.08899], + ["2019-08-02T22:35:59", 7.31398, -35.08408], + ["2019-08-02T23:35:59", 7.31754, -35.0791], + ["2019-08-03T00:34:56", 7.32005, -35.07459], + ["2019-08-03T01:34:56", 7.3182, -35.0703], + ["2019-08-03T02:34:56", 7.31138, -35.06403], + ["2019-08-03T03:34:36", 7.29987, -35.05872], + ["2019-08-03T04:34:28", 7.28701, -35.05322], + ["2019-08-03T05:33:56", 7.27446, -35.0473], + ["2019-08-03T06:33:30", 7.25948, -35.04181], + ["2019-08-03T07:32:58", 7.24515, -35.0368], + ["2019-08-03T08:32:57", 7.23385, -35.03351], + ["2019-08-03T09:32:02", 7.22545, -35.03152], + ["2019-08-03T10:31:29", 7.21771, -35.02808], + ["2019-08-03T11:31:08", 7.20733, -35.02264], + ["2019-08-03T12:30:56", 7.19636, -35.01706], + ["2019-08-03T13:30:28", 7.18468, -35.01151], + ["2019-08-03T14:30:28", 7.17185, -35.0067], + ["2019-08-03T15:30:28", 7.15842, -35.00327], + ["2019-08-03T16:29:38", 7.14218, -35.00024], + ["2019-08-03T17:29:26", 7.12467, -34.99768], + ["2019-08-03T18:28:54", 7.10943, -34.99545], + ["2019-08-03T19:28:28", 7.0976, -34.99246], + ["2019-08-03T20:27:56", 7.08699, -34.98795], + ["2019-08-03T22:26:58", 7.06443, -34.9754], + ["2019-08-03T23:26:38", 7.05804, -34.97074], + ["2019-08-04T00:26:38", 7.05366, -34.96808], + ["2019-08-04T06:26:28", 7.09466, -34.9252], + ["2019-08-04T07:22:54", 7.10384, -34.91633], + ["2019-08-04T08:22:54", 7.11199, -34.90895], + ["2019-08-04T09:22:54", 7.1201, -34.90097], + ["2019-08-04T11:23:30", 7.13354, -34.87858], + ["2019-08-04T12:23:30", 7.14054, -34.86399], + ["2019-08-04T13:23:30", 7.14809, -34.84897], + ["2019-08-04T14:21:13", 7.15613, -34.83389], + ["2019-08-04T20:18:31", 7.20512, -34.74509], + ["2019-08-04T22:20:56", 7.21579, -34.70926], + ["2019-08-04T23:17:35", 7.22113, -34.69034], + ["2019-08-05T00:19:26", 7.22623, -34.66674], + ["2019-08-05T01:19:26", 7.22885, -34.64408], + ["2019-08-05T02:19:26", 7.2313, -34.62091], + ["2019-08-05T11:14:59", 7.17959, -34.42426], + ["2019-08-05T12:12:12", 7.17246, -34.40445], + ["2019-08-05T19:10:58", 7.1431, -34.26077], + ["2019-08-05T20:10:29", 7.12811, -34.24138], + ["2019-08-05T21:10:29", 7.11064, -34.22327], + ["2019-08-05T22:09:58", 7.09412, -34.20709], + ["2019-08-06T02:06:44", 7.03894, -34.1532], + ["2019-08-06T04:08:57", 7.02738, -34.13281], + ["2019-08-06T05:05:45", 7.02339, -34.12402], + ["2019-08-06T06:08:29", 7.01719, -34.10039], + ["2019-08-06T08:08:29", 7.0132, -34.09164], + ["2019-08-06T10:04:31", 7.0139, -34.07378], + ["2019-08-06T11:04:31", 7.01214, -34.06537], + ["2019-08-06T16:02:41", 6.97439, -34.01013], + ["2019-08-06T17:02:28", 6.96359, -34.00092], + ["2019-08-06T18:01:57", 6.95248, -33.99457], + ["2019-08-06T19:00:56", 6.94175, -33.98715], + ["2019-08-06T20:00:56", 6.93257, -33.98114], + ["2019-08-06T20:59:42", 6.9254, -33.97351], + ["2019-08-06T22:00:49", 6.91737, -33.96609], + ["2019-08-06T22:59:42", 6.91115, -33.95935], + ["2019-08-06T23:59:01", 6.90507, -33.95205], + ["2019-08-07T00:59:01", 6.89786, -33.94553], + ["2019-08-07T01:58:28", 6.89187, -33.93719], + ["2019-08-07T02:57:39", 6.88612, -33.92688], + ["2019-08-07T03:57:28", 6.88183, -33.91507], + ["2019-08-07T04:56:30", 6.87976, -33.90313], + ["2019-08-07T05:56:30", 6.8792, -33.89257], + ["2019-08-07T06:56:30", 6.8762, -33.88416], + ["2019-08-07T07:55:57", 6.87492, -33.87422], + ["2019-08-07T08:55:57", 6.87449, -33.86478], + ["2019-08-07T11:54:27", 6.87201, -33.83279], + ["2019-08-07T12:53:27", 6.87367, -33.81965], + ["2019-08-07T13:53:27", 6.87586, -33.80557], + ["2019-08-07T14:52:58", 6.87814, -33.79002], + ["2019-08-07T15:52:58", 6.88213, -33.77148], + ["2019-08-07T16:52:28", 6.88686, -33.75232], + ["2019-08-07T20:50:56", 6.89881, -33.70715], + ["2019-08-07T21:50:29", 6.90337, -33.69681], + ["2019-08-07T22:50:16", 6.90746, -33.68463], + ["2019-08-07T23:49:25", 6.91479, -33.67209], + ["2019-08-08T00:49:25", 6.92552, -33.65784], + ["2019-08-08T01:48:00", 6.93351, -33.64823], + ["2019-08-08T02:48:00", 6.94154, -33.63905], + ["2019-08-08T03:48:00", 6.95094, -33.62927], + ["2019-08-08T04:47:35", 6.95894, -33.61856], + ["2019-08-08T05:47:26", 6.96812, -33.60675], + ["2019-08-08T06:46:55", 6.97897, -33.59593], + ["2019-08-08T07:46:55", 6.99279, -33.5834], + ["2019-08-08T09:46:10", 7.02025, -33.56519], + ["2019-08-08T10:45:37", 7.03361, -33.55796], + ["2019-08-08T11:45:37", 7.04357, -33.55084], + ["2019-08-08T15:44:29", 7.09818, -33.49582], + ["2019-08-08T16:43:47", 7.1185, -33.47491], + ["2019-08-08T17:43:47", 7.14017, -33.45534], + ["2019-08-08T18:43:47", 7.15892, -33.43826], + ["2019-08-08T19:42:42", 7.17692, -33.42026], + ["2019-08-08T20:42:25", 7.19322, -33.40305], + ["2019-08-08T21:41:20", 7.20839, -33.38549], + ["2019-08-08T22:41:20", 7.22114, -33.36566], + ["2019-08-09T00:39:20", 7.24072, -33.33061], + ["2019-08-09T01:39:58", 7.25126, -33.31384], + ["2019-08-09T02:39:20", 7.26038, -33.29388], + ["2019-08-09T03:38:39", 7.27191, -33.27271], + ["2019-08-09T04:38:27", 7.28406, -33.24924], + ["2019-08-09T05:37:58", 7.29789, -33.22464], + ["2019-08-09T07:37:28", 7.32598, -33.17151], + ["2019-08-09T08:35:37", 7.33756, -33.14618], + ["2019-08-09T09:35:37", 7.34932, -33.12112], + ["2019-08-09T10:35:37", 7.36099, -33.09546], + ["2019-08-09T11:35:25", 7.37083, -33.07135], + ["2019-08-09T12:34:25", 7.37919, -33.04762], + ["2019-08-09T13:34:25", 7.38683, -33.02359], + ["2019-08-09T14:33:28", 7.39552, -32.99983], + ["2019-08-09T15:33:28", 7.4026, -32.97751], + ["2019-08-09T16:32:38", 7.40733, -32.95653], + ["2019-08-09T17:32:38", 7.41149, -32.9361], + ["2019-08-09T18:31:58", 7.41459, -32.91501], + ["2019-08-09T19:31:41", 7.41386, -32.89438], + ["2019-08-09T20:31:07", 7.41088, -32.87634], + ["2019-08-10T00:29:57", 7.38788, -32.79144], + ["2019-08-10T01:29:56", 7.38304, -32.76999], + ["2019-08-10T02:29:30", 7.37496, -32.75266], + ["2019-08-10T03:28:56", 7.36644, -32.73534], + ["2019-08-10T04:28:56", 7.35653, -32.71774], + ["2019-08-10T05:28:57", 7.34743, -32.70165], + ["2019-08-10T06:28:57", 7.3376, -32.68723], + ["2019-08-10T07:28:25", 7.32696, -32.67621], + ["2019-08-10T08:27:55", 7.31553, -32.6665], + ["2019-08-10T09:27:26", 7.30418, -32.66074], + ["2019-08-10T10:27:26", 7.29422, -32.65732], + ["2019-08-10T15:24:56", 7.26232, -32.6431], + ["2019-08-10T16:24:28", 7.25614, -32.63901], + ["2019-08-10T17:24:08", 7.24995, -32.63693], + ["2019-08-10T21:22:57", 7.22445, -32.63879], + ["2019-08-10T22:22:10", 7.22451, -32.63956], + ["2019-08-10T23:20:57", 7.22516, -32.64344], + ["2019-08-11T00:21:28", 7.23112, -32.64273], + ["2019-08-11T01:20:57", 7.23375, -32.64438], + ["2019-08-11T02:20:07", 7.23594, -32.6466], + ["2019-08-11T03:20:07", 7.24015, -32.64832], + ["2019-08-11T06:00:57", 7.25886, -32.64426], + ["2019-08-11T07:00:10", 7.26486, -32.64429], + ["2019-08-11T12:25:57", 7.3145, -32.65701], + ["2019-08-11T14:24:26", 7.33182, -32.64695], + ["2019-08-11T15:24:26", 7.34225, -32.63914], + ["2019-08-11T16:24:26", 7.34834, -32.63416], + ["2019-08-11T17:23:55", 7.35739, -32.62531], + ["2019-08-11T18:23:27", 7.36341, -32.61459], + ["2019-08-11T19:22:37", 7.37174, -32.60559], + ["2019-08-11T20:22:26", 7.3829, -32.5979], + ["2019-08-11T21:20:58", 7.39503, -32.58949], + ["2019-08-11T22:20:58", 7.40623, -32.58211], + ["2019-08-11T23:20:58", 7.41739, -32.57507], + ["2019-08-12T00:20:33", 7.42687, -32.56662], + ["2019-08-12T01:19:54", 7.43553, -32.55838], + ["2019-08-12T02:19:31", 7.44516, -32.54764], + ["2019-08-12T03:18:58", 7.45567, -32.53586], + ["2019-08-12T04:17:58", 7.46763, -32.52426], + ["2019-08-12T05:17:58", 7.47694, -32.51362], + ["2019-08-12T06:17:58", 7.48381, -32.50323], + ["2019-08-12T08:16:35", 7.48785, -32.49135], + ["2019-08-12T09:16:35", 7.49004, -32.47882], + ["2019-08-12T10:16:35", 7.48661, -32.45367], + ["2019-08-12T11:15:57", 7.48896, -32.4438], + ["2019-08-12T12:15:57", 7.49746, -32.4426], + ["2019-08-12T13:14:55", 7.50725, -32.44147], + ["2019-08-12T14:14:55", 7.5124, -32.44001], + ["2019-08-12T15:14:55", 7.5206, -32.43735], + ["2019-08-12T16:13:25", 7.53462, -32.43572], + ["2019-08-12T17:13:25", 7.549, -32.43289], + ["2019-08-12T18:13:25", 7.56183, -32.42517] + ], + "drifter_8": [ + ["2019-07-25T11:14:00", 6.73472, -37.09499], + ["2019-07-25T16:43:26", 6.83607, -37.0278], + ["2019-07-25T17:39:47", 6.85723, -37.01182], + ["2019-07-25T18:39:47", 6.87877, -36.99216], + ["2019-07-25T19:39:47", 6.89971, -36.96899], + ["2019-07-26T02:40:30", 7.00104, -36.8349], + ["2019-07-26T03:36:35", 7.01152, -36.81781], + ["2019-07-26T08:36:11", 7.05783, -36.72653], + ["2019-07-26T10:35:30", 7.07389, -36.69009], + ["2019-07-26T12:33:58", 7.0767, -36.65945], + ["2019-07-26T16:31:29", 7.09494, -36.60312], + ["2019-07-26T23:31:18", 7.09832, -36.53531], + ["2019-07-27T01:28:04", 7.10417, -36.51566], + ["2019-07-27T08:26:36", 7.11367, -36.44321], + ["2019-07-27T13:22:10", 7.09235, -36.41196], + ["2019-07-27T14:21:58", 7.0894, -36.40784], + ["2019-07-27T15:21:58", 7.08683, -36.40295], + ["2019-07-27T16:21:26", 7.08536, -36.39926], + ["2019-07-27T17:20:38", 7.08424, -36.39737], + ["2019-07-27T18:20:10", 7.08298, -36.39334], + ["2019-07-27T22:19:00", 7.06332, -36.38046], + ["2019-07-27T23:18:08", 7.05504, -36.37772], + ["2019-07-28T04:15:56", 7.01903, -36.36526], + ["2019-07-28T05:14:59", 7.01419, -36.36454], + ["2019-07-28T06:14:59", 7.00934, -36.36737], + ["2019-07-28T07:15:01", 7.004, -36.37021], + ["2019-07-28T08:15:13", 6.99987, -36.37375], + ["2019-07-28T13:13:30", 7.01368, -36.39658], + ["2019-07-28T14:12:16", 7.01754, -36.39618], + ["2019-07-28T21:08:28", 7.09361, -36.39819], + ["2019-07-29T00:08:57", 7.13324, -36.37375], + ["2019-07-29T04:07:56", 7.18551, -36.33762], + ["2019-07-29T05:06:28", 7.19975, -36.32489], + ["2019-07-29T08:05:59", 7.24027, -36.29037], + ["2019-07-29T09:05:59", 7.25014, -36.2787], + ["2019-07-29T10:05:59", 7.25958, -36.2666], + ["2019-07-29T14:03:30", 7.3205, -36.20819], + ["2019-07-29T15:01:45", 7.33868, -36.19451], + ["2019-07-29T16:01:45", 7.35769, -36.1776], + ["2019-07-29T17:01:45", 7.37456, -36.16052], + ["2019-07-30T00:59:27", 7.47922, -35.97729], + ["2019-07-30T08:56:27", 7.464, -35.79739], + ["2019-07-30T09:54:57", 7.4646, -35.77536], + ["2019-07-30T14:53:27", 7.432, -35.66132], + ["2019-07-30T15:52:55", 7.41393, -35.63846], + ["2019-07-30T16:52:28", 7.39388, -35.61658], + ["2019-07-30T17:52:29", 7.37513, -35.59589], + ["2019-07-30T18:51:27", 7.35742, -35.57339], + ["2019-07-30T19:51:27", 7.33927, -35.55356], + ["2019-07-30T20:51:27", 7.31936, -35.53287], + ["2019-07-30T21:50:56", 7.30221, -35.51334], + ["2019-07-30T22:50:28", 7.28393, -35.49626], + ["2019-07-30T23:50:28", 7.26221, -35.48038], + ["2019-07-31T00:50:27", 7.23834, -35.46872], + ["2019-07-31T01:49:24", 7.21531, -35.46021], + ["2019-07-31T02:48:58", 7.19271, -35.45594], + ["2019-07-31T03:48:58", 7.17211, -35.45105], + ["2019-07-31T04:46:56", 7.15304, -35.44825], + ["2019-07-31T05:46:56", 7.13454, -35.44662], + ["2019-07-31T06:47:28", 7.11174, -35.4462], + ["2019-07-31T07:48:00", 7.08951, -35.44824], + ["2019-07-31T12:44:26", 7.01825, -35.45862], + ["2019-07-31T13:44:27", 7.00693, -35.46094], + ["2019-07-31T14:43:56", 6.9963, -35.4625], + ["2019-07-31T15:43:56", 6.99115, -35.46671], + ["2019-07-31T16:42:57", 6.98846, -35.47246], + ["2019-07-31T17:42:57", 6.98769, -35.48001], + ["2019-07-31T18:42:58", 6.98754, -35.48486], + ["2019-07-31T19:40:56", 6.98731, -35.49013], + ["2019-07-31T20:40:56", 6.99031, -35.4903], + ["2019-07-31T21:40:56", 6.99576, -35.49133], + ["2019-07-31T22:40:27", 7.00171, -35.49109], + ["2019-08-01T03:38:56", 7.03615, -35.47839], + ["2019-08-01T04:38:28", 7.04757, -35.47531], + ["2019-08-01T05:37:58", 7.05672, -35.47153], + ["2019-08-01T06:37:58", 7.06346, -35.46878], + ["2019-08-01T07:37:56", 7.07133, -35.46594], + ["2019-08-01T08:37:25", 7.08007, -35.46237], + ["2019-08-01T09:36:53", 7.09195, -35.45688], + ["2019-08-01T11:35:26", 7.1211, -35.44323], + ["2019-08-01T12:35:56", 7.13467, -35.43179], + ["2019-08-01T13:35:26", 7.14741, -35.41989], + ["2019-08-01T19:33:27", 7.23016, -35.35425], + ["2019-08-01T20:32:56", 7.24294, -35.34192], + ["2019-08-02T00:31:27", 7.30145, -35.28812], + ["2019-08-02T01:30:08", 7.31312, -35.27353], + ["2019-08-02T02:30:08", 7.3208, -35.25662], + ["2019-08-02T03:29:36", 7.32502, -35.24033], + ["2019-08-02T04:29:26", 7.32852, -35.22403], + ["2019-08-02T06:27:39", 7.3332, -35.19364], + ["2019-08-02T07:27:39", 7.33741, -35.18171], + ["2019-08-02T08:27:39", 7.34093, -35.17038], + ["2019-08-02T09:27:26", 7.34245, -35.16016], + ["2019-08-02T10:26:58", 7.34554, -35.14737], + ["2019-08-02T11:26:26", 7.34889, -35.13416], + ["2019-08-02T13:24:27", 7.34829, -35.11337], + ["2019-08-02T14:24:55", 7.34276, -35.10663], + ["2019-08-02T15:24:27", 7.33202, -35.10187], + ["2019-08-02T16:23:58", 7.32405, -35.09933], + ["2019-08-02T17:23:58", 7.31444, -35.09641], + ["2019-08-02T18:23:56", 7.30379, -35.09219], + ["2019-08-02T19:23:07", 7.29716, -35.08725], + ["2019-08-02T23:21:26", 7.29407, -35.06747], + ["2019-08-03T00:20:57", 7.29426, -35.06165], + ["2019-08-03T06:18:06", 7.24392, -35.0209], + ["2019-08-03T07:17:25", 7.23031, -35.0159], + ["2019-08-03T08:17:25", 7.21859, -35.01358], + ["2019-08-03T09:16:56", 7.20946, -35.01196], + ["2019-08-03T10:16:27", 7.20082, -35.00867], + ["2019-08-03T11:16:06", 7.19112, -35.00452], + ["2019-08-03T12:15:08", 7.18095, -34.999], + ["2019-08-03T13:15:08", 7.17048, -34.99376], + ["2019-08-03T14:15:08", 7.15906, -34.98904], + ["2019-08-03T15:15:26", 7.14634, -34.98544], + ["2019-08-03T16:14:23", 7.1335, -34.98249], + ["2019-08-03T17:14:23", 7.11805, -34.97949], + ["2019-08-03T18:13:54", 7.1024, -34.97571], + ["2019-08-03T19:12:58", 7.0906, -34.97254], + ["2019-08-03T20:12:58", 7.07897, -34.96713], + ["2019-08-03T21:12:25", 7.06759, -34.96048], + ["2019-08-03T22:11:56", 7.05685, -34.95424], + ["2019-08-03T23:11:56", 7.04818, -34.94849], + ["2019-08-04T00:10:58", 7.04307, -34.94309], + ["2019-08-04T01:10:58", 7.04041, -34.93768], + ["2019-08-04T03:09:27", 7.05096, -34.92572], + ["2019-08-04T04:09:27", 7.0577, -34.91791], + ["2019-08-04T05:09:27", 7.06766, -34.9101], + ["2019-08-04T06:08:57", 7.07809, -34.9017], + ["2019-08-04T08:08:09", 7.09585, -34.8862], + ["2019-08-04T10:06:25", 7.11205, -34.86899], + ["2019-08-04T11:06:57", 7.11892, -34.85748], + ["2019-08-04T12:06:25", 7.12613, -34.8429], + ["2019-08-04T13:05:27", 7.1331, -34.82862], + ["2019-08-04T14:05:27", 7.14082, -34.81326], + ["2019-08-04T15:05:07", 7.14933, -34.79517], + ["2019-08-04T16:04:25", 7.15854, -34.77835], + ["2019-08-04T17:04:07", 7.17017, -34.76358], + ["2019-08-04T18:03:28", 7.18156, -34.74912], + ["2019-08-04T19:03:28", 7.18971, -34.73487], + ["2019-08-04T20:03:28", 7.19259, -34.71976], + ["2019-08-04T21:02:57", 7.19556, -34.70129], + ["2019-08-04T22:02:28", 7.20006, -34.68234], + ["2019-08-04T23:01:27", 7.20537, -34.66267], + ["2019-08-05T00:01:27", 7.21056, -34.64078], + ["2019-08-05T01:01:05", 7.21548, -34.61626], + ["2019-08-05T02:01:05", 7.219, -34.59283], + ["2019-08-05T03:00:25", 7.22147, -34.57071], + ["2019-08-05T03:59:55", 7.22453, -34.54733], + ["2019-08-05T04:59:36", 7.22639, -34.52216], + ["2019-08-05T05:59:24", 7.22403, -34.49561], + ["2019-08-05T06:59:27", 7.21629, -34.46829], + ["2019-08-05T07:58:56", 7.2067, -34.44293], + ["2019-08-05T08:57:26", 7.19691, -34.41976], + ["2019-08-05T09:57:26", 7.18687, -34.39968], + ["2019-08-05T10:57:26", 7.17678, -34.37814], + ["2019-08-05T11:56:57", 7.16566, -34.3558], + ["2019-08-05T15:54:25", 7.14986, -34.27377], + ["2019-08-05T16:54:25", 7.14986, -34.25532], + ["2019-08-05T17:54:25", 7.14621, -34.23489], + ["2019-08-05T18:53:54", 7.13791, -34.21341], + ["2019-08-05T19:53:27", 7.12438, -34.19421], + ["2019-08-05T20:53:27", 7.10902, -34.17584], + ["2019-08-06T01:51:27", 7.03409, -34.10913], + ["2019-08-06T02:51:04", 7.02515, -34.09964], + ["2019-08-06T12:46:26", 6.99302, -34.00848], + ["2019-08-06T13:46:30", 6.98559, -33.99664], + ["2019-08-06T14:45:32", 6.97537, -33.98682], + ["2019-08-06T15:45:32", 6.96662, -33.97772], + ["2019-08-06T16:46:26", 6.95701, -33.96991], + ["2019-08-06T17:44:13", 6.9478, -33.96497], + ["2019-08-06T22:43:31", 6.90879, -33.92862], + ["2019-08-06T23:42:31", 6.90418, -33.9205], + ["2019-08-07T06:39:26", 6.87317, -33.85287], + ["2019-08-07T07:38:56", 6.87084, -33.84238], + ["2019-08-07T08:38:12", 6.87002, -33.83264], + ["2019-08-07T09:37:41", 6.87182, -33.82095], + ["2019-08-07T11:35:56", 6.87733, -33.79272], + ["2019-08-07T12:35:56", 6.88372, -33.77521], + ["2019-08-07T13:35:56", 6.88827, -33.75925], + ["2019-08-07T14:35:25", 6.89235, -33.74588], + ["2019-08-07T17:34:27", 6.9121, -33.69327], + ["2019-08-07T18:32:55", 6.91828, -33.68145], + ["2019-08-07T19:32:55", 6.92403, -33.67218], + ["2019-08-07T20:31:57", 6.92739, -33.66137], + ["2019-08-07T21:31:57", 6.93112, -33.64987], + ["2019-08-07T22:31:24", 6.9341, -33.6376], + ["2019-08-07T23:30:56", 6.93995, -33.62619], + ["2019-08-08T00:30:26", 6.94875, -33.61672], + ["2019-08-08T01:30:27", 6.95956, -33.61002], + ["2019-08-08T02:30:26", 6.97016, -33.60376], + ["2019-08-08T03:28:37", 6.97649, -33.59808], + ["2019-08-08T04:28:37", 6.98233, -33.59173], + ["2019-08-08T05:28:37", 6.98782, -33.58426], + ["2019-08-08T06:28:25", 6.99446, -33.57568], + ["2019-08-08T07:27:55", 7.00543, -33.56696], + ["2019-08-08T08:26:57", 7.01783, -33.55837], + ["2019-08-08T09:26:57", 7.03032, -33.55099], + ["2019-08-08T10:26:57", 7.04348, -33.54361], + ["2019-08-08T11:25:55", 7.05394, -33.5376], + ["2019-08-08T12:25:55", 7.06227, -33.53116], + ["2019-08-08T13:25:25", 7.07395, -33.51932], + ["2019-08-08T15:24:26", 7.09969, -33.48651], + ["2019-08-08T17:22:57", 7.13935, -33.44585], + ["2019-08-08T18:22:57", 7.15935, -33.42851], + ["2019-08-08T19:22:57", 7.17622, -33.4104], + ["2019-08-08T20:22:25", 7.19197, -33.39377], + ["2019-08-08T21:22:06", 7.20674, -33.37686], + ["2019-08-08T22:20:55", 7.22186, -33.35673], + ["2019-08-08T23:20:55", 7.23448, -33.33699], + ["2019-08-09T00:20:55", 7.24508, -33.32111], + ["2019-08-09T01:20:27", 7.25571, -33.30612], + ["2019-08-09T02:19:28", 7.26489, -33.28748], + ["2019-08-09T03:19:28", 7.27575, -33.26688], + ["2019-08-09T04:18:57", 7.28739, -33.24423], + ["2019-08-09T05:18:37", 7.29937, -33.22055], + ["2019-08-09T06:18:09", 7.31452, -33.19485], + ["2019-08-09T10:15:57", 7.36434, -33.09305], + ["2019-08-09T11:15:27", 7.37559, -33.06897], + ["2019-08-09T13:13:24", 7.3936, -33.02297], + ["2019-08-09T14:13:24", 7.40017, -33.00048], + ["2019-08-09T15:13:24", 7.40686, -32.97937], + ["2019-08-09T16:12:08", 7.41354, -32.95834], + ["2019-08-09T17:12:08", 7.42032, -32.93877], + ["2019-08-09T18:12:08", 7.42427, -32.918], + ["2019-08-09T19:11:27", 7.42463, -32.89793], + ["2019-08-09T20:11:27", 7.42321, -32.87991], + ["2019-08-10T00:10:25", 7.40207, -32.7959], + ["2019-08-10T01:09:55", 7.39666, -32.77484], + ["2019-08-10T02:09:27", 7.38836, -32.75781], + ["2019-08-10T06:08:55", 7.34942, -32.69611], + ["2019-08-10T07:08:27", 7.33796, -32.68472], + ["2019-08-10T08:07:56", 7.32572, -32.67514], + ["2019-08-10T09:07:26", 7.31251, -32.66666], + ["2019-08-10T10:07:25", 7.30058, -32.66248], + ["2019-08-10T11:07:08", 7.29131, -32.65927], + ["2019-08-10T15:05:54", 7.26452, -32.64819], + ["2019-08-10T16:05:27", 7.25685, -32.64252], + ["2019-08-10T17:04:25", 7.25051, -32.63961], + ["2019-08-10T18:04:25", 7.24214, -32.63712], + ["2019-08-10T19:03:56", 7.23234, -32.63797], + ["2019-08-10T20:03:56", 7.22474, -32.64097], + ["2019-08-10T21:03:56", 7.22208, -32.64337], + ["2019-08-10T22:03:28", 7.22227, -32.64362], + ["2019-08-10T23:02:55", 7.22075, -32.64798], + ["2019-08-11T01:01:57", 7.22812, -32.65112], + ["2019-08-11T04:59:56", 7.24926, -32.65018], + ["2019-08-11T05:58:39", 7.25448, -32.64828], + ["2019-08-11T06:58:39", 7.26169, -32.64716], + ["2019-08-11T07:58:25", 7.26755, -32.64954], + ["2019-08-11T08:57:56", 7.27398, -32.65289], + ["2019-08-11T09:56:29", 7.28368, -32.65465], + ["2019-08-11T10:56:29", 7.29432, -32.65628], + ["2019-08-11T11:56:29", 7.30677, -32.65628], + ["2019-08-11T13:54:25", 7.32508, -32.64924], + ["2019-08-11T14:54:56", 7.33716, -32.63904], + ["2019-08-11T15:54:25", 7.34396, -32.63251], + ["2019-08-11T17:53:28", 7.35892, -32.61505], + ["2019-08-11T18:52:25", 7.36629, -32.6039], + ["2019-08-11T19:52:25", 7.37539, -32.59549], + ["2019-08-11T20:51:57", 7.38599, -32.58801], + ["2019-08-11T21:51:30", 7.39779, -32.5805], + ["2019-08-11T22:51:30", 7.40891, -32.57217], + ["2019-08-11T23:50:54", 7.41917, -32.56451], + ["2019-08-12T00:49:28", 7.4283, -32.55559], + ["2019-08-12T01:49:28", 7.43667, -32.54675], + ["2019-08-12T02:49:28", 7.44525, -32.53525], + ["2019-08-12T03:49:11", 7.45724, -32.5239], + ["2019-08-12T04:49:02", 7.46725, -32.51242], + ["2019-08-12T05:48:08", 7.47566, -32.50239], + ["2019-08-12T06:48:08", 7.48163, -32.49295], + ["2019-08-12T10:46:26", 7.47986, -32.44586], + ["2019-08-12T11:47:27", 7.48542, -32.43979], + ["2019-08-12T12:46:26", 7.49282, -32.43994], + ["2019-08-12T18:44:59", 7.56424, -32.41693], + ["2019-08-13T01:41:27", 7.62302, -32.35623], + ["2019-08-13T02:41:27", 7.6287, -32.35043], + ["2019-08-13T03:40:56", 7.63459, -32.34271], + ["2019-08-13T04:40:08", 7.64023, -32.33241], + ["2019-08-13T05:40:08", 7.64233, -32.32443], + ["2019-08-13T06:40:08", 7.6443, -32.31653], + ["2019-08-13T07:38:57", 7.64623, -32.30732], + ["2019-08-13T08:38:57", 7.65014, -32.30063], + ["2019-08-13T09:38:40", 7.65069, -32.29773], + ["2019-08-13T10:38:08", 7.65392, -32.29031], + ["2019-08-13T14:36:25", 7.67762, -32.26633], + ["2019-08-13T21:27:25", 7.72917, -32.21497], + ["2019-08-14T06:55:28", 7.79468, -32.14661], + ["2019-08-14T07:54:57", 7.8017, -32.14197], + ["2019-08-14T13:12:27", 7.86937, -32.09818], + ["2019-08-14T14:11:56", 7.88183, -32.08786] + ], + "drifter_10": [ + ["2019-07-26T11:13:00", 6.73059, -39.91316], + ["2019-07-26T11:50:58", 6.73905, -39.89841], + ["2019-07-26T16:47:43", 6.78698, -39.78897], + ["2019-07-28T11:39:01", 6.72848, -38.81662], + ["2019-07-28T12:36:11", 6.72056, -38.78894], + ["2019-07-28T13:35:50", 6.71321, -38.75726], + ["2019-07-28T14:35:50", 6.70913, -38.72894] + ], + "drifter_9": [ + ["2019-07-26T11:13:00", 6.73059, -39.91316], + ["2019-07-26T11:50:56", 6.73908, -39.89841], + ["2019-07-26T19:48:42", 6.81726, -39.71793], + ["2019-07-26T20:46:34", 6.82579, -39.69644], + ["2019-07-26T22:45:40", 6.84232, -39.65302] + ], + "drifter_11": [ + ["2019-07-28T21:48:00", 7.99583, -45.24221], + ["2019-07-28T22:08:11", 7.99453, -45.24432], + ["2019-07-28T23:05:26", 7.99602, -45.24887], + ["2019-07-29T04:04:30", 8.01408, -45.27454], + ["2019-07-29T05:04:10", 8.02051, -45.2785], + ["2019-07-29T06:04:05", 8.0268, -45.2822], + ["2019-07-29T12:59:19", 8.09897, -45.27985], + ["2019-07-29T14:59:00", 8.1294, -45.26044], + ["2019-07-29T15:59:00", 8.14605, -45.24902], + ["2019-07-29T20:58:25", 8.2135, -45.20206], + ["2019-07-29T21:56:23", 8.2257, -45.19705], + ["2019-07-30T02:56:01", 8.29524, -45.15045], + ["2019-07-30T03:56:25", 8.30629, -45.13699], + ["2019-07-30T04:54:04", 8.31789, -45.12421], + ["2019-07-30T05:54:10", 8.32526, -45.1094], + ["2019-07-30T06:54:10", 8.33178, -45.09524], + ["2019-07-30T07:54:10", 8.33752, -45.07816], + ["2019-07-30T08:52:58", 8.34103, -45.06177], + ["2019-07-30T09:53:58", 8.34413, -45.04512], + ["2019-07-30T10:53:58", 8.34847, -45.02881], + ["2019-07-30T15:50:59", 8.35436, -44.95294], + ["2019-07-30T16:51:57", 8.35642, -44.93484], + ["2019-07-30T17:49:27", 8.3553, -44.91739], + ["2019-07-30T18:49:27", 8.35389, -44.89825], + ["2019-07-30T19:48:37", 8.35347, -44.88049], + ["2019-07-30T20:48:56", 8.352, -44.86496], + ["2019-07-30T21:47:27", 8.35051, -44.85046], + ["2019-07-30T22:47:27", 8.34751, -44.83698], + ["2019-07-30T23:46:59", 8.34178, -44.82608], + ["2019-07-31T00:46:29", 8.33283, -44.81604], + ["2019-07-31T01:46:29", 8.32475, -44.80869], + ["2019-07-31T02:46:27", 8.32063, -44.80429], + ["2019-07-31T06:44:27", 8.30786, -44.79337], + ["2019-07-31T07:44:13", 8.30368, -44.79593], + ["2019-07-31T08:44:00", 8.29796, -44.79953], + ["2019-07-31T11:41:53", 8.29041, -44.81264], + ["2019-07-31T12:41:53", 8.29111, -44.81315], + ["2019-07-31T13:41:53", 8.29171, -44.81152], + ["2019-07-31T14:41:56", 8.28984, -44.81195], + ["2019-07-31T15:41:25", 8.28946, -44.81448], + ["2019-07-31T16:40:56", 8.28877, -44.81778], + ["2019-07-31T17:40:25", 8.28979, -44.82187], + ["2019-07-31T18:39:56", 8.29218, -44.828], + ["2019-07-31T19:38:31", 8.2959, -44.8332], + ["2019-07-31T20:38:31", 8.29801, -44.83886], + ["2019-07-31T21:38:31", 8.29827, -44.84607], + ["2019-07-31T22:38:36", 8.3018, -44.85403], + ["2019-07-31T23:37:58", 8.30788, -44.86011], + ["2019-08-01T00:37:58", 8.31269, -44.86432], + ["2019-08-01T02:35:58", 8.32252, -44.87219], + ["2019-08-01T03:35:58", 8.32231, -44.87571], + ["2019-08-01T04:35:58", 8.32114, -44.88077] + ], + "drifter_12": [ + ["2019-07-28T21:48:00", 7.99583, -45.24221], + ["2019-07-29T02:10:54", 8.00343, -45.2674], + ["2019-07-29T03:10:11", 8.0089, -45.27011], + ["2019-07-29T04:10:11", 8.01413, -45.27466], + ["2019-07-29T05:07:14", 8.02077, -45.27853], + ["2019-07-29T08:07:28", 8.04566, -45.28802], + ["2019-07-29T09:07:28", 8.05463, -45.28888], + ["2019-07-29T10:07:28", 8.06373, -45.28879], + ["2019-07-29T14:03:26", 8.11523, -45.27078], + ["2019-07-29T15:01:14", 8.13045, -45.25988], + ["2019-07-29T16:01:14", 8.1472, -45.24812], + ["2019-07-29T17:01:14", 8.16106, -45.23602], + ["2019-07-29T19:59:34", 8.20015, -45.20792], + ["2019-07-30T02:58:40", 8.29631, -45.15045], + ["2019-07-30T06:55:28", 8.33256, -45.09479], + ["2019-07-30T07:54:28", 8.33785, -45.0784], + ["2019-07-30T08:54:26", 8.34158, -45.06198], + ["2019-07-30T09:53:59", 8.34477, -45.04578], + ["2019-07-30T10:52:58", 8.34901, -45.02969], + ["2019-07-30T12:54:26", 8.35364, -44.99802], + ["2019-07-30T13:50:56", 8.3553, -44.9847], + ["2019-07-30T14:50:56", 8.35487, -44.96959], + ["2019-07-30T15:50:56", 8.35521, -44.95328], + ["2019-07-30T16:50:27", 8.35685, -44.93622], + ["2019-07-30T17:50:27", 8.35582, -44.91843], + ["2019-07-30T18:50:56", 8.35407, -44.89917], + ["2019-07-30T19:48:40", 8.35378, -44.8819], + ["2019-07-30T20:49:29", 8.35241, -44.8665], + ["2019-07-30T21:48:56", 8.35063, -44.85214], + ["2019-07-30T22:49:29", 8.34731, -44.83835], + ["2019-07-30T23:46:42", 8.34174, -44.82764], + ["2019-07-31T00:47:13", 8.33334, -44.81696], + ["2019-07-31T01:46:14", 8.3251, -44.80907], + ["2019-07-31T02:46:14", 8.32114, -44.80469], + ["2019-07-31T06:43:38", 8.30918, -44.79376], + ["2019-07-31T07:42:57", 8.30472, -44.79636], + ["2019-07-31T08:42:26", 8.29913, -44.80005], + ["2019-07-31T09:41:57", 8.29537, -44.80408], + ["2019-07-31T10:41:29", 8.29196, -44.80881], + ["2019-07-31T13:39:08", 8.29153, -44.81176], + ["2019-07-31T14:39:40", 8.2897, -44.81241], + ["2019-07-31T15:39:08", 8.28908, -44.81485], + ["2019-07-31T16:38:55", 8.28789, -44.81815], + ["2019-07-31T17:37:57", 8.28886, -44.82208], + ["2019-07-31T18:37:27", 8.29088, -44.8282], + ["2019-07-31T19:37:27", 8.2944, -44.83344], + ["2019-07-31T20:36:36", 8.29644, -44.83917], + ["2019-07-31T21:36:36", 8.297, -44.84595], + ["2019-07-31T22:36:26", 8.30045, -44.85406], + ["2019-07-31T23:35:38", 8.30646, -44.85983], + ["2019-08-01T00:35:28", 8.31119, -44.86392], + ["2019-08-01T01:34:27", 8.31622, -44.86777], + ["2019-08-01T02:34:09", 8.32102, -44.87167], + ["2019-08-01T03:32:57", 8.32077, -44.87516], + ["2019-08-01T04:32:57", 8.31931, -44.8804], + ["2019-08-01T05:32:28", 8.32108, -44.88658], + ["2019-08-01T06:32:28", 8.32571, -44.89224], + ["2019-08-01T07:31:37", 8.33224, -44.89713], + ["2019-08-01T08:31:25", 8.34002, -44.90024], + ["2019-08-01T10:30:57", 8.35365, -44.9111], + ["2019-08-01T11:29:56", 8.36129, -44.91733], + ["2019-08-01T12:29:56", 8.36884, -44.9248], + ["2019-08-01T13:28:56", 8.37594, -44.93173], + ["2019-08-01T14:28:29", 8.37923, -44.93927], + ["2019-08-01T18:26:55", 8.3825, -44.94794], + ["2019-08-01T19:25:09", 8.38263, -44.94659], + ["2019-08-01T20:25:09", 8.384, -44.94753], + ["2019-08-01T21:25:09", 8.38563, -44.9483], + ["2019-08-01T22:24:59", 8.3878, -44.94684], + ["2019-08-01T23:24:28", 8.39071, -44.94757], + ["2019-08-02T00:23:28", 8.39396, -44.94879], + ["2019-08-02T01:22:25", 8.39594, -44.94783], + ["2019-08-02T02:22:25", 8.39809, -44.94431], + ["2019-08-02T03:22:25", 8.39903, -44.94165], + ["2019-08-02T04:21:58", 8.39753, -44.9393], + ["2019-08-02T05:21:28", 8.39772, -44.93472], + ["2019-08-02T06:20:57", 8.40154, -44.93011], + ["2019-08-02T07:21:27", 8.40921, -44.92413], + ["2019-08-02T08:18:57", 8.42129, -44.91704], + ["2019-08-02T09:19:28", 8.43336, -44.91077], + ["2019-08-02T10:18:57", 8.44699, -44.90485], + ["2019-08-02T11:18:26", 8.46017, -44.89716], + ["2019-08-02T12:17:27", 8.47138, -44.88863], + ["2019-08-02T13:17:27", 8.48215, -44.88065], + ["2019-08-02T14:16:56", 8.49646, -44.87305], + ["2019-08-02T18:14:56", 8.52549, -44.83548], + ["2019-08-02T19:14:38", 8.53204, -44.82663], + ["2019-08-02T20:14:09", 8.53985, -44.81763], + ["2019-08-02T21:13:07", 8.54932, -44.81002], + ["2019-08-02T22:13:07", 8.55927, -44.80453], + ["2019-08-02T23:11:58", 8.57065, -44.79805], + ["2019-08-03T00:11:58", 8.58228, -44.79118], + ["2019-08-03T01:11:58", 8.59043, -44.78552], + ["2019-08-03T02:10:58", 8.59839, -44.78127], + ["2019-08-03T03:10:58", 8.60702, -44.77792], + ["2019-08-03T04:10:26", 8.61506, -44.77475], + ["2019-08-03T05:10:26", 8.62081, -44.77243], + ["2019-08-03T06:08:56", 8.62721, -44.77015], + ["2019-08-03T07:08:56", 8.63516, -44.76723], + ["2019-08-03T08:08:56", 8.64413, -44.7644], + ["2019-08-03T09:08:26", 8.65391, -44.76141], + ["2019-08-03T10:07:57", 8.66351, -44.75909], + ["2019-08-03T11:07:37", 8.67266, -44.75571], + ["2019-08-03T12:07:25", 8.68551, -44.75262], + ["2019-08-03T13:06:55", 8.70016, -44.74841], + ["2019-08-03T14:06:26", 8.71094, -44.74323], + ["2019-08-03T15:05:54", 8.71796, -44.73807], + ["2019-08-03T16:04:56", 8.72275, -44.73542], + ["2019-08-03T17:04:56", 8.72859, -44.73413], + ["2019-08-03T18:03:56", 8.73498, -44.73346], + ["2019-08-03T19:03:56", 8.74343, -44.73209], + ["2019-08-03T20:03:38", 8.75155, -44.72995], + ["2019-08-03T21:02:59", 8.75838, -44.72612], + ["2019-08-03T22:02:59", 8.76417, -44.72372], + ["2019-08-03T23:01:58", 8.7738, -44.72141], + ["2019-08-04T00:01:58", 8.78115, -44.71729], + ["2019-08-04T01:01:08", 8.78669, -44.71325], + ["2019-08-04T02:01:08", 8.79132, -44.70862], + ["2019-08-04T04:02:28", 8.79965, -44.69876], + ["2019-08-04T05:02:28", 8.80082, -44.6937], + ["2019-08-04T06:01:29", 8.80134, -44.68978], + ["2019-08-04T07:01:29", 8.79932, -44.68497], + ["2019-08-04T08:00:58", 8.79601, -44.68152], + ["2019-08-04T09:00:24", 8.79135, -44.68039], + ["2019-08-04T10:00:24", 8.78776, -44.68039], + ["2019-08-04T11:58:24", 8.78069, -44.68017], + ["2019-08-04T12:58:24", 8.77781, -44.68257], + ["2019-08-04T13:58:24", 8.77468, -44.68463], + ["2019-08-04T14:57:55", 8.77079, -44.68311], + ["2019-08-04T15:57:24", 8.7692, -44.67679], + ["2019-08-04T17:55:24", 8.76703, -44.66775], + ["2019-08-04T18:55:54", 8.76229, -44.66711], + ["2019-08-04T19:55:24", 8.75522, -44.67084], + ["2019-08-04T20:54:56", 8.75254, -44.67551], + ["2019-08-04T21:54:40", 8.75097, -44.68048], + ["2019-08-04T22:53:57", 8.74531, -44.68635], + ["2019-08-04T23:53:57", 8.74217, -44.68832], + ["2019-08-05T00:52:27", 8.74215, -44.68834], + ["2019-08-05T01:52:27", 8.73823, -44.69855], + ["2019-08-05T02:51:57", 8.73457, -44.70804], + ["2019-08-05T03:50:28", 8.73413, -44.71672], + ["2019-08-05T04:50:28", 8.73396, -44.72419], + ["2019-08-05T05:50:28", 8.73379, -44.73303], + ["2019-08-05T06:49:36", 8.73342, -44.74171], + ["2019-08-05T07:49:36", 8.73501, -44.74866], + ["2019-08-05T08:49:07", 8.73884, -44.75677], + ["2019-08-05T09:48:28", 8.74306, -44.7652], + ["2019-08-05T10:47:27", 8.74318, -44.77225], + ["2019-08-05T11:47:27", 8.74283, -44.78109], + ["2019-08-05T12:47:27", 8.74602, -44.79062], + ["2019-08-05T13:46:23", 8.74874, -44.80034], + ["2019-08-05T14:46:23", 8.75259, -44.81004], + ["2019-08-05T15:46:23", 8.76019, -44.81931], + ["2019-08-05T19:40:26", 8.77802, -44.8494], + ["2019-08-05T21:38:29", 8.78714, -44.86665], + ["2019-08-05T22:38:29", 8.79388, -44.87601], + ["2019-08-05T23:38:29", 8.80275, -44.88425], + ["2019-08-06T00:37:56", 8.81522, -44.89133], + ["2019-08-06T01:37:38", 8.82954, -44.89813], + ["2019-08-06T04:35:37", 8.86328, -44.90322], + ["2019-08-06T05:35:37", 8.87318, -44.90425], + ["2019-08-06T06:35:37", 8.88164, -44.90665], + ["2019-08-06T07:35:27", 8.89282, -44.90933], + ["2019-08-06T08:34:57", 8.90424, -44.90952], + ["2019-08-06T09:34:25", 8.91464, -44.90725], + ["2019-08-06T10:34:25", 8.92048, -44.90442], + ["2019-08-06T11:32:56", 8.92947, -44.90322], + ["2019-08-06T12:32:56", 8.93715, -44.90408], + ["2019-08-06T13:32:56", 8.94375, -44.90897], + ["2019-08-06T14:31:39", 8.95228, -44.91441], + ["2019-08-06T15:31:39", 8.96155, -44.91904], + ["2019-08-06T16:31:28", 8.96988, -44.92322], + ["2019-08-06T17:29:57", 8.98049, -44.92929], + ["2019-08-06T18:29:57", 8.99243, -44.93693], + ["2019-08-06T19:29:57", 9.00672, -44.94165], + ["2019-08-06T20:29:37", 9.01814, -44.94357], + ["2019-08-06T21:28:57", 9.02643, -44.94492], + ["2019-08-06T22:28:28", 9.0337, -44.94742], + ["2019-08-06T23:28:04", 9.04182, -44.95001], + ["2019-08-07T00:27:26", 9.05095, -44.95276], + ["2019-08-07T01:26:57", 9.06245, -44.95288], + ["2019-08-07T02:26:27", 9.0726, -44.95535], + ["2019-08-07T03:26:26", 9.08055, -44.95657], + ["2019-08-07T04:25:58", 9.08731, -44.95786], + ["2019-08-07T05:25:25", 9.09301, -44.95892], + ["2019-08-07T06:24:57", 9.09727, -44.95871], + ["2019-08-07T08:24:08", 9.10434, -44.95697], + ["2019-08-07T09:22:54", 9.10721, -44.95457], + ["2019-08-07T10:22:54", 9.10807, -44.95337], + ["2019-08-07T11:22:28", 9.10703, -44.95413], + ["2019-08-07T12:21:27", 9.10506, -44.95636], + ["2019-08-07T13:21:27", 9.10279, -44.95825], + ["2019-08-07T14:19:54", 9.10294, -44.96155], + ["2019-08-07T15:19:54", 9.09882, -44.9637], + ["2019-08-07T16:19:54", 9.09423, -44.96619], + ["2019-08-07T17:19:27", 9.08858, -44.96945], + ["2019-08-07T18:18:07", 9.08807, -44.97221], + ["2019-08-07T19:18:07", 9.08331, -44.9729], + ["2019-08-07T20:18:07", 9.07438, -44.97281], + ["2019-08-07T21:17:56", 9.06387, -44.97607], + ["2019-08-07T23:16:38", 9.04172, -44.98975], + ["2019-08-08T00:16:38", 9.03194, -44.9985], + ["2019-08-08T01:16:38", 9.0219, -45.00562], + ["2019-08-08T02:16:11", 9.00895, -45.01462], + ["2019-08-08T03:16:00", 8.99566, -45.02457], + ["2019-08-08T04:15:08", 8.98473, -45.03788], + ["2019-08-08T05:15:08", 8.97743, -45.05084], + ["2019-08-08T06:14:27", 8.97067, -45.06609], + ["2019-08-08T07:14:27", 8.96651, -45.0842], + ["2019-08-08T08:13:58", 8.96228, -45.09985], + ["2019-08-08T09:12:58", 8.95879, -45.11679], + ["2019-08-08T10:12:58", 8.95393, -45.13533], + ["2019-08-08T11:12:58", 8.94806, -45.15335], + ["2019-08-08T12:12:26", 8.94078, -45.17154], + ["2019-08-08T13:12:06", 8.93333, -45.18881], + ["2019-08-08T14:10:56", 8.92872, -45.20622], + ["2019-08-08T15:10:56", 8.92692, -45.22433], + ["2019-08-08T16:10:56", 8.92498, -45.24493], + ["2019-08-08T17:10:26", 8.92292, -45.26767], + ["2019-08-08T18:09:57", 8.92355, -45.29111], + ["2019-08-08T19:09:24", 8.92941, -45.31027], + ["2019-08-08T20:07:58", 8.93801, -45.32681], + ["2019-08-08T21:07:58", 8.94363, -45.34123], + ["2019-08-08T22:07:58", 8.94951, -45.3541], + ["2019-08-08T23:07:30", 8.95442, -45.36563], + ["2019-08-09T00:06:58", 8.95756, -45.37573], + ["2019-08-09T01:06:25", 8.95914, -45.38602], + ["2019-08-09T02:06:25", 8.96158, -45.39786], + ["2019-08-09T03:06:08", 8.96486, -45.40927], + ["2019-08-09T04:05:36", 8.97052, -45.41776], + ["2019-08-09T05:04:27", 8.97122, -45.42683], + ["2019-08-09T06:04:27", 8.96972, -45.43859], + ["2019-08-09T07:04:27", 8.97062, -45.44983], + ["2019-08-09T08:03:58", 8.97503, -45.45859], + ["2019-08-09T09:03:25", 8.98465, -45.46448], + ["2019-08-09T10:02:06", 8.99358, -45.46746], + ["2019-08-09T11:02:06", 9.0013, -45.47321], + ["2019-08-09T12:01:36", 9.00765, -45.47937], + ["2019-08-09T13:01:26", 9.01394, -45.48706], + ["2019-08-09T14:00:56", 9.01638, -45.49518], + ["2019-08-09T15:00:56", 9.01983, -45.50134], + ["2019-08-09T15:59:55", 9.02, -45.50555], + ["2019-08-09T16:59:26", 9.01704, -45.51245], + ["2019-08-09T17:58:55", 9.0149, -45.51907], + ["2019-08-09T18:58:26", 9.01216, -45.52786], + ["2019-08-09T22:57:27", 9.03416, -45.55167], + ["2019-08-09T23:56:28", 9.04364, -45.55505], + ["2019-08-10T00:55:57", 9.05003, -45.55896], + ["2019-08-10T01:54:29", 9.05602, -45.56344], + ["2019-08-10T02:54:29", 9.06151, -45.5661], + ["2019-08-10T03:54:29", 9.06579, -45.56833], + ["2019-08-10T04:53:27", 9.07119, -45.57046], + ["2019-08-10T05:53:27", 9.07797, -45.572], + ["2019-08-10T06:53:27", 9.08501, -45.5726], + ["2019-08-10T07:56:28", 9.09043, -45.57233], + ["2019-08-10T08:55:26", 9.09455, -45.57184], + ["2019-08-10T09:54:55", 9.09744, -45.5672], + ["2019-08-10T10:54:07", 9.10464, -45.56241], + ["2019-08-10T11:54:07", 9.11156, -45.55606], + ["2019-08-10T12:53:36", 9.11511, -45.55133], + ["2019-08-10T13:53:28", 9.11581, -45.55081], + ["2019-08-10T14:52:56", 9.11576, -45.55148], + ["2019-08-10T19:50:56", 9.11374, -45.56097], + ["2019-08-10T20:50:26", 9.11176, -45.56192], + ["2019-08-10T21:49:56", 9.10768, -45.5607], + ["2019-08-11T00:32:58", 9.09657, -45.55377], + ["2019-08-11T01:32:26", 9.09404, -45.55164], + ["2019-08-11T06:17:58", 9.06137, -45.55469], + ["2019-08-11T08:16:58", 9.04508, -45.55453], + ["2019-08-11T09:16:56", 9.03609, -45.55548], + ["2019-08-11T10:15:38", 9.02453, -45.55515], + ["2019-08-11T11:15:38", 9.0138, -45.55549], + ["2019-08-11T12:15:38", 9.00093, -45.55652], + ["2019-08-11T13:14:55", 8.98565, -45.56042], + ["2019-08-11T14:14:55", 8.97167, -45.56656], + ["2019-08-11T15:14:25", 8.95759, -45.57471], + ["2019-08-11T16:14:26", 8.9427, -45.58356], + ["2019-08-11T17:12:53", 8.92718, -45.58932], + ["2019-08-11T18:12:53", 8.91156, -45.59464], + ["2019-08-11T19:12:53", 8.89057, -45.60013], + ["2019-08-11T20:11:30", 8.86729, -45.60668], + ["2019-08-11T21:11:30", 8.84575, -45.61707], + ["2019-08-11T22:10:58", 8.82475, -45.62863], + ["2019-08-11T23:10:29", 8.80547, -45.64194], + ["2019-08-12T00:09:58", 8.79076, -45.65805], + ["2019-08-12T01:08:55", 8.77758, -45.67353], + ["2019-08-12T02:09:27", 8.76582, -45.69296], + ["2019-08-12T03:08:55", 8.75719, -45.71481], + ["2019-08-12T04:08:26", 8.75217, -45.7384], + ["2019-08-12T05:07:59", 8.7489, -45.76302], + ["2019-08-12T06:07:59", 8.7462, -45.78448], + ["2019-08-12T07:07:29", 8.74527, -45.80408], + ["2019-08-12T08:07:28", 8.74211, -45.82224], + ["2019-08-12T09:06:57", 8.73901, -45.83978], + ["2019-08-12T10:05:54", 8.73565, -45.8555], + ["2019-08-12T11:04:27", 8.73208, -45.87096], + ["2019-08-12T12:04:55", 8.73156, -45.88492], + ["2019-08-12T13:04:27", 8.73218, -45.89954], + ["2019-08-12T14:03:56", 8.7356, -45.91565], + ["2019-08-12T15:03:28", 8.73983, -45.93091], + ["2019-08-12T16:02:55", 8.74376, -45.94687], + ["2019-08-12T17:02:08", 8.74804, -45.96258], + ["2019-08-12T18:02:08", 8.75259, -45.9794], + ["2019-08-12T19:01:39", 8.75784, -45.99814], + ["2019-08-12T20:01:25", 8.76238, -46.0141], + ["2019-08-12T21:00:56", 8.77452, -46.0307], + ["2019-08-12T22:00:28", 8.78762, -46.04611], + ["2019-08-12T22:58:56", 8.79912, -46.05697], + ["2019-08-12T23:58:56", 8.81229, -46.06675], + ["2019-08-13T00:58:56", 8.82431, -46.0755], + ["2019-08-13T01:58:39", 8.83746, -46.08337], + ["2019-08-13T02:58:29", 8.851, -46.0889], + ["2019-08-13T03:58:01", 8.86201, -46.09042], + ["2019-08-13T04:57:26", 8.87449, -46.09143], + ["2019-08-13T08:55:58", 8.90427, -46.0997], + ["2019-08-13T09:55:27", 8.91011, -46.09814], + ["2019-08-13T10:55:25", 8.91657, -46.09381], + ["2019-08-13T11:53:57", 8.92796, -46.09309], + ["2019-08-13T12:53:57", 8.94164, -46.09009], + ["2019-08-13T13:53:28", 8.95478, -46.0861], + ["2019-08-13T14:53:28", 8.96826, -46.08292], + ["2019-08-13T15:53:24", 8.97823, -46.07758], + ["2019-08-13T16:52:37", 8.98391, -46.07172], + ["2019-08-13T17:52:26", 8.98712, -46.06577], + ["2019-08-13T18:51:56", 8.98893, -46.06024], + ["2019-08-13T19:51:56", 8.98523, -46.05148], + ["2019-08-13T21:50:38", 8.98091, -46.03006], + ["2019-08-13T22:49:31", 8.98147, -46.02576], + ["2019-08-13T23:49:31", 8.98071, -46.0231], + ["2019-08-14T00:48:26", 8.9826, -46.01962], + ["2019-08-14T01:47:56", 8.98663, -46.01486], + ["2019-08-14T02:47:08", 8.98825, -46.01065], + ["2019-08-14T03:47:08", 8.98722, -46.00464], + ["2019-08-14T04:46:29", 8.98258, -45.99824], + ["2019-08-14T05:46:29", 8.97606, -45.99017], + ["2019-08-14T06:45:57", 8.97279, -45.98242], + ["2019-08-14T07:44:54", 8.96995, -45.97577], + ["2019-08-14T08:44:25", 8.96611, -45.96942], + ["2019-08-14T09:43:56", 8.96085, -45.9646], + ["2019-08-14T10:43:55", 8.95384, -45.96097], + ["2019-08-14T12:41:58", 8.94154, -45.95617], + ["2019-08-14T13:41:58", 8.93486, -45.95274], + ["2019-08-14T14:41:58", 8.93014, -45.95059], + ["2019-08-14T15:41:39", 8.92706, -45.95004], + ["2019-08-14T16:40:56", 8.92019, -45.94992], + ["2019-08-14T17:40:25", 8.91268, -45.94702], + ["2019-08-14T19:39:04", 8.8915, -45.9449], + ["2019-08-14T20:39:04", 8.87935, -45.94456], + ["2019-08-14T21:39:04", 8.86875, -45.94696], + ["2019-08-14T22:38:02", 8.8567, -45.95025], + ["2019-08-14T23:38:02", 8.8452, -45.95334], + ["2019-08-15T00:38:02", 8.83494, -45.95935], + ["2019-08-15T01:37:38", 8.82408, -45.96497], + ["2019-08-15T02:37:26", 8.81429, -45.97275], + ["2019-08-15T03:36:28", 8.80705, -45.98147], + ["2019-08-15T04:36:28", 8.79945, -45.98782], + ["2019-08-15T05:35:58", 8.79362, -45.9924], + ["2019-08-15T06:35:27", 8.78977, -45.9971], + ["2019-08-15T07:34:58", 8.78594, -46.00348], + ["2019-08-15T08:34:29", 8.78126, -46.00854], + ["2019-08-15T09:34:27", 8.77547, -46.01447], + ["2019-08-15T10:33:56", 8.77169, -46.02143], + ["2019-08-15T11:33:56", 8.7699, -46.02701], + ["2019-08-15T12:32:56", 8.76872, -46.03174], + ["2019-08-15T13:31:53", 8.76837, -46.03854], + ["2019-08-15T14:31:53", 8.77064, -46.04772], + ["2019-08-15T15:31:53", 8.77506, -46.05502], + ["2019-08-15T16:31:24", 8.78238, -46.06317], + ["2019-08-15T17:30:37", 8.79125, -46.07147], + ["2019-08-15T18:29:28", 8.79936, -46.07739], + ["2019-08-15T19:29:28", 8.80605, -46.08443], + ["2019-08-15T20:29:28", 8.81094, -46.09061], + ["2019-08-15T21:29:27", 8.81642, -46.09619], + ["2019-08-15T22:28:28", 8.82203, -46.10181], + ["2019-08-15T23:27:26", 8.82844, -46.10793], + ["2019-08-16T00:27:26", 8.83385, -46.11377], + ["2019-08-16T01:26:26", 8.84008, -46.11839], + ["2019-08-16T02:26:26", 8.84909, -46.12277], + ["2019-08-16T03:26:28", 8.85685, -46.12576], + ["2019-08-16T04:25:20", 8.8678, -46.12844], + ["2019-08-16T05:25:20", 8.88312, -46.13187], + ["2019-08-16T07:26:26", 8.91291, -46.13184], + ["2019-08-16T09:22:42", 8.9418, -46.13065], + ["2019-08-16T10:22:42", 8.95425, -46.12799], + ["2019-08-16T11:22:42", 8.96557, -46.12567], + ["2019-08-16T12:22:35", 8.97791, -46.12314], + ["2019-08-16T13:22:06", 8.98905, -46.11703], + ["2019-08-16T14:21:58", 8.9977, -46.10947], + ["2019-08-16T15:21:27", 9.00719, -46.10132], + ["2019-08-16T16:20:56", 9.01688, -46.09168], + ["2019-08-16T17:20:56", 9.02877, -46.0849], + ["2019-08-16T18:20:27", 9.04025, -46.08017], + ["2019-08-16T19:19:57", 9.05208, -46.07614], + ["2019-08-16T20:19:06", 9.06387, -46.06827], + ["2019-08-16T21:18:40", 9.07264, -46.05859], + ["2019-08-16T22:18:07", 9.0787, -46.04831], + ["2019-08-16T23:17:29", 9.07591, -46.03854], + ["2019-08-17T00:16:58", 9.0718, -46.02884], + ["2019-08-17T01:16:28", 9.06783, -46.0191], + ["2019-08-17T02:16:27", 9.06636, -46.01089], + ["2019-08-17T03:15:56", 9.06645, -46.00317], + ["2019-08-17T04:15:27", 9.065, -45.99457], + ["2019-08-17T05:15:09", 9.0639, -45.98654], + ["2019-08-17T06:14:27", 9.06413, -45.97922], + ["2019-08-17T07:13:29", 9.06237, -45.97095], + ["2019-08-17T08:13:29", 9.05962, -45.95953], + ["2019-08-17T09:13:08", 9.05448, -45.94867], + ["2019-08-17T10:12:06", 9.04865, -45.93947], + ["2019-08-17T11:12:06", 9.04221, -45.93011], + ["2019-08-17T12:11:56", 9.03368, -45.92075], + ["2019-08-17T13:11:24", 9.0218, -45.91125], + ["2019-08-17T15:09:27", 8.9989, -45.90206], + ["2019-08-17T16:09:27", 8.9892, -45.90043], + ["2019-08-17T17:09:27", 8.97873, -45.89734], + ["2019-08-17T18:09:08", 8.96838, -45.89285], + ["2019-08-17T19:08:36", 8.95594, -45.88828], + ["2019-08-17T20:08:07", 8.94089, -45.88589], + ["2019-08-17T21:06:27", 8.92484, -45.88426], + ["2019-08-17T22:06:27", 8.90837, -45.88134], + ["2019-08-17T23:06:27", 8.89283, -45.88074], + ["2019-08-18T00:06:24", 8.87762, -45.88309], + ["2019-08-18T01:05:56", 8.86246, -45.88641], + ["2019-08-18T02:05:26", 8.8514, -45.89285], + ["2019-08-18T03:04:55", 8.8423, -45.90265], + ["2019-08-18T04:04:56", 8.83001, -45.9129], + ["2019-08-18T05:04:26", 8.81551, -45.92657], + ["2019-08-18T06:02:28", 8.8003, -45.94136], + ["2019-08-18T07:02:56", 8.78534, -45.95557], + ["2019-08-18T08:02:28", 8.77223, -45.96814], + ["2019-08-18T09:02:08", 8.76737, -45.98019], + ["2019-08-18T10:01:25", 8.7599, -45.99184], + ["2019-08-18T11:01:25", 8.75089, -46.00497], + ["2019-08-18T12:00:38", 8.74094, -46.01917], + ["2019-08-18T12:59:56", 8.73185, -46.03488], + ["2019-08-18T13:59:26", 8.72322, -46.04996], + ["2019-08-18T14:58:56", 8.71688, -46.06664], + ["2019-08-18T15:58:56", 8.71366, -46.08398], + ["2019-08-18T16:58:25", 8.71151, -46.1004], + ["2019-08-18T17:57:56", 8.7097, -46.11646], + ["2019-08-18T18:57:26", 8.70675, -46.13351], + ["2019-08-18T21:56:24", 8.69773, -46.18011], + ["2019-08-19T03:01:29", 8.72244, -46.25729], + ["2019-08-19T04:00:37", 8.72882, -46.26779], + ["2019-08-19T05:00:27", 8.73515, -46.27744], + ["2019-08-19T05:59:57", 8.74286, -46.28769], + ["2019-08-19T06:59:27", 8.7486, -46.29623], + ["2019-08-19T10:57:28", 8.77427, -46.31757], + ["2019-08-19T11:56:58", 8.78651, -46.32251], + ["2019-08-19T12:55:56", 8.79762, -46.32251], + ["2019-08-19T13:55:56", 8.80993, -46.31976], + ["2019-08-19T14:55:53", 8.82567, -46.31436], + ["2019-08-19T15:55:05", 8.84167, -46.30737], + ["2019-08-19T16:54:25", 8.85798, -46.29785], + ["2019-08-19T17:53:58", 8.87434, -46.28564], + ["2019-08-19T18:53:26", 8.88906, -46.27258], + ["2019-08-19T19:52:38", 8.90471, -46.26067], + ["2019-08-19T20:52:38", 8.91621, -46.24805], + ["2019-08-19T21:52:08", 8.92713, -46.23679], + ["2019-08-19T22:50:57", 8.93683, -46.2245], + ["2019-08-19T23:50:57", 8.94468, -46.21085], + ["2019-08-20T00:50:57", 8.95257, -46.1972], + ["2019-08-20T01:50:37", 8.95825, -46.18311], + ["2019-08-20T02:50:08", 8.96405, -46.16895], + ["2019-08-20T03:49:58", 8.97084, -46.15369], + ["2019-08-20T04:48:55", 8.97583, -46.13926], + ["2019-08-20T05:48:55", 8.97772, -46.12347], + ["2019-08-20T06:48:36", 8.97668, -46.10675], + ["2019-08-20T07:47:39", 8.97929, -46.09097], + ["2019-08-20T08:47:39", 8.98126, -46.07458], + ["2019-08-20T09:47:27", 8.98029, -46.05884], + ["2019-08-20T10:46:56", 8.97451, -46.04227], + ["2019-08-20T11:46:27", 8.96866, -46.0256], + ["2019-08-20T12:45:57", 8.9635, -46.01044], + ["2019-08-20T13:45:26", 8.9566, -45.99582] + ], + "drifter_13": [ + ["2019-07-30T17:09:00", 8.367, -45.081], + ["2019-07-30T17:20:39", 8.35984, -45.06042], + ["2019-07-30T18:20:39", 8.36143, -45.04102], + ["2019-08-02T08:44:29", 8.44994, -44.93231], + ["2019-08-02T09:43:57", 8.46372, -44.92496], + ["2019-08-02T10:43:57", 8.47845, -44.91812], + ["2019-08-02T11:43:07", 8.49286, -44.91121], + ["2019-08-02T12:43:07", 8.50505, -44.90469], + ["2019-08-03T19:51:00", 8.81349, -44.72992], + ["2019-08-03T20:50:56", 8.81396, -44.73038], + ["2019-08-03T21:50:25", 8.8141, -44.73038], + ["2019-08-03T22:50:01", 8.81429, -44.7308], + ["2019-08-03T23:49:59", 8.81891, -44.73254], + ["2019-08-04T00:49:29", 8.82147, -44.73346], + ["2019-08-04T01:48:58", 8.82198, -44.73471], + ["2019-08-04T02:48:59", 8.82293, -44.73599], + ["2019-08-04T03:48:24", 8.82258, -44.73693], + ["2019-08-04T04:48:24", 8.82065, -44.73599], + ["2019-08-04T05:47:57", 8.81556, -44.73419], + ["2019-08-04T06:47:55", 8.81007, -44.73337], + ["2019-08-04T07:47:26", 8.80409, -44.73343], + ["2019-08-04T08:47:27", 8.79823, -44.73529], + ["2019-08-04T09:46:27", 8.79157, -44.73768], + ["2019-08-04T10:46:27", 8.78303, -44.7406], + ["2019-08-04T11:46:27", 8.77621, -44.74429], + ["2019-08-04T12:45:57", 8.77096, -44.74908], + ["2019-08-04T14:45:27", 8.75791, -44.75428], + ["2019-08-04T15:45:27", 8.75301, -44.75342], + ["2019-08-04T16:45:27", 8.74963, -44.75308], + ["2019-08-04T17:44:54", 8.74766, -44.75385], + ["2019-08-04T18:44:25", 8.74548, -44.75641], + ["2019-08-04T19:43:25", 8.74208, -44.76071], + ["2019-08-04T20:43:25", 8.74066, -44.76698], + ["2019-08-04T21:43:25", 8.74169, -44.77136], + ["2019-08-04T22:43:28", 8.74386, -44.77301], + ["2019-08-04T23:43:00", 8.74098, -44.77383], + ["2019-08-05T00:42:27", 8.73926, -44.77331], + ["2019-08-05T01:42:27", 8.73837, -44.7746], + ["2019-08-05T02:41:57", 8.73452, -44.78214], + ["2019-08-05T03:41:26", 8.73326, -44.78949], + ["2019-08-05T04:40:58", 8.73293, -44.79651], + ["2019-08-05T06:40:09", 8.73418, -44.8106], + ["2019-08-05T07:40:09", 8.73474, -44.81678], + ["2019-08-05T08:40:09", 8.73667, -44.82184], + ["2019-08-05T09:39:56", 8.74001, -44.82581], + ["2019-08-05T10:39:27", 8.74067, -44.82932] + ], + "drifter_14": [ + ["2019-08-04T10:48:00", 8.41891, -49.72757], + ["2019-08-04T11:10:04", 8.41549, -49.7254], + ["2019-08-04T11:40:04", 8.41347, -49.7236], + ["2019-08-04T12:11:01", 8.4125, -49.72134], + ["2019-08-04T13:11:56", 8.40671, -49.71664], + ["2019-08-04T14:39:27", 8.39966, -49.71111], + ["2019-08-04T15:09:00", 8.39554, -49.70941], + ["2019-08-04T15:39:27", 8.38941, -49.70767], + ["2019-08-04T16:38:56", 8.37954, -49.70749], + ["2019-08-04T18:08:08", 8.35919, -49.7099], + ["2019-08-04T18:37:54", 8.34838, -49.71108], + ["2019-08-04T19:07:54", 8.33691, -49.71194], + ["2019-08-04T20:07:18", 8.3101, -49.71449], + ["2019-08-04T20:37:18", 8.30868, -49.71466], + ["2019-08-04T21:07:18", 8.30336, -49.71509], + ["2019-08-05T03:05:21", 8.24859, -49.74249], + ["2019-08-05T03:35:07", 8.24451, -49.75087], + ["2019-08-05T04:05:07", 8.23983, -49.75928], + ["2019-08-05T04:34:55", 8.23438, -49.76833], + ["2019-08-05T05:04:55", 8.23014, -49.77588], + ["2019-08-05T05:37:01", 8.22627, -49.78259], + ["2019-08-05T06:34:30", 8.22095, -49.79508], + ["2019-08-05T07:07:00", 8.21724, -49.80133], + ["2019-08-05T07:34:30", 8.2131, -49.80676], + ["2019-08-05T09:05:55", 8.20233, -49.81903], + ["2019-08-05T14:02:22", 8.22261, -49.86066], + ["2019-08-05T14:33:13", 8.22542, -49.86832], + ["2019-08-05T15:02:02", 8.23, -49.87503], + ["2019-08-05T15:32:56", 8.23522, -49.88129], + ["2019-08-05T16:32:58", 8.24573, -49.88899], + ["2019-08-05T17:02:58", 8.25221, -49.89088], + ["2019-08-05T17:32:58", 8.2592, -49.89328], + ["2019-08-05T18:00:51", 8.26415, -49.89505], + ["2019-08-05T18:30:51", 8.26754, -49.89642], + ["2019-08-05T20:00:57", 8.27514, -49.90189], + ["2019-08-05T20:45:31", 8.28013, -49.90057], + ["2019-08-05T21:00:56", 8.28228, -49.9], + ["2019-08-05T21:30:56", 8.28627, -49.89974], + ["2019-08-05T22:00:56", 8.28979, -49.89948], + ["2019-08-05T23:01:42", 8.29687, -49.89993], + ["2019-08-06T00:31:26", 8.30392, -49.89908], + ["2019-08-06T01:29:04", 8.3094, -49.89828], + ["2019-08-06T01:29:59", 8.31048, -49.89954], + ["2019-08-06T02:29:59", 8.31323, -49.89911], + ["2019-08-06T02:58:32", 8.31349, -49.89929], + ["2019-08-06T03:29:58", 8.31417, -49.89993], + ["2019-08-06T04:28:45", 8.31685, -49.89997], + ["2019-08-06T04:58:10", 8.31765, -49.9006], + ["2019-08-06T05:28:45", 8.31844, -49.90143], + ["2019-08-06T05:57:38", 8.31812, -49.90005], + ["2019-08-06T06:28:41", 8.31695, -49.89767], + ["2019-08-06T07:57:14", 8.31033, -49.88962], + ["2019-08-06T09:58:58", 8.29416, -49.88327], + ["2019-08-06T10:56:05", 8.29135, -49.88101], + ["2019-08-06T14:27:11", 8.28522, -49.87775], + ["2019-08-06T17:54:57", 8.29153, -49.88138], + ["2019-08-06T19:23:22", 8.29702, -49.88005], + ["2019-08-06T19:53:22", 8.29831, -49.87868], + ["2019-08-06T20:23:22", 8.29908, -49.87671], + ["2019-08-06T20:44:57", 8.29912, -49.87497], + ["2019-08-06T20:52:52", 8.29895, -49.87415], + ["2019-08-06T21:22:52", 8.29895, -49.87132], + ["2019-08-06T21:52:52", 8.29879, -49.86926], + ["2019-08-06T22:22:42", 8.29862, -49.86728], + ["2019-08-07T00:22:10", 8.30348, -49.85873], + ["2019-08-07T01:22:35", 8.31453, -49.85577], + ["2019-08-07T02:23:25", 8.32586, -49.84979], + ["2019-08-07T03:51:28", 8.34394, -49.84082], + ["2019-08-07T05:20:59", 8.35952, -49.83353], + ["2019-08-07T09:19:36", 8.37951, -49.82022], + ["2019-08-07T10:50:22", 8.38167, -49.81134], + ["2019-08-07T11:19:06", 8.38322, -49.80829], + ["2019-08-07T12:48:34", 8.39179, -49.79808], + ["2019-08-07T13:18:34", 8.39321, -49.79482], + ["2019-08-07T13:48:34", 8.39457, -49.79156], + ["2019-08-07T14:19:17", 8.39671, -49.78845], + ["2019-08-07T14:49:17", 8.39842, -49.78622], + ["2019-08-07T15:18:07", 8.39964, -49.78288], + ["2019-08-07T15:48:07", 8.40085, -49.77825], + ["2019-08-07T16:18:07", 8.40204, -49.77542], + ["2019-08-07T16:50:44", 8.40368, -49.77161], + ["2019-08-07T19:19:37", 8.39907, -49.75433], + ["2019-08-07T19:49:37", 8.39525, -49.75098], + ["2019-08-07T20:19:37", 8.39272, -49.74866], + ["2019-08-07T22:46:30", 8.37947, -49.73943], + ["2019-08-07T23:15:55", 8.3767, -49.73709], + ["2019-08-07T23:46:30", 8.37312, -49.73514], + ["2019-08-08T00:17:10", 8.36963, -49.73433], + ["2019-08-08T00:47:10", 8.3652, -49.73193], + ["2019-08-08T01:15:57", 8.36195, -49.72906], + ["2019-08-08T01:45:57", 8.358, -49.72485], + ["2019-08-08T02:15:05", 8.35457, -49.72095], + ["2019-08-08T02:44:39", 8.35211, -49.71607], + ["2019-08-08T03:14:39", 8.35105, -49.71255], + ["2019-08-08T03:44:24", 8.35201, -49.70759], + ["2019-08-08T04:14:24", 8.35398, -49.7027], + ["2019-08-08T04:44:40", 8.35586, -49.69965], + ["2019-08-08T05:14:11", 8.35652, -49.69504], + ["2019-08-08T05:44:28", 8.35718, -49.69092], + ["2019-08-08T06:14:28", 8.35787, -49.68747], + ["2019-08-08T06:44:28", 8.35863, -49.68369], + ["2019-08-08T07:13:39", 8.35796, -49.68024], + ["2019-08-08T12:12:47", 8.27959, -49.66415], + ["2019-08-08T15:43:25", 8.2218, -49.66949], + ["2019-08-08T18:10:53", 8.16384, -49.70088], + ["2019-08-08T18:40:53", 8.15062, -49.70929], + ["2019-08-08T19:10:53", 8.13779, -49.71753], + ["2019-08-08T19:42:27", 8.12346, -49.72656], + ["2019-08-08T20:15:01", 8.10164, -49.73742], + ["2019-08-08T20:45:01", 8.10096, -49.73776], + ["2019-08-08T21:09:54", 8.09534, -49.74089], + ["2019-08-08T21:39:54", 8.08907, -49.74544], + ["2019-08-08T22:09:54", 8.08272, -49.74973], + ["2019-08-08T22:40:26", 8.07535, -49.75476], + ["2019-08-08T23:09:40", 8.0679, -49.75922], + ["2019-08-09T01:38:32", 8.01943, -49.78603], + ["2019-08-09T02:08:32", 8.01073, -49.79324], + ["2019-08-09T02:38:32", 8.0027, -49.80011], + ["2019-08-09T03:07:58", 7.99315, -49.80731], + ["2019-08-09T03:37:58", 7.98624, -49.8134], + ["2019-08-09T04:07:58", 7.98036, -49.82001], + ["2019-08-09T04:38:30", 7.97615, -49.82556], + ["2019-08-09T06:36:44", 7.96427, -49.84471], + ["2019-08-09T07:06:44", 7.96114, -49.85012], + ["2019-08-09T07:36:44", 7.95801, -49.85501], + ["2019-08-09T08:07:28", 7.95363, -49.85989], + ["2019-08-09T14:04:53", 7.93147, -49.90048], + ["2019-08-09T15:04:40", 7.93185, -49.90341], + ["2019-08-09T17:04:58", 7.93203, -49.8996], + ["2019-08-09T20:45:04", 7.93904, -49.88895], + ["2019-08-09T21:02:37", 7.93971, -49.88613], + ["2019-08-09T21:32:37", 7.9419, -49.88132], + ["2019-08-09T22:35:59", 7.9532, -49.87567], + ["2019-08-10T00:02:56", 7.96877, -49.86764], + ["2019-08-10T00:32:56", 7.97482, -49.86446], + ["2019-08-10T01:02:56", 7.97933, -49.86017], + ["2019-08-10T01:31:33", 7.98373, -49.85501], + ["2019-08-10T02:01:11", 7.98897, -49.84865], + ["2019-08-10T02:31:11", 7.99305, -49.84247], + ["2019-08-10T03:01:25", 7.99618, -49.83581], + ["2019-08-10T03:31:25", 7.99858, -49.83015], + ["2019-08-10T04:01:25", 8.00226, -49.82346], + ["2019-08-10T05:01:02", 8.00963, -49.809], + ["2019-08-10T05:31:02", 8.01285, -49.80162], + ["2019-08-10T06:01:02", 8.01706, -49.79398], + ["2019-08-10T06:30:05", 8.01898, -49.78714], + ["2019-08-10T07:29:51", 8.02211, -49.77176], + ["2019-08-10T07:59:38", 8.02338, -49.76388], + ["2019-08-10T08:29:38", 8.02532, -49.75693], + ["2019-08-10T08:59:38", 8.02582, -49.74908], + ["2019-08-10T09:29:38", 8.02549, -49.7417], + ["2019-08-10T10:59:28", 8.02258, -49.71561], + ["2019-08-10T11:28:45", 8.02264, -49.706], + ["2019-08-10T11:59:31", 8.0226, -49.6962], + ["2019-08-10T12:28:45", 8.02328, -49.68652], + ["2019-08-10T12:59:26", 8.02426, -49.67688], + ["2019-08-10T13:28:26", 8.02553, -49.66678], + ["2019-08-10T15:58:57", 8.0279, -49.61847], + ["2019-08-10T16:28:57", 8.02721, -49.60989], + ["2019-08-10T16:58:57", 8.02524, -49.60114], + ["2019-08-10T17:27:52", 8.02363, -49.59329], + ["2019-08-10T17:59:29", 8.02255, -49.58496], + ["2019-08-10T18:27:42", 8.02154, -49.57822], + ["2019-08-10T19:57:28", 8.00974, -49.54382], + ["2019-08-10T20:27:28", 8.00914, -49.54185], + ["2019-08-10T20:57:28", 8.0078, -49.53799], + ["2019-08-10T21:26:32", 8.0031, -49.52872], + ["2019-08-10T22:27:09", 7.99381, -49.51001], + ["2019-08-10T22:57:09", 7.9896, -49.50168], + ["2019-08-10T23:27:09", 7.98475, -49.49344], + ["2019-08-10T23:56:26", 7.97973, -49.4855], + ["2019-08-11T00:26:26", 7.97411, -49.47769], + ["2019-08-11T00:55:24", 7.9686, -49.47055], + ["2019-08-11T02:54:32", 7.95674, -49.44124], + ["2019-08-11T03:24:32", 7.95374, -49.43326], + ["2019-08-11T03:54:32", 7.95044, -49.42682], + ["2019-08-11T04:25:25", 7.94729, -49.41965], + ["2019-08-11T04:55:07", 7.94497, -49.41301], + ["2019-08-11T05:25:07", 7.94055, -49.40649], + ["2019-08-11T06:53:29", 7.92428, -49.38924], + ["2019-08-11T07:23:29", 7.91977, -49.38418], + ["2019-08-11T07:53:29", 7.91561, -49.37946], + ["2019-08-11T08:24:02", 7.91075, -49.37512], + ["2019-08-11T08:53:05", 7.9061, -49.37152], + ["2019-08-11T09:24:16", 7.90103, -49.36795], + ["2019-08-11T09:54:13", 7.89643, -49.36466], + ["2019-08-11T10:24:13", 7.89085, -49.36191], + ["2019-08-11T10:52:23", 7.88528, -49.35959], + ["2019-08-11T11:22:49", 7.87902, -49.35669], + ["2019-08-11T11:52:02", 7.87279, -49.35272], + ["2019-08-11T12:23:58", 7.86644, -49.34735], + ["2019-08-11T12:51:36", 7.86093, -49.34369], + ["2019-08-11T13:21:19", 7.85536, -49.34064], + ["2019-08-11T14:51:13", 7.83682, -49.33215], + ["2019-08-11T15:20:29", 7.83097, -49.32965], + ["2019-08-11T15:53:30", 7.8243, -49.32599], + ["2019-08-11T16:49:59", 7.8152, -49.3194], + ["2019-08-11T17:22:58", 7.81161, -49.3168], + ["2019-08-11T19:19:25", 7.80364, -49.31024], + ["2019-08-11T19:50:30", 7.80247, -49.30914], + ["2019-08-11T20:19:16", 7.80201, -49.30841], + ["2019-08-11T21:18:44", 7.80193, -49.30741], + ["2019-08-11T21:48:44", 7.80193, -49.30681], + ["2019-08-11T22:18:44", 7.80214, -49.30518], + ["2019-08-11T22:49:06", 7.80126, -49.30328], + ["2019-08-11T23:18:26", 7.8016, -49.30231], + ["2019-08-11T23:49:58", 7.80217, -49.3013], + ["2019-08-12T01:17:50", 7.79808, -49.297], + ["2019-08-12T03:17:01", 7.79571, -49.28743], + ["2019-08-12T03:47:01", 7.79571, -49.28228], + ["2019-08-12T04:17:01", 7.79562, -49.27704], + ["2019-08-12T04:46:53", 7.79663, -49.27255], + ["2019-08-12T05:49:16", 7.79909, -49.26431], + ["2019-08-12T06:46:18", 7.79975, -49.25729], + ["2019-08-12T09:45:19", 7.81323, -49.24091], + ["2019-08-12T12:46:29", 7.82589, -49.23938], + ["2019-08-12T13:14:39", 7.82662, -49.24072], + ["2019-08-12T15:15:57", 7.8349, -49.24326], + ["2019-08-12T17:43:13", 7.8618, -49.23986], + ["2019-08-12T18:13:13", 7.86983, -49.239], + ["2019-08-12T18:43:13", 7.8776, -49.23849], + ["2019-08-12T19:42:58", 7.89649, -49.23447], + ["2019-08-12T20:42:49", 7.91654, -49.22723], + ["2019-08-12T22:13:37", 7.94448, -49.21652], + ["2019-08-12T23:43:07", 7.97128, -49.20892], + ["2019-08-13T00:13:07", 7.97969, -49.20635], + ["2019-08-13T00:43:07", 7.98853, -49.20352], + ["2019-08-13T01:43:30", 8.00487, -49.1972], + ["2019-08-13T02:11:20", 8.0121, -49.19379], + ["2019-08-13T06:41:30", 8.06727, -49.1481], + ["2019-08-13T07:09:46", 8.07182, -49.14209], + ["2019-08-13T08:09:25", 8.08311, -49.13129], + ["2019-08-13T10:38:53", 8.12512, -49.10452], + ["2019-08-13T11:10:00", 8.13301, -49.09755], + ["2019-08-13T11:38:36", 8.1401, -49.09088], + ["2019-08-13T12:10:00", 8.14652, -49.08356], + ["2019-08-13T13:10:05", 8.1584, -49.06735], + ["2019-08-13T13:38:14", 8.16329, -49.05821], + ["2019-08-13T14:08:14", 8.16865, -49.048], + ["2019-08-13T14:38:44", 8.17348, -49.03723], + ["2019-08-13T15:38:00", 8.18154, -49.01446], + ["2019-08-13T16:08:00", 8.18463, -49.00476], + ["2019-08-13T16:38:00", 8.18793, -48.99515], + ["2019-08-13T17:07:59", 8.19049, -48.98625], + ["2019-08-13T17:37:59", 8.19234, -48.97784], + ["2019-08-13T18:06:55", 8.19389, -48.97052], + ["2019-08-13T19:44:36", 8.19594, -48.94463], + ["2019-08-13T20:14:36", 8.19379, -48.93871], + ["2019-08-13T20:44:36", 8.1934, -48.93759], + ["2019-08-13T21:05:56", 8.19234, -48.93356], + ["2019-08-13T21:35:56", 8.19102, -48.92807], + ["2019-08-13T23:05:23", 8.19093, -48.91096], + ["2019-08-13T23:35:23", 8.19295, -48.90495], + ["2019-08-14T00:05:23", 8.19373, -48.89929], + ["2019-08-14T01:34:37", 8.19828, -48.88653], + ["2019-08-14T02:04:37", 8.20124, -48.88378], + ["2019-08-14T02:34:37", 8.20295, -48.88086], + ["2019-08-14T04:04:00", 8.20731, -48.86731], + ["2019-08-14T04:34:00", 8.20667, -48.86276], + ["2019-08-14T05:04:00", 8.20551, -48.85898], + ["2019-08-14T05:35:28", 8.20395, -48.85416], + ["2019-08-14T07:33:00", 8.19701, -48.83675], + ["2019-08-14T08:03:00", 8.19598, -48.83237], + ["2019-08-14T08:33:00", 8.19482, -48.82791], + ["2019-08-14T09:02:58", 8.19436, -48.82336], + ["2019-08-14T09:33:29", 8.19396, -48.81943], + ["2019-08-14T10:32:30", 8.1907, -48.81312], + ["2019-08-14T11:02:30", 8.18886, -48.81072], + ["2019-08-14T11:32:30", 8.18684, -48.80789], + ["2019-08-14T12:02:02", 8.18542, -48.80515], + ["2019-08-14T12:32:23", 8.18392, -48.80252], + ["2019-08-14T13:01:59", 8.18275, -48.80016], + ["2019-08-14T13:31:59", 8.18069, -48.79733], + ["2019-08-14T14:01:36", 8.17793, -48.79597], + ["2019-08-14T14:31:36", 8.17423, -48.7946], + ["2019-08-14T15:01:36", 8.17089, -48.7934], + ["2019-08-14T15:31:00", 8.16722, -48.79261], + ["2019-08-14T16:01:00", 8.16339, -48.79175], + ["2019-08-14T16:30:54", 8.15975, -48.78999], + ["2019-08-14T17:00:44", 8.15738, -48.78821], + ["2019-08-14T17:30:54", 8.1537, -48.7869], + ["2019-08-14T18:30:55", 8.14532, -48.78455], + ["2019-08-14T19:00:25", 8.14119, -48.78461], + ["2019-08-14T19:30:25", 8.1363, -48.78461], + ["2019-08-14T19:59:45", 8.13044, -48.7847], + ["2019-08-14T20:15:28", 8.12335, -48.78502], + ["2019-08-14T20:45:28", 8.12215, -48.78519], + ["2019-08-14T20:59:17", 8.11996, -48.78555], + ["2019-08-14T21:29:26", 8.11527, -48.78662], + ["2019-08-14T21:59:07", 8.11205, -48.78793], + ["2019-08-14T22:29:06", 8.10896, -48.7891], + ["2019-08-14T22:59:06", 8.106, -48.79004], + ["2019-08-14T23:28:36", 8.10346, -48.79068], + ["2019-08-14T23:58:36", 8.10122, -48.79214], + ["2019-08-15T00:29:00", 8.09947, -48.7934], + ["2019-08-15T00:58:09", 8.09749, -48.79401], + ["2019-08-15T01:27:35", 8.09657, -48.79691], + ["2019-08-15T01:57:35", 8.09601, -48.80017], + ["2019-08-15T02:27:56", 8.09451, -48.80267], + ["2019-08-15T02:57:12", 8.09131, -48.80453], + ["2019-08-15T03:27:28", 8.08897, -48.80536], + ["2019-08-15T03:56:56", 8.08724, -48.80706], + ["2019-08-15T04:26:56", 8.08571, -48.80878], + ["2019-08-15T04:56:26", 8.08381, -48.81161], + ["2019-08-15T05:26:26", 8.08158, -48.81461], + ["2019-08-15T05:55:56", 8.0789, -48.81686], + ["2019-08-15T06:26:07", 8.07543, -48.81937], + ["2019-08-15T06:55:28", 8.07128, -48.82199], + ["2019-08-15T07:25:06", 8.06767, -48.82516], + ["2019-08-15T07:55:06", 8.06601, -48.82748], + ["2019-08-15T08:25:24", 8.06461, -48.82916], + ["2019-08-15T08:54:55", 8.06297, -48.83066], + ["2019-08-15T09:25:27", 8.06325, -48.83273], + ["2019-08-15T09:54:45", 8.06551, -48.83685], + ["2019-08-15T10:24:56", 8.0693, -48.8414], + ["2019-08-15T10:54:28", 8.07371, -48.84637], + ["2019-08-15T11:24:12", 8.07802, -48.85194], + ["2019-08-15T11:54:12", 8.08175, -48.85666], + ["2019-08-15T12:23:49", 8.08808, -48.86364], + ["2019-08-15T12:53:49", 8.09427, -48.87042], + ["2019-08-15T13:23:57", 8.10211, -48.87697], + ["2019-08-15T13:53:30", 8.10961, -48.88095], + ["2019-08-15T14:23:57", 8.11713, -48.88315], + ["2019-08-15T14:53:16", 8.1241, -48.88406], + ["2019-08-15T15:23:28", 8.13078, -48.88492], + ["2019-08-15T15:52:55", 8.13706, -48.88623], + ["2019-08-15T16:23:29", 8.14439, -48.88724], + ["2019-08-15T17:52:23", 8.16597, -48.88895], + ["2019-08-15T18:21:56", 8.17206, -48.88962], + ["2019-08-15T18:51:56", 8.17721, -48.89005], + ["2019-08-15T19:21:56", 8.18188, -48.89014], + ["2019-08-15T19:51:33", 8.18579, -48.88873], + ["2019-08-15T20:21:18", 8.19261, -48.88671], + ["2019-08-15T20:51:18", 8.19325, -48.88654], + ["2019-08-15T21:20:55", 8.19746, -48.88636], + ["2019-08-15T21:50:55", 8.20154, -48.88687], + ["2019-08-15T22:21:29", 8.20606, -48.88794], + ["2019-08-15T22:50:41", 8.2109, -48.88956], + ["2019-08-15T23:21:25", 8.21674, -48.8905], + ["2019-08-15T23:50:26", 8.22336, -48.89124], + ["2019-08-16T00:20:26", 8.22981, -48.89124], + ["2019-08-16T00:50:08", 8.23663, -48.89076], + ["2019-08-16T01:20:08", 8.24259, -48.8905], + ["2019-08-16T01:49:41", 8.24782, -48.88913], + ["2019-08-16T02:19:56", 8.25313, -48.88718], + ["2019-08-16T02:49:29", 8.25703, -48.88507], + ["2019-08-16T03:19:36", 8.26013, -48.8819], + ["2019-08-16T03:49:01", 8.2637, -48.8779], + ["2019-08-16T04:19:01", 8.26748, -48.87327], + ["2019-08-16T04:49:01", 8.27143, -48.86829], + ["2019-08-16T05:19:28", 8.27589, -48.86353], + ["2019-08-16T05:48:41", 8.27957, -48.86005], + ["2019-08-16T06:18:55", 8.28363, -48.85544], + ["2019-08-16T06:48:14", 8.28738, -48.85107], + ["2019-08-16T07:17:54", 8.29132, -48.84748], + ["2019-08-16T07:47:54", 8.29458, -48.84482], + ["2019-08-16T08:18:24", 8.29662, -48.84186], + ["2019-08-16T08:47:30", 8.29823, -48.83844], + ["2019-08-16T09:17:39", 8.30029, -48.83585], + ["2019-08-16T09:47:11", 8.30321, -48.83466], + ["2019-08-16T10:17:27", 8.30572, -48.83276], + ["2019-08-16T10:47:27", 8.30799, -48.83079], + ["2019-08-16T11:17:27", 8.30846, -48.82916], + ["2019-08-16T11:46:43", 8.30894, -48.82675], + ["2019-08-16T12:16:24", 8.30829, -48.82471], + ["2019-08-16T12:46:24", 8.30863, -48.82368], + ["2019-08-16T13:16:24", 8.30902, -48.82291], + ["2019-08-16T13:46:02", 8.30749, -48.82312], + ["2019-08-16T14:16:25", 8.30725, -48.82285], + ["2019-08-16T14:45:52", 8.30716, -48.82285], + ["2019-08-16T15:16:30", 8.30704, -48.82327], + ["2019-08-16T16:45:06", 8.31198, -48.82163], + ["2019-08-16T17:15:56", 8.31359, -48.81937], + ["2019-08-16T17:45:06", 8.31438, -48.81699], + ["2019-08-16T18:15:27", 8.3149, -48.814], + ["2019-08-16T18:44:44", 8.31474, -48.81091], + ["2019-08-16T19:14:28", 8.31473, -48.80683], + ["2019-08-16T19:44:28", 8.31426, -48.80331], + ["2019-08-16T20:14:58", 8.31237, -48.79965], + ["2019-08-16T20:44:19", 8.31124, -48.79556], + ["2019-08-16T21:14:25", 8.31087, -48.79141], + ["2019-08-16T21:44:01", 8.31136, -48.78876], + ["2019-08-16T22:14:26", 8.30993, -48.78619], + ["2019-08-16T22:43:29", 8.30911, -48.78403], + ["2019-08-16T23:13:29", 8.30721, -48.78266], + ["2019-08-16T23:43:29", 8.30631, -48.78317], + ["2019-08-17T00:13:07", 8.305, -48.78339], + ["2019-08-17T00:43:07", 8.30315, -48.78339], + ["2019-08-17T01:13:09", 8.3007, -48.78383], + ["2019-08-17T01:42:49", 8.29836, -48.78418], + ["2019-08-17T02:13:09", 8.29594, -48.78503], + ["2019-08-17T02:42:36", 8.29271, -48.78552], + ["2019-08-17T03:13:26", 8.28897, -48.78482], + ["2019-08-17T03:42:55", 8.28542, -48.78496], + ["2019-08-17T04:12:55", 8.28182, -48.78479], + ["2019-08-17T04:42:16", 8.27809, -48.78455], + ["2019-08-17T05:11:52", 8.27413, -48.78352], + ["2019-08-17T05:41:52", 8.27087, -48.7818], + ["2019-08-17T06:11:55", 8.26704, -48.78079], + ["2019-08-17T06:41:28", 8.26413, -48.78052], + ["2019-08-17T07:11:06", 8.26152, -48.78018], + ["2019-08-17T07:41:06", 8.2589, -48.78018], + ["2019-08-17T08:11:26", 8.25557, -48.78021], + ["2019-08-17T08:40:51", 8.25263, -48.77924], + ["2019-08-17T09:10:33", 8.25062, -48.77695], + ["2019-08-17T09:40:33", 8.24766, -48.77515], + ["2019-08-17T10:10:14", 8.24349, -48.77416], + ["2019-08-17T10:40:14", 8.23936, -48.77399], + ["2019-08-17T11:09:56", 8.23386, -48.77423], + ["2019-08-17T12:09:56", 8.23043, -48.77432], + ["2019-08-17T12:39:27", 8.22788, -48.77512], + ["2019-08-17T13:09:27", 8.22569, -48.77615], + ["2019-08-17T13:38:58", 8.22429, -48.77795], + ["2019-08-17T14:08:42", 8.22247, -48.7788], + ["2019-08-17T14:38:42", 8.22076, -48.7782], + ["2019-08-17T15:08:32", 8.21725, -48.77746], + ["2019-08-17T15:38:32", 8.21355, -48.77737], + ["2019-08-17T16:08:18", 8.20889, -48.77708], + ["2019-08-17T16:38:18", 8.20378, -48.77759], + ["2019-08-17T17:08:27", 8.19914, -48.77847], + ["2019-08-17T17:38:24", 8.19444, -48.77883], + ["2019-08-17T18:08:24", 8.18981, -48.77866], + ["2019-08-17T18:38:06", 8.18472, -48.7783], + ["2019-08-17T19:08:06", 8.17966, -48.77847], + ["2019-08-17T19:37:06", 8.17456, -48.77938], + ["2019-08-17T20:07:36", 8.16987, -48.77985], + ["2019-08-17T20:37:06", 8.16577, -48.7804], + ["2019-08-17T20:45:26", 8.16447, -48.78094], + ["2019-08-17T21:07:01", 8.16127, -48.78219], + ["2019-08-17T21:37:01", 8.15668, -48.78339], + ["2019-08-17T23:36:26", 8.13144, -48.79193], + ["2019-08-18T00:06:26", 8.12476, -48.79459], + ["2019-08-18T00:36:26", 8.11905, -48.79691], + ["2019-08-18T02:05:50", 8.11064, -48.80191], + ["2019-08-18T02:36:27", 8.11009, -48.80658], + ["2019-08-18T03:05:36", 8.11035, -48.81161], + ["2019-08-18T03:35:56", 8.10979, -48.8165], + ["2019-08-18T04:05:27", 8.10865, -48.81922], + ["2019-08-18T04:35:27", 8.10856, -48.82162], + ["2019-08-18T05:05:24", 8.10774, -48.82445], + ["2019-08-18T05:35:24", 8.10671, -48.82574], + ["2019-08-18T06:04:57", 8.10355, -48.82551], + ["2019-08-18T06:34:57", 8.10025, -48.82611], + ["2019-08-18T07:05:27", 8.0996, -48.82704], + ["2019-08-18T07:35:27", 8.10145, -48.82764], + ["2019-08-18T08:04:26", 8.10258, -48.82874], + ["2019-08-18T08:35:53", 8.10323, -48.83014], + ["2019-08-18T10:03:35", 8.10424, -48.83355], + ["2019-08-18T10:33:35", 8.10385, -48.83501], + ["2019-08-18T11:03:35", 8.10252, -48.8363], + ["2019-08-18T11:34:28", 8.10068, -48.83643], + ["2019-08-18T12:34:25", 8.09814, -48.83755], + ["2019-08-18T14:02:43", 8.09176, -48.84694], + ["2019-08-18T14:33:59", 8.08956, -48.85184], + ["2019-08-18T15:02:43", 8.08681, -48.85501], + ["2019-08-18T16:02:26", 8.08353, -48.86166], + ["2019-08-18T16:33:57", 8.08146, -48.86404], + ["2019-08-18T17:02:08", 8.07921, -48.86636], + ["2019-08-18T17:32:26", 8.0771, -48.86917], + ["2019-08-18T18:01:57", 8.07687, -48.87132], + ["2019-08-18T18:31:57", 8.07673, -48.87329], + ["2019-08-18T19:01:33", 8.07804, -48.87518], + ["2019-08-18T19:32:02", 8.07892, -48.87579], + ["2019-08-18T20:01:19", 8.0783, -48.87711], + ["2019-08-18T20:31:56", 8.07827, -48.87878], + ["2019-08-18T20:44:54", 8.07878, -48.88], + ["2019-08-18T21:00:47", 8.07971, -48.88205], + ["2019-08-18T21:30:47", 8.08048, -48.88574], + ["2019-08-18T22:00:47", 8.08078, -48.88763], + ["2019-08-18T22:31:10", 8.08065, -48.89151], + ["2019-08-18T23:00:24", 8.07916, -48.89464], + ["2019-08-18T23:31:03", 8.07691, -48.89734], + ["2019-08-19T00:00:24", 8.0747, -48.90048], + ["2019-08-19T00:30:26", 8.0732, -48.90264], + ["2019-08-19T01:00:26", 8.07346, -48.9047], + ["2019-08-19T01:30:26", 8.0747, -48.90753], + ["2019-08-19T01:59:59", 8.07653, -48.90955], + ["2019-08-19T02:30:26", 8.07909, -48.91174], + ["2019-08-19T02:59:52", 8.0824, -48.9137], + ["2019-08-19T03:30:27", 8.08618, -48.91647], + ["2019-08-19T03:59:41", 8.09004, -48.91742], + ["2019-08-19T04:29:26", 8.09365, -48.91855], + ["2019-08-19T04:59:26", 8.09614, -48.92035], + ["2019-08-19T05:29:06", 8.09869, -48.92165], + ["2019-08-19T05:59:06", 8.10041, -48.92096], + ["2019-08-19T06:29:58", 8.10242, -48.91852], + ["2019-08-19T06:58:49", 8.10321, -48.91534], + ["2019-08-19T07:29:08", 8.10394, -48.91196], + ["2019-08-19T07:58:35", 8.10486, -48.90833], + ["2019-08-19T08:28:58", 8.10608, -48.90509], + ["2019-08-19T09:00:26", 8.10754, -48.90193], + ["2019-08-19T09:30:26", 8.10853, -48.89764], + ["2019-08-19T09:57:51", 8.1092, -48.89367], + ["2019-08-19T10:27:51", 8.10834, -48.88904], + ["2019-08-19T10:58:58", 8.10664, -48.88464], + ["2019-08-19T13:28:26", 8.10326, -48.8669], + ["2019-08-19T13:58:26", 8.1069, -48.86355], + ["2019-08-19T14:28:26", 8.11257, -48.85934], + ["2019-08-19T14:56:12", 8.11647, -48.85388], + ["2019-08-19T15:26:00", 8.11691, -48.84787], + ["2019-08-19T15:56:26", 8.11713, -48.84158], + ["2019-08-19T16:25:39", 8.11682, -48.83548], + ["2019-08-19T16:56:56", 8.11738, -48.82822], + ["2019-08-19T17:25:55", 8.11808, -48.81966], + ["2019-08-19T17:55:55", 8.11825, -48.80927], + ["2019-08-19T18:54:57", 8.11572, -48.7882], + ["2019-08-19T19:24:57", 8.11509, -48.77842], + ["2019-08-19T19:54:57", 8.11422, -48.76984], + ["2019-08-19T20:45:25", 8.11536, -48.75464], + ["2019-08-19T20:54:58", 8.11547, -48.75165], + ["2019-08-19T21:23:52", 8.11623, -48.74173], + ["2019-08-19T21:53:31", 8.11722, -48.73219], + ["2019-08-19T22:23:31", 8.1174, -48.72421], + ["2019-08-19T22:53:41", 8.11727, -48.71613], + ["2019-08-19T23:23:05", 8.11703, -48.7085], + ["2019-08-20T00:22:28", 8.11637, -48.69497], + ["2019-08-20T00:52:28", 8.11547, -48.68845], + ["2019-08-20T01:22:28", 8.11453, -48.68176], + ["2019-08-20T01:52:57", 8.11351, -48.67374], + ["2019-08-20T03:21:45", 8.11205, -48.64979], + ["2019-08-20T03:51:45", 8.11205, -48.64138], + ["2019-08-20T04:21:45", 8.11128, -48.63297], + ["2019-08-20T04:51:48", 8.11134, -48.62424], + ["2019-08-20T05:22:06", 8.11233, -48.61542], + ["2019-08-20T05:51:39", 8.11318, -48.60709], + ["2019-08-20T06:21:39", 8.114, -48.59885], + ["2019-08-20T06:51:02", 8.11544, -48.59064], + ["2019-08-20T07:20:41", 8.11655, -48.58209], + ["2019-08-20T07:50:41", 8.11694, -48.57385], + ["2019-08-20T08:20:28", 8.11623, -48.56589], + ["2019-08-20T08:50:28", 8.11378, -48.55817], + ["2019-08-20T09:20:54", 8.10943, -48.55099], + ["2019-08-20T09:50:25", 8.10438, -48.5444], + ["2019-08-20T10:20:25", 8.09923, -48.54037], + ["2019-08-20T10:49:56", 8.09409, -48.53693], + ["2019-08-20T11:20:23", 8.0885, -48.53073], + ["2019-08-20T11:49:40", 8.08389, -48.52362], + ["2019-08-20T12:19:21", 8.07954, -48.51553], + ["2019-08-20T12:49:21", 8.07499, -48.50763], + ["2019-08-20T13:19:40", 8.07058, -48.4989], + ["2019-08-20T13:48:58", 8.06671, -48.49014], + ["2019-08-20T14:19:08", 8.06345, -48.48282], + ["2019-08-20T14:48:56", 8.0607, -48.47635], + ["2019-08-20T15:18:56", 8.05843, -48.46991], + ["2019-08-20T15:48:12", 8.05613, -48.46335], + ["2019-08-20T16:18:25", 8.0543, -48.45682], + ["2019-08-20T16:47:59", 8.05269, -48.44916], + ["2019-08-20T17:18:25", 8.0505, -48.4411], + ["2019-08-20T17:47:48", 8.04789, -48.43335], + ["2019-08-20T19:17:27", 8.03917, -48.40796], + ["2019-08-20T19:47:27", 8.03677, -48.40118], + ["2019-08-20T20:17:27", 8.03337, -48.39371], + ["2019-08-20T20:44:41", 8.03041, -48.38736], + ["2019-08-20T21:16:58", 8.02823, -48.38007], + ["2019-08-20T21:46:28", 8.02584, -48.37308], + ["2019-08-20T22:16:10", 8.0225, -48.36639], + ["2019-08-20T22:46:10", 8.01795, -48.36047], + ["2019-08-20T23:15:47", 8.01136, -48.35533], + ["2019-08-20T23:45:47", 8.00535, -48.35095], + ["2019-08-21T00:15:36", 7.99966, -48.34633], + ["2019-08-21T00:45:36", 7.99545, -48.34067], + ["2019-08-21T01:15:36", 7.99056, -48.33475], + ["2019-08-21T01:45:09", 7.98528, -48.33026], + ["2019-08-21T02:15:26", 7.97957, -48.32474], + ["2019-08-21T02:45:23", 7.97346, -48.3193], + ["2019-08-21T03:15:23", 7.96689, -48.31509], + ["2019-08-21T03:44:42", 7.9614, -48.31119], + ["2019-08-21T04:14:57", 7.95589, -48.30695], + ["2019-08-21T04:44:24", 7.95023, -48.30258], + ["2019-08-21T05:14:57", 7.94565, -48.29953], + ["2019-08-21T05:44:07", 7.94135, -48.2963], + ["2019-08-21T06:14:26", 7.93711, -48.29102], + ["2019-08-21T07:13:57", 7.92881, -48.28218], + ["2019-08-21T07:43:57", 7.9249, -48.27875], + ["2019-08-21T08:13:57", 7.92027, -48.276], + ["2019-08-21T08:43:18", 7.9155, -48.27402], + ["2019-08-21T09:13:26", 7.90964, -48.27234], + ["2019-08-21T09:42:50", 7.90197, -48.27078], + ["2019-08-21T10:12:56", 7.89382, -48.26895], + ["2019-08-21T10:42:57", 7.88681, -48.26914], + ["2019-08-21T11:12:57", 7.88024, -48.26965], + ["2019-08-21T11:42:09", 7.87479, -48.27026], + ["2019-08-21T12:12:26", 7.86992, -48.27011], + ["2019-08-21T12:41:49", 7.86631, -48.26993], + ["2019-08-21T13:12:06", 7.86165, -48.27069], + ["2019-08-21T13:41:57", 7.85715, -48.27471], + ["2019-08-21T14:11:57", 7.85307, -48.27634], + ["2019-08-21T14:41:27", 7.85026, -48.27939], + ["2019-08-21T15:11:07", 7.84909, -48.28307], + ["2019-08-21T15:41:07", 7.84909, -48.28625], + ["2019-08-21T16:11:25", 7.84873, -48.29062], + ["2019-08-21T16:40:57", 7.8501, -48.29653], + ["2019-08-21T17:10:57", 7.85306, -48.30511], + ["2019-08-21T17:40:35", 7.85695, -48.31257], + ["2019-08-21T18:10:35", 7.8612, -48.3172], + ["2019-08-21T18:40:08", 7.8658, -48.32001], + ["2019-08-21T19:09:51", 7.8702, -48.32058], + ["2019-08-21T19:39:51", 7.87415, -48.32101], + ["2019-08-21T20:09:37", 7.88283, -48.31931], + ["2019-08-21T20:39:37", 7.88313, -48.31931], + ["2019-08-21T20:44:53", 7.88393, -48.31906], + ["2019-08-21T21:39:41", 7.89221, -48.31482], + ["2019-08-21T22:09:17", 7.89653, -48.31456], + ["2019-08-21T22:39:17", 7.90125, -48.31516], + ["2019-08-21T23:09:35", 7.90669, -48.31485], + ["2019-08-21T23:39:05", 7.91085, -48.31256], + ["2019-08-22T00:08:52", 7.91474, -48.31059], + ["2019-08-22T00:38:52", 7.9174, -48.30862], + ["2019-08-22T01:09:27", 7.92146, -48.30734], + ["2019-08-22T01:38:57", 7.9248, -48.30552], + ["2019-08-22T02:08:57", 7.92759, -48.302], + ["2019-08-22T02:38:31", 7.9311, -48.29933], + ["2019-08-22T03:08:31", 7.93612, -48.29538], + ["2019-08-22T03:38:28", 7.94008, -48.29181], + ["2019-08-22T04:08:28", 7.94377, -48.28821], + ["2019-08-22T04:37:24", 7.94577, -48.2851], + ["2019-08-22T05:07:12", 7.9491, -48.28047], + ["2019-08-22T05:37:12", 7.95275, -48.27747], + ["2019-08-22T06:06:57", 7.95741, -48.27647], + ["2019-08-22T06:36:57", 7.96303, -48.27518], + ["2019-08-22T07:36:39", 7.97313, -48.26376], + ["2019-08-22T08:07:29", 7.97744, -48.25662], + ["2019-08-22T10:05:36", 7.98485, -48.22317], + ["2019-08-22T10:35:36", 7.98429, -48.21313], + ["2019-08-22T11:05:36", 7.98399, -48.20377], + ["2019-08-22T11:36:55", 7.98243, -48.19406], + ["2019-08-22T12:07:25", 7.98007, -48.18652], + ["2019-08-22T12:37:25", 7.97805, -48.17734], + ["2019-08-22T13:35:21", 7.97254, -48.16336], + ["2019-08-22T14:05:35", 7.97055, -48.1568], + ["2019-08-22T14:35:28", 7.96814, -48.15205], + ["2019-08-22T15:05:28", 7.96398, -48.14639], + ["2019-08-22T15:34:33", 7.96141, -48.13934], + ["2019-08-22T16:04:58", 7.95912, -48.13458], + ["2019-08-22T17:04:27", 7.95475, -48.12513], + ["2019-08-22T17:34:07", 7.95254, -48.12094], + ["2019-08-22T18:04:27", 7.95063, -48.11603], + ["2019-08-22T18:34:26", 7.9482, -48.10964], + ["2019-08-22T19:04:26", 7.94554, -48.10303], + ["2019-08-22T19:33:19", 7.94399, -48.09607], + ["2019-08-22T20:04:28", 7.94239, -48.08835], + ["2019-08-22T20:33:29", 7.94063, -48.07704], + ["2019-08-22T21:03:29", 7.9402, -48.07086], + ["2019-08-22T21:32:40", 7.93934, -48.06067], + ["2019-08-22T22:02:59", 7.93845, -48.0506], + ["2019-08-22T22:32:22", 7.93862, -48.04065], + ["2019-08-22T23:03:28", 7.93954, -48.02917], + ["2019-08-22T23:32:46", 7.93783, -48.01692], + ["2019-08-23T00:02:46", 7.93538, -48.00525], + ["2019-08-23T00:32:08", 7.93342, -47.99469], + ["2019-08-23T01:02:30", 7.92979, -47.9838], + ["2019-08-23T01:31:32", 7.92573, -47.97409], + ["2019-08-23T02:01:58", 7.92051, -47.9628], + ["2019-08-23T02:31:15", 7.91505, -47.95114], + ["2019-08-23T03:01:58", 7.90859, -47.93961], + ["2019-08-23T03:32:27", 7.90186, -47.92801], + ["2019-08-23T04:02:27", 7.89401, -47.91522], + ["2019-08-23T04:31:57", 7.88745, -47.90376], + ["2019-08-23T05:01:57", 7.8802, -47.8938], + ["2019-08-23T06:01:57", 7.86667, -47.87152], + ["2019-08-23T06:30:10", 7.86154, -47.86111], + ["2019-08-23T06:59:48", 7.8554, -47.84861], + ["2019-08-23T07:29:48", 7.84948, -47.83737], + ["2019-08-23T07:59:33", 7.84122, -47.82481], + ["2019-08-23T08:29:33", 7.83504, -47.8158], + ["2019-08-23T08:59:03", 7.82739, -47.80294], + ["2019-08-23T09:29:03", 7.81842, -47.78912], + ["2019-08-23T09:59:03", 7.80997, -47.77856], + ["2019-08-23T10:28:52", 7.80154, -47.7676], + ["2019-08-23T10:58:52", 7.79279, -47.75644], + ["2019-08-23T12:29:04", 7.76592, -47.72507], + ["2019-08-23T12:59:04", 7.75837, -47.71529], + ["2019-08-23T13:29:04", 7.74914, -47.70267], + ["2019-08-23T13:58:14", 7.74079, -47.69125], + ["2019-08-23T14:29:27", 7.73121, -47.67963], + ["2019-08-23T15:57:30", 7.7039, -47.6434], + ["2019-08-23T16:27:30", 7.69497, -47.63027], + ["2019-08-23T16:57:30", 7.6866, -47.61765], + ["2019-08-23T17:27:20", 7.67761, -47.60458], + ["2019-08-23T17:59:57", 7.66829, -47.59158], + ["2019-08-23T18:26:37", 7.66052, -47.58017], + ["2019-08-23T18:56:37", 7.65383, -47.56558], + ["2019-08-23T20:56:13", 7.62968, -47.51358], + ["2019-08-23T21:25:50", 7.62431, -47.49978], + ["2019-08-23T21:58:27", 7.61778, -47.48505], + ["2019-08-23T22:25:50", 7.61195, -47.4718], + ["2019-08-23T23:26:30", 7.59885, -47.44318], + ["2019-08-24T00:27:01", 7.5875, -47.41501], + ["2019-08-24T00:55:15", 7.5834, -47.40054], + ["2019-08-24T01:25:00", 7.57969, -47.38537], + ["2019-08-24T01:55:00", 7.57553, -47.37164], + ["2019-08-24T02:25:27", 7.57073, -47.35737], + ["2019-08-24T02:55:27", 7.56571, -47.34235], + ["2019-08-24T03:24:37", 7.5628, -47.32709], + ["2019-08-24T03:54:38", 7.56019, -47.31269], + ["2019-08-24T04:24:38", 7.55693, -47.29758], + ["2019-08-24T04:54:16", 7.55493, -47.28257], + ["2019-08-24T05:24:16", 7.55253, -47.26901], + ["2019-08-24T05:54:11", 7.54902, -47.25429], + ["2019-08-24T06:24:11", 7.54494, -47.24219], + ["2019-08-24T06:54:11", 7.54108, -47.2294], + ["2019-08-24T07:23:37", 7.53705, -47.21664], + ["2019-08-24T07:53:37", 7.53323, -47.20316], + ["2019-08-24T08:23:29", 7.52914, -47.1899], + ["2019-08-24T08:53:29", 7.52451, -47.17694], + ["2019-08-24T09:22:46", 7.52155, -47.16431], + ["2019-08-24T09:52:56", 7.51792, -47.15262], + ["2019-08-24T10:22:27", 7.5136, -47.14014], + ["2019-08-24T11:22:03", 7.50771, -47.117], + ["2019-08-24T11:51:46", 7.50548, -47.10483], + ["2019-08-24T12:21:46", 7.50368, -47.09204], + ["2019-08-24T12:51:56", 7.50293, -47.07852], + ["2019-08-24T13:21:22", 7.50178, -47.06665], + ["2019-08-24T13:51:07", 7.49975, -47.05432], + ["2019-08-24T14:21:07", 7.49816, -47.04196], + ["2019-08-24T14:50:39", 7.49594, -47.02927], + ["2019-08-24T15:20:39", 7.49487, -47.01794], + ["2019-08-24T15:50:20", 7.49432, -47.00534], + ["2019-08-24T16:20:20", 7.49411, -46.99478], + ["2019-08-24T16:50:57", 7.49528, -46.98386], + ["2019-08-24T17:20:02", 7.49738, -46.97446], + ["2019-08-24T17:49:42", 7.50107, -46.96431], + ["2019-08-24T18:19:42", 7.50403, -46.95401], + ["2019-08-24T18:49:27", 7.50718, -46.94435], + ["2019-08-24T19:19:27", 7.50933, -46.93396], + ["2019-08-24T19:49:56", 7.51014, -46.92349], + ["2019-08-24T20:19:13", 7.50954, -46.9136], + ["2019-08-24T20:45:01", 7.50782, -46.90451], + ["2019-08-24T20:50:56", 7.50759, -46.90253], + ["2019-08-24T21:18:48", 7.50694, -46.8941], + ["2019-08-24T21:48:48", 7.50608, -46.8844], + ["2019-08-24T22:18:34", 7.50622, -46.87513], + ["2019-08-24T22:48:34", 7.50673, -46.86603], + ["2019-08-24T23:18:58", 7.50587, -46.85608], + ["2019-08-24T23:48:23", 7.50533, -46.84741], + ["2019-08-25T00:18:58", 7.50526, -46.84003], + ["2019-08-25T00:48:26", 7.505, -46.83254], + ["2019-08-25T01:18:26", 7.5047, -46.82413], + ["2019-08-25T02:17:55", 7.50401, -46.80692], + ["2019-08-25T03:17:28", 7.50686, -46.79141], + ["2019-08-25T03:47:08", 7.50867, -46.78363], + ["2019-08-25T04:17:28", 7.51051, -46.77545], + ["2019-08-25T04:46:53", 7.5126, -46.76819], + ["2019-08-25T06:46:29", 7.52899, -46.73425], + ["2019-08-25T07:17:29", 7.53377, -46.72723], + ["2019-08-25T07:46:22", 7.53809, -46.72101], + ["2019-08-25T08:16:08", 7.54335, -46.71506], + ["2019-08-25T08:46:08", 7.54691, -46.70819], + ["2019-08-25T09:45:50", 7.55308, -46.69275], + ["2019-08-25T11:45:14", 7.56748, -46.66736], + ["2019-08-25T16:13:55", 7.60529, -46.61093], + ["2019-08-25T19:44:58", 7.65323, -46.57471], + ["2019-08-25T23:12:34", 7.68502, -46.52805], + ["2019-08-25T23:41:52", 7.68923, -46.52039], + ["2019-08-26T00:12:34", 7.69352, -46.51303], + ["2019-08-26T02:12:10", 7.7115, -46.48424], + ["2019-08-26T02:42:10", 7.71708, -46.47694], + ["2019-08-26T03:12:10", 7.72395, -46.46887], + ["2019-08-26T04:11:28", 7.7366, -46.45636], + ["2019-08-26T05:09:41", 7.74864, -46.44193], + ["2019-08-26T05:39:49", 7.75403, -46.43634], + ["2019-08-26T06:09:41", 7.75838, -46.43051], + ["2019-08-26T06:42:28", 7.76446, -46.42349], + ["2019-08-26T08:12:28", 7.77826, -46.40506], + ["2019-08-26T11:10:31", 7.80317, -46.36957], + ["2019-08-26T11:40:31", 7.80836, -46.36416], + ["2019-08-26T12:10:31", 7.80982, -46.35403], + ["2019-08-26T14:37:20", 7.81003, -46.30197], + ["2019-08-26T15:36:54", 7.80965, -46.2814], + ["2019-08-26T17:06:32", 7.81372, -46.24674], + ["2019-08-26T17:36:32", 7.81548, -46.23635], + ["2019-08-26T18:06:32", 7.81814, -46.22717], + ["2019-08-26T18:36:11", 7.82096, -46.21704], + ["2019-08-26T19:06:11", 7.82289, -46.20743], + ["2019-08-26T19:44:39", 7.82954, -46.17902], + ["2019-08-26T20:14:39", 7.82984, -46.1773], + ["2019-08-26T20:44:39", 7.83005, -46.17593], + ["2019-08-26T21:05:36", 7.83142, -46.16876], + ["2019-08-26T21:35:26", 7.83357, -46.15869], + ["2019-08-26T22:05:32", 7.83608, -46.14703], + ["2019-08-26T22:35:32", 7.83853, -46.13596], + ["2019-08-26T23:05:32", 7.83892, -46.12497], + ["2019-08-26T23:34:34", 7.83853, -46.11462], + ["2019-08-27T00:05:06", 7.83793, -46.10425], + ["2019-08-27T00:33:58", 7.83585, -46.09612], + ["2019-08-27T01:03:58", 7.83375, -46.08831], + ["2019-08-27T01:33:58", 7.83122, -46.0817], + ["2019-08-27T02:04:29", 7.82754, -46.07388], + ["2019-08-27T04:32:49", 7.80656, -46.03723], + ["2019-08-27T05:02:49", 7.8015, -46.03105], + ["2019-08-27T05:32:49", 7.79704, -46.0253], + ["2019-08-27T06:32:30", 7.78936, -46.01453], + ["2019-08-27T07:31:52", 7.78319, -46.00362], + ["2019-08-27T08:01:52", 7.77933, -45.99967], + ["2019-08-27T08:31:52", 7.77538, -45.99701], + ["2019-08-27T09:02:28", 7.773, -45.99377], + ["2019-08-27T09:31:59", 7.77038, -45.98953], + ["2019-08-27T10:01:59", 7.76699, -45.98309], + ["2019-08-27T12:30:39", 7.73665, -45.9673], + ["2019-08-27T13:00:39", 7.72609, -45.96404], + ["2019-08-27T13:30:39", 7.71626, -45.96155], + ["2019-08-27T14:00:34", 7.70474, -45.95853], + ["2019-08-27T14:30:22", 7.69354, -45.95551], + ["2019-08-27T15:00:22", 7.68371, -45.95328], + ["2019-08-27T15:30:36", 7.67408, -45.95088], + ["2019-08-27T16:00:36", 7.66614, -45.94882], + ["2019-08-27T16:30:27", 7.65971, -45.94666], + ["2019-08-27T17:00:02", 7.65332, -45.94479], + ["2019-08-27T17:59:52", 7.64078, -45.94632], + ["2019-08-27T19:45:11", 7.63478, -45.96567], + ["2019-08-27T20:15:11", 7.63512, -45.96713], + ["2019-08-27T20:45:11", 7.63555, -45.9679], + ["2019-08-27T20:58:50", 7.63639, -45.96953], + ["2019-08-27T21:28:50", 7.63652, -45.97253], + ["2019-08-27T21:59:11", 7.63588, -45.97514], + ["2019-08-27T22:29:11", 7.63481, -45.97668], + ["2019-08-27T22:59:11", 7.63335, -45.97745], + ["2019-08-27T23:59:00", 7.6302, -45.98135], + ["2019-08-28T00:29:00", 7.62771, -45.98401], + ["2019-08-28T00:59:00", 7.62453, -45.9859], + ["2019-08-28T01:27:48", 7.62178, -45.98776], + ["2019-08-28T01:57:22", 7.62005, -45.98923], + ["2019-08-28T02:27:22", 7.61846, -45.99146], + ["2019-08-28T02:56:57", 7.61663, -45.99329], + ["2019-08-28T03:26:57", 7.61461, -45.99509], + ["2019-08-28T04:56:45", 7.6124, -46.00664], + ["2019-08-28T05:26:45", 7.61287, -46.01119], + ["2019-08-28T05:56:45", 7.61553, -46.01651], + ["2019-08-28T06:26:32", 7.61877, -46.02309], + ["2019-08-28T06:56:32", 7.62302, -46.03073], + ["2019-08-28T07:26:01", 7.62948, -46.04004], + ["2019-08-28T07:56:01", 7.63553, -46.04742], + ["2019-08-28T08:25:22", 7.64132, -46.05179], + ["2019-08-28T08:55:32", 7.64917, -46.05573], + ["2019-08-28T09:25:08", 7.65676, -46.06006], + ["2019-08-28T14:53:56", 7.76492, -46.0881], + ["2019-08-28T15:25:27", 7.77539, -46.08951], + ["2019-08-28T15:53:48", 7.78538, -46.08963], + ["2019-08-28T16:23:56", 7.79763, -46.08907], + ["2019-08-28T16:53:56", 7.81068, -46.08838], + ["2019-08-28T17:23:56", 7.8242, -46.08572], + ["2019-08-28T18:23:56", 7.8505, -46.08398], + ["2019-08-28T18:53:56", 7.86247, -46.08123], + ["2019-08-28T19:23:56", 7.87427, -46.0784], + ["2019-08-28T19:52:14", 7.88528, -46.07684], + ["2019-08-28T20:25:29", 7.89676, -46.07394], + ["2019-08-28T20:52:30", 7.90648, -46.07166], + ["2019-08-28T21:22:30", 7.91712, -46.06806], + ["2019-08-28T21:52:30", 7.92673, -46.06308], + ["2019-08-28T23:22:11", 7.95976, -46.04804], + ["2019-08-28T23:52:11", 7.97075, -46.04126], + ["2019-08-29T00:22:11", 7.98045, -46.03268], + ["2019-08-29T00:51:08", 7.98947, -46.02524], + ["2019-08-29T01:21:08", 7.99848, -46.01743], + ["2019-08-29T01:50:14", 8.00758, -46.00957], + ["2019-08-29T02:20:14", 8.01698, -46.00116], + ["2019-08-29T02:50:14", 8.02561, -45.99292], + ["2019-08-29T04:49:50", 8.05537, -45.95627], + ["2019-08-29T05:20:01", 8.06304, -45.94799], + ["2019-08-29T05:50:01", 8.07154, -45.94069], + ["2019-08-29T06:20:01", 8.07874, -45.93091], + ["2019-08-29T06:48:47", 8.08311, -45.92199], + ["2019-08-29T07:18:47", 8.08564, -45.91538], + ["2019-08-29T07:48:47", 8.08689, -45.91092], + ["2019-08-29T08:19:09", 8.08672, -45.90662], + ["2019-08-29T09:47:59", 8.08801, -45.89134], + ["2019-08-29T10:17:59", 8.08998, -45.88533], + ["2019-08-29T10:47:59", 8.09088, -45.87958], + ["2019-08-29T11:17:30", 8.09159, -45.87524], + ["2019-08-29T11:47:59", 8.09249, -45.86975], + ["2019-08-29T13:16:45", 8.1, -45.85906], + ["2019-08-29T13:46:45", 8.10237, -45.85563], + ["2019-08-29T14:16:45", 8.10296, -45.8522], + ["2019-08-29T14:47:09", 8.10417, -45.84866], + ["2019-08-29T15:16:35", 8.10547, -45.84723], + ["2019-08-29T15:46:21", 8.10615, -45.84528], + ["2019-08-29T16:16:21", 8.10774, -45.84296], + ["2019-08-29T16:46:26", 8.10903, -45.84045], + ["2019-08-29T17:16:04", 8.1095, -45.83792], + ["2019-08-29T17:46:26", 8.10741, -45.8353], + ["2019-08-29T18:15:56", 8.10558, -45.83334], + ["2019-08-29T18:46:29", 8.10365, -45.83197], + ["2019-08-29T19:15:48", 8.10591, -45.83099], + ["2019-08-29T19:46:08", 8.10979, -45.82993], + ["2019-08-29T20:15:39", 8.11314, -45.82919], + ["2019-08-29T20:45:35", 8.11622, -45.82827], + ["2019-08-29T21:15:35", 8.11965, -45.82681], + ["2019-08-29T21:45:15", 8.1231, -45.82438], + ["2019-08-29T22:15:15", 8.12555, -45.82352], + ["2019-08-29T22:45:37", 8.12811, -45.82346], + ["2019-08-29T23:15:05", 8.12961, -45.82339], + ["2019-08-29T23:45:26", 8.13184, -45.82358], + ["2019-08-30T00:14:39", 8.13423, -45.82343], + ["2019-08-30T00:44:39", 8.13771, -45.82309], + ["2019-08-30T01:14:39", 8.14131, -45.823], + ["2019-08-30T01:44:17", 8.14486, -45.82254], + ["2019-08-30T02:14:17", 8.14799, -45.82108], + ["2019-08-30T02:44:25", 8.15147, -45.81879], + ["2019-08-30T03:44:30", 8.15241, -45.81534], + ["2019-08-30T04:13:45", 8.1494, -45.81564], + ["2019-08-30T04:43:25", 8.14612, -45.81726], + ["2019-08-30T05:13:25", 8.14087, -45.82104], + ["2019-08-30T05:43:55", 8.13607, -45.82516], + ["2019-08-30T06:13:05", 8.13214, -45.83002], + ["2019-08-30T06:43:26", 8.12939, -45.83527], + ["2019-08-30T07:12:21", 8.12665, -45.84171], + ["2019-08-30T07:42:59", 8.12705, -45.84695], + ["2019-08-30T08:12:21", 8.12721, -45.85107], + ["2019-08-30T08:42:27", 8.12752, -45.85321], + ["2019-08-30T09:11:57", 8.12871, -45.85501], + ["2019-08-30T09:42:27", 8.13083, -45.85733], + ["2019-08-30T10:11:44", 8.13278, -45.85837], + ["2019-08-30T10:41:19", 8.13465, -45.86007], + ["2019-08-30T11:11:19", 8.13559, -45.8605], + ["2019-08-30T11:41:02", 8.13779, -45.86319], + ["2019-08-30T12:11:02", 8.14006, -45.86688], + ["2019-08-30T12:40:44", 8.14167, -45.87192], + ["2019-08-30T13:10:44", 8.14213, -45.8757], + ["2019-08-30T13:40:57", 8.1425, -45.87946], + ["2019-08-30T14:10:55", 8.14433, -45.88401], + ["2019-08-30T14:40:55", 8.14673, -45.88864], + ["2019-08-30T15:10:26", 8.14927, -45.8927], + ["2019-08-30T15:40:26", 8.15094, -45.89639], + ["2019-08-30T16:09:48", 8.15257, -45.90112], + ["2019-08-30T16:39:57", 8.15573, -45.90555], + ["2019-08-30T17:09:21", 8.15666, -45.90894], + ["2019-08-30T17:39:01", 8.15197, -45.91325], + ["2019-08-30T18:09:01", 8.14661, -45.9184], + ["2019-08-30T18:38:42", 8.14533, -45.92349], + ["2019-08-30T19:08:42", 8.14683, -45.92606], + ["2019-08-30T19:38:57", 8.15035, -45.92731], + ["2019-08-30T20:08:16", 8.1533, -45.92831], + ["2019-08-30T20:14:36", 8.15626, -45.92998], + ["2019-08-30T20:44:36", 8.15665, -45.93015], + ["2019-08-30T21:07:53", 8.15879, -45.93048], + ["2019-08-30T21:37:58", 8.16236, -45.9314], + ["2019-08-30T22:07:43", 8.16656, -45.93341], + ["2019-08-30T22:38:06", 8.17176, -45.93567], + ["2019-08-30T23:07:13", 8.17831, -45.93785], + ["2019-08-30T23:37:13", 8.18308, -45.93948], + ["2019-08-31T00:07:13", 8.18793, -45.94205], + ["2019-08-31T00:37:28", 8.19051, -45.94443], + ["2019-08-31T01:06:56", 8.19154, -45.94492], + ["2019-08-31T01:37:24", 8.1952, -45.94717], + ["2019-08-31T02:06:39", 8.199, -45.9502], + ["2019-08-31T02:36:58", 8.20227, -45.95422], + ["2019-08-31T03:06:30", 8.204, -45.95856], + ["2019-08-31T03:36:30", 8.20649, -45.96371], + ["2019-08-31T04:06:03", 8.21003, -45.96924], + ["2019-08-31T04:36:27", 8.21292, -45.97507], + ["2019-08-31T05:05:51", 8.21704, -45.98096], + ["2019-08-31T05:36:26", 8.21956, -45.9852], + ["2019-08-31T06:05:11", 8.22322, -45.98901], + ["2019-08-31T06:35:55", 8.22789, -45.99319], + ["2019-08-31T07:05:11", 8.23079, -45.99622], + ["2019-08-31T07:34:48", 8.2318, -46.00111], + ["2019-08-31T08:04:48", 8.233, -46.00549], + ["2019-08-31T08:34:54", 8.23382, -46.00882], + ["2019-08-31T09:04:32", 8.23628, -46.01062], + ["2019-08-31T09:34:56", 8.23916, -46.01129], + ["2019-08-31T10:04:16", 8.24206, -46.01233], + ["2019-08-31T10:34:26", 8.2455, -46.01331], + ["2019-08-31T11:04:27", 8.24879, -46.01484], + ["2019-08-31T11:34:27", 8.25231, -46.01776], + ["2019-08-31T12:03:56", 8.25433, -46.02151], + ["2019-08-31T12:33:56", 8.25728, -46.0264], + ["2019-08-31T13:03:19", 8.25841, -46.03052], + ["2019-08-31T13:33:27", 8.26022, -46.03329], + ["2019-08-31T14:02:59", 8.26338, -46.03723], + ["2019-08-31T14:32:46", 8.26854, -46.04076], + ["2019-08-31T15:02:46", 8.27177, -46.04428], + ["2019-08-31T15:32:25", 8.27538, -46.04767], + ["2019-08-31T16:02:25", 8.27826, -46.05136], + ["2019-08-31T16:32:38", 8.28004, -46.05606], + ["2019-08-31T17:02:09", 8.28125, -46.05905], + ["2019-08-31T17:32:25", 8.28138, -46.06232], + ["2019-08-31T18:02:09", 8.28064, -46.06622], + ["2019-08-31T18:32:09", 8.2784, -46.07068], + ["2019-08-31T19:01:37", 8.27877, -46.07428], + ["2019-08-31T19:31:56", 8.27865, -46.07733], + ["2019-08-31T20:01:30", 8.28032, -46.08075], + ["2019-08-31T20:31:55", 8.28279, -46.08408], + ["2019-08-31T20:45:22", 8.28363, -46.08505], + ["2019-08-31T21:01:57", 8.28484, -46.08563], + ["2019-08-31T21:31:57", 8.28586, -46.08795], + ["2019-08-31T22:01:12", 8.28691, -46.08841], + ["2019-08-31T22:30:46", 8.28795, -46.08964], + ["2019-08-31T23:00:46", 8.28954, -46.09076], + ["2019-08-31T23:30:56", 8.29133, -46.09171], + ["2019-09-01T00:00:25", 8.29222, -46.09122], + ["2019-09-01T00:30:56", 8.29374, -46.09134], + ["2019-09-01T01:00:13", 8.2954, -46.09137], + ["2019-09-01T01:30:24", 8.29712, -46.09222], + ["2019-09-01T02:00:23", 8.29907, -46.09368], + ["2019-09-01T02:30:23", 8.30152, -46.09497], + ["2019-09-01T02:59:43", 8.30457, -46.09747], + ["2019-09-01T03:29:57", 8.3073, -46.10016], + ["2019-09-01T03:59:27", 8.3089, -46.10187], + ["2019-09-01T04:29:55", 8.3111, -46.10458], + ["2019-09-01T04:59:08", 8.31344, -46.10843], + ["2019-09-01T05:28:58", 8.31579, -46.11157], + ["2019-09-01T05:58:58", 8.3191, -46.11389], + ["2019-09-01T06:29:05", 8.32152, -46.116], + ["2019-09-01T06:59:05", 8.32449, -46.1196], + ["2019-09-01T07:29:05", 8.32591, -46.12149], + ["2019-09-01T07:58:56", 8.3275, -46.12258], + ["2019-09-01T08:28:56", 8.33071, -46.12112], + ["2019-09-01T09:57:51", 8.3476, -46.11428], + ["2019-09-01T10:27:51", 8.35352, -46.11248], + ["2019-09-01T10:57:51", 8.35737, -46.10922], + ["2019-09-01T11:27:35", 8.36068, -46.10747], + ["2019-09-01T11:57:35", 8.36274, -46.10593], + ["2019-09-01T12:27:16", 8.36639, -46.10543], + ["2019-09-01T12:57:16", 8.37144, -46.10629], + ["2019-09-01T13:27:26", 8.37523, -46.1058], + ["2019-09-01T13:57:25", 8.37838, -46.10597], + ["2019-09-01T14:27:25", 8.38095, -46.10477], + ["2019-09-01T14:56:31", 8.38227, -46.10248], + ["2019-09-01T15:26:04", 8.38288, -46.10124], + ["2019-09-01T15:56:04", 8.38301, -46.09961], + ["2019-09-01T16:26:27", 8.38364, -46.09653], + ["2019-09-01T16:55:49", 8.38216, -46.09357], + ["2019-09-01T17:25:56", 8.37782, -46.09055], + ["2019-09-01T17:55:36", 8.37246, -46.08845], + ["2019-09-01T18:25:36", 8.36872, -46.08759], + ["2019-09-01T18:55:11", 8.36712, -46.08673], + ["2019-09-01T19:25:26", 8.36574, -46.08463], + ["2019-09-01T19:54:45", 8.36572, -46.08157], + ["2019-09-01T20:14:52", 8.36761, -46.07932], + ["2019-09-01T20:44:52", 8.36778, -46.07855], + ["2019-09-01T20:54:24", 8.36797, -46.07785], + ["2019-09-01T21:24:56", 8.37038, -46.07373], + ["2019-09-01T22:24:24", 8.38166, -46.06326], + ["2019-09-01T22:53:57", 8.38556, -46.05767], + ["2019-09-01T23:23:57", 8.38955, -46.05484], + ["2019-09-01T23:53:27", 8.39259, -46.05173], + ["2019-09-02T00:23:27", 8.39525, -46.0495], + ["2019-09-02T00:52:55", 8.39833, -46.04693], + ["2019-09-02T01:22:55", 8.40173, -46.04333], + ["2019-09-02T01:52:27", 8.40494, -46.04056], + ["2019-09-02T02:22:09", 8.40919, -46.03886], + ["2019-09-02T02:52:09", 8.41224, -46.03534], + ["2019-09-02T03:21:53", 8.41578, -46.0314], + ["2019-09-02T03:51:53", 8.41724, -46.02814], + ["2019-09-02T04:22:08", 8.41369, -46.02686], + ["2019-09-02T04:51:42", 8.40812, -46.02768], + ["2019-09-02T05:21:56", 8.40227, -46.02539], + ["2019-09-02T05:51:38", 8.39625, -46.02214], + ["2019-09-02T06:21:38", 8.39333, -46.01776], + ["2019-09-02T06:51:05", 8.39262, -46.01669], + ["2019-09-02T07:21:26", 8.39274, -46.0166], + ["2019-09-02T08:20:38", 8.39255, -46.01798], + ["2019-09-02T08:50:28", 8.39642, -46.01822], + ["2019-09-02T09:20:38", 8.39826, -46.01627], + ["2019-09-02T09:50:14", 8.40161, -46.01636], + ["2019-09-02T10:20:36", 8.40441, -46.01614], + ["2019-09-02T10:50:07", 8.40802, -46.01443], + ["2019-09-02T11:20:08", 8.41137, -46.01039], + ["2019-09-02T11:50:08", 8.41258, -46.00679], + ["2019-09-02T12:20:08", 8.41583, -46.00241], + ["2019-09-02T12:49:34", 8.41961, -45.99863], + ["2019-09-02T13:19:57", 8.42465, -45.995], + ["2019-09-02T13:49:20", 8.42928, -45.99341], + ["2019-09-02T14:19:37", 8.43338, -45.99213], + ["2019-09-02T14:49:14", 8.43642, -45.99155], + ["2019-09-02T15:19:39", 8.43491, -45.99319], + ["2019-09-02T15:49:02", 8.43305, -45.99567], + ["2019-09-02T16:19:24", 8.43204, -45.99771], + ["2019-09-02T16:48:46", 8.43473, -45.99976], + ["2019-09-02T17:19:26", 8.4384, -46.00113], + ["2019-09-02T17:48:39", 8.44145, -46.00269], + ["2019-09-02T18:18:57", 8.4444, -46.00253], + ["2019-09-02T18:48:56", 8.44752, -46.00208], + ["2019-09-02T19:18:56", 8.45048, -46.00165], + ["2019-09-02T19:48:25", 8.45334, -46.00243], + ["2019-09-02T20:18:25", 8.45736, -46.00397], + ["2019-09-02T20:47:22", 8.46082, -46.00528], + ["2019-09-02T21:18:08", 8.46382, -46.00644], + ["2019-09-02T21:47:22", 8.467, -46.00931], + ["2019-09-02T22:46:46", 8.47293, -46.01093], + ["2019-09-02T23:16:33", 8.47827, -46.01187], + ["2019-09-02T23:46:33", 8.48239, -46.01178], + ["2019-09-03T00:17:02", 8.48687, -46.01022], + ["2019-09-03T00:46:22", 8.4909, -46.00891], + ["2019-09-03T01:16:38", 8.49532, -46.00778], + ["2019-09-03T02:16:06", 8.50281, -46.00615], + ["2019-09-03T02:46:06", 8.5062, -46.00503], + ["2019-09-03T03:16:06", 8.50902, -46.00546], + ["2019-09-03T03:45:55", 8.51108, -46.00539], + ["2019-09-03T04:15:55", 8.51258, -46.00522], + ["2019-09-03T04:45:26", 8.51411, -46.00443], + ["2019-09-03T05:15:57", 8.51704, -46.00427], + ["2019-09-03T05:45:28", 8.52009, -46.00342], + ["2019-09-03T06:15:28", 8.52447, -46.00308], + ["2019-09-03T06:44:49", 8.5283, -46.00363], + ["2019-09-03T07:14:55", 8.53232, -46.00519], + ["2019-09-03T07:44:35", 8.53581, -46.00659], + ["2019-09-03T08:14:52", 8.53679, -46.00684], + ["2019-09-03T08:44:14", 8.54115, -46.00809], + ["2019-09-03T09:14:25", 8.54432, -46.00809], + ["2019-09-03T09:44:25", 8.54766, -46.00826], + ["2019-09-03T10:14:25", 8.55439, -46.01041], + ["2019-09-03T10:43:56", 8.56, -46.01296], + ["2019-09-03T11:13:56", 8.56408, -46.01553], + ["2019-09-03T11:43:38", 8.56879, -46.01882], + ["2019-09-03T12:13:38", 8.57274, -46.02139], + ["2019-09-03T12:43:03", 8.57568, -46.02298], + ["2019-09-03T13:13:27", 8.58048, -46.02472], + ["2019-09-03T13:42:45", 8.58294, -46.02686], + ["2019-09-03T14:42:09", 8.58522, -46.039], + ["2019-09-03T15:12:39", 8.58878, -46.04254], + ["2019-09-03T15:42:09", 8.5953, -46.04483], + ["2019-09-03T16:12:25", 8.60446, -46.04626], + ["2019-09-03T16:42:08", 8.61341, -46.04727], + ["2019-09-03T17:12:08", 8.62238, -46.04718], + ["2019-09-03T17:41:28", 8.63064, -46.04835], + ["2019-09-03T18:11:28", 8.63945, -46.04989], + ["2019-09-03T18:41:28", 8.64575, -46.05246], + ["2019-09-03T19:11:15", 8.65166, -46.05369], + ["2019-09-03T19:41:15", 8.65884, -46.05661], + ["2019-09-03T20:10:53", 8.67517, -46.06235], + ["2019-09-03T20:40:53", 8.67573, -46.06244], + ["2019-09-03T20:45:12", 8.67661, -46.06247], + ["2019-09-03T21:11:10", 8.68117, -46.06262], + ["2019-09-03T21:40:30", 8.68645, -46.06387], + ["2019-09-03T22:10:11", 8.69286, -46.06641], + ["2019-09-03T22:40:11", 8.69801, -46.07001], + ["2019-09-03T23:10:26", 8.70411, -46.07571], + ["2019-09-03T23:39:54", 8.71075, -46.08221], + ["2019-09-04T00:09:58", 8.7177, -46.08784], + ["2019-09-04T00:39:40", 8.725, -46.09369], + ["2019-09-04T01:09:58", 8.73311, -46.10123], + ["2019-09-04T01:39:26", 8.74224, -46.10754], + ["2019-09-04T02:09:54", 8.7543, -46.11298], + ["2019-09-04T02:39:13", 8.76646, -46.11789], + ["2019-09-04T03:09:26", 8.77765, -46.11996], + ["2019-09-04T03:38:51", 8.78871, -46.12265], + ["2019-09-04T04:09:04", 8.7978, -46.12561], + ["2019-09-04T04:38:29", 8.80511, -46.1272], + ["2019-09-04T05:08:27", 8.81203, -46.12629], + ["2019-09-04T05:38:10", 8.82024, -46.12387], + ["2019-09-04T06:08:27", 8.82967, -46.12097], + ["2019-09-04T06:37:56", 8.83873, -46.11929], + ["2019-09-04T07:37:11", 8.85313, -46.1179], + ["2019-09-04T08:08:55", 8.86081, -46.11743], + ["2019-09-04T08:37:11", 8.86974, -46.11713], + ["2019-09-04T09:06:53", 8.87834, -46.1171], + ["2019-09-04T09:36:53", 8.88491, -46.11847], + ["2019-09-04T10:36:15", 8.89417, -46.1217], + ["2019-09-04T11:06:15", 8.89884, -46.1235], + ["2019-09-04T11:36:15", 8.90366, -46.12753], + ["2019-09-04T14:05:30", 8.93843, -46.15393], + ["2019-09-04T14:36:21", 8.95645, -46.16751], + ["2019-09-04T15:36:21", 8.96477, -46.17249], + ["2019-09-04T16:05:26", 8.97405, -46.17795], + ["2019-09-04T16:35:26", 8.98568, -46.1843], + ["2019-09-04T18:04:42", 9.01164, -46.19073], + ["2019-09-04T18:35:58", 9.02288, -46.19162], + ["2019-09-04T19:04:42", 9.03403, -46.19244], + ["2019-09-04T20:04:21", 9.06971, -46.18971], + ["2019-09-04T20:45:16", 9.07213, -46.1893], + ["2019-09-04T21:04:21", 9.07868, -46.18808], + ["2019-09-04T21:35:29", 9.08841, -46.18691], + ["2019-09-04T22:04:09", 9.09615, -46.186], + ["2019-09-04T22:35:29", 9.1043, -46.18597], + ["2019-09-04T23:04:02", 9.11342, -46.18906], + ["2019-09-04T23:34:02", 9.12377, -46.19507], + ["2019-09-05T00:03:26", 9.13269, -46.19858], + ["2019-09-05T00:34:28", 9.14119, -46.20261], + ["2019-09-05T01:04:55", 9.14807, -46.20571], + ["2019-09-05T01:34:55", 9.15408, -46.20837], + ["2019-09-05T02:03:28", 9.15926, -46.21076], + ["2019-09-05T02:33:28", 9.16519, -46.21265], + ["2019-09-05T03:03:28", 9.17017, -46.21548], + ["2019-09-05T03:32:29", 9.17581, -46.21831], + ["2019-09-05T04:02:29", 9.18216, -46.2226], + ["2019-09-05T05:31:07", 9.2048, -46.24282], + ["2019-09-05T06:01:07", 9.21274, -46.24745], + ["2019-09-05T06:31:07", 9.21978, -46.25131], + ["2019-09-05T07:02:26", 9.22788, -46.25546], + ["2019-09-05T07:30:49", 9.23511, -46.2587], + ["2019-09-05T09:30:20", 9.26895, -46.27411], + ["2019-09-05T10:01:26", 9.27368, -46.27676], + ["2019-09-05T11:00:59", 9.28067, -46.2785], + ["2019-09-05T11:29:24", 9.28806, -46.28018], + ["2019-09-05T12:00:26", 9.29514, -46.27853], + ["2019-09-05T12:29:24", 9.30223, -46.27924], + ["2019-09-05T12:59:39", 9.30739, -46.28046], + ["2019-09-05T13:29:06", 9.31424, -46.28311], + ["2019-09-05T13:59:26", 9.32281, -46.28752], + ["2019-09-05T14:29:26", 9.32945, -46.28915], + ["2019-09-05T14:59:26", 9.33718, -46.29181], + ["2019-09-05T15:28:33", 9.34763, -46.29614], + ["2019-09-05T15:58:57", 9.35807, -46.29901], + ["2019-09-05T16:28:40", 9.36619, -46.30043], + ["2019-09-05T16:58:40", 9.37473, -46.30249], + ["2019-09-05T17:28:07", 9.3838, -46.3049], + ["2019-09-05T17:57:39", 9.39244, -46.30762], + ["2019-09-05T18:27:39", 9.40098, -46.30865], + ["2019-09-05T18:58:30", 9.41122, -46.30978], + ["2019-09-05T19:26:57", 9.42184, -46.31016], + ["2019-09-05T19:56:57", 9.43099, -46.30844], + ["2019-09-05T20:26:57", 9.43957, -46.30835], + ["2019-09-05T20:45:08", 9.44487, -46.30936], + ["2019-09-05T20:57:33", 9.44847, -46.31024], + ["2019-09-05T21:26:34", 9.4565, -46.31186], + ["2019-09-05T21:58:27", 9.46635, -46.31674], + ["2019-09-05T22:26:25", 9.47073, -46.31836], + ["2019-09-05T22:57:15", 9.47424, -46.32129], + ["2019-09-05T23:27:15", 9.47763, -46.32309], + ["2019-09-05T23:55:31", 9.48118, -46.32465], + ["2019-09-06T00:25:31", 9.48586, -46.3274], + ["2019-09-06T00:55:31", 9.49006, -46.32834], + ["2019-09-06T01:25:35", 9.4963, -46.32927], + ["2019-09-06T01:55:35", 9.50235, -46.32901], + ["2019-09-06T02:24:57", 9.50981, -46.32871], + ["2019-09-06T02:54:57", 9.5181, -46.32751], + ["2019-09-06T03:24:28", 9.52585, -46.32452], + ["2019-09-06T03:54:13", 9.53462, -46.32104], + ["2019-09-06T04:24:13", 9.54346, -46.31821], + ["2019-09-06T04:54:27", 9.55097, -46.31384], + ["2019-09-06T05:24:07", 9.55869, -46.31068], + ["2019-09-06T05:54:07", 9.56387, -46.3075], + ["2019-09-06T06:23:39", 9.56621, -46.30563], + ["2019-09-06T06:53:55", 9.56714, -46.30588], + ["2019-09-06T07:23:36", 9.56484, -46.30545], + ["2019-09-06T07:53:36", 9.56101, -46.30588], + ["2019-09-06T08:23:18", 9.55969, -46.30515], + ["2019-09-06T08:53:57", 9.55997, -46.3053], + ["2019-09-06T09:23:10", 9.56068, -46.30557], + ["2019-09-06T09:52:50", 9.55938, -46.30548], + ["2019-09-06T10:22:50", 9.55835, -46.30591], + ["2019-09-06T10:52:18", 9.55688, -46.30713], + ["2019-09-06T11:22:18", 9.55674, -46.3085], + ["2019-09-06T11:52:37", 9.55687, -46.30884], + ["2019-09-06T12:22:05", 9.5585, -46.30737], + ["2019-09-06T12:52:28", 9.56373, -46.30682], + ["2019-09-06T13:21:50", 9.57044, -46.30582], + ["2019-09-06T13:51:41", 9.57504, -46.30338], + ["2019-09-06T14:21:41", 9.5792, -46.30209], + ["2019-09-06T14:51:58", 9.58545, -46.30115], + ["2019-09-06T15:21:29", 9.59015, -46.29698], + ["2019-09-06T15:51:29", 9.5932, -46.29346], + ["2019-09-06T16:21:07", 9.59276, -46.29344], + ["2019-09-06T16:51:07", 9.59422, -46.29636], + ["2019-09-06T17:20:39", 9.59688, -46.29916], + ["2019-09-06T17:50:32", 9.59732, -46.30173], + ["2019-09-06T18:20:32", 9.60106, -46.30817], + ["2019-09-06T18:50:58", 9.59685, -46.30771], + ["2019-09-06T19:20:11", 9.59425, -46.3107], + ["2019-09-06T19:50:28", 9.58954, -46.31396], + ["2019-09-06T20:19:55", 9.58571, -46.31754], + ["2019-09-06T20:45:32", 9.58314, -46.32059], + ["2019-09-06T20:50:08", 9.58264, -46.32111], + ["2019-09-06T21:20:46", 9.58015, -46.32491], + ["2019-09-06T21:50:46", 9.57933, -46.32877], + ["2019-09-06T22:19:22", 9.57855, -46.33044], + ["2019-09-06T22:50:03", 9.5794, -46.33429], + ["2019-09-06T23:19:06", 9.57757, -46.33682], + ["2019-09-06T23:49:29", 9.57729, -46.33926], + ["2019-09-07T00:18:51", 9.57876, -46.34128], + ["2019-09-07T00:48:33", 9.58042, -46.34372], + ["2019-09-07T01:18:33", 9.58149, -46.34818], + ["2019-09-07T02:18:18", 9.58883, -46.35968], + ["2019-09-07T02:48:05", 9.59464, -46.36511], + ["2019-09-07T03:18:05", 9.5997, -46.37], + ["2019-09-07T03:48:58", 9.60478, -46.3739], + ["2019-09-07T04:17:35", 9.60993, -46.37901], + ["2019-09-07T04:47:35", 9.61482, -46.38476], + ["2019-09-07T05:17:35", 9.61924, -46.39111], + ["2019-09-07T06:16:51", 9.63002, -46.40422], + ["2019-09-07T06:47:28", 9.63502, -46.41013], + ["2019-09-07T07:16:51", 9.63843, -46.41632], + ["2019-09-07T07:46:56", 9.64301, -46.42198], + ["2019-09-07T08:16:31", 9.64788, -46.42804], + ["2019-09-07T08:46:56", 9.65025, -46.43185], + ["2019-09-07T09:16:16", 9.65235, -46.43405], + ["2019-09-07T09:46:27", 9.65588, -46.43915], + ["2019-09-07T10:16:00", 9.65928, -46.44247], + ["2019-09-07T10:46:27", 9.66203, -46.44525], + ["2019-09-07T11:15:44", 9.66639, -46.44925], + ["2019-09-07T11:45:58", 9.67223, -46.45444], + ["2019-09-07T12:15:57", 9.67887, -46.46014], + ["2019-09-07T12:45:57", 9.68432, -46.46555], + ["2019-09-07T13:15:15", 9.69197, -46.47104], + ["2019-09-07T13:45:15", 9.69853, -46.4743], + ["2019-09-07T14:15:15", 9.70579, -46.47842], + ["2019-09-07T14:44:55", 9.71411, -46.48337], + ["2019-09-07T15:14:55", 9.7218, -46.48672], + ["2019-09-07T15:44:35", 9.73185, -46.49067], + ["2019-09-07T16:14:35", 9.74348, -46.49359], + ["2019-09-07T19:13:18", 9.80617, -46.51529], + ["2019-09-07T20:12:54", 9.81822, -46.52286], + ["2019-09-07T20:45:59", 9.82405, -46.52673], + ["2019-09-07T21:41:51", 9.83801, -46.53322], + ["2019-09-07T22:11:51", 9.84599, -46.53545], + ["2019-09-07T22:41:51", 9.85263, -46.53622], + ["2019-09-07T23:11:34", 9.86074, -46.5395], + ["2019-09-07T23:41:36", 9.86952, -46.54291], + ["2019-09-08T00:11:34", 9.87928, -46.54739], + ["2019-09-08T02:40:51", 9.92784, -46.55971], + ["2019-09-08T03:10:51", 9.93493, -46.56237], + ["2019-09-08T03:40:51", 9.94248, -46.56494], + ["2019-09-08T04:10:39", 9.94909, -46.56709], + ["2019-09-08T04:40:39", 9.95458, -46.56906], + ["2019-09-08T08:40:56", 10.00196, -46.59418], + ["2019-09-08T10:08:24", 10.01705, -46.61083], + ["2019-09-08T10:38:33", 10.02223, -46.61578], + ["2019-09-08T11:08:24", 10.0273, -46.62027], + ["2019-09-08T11:38:56", 10.03317, -46.62524], + ["2019-09-08T12:07:31", 10.03706, -46.6304], + ["2019-09-08T12:37:31", 10.04371, -46.63761], + ["2019-09-08T13:07:31", 10.05259, -46.64508], + ["2019-09-08T14:37:57", 10.07531, -46.66763], + ["2019-09-08T17:06:27", 10.10842, -46.70322], + ["2019-09-08T18:35:36", 10.13311, -46.71504], + ["2019-09-08T19:05:36", 10.14358, -46.71839], + ["2019-09-08T19:35:36", 10.15401, -46.72165], + ["2019-09-08T20:06:58", 10.16373, -46.72446], + ["2019-09-08T20:35:27", 10.17242, -46.72638], + ["2019-09-08T21:05:18", 10.18338, -46.72902], + ["2019-09-08T21:35:18", 10.19304, -46.73099], + ["2019-09-08T22:05:34", 10.20381, -46.73334], + ["2019-09-08T22:34:58", 10.21399, -46.7345], + ["2019-09-08T23:05:42", 10.22411, -46.7345], + ["2019-09-09T01:34:17", 10.27052, -46.73132], + ["2019-09-09T02:04:27", 10.28251, -46.72946], + ["2019-09-09T02:34:27", 10.29354, -46.72749], + ["2019-09-09T03:04:27", 10.3047, -46.72534], + ["2019-09-09T03:33:59", 10.31659, -46.72319], + ["2019-09-09T04:03:59", 10.32848, -46.7207], + ["2019-09-09T04:33:10", 10.33919, -46.71707], + ["2019-09-09T05:03:27", 10.3491, -46.71262], + ["2019-09-09T05:32:47", 10.35929, -46.70892], + ["2019-09-09T06:02:22", 10.36876, -46.70263], + ["2019-09-09T06:32:22", 10.3785, -46.69714], + ["2019-09-09T08:01:55", 10.40813, -46.67882], + ["2019-09-09T08:31:55", 10.41504, -46.67195], + ["2019-09-09T09:01:55", 10.42276, -46.6662], + ["2019-09-09T09:31:25", 10.43033, -46.6609], + ["2019-09-09T10:01:25", 10.43823, -46.65704], + ["2019-09-09T10:31:55", 10.44782, -46.654], + ["2019-09-09T11:01:55", 10.4567, -46.64902], + ["2019-09-09T11:30:23", 10.46571, -46.64388], + ["2019-09-09T12:00:23", 10.47588, -46.63899], + ["2019-09-09T12:30:23", 10.48451, -46.63272], + ["2019-09-09T13:00:08", 10.49594, -46.62684], + ["2019-09-09T13:30:08", 10.50826, -46.62109], + ["2019-09-09T14:01:57", 10.52158, -46.61533], + ["2019-09-09T16:30:55", 10.57689, -46.57944], + ["2019-09-09T17:01:26", 10.58527, -46.57047], + ["2019-09-09T17:31:26", 10.59411, -46.55948], + ["2019-09-09T17:58:58", 10.60183, -46.54984], + ["2019-09-09T18:28:58", 10.6099, -46.53945], + ["2019-09-09T18:58:58", 10.61986, -46.52829], + ["2019-09-09T19:28:21", 10.62914, -46.51672], + ["2019-09-09T20:28:15", 10.64727, -46.48247], + ["2019-09-09T21:00:36", 10.65128, -46.47586], + ["2019-09-09T21:28:15", 10.65769, -46.46222], + ["2019-09-09T21:58:29", 10.66497, -46.44661], + ["2019-09-09T22:28:29", 10.67089, -46.43073], + ["2019-09-09T22:57:31", 10.67625, -46.41541], + ["2019-09-10T00:26:38", 10.68935, -46.37057], + ["2019-09-10T00:56:42", 10.69321, -46.35767], + ["2019-09-10T01:26:38", 10.69544, -46.34491], + ["2019-09-10T04:55:59", 10.67575, -46.25217], + ["2019-09-10T05:59:28", 10.66551, -46.22696], + ["2019-09-10T06:55:21", 10.66031, -46.20856], + ["2019-09-10T07:25:57", 10.66017, -46.19994], + ["2019-09-10T07:55:57", 10.65905, -46.19204], + ["2019-09-10T08:25:57", 10.65755, -46.18268], + ["2019-09-10T15:52:27", 10.61247, -46.02921], + ["2019-09-10T17:21:58", 10.59925, -46.00108], + ["2019-09-10T17:51:58", 10.59294, -45.9913], + ["2019-09-10T18:21:58", 10.58796, -45.98392], + ["2019-09-10T18:51:32", 10.58232, -45.9759], + ["2019-09-10T19:21:32", 10.57588, -45.96903], + ["2019-09-10T19:51:32", 10.56983, -45.96259], + ["2019-09-10T20:21:20", 10.55791, -45.95234], + ["2019-09-10T20:51:20", 10.55697, -45.95114], + ["2019-09-10T21:22:02", 10.55235, -45.9446], + ["2019-09-10T21:52:02", 10.54896, -45.93928], + ["2019-09-10T22:22:02", 10.54463, -45.9343], + ["2019-09-10T22:50:43", 10.54029, -45.92853], + ["2019-09-10T23:22:00", 10.53728, -45.92218], + ["2019-09-11T00:22:11", 10.5312, -45.91278], + ["2019-09-11T00:50:23", 10.52857, -45.90866], + ["2019-09-11T02:21:59", 10.52705, -45.89139], + ["2019-09-11T04:51:28", 10.52543, -45.87207], + ["2019-09-11T05:19:24", 10.52289, -45.86899], + ["2019-09-11T06:49:12", 10.51556, -45.86044], + ["2019-09-11T07:18:55", 10.5123, -45.85809], + ["2019-09-11T07:48:55", 10.51071, -45.85706], + ["2019-09-11T08:51:11", 10.50634, -45.85083], + ["2019-09-11T09:18:22", 10.50519, -45.8475], + ["2019-09-11T09:48:15", 10.50385, -45.84433], + ["2019-09-11T10:19:33", 10.50266, -45.84149], + ["2019-09-11T10:47:51", 10.5014, -45.84021], + ["2019-09-11T10:49:24", 10.49844, -45.83799], + ["2019-09-11T11:49:24", 10.4972, -45.83679], + ["2019-09-11T14:17:14", 10.49551, -45.82455], + ["2019-09-11T14:47:14", 10.49422, -45.82429], + ["2019-09-11T15:17:14", 10.49366, -45.82489], + ["2019-09-11T16:17:10", 10.49431, -45.82764], + ["2019-09-11T16:45:43", 10.49513, -45.82906], + ["2019-09-11T17:15:43", 10.49539, -45.83], + ["2019-09-11T17:45:43", 10.4947, -45.83017], + ["2019-09-11T20:15:09", 10.48921, -45.819], + ["2019-09-11T20:45:01", 10.49008, -45.81524], + ["2019-09-11T21:15:01", 10.49244, -45.81146], + ["2019-09-11T21:44:59", 10.49362, -45.80716], + ["2019-09-11T22:45:32", 10.49787, -45.80251], + ["2019-09-11T23:15:32", 10.50019, -45.79976], + ["2019-09-11T23:45:32", 10.50251, -45.79727], + ["2019-09-12T00:43:57", 10.50527, -45.79111], + ["2019-09-12T01:13:38", 10.50584, -45.7879], + ["2019-09-12T01:43:57", 10.5063, -45.78442], + ["2019-09-12T02:13:14", 10.50652, -45.78165], + ["2019-09-12T02:43:30", 10.50792, -45.77905], + ["2019-09-12T03:13:58", 10.50996, -45.77575], + ["2019-09-12T03:43:58", 10.51155, -45.77283], + ["2019-09-12T05:12:17", 10.51827, -45.76231], + ["2019-09-12T05:42:17", 10.5211, -45.75871], + ["2019-09-12T06:12:17", 10.52234, -45.75485], + ["2019-09-12T06:43:07", 10.52289, -45.75104], + ["2019-09-12T07:11:57", 10.52197, -45.74594], + ["2019-09-12T07:42:25", 10.52237, -45.74112], + ["2019-09-12T09:11:03", 10.52579, -45.72609], + ["2019-09-12T09:41:03", 10.53064, -45.72137], + ["2019-09-12T09:41:58", 10.53064, -45.72141], + ["2019-09-12T10:11:03", 10.53562, -45.71674], + ["2019-09-12T12:40:41", 10.54701, -45.68574], + ["2019-09-12T13:10:41", 10.54808, -45.67913], + ["2019-09-12T13:40:41", 10.54774, -45.67252], + ["2019-09-12T14:10:26", 10.54824, -45.66608], + ["2019-09-12T14:40:26", 10.54906, -45.6593], + ["2019-09-12T16:09:20", 10.54594, -45.63934], + ["2019-09-12T16:39:08", 10.54204, -45.63257], + ["2019-09-12T17:09:08", 10.53809, -45.62656], + ["2019-09-12T17:38:54", 10.53562, -45.62017], + ["2019-09-12T18:08:54", 10.53326, -45.61545], + ["2019-09-12T20:38:28", 10.51687, -45.58789], + ["2019-09-12T21:06:48", 10.51347, -45.58267], + ["2019-09-12T21:36:48", 10.51004, -45.57855], + ["2019-09-12T22:06:48", 10.50656, -45.57443], + ["2019-09-13T00:38:28", 10.48557, -45.54724], + ["2019-09-13T01:05:59", 10.48175, -45.5419], + ["2019-09-13T01:38:28", 10.47626, -45.53625], + ["2019-09-13T04:04:51", 10.45507, -45.50845], + ["2019-09-13T04:36:28", 10.45047, -45.50302], + ["2019-09-13T07:03:46", 10.42355, -45.47862], + ["2019-09-13T07:33:46", 10.42106, -45.47244], + ["2019-09-13T08:03:46", 10.41776, -45.46652], + ["2019-09-13T08:34:57", 10.41401, -45.4601], + ["2019-09-13T09:04:57", 10.41041, -45.45392], + ["2019-09-13T10:33:13", 10.39724, -45.43982], + ["2019-09-13T12:03:27", 10.38257, -45.42809], + ["2019-09-13T12:33:27", 10.37699, -45.42517], + ["2019-09-13T13:03:27", 10.37094, -45.42148], + ["2019-09-13T13:32:23", 10.36624, -45.41931], + ["2019-09-13T15:32:27", 10.34908, -45.4124], + ["2019-09-13T16:01:48", 10.34659, -45.41129], + ["2019-09-13T16:32:27", 10.34505, -45.40948], + ["2019-09-13T17:01:30", 10.34326, -45.40842], + ["2019-09-13T17:33:57", 10.34248, -45.40753], + ["2019-09-13T18:31:02", 10.34299, -45.4046], + ["2019-09-13T19:45:16", 10.347, -45.39352], + ["2019-09-13T20:33:27", 10.34703, -45.39352], + ["2019-09-13T20:45:16", 10.34644, -45.39258], + ["2019-09-13T23:30:30", 10.33101, -45.3772], + ["2019-09-14T01:00:03", 10.32388, -45.3718], + ["2019-09-14T03:59:34", 10.31527, -45.37732], + ["2019-09-14T06:28:44", 10.31546, -45.38007], + ["2019-09-14T07:01:29", 10.31851, -45.37943], + ["2019-09-14T07:28:24", 10.32169, -45.37854], + ["2019-09-14T07:59:14", 10.32544, -45.37674], + ["2019-09-14T08:29:14", 10.3287, -45.37399], + ["2019-09-14T10:58:34", 10.34171, -45.35773], + ["2019-09-14T11:26:47", 10.34175, -45.3558], + ["2019-09-14T11:56:47", 10.34081, -45.35391], + ["2019-09-14T12:26:47", 10.34081, -45.35254], + ["2019-09-14T12:58:28", 10.34086, -45.35217], + ["2019-09-14T14:55:52", 10.34669, -45.35718], + ["2019-09-14T15:28:00", 10.34857, -45.35882], + ["2019-09-14T15:58:00", 10.35213, -45.36028], + ["2019-09-14T16:28:00", 10.35771, -45.36157], + ["2019-09-14T17:25:12", 10.37221, -45.36041], + ["2019-09-14T17:56:40", 10.37622, -45.35942], + ["2019-09-14T18:26:40", 10.3833, -45.35822], + ["2019-09-14T18:56:40", 10.38969, -45.35565], + ["2019-09-14T19:54:50", 10.40233, -45.34644], + ["2019-09-14T21:53:50", 10.4257, -45.33087], + ["2019-09-14T22:23:50", 10.42995, -45.32666], + ["2019-09-15T00:23:50", 10.44446, -45.30466], + ["2019-09-15T01:54:01", 10.44802, -45.28948], + ["2019-09-15T02:24:01", 10.44798, -45.28356], + ["2019-09-15T02:54:01", 10.45013, -45.27798], + ["2019-09-15T03:22:09", 10.45225, -45.2731], + ["2019-09-15T03:52:02", 10.45477, -45.26813], + ["2019-09-15T04:23:34", 10.45675, -45.26489], + ["2019-09-15T11:23:38", 10.50541, -45.18015], + ["2019-09-15T11:50:11", 10.50603, -45.17368], + ["2019-09-15T12:20:00", 10.50519, -45.16547], + ["2019-09-15T12:50:00", 10.50429, -45.15869], + ["2019-09-15T13:49:31", 10.50299, -45.14187], + ["2019-09-15T14:19:38", 10.50067, -45.13477], + ["2019-09-15T14:49:31", 10.49827, -45.12668], + ["2019-09-15T15:21:27", 10.49604, -45.1178], + ["2019-09-15T19:18:33", 10.47751, -45.06229], + ["2019-09-15T21:48:13", 10.47015, -45.03128], + ["2019-09-16T00:18:37", 10.45131, -44.99866], + ["2019-09-16T03:48:32", 10.4349, -44.96866], + ["2019-09-16T04:16:25", 10.43513, -44.96183], + ["2019-09-16T04:46:25", 10.43552, -44.95453], + ["2019-09-16T05:17:12", 10.43512, -44.9465], + ["2019-09-16T05:45:42", 10.4335, -44.93757], + ["2019-09-16T06:17:28", 10.43042, -44.92734], + ["2019-09-16T06:45:42", 10.42706, -44.91852], + ["2019-09-16T09:14:39", 10.41657, -44.8743], + ["2019-09-16T09:45:26", 10.41283, -44.86526], + ["2019-09-16T10:14:39", 10.40906, -44.85748], + ["2019-09-16T11:45:32", 10.39394, -44.8339], + ["2019-09-16T12:15:32", 10.38918, -44.82592], + ["2019-09-16T12:45:32", 10.38424, -44.81802], + ["2019-09-16T13:15:57", 10.3788, -44.81045], + ["2019-09-16T13:45:57", 10.37348, -44.80212], + ["2019-09-16T14:13:40", 10.36794, -44.79446], + ["2019-09-16T15:43:15", 10.34342, -44.76911], + ["2019-09-16T16:13:15", 10.33394, -44.76001], + ["2019-09-16T16:43:15", 10.32583, -44.75143], + ["2019-09-16T17:13:43", 10.31794, -44.74344], + ["2019-09-16T17:42:27", 10.31078, -44.73624], + ["2019-09-16T18:12:27", 10.3073, -44.72817], + ["2019-09-16T18:42:27", 10.30421, -44.71924], + ["2019-09-16T20:12:09", 10.28153, -44.67881], + ["2019-09-16T20:42:09", 10.28144, -44.67855], + ["2019-09-16T21:12:09", 10.27702, -44.66748], + ["2019-09-17T01:10:33", 10.23822, -44.60266], + ["2019-09-17T02:10:09", 10.22923, -44.58713], + ["2019-09-17T02:40:30", 10.22405, -44.5797], + ["2019-09-17T03:10:30", 10.21864, -44.57275], + ["2019-09-17T03:40:30", 10.21272, -44.56528], + ["2019-09-17T04:10:30", 10.20683, -44.5576], + ["2019-09-17T04:40:30", 10.20147, -44.54919], + ["2019-09-17T05:09:26", 10.1974, -44.54236], + ["2019-09-17T05:42:52", 10.19515, -44.53412], + ["2019-09-17T06:09:10", 10.19176, -44.52597], + ["2019-09-17T06:39:32", 10.18674, -44.51689], + ["2019-09-17T07:09:32", 10.18065, -44.50668], + ["2019-09-17T09:38:09", 10.1476, -44.44986], + ["2019-09-17T12:07:12", 10.12015, -44.40585], + ["2019-09-17T17:08:29", 10.10062, -44.31516], + ["2019-09-17T18:35:34", 10.11373, -44.28186], + ["2019-09-17T19:05:39", 10.11418, -44.27127], + ["2019-09-17T19:35:34", 10.11313, -44.25955], + ["2019-09-17T19:42:46", 10.10998, -44.23656], + ["2019-09-17T20:12:46", 10.10998, -44.2363], + ["2019-09-17T20:42:46", 10.11028, -44.23373], + ["2019-09-17T21:07:02", 10.11086, -44.22421], + ["2019-09-18T02:34:08", 10.11412, -44.10779], + ["2019-09-18T03:03:33", 10.11453, -44.09569], + ["2019-09-18T03:33:33", 10.115, -44.08608], + ["2019-09-18T04:03:33", 10.11723, -44.07578], + ["2019-09-18T04:35:52", 10.12055, -44.06223], + ["2019-09-18T07:32:22", 10.12574, -43.9921], + ["2019-09-18T08:02:17", 10.12418, -43.98114], + ["2019-09-18T08:33:28", 10.12374, -43.96783], + ["2019-09-18T09:01:57", 10.12016, -43.95685], + ["2019-09-18T09:31:49", 10.11672, -43.94492], + ["2019-09-18T10:01:49", 10.11367, -43.93411], + ["2019-09-18T11:33:29", 10.10463, -43.90372], + ["2019-09-18T12:01:12", 10.10408, -43.89505], + ["2019-09-18T12:33:29", 10.10485, -43.88544], + ["2019-09-18T14:01:28", 10.10728, -43.86211], + ["2019-09-18T14:31:28", 10.11131, -43.85507], + ["2019-09-18T15:01:28", 10.11474, -43.84717], + ["2019-09-18T22:28:30", 10.0929, -43.74063], + ["2019-09-19T00:58:07", 10.07087, -43.70877], + ["2019-09-19T01:58:30", 10.06302, -43.69513], + ["2019-09-19T02:28:30", 10.06122, -43.68886], + ["2019-09-19T02:58:30", 10.05843, -43.68277], + ["2019-09-19T03:27:50", 10.05322, -43.67746], + ["2019-09-19T04:28:59", 10.04217, -43.66846], + ["2019-09-19T05:57:20", 10.02325, -43.66022], + ["2019-09-19T06:58:53", 10.00848, -43.66324], + ["2019-09-19T16:23:44", 9.85802, -43.70163], + ["2019-09-19T16:54:58", 9.84737, -43.70344], + ["2019-09-19T17:24:58", 9.83771, -43.70473], + ["2019-09-19T17:54:58", 9.82651, -43.70636], + ["2019-09-19T18:23:07", 9.8171, -43.70776], + ["2019-09-19T19:22:40", 9.79983, -43.71133], + ["2019-09-19T19:52:34", 9.79146, -43.71451], + ["2019-09-19T20:51:58", 9.77492, -43.72548], + ["2019-09-19T21:21:58", 9.76746, -43.73243], + ["2019-09-19T21:51:58", 9.76174, -43.73749], + ["2019-09-19T22:21:50", 9.75972, -43.74332], + ["2019-09-19T22:51:44", 9.75998, -43.7494], + ["2019-09-19T23:21:44", 9.75878, -43.75421], + ["2019-09-19T23:51:24", 9.75519, -43.75791], + ["2019-09-20T00:21:24", 9.75455, -43.76212], + ["2019-09-20T00:51:06", 9.75118, -43.76749], + ["2019-09-20T01:21:06", 9.75067, -43.77127], + ["2019-09-20T01:51:28", 9.75003, -43.77484], + ["2019-09-20T02:23:00", 9.75027, -43.77859], + ["2019-09-20T02:53:00", 9.75189, -43.78314], + ["2019-09-20T03:20:40", 9.75164, -43.78662], + ["2019-09-20T03:50:40", 9.74841, -43.78937], + ["2019-09-20T04:21:00", 9.74621, -43.79125], + ["2019-09-20T04:51:00", 9.74515, -43.79074], + ["2019-09-20T05:21:00", 9.74335, -43.78928], + ["2019-09-20T05:49:50", 9.74119, -43.78809], + ["2019-09-20T06:49:07", 9.73856, -43.7832], + ["2019-09-20T07:19:07", 9.73972, -43.78148], + ["2019-09-20T07:49:07", 9.73945, -43.77985], + ["2019-09-20T08:19:31", 9.73883, -43.7791], + ["2019-09-20T08:49:31", 9.74166, -43.77756], + ["2019-09-20T09:19:31", 9.74771, -43.77567], + ["2019-09-20T09:49:58", 9.74979, -43.7756], + ["2019-09-20T10:19:58", 9.75327, -43.77646], + ["2019-09-20T10:48:10", 9.7593, -43.77744], + ["2019-09-20T11:17:49", 9.7669, -43.77896], + ["2019-09-20T11:48:00", 9.77431, -43.77954], + ["2019-09-20T12:17:49", 9.7802, -43.7793], + ["2019-09-20T12:47:32", 9.78364, -43.77873], + ["2019-09-20T13:17:48", 9.78726, -43.77798], + ["2019-09-20T13:47:32", 9.79252, -43.77667], + ["2019-09-20T15:20:00", 9.8065, -43.77269], + ["2019-09-20T15:50:46", 9.80791, -43.77054], + ["2019-09-20T16:20:00", 9.80999, -43.76797], + ["2019-09-20T16:46:47", 9.80951, -43.76508], + ["2019-09-20T17:16:32", 9.81209, -43.76163], + ["2019-09-20T17:48:14", 9.81307, -43.75775], + ["2019-09-20T18:47:40", 9.81742, -43.74927], + ["2019-09-20T19:17:40", 9.81814, -43.74524], + ["2019-09-20T19:47:40", 9.82067, -43.74121], + ["2019-09-20T20:15:51", 9.8228, -43.73865], + ["2019-09-20T20:45:35", 9.82535, -43.73699], + ["2019-09-20T21:15:35", 9.82981, -43.73553], + ["2019-09-21T04:43:19", 9.88796, -43.69022], + ["2019-09-21T07:12:22", 9.88809, -43.67086], + ["2019-09-21T07:42:22", 9.88865, -43.66708], + ["2019-09-21T08:12:22", 9.89286, -43.66382], + ["2019-09-21T09:41:50", 9.89511, -43.65283], + ["2019-09-21T10:11:18", 9.90085, -43.6468], + ["2019-09-21T10:41:18", 9.90527, -43.64174], + ["2019-09-21T11:11:18", 9.9078, -43.63779], + ["2019-09-21T11:42:03", 9.91325, -43.63336], + ["2019-09-21T13:43:59", 9.9148, -43.6156], + ["2019-09-21T14:12:04", 9.91507, -43.60867], + ["2019-09-21T14:40:16", 9.91867, -43.59875], + ["2019-09-21T15:12:04", 9.92412, -43.58755], + ["2019-09-21T15:39:47", 9.92592, -43.57777], + ["2019-09-21T16:09:47", 9.92634, -43.56799], + ["2019-09-21T18:38:29", 9.9063, -43.53425], + ["2019-09-21T19:08:29", 9.90016, -43.53082], + ["2019-09-21T19:38:29", 9.89085, -43.52893], + ["2019-09-21T22:09:02", 9.84243, -43.51541], + ["2019-09-21T22:37:27", 9.83405, -43.5119], + ["2019-09-21T23:09:02", 9.82539, -43.50897], + ["2019-09-22T00:10:27", 9.81103, -43.50415], + ["2019-09-22T01:38:28", 9.78684, -43.5004], + ["2019-09-22T02:08:16", 9.78015, -43.49856], + ["2019-09-22T02:38:16", 9.76989, -43.49847], + ["2019-09-22T04:08:46", 9.75146, -43.50233], + ["2019-09-22T04:36:22", 9.74611, -43.50632], + ["2019-09-22T05:08:46", 9.7376, -43.51074], + ["2019-09-22T05:35:47", 9.73035, -43.51361], + ["2019-09-22T06:07:57", 9.72098, -43.5155], + ["2019-09-22T06:37:57", 9.71003, -43.51782], + ["2019-09-22T10:04:21", 9.66186, -43.54297], + ["2019-09-22T10:35:29", 9.65621, -43.5477], + ["2019-09-22T11:35:04", 9.64296, -43.55548], + ["2019-09-22T13:03:36", 9.62387, -43.56909], + ["2019-09-22T13:33:36", 9.61764, -43.57493], + ["2019-09-22T14:03:36", 9.61464, -43.57956], + ["2019-09-22T20:01:35", 9.57015, -43.65668], + ["2019-09-22T21:03:06", 9.56747, -43.67038], + ["2019-09-22T21:31:09", 9.56701, -43.67786], + ["2019-09-22T22:03:06", 9.56514, -43.68497], + ["2019-09-22T22:30:30", 9.56398, -43.69133], + ["2019-09-22T23:00:30", 9.56865, -43.69699], + ["2019-09-22T23:33:58", 9.57113, -43.70401], + ["2019-09-23T00:00:58", 9.57382, -43.70971], + ["2019-09-23T00:30:58", 9.57626, -43.71615], + ["2019-09-23T01:00:58", 9.57884, -43.72156], + ["2019-09-23T01:29:45", 9.5791, -43.72775], + ["2019-09-23T02:00:59", 9.58013, -43.73434], + ["2019-09-23T02:29:34", 9.57949, -43.74008], + ["2019-09-23T03:29:03", 9.58299, -43.75366], + ["2019-09-23T04:00:31", 9.58253, -43.7619], + ["2019-09-23T04:29:03", 9.58282, -43.7692], + ["2019-09-23T04:59:29", 9.58575, -43.7767], + ["2019-09-23T05:28:38", 9.58531, -43.78389], + ["2019-09-23T06:00:30", 9.5877, -43.78952], + ["2019-09-23T06:28:38", 9.59131, -43.79358], + ["2019-09-23T06:59:38", 9.59507, -43.79844], + ["2019-09-23T07:28:19", 9.6003, -43.80225], + ["2019-09-23T07:59:38", 9.60598, -43.80737], + ["2019-09-23T08:28:04", 9.61364, -43.80957], + ["2019-09-23T08:57:46", 9.61877, -43.81244], + ["2019-09-23T09:27:46", 9.62165, -43.81381], + ["2019-09-23T09:58:58", 9.624, -43.81595], + ["2019-09-23T10:58:39", 9.63411, -43.81607], + ["2019-09-23T11:28:39", 9.63763, -43.8159], + ["2019-09-23T11:58:39", 9.6433, -43.81393], + ["2019-09-23T12:28:00", 9.64821, -43.81358], + ["2019-09-23T12:58:00", 9.6516, -43.81418], + ["2019-09-23T15:55:36", 9.65198, -43.81422], + ["2019-09-23T16:25:50", 9.65067, -43.81454], + ["2019-09-23T16:55:36", 9.64936, -43.81268], + ["2019-09-23T17:26:59", 9.64727, -43.81171], + ["2019-09-23T18:54:55", 9.64926, -43.80563], + ["2019-09-23T19:54:55", 9.66915, -43.78669], + ["2019-09-23T19:55:29", 9.65968, -43.79541], + ["2019-09-23T20:38:27", 9.67089, -43.78494], + ["2019-09-23T20:54:55", 9.6731, -43.78043], + ["2019-09-23T21:23:59", 9.67496, -43.77284], + ["2019-09-23T21:53:59", 9.67706, -43.76383], + ["2019-09-23T22:23:59", 9.67706, -43.75714], + ["2019-09-23T22:53:35", 9.6814, -43.74755], + ["2019-09-23T23:23:35", 9.68577, -43.73828], + ["2019-09-23T23:53:59", 9.68404, -43.73025], + ["2019-09-24T00:23:59", 9.68289, -43.71909], + ["2019-09-24T00:52:59", 9.68351, -43.70807], + ["2019-09-24T01:22:52", 9.67894, -43.69605], + ["2019-09-24T01:52:52", 9.67465, -43.68378], + ["2019-09-24T02:52:52", 9.66583, -43.65982], + ["2019-09-24T03:22:34", 9.65715, -43.64851], + ["2019-09-24T03:52:34", 9.65033, -43.6377], + ["2019-09-24T04:22:26", 9.64298, -43.6282], + ["2019-09-24T04:52:11", 9.63385, -43.61767], + ["2019-09-24T05:22:11", 9.62693, -43.60806], + ["2019-09-24T07:51:23", 9.58477, -43.55887], + ["2019-09-24T08:21:08", 9.57574, -43.55076], + ["2019-09-24T08:51:08", 9.56959, -43.54321], + ["2019-09-24T09:20:33", 9.56274, -43.53417], + ["2019-09-24T09:50:33", 9.55519, -43.52722], + ["2019-09-24T11:20:11", 9.52821, -43.49991], + ["2019-09-24T11:51:06", 9.516, -43.49039], + ["2019-09-24T12:19:41", 9.50414, -43.4806], + ["2019-09-24T12:49:41", 9.49179, -43.47099], + ["2019-09-24T13:19:41", 9.48105, -43.46103], + ["2019-09-24T13:49:27", 9.46796, -43.44969], + ["2019-09-24T14:19:27", 9.45534, -43.43982], + ["2019-09-24T14:49:13", 9.44143, -43.43036], + ["2019-09-24T15:19:13", 9.42976, -43.42169], + ["2019-09-24T15:49:58", 9.4177, -43.41367], + ["2019-09-24T16:18:59", 9.40668, -43.40662], + ["2019-09-24T16:51:28", 9.39845, -43.39792], + ["2019-09-24T17:18:30", 9.3897, -43.39126], + ["2019-09-24T17:48:30", 9.37782, -43.38525], + ["2019-09-24T18:18:59", 9.36788, -43.37823], + ["2019-09-24T19:18:38", 9.34901, -43.36859], + ["2019-09-24T19:47:59", 9.34038, -43.36356], + ["2019-09-24T20:17:59", 9.33167, -43.35721], + ["2019-09-24T21:17:27", 9.31302, -43.34848], + ["2019-09-24T21:46:54", 9.30278, -43.3447], + ["2019-09-24T22:16:39", 9.29334, -43.33889], + ["2019-09-24T22:46:39", 9.28428, -43.33383], + ["2019-09-24T23:16:19", 9.27422, -43.32854], + ["2019-09-24T23:46:19", 9.26432, -43.32288], + ["2019-09-25T00:16:27", 9.25389, -43.31638], + ["2019-09-25T00:46:00", 9.24541, -43.31046], + ["2019-09-25T01:15:58", 9.23652, -43.30576], + ["2019-09-25T01:45:58", 9.22888, -43.30233], + ["2019-09-25T02:15:58", 9.22021, -43.29984], + ["2019-09-25T02:45:35", 9.21144, -43.29721], + ["2019-09-25T03:15:35", 9.20135, -43.29498], + ["2019-09-25T03:45:58", 9.19059, -43.29223], + ["2019-09-25T04:15:58", 9.17797, -43.29111], + ["2019-09-25T04:44:51", 9.16714, -43.29016], + ["2019-09-25T05:16:00", 9.15588, -43.28796], + ["2019-09-25T06:14:59", 9.13542, -43.28107], + ["2019-09-25T06:44:19", 9.1258, -43.277], + ["2019-09-25T07:16:56", 9.11617, -43.27292], + ["2019-09-25T07:44:19", 9.10983, -43.26953], + ["2019-09-25T08:14:03", 9.10305, -43.26461], + ["2019-09-25T08:44:03", 9.09511, -43.2586], + ["2019-09-25T09:14:03", 9.08785, -43.25354], + ["2019-09-25T09:43:48", 9.08085, -43.24887], + ["2019-09-25T10:13:48", 9.0748, -43.24518], + ["2019-09-25T10:44:29", 9.06654, -43.24008], + ["2019-09-25T11:13:20", 9.05946, -43.2363], + ["2019-09-25T11:44:10", 9.05139, -43.23272], + ["2019-09-25T12:12:53", 9.04461, -43.22937], + ["2019-09-25T12:44:10", 9.03757, -43.22516], + ["2019-09-25T13:43:29", 9.02325, -43.21751], + ["2019-09-25T14:13:29", 9.01634, -43.21425], + ["2019-09-25T14:43:29", 9.00969, -43.21185], + ["2019-09-25T16:11:34", 8.99424, -43.20279], + ["2019-09-25T17:11:15", 8.98415, -43.19336], + ["2019-09-25T18:41:17", 8.97167, -43.17596], + ["2019-09-25T19:12:00", 8.9686, -43.17027], + ["2019-09-25T19:42:00", 8.9662, -43.16418], + ["2019-09-25T20:40:58", 8.96142, -43.15247], + ["2019-09-25T21:10:58", 8.95975, -43.14526], + ["2019-09-25T21:40:58", 8.9573, -43.13788], + ["2019-09-26T00:40:33", 8.95252, -43.09875], + ["2019-09-26T01:41:28", 8.94014, -43.08868], + ["2019-09-26T02:11:01", 8.93435, -43.08358], + ["2019-09-26T02:41:01", 8.92821, -43.07766], + ["2019-09-26T03:11:01", 8.92272, -43.07028], + ["2019-09-26T03:37:35", 8.91834, -43.06403], + ["2019-09-26T04:39:29", 8.91062, -43.04568], + ["2019-09-26T05:06:55", 8.90968, -43.03882], + ["2019-09-26T05:36:55", 8.90818, -43.03281], + ["2019-09-26T06:08:59", 8.90618, -43.02573], + ["2019-09-26T13:04:32", 8.9209, -42.88666], + ["2019-09-26T14:03:39", 8.92531, -42.8669], + ["2019-09-26T14:33:39", 8.92652, -42.85789], + ["2019-09-26T15:03:39", 8.92634, -42.84836], + ["2019-09-26T15:36:32", 8.92606, -42.83893], + ["2019-09-26T16:03:44", 8.92596, -42.8309], + ["2019-09-26T16:34:59", 8.92597, -42.82139], + ["2019-09-26T17:04:59", 8.92727, -42.81152], + ["2019-09-26T17:32:58", 8.92974, -42.80281], + ["2019-09-26T18:02:58", 8.93317, -42.79337], + ["2019-09-26T18:32:58", 8.93703, -42.7847], + ["2019-09-26T20:02:16", 8.95119, -42.74533], + ["2019-09-26T20:32:16", 8.95182, -42.74387], + ["2019-09-26T21:02:16", 8.95539, -42.7352], + ["2019-09-26T21:32:07", 8.96102, -42.72464], + ["2019-09-26T22:02:57", 8.96646, -42.7142], + ["2019-09-27T01:30:45", 9.00416, -42.62689], + ["2019-09-27T03:00:21", 9.01824, -42.57562], + ["2019-09-27T03:01:55", 9.0228, -42.55634], + ["2019-09-27T04:01:55", 9.02558, -42.53668], + ["2019-09-27T08:58:29", 9.03162, -42.36639], + ["2019-09-27T10:57:47", 9.03265, -42.32565], + ["2019-09-27T11:27:07", 9.03382, -42.31571], + ["2019-09-27T11:57:07", 9.0345, -42.30696], + ["2019-09-27T12:27:07", 9.03545, -42.29675], + ["2019-09-27T14:26:14", 9.03965, -42.26505], + ["2019-09-27T14:56:14", 9.04003, -42.26042], + ["2019-09-27T15:26:14", 9.03909, -42.25647], + ["2019-09-27T15:56:00", 9.03877, -42.25115], + ["2019-09-27T16:26:00", 9.03834, -42.24557], + ["2019-09-27T16:57:12", 9.03791, -42.23914], + ["2019-09-27T17:28:16", 9.03708, -42.23378], + ["2019-09-27T17:58:16", 9.03511, -42.22717], + ["2019-09-27T18:25:32", 9.03297, -42.2198], + ["2019-09-27T18:55:32", 9.03116, -42.2113], + ["2019-09-27T21:25:58", 9.03126, -42.17331], + ["2019-09-27T22:55:01", 9.02581, -42.15354], + ["2019-09-27T23:25:01", 9.02379, -42.14659], + ["2019-09-27T23:55:01", 9.02103, -42.13809], + ["2019-09-28T00:24:27", 9.01816, -42.1315], + ["2019-09-28T00:54:27", 9.01554, -42.12747], + ["2019-09-28T01:54:06", 9.01033, -42.11986], + ["2019-09-28T02:24:06", 9.00712, -42.11729], + ["2019-09-28T02:54:06", 9.00376, -42.11334], + ["2019-09-28T04:23:24", 8.99726, -42.10965], + ["2019-09-28T05:23:03", 8.99048, -42.11157], + ["2019-09-28T05:51:16", 8.98703, -42.11345], + ["2019-09-28T06:21:16", 8.98338, -42.11542], + ["2019-09-28T06:51:16", 8.97905, -42.11722], + ["2019-09-28T07:22:04", 8.97539, -42.11938], + ["2019-09-28T07:52:04", 8.97316, -42.12067], + ["2019-09-28T08:22:04", 8.97049, -42.12067], + ["2019-09-28T08:50:37", 8.96791, -42.12082], + ["2019-09-28T09:22:26", 8.96542, -42.12106], + ["2019-09-28T10:19:42", 8.9647, -42.1203], + ["2019-09-28T10:51:30", 8.96362, -42.11896], + ["2019-09-28T11:19:42", 8.96251, -42.11807], + ["2019-09-28T11:49:17", 8.9634, -42.11683], + ["2019-09-28T12:19:17", 8.96439, -42.11511], + ["2019-09-28T12:49:14", 8.96411, -42.11471], + ["2019-09-28T13:19:14", 8.96278, -42.11557], + ["2019-09-28T14:48:20", 8.95523, -42.12346], + ["2019-09-28T15:18:30", 8.95288, -42.12701], + ["2019-09-28T15:48:20", 8.95068, -42.13101], + ["2019-09-28T18:18:39", 8.94872, -42.15378], + ["2019-09-28T18:48:39", 8.94786, -42.1579], + ["2019-09-28T19:18:39", 8.94571, -42.16159], + ["2019-09-28T21:16:40", 8.93591, -42.17335], + ["2019-09-28T21:46:40", 8.93385, -42.1761], + ["2019-09-28T22:16:40", 8.93146, -42.17902], + ["2019-09-28T22:47:54", 8.93027, -42.18213], + ["2019-09-29T01:15:47", 8.93352, -42.20215], + ["2019-09-29T01:45:17", 8.93617, -42.20756], + ["2019-09-29T02:15:17", 8.93922, -42.21357], + ["2019-09-29T02:45:17", 8.94231, -42.2182], + ["2019-09-29T05:15:30", 8.96063, -42.2374], + ["2019-09-29T08:15:29", 8.98185, -42.25339], + ["2019-09-29T08:43:25", 8.98699, -42.25535], + ["2019-09-29T09:13:25", 8.99145, -42.25629], + ["2019-09-29T09:44:58", 8.99609, -42.25677], + ["2019-09-29T10:13:04", 9.00144, -42.25674], + ["2019-09-29T11:42:36", 9.01624, -42.25897], + ["2019-09-29T12:13:59", 9.02017, -42.26178], + ["2019-09-29T12:42:32", 9.02355, -42.26385], + ["2019-09-29T17:11:51", 9.05239, -42.25778], + ["2019-09-29T17:40:45", 9.05508, -42.25635], + ["2019-09-29T23:38:37", 9.0947, -42.22318], + ["2019-09-30T00:08:18", 9.09643, -42.21682], + ["2019-09-30T00:38:18", 9.09756, -42.21227], + ["2019-09-30T01:08:18", 9.0988, -42.20901], + ["2019-09-30T01:40:00", 9.09859, -42.20599], + ["2019-09-30T02:07:55", 9.09983, -42.20312], + ["2019-09-30T02:37:55", 9.10077, -42.19934], + ["2019-09-30T04:07:09", 9.09834, -42.18764], + ["2019-09-30T04:37:09", 9.09906, -42.18369], + ["2019-09-30T05:07:09", 9.09825, -42.1806], + ["2019-09-30T07:35:24", 9.0934, -42.15456], + ["2019-09-30T08:05:24", 9.09525, -42.15138], + ["2019-09-30T08:35:24", 9.09451, -42.14743], + ["2019-09-30T10:36:00", 9.09395, -42.13269], + ["2019-09-30T11:34:18", 9.09162, -42.12323], + ["2019-09-30T12:04:18", 9.09162, -42.11722], + ["2019-09-30T12:34:18", 9.09282, -42.11087], + ["2019-09-30T13:07:00", 9.09432, -42.10397], + ["2019-09-30T13:33:43", 9.09535, -42.0976], + ["2019-09-30T15:03:18", 9.10474, -42.07599], + ["2019-09-30T15:04:57", 9.10478, -42.07595], + ["2019-09-30T15:34:57", 9.10821, -42.06874], + ["2019-09-30T16:04:57", 9.11262, -42.0611], + ["2019-09-30T19:01:47", 9.14708, -42.02823], + ["2019-09-30T19:31:47", 9.1515, -42.02463], + ["2019-09-30T20:01:47", 9.15635, -42.02008], + ["2019-09-30T20:09:11", 9.16065, -42.01592], + ["2019-09-30T20:39:11", 9.16137, -42.01523], + ["2019-09-30T21:01:27", 9.16391, -42.01276], + ["2019-09-30T22:30:53", 9.16987, -42.00382], + ["2019-09-30T23:00:53", 9.17065, -42.00116], + ["2019-09-30T23:30:53", 9.17129, -41.99979], + ["2019-10-01T00:02:45", 9.17165, -41.99906], + ["2019-10-01T00:32:45", 9.17281, -41.99872], + ["2019-10-01T05:00:26", 9.18909, -41.9819], + ["2019-10-01T05:29:16", 9.1914, -41.9812], + ["2019-10-01T05:58:53", 9.19408, -41.98095], + ["2019-10-01T06:28:53", 9.19614, -41.98035], + ["2019-10-01T08:28:18", 9.2075, -41.97241], + ["2019-10-01T10:27:36", 9.21671, -41.96405], + ["2019-10-01T10:58:41", 9.2187, -41.96243], + ["2019-10-01T11:27:17", 9.21912, -41.96133], + ["2019-10-01T11:58:04", 9.21977, -41.96045], + ["2019-10-01T14:27:30", 9.24346, -41.95224], + ["2019-10-01T14:56:17", 9.2491, -41.95148], + ["2019-10-01T15:28:01", 9.25404, -41.9512], + ["2019-10-01T16:25:53", 9.26623, -41.94998], + ["2019-10-01T16:57:19", 9.27225, -41.95053], + ["2019-10-01T20:39:38", 9.29477, -41.95792], + ["2019-10-01T20:54:19", 9.29566, -41.95944], + ["2019-10-01T21:24:19", 9.29875, -41.96167], + ["2019-10-01T21:54:58", 9.30232, -41.96444], + ["2019-10-01T22:24:58", 9.30592, -41.96693], + ["2019-10-01T22:54:58", 9.31209, -41.9689], + ["2019-10-01T23:54:29", 9.32548, -41.97202], + ["2019-10-02T02:52:30", 9.36969, -41.98495], + ["2019-10-02T03:22:04", 9.38033, -41.9844], + ["2019-10-02T03:52:04", 9.38655, -41.98371], + ["2019-10-02T04:22:04", 9.39551, -41.98071], + ["2019-10-02T06:22:59", 9.42102, -41.9696], + ["2019-10-02T06:51:26", 9.42586, -41.96704], + ["2019-10-02T07:22:56", 9.42772, -41.96484], + ["2019-10-02T07:51:07", 9.43024, -41.96405], + ["2019-10-02T08:50:46", 9.43727, -41.96368], + ["2019-10-02T09:20:18", 9.44106, -41.96454], + ["2019-10-02T09:50:18", 9.44299, -41.96548], + ["2019-10-02T10:21:32", 9.44398, -41.96716], + ["2019-10-02T10:49:59", 9.44576, -41.96756], + ["2019-10-02T11:21:30", 9.44843, -41.96686], + ["2019-10-02T13:19:19", 9.46312, -41.9679], + ["2019-10-02T17:18:59", 9.49353, -41.95978], + ["2019-10-02T20:16:45", 9.52605, -41.931], + ["2019-10-02T20:48:00", 9.52682, -41.93054], + ["2019-10-02T21:16:45", 9.52952, -41.92877], + ["2019-10-02T21:46:41", 9.53265, -41.92701], + ["2019-10-02T22:16:41", 9.53514, -41.92529], + ["2019-10-02T23:48:41", 9.53755, -41.9199], + ["2019-10-03T00:16:02", 9.53736, -41.91779], + ["2019-10-03T00:48:41", 9.53614, -41.91586], + ["2019-10-03T03:15:04", 9.52116, -41.90805], + ["2019-10-03T08:13:25", 9.46719, -41.90836], + ["2019-10-03T15:12:05", 9.43688, -41.95538], + ["2019-10-03T16:11:44", 9.42526, -41.97095], + ["2019-10-03T16:41:44", 9.42085, -41.97739], + ["2019-10-03T18:11:09", 9.41541, -41.99729], + ["2019-10-03T18:41:09", 9.41502, -42.00338], + ["2019-10-03T19:11:09", 9.41206, -42.01196], + ["2019-10-03T19:41:41", 9.41421, -42.01636], + ["2019-10-03T20:11:41", 9.41489, -42.02228], + ["2019-10-03T20:39:09", 9.41728, -42.02838], + ["2019-10-03T20:40:00", 9.41736, -42.02847], + ["2019-10-03T21:39:21", 9.42389, -42.04135], + ["2019-10-03T22:09:21", 9.42852, -42.04435], + ["2019-10-03T22:39:21", 9.42951, -42.04941], + ["2019-10-04T03:38:06", 9.4463, -42.10397], + ["2019-10-04T07:36:36", 9.446, -42.14099], + ["2019-10-04T08:08:31", 9.44609, -42.14766], + ["2019-10-04T08:38:31", 9.44862, -42.15393], + ["2019-10-04T09:36:21", 9.45703, -42.16354], + ["2019-10-04T10:07:59", 9.46099, -42.16788], + ["2019-10-04T13:05:12", 9.47514, -42.1897], + ["2019-10-04T13:34:42", 9.48005, -42.19251], + ["2019-10-04T14:04:42", 9.48485, -42.19483], + ["2019-10-04T14:34:42", 9.48602, -42.19861], + ["2019-10-04T16:33:41", 9.48259, -42.21741], + ["2019-10-04T17:03:41", 9.48409, -42.2187], + ["2019-10-04T17:33:41", 9.48452, -42.21964], + ["2019-10-04T20:02:53", 9.48748, -42.23672], + ["2019-10-04T21:32:29", 9.49342, -42.24813], + ["2019-10-04T22:02:29", 9.49475, -42.25062], + ["2019-10-04T22:32:29", 9.49531, -42.25568], + ["2019-10-04T23:32:02", 9.50041, -42.2616], + ["2019-10-05T02:01:15", 9.51155, -42.27195], + ["2019-10-05T02:31:15", 9.51242, -42.27144], + ["2019-10-05T03:01:15", 9.51075, -42.27264], + ["2019-10-05T06:02:09", 9.51059, -42.27887], + ["2019-10-05T06:30:05", 9.51112, -42.28203], + ["2019-10-05T07:00:05", 9.51781, -42.28186], + ["2019-10-05T09:29:30", 9.53776, -42.28845], + ["2019-10-05T09:59:01", 9.5436, -42.28772], + ["2019-10-05T10:31:00", 9.55158, -42.28799], + ["2019-10-05T10:59:01", 9.56052, -42.28635], + ["2019-10-05T14:29:59", 9.61998, -42.27759], + ["2019-10-05T17:29:29", 9.6486, -42.26016], + ["2019-10-05T18:26:28", 9.65354, -42.25053], + ["2019-10-05T18:56:28", 9.65625, -42.24701], + ["2019-10-05T19:26:28", 9.65706, -42.24744], + ["2019-10-05T20:55:49", 9.6639, -42.25216], + ["2019-10-05T21:25:49", 9.66883, -42.25302], + ["2019-10-05T21:55:49", 9.67403, -42.25302], + ["2019-10-05T22:55:46", 9.68403, -42.24918], + ["2019-10-06T00:25:22", 9.70923, -42.2374], + ["2019-10-06T00:56:31", 9.71346, -42.23329], + ["2019-10-06T01:26:31", 9.71505, -42.22977], + ["2019-10-06T03:56:23", 9.72206, -42.21262], + ["2019-10-06T04:24:00", 9.72325, -42.20995], + ["2019-10-06T04:54:00", 9.72655, -42.20566], + ["2019-10-06T08:23:10", 9.74485, -42.17946], + ["2019-10-06T08:55:08", 9.7448, -42.17712], + ["2019-10-06T09:23:10", 9.74399, -42.1756], + ["2019-10-06T09:53:34", 9.7408, -42.17536], + ["2019-10-06T10:23:34", 9.73621, -42.1763], + ["2019-10-06T11:25:01", 9.72378, -42.17959], + ["2019-10-06T11:55:01", 9.7204, -42.18182], + ["2019-10-06T12:25:01", 9.71602, -42.18491], + ["2019-10-06T12:52:21", 9.71299, -42.18478], + ["2019-10-06T13:22:14", 9.70975, -42.18497], + ["2019-10-06T13:53:59", 9.7059, -42.18698], + ["2019-10-06T15:51:02", 9.69668, -42.20615], + ["2019-10-06T16:21:02", 9.69604, -42.21078], + ["2019-10-06T21:19:26", 9.73779, -42.25446], + ["2019-10-06T22:20:00", 9.74682, -42.2682], + ["2019-10-06T22:50:00", 9.75155, -42.27498], + ["2019-10-06T23:20:00", 9.75717, -42.28253], + ["2019-10-07T00:18:10", 9.76734, -42.29741], + ["2019-10-07T00:48:10", 9.77163, -42.30325], + ["2019-10-07T01:18:10", 9.7721, -42.3096], + ["2019-10-07T03:17:15", 9.78555, -42.33251], + ["2019-10-07T03:47:15", 9.79285, -42.33551], + ["2019-10-07T06:15:46", 9.81587, -42.34636], + ["2019-10-07T06:45:46", 9.82046, -42.34782], + ["2019-10-07T07:15:46", 9.82522, -42.34833], + ["2019-10-07T07:45:22", 9.82737, -42.35102], + ["2019-10-07T08:15:22", 9.83062, -42.35471], + ["2019-10-07T09:46:29", 9.84275, -42.36328], + ["2019-10-07T10:16:41", 9.84713, -42.36391], + ["2019-10-07T10:46:41", 9.85056, -42.3652], + ["2019-10-07T12:16:02", 9.86151, -42.3707], + ["2019-10-07T16:12:16", 9.90895, -42.38687], + ["2019-10-07T17:11:30", 9.92155, -42.39122], + ["2019-10-07T17:41:30", 9.92468, -42.39234], + ["2019-10-07T18:11:30", 9.92484, -42.39346], + ["2019-10-07T19:12:23", 9.92815, -42.39389], + ["2019-10-07T19:41:59", 9.93139, -42.39368], + ["2019-10-07T21:10:43", 9.94321, -42.38846], + ["2019-10-07T22:10:32", 9.94139, -42.3855], + ["2019-10-07T23:13:25", 9.94136, -42.38541], + ["2019-10-07T23:43:25", 9.94037, -42.38704], + ["2019-10-08T00:13:25", 9.93905, -42.38953], + ["2019-10-08T01:41:16", 9.93488, -42.39423], + ["2019-10-08T06:37:20", 9.92658, -42.40466], + ["2019-10-08T10:08:04", 9.92613, -42.40149], + ["2019-10-08T10:36:46", 9.92475, -42.40271], + ["2019-10-08T11:06:21", 9.92357, -42.40299], + ["2019-10-08T11:36:21", 9.92516, -42.40265], + ["2019-10-08T12:06:54", 9.92502, -42.40201], + ["2019-10-08T12:36:07", 9.92568, -42.40237], + ["2019-10-08T13:06:06", 9.92348, -42.40465], + ["2019-10-08T13:36:06", 9.92301, -42.40748], + ["2019-10-08T14:06:06", 9.92357, -42.41177], + ["2019-10-08T14:35:08", 9.92458, -42.41591], + ["2019-10-08T15:05:08", 9.92647, -42.42003], + ["2019-10-08T15:35:08", 9.92981, -42.42389], + ["2019-10-08T16:04:41", 9.92908, -42.42871], + ["2019-10-08T16:34:41", 9.92822, -42.43317], + ["2019-10-08T17:04:23", 9.9285, -42.43662], + ["2019-10-08T17:34:23", 9.9297, -42.44022], + ["2019-10-08T18:04:39", 9.93173, -42.44376], + ["2019-10-08T18:34:20", 9.93314, -42.44884], + ["2019-10-08T19:04:20", 9.93645, -42.45193], + ["2019-10-08T20:33:22", 9.93361, -42.45793], + ["2019-10-08T21:03:55", 9.93337, -42.45822], + ["2019-10-08T21:33:22", 9.93237, -42.46008], + ["2019-10-09T00:03:28", 9.93485, -42.46698], + ["2019-10-09T00:32:58", 9.93562, -42.46964], + ["2019-10-09T01:02:58", 9.93918, -42.47256], + ["2019-10-09T01:32:27", 9.94452, -42.47486], + ["2019-10-09T02:02:27", 9.95362, -42.47443], + ["2019-10-09T02:32:05", 9.96275, -42.47318], + ["2019-10-09T03:03:58", 9.97697, -42.46542], + ["2019-10-09T03:31:59", 9.98207, -42.46344], + ["2019-10-09T04:02:09", 9.98865, -42.46077], + ["2019-10-09T04:32:09", 9.99471, -42.46008], + ["2019-10-09T05:01:24", 10.00134, -42.45859], + ["2019-10-09T05:30:59", 10.00414, -42.4559], + ["2019-10-09T06:00:59", 10.00504, -42.45444], + ["2019-10-09T07:00:27", 10.00801, -42.45207], + ["2019-10-09T07:30:27", 10.00784, -42.45044], + ["2019-10-09T08:00:27", 10.00853, -42.44907], + ["2019-10-09T08:29:47", 10.00647, -42.44707], + ["2019-10-09T08:59:47", 10.00484, -42.44484], + ["2019-10-09T09:29:47", 10.00287, -42.44312], + ["2019-10-09T10:00:43", 10.00309, -42.44156], + ["2019-10-09T10:29:23", 10.00501, -42.43996], + ["2019-10-09T10:59:23", 10.00668, -42.43902], + ["2019-10-09T11:29:23", 10.00994, -42.43893], + ["2019-10-09T11:59:13", 10.01534, -42.4377], + ["2019-10-09T12:29:13", 10.01744, -42.43753], + ["2019-10-09T12:59:26", 10.01941, -42.43656], + ["2019-10-09T13:29:26", 10.01962, -42.43716], + ["2019-10-09T13:59:26", 10.01735, -42.43707], + ["2019-10-09T14:28:55", 10.01662, -42.43649], + ["2019-10-09T14:59:25", 10.01606, -42.43414], + ["2019-10-09T15:29:27", 10.01589, -42.43203], + ["2019-10-09T15:59:27", 10.01649, -42.43134], + ["2019-10-09T16:28:43", 10.01444, -42.4317], + ["2019-10-09T16:58:43", 10.01053, -42.4317], + ["2019-10-09T17:27:52", 10.00658, -42.4325], + ["2019-10-09T17:57:31", 10.00282, -42.4325], + ["2019-10-09T18:27:31", 10.00003, -42.43207], + ["2019-10-09T18:57:16", 9.99741, -42.4294], + ["2019-10-09T19:27:16", 9.99701, -42.42691], + ["2019-10-09T19:57:25", 9.99206, -42.42022], + ["2019-10-09T20:39:07", 9.99257, -42.4194], + ["2019-10-09T20:57:25", 9.99159, -42.41721], + ["2019-10-09T21:27:09", 9.99065, -42.41382], + ["2019-10-09T21:57:09", 9.98859, -42.40979], + ["2019-10-09T22:56:29", 9.98675, -42.40186], + ["2019-10-09T23:26:29", 9.98525, -42.39868], + ["2019-10-09T23:56:29", 9.9825, -42.39636], + ["2019-10-10T00:25:55", 9.98412, -42.39432], + ["2019-10-10T00:56:09", 9.98695, -42.39175], + ["2019-10-10T01:25:32", 9.98621, -42.39056], + ["2019-10-10T01:55:14", 9.98542, -42.38902], + ["2019-10-10T02:25:14", 9.98606, -42.38602], + ["2019-10-10T02:55:28", 9.98359, -42.38269], + ["2019-10-10T03:25:11", 9.98005, -42.38052], + ["2019-10-10T03:55:27", 9.97861, -42.3793], + ["2019-10-10T04:25:02", 9.97725, -42.37869], + ["2019-10-10T04:55:25", 9.97547, -42.37817], + ["2019-10-10T05:24:50", 9.97245, -42.37738], + ["2019-10-10T05:55:07", 9.96921, -42.37561], + ["2019-10-10T06:24:27", 9.96818, -42.37315], + ["2019-10-10T06:54:27", 9.96488, -42.37272], + ["2019-10-10T07:24:27", 9.96183, -42.37195], + ["2019-10-10T07:54:55", 9.95963, -42.37057], + ["2019-10-10T08:24:14", 9.9574, -42.36966], + ["2019-10-10T08:54:27", 9.95562, -42.36713], + ["2019-10-10T09:24:06", 9.9529, -42.3667], + ["2019-10-10T09:53:49", 9.95144, -42.36523], + ["2019-10-10T10:23:49", 9.95123, -42.3642], + ["2019-10-10T10:53:59", 9.94936, -42.3631], + ["2019-10-10T11:23:59", 9.94833, -42.36241], + ["2019-10-10T11:53:59", 9.95205, -42.36121], + ["2019-10-10T12:23:53", 9.95543, -42.35985], + ["2019-10-10T12:53:53", 9.95672, -42.35959], + ["2019-10-10T14:22:45", 9.97265, -42.35709], + ["2019-10-10T14:52:45", 9.98076, -42.35658], + ["2019-10-10T15:22:45", 9.99123, -42.35349], + ["2019-10-10T16:22:33", 10.01165, -42.35504], + ["2019-10-10T16:52:20", 10.01966, -42.35651], + ["2019-10-10T17:22:20", 10.02494, -42.35797], + ["2019-10-10T17:52:20", 10.02949, -42.3584], + ["2019-10-10T18:22:28", 10.03247, -42.35945], + ["2019-10-10T18:52:28", 10.03432, -42.35825], + ["2019-10-10T19:21:58", 10.03401, -42.35667], + ["2019-10-10T19:51:58", 10.03302, -42.35495], + ["2019-10-10T20:21:27", 10.03256, -42.35297], + ["2019-10-10T20:38:55", 10.0328, -42.35117], + ["2019-10-10T20:51:54", 10.03343, -42.34937], + ["2019-10-10T22:20:24", 10.03492, -42.3371], + ["2019-10-10T22:50:24", 10.03406, -42.33392], + ["2019-10-10T23:20:24", 10.03427, -42.33109], + ["2019-10-10T23:50:38", 10.03367, -42.32907], + ["2019-10-11T00:20:11", 10.03511, -42.32422], + ["2019-10-11T00:50:28", 10.03599, -42.32111], + ["2019-10-11T01:20:26", 10.03767, -42.31902], + ["2019-10-11T01:50:26", 10.04037, -42.31696], + ["2019-10-11T02:20:26", 10.04205, -42.31531], + ["2019-10-11T02:50:26", 10.0439, -42.31445], + ["2019-10-11T03:19:58", 10.04405, -42.31576], + ["2019-10-11T03:49:58", 10.04521, -42.31705], + ["2019-10-11T04:19:36", 10.0445, -42.31849], + ["2019-10-11T04:49:36", 10.04261, -42.31995], + ["2019-10-11T05:19:03", 10.0409, -42.32114], + ["2019-10-11T05:49:26", 10.0409, -42.32275], + ["2019-10-11T06:18:42", 10.03995, -42.32437], + ["2019-10-11T06:48:58", 10.0384, -42.3241], + ["2019-10-11T07:18:56", 10.03518, -42.32299], + ["2019-10-11T07:48:56", 10.03205, -42.32248], + ["2019-10-11T08:18:13", 10.02962, -42.3219], + ["2019-10-11T08:48:27", 10.02618, -42.32159], + ["2019-10-11T09:18:25", 10.02338, -42.32014], + ["2019-10-11T09:48:25", 10.02128, -42.3186], + ["2019-10-11T10:17:56", 10.02029, -42.31769], + ["2019-10-11T10:47:56", 10.0205, -42.31778], + ["2019-10-11T11:17:12", 10.01909, -42.31808], + ["2019-10-11T11:46:57", 10.01771, -42.31941], + ["2019-10-11T12:16:57", 10.01471, -42.32053], + ["2019-10-11T13:16:36", 10.00648, -42.323], + ["2019-10-11T13:46:16", 10.0007, -42.3244], + ["2019-10-11T14:16:16", 9.99491, -42.32697], + ["2019-10-11T14:46:25", 9.98832, -42.33051], + ["2019-10-11T15:15:52", 9.98377, -42.3365], + ["2019-10-11T15:45:52", 9.97889, -42.34216], + ["2019-10-11T16:15:40", 9.97517, -42.34706], + ["2019-10-11T16:45:40", 9.97302, -42.35135], + ["2019-10-11T17:14:46", 9.97311, -42.35726], + ["2019-10-11T17:44:46", 9.97375, -42.3643], + ["2019-10-11T18:14:46", 9.97481, -42.36902], + ["2019-10-11T18:44:39", 9.97476, -42.3736], + ["2019-10-11T19:44:18", 9.97634, -42.38342], + ["2019-10-11T20:14:02", 9.97525, -42.39348], + ["2019-10-11T20:44:02", 9.97508, -42.39468], + ["2019-10-11T21:14:01", 9.97377, -42.40049], + ["2019-10-11T21:44:01", 9.97098, -42.40598], + ["2019-10-11T22:14:21", 9.96813, -42.41171], + ["2019-10-11T22:43:32", 9.96435, -42.41653], + ["2019-10-11T23:14:15", 9.96132, -42.42233], + ["2019-10-12T00:15:18", 9.9534, -42.43359], + ["2019-10-12T02:11:51", 9.94905, -42.46174], + ["2019-10-12T02:41:51", 9.94829, -42.46869], + ["2019-10-12T03:11:51", 9.94652, -42.4765], + ["2019-10-12T04:11:42", 9.94942, -42.49356], + ["2019-10-12T06:43:58", 9.97101, -42.53504], + ["2019-10-12T07:13:58", 9.97401, -42.54165], + ["2019-10-12T07:43:58", 9.97865, -42.54749], + ["2019-10-12T08:12:55", 9.9818, -42.55191], + ["2019-10-12T08:42:55", 9.98612, -42.5574], + ["2019-10-12T09:12:55", 9.99055, -42.56332], + ["2019-10-12T09:40:56", 9.99497, -42.56833], + ["2019-10-12T10:10:56", 9.99862, -42.57357], + ["2019-10-12T10:40:56", 10.00124, -42.57855], + ["2019-10-12T12:39:58", 10.01268, -42.59671], + ["2019-10-12T13:09:58", 10.01783, -42.60049], + ["2019-10-12T13:39:58", 10.02513, -42.60349], + ["2019-10-12T14:08:53", 10.03425, -42.6059], + ["2019-10-12T16:37:57", 10.08036, -42.61108], + ["2019-10-12T19:36:38", 10.0962, -42.5946], + ["2019-10-12T20:06:38", 10.09659, -42.59357], + ["2019-10-12T20:36:38", 10.09689, -42.59323], + ["2019-10-12T23:05:39", 10.10838, -42.59394], + ["2019-10-12T23:35:39", 10.11705, -42.59291], + ["2019-10-13T00:05:39", 10.12203, -42.59042], + ["2019-10-13T02:36:28", 10.11033, -42.57047], + ["2019-10-13T03:05:59", 10.1054, -42.56937], + ["2019-10-13T03:35:59", 10.10051, -42.56808], + ["2019-10-13T04:04:33", 10.09685, -42.56802], + ["2019-10-13T04:34:15", 10.09262, -42.56792], + ["2019-10-13T05:04:15", 10.08807, -42.56818], + ["2019-10-13T05:34:23", 10.08143, -42.56793], + ["2019-10-13T07:33:22", 10.04897, -42.56487], + ["2019-10-13T08:03:22", 10.04077, -42.56676], + ["2019-10-13T08:33:22", 10.033, -42.56891], + ["2019-10-13T12:32:28", 9.97819, -42.59967], + ["2019-10-13T13:02:20", 9.97751, -42.60361], + ["2019-10-13T13:33:26", 9.97824, -42.60742], + ["2019-10-13T14:01:47", 9.98007, -42.60947], + ["2019-10-13T15:01:30", 9.98372, -42.61716], + ["2019-10-13T16:01:10", 9.98797, -42.6254], + ["2019-10-13T19:00:58", 10.00257, -42.65216], + ["2019-10-13T19:30:58", 10.00566, -42.65628], + ["2019-10-13T20:00:58", 10.00832, -42.66083], + ["2019-10-13T20:39:17", 10.01126, -42.66696], + ["2019-10-13T23:58:14", 10.03785, -42.69073], + ["2019-10-14T03:57:35", 10.09535, -42.70831], + ["2019-10-14T04:57:13", 10.11333, -42.71243], + ["2019-10-14T06:56:53", 10.13914, -42.71475], + ["2019-10-14T09:27:44", 10.16919, -42.72071], + ["2019-10-14T09:57:44", 10.17691, -42.72131], + ["2019-10-14T10:27:44", 10.18875, -42.72217], + ["2019-10-14T10:55:38", 10.20174, -42.72272], + ["2019-10-14T11:25:28", 10.21333, -42.72214], + ["2019-10-14T11:57:45", 10.22291, -42.72031], + ["2019-10-14T12:55:02", 10.24074, -42.7164], + ["2019-10-14T14:24:19", 10.26359, -42.7066], + ["2019-10-14T14:55:57", 10.27089, -42.70204], + ["2019-10-14T15:25:57", 10.28093, -42.69741], + ["2019-10-14T15:55:57", 10.29376, -42.6908], + ["2019-10-14T16:27:28", 10.30353, -42.68482], + ["2019-10-14T16:57:28", 10.31362, -42.67795], + ["2019-10-14T18:22:50", 10.32152, -42.66491], + ["2019-10-14T18:55:44", 10.32305, -42.66226], + ["2019-10-14T19:22:50", 10.32478, -42.66113], + ["2019-10-14T19:52:43", 10.32662, -42.66107], + ["2019-10-14T20:08:51", 10.32739, -42.66081], + ["2019-10-14T20:38:51", 10.32743, -42.66064], + ["2019-10-14T21:53:57", 10.32493, -42.6592], + ["2019-10-14T22:23:57", 10.32437, -42.65817], + ["2019-10-14T22:53:57", 10.3251, -42.65594], + ["2019-10-14T23:21:51", 10.3249, -42.65396], + ["2019-10-15T00:22:30", 10.32507, -42.64969], + ["2019-10-15T00:51:28", 10.32667, -42.64685], + ["2019-10-15T01:53:58", 10.33339, -42.63737], + ["2019-10-15T02:23:58", 10.33554, -42.63205], + ["2019-10-15T02:53:58", 10.337, -42.62604], + ["2019-10-15T03:23:06", 10.3359, -42.62056], + ["2019-10-15T03:53:06", 10.33461, -42.61438], + ["2019-10-15T04:21:05", 10.33259, -42.60887], + ["2019-10-15T04:51:05", 10.32946, -42.60441], + ["2019-10-15T05:21:05", 10.32714, -42.60089], + ["2019-10-15T07:53:00", 10.31515, -42.5946], + ["2019-10-15T08:49:12", 10.30625, -42.59668], + ["2019-10-15T09:19:12", 10.30166, -42.59865], + ["2019-10-15T09:49:12", 10.29827, -42.60037], + ["2019-10-15T10:19:00", 10.29531, -42.60226], + ["2019-10-15T17:19:25", 10.28283, -42.63239], + ["2019-10-15T17:46:53", 10.28213, -42.63528], + ["2019-10-15T19:16:30", 10.27236, -42.65076], + ["2019-10-15T20:46:22", 10.26654, -42.6723], + ["2019-10-15T21:16:10", 10.26647, -42.68005], + ["2019-10-15T21:46:10", 10.26832, -42.68692], + ["2019-10-15T22:15:39", 10.27104, -42.69507], + ["2019-10-15T22:45:39", 10.27104, -42.70099], + ["2019-10-16T01:45:18", 10.27237, -42.73538], + ["2019-10-16T02:14:48", 10.27339, -42.74023], + ["2019-10-16T03:44:17", 10.27838, -42.75373], + ["2019-10-16T04:14:17", 10.27928, -42.75759], + ["2019-10-16T04:44:17", 10.28168, -42.76025], + ["2019-10-16T05:17:29", 10.28687, -42.76429], + ["2019-10-16T05:47:29", 10.29112, -42.76944], + ["2019-10-16T06:16:28", 10.29255, -42.77354], + ["2019-10-16T06:46:28", 10.29598, -42.77766], + ["2019-10-16T07:16:28", 10.29873, -42.78195], + ["2019-10-16T07:43:12", 10.29903, -42.78605], + ["2019-10-16T08:13:12", 10.30019, -42.7912], + ["2019-10-16T13:12:05", 10.32168, -42.84933], + ["2019-10-16T15:13:13", 10.34237, -42.86636], + ["2019-10-16T20:39:34", 10.40263, -42.88879], + ["2019-10-16T20:40:13", 10.40264, -42.88864], + ["2019-10-17T01:10:04", 10.42939, -42.90305], + ["2019-10-17T01:39:07", 10.43272, -42.90375], + ["2019-10-17T03:10:29", 10.45115, -42.90729], + ["2019-10-17T04:10:29", 10.45677, -42.90823], + ["2019-10-17T07:39:28", 10.48178, -42.89188], + ["2019-10-17T11:05:57", 10.49209, -42.8884], + ["2019-10-17T12:05:47", 10.50042, -42.88641], + ["2019-10-17T12:37:29", 10.50661, -42.88428], + ["2019-10-17T13:05:35", 10.51153, -42.88281], + ["2019-10-17T14:36:28", 10.52455, -42.8783], + ["2019-10-17T15:05:01", 10.52481, -42.8775], + ["2019-10-17T15:37:17", 10.5242, -42.87673], + ["2019-10-17T16:07:17", 10.5251, -42.87544], + ["2019-10-17T16:37:17", 10.52536, -42.87424], + ["2019-10-17T18:34:07", 10.52397, -42.87402], + ["2019-10-17T19:03:48", 10.52576, -42.8734], + ["2019-10-17T19:33:48", 10.52662, -42.8728], + ["2019-10-17T20:03:48", 10.52632, -42.87289], + ["2019-10-17T20:40:17", 10.52565, -42.87396], + ["2019-10-18T02:02:07", 10.50132, -42.88101], + ["2019-10-18T02:31:47", 10.50063, -42.88158], + ["2019-10-18T03:01:47", 10.49973, -42.88218], + ["2019-10-18T03:31:47", 10.49681, -42.88278], + ["2019-10-18T06:32:31", 10.48989, -42.88239], + ["2019-10-18T07:00:27", 10.48643, -42.88313], + ["2019-10-18T07:30:27", 10.48544, -42.88425], + ["2019-10-18T08:29:59", 10.47817, -42.88831], + ["2019-10-18T08:59:59", 10.47521, -42.8902], + ["2019-10-18T09:29:59", 10.47105, -42.89355], + ["2019-10-18T09:59:47", 10.46498, -42.89747], + ["2019-10-18T10:29:47", 10.46133, -42.90065], + ["2019-10-18T10:59:47", 10.45953, -42.90314], + ["2019-10-18T11:30:30", 10.45891, -42.90707], + ["2019-10-18T13:29:16", 10.44713, -42.92662], + ["2019-10-18T13:59:16", 10.44893, -42.93065], + ["2019-10-18T14:29:16", 10.44906, -42.9328], + ["2019-10-18T15:29:00", 10.44658, -42.93756], + ["2019-10-18T15:58:48", 10.44686, -42.93973], + ["2019-10-18T16:28:26", 10.44611, -42.94199], + ["2019-10-18T16:58:26", 10.44581, -42.94379], + ["2019-10-18T17:27:51", 10.4453, -42.94513], + ["2019-10-18T17:57:51", 10.44414, -42.94659], + ["2019-10-18T18:27:51", 10.44358, -42.94788], + ["2019-10-18T21:26:52", 10.44917, -42.95584], + ["2019-10-19T01:28:00", 10.44151, -42.99323], + ["2019-10-19T01:55:48", 10.44271, -42.99829], + ["2019-10-19T02:25:26", 10.44571, -43.00214], + ["2019-10-19T02:55:26", 10.4479, -43.0054], + ["2019-10-19T03:25:26", 10.44902, -43.00763], + ["2019-10-19T04:26:30", 10.45192, -43.01219], + ["2019-10-19T04:56:30", 10.45321, -43.01511], + ["2019-10-19T05:26:30", 10.45514, -43.01889], + ["2019-10-19T06:57:33", 10.45844, -43.02817], + ["2019-10-19T08:24:02", 10.466, -43.0399], + ["2019-10-19T08:54:02", 10.47197, -43.04093], + ["2019-10-19T09:24:02", 10.47407, -43.04376], + ["2019-10-19T09:53:49", 10.47825, -43.0481], + ["2019-10-19T10:23:49", 10.48074, -43.05179], + ["2019-10-19T10:55:03", 10.48081, -43.0556], + ["2019-10-19T11:25:03", 10.47836, -43.06049], + ["2019-10-19T12:53:55", 10.47157, -43.07715], + ["2019-10-19T13:23:55", 10.47084, -43.08127], + ["2019-10-19T13:53:55", 10.46762, -43.08771], + ["2019-10-19T16:24:00", 10.45932, -43.12116], + ["2019-10-19T16:54:00", 10.46095, -43.127], + ["2019-10-19T17:24:00", 10.46563, -43.13095], + ["2019-10-19T17:52:31", 10.46594, -43.13504], + ["2019-10-19T19:37:05", 10.47189, -43.15105], + ["2019-10-19T20:07:05", 10.4718, -43.15174], + ["2019-10-19T20:37:05", 10.47159, -43.15225], + ["2019-10-19T20:54:30", 10.47265, -43.15314], + ["2019-10-19T21:24:30", 10.47467, -43.15649], + ["2019-10-19T21:50:40", 10.4744, -43.15961], + ["2019-10-19T23:20:30", 10.47508, -43.17374], + ["2019-10-19T23:50:30", 10.47662, -43.17752], + ["2019-10-20T00:22:30", 10.47731, -43.18118], + ["2019-10-20T00:52:30", 10.47718, -43.18564], + ["2019-10-20T01:20:04", 10.47886, -43.1886], + ["2019-10-20T02:49:08", 10.48977, -43.19898], + ["2019-10-20T03:19:08", 10.4911, -43.20155], + ["2019-10-20T03:49:08", 10.4941, -43.20309], + ["2019-10-20T04:21:10", 10.49737, -43.20374], + ["2019-10-20T05:18:13", 10.50133, -43.20456], + ["2019-10-20T05:48:13", 10.50021, -43.20482], + ["2019-10-20T06:18:13", 10.50141, -43.20413], + ["2019-10-20T08:17:41", 10.50176, -43.20761], + ["2019-10-20T08:48:08", 10.50158, -43.20868], + ["2019-10-20T09:18:39", 10.50148, -43.20948], + ["2019-10-20T09:48:39", 10.50092, -43.21042], + ["2019-10-20T11:19:05", 10.49924, -43.21172], + ["2019-10-20T11:49:05", 10.49765, -43.21369], + ["2019-10-20T12:19:05", 10.49602, -43.21463], + ["2019-10-20T13:19:26", 10.49248, -43.21765], + ["2019-10-20T18:14:40", 10.48549, -43.23196], + ["2019-10-20T18:44:31", 10.48889, -43.23276], + ["2019-10-20T19:14:58", 10.49449, -43.2319], + ["2019-10-20T19:47:28", 10.49626, -43.23188], + ["2019-10-20T20:17:28", 10.49484, -43.23248], + ["2019-10-20T20:43:57", 10.49498, -43.23291], + ["2019-10-20T23:43:06", 10.48627, -43.2475], + ["2019-10-21T00:44:53", 10.47951, -43.25354], + ["2019-10-21T01:44:07", 10.46836, -43.26438], + ["2019-10-21T02:44:07", 10.46239, -43.2691], + ["2019-10-21T03:13:36", 10.4574, -43.27298], + ["2019-10-21T03:44:31", 10.45304, -43.27713], + ["2019-10-21T04:14:31", 10.45253, -43.28314], + ["2019-10-21T05:40:58", 10.45921, -43.29143], + ["2019-10-21T06:10:58", 10.46015, -43.29564], + ["2019-10-21T06:40:58", 10.45839, -43.30148], + ["2019-10-21T07:40:54", 10.46014, -43.3114], + ["2019-10-21T10:39:40", 10.46997, -43.33844], + ["2019-10-21T11:09:40", 10.46997, -43.34307], + ["2019-10-21T11:39:40", 10.47182, -43.34796], + ["2019-10-21T13:09:04", 10.47669, -43.36275], + ["2019-10-21T13:39:04", 10.48111, -43.36841], + ["2019-10-21T14:09:04", 10.48497, -43.37433], + ["2019-10-21T14:38:49", 10.49002, -43.38016], + ["2019-10-21T15:08:49", 10.49551, -43.38531], + ["2019-10-21T15:38:35", 10.50319, -43.39111], + ["2019-10-21T16:08:35", 10.51255, -43.3966], + ["2019-10-21T16:38:35", 10.52409, -43.40192], + ["2019-10-21T20:36:56", 10.6055, -43.41043], + ["2019-10-21T20:37:17", 10.60558, -43.41043], + ["2019-10-21T21:07:05", 10.61146, -43.41068], + ["2019-10-21T21:38:29", 10.61859, -43.40864], + ["2019-10-21T22:08:29", 10.62468, -43.4077], + ["2019-10-21T22:38:29", 10.62635, -43.40598], + ["2019-10-21T23:06:12", 10.62789, -43.40408], + ["2019-10-21T23:37:39", 10.62911, -43.40266], + ["2019-10-22T00:07:39", 10.63156, -43.40094], + ["2019-10-22T04:37:12", 10.65331, -43.38428], + ["2019-10-22T05:04:08", 10.65755, -43.38223], + ["2019-10-22T05:34:29", 10.66161, -43.37982], + ["2019-10-22T06:04:29", 10.66646, -43.37759], + ["2019-10-22T06:33:38", 10.6703, -43.37622], + ["2019-10-22T09:32:36", 10.7033, -43.35675], + ["2019-10-22T10:02:27", 10.70598, -43.35335], + ["2019-10-22T10:32:27", 10.71134, -43.35138], + ["2019-10-22T11:04:29", 10.71816, -43.3472], + ["2019-10-22T12:32:04", 10.73151, -43.33507], + ["2019-10-22T13:02:04", 10.73653, -43.33086], + ["2019-10-22T13:32:04", 10.7385, -43.32657], + ["2019-10-22T14:31:43", 10.73959, -43.31833], + ["2019-10-22T15:01:07", 10.73756, -43.3152], + ["2019-10-22T15:31:07", 10.73554, -43.3134], + ["2019-10-22T16:01:07", 10.73468, -43.31125], + ["2019-10-22T17:59:51", 10.73047, -43.30678], + ["2019-10-22T18:29:51", 10.73086, -43.30618], + ["2019-10-22T19:01:27", 10.73328, -43.30544], + ["2019-10-22T19:31:27", 10.73495, -43.30458], + ["2019-10-22T20:01:27", 10.73697, -43.30338], + ["2019-10-22T20:29:08", 10.73637, -43.30258], + ["2019-10-22T20:59:08", 10.73779, -43.30035], + ["2019-10-22T23:28:33", 10.73812, -43.27768], + ["2019-10-22T23:58:33", 10.73855, -43.26893], + ["2019-10-23T00:28:33", 10.74164, -43.26129], + ["2019-10-23T00:58:24", 10.74103, -43.25571], + ["2019-10-23T01:28:13", 10.73721, -43.25198], + ["2019-10-23T01:58:13", 10.73197, -43.25052], + ["2019-10-23T03:57:42", 10.70877, -43.24359], + ["2019-10-23T04:57:02", 10.69573, -43.24159], + ["2019-10-23T05:29:34", 10.6867, -43.24231], + ["2019-10-23T05:57:02", 10.67843, -43.24399], + ["2019-10-23T07:56:20", 10.652, -43.2547], + ["2019-10-23T07:57:57", 10.64711, -43.2595], + ["2019-10-23T08:57:57", 10.64089, -43.26379], + ["2019-10-23T09:25:58", 10.63514, -43.26862], + ["2019-10-23T10:27:30", 10.62382, -43.27728], + ["2019-10-23T10:57:14", 10.61648, -43.2879], + ["2019-10-23T11:57:14", 10.61227, -43.29279], + ["2019-10-23T12:55:05", 10.61084, -43.29932], + ["2019-10-23T13:25:05", 10.60633, -43.30378], + ["2019-10-23T13:55:05", 10.60036, -43.30936], + ["2019-10-23T14:24:41", 10.5939, -43.31647], + ["2019-10-23T15:24:26", 10.58442, -43.33084], + ["2019-10-23T15:54:09", 10.58164, -43.33848], + ["2019-10-23T16:24:09", 10.58014, -43.34483], + ["2019-10-23T16:54:09", 10.57937, -43.35187], + ["2019-10-23T17:24:48", 10.58, -43.3588], + ["2019-10-23T17:53:54", 10.57678, -43.36639], + ["2019-10-23T20:23:27", 10.57149, -43.40631], + ["2019-10-23T20:52:58", 10.56849, -43.41635], + ["2019-10-23T21:22:58", 10.56531, -43.42605], + ["2019-10-23T21:52:58", 10.56505, -43.43506], + ["2019-10-23T22:55:07", 10.56799, -43.45283], + ["2019-10-23T23:25:07", 10.56842, -43.46141], + ["2019-10-23T23:55:07", 10.56782, -43.47308], + ["2019-10-24T00:22:07", 10.56938, -43.48206], + ["2019-10-24T04:53:17", 10.58816, -43.56415], + ["2019-10-24T05:20:30", 10.59321, -43.57013], + ["2019-10-24T07:20:10", 10.62133, -43.5972], + ["2019-10-24T07:50:31", 10.62793, -43.60551], + ["2019-10-24T08:20:31", 10.63312, -43.61212], + ["2019-10-24T08:50:31", 10.63891, -43.62045], + ["2019-10-24T09:20:48", 10.64743, -43.62816], + ["2019-10-24T09:50:48", 10.65764, -43.63434], + ["2019-10-24T10:22:47", 10.6664, -43.64017], + ["2019-10-24T10:52:47", 10.67803, -43.64712], + ["2019-10-24T11:22:47", 10.68751, -43.65381], + ["2019-10-24T11:50:00", 10.69657, -43.65922], + ["2019-10-24T12:20:00", 10.70691, -43.66403], + ["2019-10-24T14:52:05", 10.76469, -43.68564], + ["2019-10-24T16:17:57", 10.79739, -43.69396], + ["2019-10-24T16:47:57", 10.80666, -43.69508], + ["2019-10-24T17:17:57", 10.81666, -43.69577], + ["2019-10-24T19:47:27", 10.86577, -43.68442], + ["2019-10-25T01:47:30", 10.91469, -43.66092], + ["2019-10-25T02:17:01", 10.91978, -43.65547], + ["2019-10-25T03:17:01", 10.92266, -43.65375], + ["2019-10-25T03:46:56", 10.92532, -43.65092], + ["2019-10-25T04:16:56", 10.92854, -43.64783], + ["2019-10-25T04:45:22", 10.93002, -43.64523], + ["2019-10-25T05:15:22", 10.93328, -43.64257], + ["2019-10-25T05:45:22", 10.93431, -43.64008], + ["2019-10-25T06:16:55", 10.93864, -43.63727], + ["2019-10-25T06:46:55", 10.94229, -43.63495], + ["2019-10-25T07:16:55", 10.94581, -43.63126], + ["2019-10-25T07:44:53", 10.94806, -43.62943], + ["2019-10-25T08:14:48", 10.95155, -43.62628], + ["2019-10-25T08:47:21", 10.96059, -43.61993], + ["2019-10-25T11:45:17", 10.97076, -43.5979], + ["2019-10-25T12:46:40", 10.96508, -43.59128], + ["2019-10-25T12:47:07", 10.96839, -43.59293], + ["2019-10-25T13:46:40", 10.96414, -43.58853], + ["2019-10-25T14:16:24", 10.96019, -43.58749], + ["2019-10-25T14:46:25", 10.95763, -43.58642], + ["2019-10-25T15:16:25", 10.9548, -43.58539], + ["2019-10-25T17:42:18", 10.95342, -43.58398], + ["2019-10-25T18:12:11", 10.95668, -43.58231], + ["2019-10-25T18:43:05", 10.95961, -43.58148], + ["2019-10-25T19:11:40", 10.96017, -43.58167], + ["2019-10-25T19:41:59", 10.96037, -43.58194], + ["2019-10-25T20:41:17", 10.95938, -43.58341], + ["2019-10-25T21:11:17", 10.95711, -43.5841], + ["2019-10-25T21:41:17", 10.95342, -43.58496], + ["2019-10-25T22:10:38", 10.95071, -43.58575], + ["2019-10-25T22:41:27", 10.94853, -43.58417], + ["2019-10-25T23:10:20", 10.94431, -43.58304], + ["2019-10-26T00:40:41", 10.93033, -43.58537], + ["2019-10-26T01:09:53", 10.92485, -43.5864], + ["2019-10-26T01:40:41", 10.9193, -43.58649], + ["2019-10-26T02:09:32", 10.91438, -43.58829], + ["2019-10-26T04:08:33", 10.89402, -43.59869], + ["2019-10-26T04:38:33", 10.89016, -43.60281], + ["2019-10-26T05:08:33", 10.88651, -43.60538], + ["2019-10-26T05:38:57", 10.88273, -43.60849], + ["2019-10-26T06:37:48", 10.87541, -43.61608], + ["2019-10-26T07:07:48", 10.87438, -43.61977], + ["2019-10-26T07:37:48", 10.87116, -43.62329], + ["2019-10-26T08:08:54", 10.86849, -43.62817], + ["2019-10-26T08:37:33", 10.865, -43.63232], + ["2019-10-26T09:06:53", 10.86048, -43.63679], + ["2019-10-26T09:36:53", 10.85773, -43.63971], + ["2019-10-26T10:06:53", 10.8543, -43.64374], + ["2019-10-26T10:37:09", 10.85023, -43.64743], + ["2019-10-26T11:37:09", 10.84409, -43.6553], + ["2019-10-26T12:36:57", 10.83853, -43.66493], + ["2019-10-26T13:06:16", 10.83498, -43.66965], + ["2019-10-26T13:36:57", 10.83188, -43.67566], + ["2019-10-26T14:06:08", 10.82788, -43.68121], + ["2019-10-26T14:36:25", 10.82355, -43.68814], + ["2019-10-26T15:06:11", 10.82083, -43.69606], + ["2019-10-26T15:36:11", 10.81911, -43.70413], + ["2019-10-26T16:05:38", 10.81772, -43.7124], + ["2019-10-26T16:35:22", 10.81761, -43.72204], + ["2019-10-26T17:05:22", 10.81692, -43.73062], + ["2019-10-26T17:35:37", 10.81617, -43.73886], + ["2019-10-26T18:05:05", 10.81563, -43.74731], + ["2019-10-26T18:35:27", 10.8169, -43.75482], + ["2019-10-26T19:04:24", 10.81986, -43.7624], + ["2019-10-26T19:34:24", 10.82325, -43.76884], + ["2019-10-26T20:04:24", 10.82724, -43.77365], + ["2019-10-26T20:36:26", 10.83003, -43.77924], + ["2019-10-26T21:04:02", 10.83258, -43.78436], + ["2019-10-26T21:33:56", 10.83433, -43.79016], + ["2019-10-26T22:04:56", 10.83532, -43.79657], + ["2019-10-27T01:02:22", 10.84475, -43.83664], + ["2019-10-27T01:33:27", 10.84671, -43.84402], + ["2019-10-27T02:02:22", 10.84796, -43.8508], + ["2019-10-27T03:31:34", 10.85093, -43.86866], + ["2019-10-27T04:01:34", 10.85338, -43.87407], + ["2019-10-27T04:31:34", 10.85754, -43.87939], + ["2019-10-27T08:00:51", 10.88115, -43.9086], + ["2019-10-27T08:30:42", 10.88843, -43.9119], + ["2019-10-27T09:01:30", 10.89527, -43.91476], + ["2019-10-27T10:01:29", 10.90836, -43.91806], + ["2019-10-27T10:30:11", 10.91388, -43.91977], + ["2019-10-27T11:00:04", 10.92028, -43.92223], + ["2019-10-27T11:30:04", 10.925, -43.92438], + ["2019-10-27T12:59:48", 10.93642, -43.9342], + ["2019-10-27T14:29:10", 10.94776, -43.94381], + ["2019-10-27T14:59:10", 10.95338, -43.94707], + ["2019-10-27T15:29:10", 10.95797, -43.95093], + ["2019-10-27T15:59:03", 10.96239, -43.95518], + ["2019-10-27T16:29:03", 10.96724, -43.95612], + ["2019-10-27T16:59:02", 10.9718, -43.95758], + ["2019-10-27T20:27:57", 10.9965, -43.97369], + ["2019-10-28T00:56:20", 11.03918, -43.98773], + ["2019-10-28T02:55:36", 11.03843, -43.98501], + ["2019-10-28T03:25:36", 11.03483, -43.98381], + ["2019-10-28T03:55:36", 11.0323, -43.98364], + ["2019-10-28T04:26:40", 11.02677, -43.98462], + ["2019-10-28T04:56:40", 11.02115, -43.98788], + ["2019-10-28T06:53:58", 10.99975, -44.00911], + ["2019-10-28T07:23:58", 10.99696, -44.01615], + ["2019-10-28T07:53:58", 10.99705, -44.02216], + ["2019-10-28T09:24:29", 10.99884, -44.04026], + ["2019-10-28T09:54:29", 11.00176, -44.04584], + ["2019-10-28T10:24:29", 11.00433, -44.05099], + ["2019-10-28T10:54:04", 11.00371, -44.05581], + ["2019-10-28T11:24:04", 10.99959, -44.06216], + ["2019-10-28T13:52:04", 10.98691, -44.08743], + ["2019-10-28T14:21:51", 10.98256, -44.09295], + ["2019-10-28T14:51:51", 10.97844, -44.09784], + ["2019-10-28T15:21:50", 10.97397, -44.10364], + ["2019-10-28T17:21:14", 10.96027, -44.1283], + ["2019-10-28T17:50:43", 10.95899, -44.13589], + ["2019-10-28T18:20:43", 10.9583, -44.14361], + ["2019-10-28T18:50:43", 10.95791, -44.15228], + ["2019-10-28T19:36:52", 10.96994, -44.18002], + ["2019-10-28T20:06:52", 10.9729, -44.18345], + ["2019-10-28T20:36:52", 10.97384, -44.18439], + ["2019-10-28T21:20:20", 10.98432, -44.19479], + ["2019-10-28T21:50:02", 10.99376, -44.20088], + ["2019-10-28T22:20:02", 11.00127, -44.20526], + ["2019-10-28T23:49:27", 11.02527, -44.21085], + ["2019-10-29T00:19:27", 11.03154, -44.21119], + ["2019-10-29T00:49:27", 11.03549, -44.21222], + ["2019-10-29T02:18:55", 11.0424, -44.22099], + ["2019-10-29T02:48:55", 11.04433, -44.22288], + ["2019-10-29T03:18:55", 11.04399, -44.22485], + ["2019-10-29T05:47:51", 11.03838, -44.25512], + ["2019-10-29T06:17:51", 11.03593, -44.26199], + ["2019-10-29T07:17:06", 11.02611, -44.2782], + ["2019-10-29T07:47:06", 11.02598, -44.28558], + ["2019-10-29T08:17:06", 11.0268, -44.29245], + ["2019-10-29T10:48:58", 11.05949, -44.31686], + ["2019-10-29T12:18:34", 11.0933, -44.31606], + ["2019-10-29T13:18:34", 11.10137, -44.31503], + ["2019-10-29T17:14:34", 11.13974, -44.31839], + ["2019-10-29T17:45:56", 11.14375, -44.31781], + ["2019-10-29T18:14:03", 11.14668, -44.31729], + ["2019-10-29T18:45:30", 11.14838, -44.31665], + ["2019-10-29T22:12:51", 11.14259, -44.30887], + ["2019-10-29T22:46:00", 11.14024, -44.30304], + ["2019-10-29T23:42:03", 11.13477, -44.2949], + ["2019-10-30T00:12:03", 11.12953, -44.2913], + ["2019-10-30T00:42:03", 11.12794, -44.28821], + ["2019-10-30T01:14:03", 11.12673, -44.28649], + ["2019-10-30T01:44:03", 11.1251, -44.28555], + ["2019-10-30T02:41:23", 11.12625, -44.28424], + ["2019-10-30T05:10:50", 11.12411, -44.27368], + ["2019-10-30T05:40:14", 11.12278, -44.26959], + ["2019-10-30T06:10:14", 11.11905, -44.26564], + ["2019-10-30T06:40:14", 11.11519, -44.26169], + ["2019-10-30T07:09:58", 11.11027, -44.25807], + ["2019-10-30T07:39:58", 11.10392, -44.25601], + ["2019-10-30T08:41:28", 11.08845, -44.25235], + ["2019-10-30T09:09:06", 11.07948, -44.25085], + ["2019-10-30T09:39:06", 11.06811, -44.25008], + ["2019-10-30T10:09:06", 11.05699, -44.24948], + ["2019-10-30T10:38:39", 11.04833, -44.24894], + ["2019-10-30T11:08:39", 11.04138, -44.25006], + ["2019-10-30T11:41:05", 11.03573, -44.2524], + ["2019-10-30T12:08:24", 11.03134, -44.25366], + ["2019-10-30T12:41:05", 11.02904, -44.25644], + ["2019-10-30T13:08:01", 11.02776, -44.25925], + ["2019-10-30T15:37:31", 11.03025, -44.27008], + ["2019-10-30T16:07:02", 11.02576, -44.2718], + ["2019-10-30T16:37:02", 11.01954, -44.27386], + ["2019-10-30T19:07:12", 10.974, -44.29318], + ["2019-10-30T19:36:43", 10.96574, -44.29843], + ["2019-10-30T20:07:12", 10.95868, -44.30408], + ["2019-10-30T20:35:52", 10.95456, -44.30944], + ["2019-10-30T21:05:52", 10.95108, -44.3145], + ["2019-10-30T21:35:52", 10.947, -44.31888], + ["2019-10-30T22:06:28", 10.94599, -44.32272], + ["2019-10-31T02:33:57", 10.9362, -44.35837], + ["2019-10-31T03:05:14", 10.93415, -44.36166], + ["2019-10-31T03:33:57", 10.93187, -44.36481], + ["2019-10-31T04:03:40", 10.92946, -44.36887], + ["2019-10-31T04:33:40", 10.9283, -44.37213], + ["2019-10-31T06:33:08", 10.91774, -44.39041], + ["2019-10-31T07:03:59", 10.91805, -44.39432], + ["2019-10-31T09:32:13", 10.92162, -44.41141], + ["2019-10-31T10:01:24", 10.92276, -44.41563], + ["2019-10-31T10:31:24", 10.92229, -44.41906], + ["2019-10-31T11:01:24", 10.92212, -44.42172], + ["2019-10-31T11:31:13", 10.9212, -44.42493], + ["2019-10-31T12:03:34", 10.92201, -44.42834], + ["2019-10-31T14:00:29", 10.91956, -44.44325], + ["2019-10-31T14:30:29", 10.9193, -44.4472], + ["2019-10-31T15:00:19", 10.91809, -44.45222], + ["2019-10-31T15:30:19", 10.91826, -44.45651], + ["2019-10-31T18:33:10", 10.90692, -44.4685], + ["2019-10-31T19:03:10", 10.89928, -44.46773], + ["2019-10-31T19:33:10", 10.90902, -44.48575], + ["2019-10-31T22:01:56", 10.90958, -44.49709], + ["2019-10-31T22:31:56", 10.90816, -44.49958], + ["2019-10-31T23:01:56", 10.90919, -44.50327], + ["2019-11-01T00:29:04", 10.91642, -44.51455], + ["2019-11-01T00:59:04", 10.91775, -44.51918], + ["2019-11-01T01:29:04", 10.91711, -44.52545], + ["2019-11-01T01:57:37", 10.9187, -44.53116], + ["2019-11-01T02:30:59", 10.92073, -44.53726], + ["2019-11-01T02:57:07", 10.92197, -44.54205], + ["2019-11-01T03:59:01", 10.92395, -44.55487], + ["2019-11-01T04:56:36", 10.9256, -44.56384], + ["2019-11-01T05:26:08", 10.92753, -44.56799], + ["2019-11-01T05:56:08", 10.92912, -44.57142], + ["2019-11-01T06:26:08", 10.92886, -44.57571], + ["2019-11-01T07:27:58", 10.92661, -44.58646], + ["2019-11-01T07:57:58", 10.92043, -44.59221], + ["2019-11-01T08:27:58", 10.91906, -44.59882], + ["2019-11-01T08:55:34", 10.91904, -44.60437], + ["2019-11-01T09:25:38", 10.91817, -44.61093], + ["2019-11-01T09:56:59", 10.92033, -44.6171], + ["2019-11-01T10:25:04", 10.92163, -44.62155], + ["2019-11-01T12:54:17", 10.93251, -44.6478], + ["2019-11-01T13:25:43", 10.93572, -44.65576], + ["2019-11-01T13:53:44", 10.93846, -44.66281], + ["2019-11-01T14:25:31", 10.94426, -44.67539], + ["2019-11-01T15:25:31", 10.94696, -44.68243], + ["2019-11-01T15:53:09", 10.95014, -44.68924], + ["2019-11-01T16:23:09", 10.95233, -44.69662], + ["2019-11-01T17:52:25", 10.9599, -44.71686], + ["2019-11-01T20:24:24", 10.97549, -44.74045], + ["2019-11-01T20:54:24", 10.97631, -44.74294], + ["2019-11-01T21:24:24", 10.97828, -44.74689], + ["2019-11-01T22:51:54", 10.97989, -44.75665], + ["2019-11-01T23:21:54", 10.98135, -44.76], + ["2019-11-01T23:51:54", 10.98362, -44.76498], + ["2019-11-02T00:20:21", 10.98556, -44.76943], + ["2019-11-02T00:50:21", 10.98835, -44.77535], + ["2019-11-02T01:20:21", 10.99161, -44.7811], + ["2019-11-02T01:50:07", 10.9942, -44.7859], + ["2019-11-02T02:20:07", 10.99502, -44.78976], + ["2019-11-02T02:52:31", 10.99728, -44.79425], + ["2019-11-02T03:19:44", 10.99937, -44.79852], + ["2019-11-02T04:49:15", 11.00062, -44.81615], + ["2019-11-02T05:19:15", 11.00169, -44.82156], + ["2019-11-02T05:50:59", 11.00296, -44.82646], + ["2019-11-02T06:20:59", 11.00678, -44.83084], + ["2019-11-02T07:50:05", 11.0137, -44.84082], + ["2019-11-02T08:20:05", 11.01537, -44.84434], + ["2019-11-02T08:50:05", 11.01747, -44.84863], + ["2019-11-02T09:47:31", 11.01923, -44.85641], + ["2019-11-02T10:49:06", 11.01725, -44.86517], + ["2019-11-02T12:49:12", 11.01704, -44.88195], + ["2019-11-02T13:19:12", 11.0182, -44.88693], + ["2019-11-02T13:46:47", 11.02036, -44.89175], + ["2019-11-02T14:47:34", 11.02713, -44.90315], + ["2019-11-02T15:17:34", 11.02953, -44.90864], + ["2019-11-02T15:47:34", 11.02996, -44.91422], + ["2019-11-02T16:16:14", 11.02952, -44.91885], + ["2019-11-02T16:48:42", 11.02827, -44.92319], + ["2019-11-02T17:15:48", 11.02763, -44.92749], + ["2019-11-02T18:17:59", 11.02556, -44.93715], + ["2019-11-02T18:47:59", 11.02668, -44.94058], + ["2019-11-02T19:17:59", 11.0284, -44.9429], + ["2019-11-02T19:45:01", 11.02884, -44.94473], + ["2019-11-02T20:14:43", 11.02949, -44.94834], + ["2019-11-02T20:44:43", 11.02996, -44.94971], + ["2019-11-02T21:14:33", 11.0306, -44.9523], + ["2019-11-03T00:13:40", 11.03313, -44.9725], + ["2019-11-03T01:13:23", 11.03807, -44.98123], + ["2019-11-03T01:43:23", 11.0391, -44.98544], + ["2019-11-03T02:13:23", 11.04253, -44.98965], + ["2019-11-03T02:42:57", 11.04339, -44.99342], + ["2019-11-03T03:12:57", 11.04493, -44.99651], + ["2019-11-03T03:42:57", 11.04527, -44.99994], + ["2019-11-03T04:14:29", 11.04492, -45.0025], + ["2019-11-03T04:43:32", 11.04401, -45.00576], + ["2019-11-03T05:13:32", 11.04324, -45.00833], + ["2019-11-03T06:42:33", 11.04184, -45.01447], + ["2019-11-03T07:12:33", 11.04227, -45.01756], + ["2019-11-03T07:42:33", 11.04158, -45.02151], + ["2019-11-03T08:11:06", 11.04092, -45.02396], + ["2019-11-03T08:42:12", 11.04152, -45.02744], + ["2019-11-03T09:11:21", 11.04233, -45.03079], + ["2019-11-03T10:40:23", 11.03725, -45.04013], + ["2019-11-03T11:11:58", 11.03587, -45.04477], + ["2019-11-03T12:41:54", 11.03203, -45.05853], + ["2019-11-03T15:09:25", 11.0287, -45.08481], + ["2019-11-03T18:08:55", 11.03224, -45.1178], + ["2019-11-03T18:38:24", 11.03325, -45.12477], + ["2019-11-03T19:08:24", 11.03548, -45.13104], + ["2019-11-03T19:40:30", 11.03506, -45.13769], + ["2019-11-03T20:10:30", 11.0363, -45.14481], + ["2019-11-03T20:38:03", 11.03808, -45.15051], + ["2019-11-03T21:37:39", 11.04091, -45.16374], + ["2019-11-03T22:07:39", 11.04233, -45.16966], + ["2019-11-03T22:37:39", 11.04469, -45.1767], + ["2019-11-04T02:36:28", 11.04495, -45.22607], + ["2019-11-04T03:36:17", 11.04257, -45.24149], + ["2019-11-04T04:36:28", 11.04431, -45.25778], + ["2019-11-04T07:07:27", 11.05791, -45.29541], + ["2019-11-04T09:03:30", 11.07381, -45.32672], + ["2019-11-04T09:35:59", 11.07892, -45.33582], + ["2019-11-04T10:06:08", 11.08269, -45.34336], + ["2019-11-04T10:36:08", 11.08604, -45.35134], + ["2019-11-04T11:06:08", 11.09003, -45.35992], + ["2019-11-04T11:32:40", 11.0937, -45.36691], + ["2019-11-04T12:32:19", 11.10085, -45.38322], + ["2019-11-04T13:02:19", 11.10523, -45.38949], + ["2019-11-04T13:32:19", 11.10926, -45.39627], + ["2019-11-04T14:01:44", 11.11418, -45.40369], + ["2019-11-04T14:31:44", 11.1171, -45.40935], + ["2019-11-04T15:01:44", 11.12268, -45.4151], + ["2019-11-04T16:01:33", 11.13376, -45.42648], + ["2019-11-04T16:31:01", 11.13925, -45.4315], + ["2019-11-04T17:03:00", 11.14522, -45.43674], + ["2019-11-04T17:31:01", 11.15037, -45.44077], + ["2019-11-04T18:03:07", 11.15764, -45.44562], + ["2019-11-04T18:33:07", 11.16382, -45.44922], + ["2019-11-04T19:00:44", 11.17046, -45.453], + ["2019-11-04T21:59:56", 11.20476, -45.47977], + ["2019-11-04T23:03:11", 11.21101, -45.48959], + ["2019-11-04T23:33:11", 11.21346, -45.49268], + ["2019-11-05T00:59:41", 11.22982, -45.50384], + ["2019-11-05T01:59:41", 11.23227, -45.50693], + ["2019-11-05T03:57:16", 11.24344, -45.51977], + ["2019-11-05T04:27:16", 11.24529, -45.52449], + ["2019-11-05T04:57:16", 11.24645, -45.52887], + ["2019-11-05T05:56:56", 11.24982, -45.53659], + ["2019-11-05T06:28:59", 11.25235, -45.54037], + ["2019-11-05T06:56:38", 11.25533, -45.54471], + ["2019-11-05T07:28:59", 11.25857, -45.54913], + ["2019-11-05T08:25:45", 11.2656, -45.55945], + ["2019-11-05T08:55:45", 11.26706, -45.564], + ["2019-11-05T09:25:45", 11.26852, -45.56683], + ["2019-11-05T09:56:07", 11.27348, -45.57253], + ["2019-11-05T10:56:07", 11.27477, -45.57596], + ["2019-11-05T13:25:36", 11.27934, -45.60138], + ["2019-11-05T13:56:58", 11.2811, -45.6075], + ["2019-11-05T14:26:58", 11.28367, -45.61557], + ["2019-11-05T15:53:32", 11.29367, -45.63651], + ["2019-11-05T16:23:32", 11.29573, -45.64192], + ["2019-11-05T16:53:32", 11.29749, -45.64801], + ["2019-11-05T17:53:27", 11.30386, -45.66147], + ["2019-11-05T22:21:52", 11.34084, -45.70996], + ["2019-11-05T23:51:18", 11.35568, -45.72614], + ["2019-11-06T03:50:19", 11.40491, -45.77914], + ["2019-11-06T04:20:07", 11.41031, -45.78571], + ["2019-11-06T04:51:52", 11.4162, -45.79242], + ["2019-11-06T05:19:57", 11.42195, -45.79849], + ["2019-11-06T06:22:09", 11.43574, -45.81021], + ["2019-11-06T08:49:05", 11.46018, -45.83289], + ["2019-11-06T09:48:35", 11.46645, -45.84106], + ["2019-11-06T10:18:35", 11.47023, -45.84501], + ["2019-11-06T10:48:35", 11.47409, -45.8475], + ["2019-11-06T11:18:26", 11.47517, -45.84866], + ["2019-11-06T14:47:24", 11.49899, -45.86905], + ["2019-11-06T15:16:43", 11.50375, -45.87318], + ["2019-11-06T15:46:43", 11.50735, -45.87678], + ["2019-11-06T16:16:43", 11.5113, -45.88004], + ["2019-11-06T19:45:41", 11.54239, -45.90512], + ["2019-11-06T20:18:58", 11.54648, -45.91003], + ["2019-11-06T22:16:29", 11.54924, -45.92785], + ["2019-11-06T22:44:39", 11.54948, -45.93207], + ["2019-11-06T23:16:29", 11.55117, -45.93652], + ["2019-11-06T23:44:19", 11.55431, -45.94128], + ["2019-11-07T02:45:06", 11.55724, -45.97711], + ["2019-11-07T03:13:22", 11.56002, -45.98471], + ["2019-11-07T05:45:23", 11.56196, -46.01901], + ["2019-11-07T06:15:23", 11.56398, -46.02648], + ["2019-11-07T06:45:23", 11.56351, -46.03232], + ["2019-11-07T07:12:19", 11.56457, -46.03757], + ["2019-11-07T08:15:06", 11.56703, -46.04944], + ["2019-11-07T13:10:37", 11.60347, -46.1062], + ["2019-11-07T13:40:16", 11.60762, -46.11033], + ["2019-11-07T14:12:59", 11.60863, -46.11542], + ["2019-11-07T14:40:16", 11.60732, -46.11917], + ["2019-11-07T15:42:31", 11.60904, -46.12759], + ["2019-11-07T16:09:20", 11.6082, -46.13215], + ["2019-11-07T16:39:20", 11.60803, -46.13824], + ["2019-11-07T18:08:39", 11.60408, -46.14823], + ["2019-11-07T18:38:39", 11.60352, -46.15089], + ["2019-11-07T19:08:39", 11.60202, -46.15338], + ["2019-11-07T20:38:07", 11.59541, -46.16267], + ["2019-11-07T21:08:07", 11.59215, -46.16645], + ["2019-11-07T21:38:07", 11.59, -46.16937], + ["2019-11-07T22:09:24", 11.58753, -46.17172], + ["2019-11-07T22:37:46", 11.58729, -46.17297], + ["2019-11-08T00:38:59", 11.58813, -46.16381], + ["2019-11-08T01:38:59", 11.58792, -46.16501], + ["2019-11-08T03:38:29", 11.58119, -46.16001], + ["2019-11-08T04:08:29", 11.58076, -46.15872], + ["2019-11-08T04:38:29", 11.58029, -46.15829], + ["2019-11-08T05:05:13", 11.57918, -46.15851], + ["2019-11-08T06:34:59", 11.57504, -46.16019], + ["2019-11-08T07:05:31", 11.57497, -46.16139], + ["2019-11-08T07:35:31", 11.57428, -46.16336], + ["2019-11-08T09:04:40", 11.56973, -46.16946], + ["2019-11-08T10:07:58", 11.5625, -46.17441], + ["2019-11-08T11:34:28", 11.55426, -46.18402], + ["2019-11-08T12:04:28", 11.55349, -46.18814], + ["2019-11-08T12:34:28", 11.55139, -46.19174], + ["2019-11-08T13:03:06", 11.54801, -46.19459], + ["2019-11-08T13:33:06", 11.54582, -46.19682], + ["2019-11-08T14:03:06", 11.54307, -46.19897], + ["2019-11-08T19:04:21", 11.52116, -46.23923], + ["2019-11-08T19:35:24", 11.51893, -46.24405], + ["2019-11-08T20:01:40", 11.51717, -46.24796], + ["2019-11-08T23:33:35", 11.50365, -46.28464], + ["2019-11-08T23:59:44", 11.50136, -46.28915], + ["2019-11-09T04:29:10", 11.49158, -46.34219], + ["2019-11-09T05:57:50", 11.4904, -46.36493], + ["2019-11-09T07:27:17", 11.48612, -46.38836], + ["2019-11-09T07:57:17", 11.48548, -46.39557], + ["2019-11-09T08:27:17", 11.48535, -46.40338], + ["2019-11-09T09:56:58", 11.48866, -46.42328], + ["2019-11-09T12:28:28", 11.49648, -46.46152], + ["2019-11-09T12:58:28", 11.49824, -46.47002], + ["2019-11-09T13:28:28", 11.50034, -46.47946], + ["2019-11-09T14:55:25", 11.51011, -46.50599], + ["2019-11-09T15:25:25", 11.51466, -46.51457], + ["2019-11-09T15:55:25", 11.51904, -46.52332], + ["2019-11-09T16:27:56", 11.52359, -46.53271], + ["2019-11-09T17:24:34", 11.53298, -46.54862], + ["2019-11-09T17:54:34", 11.53877, -46.55634], + ["2019-11-09T18:24:34", 11.54358, -46.56235], + ["2019-11-09T19:32:07", 11.56307, -46.58294], + ["2019-11-09T20:02:07", 11.57157, -46.58912], + ["2019-11-09T20:32:07", 11.57342, -46.59006], + ["2019-11-09T22:23:13", 11.60476, -46.60559], + ["2019-11-09T22:53:13", 11.61073, -46.60825], + ["2019-11-09T23:22:48", 11.61787, -46.61093], + ["2019-11-09T23:52:48", 11.62577, -46.61299], + ["2019-11-10T00:22:48", 11.63332, -46.61514], + ["2019-11-10T00:52:39", 11.64146, -46.61853], + ["2019-11-10T01:24:20", 11.64805, -46.6211], + ["2019-11-10T01:54:20", 11.65483, -46.62376], + ["2019-11-10T02:24:20", 11.66067, -46.62616], + ["2019-11-10T02:51:55", 11.66705, -46.62921], + ["2019-11-10T03:21:52", 11.67398, -46.63245], + ["2019-11-10T03:51:28", 11.68138, -46.63469], + ["2019-11-10T04:21:28", 11.68722, -46.63623], + ["2019-11-10T05:50:49", 11.70689, -46.63945], + ["2019-11-10T06:20:49", 11.7138, -46.63945], + ["2019-11-10T06:50:49", 11.72049, -46.64005], + ["2019-11-10T09:21:13", 11.75189, -46.64343], + ["2019-11-10T09:49:55", 11.75683, -46.64264], + ["2019-11-10T10:21:13", 11.76168, -46.6424], + ["2019-11-10T11:22:27", 11.76973, -46.64334], + ["2019-11-10T11:49:28", 11.77217, -46.64349], + ["2019-11-10T12:50:26", 11.77703, -46.64343], + ["2019-11-10T13:49:58", 11.77995, -46.64422], + ["2019-11-10T14:18:49", 11.77993, -46.6445], + ["2019-11-10T14:49:58", 11.77897, -46.64465], + ["2019-11-10T15:18:43", 11.7789, -46.64502], + ["2019-11-10T15:48:29", 11.778, -46.64599], + ["2019-11-10T16:18:29", 11.7774, -46.64719], + ["2019-11-10T18:17:37", 11.76812, -46.64852], + ["2019-11-10T18:50:33", 11.76495, -46.64774], + ["2019-11-10T19:17:37", 11.76211, -46.64697], + ["2019-11-10T20:47:07", 11.75654, -46.64853], + ["2019-11-10T22:46:48", 11.75436, -46.65457], + ["2019-11-10T22:49:42", 11.75295, -46.65477], + ["2019-11-10T23:49:42", 11.75291, -46.65674], + ["2019-11-11T00:16:26", 11.75168, -46.65851], + ["2019-11-11T00:48:02", 11.75091, -46.66027], + ["2019-11-11T01:18:02", 11.75001, -46.66284], + ["2019-11-11T01:45:38", 11.74835, -46.66498], + ["2019-11-11T02:15:38", 11.74689, -46.66644], + ["2019-11-11T02:45:19", 11.74521, -46.66914], + ["2019-11-11T03:15:19", 11.74414, -46.67129], + ["2019-11-11T03:45:19", 11.74277, -46.67429], + ["2019-11-11T04:46:40", 11.73752, -46.67953], + ["2019-11-11T05:46:06", 11.72713, -46.6853], + ["2019-11-11T07:14:20", 11.71238, -46.70132], + ["2019-11-11T08:43:29", 11.70086, -46.7191], + ["2019-11-11T09:13:29", 11.69618, -46.72622], + ["2019-11-11T09:43:29", 11.69318, -46.733], + ["2019-11-11T16:11:50", 11.67877, -46.82382], + ["2019-11-11T17:41:04", 11.68602, -46.85363], + ["2019-11-11T18:11:04", 11.69048, -46.86376], + ["2019-11-11T18:41:04", 11.69473, -46.87372], + ["2019-11-12T04:08:23", 11.82831, -47.01712], + ["2019-11-12T04:37:45", 11.83496, -47.02092], + ["2019-11-12T05:07:45", 11.84002, -47.02521], + ["2019-11-12T05:37:45", 11.84556, -47.0289], + ["2019-11-12T06:07:25", 11.85258, -47.03227], + ["2019-11-12T06:37:25", 11.85945, -47.0351], + ["2019-11-12T07:07:00", 11.86633, -47.03911], + ["2019-11-12T07:37:00", 11.87436, -47.0422], + ["2019-11-12T08:07:00", 11.88208, -47.04495], + ["2019-11-12T08:40:30", 11.88879, -47.04583], + ["2019-11-12T09:10:30", 11.89707, -47.0466], + ["2019-11-12T09:36:41", 11.90353, -47.04697], + ["2019-11-12T10:36:30", 11.91819, -47.04613], + ["2019-11-12T11:06:37", 11.92364, -47.04425], + ["2019-11-12T11:36:30", 11.92986, -47.04184], + ["2019-11-12T12:06:17", 11.93599, -47.03948], + ["2019-11-12T12:36:17", 11.94131, -47.03699], + ["2019-11-12T13:38:01", 11.95139, -47.03177], + ["2019-11-12T14:05:56", 11.95388, -47.02927], + ["2019-11-12T15:07:42", 11.96133, -47.02101], + ["2019-11-12T16:07:42", 11.96373, -47.01749], + ["2019-11-12T16:35:11", 11.96668, -47.01523], + ["2019-11-12T17:38:25", 11.97438, -47.01157], + ["2019-11-12T19:32:24", 11.99267, -47.00706], + ["2019-11-12T20:02:24", 11.99606, -47.00569], + ["2019-11-12T20:32:24", 11.99679, -47.00543], + ["2019-11-13T06:01:16", 11.98519, -46.96439], + ["2019-11-13T07:00:37", 11.97701, -46.96763], + ["2019-11-13T07:30:37", 11.97272, -46.97046], + ["2019-11-13T11:01:58", 11.9561, -46.99277], + ["2019-11-13T11:29:13", 11.95394, -46.99582], + ["2019-11-13T12:00:57", 11.95192, -46.99908], + ["2019-11-13T12:30:57", 11.9499, -47.00217], + ["2019-11-13T13:58:00", 11.9429, -47.01117], + ["2019-11-13T14:28:16", 11.94103, -47.01437], + ["2019-11-13T14:58:00", 11.93921, -47.01752], + ["2019-11-13T18:27:35", 11.9321, -47.03882], + ["2019-11-13T20:32:38", 11.93367, -47.06195], + ["2019-11-13T20:56:18", 11.93336, -47.066], + ["2019-11-13T21:26:18", 11.93272, -47.07063], + ["2019-11-13T21:56:18", 11.93246, -47.07458], + ["2019-11-13T23:25:42", 11.93253, -47.08549], + ["2019-11-13T23:26:36", 11.93253, -47.08548], + ["2019-11-13T23:55:42", 11.9327, -47.08884], + ["2019-11-14T02:27:00", 11.92996, -47.10593], + ["2019-11-14T02:57:00", 11.92846, -47.10988], + ["2019-11-14T03:27:00", 11.9273, -47.11469], + ["2019-11-14T04:54:00", 11.93244, -47.12994], + ["2019-11-14T05:24:00", 11.93501, -47.13457], + ["2019-11-14T05:54:00", 11.93909, -47.13989], + ["2019-11-14T06:26:29", 11.94365, -47.14523], + ["2019-11-14T06:53:52", 11.94751, -47.14932], + ["2019-11-14T08:23:12", 11.96044, -47.1626], + ["2019-11-14T11:52:59", 11.99447, -47.17905], + ["2019-11-14T12:22:59", 11.99855, -47.18171], + ["2019-11-14T12:52:59", 12.0037, -47.18454], + ["2019-11-14T14:21:29", 12.01846, -47.19275], + ["2019-11-14T16:20:36", 12.03832, -47.19513], + ["2019-11-14T16:51:38", 12.05011, -47.19772], + ["2019-11-14T17:51:38", 12.05565, -47.19858], + ["2019-11-14T19:19:28", 12.07122, -47.20428], + ["2019-11-14T20:22:48", 12.08359, -47.20676], + ["2019-11-14T20:48:51", 12.08834, -47.20719], + ["2019-11-14T21:18:51", 12.09366, -47.20685], + ["2019-11-15T00:51:42", 12.13128, -47.19107], + ["2019-11-15T01:47:49", 12.13938, -47.18613], + ["2019-11-15T02:17:38", 12.14361, -47.18373], + ["2019-11-15T02:47:38", 12.14721, -47.1821], + ["2019-11-15T03:20:26", 12.15011, -47.17987], + ["2019-11-15T03:50:26", 12.15238, -47.17764], + ["2019-11-15T04:16:57", 12.15378, -47.17554], + ["2019-11-15T04:46:57", 12.15511, -47.17374], + ["2019-11-15T05:46:45", 12.15691, -47.16998], + ["2019-11-15T06:19:28", 12.15639, -47.16846], + ["2019-11-15T08:15:57", 12.15257, -47.16385], + ["2019-11-15T11:15:59", 12.14642, -47.16117], + ["2019-11-15T11:45:59", 12.14548, -47.16177], + ["2019-11-15T12:15:59", 12.14428, -47.16254], + ["2019-11-15T15:13:37", 12.14464, -47.17486], + ["2019-11-15T15:43:37", 12.14507, -47.17769], + ["2019-11-15T16:13:37", 12.14481, -47.17966], + ["2019-11-15T16:43:21", 12.14409, -47.18198], + ["2019-11-15T17:42:52", 12.14403, -47.18845], + ["2019-11-15T19:14:47", 12.14334, -47.20026], + ["2019-11-15T19:44:47", 12.14317, -47.20344], + ["2019-11-15T20:14:47", 12.14283, -47.2067], + ["2019-11-15T20:31:52", 12.14285, -47.20834], + ["2019-11-15T20:42:21", 12.14291, -47.20932], + ["2019-11-15T21:12:09", 12.14356, -47.21237], + ["2019-11-15T23:12:49", 12.14852, -47.22668], + ["2019-11-16T00:41:15", 12.15474, -47.2388], + ["2019-11-16T02:11:53", 12.16131, -47.25338], + ["2019-11-16T02:41:53", 12.16234, -47.25819], + ["2019-11-16T03:11:53", 12.16401, -47.26343], + ["2019-11-16T03:40:15", 12.16575, -47.26822], + ["2019-11-16T04:09:58", 12.16739, -47.27351], + ["2019-11-16T04:39:58", 12.16846, -47.27832], + ["2019-11-16T05:09:48", 12.1697, -47.28293], + ["2019-11-16T10:37:56", 12.18191, -47.33487], + ["2019-11-16T11:40:30", 12.19287, -47.34616], + ["2019-11-16T12:07:33", 12.19759, -47.3511], + ["2019-11-16T14:07:08", 12.21673, -47.36954], + ["2019-11-16T17:05:58", 12.25848, -47.39261], + ["2019-11-16T19:06:30", 12.28318, -47.40289], + ["2019-11-16T19:35:09", 12.28828, -47.40533], + ["2019-11-17T03:35:39", 12.35925, -47.40302], + ["2019-11-17T04:02:47", 12.36066, -47.40106], + ["2019-11-17T06:32:03", 12.36258, -47.39139], + ["2019-11-17T15:02:37", 12.32532, -47.42468], + ["2019-11-17T17:30:11", 12.31714, -47.44678], + ["2019-11-17T19:30:59", 12.31251, -47.47079], + ["2019-11-17T19:57:57", 12.31002, -47.48157], + ["2019-11-17T20:27:57", 12.30981, -47.48226], + ["2019-11-17T20:57:57", 12.30869, -47.48715], + ["2019-11-17T21:27:36", 12.30738, -47.49434], + ["2019-11-17T21:57:36", 12.30622, -47.49966], + ["2019-11-17T22:27:36", 12.30545, -47.50601], + ["2019-11-17T23:57:04", 12.30571, -47.52545], + ["2019-11-18T00:27:04", 12.3061, -47.53232], + ["2019-11-18T00:57:04", 12.30722, -47.53824], + ["2019-11-18T01:27:56", 12.30978, -47.5448], + ["2019-11-18T01:57:56", 12.31266, -47.55081], + ["2019-11-18T02:26:31", 12.31535, -47.55582], + ["2019-11-18T02:56:04", 12.31778, -47.56068], + ["2019-11-18T03:26:04", 12.31984, -47.56497], + ["2019-11-18T04:58:59", 12.32132, -47.5766], + ["2019-11-18T05:55:18", 12.32171, -47.5835], + ["2019-11-18T07:24:28", 12.32146, -47.5962], + ["2019-11-18T07:54:28", 12.32228, -47.60152], + ["2019-11-18T08:24:28", 12.32344, -47.60727], + ["2019-11-18T09:56:07", 12.33134, -47.63459], + ["2019-11-18T10:56:07", 12.33254, -47.64154], + ["2019-11-18T11:52:45", 12.34009, -47.65484], + ["2019-11-18T12:26:12", 12.34429, -47.6622], + ["2019-11-18T12:52:45", 12.34863, -47.66806], + ["2019-11-18T17:22:03", 12.40538, -47.72058], + ["2019-11-18T19:50:27", 12.43114, -47.74479], + ["2019-11-18T20:20:27", 12.43153, -47.74548], + ["2019-11-18T20:50:27", 12.43316, -47.74771], + ["2019-11-18T21:51:35", 12.43726, -47.75269], + ["2019-11-19T00:21:27", 12.44852, -47.77023], + ["2019-11-19T00:49:39", 12.4516, -47.77325], + ["2019-11-19T01:19:39", 12.45409, -47.77634], + ["2019-11-19T01:51:17", 12.45614, -47.77924], + ["2019-11-19T03:48:41", 12.46418, -47.789], + ["2019-11-19T05:18:22", 12.47286, -47.79501], + ["2019-11-19T07:47:42", 12.48371, -47.80951], + ["2019-11-19T09:19:41", 12.48794, -47.82247], + ["2019-11-19T09:49:41", 12.48854, -47.82659], + ["2019-11-19T10:19:41", 12.4888, -47.83105], + ["2019-11-19T12:17:01", 12.49151, -47.84433], + ["2019-11-19T12:46:46", 12.4906, -47.8468], + ["2019-11-19T13:17:36", 12.48866, -47.84958], + ["2019-11-19T15:15:36", 12.47833, -47.85757], + ["2019-11-19T15:44:56", 12.47553, -47.86049], + ["2019-11-19T16:14:56", 12.47403, -47.86358], + ["2019-11-19T16:44:56", 12.47244, -47.86676], + ["2019-11-19T17:44:36", 12.46915, -47.87421], + ["2019-11-19T18:14:36", 12.46773, -47.87842], + ["2019-11-19T18:44:36", 12.46644, -47.88245], + ["2019-11-19T19:14:16", 12.4644, -47.88732], + ["2019-11-19T19:44:16", 12.46255, -47.89127], + ["2019-11-19T20:14:16", 12.46023, -47.89651], + ["2019-11-19T23:14:31", 12.44802, -47.93283], + ["2019-11-20T01:14:56", 12.44307, -47.96057], + ["2019-11-20T01:43:09", 12.44267, -47.96631], + ["2019-11-20T02:13:48", 12.44267, -47.9726], + ["2019-11-20T02:43:48", 12.44284, -47.97878], + ["2019-11-20T03:13:48", 12.44361, -47.98505], + ["2019-11-20T03:42:41", 12.44476, -47.99106], + ["2019-11-20T04:12:19", 12.44612, -47.99823], + ["2019-11-20T04:42:19", 12.44689, -48.00458], + ["2019-11-20T10:40:22", 12.46503, -48.10208], + ["2019-11-20T12:09:56", 12.47059, -48.12454], + ["2019-11-20T16:08:39", 12.49261, -48.17703], + ["2019-11-20T17:08:04", 12.50099, -48.18867], + ["2019-11-20T17:40:58", 12.50664, -48.19473], + ["2019-11-20T18:08:04", 12.5109, -48.19922], + ["2019-11-20T18:38:07", 12.51488, -48.20413], + ["2019-11-20T19:09:27", 12.51915, -48.20889], + ["2019-11-21T01:38:32", 12.54278, -48.25269], + ["2019-11-21T04:04:44", 12.54217, -48.26957], + ["2019-11-21T04:34:44", 12.54286, -48.27335], + ["2019-11-21T05:04:44", 12.54398, -48.2767], + ["2019-11-21T05:34:37", 12.54606, -48.27969], + ["2019-11-21T06:34:18", 12.55257, -48.28693], + ["2019-11-21T07:04:18", 12.55587, -48.29062], + ["2019-11-21T12:32:06", 12.58256, -48.32584], + ["2019-11-21T13:03:14", 12.58558, -48.32926], + ["2019-11-21T13:33:14", 12.58712, -48.33304], + ["2019-11-21T14:03:14", 12.58858, -48.33707], + ["2019-11-21T16:30:20", 12.59769, -48.35343], + ["2019-11-21T17:00:20", 12.59846, -48.35643], + ["2019-11-21T17:30:20", 12.59897, -48.35995], + ["2019-11-21T19:29:39", 12.60609, -48.38106], + ["2019-11-21T20:28:16", 12.60655, -48.38159], + ["2019-11-21T20:29:39", 12.60665, -48.38174], + ["2019-11-21T21:02:29", 12.6101, -48.38426], + ["2019-11-21T21:32:29", 12.61332, -48.38641], + ["2019-11-22T00:00:13", 12.62217, -48.39778], + ["2019-11-22T01:00:13", 12.6253, -48.39975], + ["2019-11-22T01:28:32", 12.62543, -48.40045], + ["2019-11-22T03:27:56", 12.62166, -48.40701], + ["2019-11-22T03:59:22", 12.62181, -48.41028], + ["2019-11-22T04:27:37", 12.62344, -48.41379], + ["2019-11-22T04:57:20", 12.62595, -48.41735], + ["2019-11-22T05:27:20", 12.62874, -48.42087], + ["2019-11-22T05:57:20", 12.63093, -48.42447], + ["2019-11-22T07:28:07", 12.63544, -48.43478], + ["2019-11-22T10:55:50", 12.642, -48.44778], + ["2019-11-22T11:25:50", 12.64286, -48.44907], + ["2019-11-22T11:55:50", 12.64368, -48.45096], + ["2019-11-22T13:28:44", 12.646, -48.45847], + ["2019-11-22T13:58:44", 12.64651, -48.46147], + ["2019-11-22T14:28:44", 12.64741, -48.46439], + ["2019-11-22T16:25:49", 12.657, -48.47809], + ["2019-11-22T18:23:31", 12.67296, -48.49603], + ["2019-11-22T18:53:31", 12.67841, -48.50032], + ["2019-11-22T19:23:31", 12.68485, -48.5047], + ["2019-11-22T19:54:33", 12.6908, -48.50815], + ["2019-11-22T20:22:50", 12.69658, -48.51164], + ["2019-11-22T20:52:50", 12.70001, -48.51404], + ["2019-11-22T21:22:50", 12.70336, -48.51593], + ["2019-11-22T21:54:28", 12.70677, -48.51785], + ["2019-11-22T23:54:11", 12.71635, -48.5214], + ["2019-11-23T00:24:11", 12.71734, -48.52209], + ["2019-11-23T00:54:11", 12.71751, -48.52295], + ["2019-11-23T04:20:28", 12.73045, -48.53418], + ["2019-11-23T06:51:13", 12.74106, -48.54523], + ["2019-11-23T07:20:41", 12.743, -48.5464], + ["2019-11-23T07:50:41", 12.74532, -48.54794], + ["2019-11-23T10:48:35", 12.75315, -48.5513], + ["2019-11-23T11:20:58", 12.75376, -48.55179], + ["2019-11-23T11:48:26", 12.75296, -48.55267], + ["2019-11-23T12:49:59", 12.74989, -48.55463], + ["2019-11-23T15:17:06", 12.74805, -48.56738], + ["2019-11-23T16:46:45", 12.75226, -48.57916], + ["2019-11-23T17:16:36", 12.75317, -48.58398], + ["2019-11-23T17:46:36", 12.7548, -48.58698], + ["2019-11-23T19:17:20", 12.76384, -48.59973], + ["2019-11-23T19:48:22", 12.7665, -48.60386], + ["2019-11-23T20:18:22", 12.76955, -48.60858], + ["2019-11-23T20:45:51", 12.77194, -48.61273], + ["2019-11-23T22:49:00", 12.7824, -48.62982], + ["2019-11-24T02:44:21", 12.79085, -48.64914], + ["2019-11-24T03:14:08", 12.78992, -48.65173], + ["2019-11-24T05:47:05", 12.79697, -48.66992], + ["2019-11-24T06:16:11", 12.79843, -48.67394], + ["2019-11-24T06:46:11", 12.79937, -48.67832], + ["2019-11-24T07:16:11", 12.80079, -48.68356], + ["2019-11-24T08:44:00", 12.80717, -48.69815], + ["2019-11-24T09:11:59", 12.80948, -48.70352], + ["2019-11-24T09:44:29", 12.81243, -48.70868], + ["2019-11-24T10:11:59", 12.816, -48.71262], + ["2019-11-24T13:43:28", 12.84314, -48.73648], + ["2019-11-24T14:10:28", 12.84578, -48.73921], + ["2019-11-24T14:40:28", 12.8481, -48.74213], + ["2019-11-24T16:12:57", 12.85777, -48.76114], + ["2019-11-24T17:12:57", 12.86039, -48.76517], + ["2019-11-24T20:27:46", 12.88504, -48.79062], + ["2019-11-24T21:42:22", 12.89517, -48.79697], + ["2019-11-24T22:12:56", 12.89766, -48.79947], + ["2019-11-24T23:41:59", 12.90391, -48.80826], + ["2019-11-25T09:35:31", 12.93841, -48.87445], + ["2019-11-25T12:35:57", 12.94881, -48.89615], + ["2019-11-25T14:34:30", 12.95587, -48.91196], + ["2019-11-25T20:32:39", 12.99606, -48.94376], + ["2019-11-26T00:01:36", 12.99964, -48.95129], + ["2019-11-26T04:59:36", 12.99732, -48.98145], + ["2019-11-26T08:28:49", 13.00754, -48.9946], + ["2019-11-26T08:59:46", 13.00707, -48.99673], + ["2019-11-26T09:58:03", 13.00587, -49.00252], + ["2019-11-26T10:28:03", 13.00591, -49.00509], + ["2019-11-26T10:58:03", 13.0066, -49.00827], + ["2019-11-26T11:27:57", 13.00671, -49.01287], + ["2019-11-26T11:57:57", 13.00598, -49.01596], + ["2019-11-26T14:30:34", 13.0028, -49.03946], + ["2019-11-26T14:58:28", 13.00296, -49.04428], + ["2019-11-26T15:27:07", 13.00295, -49.04858], + ["2019-11-26T16:27:43", 13.0026, -49.05729], + ["2019-11-26T16:57:43", 13.00209, -49.06141], + ["2019-11-26T17:27:43", 13.00188, -49.0657], + ["2019-11-26T17:57:30", 13.00214, -49.0697], + ["2019-11-26T18:27:30", 13.00313, -49.07339], + ["2019-11-26T18:56:18", 13.00453, -49.07568], + ["2019-11-26T19:26:03", 13.00667, -49.07908], + ["2019-11-26T19:56:03", 13.0086, -49.08243], + ["2019-11-26T21:25:57", 13.01415, -49.09332], + ["2019-11-26T21:55:57", 13.01475, -49.09624], + ["2019-11-26T22:25:57", 13.01514, -49.09976], + ["2019-11-26T22:56:58", 13.01544, -49.10352], + ["2019-11-26T23:25:46", 13.01629, -49.1077], + ["2019-11-26T23:57:19", 13.0169, -49.11209], + ["2019-11-27T03:24:52", 13.01861, -49.14413], + ["2019-11-27T03:54:28", 13.0211, -49.14895], + ["2019-11-27T04:24:28", 13.0235, -49.15247], + ["2019-11-27T05:25:59", 13.02943, -49.15749], + ["2019-11-27T05:55:59", 13.03145, -49.15895], + ["2019-11-27T06:25:59", 13.03347, -49.16092], + ["2019-11-27T06:53:51", 13.03587, -49.16293], + ["2019-11-27T08:56:26", 13.04902, -49.17259], + ["2019-11-27T09:26:26", 13.05215, -49.17551], + ["2019-11-27T09:56:26", 13.05545, -49.17963], + ["2019-11-27T10:22:50", 13.05794, -49.18307], + ["2019-11-27T10:52:29", 13.06032, -49.18591], + ["2019-11-27T15:21:38", 13.0698, -49.21579], + ["2019-11-27T18:22:09", 13.07494, -49.22327], + ["2019-11-27T19:20:38", 13.07896, -49.22603], + ["2019-11-27T19:50:38", 13.08106, -49.22792], + ["2019-11-27T20:20:38", 13.08295, -49.22998], + ["2019-11-27T20:51:35", 13.08525, -49.23255], + ["2019-11-27T21:21:35", 13.08701, -49.23547], + ["2019-11-27T21:51:35", 13.08817, -49.23959], + ["2019-11-27T22:21:07", 13.08876, -49.2426], + ["2019-11-27T22:51:07", 13.08927, -49.24603], + ["2019-11-28T00:22:07", 13.09296, -49.25558], + ["2019-11-28T00:49:24", 13.09453, -49.25787], + ["2019-11-28T01:19:22", 13.09563, -49.26019], + ["2019-11-28T01:48:53", 13.09631, -49.26227], + ["2019-11-28T02:19:08", 13.09663, -49.26312], + ["2019-11-28T02:48:53", 13.09807, -49.26425], + ["2019-11-28T04:50:30", 13.10107, -49.26602], + ["2019-11-28T05:18:07", 13.10209, -49.26611], + ["2019-11-28T06:19:25", 13.10714, -49.26706], + ["2019-11-28T07:20:55", 13.1129, -49.26736], + ["2019-11-28T12:45:46", 13.11289, -49.27933], + ["2019-11-28T13:16:30", 13.11214, -49.28082], + ["2019-11-28T13:46:30", 13.11137, -49.28305], + ["2019-11-28T21:15:32", 13.12191, -49.32654], + ["2019-11-28T21:43:26", 13.12264, -49.33112], + ["2019-11-28T22:13:18", 13.1227, -49.3363], + ["2019-11-29T00:12:44", 13.12213, -49.35544], + ["2019-11-29T00:43:15", 13.12067, -49.35825], + ["2019-11-29T01:12:44", 13.11866, -49.36127], + ["2019-11-29T01:45:57", 13.11679, -49.36444], + ["2019-11-29T02:41:49", 13.11476, -49.37099], + ["2019-11-29T03:11:49", 13.11437, -49.37502], + ["2019-11-29T03:41:49", 13.11377, -49.37811], + ["2019-11-29T04:11:40", 13.11282, -49.3812], + ["2019-11-29T04:44:32", 13.11205, -49.38425], + ["2019-11-29T05:11:27", 13.11264, -49.38706], + ["2019-11-29T05:41:27", 13.11491, -49.38989], + ["2019-11-29T08:10:44", 13.12933, -49.40521], + ["2019-11-29T08:41:36", 13.13434, -49.40963], + ["2019-11-29T09:41:36", 13.1379, -49.41229], + ["2019-11-29T10:09:52", 13.13973, -49.41422], + ["2019-11-29T10:39:37", 13.14214, -49.41738], + ["2019-11-29T11:09:37", 13.14411, -49.4203], + ["2019-11-29T11:39:37", 13.1472, -49.42416], + ["2019-11-29T17:07:45", 13.17913, -49.45483], + ["2019-11-29T17:40:31", 13.18381, -49.45657], + ["2019-11-29T18:07:32", 13.1871, -49.45737], + ["2019-11-29T18:37:05", 13.18986, -49.45709], + ["2019-11-29T19:07:05", 13.19316, -49.4558], + ["2019-11-29T19:37:05", 13.19565, -49.45477], + ["2019-11-30T04:04:20", 13.22847, -49.45984], + ["2019-11-30T06:33:34", 13.24019, -49.46024], + ["2019-11-30T07:05:57", 13.24229, -49.45864], + ["2019-11-30T07:35:57", 13.24392, -49.45718], + ["2019-11-30T08:02:49", 13.24542, -49.45593], + ["2019-11-30T10:01:58", 13.24737, -49.45303], + ["2019-11-30T10:31:42", 13.24877, -49.45219], + ["2019-11-30T11:01:42", 13.24937, -49.4515], + ["2019-11-30T11:31:42", 13.24933, -49.45099], + ["2019-11-30T13:32:44", 13.2492, -49.45175], + ["2019-11-30T14:00:35", 13.24963, -49.45288], + ["2019-11-30T14:34:31", 13.25062, -49.45444], + ["2019-11-30T15:00:35", 13.25298, -49.4552], + ["2019-11-30T16:02:37", 13.25748, -49.45782], + ["2019-11-30T18:00:08", 13.25771, -49.46115], + ["2019-11-30T18:30:44", 13.25638, -49.46121], + ["2019-11-30T19:00:44", 13.25578, -49.46198], + ["2019-11-30T19:28:50", 13.25466, -49.46213], + ["2019-11-30T20:19:05", 13.25307, -49.46143], + ["2019-12-01T04:28:27", 13.26893, -49.50485], + ["2019-12-01T05:59:00", 13.26863, -49.51502], + ["2019-12-01T06:29:00", 13.2682, -49.51751], + ["2019-12-01T06:59:00", 13.26936, -49.52026], + ["2019-12-01T09:26:23", 13.27202, -49.53812], + ["2019-12-01T14:24:18", 13.30508, -49.58182], + ["2019-12-01T14:53:54", 13.30877, -49.58559], + ["2019-12-01T15:25:57", 13.3123, -49.58878], + ["2019-12-01T15:53:54", 13.31589, -49.59186], + ["2019-12-01T16:24:22", 13.32017, -49.59449], + ["2019-12-01T16:54:22", 13.32489, -49.59732], + ["2019-12-01T17:23:20", 13.32968, -49.60035], + ["2019-12-01T17:53:20", 13.33359, -49.60395], + ["2019-12-01T18:23:20", 13.33677, -49.60635], + ["2019-12-01T21:52:49", 13.34747, -49.61459], + ["2019-12-02T04:50:10", 13.37367, -49.63748], + ["2019-12-02T05:21:37", 13.37485, -49.63956], + ["2019-12-02T06:20:31", 13.37452, -49.64307], + ["2019-12-02T06:49:00", 13.37339, -49.64526], + ["2019-12-02T07:19:00", 13.37129, -49.64775], + ["2019-12-02T07:49:00", 13.36854, -49.65015], + ["2019-12-02T08:22:19", 13.36643, -49.65357], + ["2019-12-02T08:52:19", 13.36446, -49.65717], + ["2019-12-02T09:18:40", 13.36389, -49.66089], + ["2019-12-02T15:16:44", 13.3564, -49.70746], + ["2019-12-02T15:46:16", 13.35694, -49.7141], + ["2019-12-02T16:16:16", 13.35715, -49.71942], + ["2019-12-02T16:46:16", 13.35848, -49.72534], + ["2019-12-02T17:47:20", 13.36079, -49.73802], + ["2019-12-02T18:17:20", 13.36092, -49.74437], + ["2019-12-02T18:47:20", 13.36036, -49.75098], + ["2019-12-02T19:18:21", 13.36005, -49.75808], + ["2019-12-02T19:48:21", 13.36104, -49.76529], + ["2019-12-02T23:44:59", 13.37051, -49.80908], + ["2019-12-03T00:17:30", 13.37271, -49.81421], + ["2019-12-03T00:44:53", 13.37486, -49.81888], + ["2019-12-03T03:45:31", 13.40558, -49.85313], + ["2019-12-03T04:45:31", 13.41034, -49.85828], + ["2019-12-03T07:14:36", 13.43089, -49.87088], + ["2019-12-03T07:42:49", 13.43408, -49.87375], + ["2019-12-03T15:42:41", 13.47321, -49.91382], + ["2019-12-04T00:40:10", 13.50976, -49.94272], + ["2019-12-04T01:06:43", 13.51063, -49.94453], + ["2019-12-04T01:36:43", 13.51114, -49.94702], + ["2019-12-04T03:06:21", 13.51463, -49.95294], + ["2019-12-04T17:32:23", 13.51309, -50.07846], + ["2019-12-04T18:02:11", 13.51477, -50.08405], + ["2019-12-05T02:31:15", 13.56696, -50.16931], + ["2019-12-05T06:29:14", 13.59694, -50.1991], + ["2019-12-05T06:59:03", 13.60286, -50.20034], + ["2019-12-05T07:29:03", 13.60775, -50.20154], + ["2019-12-05T08:58:06", 13.62196, -50.20698], + ["2019-12-05T09:28:06", 13.62548, -50.20904], + ["2019-12-05T09:58:06", 13.62836, -50.21161], + ["2019-12-05T13:30:42", 13.65178, -50.22693], + ["2019-12-05T20:29:00", 13.68564, -50.24692], + ["2019-12-05T20:55:19", 13.68821, -50.24884], + ["2019-12-05T21:25:04", 13.69063, -50.2515], + ["2019-12-05T23:53:56", 13.69949, -50.2579], + ["2019-12-06T00:23:56", 13.70082, -50.25824], + ["2019-12-06T00:53:44", 13.70227, -50.25812], + ["2019-12-06T01:56:11", 13.70362, -50.25888], + ["2019-12-06T02:23:06", 13.70356, -50.26017], + ["2019-12-06T02:53:06", 13.70339, -50.26154], + ["2019-12-06T03:52:57", 13.70337, -50.26553], + ["2019-12-06T06:51:50", 13.7133, -50.28351], + ["2019-12-06T10:23:05", 13.7273, -50.3042], + ["2019-12-06T19:18:57", 13.76219, -50.37292], + ["2019-12-06T23:47:43", 13.79293, -50.39868], + ["2019-12-07T02:45:07", 13.80722, -50.41241], + ["2019-12-07T03:15:07", 13.80855, -50.41687], + ["2019-12-07T03:45:07", 13.81061, -50.42279], + ["2019-12-07T17:10:52", 13.92725, -50.49506], + ["2019-12-08T04:37:30", 13.97467, -50.54199], + ["2019-12-08T05:07:06", 13.97538, -50.5465], + ["2019-12-08T05:37:06", 13.97611, -50.5495], + ["2019-12-08T06:06:58", 13.9767, -50.55276], + ["2019-12-08T10:35:40", 13.99597, -50.58066], + ["2019-12-08T11:35:03", 14.00352, -50.58429], + ["2019-12-08T12:04:52", 14.0075, -50.58545], + ["2019-12-08T12:34:45", 14.01104, -50.58646], + ["2019-12-08T13:04:45", 14.0134, -50.58749], + ["2019-12-08T18:03:28", 14.03096, -50.60956], + ["2019-12-08T19:32:31", 14.03695, -50.61829], + ["2019-12-09T00:00:50", 14.05002, -50.63489], + ["2019-12-09T00:30:16", 14.05159, -50.63716], + ["2019-12-09T01:00:16", 14.05296, -50.63939], + ["2019-12-09T01:30:16", 14.05489, -50.64188], + ["2019-12-09T01:59:57", 14.05592, -50.64415], + ["2019-12-09T02:29:57", 14.05686, -50.64664], + ["2019-12-09T02:59:45", 14.05757, -50.65006], + ["2019-12-09T03:29:45", 14.05821, -50.65349], + ["2019-12-09T03:59:45", 14.05958, -50.65692], + ["2019-12-09T11:00:23", 14.08124, -50.71182], + ["2019-12-09T18:55:15", 14.11232, -50.75659], + ["2019-12-09T23:54:18", 14.11679, -50.79712], + ["2019-12-10T00:54:46", 14.11948, -50.8103], + ["2019-12-10T04:22:28", 14.13446, -50.84683], + ["2019-12-10T08:25:09", 14.15187, -50.88727], + ["2019-12-10T10:50:41", 14.16663, -50.91394], + ["2019-12-10T11:24:24", 14.17083, -50.92059], + ["2019-12-10T13:20:36", 14.18679, -50.94103], + ["2019-12-10T13:50:36", 14.191, -50.94566], + ["2019-12-10T14:20:36", 14.19538, -50.95029], + ["2019-12-10T18:20:01", 14.22173, -50.98273], + ["2019-12-10T21:47:03", 14.24745, -51.01068], + ["2019-12-10T22:20:05", 14.25112, -51.0141], + ["2019-12-10T23:45:59", 14.26055, -51.02129], + ["2019-12-11T00:15:59", 14.26244, -51.02386], + ["2019-12-11T00:45:59", 14.2639, -51.02643], + ["2019-12-11T01:48:30", 14.26535, -51.03036], + ["2019-12-11T03:17:36", 14.26764, -51.03732], + ["2019-12-11T04:14:50", 14.26907, -51.04153], + ["2019-12-11T05:16:47", 14.27445, -51.05232], + ["2019-12-11T06:16:47", 14.27544, -51.05472], + ["2019-12-11T09:17:35", 14.28861, -51.07516], + ["2019-12-11T11:43:18", 14.30001, -51.09189], + ["2019-12-11T17:13:00", 14.31214, -51.12546], + ["2019-12-11T18:41:28", 14.31598, -51.138], + ["2019-12-11T20:11:09", 14.32256, -51.15161], + ["2019-12-11T20:43:55", 14.32596, -51.15738], + ["2019-12-12T01:41:03", 14.34878, -51.19653], + ["2019-12-12T02:09:31", 14.34902, -51.20004], + ["2019-12-12T06:09:27", 14.35428, -51.23334], + ["2019-12-12T08:07:56", 14.36785, -51.25673], + ["2019-12-12T08:37:56", 14.37042, -51.26102], + ["2019-12-12T09:08:11", 14.37313, -51.26552], + ["2019-12-12T09:38:11", 14.37575, -51.26981], + ["2019-12-12T12:06:17", 14.39531, -51.28595], + ["2019-12-12T15:37:01", 14.42624, -51.314], + ["2019-12-12T16:34:36", 14.43163, -51.32013], + ["2019-12-12T18:34:08", 14.44706, -51.33212], + ["2019-12-12T19:03:47", 14.45161, -51.3361], + ["2019-12-12T19:33:47", 14.45526, -51.3385], + ["2019-12-12T20:34:35", 14.46321, -51.34335], + ["2019-12-13T00:31:52", 14.4934, -51.36215], + ["2019-12-13T03:00:58", 14.5078, -51.37051], + ["2019-12-13T04:30:29", 14.51322, -51.37457], + ["2019-12-13T05:30:28", 14.51443, -51.37558], + ["2019-12-13T05:59:51", 14.51515, -51.3777], + ["2019-12-13T06:29:51", 14.51571, -51.37959], + ["2019-12-13T06:59:51", 14.51562, -51.38174], + ["2019-12-13T08:59:07", 14.51296, -51.39783], + ["2019-12-13T10:31:38", 14.51509, -51.4222], + ["2019-12-13T11:31:38", 14.51526, -51.42838], + ["2019-12-13T15:30:43", 14.52748, -51.47821], + ["2019-12-13T16:26:57", 14.53036, -51.49103], + ["2019-12-13T17:56:22", 14.53492, -51.50985], + ["2019-12-13T18:26:22", 14.53724, -51.51697], + ["2019-12-13T18:56:22", 14.53913, -51.52289], + ["2019-12-14T01:24:11", 14.58855, -51.62805], + ["2019-12-14T04:53:20", 14.62332, -51.67017], + ["2019-12-14T05:23:30", 14.62723, -51.67584], + ["2019-12-14T05:53:30", 14.63041, -51.6815], + ["2019-12-14T06:23:30", 14.6335, -51.68674], + ["2019-12-14T08:22:13", 14.64542, -51.70935], + ["2019-12-14T08:51:25", 14.64784, -51.71557], + ["2019-12-14T09:21:25", 14.64964, -51.72115], + ["2019-12-14T09:51:25", 14.6517, -51.72656], + ["2019-12-14T10:20:54", 14.65385, -51.73198], + ["2019-12-14T10:50:54", 14.65557, -51.73653], + ["2019-12-14T11:20:54", 14.65759, -51.74219], + ["2019-12-14T12:20:41", 14.66201, -51.75619], + ["2019-12-14T12:50:41", 14.66566, -51.7646], + ["2019-12-14T13:20:41", 14.66862, -51.77155], + ["2019-12-14T13:50:38", 14.67113, -51.77957], + ["2019-12-14T15:19:41", 14.68318, -51.80483], + ["2019-12-14T15:52:19", 14.68806, -51.81393], + ["2019-12-14T16:19:41", 14.69253, -51.82123], + ["2019-12-14T16:51:29", 14.69709, -51.82881], + ["2019-12-14T17:21:29", 14.70177, -51.83679], + ["2019-12-14T17:49:09", 14.70559, -51.84335], + ["2019-12-14T18:18:57", 14.70951, -51.85089], + ["2019-12-14T19:22:28", 14.7161, -51.867], + ["2019-12-14T22:18:02", 14.72782, -51.91577], + ["2019-12-15T03:16:03", 14.73569, -52.00967], + ["2019-12-15T05:45:32", 14.73713, -52.04694], + ["2019-12-15T06:15:18", 14.73577, -52.05606], + ["2019-12-15T06:45:18", 14.7341, -52.06439], + ["2019-12-15T07:17:13", 14.73165, -52.07345], + ["2019-12-15T07:47:13", 14.72847, -52.08298], + ["2019-12-15T08:15:02", 14.72628, -52.09122], + ["2019-12-15T13:14:55", 14.71498, -52.17807], + ["2019-12-16T02:42:47", 14.7157, -52.39816], + ["2019-12-16T03:09:30", 14.71682, -52.40295], + ["2019-12-16T03:39:30", 14.71798, -52.40836], + ["2019-12-16T05:39:33", 14.72081, -52.43442], + ["2019-12-16T06:09:33", 14.72124, -52.44], + ["2019-12-16T07:40:37", 14.72301, -52.46703], + ["2019-12-16T08:40:37", 14.72344, -52.47278], + ["2019-12-16T15:06:55", 14.75733, -52.55789], + ["2019-12-16T19:38:57", 14.76006, -52.62231], + ["2019-12-16T22:04:46", 14.76746, -52.66229], + ["2019-12-16T23:34:20", 14.77168, -52.68158], + ["2019-12-17T06:03:17", 14.76863, -52.75726], + ["2019-12-17T07:04:15", 14.7664, -52.78243], + ["2019-12-17T08:04:15", 14.76494, -52.78912], + ["2019-12-17T10:31:16", 14.76558, -52.82538], + ["2019-12-17T11:03:34", 14.76615, -52.83264], + ["2019-12-17T14:01:53", 14.77377, -52.87332], + ["2019-12-17T14:30:12", 14.77495, -52.88031], + ["2019-12-17T18:02:29", 14.78074, -52.94092], + ["2019-12-17T18:28:52", 14.7818, -52.94727], + ["2019-12-17T20:31:34", 14.79101, -52.97881], + ["2019-12-17T21:31:34", 14.79277, -52.98499], + ["2019-12-17T21:57:47", 14.79482, -52.99036], + ["2019-12-17T22:29:00", 14.79679, -52.99698], + ["2019-12-17T22:59:00", 14.79902, -53.0029], + ["2019-12-18T02:27:01", 14.81296, -53.0466], + ["2019-12-18T07:26:49", 14.81352, -53.11703], + ["2019-12-18T07:55:33", 14.81443, -53.12326], + ["2019-12-18T14:53:33", 14.84782, -53.19791], + ["2019-12-18T15:55:37", 14.84605, -53.20959], + ["2019-12-18T17:25:30", 14.84651, -53.23114], + ["2019-12-18T17:52:49", 14.84697, -53.23773], + ["2019-12-18T18:52:24", 14.85064, -53.26273], + ["2019-12-18T19:22:24", 14.8509, -53.26385], + ["2019-12-18T19:52:24", 14.85133, -53.26608], + ["2019-12-19T10:47:46", 14.91364, -53.43732], + ["2019-12-19T14:18:58", 14.93615, -53.46268], + ["2019-12-20T01:13:57", 14.94088, -53.56509], + ["2019-12-20T20:08:30", 14.97839, -53.76645], + ["2019-12-21T00:37:33", 14.98547, -53.80969], + ["2019-12-21T04:36:43", 15.00337, -53.83698], + ["2019-12-21T08:06:48", 15.00343, -53.86188], + ["2019-12-21T14:03:48", 14.99871, -53.90359], + ["2019-12-22T02:29:52", 14.98587, -54.02313], + ["2019-12-22T11:00:59", 14.99073, -54.10376], + ["2019-12-22T18:55:36", 14.9866, -54.1673], + ["2019-12-22T19:25:13", 14.98975, -54.17366], + ["2019-12-22T19:55:13", 14.99065, -54.17538], + ["2019-12-23T01:53:56", 14.99905, -54.21851], + ["2019-12-23T02:23:52", 14.99924, -54.22177], + ["2019-12-23T09:51:57", 15.00972, -54.26324], + ["2019-12-23T19:41:28", 14.99657, -54.32367], + ["2019-12-24T03:48:16", 14.98516, -54.38989], + ["2019-12-24T14:46:29", 15.02884, -54.50201], + ["2019-12-24T15:13:13", 15.0309, -54.50568], + ["2019-12-26T06:33:00", 15.33205, -54.7309], + ["2019-12-26T17:58:01", 15.46342, -54.82471], + ["2019-12-26T21:27:13", 15.51948, -54.84421], + ["2019-12-27T00:59:44", 15.56193, -54.85989], + ["2019-12-27T06:55:03", 15.60869, -54.87683], + ["2019-12-27T12:27:02", 15.64308, -54.91748], + ["2019-12-27T19:38:34", 15.72121, -55.00571], + ["2019-12-27T19:51:07", 15.7237, -55.00857], + ["2019-12-27T20:21:07", 15.72924, -55.01466], + ["2019-12-27T20:51:07", 15.73512, -55.02084], + ["2019-12-28T19:14:59", 15.93974, -55.26721], + ["2019-12-29T06:10:01", 16.01529, -55.34586], + ["2019-12-30T23:57:14", 16.40633, -55.56259], + ["2019-12-31T10:57:30", 16.48387, -55.64749], + ["2020-01-01T01:52:01", 16.58696, -55.80444], + ["2020-01-01T14:17:09", 16.62113, -55.86685], + ["2020-01-01T17:44:53", 16.63493, -55.89514], + ["2020-01-01T19:38:03", 16.63815, -55.91028], + ["2020-01-02T04:43:53", 16.64736, -56.00754], + ["2020-01-02T05:12:21", 16.64994, -56.01141], + ["2020-01-02T23:09:49", 16.62549, -56.15594], + ["2020-01-03T04:36:41", 16.58088, -56.18289], + ["2020-01-03T16:02:32", 16.51113, -56.24368], + ["2020-01-03T16:32:07", 16.51032, -56.24695], + ["2020-01-03T17:02:07", 16.50938, -56.25107], + ["2020-01-03T17:32:07", 16.50826, -56.2551], + ["2020-01-03T19:01:31", 16.50019, -56.26761], + ["2020-01-04T02:33:01", 16.45414, -56.33041], + ["2020-01-04T15:26:47", 16.3668, -56.39279], + ["2020-01-04T17:25:15", 16.34975, -56.40955], + ["2020-01-04T17:54:40", 16.34425, -56.4156], + ["2020-01-04T18:24:40", 16.33944, -56.42006], + ["2020-01-04T18:54:40", 16.33506, -56.42358], + ["2020-01-04T19:06:19", 16.33037, -56.4274], + ["2020-01-04T19:36:19", 16.32951, -56.42834], + ["2020-01-04T21:23:38", 16.31883, -56.44074], + ["2020-01-04T21:53:38", 16.31647, -56.4428], + ["2020-01-04T22:23:38", 16.31437, -56.44443], + ["2020-01-05T20:48:59", 16.2304, -56.58447], + ["2020-01-06T12:43:08", 16.24337, -56.60831], + ["2020-01-06T15:12:47", 16.24813, -56.59732], + ["2020-01-06T16:42:07", 16.24413, -56.5939], + ["2020-01-06T18:41:32", 16.23597, -56.59262], + ["2020-01-07T03:10:57", 16.19713, -56.61774], + ["2020-01-07T03:38:51", 16.19484, -56.61926], + ["2020-01-08T06:34:01", 16.20243, -56.76599], + ["2020-01-08T08:31:21", 16.20123, -56.77347], + ["2020-01-08T09:01:21", 16.20046, -56.7757], + ["2020-01-08T11:00:52", 16.19663, -56.7858], + ["2020-01-09T04:55:04", 16.1967, -56.93317], + ["2020-01-09T06:54:47", 16.20112, -56.95526], + ["2020-01-09T15:52:14", 16.19873, -57.05371], + ["2020-01-09T16:22:07", 16.19832, -57.05942], + ["2020-01-10T01:49:45", 16.21661, -57.14499], + ["2020-01-10T02:51:19", 16.21702, -57.15427], + ["2020-01-10T10:16:47", 16.20506, -57.21524], + ["2020-01-10T11:46:11", 16.19857, -57.22797], + ["2020-01-10T23:45:28", 16.15787, -57.36557], + ["2020-01-11T02:12:21", 16.17101, -57.3996], + ["2020-01-11T06:11:38", 16.18565, -57.43356], + ["2020-01-11T09:40:33", 16.19821, -57.45782], + ["2020-01-11T17:08:27", 16.23395, -57.50775], + ["2020-01-12T17:31:56", 16.28591, -57.71774], + ["2020-01-13T01:29:35", 16.271, -57.78644], + ["2020-01-13T03:28:58", 16.26657, -57.80377], + ["2020-01-13T08:58:59", 16.24468, -57.85245], + ["2020-01-13T19:54:12", 16.24543, -57.95386], + ["2020-01-13T23:24:28", 16.24227, -57.98569], + ["2020-01-14T06:52:16", 16.2231, -58.05115], + ["2020-01-14T07:20:37", 16.22203, -58.05637], + ["2020-01-14T08:50:01", 16.22024, -58.07239], + ["2020-01-14T09:20:44", 16.2201, -58.07815], + ["2020-01-14T09:50:44", 16.2201, -58.0833], + ["2020-01-14T10:20:44", 16.22027, -58.08871], + ["2020-01-14T10:49:27", 16.2205, -58.09427], + ["2020-01-14T15:51:29", 16.21341, -58.15097], + ["2020-01-14T21:47:41", 16.21981, -58.21652], + ["2020-01-14T22:16:56", 16.22011, -58.22061], + ["2020-01-14T22:46:56", 16.22101, -58.22507], + ["2020-01-15T00:48:20", 16.2246, -58.24318], + ["2020-01-15T01:18:20", 16.22554, -58.2479], + ["2020-01-15T01:48:20", 16.22726, -58.25339], + ["2020-01-15T02:45:33", 16.22925, -58.26196], + ["2020-01-15T08:13:57", 16.24152, -58.30838], + ["2020-01-15T13:42:30", 16.22782, -58.34686], + ["2020-01-15T17:44:43", 16.20774, -58.38419], + ["2020-01-16T00:40:00", 16.16852, -58.44803], + ["2020-01-16T02:10:34", 16.16027, -58.46396], + ["2020-01-16T03:40:13", 16.14435, -58.49049], + ["2020-01-16T04:40:13", 16.1407, -58.49658], + ["2020-01-16T09:39:14", 16.09068, -58.55365], + ["2020-01-16T13:06:52", 16.05909, -58.58167], + ["2020-01-16T14:36:03", 16.04932, -58.59599], + ["2020-01-16T15:06:03", 16.04743, -58.60002], + ["2020-01-16T15:36:03", 16.04606, -58.60431], + ["2020-01-16T23:04:16", 16.01044, -58.67169], + ["2020-01-16T23:33:58", 16.00675, -58.67768], + ["2020-01-17T00:03:58", 16.0031, -58.68446], + ["2020-01-17T00:33:58", 16.00027, -58.69141], + ["2020-01-17T04:03:01", 15.98466, -58.73901], + ["2020-01-17T06:02:35", 15.97347, -58.76877], + ["2020-01-17T07:32:35", 15.96649, -58.79086], + ["2020-01-17T11:31:10", 15.94646, -58.84537], + ["2020-01-17T12:30:43", 15.94215, -58.86044], + ["2020-01-17T13:00:43", 15.94009, -58.86997], + ["2020-01-17T13:30:43", 15.93807, -58.87744], + ["2020-01-17T18:29:44", 15.92864, -58.9736], + ["2020-01-17T23:58:34", 15.93316, -59.05566], + ["2020-01-18T03:28:41", 15.93104, -59.11005], + ["2020-01-18T16:23:19", 15.92915, -59.28015], + ["2020-01-18T18:22:22", 15.9306, -59.3063], + ["2020-01-19T03:49:54", 15.90725, -59.42224], + ["2020-01-19T08:48:16", 15.85702, -59.46841], + ["2020-01-19T09:50:05", 15.84752, -59.48178], + ["2020-01-19T21:13:53", 15.83455, -59.62466], + ["2020-01-19T23:44:11", 15.8228, -59.65921], + ["2020-01-20T00:14:05", 15.82161, -59.66499], + ["2020-01-20T00:44:05", 15.82071, -59.67151], + ["2020-01-20T02:12:27", 15.81987, -59.68954], + ["2020-01-20T02:42:27", 15.82064, -59.69546], + ["2020-01-20T03:12:27", 15.82068, -59.70078], + ["2020-01-20T05:41:35", 15.8225, -59.72802], + ["2020-01-20T06:11:35", 15.82211, -59.73334], + ["2020-01-20T06:41:35", 15.82147, -59.73737], + ["2020-01-20T14:09:43", 15.79984, -59.7879], + ["2020-01-20T14:39:59", 15.79763, -59.78961], + ["2020-01-20T18:08:37", 15.77866, -59.81235], + ["2020-01-21T18:35:57", 15.65994, -59.98727], + ["2020-01-22T17:25:32", 15.66368, -60.17642], + ["2020-01-22T18:21:03", 15.66641, -60.18964], + ["2020-01-22T18:51:03", 15.6671, -60.19299], + ["2020-01-22T19:21:03", 15.66727, -60.19333], + ["2020-01-23T00:23:42", 15.68101, -60.24307], + ["2020-01-23T00:53:03", 15.68182, -60.2481], + ["2020-01-23T01:23:03", 15.68289, -60.25179], + ["2020-01-23T01:53:03", 15.68461, -60.25565], + ["2020-01-23T19:13:30", 15.78168, -60.36273], + ["2020-01-23T19:17:05", 15.78206, -60.36273], + ["2020-01-24T07:16:55", 15.85351, -60.42365], + ["2020-01-24T07:43:08", 15.85543, -60.42584], + ["2020-01-24T21:08:07", 15.93648, -60.54776], + ["2020-01-24T22:09:17", 15.94855, -60.55386], + ["2020-01-25T02:07:42", 15.98218, -60.577], + ["2020-01-25T04:08:27", 15.99534, -60.59075], + ["2020-01-25T04:38:27", 15.99873, -60.5935], + ["2020-01-25T05:08:27", 16.00238, -60.59625], + ["2020-01-25T09:34:59", 16.04038, -60.60391], + ["2020-01-25T10:35:59", 16.0495, -60.60367], + ["2020-01-25T12:03:50", 16.06004, -60.60212], + ["2020-01-25T12:33:50", 16.06309, -60.60143], + ["2020-01-25T13:03:50", 16.06541, -60.60092], + ["2020-01-25T16:32:48", 16.07288, -60.60645], + ["2020-01-25T17:02:43", 16.07334, -60.60873], + ["2020-01-26T03:59:06", 16.12562, -60.67001], + ["2020-01-26T16:00:07", 16.16865, -60.73663], + ["2020-01-26T16:26:17", 16.17013, -60.73935], + ["2020-01-26T18:13:44", 16.18072, -60.75095], + ["2020-01-26T18:43:44", 16.18149, -60.75146], + ["2020-01-26T19:13:44", 16.18213, -60.7518], + ["2020-01-27T03:23:04", 16.26091, -60.77945], + ["2020-01-27T04:22:31", 16.26713, -60.77948], + ["2020-01-27T04:52:31", 16.2694, -60.77939], + ["2020-01-27T05:22:31", 16.27116, -60.77939], + ["2020-01-27T12:21:40", 16.29285, -60.80618], + ["2020-01-27T19:21:06", 16.36774, -60.83978], + ["2020-01-27T23:17:24", 16.42, -60.84933], + ["2020-01-28T01:17:06", 16.43707, -60.85458], + ["2020-01-28T01:48:33", 16.44101, -60.85577], + ["2020-01-28T02:18:33", 16.44466, -60.85671], + ["2020-01-28T02:48:33", 16.44878, -60.858], + ["2020-01-28T03:46:08", 16.4565, -60.86189], + ["2020-01-28T04:16:08", 16.46139, -60.86464], + ["2020-01-28T04:46:08", 16.46572, -60.86661], + ["2020-01-28T21:11:10", 16.59305, -60.95398], + ["2020-01-28T23:41:34", 16.61583, -60.96396], + ["2020-01-29T00:11:34", 16.62034, -60.96508], + ["2020-01-29T00:41:34", 16.62566, -60.96671], + ["2020-01-29T04:39:27", 16.66151, -60.96976], + ["2020-01-29T05:08:33", 16.66513, -60.96879], + ["2020-01-29T05:39:28", 16.66847, -60.96759], + ["2020-01-29T06:08:33", 16.67157, -60.96579], + ["2020-01-29T08:37:47", 16.68386, -60.95627], + ["2020-01-29T09:07:47", 16.68583, -60.95533], + ["2020-01-29T09:37:47", 16.68772, -60.95456], + ["2020-01-29T19:34:24", 16.764, -60.98788], + ["2020-01-29T20:05:07", 16.76986, -60.99002], + ["2020-01-29T20:35:07", 16.77552, -60.99182], + ["2020-01-29T21:05:07", 16.78144, -60.99405], + ["2020-01-29T22:34:04", 16.79932, -61.00098], + ["2020-01-30T03:34:29", 16.87367, -61.03702], + ["2020-01-30T05:33:30", 16.89901, -61.04889], + ["2020-01-30T15:00:48", 16.97269, -61.11713], + ["2020-01-30T18:58:35", 16.99634, -61.15369], + ["2020-01-30T22:27:47", 17.01546, -61.18262], + ["2020-01-31T03:56:44", 17.03035, -61.22119], + ["2020-01-31T13:24:09", 17.04786, -61.29788], + ["2020-02-01T00:20:18", 17.08957, -61.39185], + ["2020-02-01T00:49:48", 17.09108, -61.39508], + ["2020-02-01T01:19:48", 17.09211, -61.39868], + ["2020-02-01T01:49:48", 17.0928, -61.40228], + ["2020-02-01T03:50:59", 17.09511, -61.4201], + ["2020-02-01T04:18:52", 17.09518, -61.42365], + ["2020-02-01T04:48:52", 17.09475, -61.42803], + ["2020-02-01T05:18:52", 17.09505, -61.43146], + ["2020-02-01T09:48:37", 17.09431, -61.46274], + ["2020-02-01T15:45:47", 17.09003, -61.5126], + ["2020-02-01T19:44:34", 17.09039, -61.556], + ["2020-02-02T09:14:09", 17.19622, -61.67694], + ["2020-02-02T17:10:37", 17.23443, -61.72046], + ["2020-02-02T17:37:57", 17.23589, -61.72205], + ["2020-02-02T23:08:58", 17.26659, -61.74933], + ["2020-02-02T23:36:09", 17.26929, -61.75107], + ["2020-02-03T10:05:40", 17.29947, -61.75565], + ["2020-02-03T17:32:30", 17.3092, -61.77972], + ["2020-02-03T21:03:20", 17.32189, -61.80368], + ["2020-02-03T21:29:43", 17.32388, -61.80688], + ["2020-02-04T02:30:36", 17.33385, -61.83212], + ["2020-02-04T08:27:09", 17.3292, -61.86377], + ["2020-02-05T00:51:11", 17.37559, -61.98996], + ["2020-02-05T15:20:23", 17.38342, -62.06476], + ["2020-02-05T16:48:45", 17.3829, -62.07712], + ["2020-02-06T00:17:15", 17.41595, -62.13461], + ["2020-02-06T02:16:59", 17.41138, -62.1391], + ["2020-02-06T07:41:04", 17.42225, -62.1745], + ["2020-02-06T13:39:35", 17.44459, -62.20639], + ["2020-02-06T19:07:58", 17.47272, -62.24915], + ["2020-02-06T20:37:29", 17.48936, -62.25369], + ["2020-02-07T02:05:55", 17.49916, -62.27481], + ["2020-02-07T06:04:21", 17.51351, -62.31042], + ["2020-02-07T06:34:21", 17.519, -62.31463], + ["2020-02-07T07:04:21", 17.52402, -62.31763], + ["2020-02-07T13:05:34", 17.56157, -62.35056], + ["2020-02-07T13:35:56", 17.56156, -62.35343], + ["2020-02-07T14:05:56", 17.5619, -62.35721], + ["2020-02-07T22:02:12", 17.60435, -62.39572], + ["2020-02-08T00:28:44", 17.59516, -62.41849], + ["2020-02-08T00:59:29", 17.59387, -62.42483], + ["2020-02-08T01:29:29", 17.5931, -62.43161], + ["2020-02-08T12:55:02", 17.59235, -62.54532], + ["2020-02-09T04:23:41", 17.6343, -62.69318], + ["2020-02-09T06:21:16", 17.63784, -62.69921], + ["2020-02-09T06:51:16", 17.63848, -62.70178], + ["2020-02-09T07:21:16", 17.63938, -62.70538], + ["2020-02-09T07:49:26", 17.64002, -62.70881], + ["2020-02-09T08:19:26", 17.64058, -62.71353], + ["2020-02-09T08:49:26", 17.64071, -62.71765], + ["2020-02-09T12:21:42", 17.64943, -62.74771], + ["2020-02-09T13:47:36", 17.65048, -62.75568], + ["2020-02-10T06:45:31", 17.70886, -62.9003], + ["2020-02-11T03:10:26", 17.77144, -63.06195], + ["2020-02-11T03:36:36", 17.77441, -63.06607], + ["2020-02-11T04:06:33", 17.77733, -63.07037], + ["2020-02-11T06:07:31", 17.78802, -63.08908], + ["2020-02-11T07:38:00", 17.78971, -63.10501], + ["2020-02-11T08:05:33", 17.79, -63.10999], + ["2020-02-11T08:35:33", 17.78987, -63.11548], + ["2020-02-11T09:37:42", 17.78856, -63.13261], + ["2020-02-11T10:37:42", 17.78732, -63.13776], + ["2020-02-11T11:04:59", 17.78777, -63.14288], + ["2020-02-11T11:34:48", 17.78843, -63.14816], + ["2020-02-11T21:02:06", 17.81518, -63.26093], + ["2020-02-12T00:31:24", 17.82883, -63.31351], + ["2020-02-12T01:01:24", 17.83291, -63.32192], + ["2020-02-12T01:31:24", 17.83651, -63.32861], + ["2020-02-12T02:01:15", 17.84053, -63.33557], + ["2020-02-12T02:30:43", 17.84436, -63.34167], + ["2020-02-12T03:00:43", 17.84766, -63.34716], + ["2020-02-12T03:30:43", 17.85028, -63.35214], + ["2020-02-12T07:01:29", 17.85401, -63.37585], + ["2020-02-12T19:26:11", 17.85469, -63.5144], + ["2020-02-12T20:25:36", 17.85686, -63.52559], + ["2020-02-12T20:55:36", 17.85793, -63.52971], + ["2020-02-12T21:25:36", 17.85883, -63.53366], + ["2020-02-12T22:25:20", 17.86057, -63.54244], + ["2020-02-12T22:55:20", 17.86096, -63.54596], + ["2020-02-13T00:56:05", 17.86256, -63.56255], + ["2020-02-13T01:26:05", 17.86256, -63.5665], + ["2020-02-13T01:56:05", 17.8635, -63.57062], + ["2020-02-13T02:24:11", 17.86434, -63.57416], + ["2020-02-13T05:56:38", 17.8684, -63.60373], + ["2020-02-13T09:54:35", 17.85902, -63.63937], + ["2020-02-13T11:23:54", 17.85642, -63.65475], + ["2020-02-13T16:20:40", 17.85074, -63.70105], + ["2020-02-13T16:50:27", 17.85094, -63.70543], + ["2020-02-13T17:20:27", 17.85115, -63.70929], + ["2020-02-13T17:49:55", 17.85134, -63.71307], + ["2020-02-13T19:19:14", 17.85294, -63.72626], + ["2020-02-13T19:49:14", 17.85294, -63.73004], + ["2020-02-13T20:21:29", 17.85274, -63.73439], + ["2020-02-13T20:51:29", 17.85317, -63.73877], + ["2020-02-13T22:20:26", 17.85385, -63.75241], + ["2020-02-14T04:19:13", 17.87782, -63.80469], + ["2020-02-14T04:46:53", 17.8793, -63.80905], + ["2020-02-14T06:16:02", 17.87891, -63.82431], + ["2020-02-14T06:46:02", 17.87822, -63.82834], + ["2020-02-14T07:15:55", 17.87722, -63.83264], + ["2020-02-14T09:47:30", 17.86935, -63.85338], + ["2020-02-14T10:17:30", 17.86853, -63.85698], + ["2020-02-14T10:47:30", 17.86759, -63.8605], + ["2020-02-14T11:16:42", 17.86671, -63.86426], + ["2020-02-14T11:46:42", 17.86585, -63.86812], + ["2020-02-14T12:16:42", 17.86508, -63.87207], + ["2020-02-14T15:17:00", 17.86814, -63.89957], + ["2020-02-15T06:40:02", 17.88503, -64.03992], + ["2020-02-15T07:09:43", 17.88524, -64.04482], + ["2020-02-15T07:39:43", 17.88588, -64.04868], + ["2020-02-15T09:10:41", 17.88612, -64.06492], + ["2020-02-15T09:40:41", 17.88526, -64.06964], + ["2020-02-15T10:10:41", 17.88483, -64.07419], + ["2020-02-15T11:08:18", 17.88503, -64.08264], + ["2020-02-15T12:38:00", 17.8841, -64.09542], + ["2020-02-15T13:08:00", 17.88453, -64.0986], + ["2020-02-15T13:38:00", 17.8847, -64.10144], + ["2020-02-15T21:38:41", 17.91366, -64.14258], + ["2020-02-16T03:04:41", 17.93533, -64.16598], + ["2020-02-16T07:06:43", 17.96149, -64.17859], + ["2020-02-16T07:33:24", 17.96379, -64.1795], + ["2020-02-16T08:03:24", 17.96555, -64.18002], + ["2020-02-16T08:33:09", 17.96703, -64.18071], + ["2020-02-16T09:03:09", 17.96879, -64.18115], + ["2020-02-16T10:32:38", 17.97376, -64.18478], + ["2020-02-16T14:01:55", 17.98871, -64.19177], + ["2020-02-17T03:28:20", 18.02044, -64.26218], + ["2020-02-17T07:30:00", 18.03526, -64.26806], + ["2020-02-17T15:58:12", 18.01176, -64.30629], + ["2020-02-17T18:24:46", 18.01126, -64.32071], + ["2020-02-17T18:54:46", 18.01117, -64.32346], + ["2020-02-24T00:13:02", 17.9202, -65.17901], + ["2020-02-24T00:41:50", 17.91904, -65.17737], + ["2020-02-24T01:13:13", 17.91755, -65.1756], + ["2020-02-24T01:41:25", 17.91595, -65.17398], + ["2020-02-24T02:41:06", 17.91057, -65.17117], + ["2020-02-24T03:10:50", 17.90805, -65.17062], + ["2020-02-24T03:40:50", 17.9056, -65.17062], + ["2020-02-24T04:11:10", 17.90222, -65.17108], + ["2020-02-24T04:40:30", 17.89872, -65.17236], + ["2020-02-24T05:10:58", 17.89473, -65.1744], + ["2020-02-24T05:40:39", 17.89095, -65.17725], + ["2020-02-24T06:10:39", 17.8873, -65.18085], + ["2020-02-24T06:40:29", 17.88447, -65.18483], + ["2020-02-24T07:10:29", 17.88198, -65.18921], + ["2020-02-24T07:39:52", 17.87959, -65.1937], + ["2020-02-24T08:09:37", 17.87744, -65.19806], + ["2020-02-24T08:39:37", 17.87602, -65.20218], + ["2020-02-24T09:39:32", 17.87395, -65.21048], + ["2020-02-24T10:09:20", 17.87317, -65.21397], + ["2020-02-24T10:39:20", 17.87197, -65.21732], + ["2020-02-24T11:09:39", 17.87081, -65.22046], + ["2020-02-24T11:39:28", 17.86931, -65.22338], + ["2020-02-24T12:09:28", 17.86755, -65.22571], + ["2020-02-24T12:38:54", 17.86568, -65.22799], + ["2020-02-24T15:08:53", 17.85112, -65.24447], + ["2020-02-24T15:38:53", 17.84824, -65.24833], + ["2020-02-24T16:08:53", 17.84489, -65.25305], + ["2020-02-24T16:38:29", 17.84131, -65.2578], + ["2020-02-24T17:08:29", 17.83758, -65.26321], + ["2020-02-24T17:38:26", 17.83416, -65.26895], + ["2020-02-24T18:08:26", 17.83146, -65.27539], + ["2020-02-24T18:18:08", 17.83062, -65.27768], + ["2020-02-24T18:38:28", 17.82852, -65.28234], + ["2020-02-24T19:08:28", 17.82603, -65.28903], + ["2020-02-24T19:37:28", 17.82417, -65.29572], + ["2020-02-24T22:08:13", 17.81012, -65.33096], + ["2020-02-24T22:38:13", 17.80677, -65.33681], + ["2020-02-24T23:08:13", 17.80334, -65.3429], + ["2020-02-25T02:06:04", 17.78093, -65.38373], + ["2020-02-25T02:37:28", 17.77629, -65.39203], + ["2020-02-25T03:05:49", 17.77221, -65.39966], + ["2020-02-25T04:35:02", 17.76306, -65.42515], + ["2020-02-25T05:05:02", 17.76001, -65.43407], + ["2020-02-25T05:35:02", 17.75756, -65.44223], + ["2020-02-25T06:04:41", 17.755, -65.45144], + ["2020-02-25T06:34:41", 17.75277, -65.45909], + ["2020-02-25T07:04:41", 17.75075, -65.4675], + ["2020-02-25T09:07:57", 17.73845, -65.49799], + ["2020-02-25T11:33:24", 17.72379, -65.5322], + ["2020-02-25T12:33:21", 17.71949, -65.54626], + ["2020-02-25T13:32:26", 17.71491, -65.55941], + ["2020-02-25T14:02:26", 17.7107, -65.56516], + ["2020-02-25T14:32:26", 17.70302, -65.5722], + ["2020-02-25T15:03:11", 17.69406, -65.57993], + ["2020-02-25T15:32:20", 17.68489, -65.58795], + ["2020-02-25T16:01:51", 17.67535, -65.59725], + ["2020-02-25T16:31:51", 17.66591, -65.60532], + ["2020-02-25T17:02:09", 17.65573, -65.61395], + ["2020-02-25T17:31:37", 17.64582, -65.62282], + ["2020-02-25T18:02:05", 17.63573, -65.63235], + ["2020-02-25T18:18:13", 17.63035, -65.63754], + ["2020-02-25T18:31:25", 17.62621, -65.64178], + ["2020-02-25T19:01:41", 17.61647, -65.65131], + ["2020-02-25T19:31:03", 17.60669, -65.66135], + ["2020-02-25T20:01:27", 17.59658, -65.67249], + ["2020-02-25T20:30:42", 17.58679, -65.68369], + ["2020-02-25T21:00:57", 17.57721, -65.69501], + ["2020-02-25T21:30:33", 17.56881, -65.70523], + ["2020-02-25T22:01:00", 17.5604, -65.71581], + ["2020-02-25T22:30:21", 17.55256, -65.72635], + ["2020-02-25T23:00:41", 17.54455, -65.73727], + ["2020-02-25T23:30:04", 17.53626, -65.74841], + ["2020-02-26T00:00:30", 17.52718, -65.75951], + ["2020-02-26T00:29:56", 17.51837, -65.76978], + ["2020-02-26T01:00:41", 17.50961, -65.78043], + ["2020-02-26T01:29:53", 17.50267, -65.78922], + ["2020-02-26T02:00:58", 17.49496, -65.79926], + ["2020-02-26T02:29:40", 17.48854, -65.80822], + ["2020-02-26T02:59:57", 17.483, -65.8172], + ["2020-02-26T04:59:09", 17.4694, -65.84936], + ["2020-02-26T05:29:09", 17.46665, -65.85683], + ["2020-02-26T05:59:09", 17.46425, -65.86404], + ["2020-02-26T06:28:33", 17.46236, -65.87079], + ["2020-02-26T06:58:12", 17.46011, -65.8779], + ["2020-02-26T07:28:12", 17.45805, -65.88424], + ["2020-02-26T07:57:46", 17.45584, -65.89109], + ["2020-02-26T08:27:46", 17.45339, -65.89771], + ["2020-02-26T08:57:28", 17.45082, -65.90501], + ["2020-02-26T09:27:28", 17.44842, -65.91195], + ["2020-02-26T09:58:04", 17.44582, -65.91943], + ["2020-02-26T10:27:22", 17.44333, -65.92673], + ["2020-02-26T10:57:45", 17.44116, -65.93445], + ["2020-02-26T14:26:16", 17.41835, -65.97995], + ["2020-02-26T15:25:45", 17.41142, -65.99285], + ["2020-02-26T15:55:45", 17.40773, -66.00057], + ["2020-02-26T16:25:45", 17.40455, -66.00726], + ["2020-02-26T16:56:13", 17.40096, -66.01428], + ["2020-02-26T17:25:32", 17.39755, -66.02109], + ["2020-02-26T17:48:31", 17.39153, -66.03206], + ["2020-02-26T18:18:31", 17.39063, -66.0336], + ["2020-02-26T18:25:17", 17.38974, -66.03522], + ["2020-02-26T18:55:28", 17.38595, -66.04267], + ["2020-02-26T19:24:55", 17.38211, -66.0491], + ["2020-02-26T19:55:28", 17.37797, -66.05562], + ["2020-02-26T20:26:30", 17.37351, -66.0618], + ["2020-02-26T20:56:30", 17.3684, -66.06824], + ["2020-02-26T23:26:31", 17.34008, -66.09708], + ["2020-02-27T02:22:56", 17.29979, -66.12719], + ["2020-02-27T02:52:56", 17.29331, -66.13208], + ["2020-02-27T04:22:30", 17.27522, -66.14935], + ["2020-02-27T04:52:04", 17.26994, -66.15579], + ["2020-02-27T05:24:27", 17.26422, -66.16262], + ["2020-02-27T05:52:04", 17.25883, -66.16824], + ["2020-02-27T10:50:38", 17.20237, -66.22357], + ["2020-02-27T11:20:38", 17.19696, -66.2282], + ["2020-02-27T11:50:38", 17.19125, -66.23309], + ["2020-02-27T13:20:12", 17.17563, -66.24872], + ["2020-02-27T13:53:28", 17.17026, -66.25467], + ["2020-02-27T15:49:29", 17.1524, -66.27527], + ["2020-02-27T16:50:34", 17.14489, -66.28583], + ["2020-02-27T19:18:28", 17.12473, -66.3129], + ["2020-02-27T19:50:00", 17.11699, -66.32773], + ["2020-02-27T20:50:00", 17.11308, -66.33417], + ["2020-02-27T22:49:59", 17.10072, -66.36114], + ["2020-02-27T23:19:59", 17.09763, -66.36733], + ["2020-02-27T23:49:59", 17.09398, -66.37454], + ["2020-02-28T00:17:11", 17.09077, -66.38104], + ["2020-02-28T01:18:30", 17.08325, -66.39572], + ["2020-02-28T01:46:24", 17.08006, -66.40215], + ["2020-02-28T02:16:24", 17.07714, -66.40928], + ["2020-02-28T02:46:24", 17.07461, -66.41623], + ["2020-02-28T03:16:59", 17.07131, -66.4241], + ["2020-02-28T03:46:05", 17.06858, -66.43146], + ["2020-02-28T04:16:41", 17.06527, -66.43921], + ["2020-02-28T04:46:35", 17.06168, -66.44678], + ["2020-02-28T05:17:37", 17.05781, -66.45468], + ["2020-02-28T05:45:25", 17.05361, -66.4616], + ["2020-02-28T06:15:03", 17.0492, -66.46944], + ["2020-02-28T06:45:41", 17.04507, -66.47732], + ["2020-02-28T07:15:03", 17.04122, -66.48488], + ["2020-02-28T07:46:02", 17.03766, -66.49303], + ["2020-02-28T08:14:46", 17.03409, -66.50085], + ["2020-02-28T08:45:13", 17.03044, -66.5094], + ["2020-02-28T09:14:47", 17.02755, -66.51833], + ["2020-02-28T09:45:05", 17.02435, -66.52685], + ["2020-02-28T10:15:05", 17.02139, -66.53492], + ["2020-02-28T10:45:05", 17.01817, -66.54282], + ["2020-02-28T11:14:14", 17.01447, -66.55045], + ["2020-02-28T11:45:17", 17.01155, -66.55856], + ["2020-02-28T12:13:50", 17.00871, -66.56561], + ["2020-02-28T12:44:32", 17.00616, -66.57321], + ["2020-02-28T13:13:54", 17.00432, -66.58085], + ["2020-02-28T13:43:54", 17.00217, -66.58926], + ["2020-02-28T17:13:33", 16.98462, -66.66395], + ["2020-02-28T17:43:33", 16.9826, -66.67468], + ["2020-02-28T18:13:33", 16.98256, -66.67554], + ["2020-02-28T18:17:40", 16.98231, -66.67703], + ["2020-02-28T18:42:19", 16.98065, -66.68655], + ["2020-02-28T19:12:02", 16.97805, -66.69825], + ["2020-02-28T19:42:02", 16.97552, -66.70889], + ["2020-02-28T20:12:27", 16.97289, -66.72009], + ["2020-02-28T22:43:00", 16.96372, -66.77746], + ["2020-02-28T23:12:59", 16.96321, -66.78843], + ["2020-02-28T23:42:59", 16.963, -66.80054], + ["2020-02-29T00:40:36", 16.96322, -66.82353], + ["2020-02-29T01:10:36", 16.96322, -66.83401], + ["2020-02-29T01:40:36", 16.96283, -66.84524], + ["2020-02-29T02:10:57", 16.96209, -66.85706], + ["2020-02-29T07:39:41", 16.95627, -66.99097], + ["2020-02-29T09:08:07", 16.94907, -67.02012], + ["2020-02-29T09:38:07", 16.94641, -67.0293], + ["2020-02-29T10:08:07", 16.94392, -67.03754], + ["2020-02-29T10:38:37", 16.94178, -67.0462], + ["2020-02-29T11:08:01", 16.93936, -67.0545], + ["2020-02-29T11:37:48", 16.93717, -67.06303], + ["2020-02-29T12:07:48", 16.93447, -67.07153], + ["2020-02-29T16:06:15", 16.92367, -67.14438], + ["2020-02-29T16:36:26", 16.92394, -67.15558], + ["2020-02-29T17:06:10", 16.92419, -67.16536], + ["2020-02-29T17:36:10", 16.92329, -67.17162], + ["2020-02-29T18:05:24", 16.92079, -67.17847], + ["2020-02-29T18:35:24", 16.91946, -67.18138], + ["2020-02-29T19:05:24", 16.91658, -67.18585], + ["2020-02-29T21:05:10", 16.90334, -67.20775], + ["2020-02-29T23:37:13", 16.88458, -67.24393], + ["2020-03-01T11:01:25", 16.84472, -67.39807], + ["2020-03-01T15:00:09", 16.82819, -67.45627], + ["2020-03-01T18:00:28", 16.82155, -67.51053], + ["2020-03-01T18:29:42", 16.82041, -67.52051], + ["2020-03-01T18:59:42", 16.82007, -67.53167], + ["2020-03-01T19:29:42", 16.81951, -67.54076], + ["2020-03-01T20:30:05", 16.81849, -67.56076], + ["2020-03-01T21:59:18", 16.81652, -67.58859], + ["2020-03-01T22:59:04", 16.81498, -67.60654], + ["2020-03-02T16:25:28", 16.87819, -67.86362], + ["2020-03-02T17:56:26", 16.88707, -67.88876], + ["2020-03-02T18:57:30", 16.89167, -67.90407], + ["2020-03-02T20:24:48", 16.90056, -67.92645], + ["2020-03-02T20:54:48", 16.90313, -67.93297], + ["2020-03-02T21:24:48", 16.90729, -67.94052], + ["2020-03-03T03:54:43", 16.9722, -68.00922], + ["2020-03-03T04:22:22", 16.97679, -68.0133], + ["2020-03-03T04:52:22", 16.98074, -68.01639], + ["2020-03-03T05:53:11", 16.98654, -68.02521], + ["2020-03-03T06:53:12", 16.98865, -68.03545], + ["2020-03-03T07:23:12", 16.99015, -68.04017], + ["2020-03-03T07:53:12", 16.99208, -68.04575], + ["2020-03-03T08:21:19", 16.99355, -68.05112], + ["2020-03-03T09:50:49", 17.00191, -68.06856], + ["2020-03-03T10:20:36", 17.00651, -68.07456], + ["2020-03-03T10:50:36", 17.01089, -68.08014], + ["2020-03-03T11:21:29", 17.01552, -68.0862], + ["2020-03-03T11:50:41", 17.02021, -68.09121], + ["2020-03-03T12:20:41", 17.02553, -68.0961], + ["2020-03-03T14:18:54", 17.04614, -68.11423], + ["2020-03-03T14:48:54", 17.05052, -68.11852], + ["2020-03-03T15:18:54", 17.0549, -68.12341], + ["2020-03-03T17:47:49", 17.0784, -68.15569], + ["2020-03-03T18:17:59", 17.07959, -68.15723], + ["2020-03-03T18:47:49", 17.08466, -68.16367], + ["2020-03-03T19:17:21", 17.0903, -68.17107], + ["2020-03-03T19:47:21", 17.09554, -68.17776], + ["2020-03-03T20:17:21", 17.10185, -68.18497], + ["2020-03-03T20:47:33", 17.10748, -68.19275], + ["2020-03-03T21:16:54", 17.11268, -68.19983], + ["2020-03-03T21:47:59", 17.11843, -68.20708], + ["2020-03-03T22:16:32", 17.12404, -68.2132], + ["2020-03-03T22:48:29", 17.12985, -68.22], + ["2020-03-03T23:16:29", 17.13469, -68.22543], + ["2020-03-04T02:15:36", 17.17168, -68.25241], + ["2020-03-04T02:45:14", 17.17915, -68.25708], + ["2020-03-04T03:15:14", 17.18743, -68.26163], + ["2020-03-04T03:45:14", 17.19511, -68.26678], + ["2020-03-04T12:44:03", 17.29622, -68.3461], + ["2020-03-04T13:13:22", 17.30159, -68.34802], + ["2020-03-04T13:43:22", 17.30708, -68.34914], + ["2020-03-05T14:39:41", 17.50061, -68.44022], + ["2020-03-06T18:03:50", 17.86199, -68.55185], + ["2020-03-07T06:00:49", 17.94512, -68.67007], + ["2020-03-07T20:28:12", 17.90629, -68.70944], + ["2020-03-07T20:56:38", 17.90707, -68.7135], + ["2020-03-07T22:56:02", 17.9085, -68.72817], + ["2020-03-08T03:56:34", 17.90087, -68.75317], + ["2020-03-08T04:24:56", 17.8996, -68.75388], + ["2020-03-08T06:57:05", 17.8902, -68.75599], + ["2020-03-08T07:27:05", 17.88771, -68.75693], + ["2020-03-08T07:57:05", 17.88531, -68.7583], + ["2020-03-08T08:23:52", 17.88252, -68.759], + ["2020-03-08T08:53:44", 17.87859, -68.75964], + ["2020-03-08T11:23:06", 17.85572, -68.76208], + ["2020-03-08T13:25:25", 17.8316, -68.76105], + ["2020-03-08T20:20:25", 17.75923, -68.80141], + ["2020-03-08T21:20:17", 17.74757, -68.80826], + ["2020-03-08T22:49:54", 17.72561, -68.82117], + ["2020-03-08T23:51:37", 17.70545, -68.83367], + ["2020-03-09T00:21:37", 17.69674, -68.84019], + ["2020-03-09T00:51:37", 17.68593, -68.8486], + ["2020-03-09T01:20:28", 17.67721, -68.85711], + ["2020-03-09T01:50:28", 17.66755, -68.86647], + ["2020-03-09T02:20:28", 17.65811, -68.87676], + ["2020-03-09T02:49:59", 17.64878, -68.88624], + ["2020-03-09T03:19:59", 17.63968, -68.89783], + ["2020-03-09T03:48:44", 17.63208, -68.90875], + ["2020-03-09T06:18:05", 17.59282, -68.96035], + ["2020-03-09T06:49:59", 17.58457, -68.97125], + ["2020-03-09T07:19:02", 17.57757, -68.98058], + ["2020-03-09T07:47:36", 17.57024, -68.99036], + ["2020-03-09T08:19:02", 17.56178, -69.0004], + ["2020-03-09T09:46:50", 17.54114, -69.02951], + ["2020-03-09T10:16:28", 17.5335, -69.03939], + ["2020-03-09T10:46:28", 17.52578, -69.04746], + ["2020-03-09T11:16:28", 17.5187, -69.0562], + ["2020-03-09T14:45:38", 17.46932, -69.10715], + ["2020-03-09T16:14:54", 17.44652, -69.12739], + ["2020-03-09T16:44:54", 17.44008, -69.13391], + ["2020-03-09T17:14:54", 17.43373, -69.14069], + ["2020-03-09T17:44:42", 17.4216, -69.15485], + ["2020-03-09T18:14:42", 17.42053, -69.15588], + ["2020-03-09T18:16:09", 17.42023, -69.15616], + ["2020-03-09T22:13:42", 17.3662, -69.22314], + ["2020-03-09T23:16:02", 17.35138, -69.24444], + ["2020-03-10T00:16:02", 17.34572, -69.25165], + ["2020-03-10T12:39:18", 17.22865, -69.28046], + ["2020-03-10T15:38:19", 17.19518, -69.28106], + ["2020-03-10T16:08:19", 17.1899, -69.28149], + ["2020-03-10T16:38:19", 17.18514, -69.28149], + ["2020-03-10T20:37:25", 17.14777, -69.28452], + ["2020-03-10T22:37:02", 17.12816, -69.29639], + ["2020-03-11T00:09:40", 17.11544, -69.30664], + ["2020-03-11T04:35:21", 17.0892, -69.34247], + ["2020-03-11T14:32:32", 17.0907, -69.38205], + ["2020-03-11T15:02:40", 17.09255, -69.38467], + ["2020-03-11T16:05:42", 17.09831, -69.388], + ["2020-03-11T16:35:42", 17.10088, -69.388], + ["2020-03-11T17:05:42", 17.10539, -69.38715], + ["2020-03-11T17:31:52", 17.10858, -69.38607], + ["2020-03-11T18:01:52", 17.11184, -69.38495], + ["2020-03-11T20:31:05", 17.12135, -69.37752], + ["2020-03-11T21:01:05", 17.12238, -69.37555], + ["2020-03-11T21:31:05", 17.12341, -69.37366], + ["2020-03-11T22:33:16", 17.12416, -69.36901], + ["2020-03-11T23:03:16", 17.12446, -69.36686], + ["2020-03-11T23:33:16", 17.12412, -69.3642], + ["2020-03-12T00:01:45", 17.1231, -69.36197], + ["2020-03-12T00:31:45", 17.12164, -69.35965], + ["2020-03-12T01:01:45", 17.11958, -69.35733], + ["2020-03-12T01:29:26", 17.11683, -69.35545], + ["2020-03-12T01:59:26", 17.11365, -69.35348], + ["2020-03-12T03:30:04", 17.10437, -69.34685], + ["2020-03-12T04:00:04", 17.10141, -69.3447], + ["2020-03-12T04:30:04", 17.09819, -69.34213], + ["2020-03-12T08:29:35", 17.0645, -69.31268], + ["2020-03-12T09:27:08", 17.05414, -69.30412], + ["2020-03-12T09:57:08", 17.05041, -69.30146], + ["2020-03-12T10:27:08", 17.0459, -69.2988], + ["2020-03-12T13:26:15", 17.02059, -69.28514], + ["2020-03-12T13:56:15", 17.01746, -69.28445], + ["2020-03-12T14:26:15", 17.01407, -69.28394], + ["2020-03-12T14:56:59", 17.01016, -69.28357], + ["2020-03-12T16:55:02", 16.99842, -69.27921], + ["2020-03-12T17:27:30", 16.99561, -69.27725], + ["2020-03-12T17:55:02", 16.9934, -69.2757], + ["2020-03-12T18:25:18", 16.98621, -69.26958], + ["2020-03-12T19:25:18", 16.98501, -69.26864], + ["2020-03-12T21:53:45", 16.97478, -69.26214], + ["2020-03-12T22:23:45", 16.97319, -69.26137], + ["2020-03-12T22:53:45", 16.97165, -69.26085], + ["2020-03-13T03:52:30", 16.95203, -69.24854], + ["2020-03-13T07:21:21", 16.93603, -69.22668], + ["2020-03-13T07:50:58", 16.93212, -69.22508], + ["2020-03-13T08:20:58", 16.9286, -69.22439], + ["2020-03-13T08:50:58", 16.92603, -69.22345], + ["2020-03-13T09:20:44", 16.9237, -69.22221], + ["2020-03-13T09:50:44", 16.92194, -69.22101], + ["2020-03-13T10:20:29", 16.92028, -69.21965], + ["2020-03-13T10:50:29", 16.91882, -69.21802], + ["2020-03-13T14:18:58", 16.90883, -69.1953], + ["2020-03-13T14:48:58", 16.90608, -69.19152], + ["2020-03-13T15:18:58", 16.90316, -69.18859], + ["2020-03-13T17:12:19", 16.88802, -69.17109], + ["2020-03-13T17:42:19", 16.88678, -69.17006], + ["2020-03-13T18:12:19", 16.88614, -69.16946], + ["2020-03-13T20:17:44", 16.8697, -69.16258], + ["2020-03-13T20:47:44", 16.86575, -69.16137], + ["2020-03-13T21:17:44", 16.8624, -69.16052], + ["2020-03-13T21:48:00", 16.85872, -69.15983], + ["2020-03-13T22:18:00", 16.85494, -69.15897], + ["2020-03-13T23:47:51", 16.84251, -69.15273], + ["2020-03-14T00:17:51", 16.83839, -69.14999], + ["2020-03-14T00:47:51", 16.83376, -69.14716], + ["2020-03-14T01:15:39", 16.82975, -69.14397], + ["2020-03-14T01:47:48", 16.82673, -69.14145], + ["2020-03-14T02:15:39", 16.82387, -69.13925], + ["2020-03-14T02:45:29", 16.82052, -69.13672], + ["2020-03-14T04:15:08", 16.80878, -69.12775], + ["2020-03-14T06:16:27", 16.79203, -69.11578], + ["2020-03-14T09:15:31", 16.7596, -69.10157], + ["2020-03-14T09:43:31", 16.75283, -69.09963], + ["2020-03-14T10:15:31", 16.74475, -69.09711], + ["2020-03-14T14:45:59", 16.67843, -69.08945], + ["2020-03-14T15:15:48", 16.67327, -69.08848], + ["2020-03-14T15:45:48", 16.66692, -69.08754], + ["2020-03-14T16:15:48", 16.66031, -69.08728], + ["2020-03-14T16:45:39", 16.65483, -69.08713], + ["2020-03-15T08:41:14", 16.46357, -69.14785], + ["2020-03-15T18:35:50", 16.37043, -69.18994], + ["2020-03-15T21:05:08", 16.34216, -69.20953], + ["2020-03-15T22:04:53", 16.33294, -69.21572], + ["2020-03-15T23:37:56", 16.32044, -69.22499], + ["2020-03-16T00:07:56", 16.31692, -69.22817], + ["2020-03-16T00:37:56", 16.31203, -69.23135], + ["2020-03-16T03:03:33", 16.29912, -69.2439], + ["2020-03-16T03:33:29", 16.29671, -69.24657], + ["2020-03-16T13:00:26", 16.19632, -69.29595], + ["2020-03-16T14:29:54", 16.18449, -69.30886], + ["2020-03-16T14:59:54", 16.1811, -69.31264], + ["2020-03-16T15:29:54", 16.17797, -69.31616], + ["2020-03-16T18:59:10", 16.15255, -69.34146], + ["2020-03-16T19:31:30", 16.14772, -69.34531], + ["2020-03-16T19:58:51", 16.14363, -69.34918], + ["2020-03-16T22:28:15", 16.11635, -69.3672], + ["2020-03-16T22:58:15", 16.11056, -69.37157], + ["2020-03-16T23:28:15", 16.1052, -69.37604], + ["2020-03-16T23:59:23", 16.10023, -69.38118], + ["2020-03-17T00:29:23", 16.09585, -69.38607], + ["2020-03-17T00:59:23", 16.09126, -69.39148], + ["2020-03-17T01:27:36", 16.08735, -69.39685], + ["2020-03-17T01:56:49", 16.084, -69.40297], + ["2020-03-17T02:26:49", 16.0804, -69.40898], + ["2020-03-17T02:56:49", 16.07761, -69.41473], + ["2020-03-17T06:27:59", 16.05407, -69.46222], + ["2020-03-17T06:55:07", 16.05276, -69.46742], + ["2020-03-17T07:25:07", 16.05079, -69.4718], + ["2020-03-17T09:25:58", 16.04377, -69.48828], + ["2020-03-17T09:54:19", 16.04224, -69.49249], + ["2020-03-17T11:23:23", 16.03538, -69.50568], + ["2020-03-17T11:53:23", 16.03246, -69.50894], + ["2020-03-17T12:23:23", 16.02907, -69.51297], + ["2020-03-17T14:24:10", 16.01782, -69.53185], + ["2020-03-17T14:56:00", 16.01545, -69.54572], + ["2020-03-17T15:56:00", 16.01442, -69.5513], + ["2020-03-17T16:52:31", 16.01157, -69.5642], + ["2020-03-17T17:22:31", 16.0099, -69.57201], + ["2020-03-17T17:52:31", 16.00866, -69.57913], + ["2020-03-18T03:20:01", 15.99551, -69.68463], + ["2020-03-18T05:49:24", 15.98215, -69.70502], + ["2020-03-18T06:49:18", 15.97485, -69.71567], + ["2020-03-18T12:17:25", 15.94663, -69.79971], + ["2020-03-18T12:49:27", 15.94428, -69.80637], + ["2020-03-18T13:47:01", 15.94288, -69.81838], + ["2020-03-18T15:15:53", 15.94017, -69.83687], + ["2020-03-18T15:45:53", 15.93948, -69.84184], + ["2020-03-18T16:15:53", 15.93871, -69.84683], + ["2020-03-18T17:48:12", 15.93089, -69.86821], + ["2020-03-18T18:48:12", 15.92892, -69.87302], + ["2020-03-18T21:16:21", 15.92493, -69.90828], + ["2020-03-18T21:44:09", 15.92565, -69.91558], + ["2020-03-18T23:15:20", 15.92698, -69.93973], + ["2020-03-18T23:45:20", 15.92651, -69.94823], + ["2020-03-19T00:15:20", 15.92664, -69.95724], + ["2020-03-19T01:44:00", 15.92677, -69.98054], + ["2020-03-19T02:14:00", 15.92668, -69.98707], + ["2020-03-19T02:44:00", 15.92719, -69.99368], + ["2020-03-19T03:45:29", 15.92736, -70.00717], + ["2020-03-19T04:42:07", 15.92788, -70.01889], + ["2020-03-19T06:11:25", 15.92953, -70.03543], + ["2020-03-19T07:12:29", 15.93071, -70.04373], + ["2020-03-19T07:42:29", 15.93114, -70.04904], + ["2020-03-19T08:12:29", 15.93118, -70.05334], + ["2020-03-19T12:12:29", 15.93601, -70.09644], + ["2020-03-19T18:02:56", 15.96659, -70.15741], + ["2020-03-19T19:09:29", 15.97382, -70.16986], + ["2020-03-19T19:39:29", 15.97665, -70.17484], + ["2020-03-19T20:09:29", 15.97953, -70.18042], + ["2020-03-20T00:38:04", 16.01262, -70.21262], + ["2020-03-20T01:06:59", 16.01577, -70.21523], + ["2020-03-20T01:36:59", 16.0189, -70.21798], + ["2020-03-20T02:06:59", 16.02229, -70.22055], + ["2020-03-20T02:36:01", 16.02569, -70.22302], + ["2020-03-20T03:07:00", 16.0283, -70.2261], + ["2020-03-20T14:32:43", 16.08405, -70.2994], + ["2020-03-20T16:03:34", 16.09395, -70.30619], + ["2020-03-20T16:33:34", 16.09717, -70.30859], + ["2020-03-20T17:03:34", 16.09953, -70.31116], + ["2020-03-20T18:03:40", 16.10403, -70.31775], + ["2020-03-20T20:31:03", 16.11689, -70.34113], + ["2020-03-21T01:59:35", 16.15889, -70.38336], + ["2020-03-21T07:58:52", 16.20312, -70.42037], + ["2020-03-21T08:27:29", 16.20512, -70.42346], + ["2020-03-21T08:59:04", 16.20828, -70.42761], + ["2020-03-21T09:26:58", 16.21099, -70.43104], + ["2020-03-21T09:56:58", 16.21296, -70.43396], + ["2020-03-21T12:30:02", 16.23489, -70.44833], + ["2020-03-21T12:57:11", 16.23882, -70.45038], + ["2020-03-21T13:27:11", 16.24294, -70.45192], + ["2020-03-21T13:57:11", 16.24685, -70.45398], + ["2020-03-21T14:27:14", 16.25044, -70.45621], + ["2020-03-21T14:57:14", 16.25452, -70.45844], + ["2020-03-21T16:26:28", 16.26883, -70.46595], + ["2020-03-21T16:56:28", 16.27312, -70.46904], + ["2020-03-21T17:26:28", 16.27758, -70.4729], + ["2020-03-21T19:25:25", 16.29372, -70.49011], + ["2020-03-21T19:55:25", 16.29758, -70.49491], + ["2020-03-21T20:25:25", 16.30217, -70.50024], + ["2020-03-21T23:52:37", 16.33335, -70.52728], + ["2020-03-22T00:22:08", 16.3372, -70.53051], + ["2020-03-22T00:52:08", 16.34085, -70.53291], + ["2020-03-22T01:22:08", 16.34424, -70.53497], + ["2020-03-22T04:51:13", 16.36485, -70.55707], + ["2020-03-22T05:20:44", 16.36973, -70.56278], + ["2020-03-22T05:50:44", 16.37325, -70.56741], + ["2020-03-22T09:49:19", 16.41341, -70.61638], + ["2020-03-22T10:19:19", 16.4195, -70.62282], + ["2020-03-22T10:49:19", 16.42486, -70.62823], + ["2020-03-22T18:02:46", 16.51441, -70.7326], + ["2020-03-22T18:16:44", 16.51807, -70.73676], + ["2020-03-22T18:49:32", 16.54009, -70.76349], + ["2020-03-22T19:49:32", 16.54374, -70.76761], + ["2020-03-22T20:15:29", 16.54979, -70.77695], + ["2020-03-22T20:45:29", 16.55773, -70.78845], + ["2020-03-22T23:46:31", 16.61283, -70.86382], + ["2020-03-23T00:43:39", 16.63185, -70.889], + ["2020-03-23T01:13:39", 16.64194, -70.9029], + ["2020-03-23T01:43:39", 16.65121, -70.91586], + ["2020-03-23T03:43:17", 16.68565, -70.97604], + ["2020-03-23T06:12:42", 16.71505, -71.05655], + ["2020-03-23T06:42:42", 16.71994, -71.07226], + ["2020-03-23T07:12:42", 16.72488, -71.0878], + ["2020-03-23T07:45:34", 16.72917, -71.10449], + ["2020-03-23T08:12:24", 16.73168, -71.11803], + ["2020-03-23T08:42:24", 16.7334, -71.13245], + ["2020-03-23T12:41:22", 16.72146, -71.2366], + ["2020-03-23T19:12:55", 16.64219, -71.37954], + ["2020-03-23T20:08:46", 16.62602, -71.39923], + ["2020-03-23T21:39:10", 16.59867, -71.43216], + ["2020-03-23T22:08:10", 16.59031, -71.44307], + ["2020-03-23T22:41:28", 16.58038, -71.4559], + ["2020-03-24T00:08:00", 16.55371, -71.48797], + ["2020-03-24T00:38:00", 16.54547, -71.49758], + ["2020-03-24T01:08:00", 16.53697, -71.50745], + ["2020-03-24T03:07:58", 16.50028, -71.54263], + ["2020-03-24T04:06:09", 16.4802, -71.55607], + ["2020-03-24T04:36:09", 16.47033, -71.56106], + ["2020-03-24T05:06:09", 16.45887, -71.56638], + ["2020-03-24T05:38:28", 16.44651, -71.57196], + ["2020-03-24T07:35:21", 16.39731, -71.59511], + ["2020-03-24T08:05:21", 16.38572, -71.6006], + ["2020-03-24T08:35:21", 16.37272, -71.60678], + ["2020-03-24T21:30:53", 15.98694, -71.75629], + ["2020-03-24T23:30:41", 15.93029, -71.78234], + ["2020-03-25T05:29:06", 15.76906, -71.84634], + ["2020-03-25T06:28:47", 15.73784, -71.85825], + ["2020-03-25T06:58:47", 15.72548, -71.86331], + ["2020-03-25T14:29:29", 15.52526, -71.96935], + ["2020-03-25T14:58:00", 15.51436, -71.97812], + ["2020-03-25T15:28:00", 15.50213, -71.98809], + ["2020-03-25T15:58:00", 15.48921, -71.99899], + ["2020-03-25T19:27:31", 15.40628, -72.07373], + ["2020-03-26T13:48:33", 14.96621, -72.58884], + ["2020-03-26T15:18:38", 14.94199, -72.63279], + ["2020-03-26T15:48:38", 14.93439, -72.64772], + ["2020-03-26T16:18:38", 14.92705, -72.66394], + ["2020-03-26T18:47:02", 14.89611, -72.74051], + ["2020-03-26T19:48:41", 14.8854, -72.77283], + ["2020-03-26T23:46:17", 14.85982, -72.89874], + ["2020-03-27T01:49:16", 14.85205, -72.95892], + ["2020-03-27T02:18:03", 14.85054, -72.97159], + ["2020-03-27T02:45:03", 14.84895, -72.98618], + ["2020-03-27T03:18:03", 14.84779, -73.00189], + ["2020-03-27T07:13:53", 14.84478, -73.1102], + ["2020-03-27T08:13:57", 14.84478, -73.13853], + ["2020-03-27T08:43:57", 14.84487, -73.15192], + ["2020-03-27T09:43:04", 14.84596, -73.18159], + ["2020-03-27T10:13:04", 14.84626, -73.19481], + ["2020-03-27T10:43:04", 14.84699, -73.2088], + ["2020-03-27T11:16:05", 14.84815, -73.2244], + ["2020-03-27T12:12:41", 14.85137, -73.25134], + ["2020-03-27T12:44:30", 14.85376, -73.26657], + ["2020-03-27T14:41:38", 14.86545, -73.32252], + ["2020-03-27T15:11:38", 14.86944, -73.3378], + ["2020-03-27T15:41:38", 14.8724, -73.34963], + ["2020-03-27T16:11:58", 14.8761, -73.36311], + ["2020-03-27T16:41:58", 14.87975, -73.37649], + ["2020-03-27T17:52:19", 14.88833, -73.40778], + ["2020-03-27T18:12:01", 14.89054, -73.41632], + ["2020-03-27T18:42:01", 14.89427, -73.43048], + ["2020-03-27T19:12:01", 14.89822, -73.44559], + ["2020-03-27T19:40:07", 14.9018, -73.45941], + ["2020-03-27T20:10:07", 14.90583, -73.47563], + ["2020-03-27T20:40:07", 14.90888, -73.48911], + ["2020-03-27T21:11:31", 14.91228, -73.50429], + ["2020-03-27T21:41:31", 14.9158, -73.52016], + ["2020-03-27T22:12:30", 14.91894, -73.53479], + ["2020-03-27T22:42:30", 14.92319, -73.55161], + ["2020-03-27T23:11:06", 14.92695, -73.56567], + ["2020-03-27T23:41:06", 14.93111, -73.58069], + ["2020-03-28T00:11:06", 14.936, -73.59665], + ["2020-03-28T00:39:11", 14.94028, -73.611], + ["2020-03-28T01:09:11", 14.94577, -73.62627], + ["2020-03-28T01:38:52", 14.9516, -73.64242], + ["2020-03-28T02:08:52", 14.95761, -73.65701], + ["2020-03-28T02:38:24", 14.9645, -73.67353], + ["2020-03-28T03:08:24", 14.97077, -73.68752], + ["2020-03-28T03:38:24", 14.97798, -73.70245], + ["2020-03-28T05:11:00", 15.00738, -73.7604], + ["2020-03-28T06:11:00", 15.01498, -73.77466], + ["2020-03-28T12:36:59", 15.11587, -73.94534], + ["2020-03-28T14:07:32", 15.14387, -73.98437], + ["2020-03-28T14:37:32", 15.15293, -73.99809], + ["2020-03-28T15:07:32", 15.16297, -74.01345], + ["2020-03-28T17:35:32", 15.21553, -74.0931], + ["2020-03-28T18:05:32", 15.21939, -74.09902], + ["2020-03-28T18:35:32", 15.23063, -74.11481], + ["2020-03-29T03:32:59", 15.44687, -74.36041], + ["2020-03-29T05:00:32", 15.48774, -74.3968], + ["2020-03-29T05:30:32", 15.50422, -74.40916], + ["2020-03-29T06:00:32", 15.51903, -74.41989], + ["2020-03-29T10:32:00", 15.64494, -74.52084], + ["2020-03-29T12:59:23", 15.71858, -74.57611], + ["2020-03-30T02:56:47", 16.13123, -74.84045], + ["2020-03-30T04:26:22", 16.17392, -74.86349], + ["2020-03-30T04:56:22", 16.18594, -74.86967], + ["2020-03-30T05:26:22", 16.19804, -74.87618], + ["2020-03-30T05:56:18", 16.21082, -74.88336], + ["2020-03-30T06:26:18", 16.22112, -74.88928], + ["2020-03-30T07:55:28", 16.25443, -74.90952], + ["2020-03-30T08:25:28", 16.26529, -74.91673], + ["2020-03-30T08:55:28", 16.27542, -74.92334], + ["2020-03-30T09:25:09", 16.28704, -74.93089], + ["2020-03-30T09:55:09", 16.29768, -74.9375], + ["2020-03-30T12:27:29", 16.36083, -74.97372], + ["2020-03-30T12:55:44", 16.37167, -74.97985], + ["2020-03-30T13:24:25", 16.38363, -74.98614], + ["2020-03-30T13:55:44", 16.39579, -74.99307], + ["2020-03-30T14:54:01", 16.41966, -75.00718], + ["2020-03-30T15:24:01", 16.43035, -75.01303], + ["2020-03-30T15:54:01", 16.44164, -75.0199], + ["2020-03-30T18:23:01", 16.49399, -75.05667], + ["2020-03-30T20:22:06", 16.53918, -75.0892], + ["2020-03-30T21:21:35", 16.56516, -75.10529], + ["2020-03-30T21:51:35", 16.57632, -75.1113], + ["2020-03-30T22:21:35", 16.58842, -75.11731], + ["2020-03-30T22:54:09", 16.60168, -75.12384], + ["2020-03-30T23:21:04", 16.61305, -75.12949], + ["2020-03-30T23:51:04", 16.62558, -75.13525], + ["2020-03-31T01:20:24", 16.66216, -75.1514], + ["2020-03-31T01:50:24", 16.67435, -75.1568], + ["2020-03-31T02:20:24", 16.68388, -75.16119], + ["2020-03-31T04:49:32", 16.73617, -75.18216], + ["2020-03-31T05:19:32", 16.74561, -75.18499], + ["2020-03-31T05:49:32", 16.75617, -75.18756], + ["2020-03-31T10:18:21", 16.83957, -75.2034], + ["2020-03-31T13:19:25", 16.89143, -75.21523], + ["2020-03-31T13:49:25", 16.89907, -75.21704], + ["2020-03-31T14:19:25", 16.90731, -75.21893], + ["2020-03-31T16:51:52", 16.96337, -75.23222], + ["2020-03-31T17:21:52", 16.96341, -75.23222], + ["2020-03-31T17:51:52", 16.96513, -75.23273], + ["2020-03-31T19:17:42", 16.98806, -75.23824], + ["2020-03-31T19:48:20", 16.99459, -75.23905], + ["2020-03-31T20:18:20", 17.00159, -75.23965], + ["2020-03-31T20:48:20", 17.00996, -75.23999], + ["2020-03-31T22:13:35", 17.03057, -75.24061], + ["2020-03-31T22:43:35", 17.03701, -75.24018], + ["2020-03-31T23:13:35", 17.04456, -75.23984], + ["2020-04-01T00:13:25", 17.06059, -75.2413], + ["2020-04-01T13:13:28", 17.25297, -75.17722], + ["2020-04-01T13:43:42", 17.26081, -75.17344], + ["2020-04-01T14:13:42", 17.2666, -75.17077], + ["2020-04-01T14:43:42", 17.2757, -75.16768], + ["2020-04-01T15:10:33", 17.28305, -75.16479], + ["2020-04-01T15:40:13", 17.29261, -75.16211], + ["2020-04-01T16:10:13", 17.303, -75.15885], + ["2020-04-01T16:40:13", 17.31193, -75.15628], + ["2020-04-01T19:39:27", 17.37428, -75.13614], + ["2020-04-01T20:09:27", 17.38132, -75.13193], + ["2020-04-01T21:38:46", 17.39765, -75.11698], + ["2020-04-01T22:08:46", 17.4019, -75.11286], + ["2020-04-01T22:38:46", 17.40568, -75.10934], + ["2020-04-01T23:08:38", 17.4099, -75.10569], + ["2020-04-01T23:38:38", 17.41406, -75.10294], + ["2020-04-02T01:08:42", 17.42738, -75.09643], + ["2020-04-02T01:38:42", 17.43184, -75.09489], + ["2020-04-02T02:08:42", 17.43699, -75.0936], + ["2020-04-02T03:09:04", 17.44751, -75.09195], + ["2020-04-02T03:38:13", 17.45268, -75.09121], + ["2020-04-02T04:08:13", 17.45809, -75.09027], + ["2020-04-02T06:06:36", 17.47455, -75.08358], + ["2020-04-02T06:36:36", 17.47794, -75.08126], + ["2020-04-02T07:06:36", 17.48154, -75.07886], + ["2020-04-02T07:36:58", 17.48441, -75.0755], + ["2020-04-02T08:05:53", 17.48704, -75.07159], + ["2020-04-02T08:35:53", 17.4897, -75.06721], + ["2020-04-02T09:05:53", 17.49185, -75.06326], + ["2020-04-02T10:05:58", 17.49766, -75.0545], + ["2020-04-02T10:35:58", 17.50096, -75.05107], + ["2020-04-02T11:05:58", 17.50499, -75.04712], + ["2020-04-02T11:35:11", 17.50916, -75.04309], + ["2020-04-02T12:05:11", 17.51349, -75.0387], + ["2020-04-02T12:35:11", 17.51765, -75.03442], + ["2020-04-02T13:05:39", 17.52215, -75.03015], + ["2020-04-02T13:34:46", 17.52659, -75.02615], + ["2020-04-02T14:05:28", 17.53145, -75.02203], + ["2020-04-02T14:34:46", 17.5365, -75.01833], + ["2020-04-02T15:05:04", 17.54161, -75.01468], + ["2020-04-02T16:34:10", 17.55706, -75.00403], + ["2020-04-02T17:04:10", 17.56144, -75.00033], + ["2020-04-02T18:33:26", 17.57317, -74.99006], + ["2020-04-02T19:03:26", 17.57725, -74.9862], + ["2020-04-02T19:33:26", 17.58098, -74.98199], + ["2020-04-02T20:03:12", 17.58508, -74.97718], + ["2020-04-02T20:33:12", 17.58851, -74.9722], + ["2020-04-02T21:03:29", 17.59219, -74.96677], + ["2020-04-02T21:33:29", 17.59648, -74.96153], + ["2020-04-02T22:03:29", 17.60159, -74.95612], + ["2020-04-02T22:32:52", 17.60703, -74.95056], + ["2020-04-02T23:03:11", 17.61263, -74.94409], + ["2020-04-02T23:32:41", 17.61797, -74.93719], + ["2020-04-03T00:02:41", 17.62368, -74.92981], + ["2020-04-03T01:01:57", 17.63486, -74.91468], + ["2020-04-03T01:31:35", 17.64013, -74.90796], + ["2020-04-03T02:01:57", 17.64529, -74.9006], + ["2020-04-03T04:01:04", 17.66608, -74.87485], + ["2020-04-03T05:00:33", 17.67717, -74.86008], + ["2020-04-03T06:00:10", 17.6881, -74.8428], + ["2020-04-03T06:30:10", 17.69368, -74.83387], + ["2020-04-03T07:00:10", 17.69947, -74.82477], + ["2020-04-05T05:17:59", 17.99394, -74.05331], + ["2020-04-05T05:47:33", 17.99331, -74.04554], + ["2020-04-05T06:17:33", 17.99207, -74.03842], + ["2020-04-05T08:48:58", 17.97969, -74.00668], + ["2020-04-05T09:17:30", 17.97699, -74.00129], + ["2020-04-05T09:47:30", 17.97424, -73.9958], + ["2020-04-05T10:17:30", 17.97158, -73.99005], + ["2020-04-05T11:18:29", 17.96488, -73.97906], + ["2020-04-05T11:45:54", 17.9616, -73.97356], + ["2020-04-05T12:15:54", 17.9583, -73.96738], + ["2020-04-05T12:46:42", 17.95459, -73.96062], + ["2020-04-05T13:16:44", 17.95069, -73.95438], + ["2020-04-05T13:46:44", 17.9464, -73.94768], + ["2020-04-05T14:45:07", 17.94003, -73.93547], + ["2020-04-05T15:15:07", 17.93703, -73.93109], + ["2020-04-05T15:45:07", 17.93411, -73.92697], + ["2020-04-05T16:16:58", 17.93116, -73.92361], + ["2020-04-05T18:14:16", 17.92315, -73.91188], + ["2020-04-05T18:44:16", 17.92139, -73.90973], + ["2020-04-05T19:14:16", 17.91946, -73.90792], + ["2020-04-05T20:14:43", 17.91716, -73.90403], + ["2020-04-05T20:44:43", 17.91656, -73.90232], + ["2020-04-05T21:14:43", 17.916, -73.90009], + ["2020-04-05T21:43:24", 17.91504, -73.89788], + ["2020-04-05T22:13:24", 17.9141, -73.89488], + ["2020-04-05T22:43:24", 17.91294, -73.89136], + ["2020-04-05T23:12:59", 17.91178, -73.88597], + ["2020-04-05T23:42:59", 17.91028, -73.88065], + ["2020-04-06T00:12:44", 17.90875, -73.87456], + ["2020-04-06T00:42:44", 17.90721, -73.86787], + ["2020-04-06T01:12:44", 17.90588, -73.86169], + ["2020-04-06T02:14:12", 17.90229, -73.84793], + ["2020-04-06T03:42:59", 17.89552, -73.83279], + ["2020-04-06T04:12:59", 17.89325, -73.8291], + ["2020-04-06T04:42:59", 17.89059, -73.8255], + ["2020-04-06T05:43:01", 17.88677, -73.81896], + ["2020-04-06T06:10:59", 17.88504, -73.81583], + ["2020-04-06T06:40:59", 17.88311, -73.81258], + ["2020-04-06T07:10:59", 17.88058, -73.80965], + ["2020-04-06T10:39:48", 17.85998, -73.78729], + ["2020-04-06T11:09:39", 17.85706, -73.78283], + ["2020-04-06T12:11:58", 17.85065, -73.77348], + ["2020-04-06T12:41:58", 17.84769, -73.76909], + ["2020-04-06T13:11:58", 17.84464, -73.76403], + ["2020-04-06T14:08:29", 17.83916, -73.75559], + ["2020-04-06T14:38:29", 17.83624, -73.75138], + ["2020-04-06T15:08:29", 17.83384, -73.74786], + ["2020-04-06T16:10:23", 17.82496, -73.73766], + ["2020-04-06T17:10:23", 17.82208, -73.73363], + ["2020-04-06T17:37:51", 17.8195, -73.73029], + ["2020-04-06T21:39:24", 17.80078, -73.70471], + ["2020-04-06T23:35:52", 17.79159, -73.68832], + ["2020-04-07T00:05:52", 17.78987, -73.68326], + ["2020-04-07T00:35:52", 17.78841, -73.67838], + ["2020-04-07T01:05:25", 17.78616, -73.67335], + ["2020-04-07T01:35:25", 17.78376, -73.6694], + ["2020-04-07T02:05:17", 17.78084, -73.66558], + ["2020-04-07T03:08:00", 17.774, -73.65877], + ["2020-04-07T03:38:00", 17.76979, -73.65551], + ["2020-04-07T04:08:00", 17.76537, -73.65173], + ["2020-04-07T05:04:11", 17.75747, -73.64476], + ["2020-04-07T05:34:11", 17.75301, -73.6397], + ["2020-04-07T06:04:11", 17.74889, -73.63498], + ["2020-04-07T06:34:29", 17.74405, -73.6294], + ["2020-04-07T07:04:29", 17.73894, -73.62356], + ["2020-04-07T07:34:29", 17.73323, -73.61754], + ["2020-04-07T08:36:30", 17.7212, -73.60605], + ["2020-04-07T10:33:13", 17.6991, -73.58728], + ["2020-04-07T11:06:28", 17.69454, -73.58242], + ["2020-04-07T11:36:28", 17.6887, -73.57693], + ["2020-04-07T14:02:03", 17.66389, -73.55292], + ["2020-04-07T15:33:31", 17.64836, -73.53833], + ["2020-04-07T16:03:59", 17.64417, -73.5338], + ["2020-04-07T16:33:59", 17.64009, -73.52916], + ["2020-04-07T17:01:36", 17.63671, -73.52469], + ["2020-04-07T17:31:15", 17.63165, -73.51642], + ["2020-04-07T18:01:15", 17.63015, -73.51385], + ["2020-04-07T20:00:44", 17.6202, -73.49164], + ["2020-04-07T21:00:14", 17.61539, -73.47995], + ["2020-04-07T21:30:14", 17.61299, -73.47436], + ["2020-04-07T23:59:30", 17.59818, -73.44516], + ["2020-04-08T00:31:56", 17.5944, -73.43962], + ["2020-04-08T01:01:56", 17.59019, -73.43378], + ["2020-04-08T02:30:01", 17.57924, -73.41991], + ["2020-04-08T03:00:01", 17.57611, -73.4157], + ["2020-04-08T03:30:01", 17.57263, -73.41107], + ["2020-04-08T03:58:33", 17.56937, -73.40634], + ["2020-04-08T04:29:26", 17.56656, -73.40079], + ["2020-04-08T05:00:59", 17.56356, -73.39484], + ["2020-04-08T05:30:59", 17.56038, -73.38763], + ["2020-04-08T06:27:47", 17.55481, -73.37477], + ["2020-04-08T06:57:47", 17.55142, -73.36756], + ["2020-04-08T07:27:47", 17.54803, -73.36121], + ["2020-04-08T08:01:02", 17.5436, -73.35431], + ["2020-04-08T08:27:21", 17.5397, -73.34936], + ["2020-04-08T08:57:21", 17.53528, -73.34439], + ["2020-04-08T12:26:02", 17.50807, -73.32192], + ["2020-04-08T12:57:29", 17.50607, -73.31968], + ["2020-04-08T13:27:29", 17.50465, -73.31686], + ["2020-04-08T13:56:29", 17.5037, -73.31391], + ["2020-04-08T14:26:29", 17.50267, -73.31082], + ["2020-04-08T14:56:29", 17.50125, -73.30704], + ["2020-04-08T15:25:08", 17.50014, -73.30304], + ["2020-04-08T15:56:01", 17.49919, -73.29852], + ["2020-04-08T16:47:42", 17.49382, -73.28478], + ["2020-04-08T17:17:42", 17.49292, -73.28229], + ["2020-04-08T17:47:42", 17.49253, -73.28143], + ["2020-04-08T17:54:19", 17.49201, -73.28055], + ["2020-04-08T18:24:19", 17.49012, -73.27704], + ["2020-04-08T18:55:22", 17.4875, -73.27329], + ["2020-04-08T19:25:22", 17.48308, -73.26873], + ["2020-04-08T19:53:25", 17.47794, -73.26587], + ["2020-04-08T20:23:25", 17.47129, -73.2639], + ["2020-04-08T20:53:25", 17.46404, -73.26321], + ["2020-04-08T21:23:13", 17.45457, -73.26167], + ["2020-04-08T21:53:13", 17.44582, -73.26004], + ["2020-04-08T23:52:41", 17.40939, -73.25333], + ["2020-04-09T02:51:42", 17.36787, -73.24182], + ["2020-04-09T06:50:38", 17.3333, -73.2059], + ["2020-04-09T14:18:41", 17.28192, -73.15317], + ["2020-04-09T14:48:29", 17.27963, -73.15197], + ["2020-04-09T15:18:29", 17.27847, -73.15085], + ["2020-04-09T18:18:57", 17.28481, -73.14116], + ["2020-04-09T18:48:57", 17.287, -73.13901], + ["2020-04-09T19:18:57", 17.28988, -73.13634], + ["2020-04-09T20:46:42", 17.29635, -73.12808], + ["2020-04-09T21:16:42", 17.29751, -73.12576], + ["2020-04-10T01:18:11", 17.29243, -73.11275], + ["2020-04-10T01:47:39", 17.29018, -73.11217], + ["2020-04-10T02:17:39", 17.28761, -73.11148], + ["2020-04-10T02:47:39", 17.28469, -73.11002], + ["2020-04-10T03:14:37", 17.28377, -73.10946], + ["2020-04-10T03:44:37", 17.28317, -73.10852], + ["2020-04-10T18:40:50", 17.23701, -73.05252], + ["2020-04-10T20:12:30", 17.24292, -73.0484], + ["2020-04-10T20:40:13", 17.24514, -73.04602], + ["2020-04-10T21:12:30", 17.24803, -73.043], + ["2020-04-11T13:35:17", 17.28587, -72.96588], + ["2020-04-11T19:33:17", 17.3056, -72.95699], + ["2020-04-11T22:34:59", 17.33161, -72.95706], + ["2020-04-11T23:02:18", 17.33565, -72.95596], + ["2020-04-11T23:32:18", 17.34007, -72.95511], + ["2020-04-12T00:02:07", 17.34566, -72.95435], + ["2020-04-12T00:32:07", 17.34957, -72.95367], + ["2020-04-12T01:31:27", 17.35712, -72.95097], + ["2020-04-12T02:01:27", 17.36042, -72.94934], + ["2020-04-12T02:31:27", 17.3636, -72.94754], + ["2020-04-12T05:30:33", 17.38774, -72.94392], + ["2020-04-12T06:00:33", 17.39263, -72.94435], + ["2020-04-12T06:30:33", 17.39812, -72.94504], + ["2020-04-12T07:30:21", 17.40984, -72.94757], + ["2020-04-12T14:57:51", 17.49785, -72.99683], + ["2020-04-12T18:59:01", 17.53799, -73.07201], + ["2020-04-12T19:56:39", 17.54554, -73.08832], + ["2020-04-12T20:26:21", 17.54875, -73.09627], + ["2020-04-12T20:56:21", 17.55137, -73.10263], + ["2020-04-12T22:25:52", 17.55817, -73.11835], + ["2020-04-12T22:55:52", 17.55993, -73.12358], + ["2020-04-12T23:25:52", 17.56109, -73.12814], + ["2020-04-13T02:54:41", 17.55375, -73.16449], + ["2020-04-13T04:24:15", 17.54589, -73.18094], + ["2020-04-13T07:23:16", 17.52647, -73.2029], + ["2020-04-13T07:53:16", 17.52184, -73.20513], + ["2020-04-13T08:23:16", 17.51815, -73.20632], + ["2020-04-13T12:51:58", 17.46887, -73.21191], + ["2020-04-13T13:21:31", 17.46209, -73.21274], + ["2020-04-13T13:51:31", 17.45497, -73.21402], + ["2020-04-13T14:21:31", 17.44909, -73.21514], + ["2020-04-13T16:53:49", 17.4164, -73.22821], + ["2020-04-13T17:06:11", 17.40948, -73.23217], + ["2020-04-13T17:36:11", 17.40836, -73.23303], + ["2020-04-13T19:20:06", 17.39222, -73.24213], + ["2020-04-13T20:19:46", 17.38456, -73.24628], + ["2020-04-13T20:49:38", 17.38089, -73.24755], + ["2020-04-13T21:19:06", 17.37728, -73.24757], + ["2020-04-13T21:49:06", 17.37475, -73.24697], + ["2020-04-13T22:19:06", 17.37196, -73.24679], + ["2020-04-14T01:50:57", 17.35221, -73.2402], + ["2020-04-14T03:17:15", 17.34209, -73.23829], + ["2020-04-14T03:47:15", 17.339, -73.23786], + ["2020-04-14T04:17:15", 17.336, -73.23699], + ["2020-04-14T04:49:58", 17.33323, -73.23651], + ["2020-04-14T05:17:00", 17.33115, -73.23584], + ["2020-04-14T07:46:21", 17.32022, -73.2305], + ["2020-04-14T10:17:42", 17.30905, -73.21719], + ["2020-04-14T10:45:02", 17.30685, -73.21473], + ["2020-04-14T11:15:02", 17.30488, -73.21164], + ["2020-04-14T16:13:37", 17.28838, -73.19131], + ["2020-04-14T16:43:14", 17.28649, -73.1936], + ["2020-04-14T17:13:14", 17.2861, -73.19377], + ["2020-04-14T17:43:14", 17.28571, -73.19403], + ["2020-04-14T18:16:28", 17.28399, -73.19485], + ["2020-04-14T19:12:58", 17.28264, -73.19727], + ["2020-04-14T19:44:11", 17.28252, -73.19861], + ["2020-04-14T20:12:58", 17.28289, -73.19958], + ["2020-04-14T21:46:13", 17.28491, -73.20071], + ["2020-04-15T01:11:58", 17.29127, -73.18933], + ["2020-04-15T01:45:13", 17.29216, -73.18619], + ["2020-04-15T05:10:40", 17.2951, -73.16904], + ["2020-04-15T05:43:00", 17.29523, -73.16797], + ["2020-04-15T08:10:03", 17.29925, -73.16821], + ["2020-04-15T08:41:56", 17.30106, -73.16804], + ["2020-04-15T09:11:56", 17.3023, -73.16786], + ["2020-04-15T09:41:56", 17.30346, -73.16718], + ["2020-04-15T11:09:02", 17.30991, -73.16354], + ["2020-04-15T11:39:02", 17.31214, -73.1626], + ["2020-04-15T12:11:36", 17.31451, -73.16162], + ["2020-04-15T13:38:19", 17.31987, -73.15841], + ["2020-04-15T14:08:19", 17.3209, -73.15764], + ["2020-04-15T14:38:19", 17.32159, -73.15652], + ["2020-04-15T15:37:43", 17.32486, -73.15416], + ["2020-04-15T19:38:57", 17.34184, -73.16186], + ["2020-04-15T22:05:54", 17.35668, -73.1735], + ["2020-04-15T22:35:54", 17.35887, -73.17505], + ["2020-04-15T23:05:54", 17.3626, -73.17737], + ["2020-04-16T00:35:25", 17.37716, -73.18177], + ["2020-04-16T01:05:25", 17.38252, -73.18297], + ["2020-04-16T01:35:25", 17.38724, -73.18416], + ["2020-04-16T03:05:09", 17.4008, -73.1838], + ["2020-04-16T03:35:09", 17.40531, -73.18371], + ["2020-04-16T04:05:09", 17.40909, -73.18371], + ["2020-04-16T04:36:27", 17.41331, -73.18441], + ["2020-04-16T05:06:27", 17.41786, -73.18518], + ["2020-04-16T05:34:45", 17.42204, -73.1861], + ["2020-04-16T06:04:28", 17.42673, -73.1881], + ["2020-04-16T06:34:28", 17.43098, -73.19016], + ["2020-04-16T07:04:18", 17.43598, -73.19266], + ["2020-04-16T07:37:29", 17.44196, -73.19595], + ["2020-04-16T10:05:31", 17.46834, -73.20901], + ["2020-04-16T10:35:31", 17.47396, -73.21141], + ["2020-04-16T11:05:31", 17.4804, -73.21381], + ["2020-04-16T14:02:42", 17.515, -73.22504], + ["2020-04-16T15:06:06", 17.52668, -73.23157], + ["2020-04-16T21:31:40", 17.62306, -73.31607], + ["2020-04-16T21:59:40", 17.62989, -73.32361], + ["2020-04-16T22:29:40", 17.63689, -73.33132], + ["2020-04-16T23:01:02", 17.64342, -73.33942], + ["2020-04-17T00:59:01", 17.66624, -73.36948], + ["2020-04-17T01:28:55", 17.67115, -73.3776], + ["2020-04-17T01:58:55", 17.6754, -73.38507], + ["2020-04-17T02:29:42", 17.67994, -73.39337], + ["2020-04-17T05:27:25", 17.69255, -73.43944], + ["2020-04-17T05:57:32", 17.69212, -73.44589], + ["2020-04-17T06:27:25", 17.69143, -73.45352], + ["2020-04-17T06:58:40", 17.6902, -73.46222], + ["2020-04-17T07:28:59", 17.6885, -73.47059], + ["2020-04-17T07:58:59", 17.68644, -73.47986], + ["2020-04-19T03:48:28", 17.13009, -73.92822], + ["2020-04-19T06:15:29", 17.08868, -73.93035], + ["2020-04-19T06:47:46", 17.07965, -73.93106], + ["2020-04-19T08:44:55", 17.04471, -73.93388], + ["2020-04-19T09:14:55", 17.03535, -73.93482], + ["2020-04-19T09:44:55", 17.02668, -73.93594], + ["2020-04-19T11:13:43", 16.99915, -73.93929], + ["2020-04-19T11:43:43", 16.98949, -73.94041], + ["2020-04-19T12:13:43", 16.98035, -73.9411], + ["2020-04-19T12:43:19", 16.97043, -73.94242], + ["2020-04-19T13:13:19", 16.96125, -73.94379], + ["2020-04-19T13:42:55", 16.9506, -73.94562], + ["2020-04-19T14:13:07", 16.94159, -73.9472], + ["2020-04-19T14:42:55", 16.9315, -73.94846], + ["2020-04-19T15:46:00", 16.90054, -73.95439], + ["2020-04-19T16:46:00", 16.8905, -73.95551], + ["2020-04-19T17:03:59", 16.87676, -73.95903], + ["2020-04-19T17:33:59", 16.87487, -73.95963], + ["2020-04-19T17:43:29", 16.87212, -73.96062], + ["2020-04-19T18:13:29", 16.86294, -73.96447], + ["2020-04-19T19:43:00", 16.83966, -73.97705], + ["2020-04-19T21:10:52", 16.81779, -73.99173], + ["2020-04-19T21:40:52", 16.81097, -73.9967], + ["2020-04-19T22:10:52", 16.80526, -74.00143], + ["2020-04-19T22:42:31", 16.79899, -74.00655], + ["2020-04-19T23:14:22", 16.79367, -74.01016], + ["2020-04-19T23:42:31", 16.78869, -74.01282], + ["2020-04-20T00:12:28", 16.78332, -74.01492], + ["2020-04-20T00:40:59", 16.77818, -74.01667], + ["2020-04-20T01:10:59", 16.77307, -74.01814], + ["2020-04-20T01:40:59", 16.76745, -74.01917], + ["2020-04-20T02:09:42", 16.7617, -74.01956], + ["2020-04-20T03:09:18", 16.74999, -74.02011], + ["2020-04-20T05:08:31", 16.72403, -74.01957], + ["2020-04-20T05:38:53", 16.71686, -74.01953], + ["2020-04-20T06:08:31", 16.70867, -74.02051], + ["2020-04-20T06:40:16", 16.69962, -74.02112], + ["2020-04-20T07:08:12", 16.69114, -74.02198], + ["2020-04-20T07:38:12", 16.68281, -74.02343], + ["2020-04-20T08:09:21", 16.67287, -74.02533], + ["2020-04-20T08:39:21", 16.66442, -74.02705], + ["2020-04-20T09:09:21", 16.65481, -74.02902], + ["2020-04-20T09:39:06", 16.64651, -74.03095], + ["2020-04-20T10:09:06", 16.63698, -74.03283], + ["2020-04-20T14:37:59", 16.5603, -74.04016], + ["2020-04-20T21:34:55", 16.44734, -74.05916], + ["2020-04-20T23:35:42", 16.41165, -74.06741], + ["2020-04-21T00:03:46", 16.40328, -74.06895], + ["2020-04-21T00:33:46", 16.39362, -74.07118], + ["2020-04-21T01:03:46", 16.38469, -74.07333], + ["2020-04-21T01:34:29", 16.37521, -74.07608], + ["2020-04-21T02:04:29", 16.36538, -74.07849], + ["2020-04-21T02:33:20", 16.3562, -74.08127], + ["2020-04-21T03:03:02", 16.3454, -74.08426], + ["2020-04-21T03:33:02", 16.33669, -74.08649], + ["2020-04-21T08:32:58", 16.24203, -74.11456], + ["2020-04-21T09:03:43", 16.23378, -74.11759], + ["2020-04-21T09:33:43", 16.22395, -74.12119], + ["2020-04-21T10:30:18", 16.20643, -74.12814], + ["2020-04-21T11:00:18", 16.19652, -74.13114], + ["2020-04-21T11:30:18", 16.18734, -74.13406], + ["2020-04-21T17:28:49", 16.07686, -74.18304], + ["2020-04-21T17:34:23", 16.07532, -74.18389], + ["2020-04-21T19:57:44", 16.0339, -74.20674], + ["2020-04-21T20:27:44", 16.02626, -74.2106], + ["2020-04-21T20:57:44", 16.01776, -74.21463], + ["2020-04-22T00:58:28", 15.94505, -74.2465], + ["2020-04-22T01:26:37", 15.9355, -74.25027], + ["2020-04-22T01:58:28", 15.92518, -74.25482], + ["2020-04-22T02:26:17", 15.91613, -74.2586], + ["2020-04-22T02:56:17", 15.90665, -74.26263], + ["2020-04-22T03:26:03", 15.89719, -74.2668], + ["2020-04-22T03:56:03", 15.88813, -74.27066], + ["2020-04-22T07:24:59", 15.82452, -74.29337], + ["2020-04-22T07:54:59", 15.81469, -74.29662], + ["2020-04-22T08:24:59", 15.80542, -74.29929], + ["2020-04-22T08:56:26", 15.79456, -74.30258], + ["2020-04-22T11:53:57", 15.73348, -74.32458], + ["2020-04-22T16:22:38", 15.64691, -74.3656], + ["2020-04-22T16:55:46", 15.6372, -74.37213], + ["2020-04-22T17:04:33", 15.62779, -74.3789], + ["2020-04-22T17:34:33", 15.62594, -74.38019], + ["2020-04-22T17:52:11", 15.62071, -74.38385], + ["2020-04-22T18:51:52", 15.60505, -74.39691], + ["2020-04-22T20:20:55", 15.58276, -74.41715], + ["2020-04-22T20:50:55", 15.57542, -74.42435], + ["2020-04-22T21:20:55", 15.56842, -74.43062], + ["2020-04-22T21:50:38", 15.56021, -74.43812], + ["2020-04-22T22:20:38", 15.55317, -74.44439], + ["2020-04-22T22:50:38", 15.54557, -74.45117], + ["2020-04-22T23:20:16", 15.53729, -74.45804], + ["2020-04-22T23:50:16", 15.52952, -74.46362], + ["2020-04-23T00:49:58", 15.51186, -74.47562], + ["2020-04-23T02:50:27", 15.47655, -74.49985], + ["2020-04-23T06:20:59", 15.40865, -74.5459], + ["2020-04-23T07:49:03", 15.37759, -74.5668], + ["2020-04-23T13:46:14", 15.27018, -74.66412], + ["2020-04-23T18:15:00", 15.20546, -74.74545], + ["2020-04-23T18:46:05", 15.19848, -74.75601], + ["2020-04-23T19:14:43", 15.19189, -74.76608], + ["2020-04-23T20:14:31", 15.17909, -74.78789], + ["2020-04-23T20:44:31", 15.17218, -74.79939], + ["2020-04-23T21:14:31", 15.16591, -74.8096], + ["2020-04-23T21:44:24", 15.15915, -74.82088], + ["2020-04-23T22:17:37", 15.15222, -74.83353], + ["2020-04-23T22:44:24", 15.14649, -74.84354], + ["2020-04-24T00:13:35", 15.12752, -74.87577], + ["2020-04-24T00:43:35", 15.12074, -74.88744], + ["2020-04-24T01:13:35", 15.11482, -74.8974], + ["2020-04-24T03:44:52", 15.08603, -74.95453], + ["2020-04-26T16:24:32", 15.4404, -76.39634], + ["2020-04-26T16:54:32", 15.44812, -76.4038], + ["2020-04-26T17:56:32", 15.46463, -76.42133], + ["2020-04-26T18:25:12", 15.47159, -76.42918], + ["2020-04-26T18:55:12", 15.47949, -76.43716], + ["2020-04-26T19:25:12", 15.48842, -76.44583], + ["2020-04-26T19:54:42", 15.49716, -76.4534], + ["2020-04-26T20:24:42", 15.50647, -76.46173], + ["2020-04-26T20:53:33", 15.51538, -76.46922], + ["2020-04-26T21:23:33", 15.52521, -76.47729], + ["2020-04-26T21:53:33", 15.53409, -76.48459], + ["2020-04-26T22:22:58", 15.5437, -76.49209], + ["2020-04-26T22:54:57", 15.55328, -76.50021], + ["2020-04-27T00:51:54", 15.5887, -76.53057], + ["2020-04-27T01:23:30", 15.59811, -76.53775], + ["2020-04-27T01:51:54", 15.60685, -76.54465], + ["2020-04-27T02:24:29", 15.61592, -76.55198], + ["2020-04-27T02:54:29", 15.6242, -76.55893], + ["2020-04-27T03:24:29", 15.63334, -76.56665], + ["2020-04-27T06:50:26", 15.68557, -76.60849], + ["2020-04-27T07:22:12", 15.69392, -76.61377], + ["2020-04-27T12:49:02", 15.76859, -76.66379], + ["2020-04-27T13:20:02", 15.77365, -76.66891], + ["2020-04-27T13:50:02", 15.7791, -76.67431], + ["2020-04-27T15:17:58", 15.7956, -76.69197], + ["2020-04-27T15:47:58", 15.80157, -76.69935], + ["2020-04-27T16:17:58", 15.80689, -76.7063], + ["2020-04-27T16:50:31", 15.81301, -76.71453], + ["2020-04-27T17:20:31", 15.82018, -76.7226], + ["2020-04-27T17:27:58", 15.82205, -76.72445], + ["2020-04-27T18:48:47", 15.84164, -76.74335], + ["2020-04-27T20:46:27", 15.87476, -76.76733], + ["2020-04-27T21:16:27", 15.88424, -76.77377], + ["2020-04-27T21:46:27", 15.89205, -76.77875], + ["2020-04-28T07:46:30", 16.04752, -76.86038], + ["2020-04-28T08:43:03", 16.06072, -76.86566], + ["2020-04-28T09:42:50", 16.07381, -76.86951], + ["2020-04-28T10:12:50", 16.08033, -76.87114], + ["2020-04-28T10:42:50", 16.08587, -76.87268], + ["2020-04-28T12:12:09", 16.10498, -76.87748], + ["2020-04-28T12:42:09", 16.11167, -76.87954], + ["2020-04-28T13:12:09", 16.11703, -76.88101], + ["2020-04-28T17:40:03", 16.16901, -76.90588], + ["2020-04-28T18:40:41", 16.18104, -76.91266], + ["2020-04-28T19:10:41", 16.18739, -76.91584], + ["2020-04-28T19:40:41", 16.1943, -76.91919], + ["2020-04-28T20:42:28", 16.20836, -76.92545], + ["2020-04-28T21:09:09", 16.21452, -76.92804], + ["2020-04-28T22:08:36", 16.22852, -76.9332], + ["2020-04-28T22:38:36", 16.23431, -76.93517], + ["2020-04-28T23:08:36", 16.24092, -76.9368], + ["2020-04-28T23:41:00", 16.2478, -76.93825], + ["2020-04-29T00:11:00", 16.25454, -76.93911], + ["2020-04-29T00:41:00", 16.26184, -76.94031], + ["2020-04-29T01:38:22", 16.27427, -76.94168], + ["2020-04-29T02:07:44", 16.28088, -76.9421], + ["2020-04-29T02:37:44", 16.28646, -76.94261], + ["2020-04-29T03:07:44", 16.29238, -76.9432], + ["2020-04-29T03:37:30", 16.29926, -76.94395], + ["2020-04-29T04:07:30", 16.30518, -76.94446], + ["2020-04-29T04:38:22", 16.31158, -76.94492], + ["2020-04-29T05:08:22", 16.3178, -76.94501], + ["2020-04-29T06:37:39", 16.33472, -76.94579], + ["2020-04-29T07:07:39", 16.34004, -76.94665], + ["2020-04-29T07:37:39", 16.34635, -76.9475], + ["2020-04-29T08:36:58", 16.35742, -76.94949], + ["2020-04-29T09:05:59", 16.36312, -76.95041], + ["2020-04-29T09:35:32", 16.36939, -76.95108], + ["2020-04-29T10:05:32", 16.37463, -76.95202], + ["2020-04-29T10:35:13", 16.37994, -76.95313], + ["2020-04-29T11:05:13", 16.38591, -76.95356], + ["2020-04-29T11:35:13", 16.39132, -76.95416], + ["2020-04-29T12:08:06", 16.39734, -76.9548], + ["2020-04-29T12:38:06", 16.40391, -76.95556], + ["2020-04-29T13:04:40", 16.4095, -76.95617], + ["2020-04-29T13:34:40", 16.41568, -76.95659], + ["2020-04-29T14:06:58", 16.4222, -76.95712], + ["2020-04-29T14:36:58", 16.42804, -76.95755], + ["2020-04-29T15:06:58", 16.43465, -76.95798], + ["2020-04-29T17:03:41", 16.46089, -76.96187], + ["2020-04-29T17:23:36", 16.46557, -76.96317], + ["2020-04-29T17:33:36", 16.46791, -76.96387], + ["2020-04-29T19:34:57", 16.49733, -76.97278], + ["2020-04-29T20:04:57", 16.50411, -76.97475], + ["2020-04-29T20:34:57", 16.51209, -76.97681], + ["2020-04-29T22:32:18", 16.54365, -76.98217], + ["2020-04-29T23:05:01", 16.55199, -76.98269], + ["2020-04-29T23:32:18", 16.55919, -76.98242], + ["2020-04-30T00:02:15", 16.56671, -76.98175], + ["2020-04-30T01:01:59", 16.58128, -76.98013], + ["2020-04-30T04:00:41", 16.62027, -76.96765], + ["2020-04-30T04:30:41", 16.62593, -76.96576], + ["2020-04-30T05:00:41", 16.63099, -76.96396], + ["2020-04-30T05:30:13", 16.63653, -76.96268], + ["2020-04-30T06:00:13", 16.64069, -76.96147], + ["2020-04-30T06:30:13", 16.64541, -76.96053], + ["2020-04-30T09:29:31", 16.67354, -76.95746], + ["2020-04-30T09:59:08", 16.67838, -76.95715], + ["2020-04-30T10:29:08", 16.68216, -76.95672], + ["2020-04-30T10:59:08", 16.68649, -76.95578], + ["2020-04-30T14:00:54", 16.70595, -76.94968], + ["2020-04-30T14:31:01", 16.70925, -76.94887], + ["2020-04-30T15:01:01", 16.71268, -76.94801], + ["2020-04-30T15:31:01", 16.71706, -76.94723], + ["2020-04-30T17:26:48", 16.73071, -76.94763], + ["2020-04-30T17:56:31", 16.73551, -76.94883], + ["2020-04-30T18:26:31", 16.74019, -76.94986], + ["2020-04-30T19:28:00", 16.7507, -76.95371], + ["2020-04-30T19:58:00", 16.75512, -76.95568], + ["2020-04-30T20:28:00", 16.75975, -76.95825], + ["2020-04-30T20:55:42", 16.76411, -76.96102], + ["2020-04-30T21:58:57", 16.77419, -76.96689], + ["2020-04-30T22:28:57", 16.7787, -76.96972], + ["2020-04-30T22:58:57", 16.78342, -76.97229], + ["2020-04-30T23:25:04", 16.78702, -76.97418], + ["2020-05-01T02:23:52", 16.8146, -76.97742], + ["2020-05-01T07:24:00", 16.8541, -76.96948], + ["2020-05-02T17:22:42", 17.21594, -76.9498], + ["2020-05-02T17:42:58", 17.21978, -76.94974], + ["2020-05-02T18:12:58", 17.22562, -76.94974], + ["2020-05-02T18:44:10", 17.23155, -76.94974], + ["2020-05-02T19:14:10", 17.2373, -76.94974], + ["2020-05-02T19:44:10", 17.24352, -76.94983], + ["2020-05-02T20:13:06", 17.24909, -76.95017], + ["2020-05-02T20:43:06", 17.25536, -76.95068], + ["2020-05-03T00:12:28", 17.29866, -76.95197], + ["2020-05-03T00:43:29", 17.30428, -76.95129], + ["2020-05-03T01:13:29", 17.31093, -76.95026], + ["2020-05-03T01:40:33", 17.31629, -76.94896], + ["2020-05-03T02:10:33", 17.32178, -76.94732], + ["2020-05-03T03:10:27", 17.33364, -76.94351], + ["2020-05-03T03:40:15", 17.34069, -76.94083], + ["2020-05-03T04:10:15", 17.34661, -76.93886], + ["2020-05-03T04:39:36", 17.3528, -76.93814], + ["2020-05-03T05:09:36", 17.35975, -76.93625], + ["2020-05-03T05:39:36", 17.36554, -76.93488], + ["2020-05-03T06:11:13", 17.3717, -76.93297], + ["2020-05-03T06:41:13", 17.37797, -76.93091], + ["2020-05-03T07:10:29", 17.38336, -76.92908], + ["2020-05-03T07:40:29", 17.3895, -76.92693], + ["2020-05-03T08:10:29", 17.39538, -76.92453], + ["2020-05-03T10:38:02", 17.42089, -76.91004], + ["2020-05-03T11:08:02", 17.42432, -76.90712], + ["2020-05-03T11:38:02", 17.42797, -76.90326], + ["2020-05-03T12:07:49", 17.43166, -76.89869], + ["2020-05-03T12:37:49", 17.43514, -76.89371], + ["2020-05-03T15:07:03", 17.45856, -76.86877], + ["2020-05-03T15:36:48", 17.46242, -76.86566], + ["2020-05-03T16:06:48", 17.46512, -76.86386], + ["2020-05-03T16:23:05", 17.4707, -76.8601], + ["2020-05-03T16:53:05", 17.4713, -76.85975], + ["2020-05-03T17:23:05", 17.47181, -76.8595], + ["2020-05-03T18:08:24", 17.47502, -76.85764], + ["2020-05-03T21:38:12", 17.49228, -76.85702], + ["2020-05-03T22:05:27", 17.49442, -76.85731], + ["2020-05-03T22:35:27", 17.49742, -76.85774], + ["2020-05-03T23:05:27", 17.50047, -76.85825], + ["2020-05-04T00:05:23", 17.50621, -76.85916], + ["2020-05-04T00:35:00", 17.50924, -76.85933], + ["2020-05-04T01:05:00", 17.51272, -76.85916], + ["2020-05-04T02:33:19", 17.52325, -76.85796], + ["2020-05-04T03:05:01", 17.52699, -76.85706], + ["2020-05-04T03:35:01", 17.53111, -76.8562], + ["2020-05-04T04:02:43", 17.5345, -76.8555], + ["2020-05-04T04:32:43", 17.53763, -76.85464], + ["2020-05-04T05:05:27", 17.54139, -76.85361], + ["2020-05-04T06:02:14", 17.54744, -76.85098], + ["2020-05-04T07:01:50", 17.55241, -76.84729], + ["2020-05-04T07:31:32", 17.55434, -76.84492], + ["2020-05-04T08:01:32", 17.55619, -76.84251], + ["2020-05-04T08:31:32", 17.55748, -76.84012], + ["2020-05-04T11:31:00", 17.5669, -76.82577], + ["2020-05-04T12:01:00", 17.5684, -76.82338], + ["2020-05-04T12:31:00", 17.5702, -76.82098], + ["2020-05-04T12:59:41", 17.5715, -76.8182], + ["2020-05-04T13:29:41", 17.57386, -76.81572], + ["2020-05-04T13:59:41", 17.57652, -76.81366], + ["2020-05-04T14:32:29", 17.57895, -76.81091], + ["2020-05-04T14:59:20", 17.58149, -76.80869], + ["2020-05-04T20:00:07", 17.60705, -76.80664], + ["2020-05-04T20:31:18", 17.6097, -76.80663], + ["2020-05-04T21:01:18", 17.61197, -76.80612], + ["2020-05-04T22:57:34", 17.6237, -76.8071], + ["2020-05-04T23:26:49", 17.6262, -76.80695], + ["2020-05-04T23:57:34", 17.62889, -76.80643], + ["2020-05-05T00:58:18", 17.63317, -76.80414], + ["2020-05-05T01:28:18", 17.6354, -76.80328], + ["2020-05-05T01:58:18", 17.63862, -76.80234], + ["2020-05-05T02:25:51", 17.64157, -76.80123], + ["2020-05-05T02:55:51", 17.64427, -76.8002], + ["2020-05-05T06:54:34", 17.66409, -76.79031], + ["2020-05-05T08:24:07", 17.66843, -76.78722], + ["2020-05-05T14:22:26", 17.67152, -76.77884], + ["2020-05-05T14:52:10", 17.67246, -76.77992], + ["2020-05-05T15:25:50", 17.67379, -76.7814], + ["2020-05-05T15:52:10", 17.67482, -76.78274], + ["2020-05-05T16:23:12", 17.67673, -76.78514], + ["2020-05-05T16:53:12", 17.67918, -76.78762], + ["2020-05-05T19:21:14", 17.69445, -76.802], + ["2020-05-05T20:22:08", 17.70257, -76.80867], + ["2020-05-05T20:52:08", 17.70643, -76.81185], + ["2020-05-05T21:22:08", 17.70986, -76.81485], + ["2020-05-05T23:49:47", 17.72414, -76.82953], + ["2020-05-06T04:18:22", 17.73142, -76.86257], + ["2020-05-06T04:48:22", 17.73121, -76.86584], + ["2020-05-06T05:18:22", 17.7307, -76.86893], + ["2020-05-06T05:49:32", 17.7298, -76.87219], + ["2020-05-06T10:17:21", 17.71019, -76.90372], + ["2020-05-06T10:47:02", 17.70687, -76.90845], + ["2020-05-06T11:17:02", 17.70417, -76.91266], + ["2020-05-06T12:48:18", 17.69697, -76.92509], + ["2020-05-06T13:18:18", 17.69547, -76.92921], + ["2020-05-06T13:48:18", 17.69393, -76.93393], + ["2020-05-06T14:45:50", 17.69175, -76.94135], + ["2020-05-06T15:45:32", 17.68979, -76.9487], + ["2020-05-06T16:14:59", 17.68887, -76.9526], + ["2020-05-06T16:44:59", 17.6875, -76.95552], + ["2020-05-06T17:14:59", 17.6863, -76.95792], + ["2020-05-06T17:46:36", 17.68554, -76.96109], + ["2020-05-06T18:14:24", 17.68527, -76.96411], + ["2020-05-06T18:46:36", 17.68459, -76.96735], + ["2020-05-06T19:44:03", 17.6833, -76.97504], + ["2020-05-06T20:13:37", 17.68301, -76.98027], + ["2020-05-06T20:43:37", 17.6828, -76.98508], + ["2020-05-06T22:43:40", 17.6811, -77.00861], + ["2020-05-07T02:14:28", 17.67833, -77.04559], + ["2020-05-07T05:41:10", 17.67544, -77.06905], + ["2020-05-07T06:12:36", 17.67534, -77.07211], + ["2020-05-07T06:40:52", 17.67497, -77.07504], + ["2020-05-07T07:12:27", 17.67464, -77.07831], + ["2020-05-07T07:42:28", 17.67451, -77.08131], + ["2020-05-07T08:12:28", 17.67404, -77.08466], + ["2020-05-07T09:40:29", 17.67146, -77.09702], + ["2020-05-07T10:10:29", 17.66992, -77.10157], + ["2020-05-07T10:40:29", 17.66816, -77.10715], + ["2020-05-07T12:08:45", 17.66457, -77.12237], + ["2020-05-07T12:38:45", 17.6635, -77.12735], + ["2020-05-07T13:08:45", 17.66316, -77.13113], + ["2020-05-07T13:38:34", 17.66244, -77.13504], + ["2020-05-07T14:09:59", 17.66152, -77.13845], + ["2020-05-07T14:38:27", 17.66103, -77.14087], + ["2020-05-07T15:09:59", 17.66062, -77.14333], + ["2020-05-07T16:07:53", 17.66037, -77.14756], + ["2020-05-07T16:37:53", 17.66024, -77.14901], + ["2020-05-07T17:07:53", 17.65998, -77.15125], + ["2020-05-07T17:22:41", 17.66006, -77.1524], + ["2020-05-07T17:39:26", 17.66005, -77.15347], + ["2020-05-07T18:09:26", 17.66022, -77.15562], + ["2020-05-07T18:39:26", 17.66073, -77.1581], + ["2020-05-07T19:37:00", 17.66176, -77.16289], + ["2020-05-07T20:07:00", 17.6624, -77.16616], + ["2020-05-07T20:37:00", 17.66309, -77.16968], + ["2020-05-07T22:06:06", 17.66562, -77.18322], + ["2020-05-07T22:36:06", 17.66665, -77.18847], + ["2020-05-07T23:06:06", 17.66755, -77.19379], + ["2020-05-07T23:35:56", 17.66884, -77.19968], + ["2020-05-08T00:05:56", 17.66996, -77.20483], + ["2020-05-08T02:35:32", 17.67599, -77.22647], + ["2020-05-08T04:07:41", 17.67821, -77.23466], + ["2020-05-08T04:37:41", 17.67817, -77.23689], + ["2020-05-08T05:07:41", 17.67903, -77.23904], + ["2020-05-08T05:34:45", 17.67904, -77.24122], + ["2020-05-08T06:04:45", 17.67917, -77.24405], + ["2020-05-08T06:37:33", 17.67934, -77.24715], + ["2020-05-08T07:07:33", 17.67934, -77.25051], + ["2020-05-08T07:37:33", 17.67994, -77.25369], + ["2020-05-09T21:53:48", 17.76954, -77.61978], + ["2020-05-09T22:53:00", 17.77284, -77.63126], + ["2020-05-09T23:23:00", 17.77378, -77.63735], + ["2020-05-09T23:53:00", 17.77545, -77.6431], + ["2020-05-10T00:22:25", 17.77741, -77.64949], + ["2020-05-10T00:52:25", 17.77964, -77.65661], + ["2020-05-10T01:22:25", 17.7811, -77.66296], + ["2020-05-10T01:52:15", 17.78306, -77.67084], + ["2020-05-10T02:23:31", 17.78485, -77.6791], + ["2020-05-10T02:53:32", 17.78635, -77.68742], + ["2020-05-10T03:23:32", 17.7885, -77.69583], + ["2020-05-10T05:50:32", 17.79851, -77.74006], + ["2020-05-10T06:20:32", 17.80104, -77.74872], + ["2020-05-10T06:50:32", 17.80254, -77.75723], + ["2020-05-10T07:20:12", 17.80479, -77.76602], + ["2020-05-10T07:50:12", 17.80621, -77.77383], + ["2020-05-10T08:21:58", 17.80861, -77.78234], + ["2020-05-10T08:49:56", 17.81053, -77.78995], + ["2020-05-10T09:19:36", 17.81293, -77.79808], + ["2020-05-10T09:51:59", 17.81557, -77.80637], + ["2020-05-10T10:19:36", 17.81881, -77.81292], + ["2020-05-10T12:48:53", 17.8346, -77.85278], + ["2020-05-10T13:18:53", 17.83739, -77.86015], + ["2020-05-10T13:48:53", 17.84082, -77.86823], + ["2020-05-10T14:20:06", 17.8445, -77.87676], + ["2020-05-10T14:49:40", 17.84771, -77.88455], + ["2020-05-10T15:19:40", 17.85166, -77.89246], + ["2020-05-10T15:51:01", 17.85496, -77.90016], + ["2020-05-10T16:21:01", 17.85818, -77.90891], + ["2020-05-10T17:48:07", 17.86838, -77.93326], + ["2020-05-10T18:18:07", 17.87194, -77.94134], + ["2020-05-10T18:48:07", 17.87482, -77.94768], + ["2020-05-10T19:49:49", 17.8825, -77.95883], + ["2020-05-10T20:47:48", 17.88795, -77.96579], + ["2020-05-10T21:19:29", 17.89061, -77.96917], + ["2020-05-10T21:49:29", 17.89396, -77.97277], + ["2020-05-10T22:19:29", 17.89791, -77.97629], + ["2020-05-10T23:48:59", 17.9118, -77.98774], + ["2020-05-11T00:18:59", 17.91648, -77.99048], + ["2020-05-11T00:48:59", 17.9224, -77.99332], + ["2020-05-11T01:16:33", 17.92781, -77.9959], + ["2020-05-11T02:46:23", 17.94598, -78.00217], + ["2020-05-11T03:46:38", 17.95715, -78.00762], + ["2020-05-11T04:16:38", 17.96196, -78.01018], + ["2020-05-11T04:46:38", 17.96642, -78.01276], + ["2020-05-11T05:15:02", 17.97033, -78.01537], + ["2020-05-11T05:45:02", 17.97432, -78.01812], + ["2020-05-11T06:15:02", 17.97715, -78.02155], + ["2020-05-11T06:44:39", 17.98022, -78.02561], + ["2020-05-11T07:14:39", 17.98241, -78.02921], + ["2020-05-11T07:45:29", 17.98368, -78.03333], + ["2020-05-11T08:14:28", 17.98512, -78.03711], + ["2020-05-11T08:45:29", 17.98741, -78.04105], + ["2020-05-11T09:15:00", 17.98933, -78.04455], + ["2020-05-11T09:45:00", 17.99186, -78.04858], + ["2020-05-11T10:13:42", 17.99435, -78.05295], + ["2020-05-11T10:44:41", 17.99825, -78.05929], + ["2020-05-11T11:13:17", 18.00237, -78.0651], + ["2020-05-11T11:43:17", 18.00662, -78.07128], + ["2020-05-11T12:13:17", 18.01053, -78.07669], + ["2020-05-11T13:14:06", 18.02061, -78.08588], + ["2020-05-11T14:43:20", 18.03481, -78.09296], + ["2020-05-11T15:13:20", 18.03897, -78.0939], + ["2020-05-11T15:43:20", 18.043, -78.0946], + ["2020-05-11T16:12:21", 18.04672, -78.09515], + ["2020-05-11T16:42:57", 18.056, -78.09891], + ["2020-05-11T16:43:56", 18.05089, -78.09619], + ["2020-05-11T17:22:38", 18.05684, -78.09936], + ["2020-05-11T17:42:57", 18.05952, -78.10251], + ["2020-05-11T18:11:49", 18.06314, -78.10742], + ["2020-05-11T19:42:30", 18.07418, -78.12347], + ["2020-05-11T20:10:59", 18.0778, -78.12818], + ["2020-05-11T20:40:59", 18.08183, -78.13299], + ["2020-05-11T21:10:59", 18.08569, -78.13702], + ["2020-05-11T21:42:57", 18.09, -78.14154], + ["2020-05-11T22:40:25", 18.09786, -78.14789], + ["2020-05-11T23:39:47", 18.10582, -78.15197], + ["2020-05-12T00:09:47", 18.1099, -78.15309], + ["2020-05-12T00:39:47", 18.11333, -78.15482], + ["2020-05-12T01:09:19", 18.11806, -78.15577], + ["2020-05-12T01:39:19", 18.12197, -78.15552], + ["2020-05-12T02:10:28", 18.12619, -78.15503], + ["2020-05-12T02:40:28", 18.12962, -78.1546], + ["2020-05-12T03:10:28", 18.13074, -78.15313], + ["2020-05-12T04:08:39", 18.13206, -78.14986], + ["2020-05-12T04:38:39", 18.13206, -78.14892], + ["2020-05-12T05:08:39", 18.1327, -78.14746], + ["2020-05-12T05:37:59", 18.13352, -78.146], + ["2020-05-12T06:07:43", 18.13431, -78.14472], + ["2020-05-12T06:37:43", 18.13508, -78.14343], + ["2020-05-12T07:07:36", 18.13601, -78.14256], + ["2020-05-12T07:37:36", 18.13657, -78.1423], + ["2020-05-12T08:37:30", 18.13739, -78.14304], + ["2020-05-12T09:07:30", 18.13633, -78.14252], + ["2020-05-12T09:37:25", 18.13522, -78.14192], + ["2020-05-12T10:07:25", 18.13488, -78.14175], + ["2020-05-12T10:36:28", 18.13424, -78.14181], + ["2020-05-12T11:06:28", 18.13317, -78.14215], + ["2020-05-12T11:36:28", 18.13231, -78.14215], + ["2020-05-12T12:06:12", 18.13158, -78.14205], + ["2020-05-12T12:36:12", 18.13038, -78.14145], + ["2020-05-12T13:06:00", 18.12807, -78.13988], + ["2020-05-12T13:36:00", 18.12738, -78.13885], + ["2020-05-12T14:06:28", 18.1273, -78.13798], + ["2020-05-12T14:36:28", 18.12683, -78.13746], + ["2020-05-12T15:06:28", 18.12606, -78.13643], + ["2020-05-12T15:35:42", 18.12626, -78.13562], + ["2020-05-12T16:05:57", 18.12812, -78.13614], + ["2020-05-12T16:35:28", 18.13098, -78.1376], + ["2020-05-12T17:05:28", 18.13536, -78.14078], + ["2020-05-12T17:23:08", 18.13828, -78.14306], + ["2020-05-12T18:05:26", 18.14503, -78.14946], + ["2020-05-12T18:35:26", 18.14975, -78.15402], + ["2020-05-12T19:05:26", 18.15426, -78.15805], + ["2020-05-12T19:34:42", 18.15862, -78.16113], + ["2020-05-12T20:04:56", 18.16274, -78.16357], + ["2020-05-12T20:34:25", 18.16466, -78.16544], + ["2020-05-12T21:04:01", 18.16272, -78.16604], + ["2020-05-12T21:34:01", 18.1598, -78.16544], + ["2020-05-12T22:03:43", 18.15813, -78.16467], + ["2020-05-12T22:33:43", 18.15701, -78.16278], + ["2020-05-12T23:03:56", 18.15531, -78.1611], + ["2020-05-12T23:33:56", 18.15346, -78.15998], + ["2020-05-13T00:03:56", 18.15286, -78.15774], + ["2020-05-13T00:33:30", 18.15307, -78.15485], + ["2020-05-13T01:03:30", 18.15367, -78.15228], + ["2020-05-13T01:32:37", 18.15396, -78.15038], + ["2020-05-13T02:03:10", 18.15368, -78.1489], + ["2020-05-13T02:32:37", 18.15345, -78.14755], + ["2020-05-13T03:02:59", 18.1524, -78.14642], + ["2020-05-13T03:32:16", 18.15024, -78.14575], + ["2020-05-13T04:01:54", 18.14766, -78.14516], + ["2020-05-13T04:31:54", 18.14547, -78.14465], + ["2020-05-13T05:02:00", 18.1429, -78.14437], + ["2020-05-13T05:32:00", 18.14084, -78.14394], + ["2020-05-13T06:02:00", 18.13882, -78.14324], + ["2020-05-13T06:31:29", 18.1374, -78.14331], + ["2020-05-13T07:01:29", 18.13633, -78.1434], + ["2020-05-13T07:31:09", 18.13545, -78.14393], + ["2020-05-13T08:01:09", 18.13481, -78.14462], + ["2020-05-13T08:30:36", 18.13392, -78.14532], + ["2020-05-13T09:00:17", 18.1329, -78.14599], + ["2020-05-13T09:30:17", 18.13166, -78.14642], + ["2020-05-13T10:00:11", 18.13043, -78.14743], + ["2020-05-13T10:30:11", 18.12949, -78.14829], + ["2020-05-13T11:00:11", 18.1288, -78.14941], + ["2020-05-13T11:29:31", 18.12799, -78.15063], + ["2020-05-13T11:59:57", 18.12712, -78.15208], + ["2020-05-13T12:29:57", 18.12609, -78.15345], + ["2020-05-13T12:59:57", 18.12497, -78.15491], + ["2020-05-13T13:29:13", 18.12364, -78.15573], + ["2020-05-13T13:59:25", 18.12186, -78.15619], + ["2020-05-13T14:29:25", 18.11993, -78.15636], + ["2020-05-13T14:59:25", 18.11787, -78.15662], + ["2020-05-13T15:28:58", 18.11622, -78.15713], + ["2020-05-13T15:58:58", 18.11532, -78.15756], + ["2020-05-13T16:22:33", 18.11739, -78.1586], + ["2020-05-13T16:52:33", 18.11915, -78.15869], + ["2020-05-13T17:22:33", 18.11966, -78.15869], + ["2020-05-13T17:27:56", 18.12015, -78.15875], + ["2020-05-13T17:57:30", 18.12303, -78.1591], + ["2020-05-13T18:27:30", 18.12565, -78.15927], + ["2020-05-13T18:57:01", 18.1288, -78.1594], + ["2020-05-13T19:27:01", 18.13163, -78.16], + ["2020-05-13T19:56:57", 18.135, -78.16182], + ["2020-05-13T20:26:57", 18.13865, -78.16234], + ["2020-05-13T20:56:57", 18.14256, -78.16251], + ["2020-05-13T21:26:27", 18.14614, -78.16252], + ["2020-05-13T21:56:27", 18.14897, -78.16235], + ["2020-05-13T22:25:49", 18.15059, -78.16284], + ["2020-05-13T22:55:56", 18.15289, -78.16379], + ["2020-05-13T23:25:21", 18.15523, -78.16495], + ["2020-05-13T23:55:03", 18.15664, -78.16714], + ["2020-05-14T00:25:03", 18.15668, -78.16946], + ["2020-05-14T00:54:50", 18.15689, -78.17104], + ["2020-05-14T01:24:50", 18.1574, -78.17242], + ["2020-05-14T01:54:34", 18.15736, -78.17377], + ["2020-05-14T02:24:34", 18.15697, -78.17429], + ["2020-05-14T02:54:57", 18.15552, -78.17462], + ["2020-05-14T03:54:10", 18.14843, -78.17713], + ["2020-05-14T04:24:10", 18.14487, -78.17774], + ["2020-05-14T04:54:10", 18.14152, -78.17868], + ["2020-05-14T05:23:35", 18.13835, -78.17946], + ["2020-05-14T05:53:55", 18.13546, -78.18011], + ["2020-05-14T06:22:57", 18.13292, -78.18096], + ["2020-05-14T06:52:57", 18.13, -78.18156], + ["2020-05-14T07:22:57", 18.12717, -78.1825], + ["2020-05-14T11:51:58", 18.09523, -78.20309], + ["2020-05-14T12:21:25", 18.0934, -78.20731], + ["2020-05-14T12:51:26", 18.09215, -78.21201], + ["2020-05-14T13:21:06", 18.09076, -78.21661], + ["2020-05-14T13:50:48", 18.09052, -78.22166], + ["2020-05-14T14:20:48", 18.09138, -78.2269], + ["2020-05-14T14:50:31", 18.09287, -78.23269], + ["2020-05-14T15:20:31", 18.09484, -78.23853], + ["2020-05-14T15:50:28", 18.09658, -78.24433], + ["2020-05-14T16:20:28", 18.09851, -78.25], + ["2020-05-14T16:50:28", 18.10053, -78.25548], + ["2020-05-14T17:20:28", 18.10288, -78.26161], + ["2020-05-14T17:50:28", 18.1052, -78.26703], + ["2020-05-14T18:20:27", 18.10776, -78.27343], + ["2020-05-14T18:50:27", 18.11094, -78.27979], + ["2020-05-14T19:49:53", 18.11914, -78.29169], + ["2020-05-14T20:19:53", 18.12352, -78.29675], + ["2020-05-14T20:49:53", 18.1282, -78.30173], + ["2020-05-14T21:19:10", 18.13328, -78.30606], + ["2020-05-14T21:49:30", 18.13888, -78.31036], + ["2020-05-14T22:19:01", 18.1447, -78.31426], + ["2020-05-14T22:48:59", 18.15065, -78.3178], + ["2020-05-14T23:18:59", 18.15619, -78.32115], + ["2020-05-14T23:48:59", 18.16173, -78.32458], + ["2020-05-15T00:18:23", 18.16671, -78.32778], + ["2020-05-15T00:47:58", 18.17165, -78.3312], + ["2020-05-15T01:17:58", 18.17611, -78.33386], + ["2020-05-15T01:48:27", 18.18062, -78.3364], + ["2020-05-15T02:17:19", 18.18475, -78.33851], + ["2020-05-15T02:47:19", 18.18896, -78.34048], + ["2020-05-15T03:17:19", 18.19308, -78.3428], + ["2020-05-15T03:47:31", 18.19737, -78.34533], + ["2020-05-15T04:16:40", 18.20182, -78.34799], + ["2020-05-15T04:46:40", 18.2062, -78.35133], + ["2020-05-15T05:16:40", 18.21006, -78.35442], + ["2020-05-15T05:46:18", 18.2146, -78.35711], + ["2020-05-15T06:16:18", 18.21782, -78.35995], + ["2020-05-15T06:45:53", 18.22165, -78.36236], + ["2020-05-15T07:15:53", 18.22453, -78.36554], + ["2020-05-15T07:46:13", 18.22697, -78.36862] + ], + "drifter_15": [ + ["2019-08-04T10:48:00", 8.41891, -49.72757], + ["2019-08-04T11:31:55", 8.4139, -49.72424], + ["2019-08-04T12:31:55", 8.41102, -49.71986], + ["2019-08-04T13:31:55", 8.40504, -49.71497], + ["2019-08-04T14:30:58", 8.4006, -49.71158], + ["2019-08-04T15:30:30", 8.39141, -49.70828], + ["2019-08-04T16:28:13", 8.38095, -49.70744], + ["2019-08-04T17:28:13", 8.36952, -49.70856], + ["2019-08-04T18:28:13", 8.35244, -49.71088], + ["2019-08-04T23:28:11", 8.26965, -49.72403], + ["2019-08-05T06:25:57", 8.22322, -49.79285], + ["2019-08-05T10:24:58", 8.20252, -49.82925], + ["2019-08-05T14:22:48", 8.22486, -49.86731], + ["2019-08-05T15:20:16", 8.23395, -49.88065], + ["2019-08-05T16:22:12", 8.24478, -49.88995], + ["2019-08-05T17:20:28", 8.25664, -49.89391], + ["2019-08-05T18:20:28", 8.26703, -49.89786], + ["2019-08-06T01:15:37", 8.30869, -49.89908], + ["2019-08-06T11:12:29", 8.29137, -49.88055], + ["2019-08-06T12:12:58", 8.28853, -49.87976], + ["2019-08-06T16:11:21", 8.28738, -49.87912], + ["2019-08-06T20:08:37", 8.29916, -49.87796], + ["2019-08-06T22:06:27", 8.2993, -49.868], + ["2019-08-06T23:08:30", 8.30017, -49.86301], + ["2019-08-07T00:06:27", 8.30269, -49.85916], + ["2019-08-07T02:08:30", 8.32307, -49.85114], + ["2019-08-07T03:08:30", 8.33557, -49.84479], + ["2019-08-07T07:04:10", 8.37073, -49.82834], + ["2019-08-07T11:03:58", 8.38283, -49.81024], + ["2019-08-07T12:02:46", 8.39476, -49.79674], + ["2019-08-07T14:02:46", 8.39662, -49.79056], + ["2019-08-07T21:58:31", 8.38378, -49.74283], + ["2019-08-07T22:56:36", 8.37925, -49.73879], + ["2019-08-07T23:56:36", 8.37332, -49.73467], + ["2019-08-08T00:56:36", 8.36561, -49.73132], + ["2019-08-08T01:56:43", 8.35826, -49.7243], + ["2019-08-08T02:56:48", 8.35261, -49.71613], + ["2019-08-08T03:56:58", 8.35333, -49.7074], + ["2019-08-08T04:54:50", 8.35471, -49.69919], + ["2019-08-08T05:54:41", 8.35455, -49.68997], + ["2019-08-08T08:56:30", 8.33216, -49.67041], + ["2019-08-09T00:48:02", 8.02722, -49.77008], + ["2019-08-09T01:45:10", 8.01019, -49.7821], + ["2019-08-09T02:47:18", 7.99202, -49.79568], + ["2019-08-09T03:44:35", 7.97854, -49.80807], + ["2019-08-09T09:44:27", 7.93758, -49.87051], + ["2019-08-09T12:41:05", 7.92266, -49.89008], + ["2019-08-09T14:39:58", 7.92097, -49.89697], + ["2019-08-09T15:39:30", 7.9214, -49.89664], + ["2019-08-09T16:39:30", 7.91994, -49.89389], + ["2019-08-09T22:36:11", 7.94093, -49.8721], + ["2019-08-09T23:37:23", 7.95239, -49.86639], + ["2019-08-10T00:37:23", 7.9623, -49.85892], + ["2019-08-10T01:37:23", 7.97002, -49.8475], + ["2019-08-10T09:31:46", 8.00503, -49.7392], + ["2019-08-10T13:29:29", 8.00845, -49.66248], + ["2019-08-10T14:29:11", 8.01066, -49.64331], + ["2019-08-10T15:28:04", 8.01038, -49.62375], + ["2019-08-10T16:29:01", 8.00783, -49.60461], + ["2019-08-10T19:26:58", 7.99985, -49.55984], + ["2019-08-11T04:24:30", 7.93395, -49.4129], + ["2019-08-11T05:22:06", 7.92516, -49.4014], + ["2019-08-11T06:22:31", 7.9151, -49.3888], + ["2019-08-11T07:22:31", 7.90532, -49.3779], + ["2019-08-11T08:21:52", 7.89548, -49.3684], + ["2019-08-11T09:21:52", 7.88458, -49.36136] + ], + "drifter_16": [ + ["2019-08-06T13:27:00", 10.46221, -53.67437], + ["2019-08-06T13:50:21", 10.46457, -53.6765], + ["2019-08-06T14:20:21", 10.46736, -53.6783], + ["2019-08-06T14:50:21", 10.46822, -53.6795], + ["2019-08-06T15:19:55", 10.4687, -53.67991], + ["2019-08-06T15:49:55", 10.46896, -53.67914], + ["2019-08-06T16:20:09", 10.46943, -53.67817], + ["2019-08-06T16:50:09", 10.4702, -53.67731], + ["2019-08-06T17:19:39", 10.47111, -53.67584], + ["2019-08-06T19:49:26", 10.48257, -53.67159], + ["2019-08-06T20:19:26", 10.48463, -53.67039], + ["2019-08-06T20:49:26", 10.48596, -53.6673], + ["2019-08-06T21:53:40", 10.48821, -53.66101], + ["2019-08-06T23:18:26", 10.48869, -53.65338], + ["2019-08-06T23:49:28", 10.48812, -53.65076], + ["2019-08-07T00:18:10", 10.48681, -53.64828], + ["2019-08-07T00:48:01", 10.4848, -53.64529], + ["2019-08-07T01:18:01", 10.48326, -53.64246], + ["2019-08-07T01:48:25", 10.48108, -53.63983], + ["2019-08-07T02:17:53", 10.47914, -53.63754], + ["2019-08-07T03:47:58", 10.47211, -53.63065], + ["2019-08-07T04:17:58", 10.46936, -53.6285], + ["2019-08-07T04:47:58", 10.46631, -53.6261], + ["2019-08-07T05:17:14", 10.46332, -53.62433], + ["2019-08-07T06:47:26", 10.45314, -53.62289], + ["2019-08-07T07:16:56", 10.44986, -53.62198], + ["2019-08-07T07:46:56", 10.44681, -53.62112], + ["2019-08-07T09:16:16", 10.44114, -53.61658], + ["2019-08-07T09:45:47", 10.43934, -53.61492], + ["2019-08-07T10:16:28", 10.43804, -53.61353], + ["2019-08-07T10:45:47", 10.43621, -53.61157], + ["2019-08-07T11:15:28", 10.4338, -53.60968], + ["2019-08-07T11:45:28", 10.43195, -53.60779], + ["2019-08-07T12:45:20", 10.42931, -53.60507], + ["2019-08-07T13:47:26", 10.42769, -53.60266], + ["2019-08-07T14:17:26", 10.42662, -53.60223], + ["2019-08-07T14:47:26", 10.42615, -53.60172], + ["2019-08-07T15:16:45", 10.42566, -53.60147], + ["2019-08-07T15:44:50", 10.42501, -53.60071], + ["2019-08-07T19:13:42", 10.41794, -53.5962], + ["2019-08-07T19:43:42", 10.41609, -53.59543], + ["2019-08-07T20:13:42", 10.41429, -53.59543], + ["2019-08-07T20:43:13", 10.41211, -53.59552], + ["2019-08-07T21:13:13", 10.41057, -53.59561], + ["2019-08-07T21:24:27", 10.40956, -53.59567], + ["2019-08-07T21:54:27", 10.40935, -53.59576], + ["2019-08-07T22:12:54", 10.40887, -53.59601], + ["2019-08-07T22:43:03", 10.40813, -53.59572], + ["2019-08-07T23:13:03", 10.40731, -53.59529], + ["2019-08-07T23:43:03", 10.40632, -53.59512], + ["2019-08-08T00:12:39", 10.40542, -53.59525], + ["2019-08-08T00:43:29", 10.40516, -53.59698], + ["2019-08-08T01:43:13", 10.40486, -53.60437], + ["2019-08-08T02:11:45", 10.40476, -53.60883], + ["2019-08-08T02:41:45", 10.40467, -53.61372], + ["2019-08-08T03:11:45", 10.40467, -53.6181], + ["2019-08-08T03:43:00", 10.40447, -53.62198], + ["2019-08-08T04:11:19", 10.40347, -53.6254], + ["2019-08-08T04:41:56", 10.40214, -53.62906], + ["2019-08-08T05:10:43", 10.40047, -53.63223], + ["2019-08-08T05:40:43", 10.39884, -53.63532], + ["2019-08-08T06:10:43", 10.39742, -53.63867], + ["2019-08-08T06:42:04", 10.39535, -53.642], + ["2019-08-08T07:10:34", 10.39313, -53.64499], + ["2019-08-08T07:40:59", 10.39085, -53.64825], + ["2019-08-08T08:10:34", 10.38835, -53.6517], + ["2019-08-08T08:40:55", 10.3861, -53.6561], + ["2019-08-08T09:10:58", 10.38385, -53.66008], + ["2019-08-08T09:40:58", 10.38106, -53.66351], + ["2019-08-08T10:10:26", 10.37841, -53.6673], + ["2019-08-08T10:41:28", 10.3755, -53.67112], + ["2019-08-08T11:11:28", 10.37301, -53.67498], + ["2019-08-08T11:41:28", 10.37091, -53.67996], + ["2019-08-08T12:10:08", 10.36884, -53.68524], + ["2019-08-08T13:09:44", 10.36349, -53.69757], + ["2019-08-08T15:09:09", 10.35719, -53.72028], + ["2019-08-08T15:39:09", 10.35582, -53.725], + ["2019-08-08T16:09:09", 10.35462, -53.72946], + ["2019-08-08T17:08:42", 10.35119, -53.73721], + ["2019-08-08T17:40:22", 10.34878, -53.74045], + ["2019-08-08T18:10:22", 10.34689, -53.74594], + ["2019-08-08T18:38:59", 10.34552, -53.75031], + ["2019-08-08T19:08:59", 10.3429, -53.75537], + ["2019-08-08T19:38:59", 10.3405, -53.76129], + ["2019-08-08T20:54:25", 10.33228, -53.7823], + ["2019-08-08T21:24:25", 10.33155, -53.78402], + ["2019-08-08T21:54:25", 10.33104, -53.78522], + ["2019-08-08T22:07:27", 10.33012, -53.78781], + ["2019-08-09T01:37:28", 10.31692, -53.82768], + ["2019-08-09T02:06:31", 10.31553, -53.83395], + ["2019-08-09T02:37:28", 10.31378, -53.84073], + ["2019-08-09T03:06:25", 10.31197, -53.84705], + ["2019-08-09T04:35:59", 10.30854, -53.86823], + ["2019-08-09T05:05:54", 10.30822, -53.87679], + ["2019-08-09T05:35:54", 10.30788, -53.88443], + ["2019-08-09T06:06:57", 10.30803, -53.8924], + ["2019-08-09T07:05:59", 10.30941, -53.90658], + ["2019-08-09T07:35:36", 10.31037, -53.9126], + ["2019-08-09T08:05:59", 10.3116, -53.91876], + ["2019-08-09T09:06:27", 10.31526, -53.93076], + ["2019-08-09T09:34:53", 10.3178, -53.93683], + ["2019-08-09T10:04:38", 10.32078, -53.944], + ["2019-08-09T10:34:38", 10.32271, -53.94949], + ["2019-08-09T15:05:00", 10.33185, -53.99768], + ["2019-08-09T17:02:50", 10.33805, -54.0223], + ["2019-08-09T17:32:50", 10.3408, -54.02899], + ["2019-08-09T18:02:50", 10.34325, -54.03534], + ["2019-08-09T18:33:59", 10.34596, -54.04211], + ["2019-08-09T19:02:51", 10.34823, -54.04794], + ["2019-08-09T19:34:30", 10.35074, -54.0542], + ["2019-08-09T20:02:24", 10.35377, -54.05951], + ["2019-08-10T01:01:40", 10.38493, -54.08725], + ["2019-08-10T01:32:04", 10.38531, -54.0887], + ["2019-08-10T02:01:36", 10.38542, -54.09024], + ["2019-08-10T02:32:04", 10.38536, -54.09161], + ["2019-08-10T03:31:30", 10.38508, -54.09528], + ["2019-08-10T04:01:08", 10.38516, -54.09686], + ["2019-08-10T04:31:30", 10.3856, -54.0994], + ["2019-08-10T05:00:42", 10.38586, -54.10161], + ["2019-08-10T05:31:31", 10.38644, -54.10428], + ["2019-08-10T06:00:42", 10.38762, -54.10684], + ["2019-08-10T07:30:56", 10.39299, -54.11506], + ["2019-08-10T08:00:56", 10.39492, -54.11721], + ["2019-08-10T08:30:56", 10.39646, -54.11841], + ["2019-08-10T09:00:57", 10.39791, -54.1195], + ["2019-08-10T09:30:57", 10.39924, -54.12122], + ["2019-08-10T10:59:37", 10.40363, -54.12506], + ["2019-08-10T12:29:58", 10.40657, -54.12632], + ["2019-08-10T12:59:36", 10.40673, -54.12717], + ["2019-08-10T13:29:58", 10.40678, -54.12778], + ["2019-08-10T18:28:28", 10.41045, -54.1575], + ["2019-08-10T19:28:43", 10.40969, -54.16333], + ["2019-08-10T20:56:57", 10.40819, -54.16989], + ["2019-08-10T21:26:59", 10.40876, -54.16864], + ["2019-08-10T21:56:57", 10.4081, -54.17032], + ["2019-08-10T22:27:07", 10.40742, -54.1723], + ["2019-08-10T22:57:43", 10.40667, -54.17432], + ["2019-08-10T23:26:32", 10.4053, -54.17627], + ["2019-08-11T02:26:59", 10.39758, -54.19868], + ["2019-08-11T02:56:59", 10.39509, -54.20289], + ["2019-08-11T03:26:59", 10.39221, -54.2077], + ["2019-08-11T03:55:27", 10.38914, -54.21243], + ["2019-08-11T04:26:27", 10.38609, -54.21808], + ["2019-08-11T08:56:56", 10.38446, -54.26331], + ["2019-08-11T09:24:07", 10.38586, -54.2677], + ["2019-08-11T09:54:56", 10.38669, -54.27247], + ["2019-08-11T10:24:56", 10.38755, -54.27719], + ["2019-08-11T10:54:55", 10.3888, -54.28239], + ["2019-08-11T11:24:55", 10.39082, -54.28754], + ["2019-08-11T11:56:13", 10.39171, -54.29246], + ["2019-08-11T12:26:13", 10.3921, -54.2977], + ["2019-08-11T12:54:35", 10.39235, -54.30307], + ["2019-08-11T15:23:04", 10.39462, -54.33249], + ["2019-08-11T15:54:23", 10.39572, -54.33862], + ["2019-08-11T16:22:53", 10.39667, -54.34409], + ["2019-08-11T17:25:04", 10.3975, -54.35468], + ["2019-08-11T17:53:00", 10.3978, -54.3591], + ["2019-08-11T19:22:01", 10.39837, -54.37434], + ["2019-08-11T19:53:27", 10.39911, -54.37982], + ["2019-08-11T20:22:01", 10.40034, -54.38507], + ["2019-08-11T20:51:51", 10.40188, -54.39088], + ["2019-08-11T21:21:51", 10.40347, -54.39603], + ["2019-08-11T23:23:10", 10.41051, -54.41583], + ["2019-08-12T00:22:58", 10.41277, -54.42532], + ["2019-08-12T00:51:15", 10.41346, -54.42932], + ["2019-08-12T01:22:58", 10.41337, -54.43338], + ["2019-08-12T02:51:30", 10.41258, -54.44525], + ["2019-08-12T03:21:30", 10.41142, -54.44868], + ["2019-08-12T03:51:30", 10.40975, -54.45203], + ["2019-08-12T04:21:30", 10.40847, -54.45603], + ["2019-08-12T04:51:30", 10.40753, -54.46066], + ["2019-08-12T05:50:57", 10.40579, -54.47083], + ["2019-08-12T06:20:57", 10.40583, -54.47529], + ["2019-08-12T06:50:57", 10.40579, -54.47992], + ["2019-08-12T07:19:37", 10.40566, -54.4841], + ["2019-08-12T07:50:26", 10.40607, -54.48877], + ["2019-08-12T08:51:26", 10.40781, -54.49902], + ["2019-08-12T11:18:33", 10.40596, -54.52649], + ["2019-08-12T11:49:32", 10.4058, -54.5325], + ["2019-08-12T12:18:33", 10.40558, -54.5379], + ["2019-08-12T13:48:20", 10.40609, -54.55618], + ["2019-08-12T14:18:47", 10.40602, -54.56293], + ["2019-08-12T14:48:20", 10.40596, -54.56931], + ["2019-08-12T18:47:33", 10.41057, -54.61893], + ["2019-08-12T19:19:28", 10.41169, -54.62485], + ["2019-08-12T19:47:20", 10.41325, -54.63037], + ["2019-08-12T20:17:42", 10.41457, -54.63726], + ["2019-08-12T20:47:42", 10.41564, -54.64481], + ["2019-08-12T21:17:11", 10.41714, -54.65186], + ["2019-08-12T21:46:56", 10.41923, -54.66124], + ["2019-08-12T22:16:56", 10.42026, -54.66742], + ["2019-08-12T22:46:56", 10.42211, -54.67566], + ["2019-08-12T23:17:37", 10.42456, -54.68481], + ["2019-08-12T23:46:17", 10.42745, -54.69316], + ["2019-08-13T00:17:10", 10.4303, -54.70056], + ["2019-08-13T00:46:17", 10.4329, -54.70767], + ["2019-08-13T01:15:52", 10.4353, -54.71515], + ["2019-08-13T01:45:52", 10.43732, -54.72167], + ["2019-08-13T02:15:52", 10.43951, -54.72794], + ["2019-08-13T03:48:06", 10.44712, -54.74405], + ["2019-08-13T07:16:25", 10.46543, -54.77429], + ["2019-08-13T07:44:45", 10.46774, -54.77808], + ["2019-08-13T08:44:10", 10.4713, -54.78609], + ["2019-08-13T09:14:10", 10.47254, -54.79098], + ["2019-08-13T09:44:10", 10.4734, -54.79587], + ["2019-08-13T10:43:40", 10.47716, -54.80808], + ["2019-08-13T11:14:57", 10.47917, -54.81342], + ["2019-08-13T11:43:40", 10.4815, -54.81924], + ["2019-08-13T12:13:34", 10.48349, -54.82471], + ["2019-08-13T12:43:34", 10.48525, -54.82986], + ["2019-08-13T14:44:31", 10.49446, -54.85139], + ["2019-08-13T15:14:31", 10.49703, -54.85517], + ["2019-08-13T15:44:31", 10.50008, -54.85852], + ["2019-08-13T16:12:49", 10.50323, -54.86081], + ["2019-08-13T16:43:13", 10.50749, -54.86303], + ["2019-08-13T17:13:13", 10.51109, -54.86475], + ["2019-08-13T17:43:13", 10.51534, -54.86664], + ["2019-08-13T18:12:09", 10.52012, -54.86847], + ["2019-08-13T18:41:55", 10.52518, -54.87121], + ["2019-08-13T19:11:55", 10.53076, -54.87439], + ["2019-08-13T19:43:26", 10.53674, -54.8779], + ["2019-08-13T20:11:32", 10.5419, -54.87967], + ["2019-08-13T20:42:31", 10.54778, -54.88187], + ["2019-08-13T21:11:03", 10.55587, -54.88757], + ["2019-08-13T21:41:03", 10.55634, -54.88808], + ["2019-08-13T22:11:03", 10.55784, -54.88962], + ["2019-08-13T22:41:07", 10.5602, -54.892], + ["2019-08-13T23:11:30", 10.56212, -54.8948], + ["2019-08-13T23:41:30", 10.56444, -54.89652], + ["2019-08-14T00:11:30", 10.56611, -54.89832], + ["2019-08-14T00:40:40", 10.56857, -54.90045], + ["2019-08-14T01:11:29", 10.57229, -54.90366], + ["2019-08-14T01:40:40", 10.57578, -54.90646], + ["2019-08-14T02:11:26", 10.57904, -54.90854], + ["2019-08-14T02:40:27", 10.5821, -54.91025], + ["2019-08-14T03:10:27", 10.58579, -54.91179], + ["2019-08-14T03:40:27", 10.58978, -54.91333], + ["2019-08-14T05:09:39", 10.60183, -54.91506], + ["2019-08-14T05:40:58", 10.60613, -54.91412], + ["2019-08-14T06:09:39", 10.60989, -54.91232], + ["2019-08-14T08:08:52", 10.62261, -54.90889], + ["2019-08-14T08:38:52", 10.62476, -54.90923], + ["2019-08-14T09:08:52", 10.62635, -54.91], + ["2019-08-14T09:38:44", 10.62655, -54.91122], + ["2019-08-14T10:08:39", 10.62617, -54.91293], + ["2019-08-14T10:38:39", 10.62505, -54.91473], + ["2019-08-14T12:08:59", 10.62179, -54.92313], + ["2019-08-14T12:38:59", 10.62029, -54.92639], + ["2019-08-14T13:08:59", 10.61913, -54.93008], + ["2019-08-14T13:38:23", 10.61769, -54.93427], + ["2019-08-14T14:08:27", 10.61575, -54.93869], + ["2019-08-14T15:37:59", 10.61375, -54.95047], + ["2019-08-14T16:08:58", 10.61341, -54.95419], + ["2019-08-14T16:37:42", 10.61389, -54.95703], + ["2019-08-14T17:08:58", 10.61538, -54.95908], + ["2019-08-14T17:38:41", 10.61763, -54.96114], + ["2019-08-14T18:08:41", 10.6202, -54.96432], + ["2019-08-14T18:37:36", 10.62226, -54.96805], + ["2019-08-14T19:37:16", 10.6268, -54.97534], + ["2019-08-14T20:08:29", 10.6286, -54.97858], + ["2019-08-14T20:37:04", 10.63024, -54.98102], + ["2019-08-14T21:07:58", 10.63039, -54.98389], + ["2019-08-14T21:36:40", 10.63006, -54.98685], + ["2019-08-14T22:08:29", 10.62903, -54.99014], + ["2019-08-14T23:06:23", 10.62595, -54.99695], + ["2019-08-14T23:36:08", 10.62351, -55.00068], + ["2019-08-15T00:06:08", 10.62188, -55.00351], + ["2019-08-15T00:35:57", 10.62001, -55.0075], + ["2019-08-15T01:05:57", 10.61911, -55.01093], + ["2019-08-15T01:36:59", 10.61865, -55.01453], + ["2019-08-15T05:06:27", 10.62039, -55.0434], + ["2019-08-15T09:06:12", 10.61161, -55.08423], + ["2019-08-15T09:34:38", 10.6088, -55.0899], + ["2019-08-15T10:06:28", 10.60494, -55.09622], + ["2019-08-15T14:06:36", 10.57672, -55.15604], + ["2019-08-15T16:35:06", 10.5723, -55.20007], + ["2019-08-15T17:05:06", 10.5723, -55.20848], + ["2019-08-15T17:35:06", 10.57204, -55.21698], + ["2019-08-15T18:03:02", 10.57134, -55.22424], + ["2019-08-15T18:32:52", 10.57006, -55.23244], + ["2019-08-15T19:02:52", 10.5683, -55.24128], + ["2019-08-15T19:32:52", 10.56671, -55.24875], + ["2019-08-15T20:02:30", 10.56547, -55.25727], + ["2019-08-15T20:32:30", 10.56448, -55.26491], + ["2019-08-15T21:02:30", 10.56349, -55.27341], + ["2019-08-15T21:33:30", 10.56213, -55.2822], + ["2019-08-15T22:35:00", 10.56178, -55.29903], + ["2019-08-15T23:05:00", 10.56169, -55.3071], + ["2019-08-15T23:35:00", 10.56169, -55.31714], + ["2019-08-16T00:03:26", 10.56166, -55.32598], + ["2019-08-16T00:33:26", 10.56235, -55.33542], + ["2019-08-16T01:03:26", 10.56364, -55.34546], + ["2019-08-16T01:31:29", 10.56501, -55.35459], + ["2019-08-16T02:01:29", 10.5666, -55.36489], + ["2019-08-16T02:31:29", 10.56853, -55.37442], + ["2019-08-16T03:02:27", 10.57186, -55.38406], + ["2019-08-16T03:31:22", 10.575, -55.3924], + ["2019-08-16T04:01:05", 10.57876, -55.40088], + ["2019-08-16T04:31:05", 10.58314, -55.40878], + ["2019-08-16T07:01:59", 10.60247, -55.44177], + ["2019-08-16T08:30:06", 10.60927, -55.461], + ["2019-08-16T09:00:06", 10.61171, -55.46918], + ["2019-08-16T09:30:06", 10.6139, -55.47708], + ["2019-08-16T09:59:48", 10.61656, -55.48658], + ["2019-08-16T10:29:48", 10.61944, -55.49551], + ["2019-08-16T11:59:20", 10.63026, -55.52335], + ["2019-08-16T12:29:08", 10.63593, -55.53251], + ["2019-08-16T12:59:08", 10.64194, -55.53998], + ["2019-08-16T16:58:03", 10.7007, -55.58685], + ["2019-08-16T17:59:49", 10.71784, -55.59272], + ["2019-08-16T18:27:57", 10.72629, -55.59451], + ["2019-08-16T18:59:49", 10.73552, -55.59598], + ["2019-08-16T19:27:40", 10.74201, -55.59692], + ["2019-08-16T20:54:02", 10.76589, -55.59931], + ["2019-08-16T21:24:02", 10.76932, -55.59965], + ["2019-08-16T21:54:02", 10.77031, -55.59982], + ["2019-08-16T21:57:06", 10.7709, -55.59991], + ["2019-08-16T22:56:51", 10.78282, -55.603], + ["2019-08-17T00:26:59", 10.79791, -55.60469], + ["2019-08-17T00:56:59", 10.80237, -55.60435], + ["2019-08-17T01:26:59", 10.80606, -55.60358], + ["2019-08-17T01:57:27", 10.8088, -55.60187], + ["2019-08-17T02:27:27", 10.8112, -55.5993], + ["2019-08-17T02:56:10", 10.81291, -55.59692], + ["2019-08-17T03:27:25", 10.81448, -55.59412], + ["2019-08-17T03:56:07", 10.81577, -55.59164], + ["2019-08-17T04:55:52", 10.81738, -55.58644], + ["2019-08-17T05:25:52", 10.81811, -55.58292], + ["2019-08-17T05:55:52", 10.8188, -55.57932], + ["2019-08-17T06:25:49", 10.82025, -55.57526], + ["2019-08-17T07:25:32", 10.82474, -55.5672], + ["2019-08-17T07:55:28", 10.82746, -55.56362], + ["2019-08-17T08:25:28", 10.82896, -55.56002], + ["2019-08-17T08:55:28", 10.82986, -55.55719], + ["2019-08-17T09:24:53", 10.83052, -55.55499], + ["2019-08-17T09:55:26", 10.83067, -55.55322], + ["2019-08-17T11:24:06", 10.8264, -55.55037], + ["2019-08-17T11:54:06", 10.82421, -55.54977], + ["2019-08-17T12:24:06", 10.82258, -55.54977], + ["2019-08-17T12:53:53", 10.82024, -55.54939], + ["2019-08-17T13:23:53", 10.81711, -55.54922], + ["2019-08-17T14:23:35", 10.81045, -55.54753], + ["2019-08-17T14:53:35", 10.8062, -55.5465], + ["2019-08-17T15:23:35", 10.80195, -55.54547], + ["2019-08-17T15:53:21", 10.79755, -55.54464], + ["2019-08-17T16:23:21", 10.79463, -55.54395], + ["2019-08-17T16:53:12", 10.79164, -55.54321], + ["2019-08-17T17:22:58", 10.78919, -55.54285], + ["2019-08-17T17:52:58", 10.78614, -55.54285], + ["2019-08-17T18:23:09", 10.78296, -55.54272], + ["2019-08-17T18:52:46", 10.78026, -55.54279], + ["2019-08-17T19:23:09", 10.77788, -55.54352], + ["2019-08-17T19:52:37", 10.77531, -55.54474], + ["2019-08-17T20:23:09", 10.77221, -55.54663], + ["2019-08-17T20:52:27", 10.76805, -55.54834], + ["2019-08-17T21:22:58", 10.76024, -55.55223], + ["2019-08-17T21:52:58", 10.76007, -55.55232], + ["2019-08-17T22:22:58", 10.75608, -55.55481], + ["2019-08-17T22:52:09", 10.75203, -55.55774], + ["2019-08-17T23:51:50", 10.74281, -55.56476], + ["2019-08-18T00:21:34", 10.73783, -55.5683], + ["2019-08-18T00:51:34", 10.73289, -55.57242], + ["2019-08-18T01:21:56", 10.72775, -55.57721], + ["2019-08-18T01:51:26", 10.72321, -55.58192], + ["2019-08-18T02:21:26", 10.71879, -55.58673], + ["2019-08-18T02:50:53", 10.71422, -55.59079], + ["2019-08-18T03:21:09", 10.7097, -55.5954], + ["2019-08-18T03:50:22", 10.7063, -55.5995], + ["2019-08-18T04:20:22", 10.70342, -55.60285], + ["2019-08-18T04:50:22", 10.70037, -55.60654], + ["2019-08-18T05:19:58", 10.69639, -55.61065], + ["2019-08-18T05:49:58", 10.69261, -55.61417], + ["2019-08-18T06:19:37", 10.68864, -55.618], + ["2019-08-18T06:49:37", 10.68499, -55.62186], + ["2019-08-18T07:20:57", 10.68053, -55.62555], + ["2019-08-18T07:49:15", 10.6762, -55.62894], + ["2019-08-18T08:19:55", 10.67046, -55.63245], + ["2019-08-18T09:48:35", 10.6516, -55.64505], + ["2019-08-18T10:48:25", 10.63989, -55.65784], + ["2019-08-18T12:19:05", 10.62572, -55.68273], + ["2019-08-18T12:49:05", 10.62156, -55.69123], + ["2019-08-18T13:19:05", 10.61787, -55.7005], + ["2019-08-18T13:47:59", 10.6144, -55.70917], + ["2019-08-18T14:18:27", 10.61142, -55.71741], + ["2019-08-18T14:47:40", 10.60846, -55.72522], + ["2019-08-18T16:18:27", 10.60231, -55.75128], + ["2019-08-18T16:48:27", 10.60055, -55.75943], + ["2019-08-18T17:18:27", 10.59901, -55.76733], + ["2019-08-18T17:47:18", 10.59775, -55.77518], + ["2019-08-18T21:46:43", 10.63176, -55.83826], + ["2019-08-18T22:46:30", 10.6443, -55.85248], + ["2019-08-19T01:45:51", 10.67791, -55.89276], + ["2019-08-19T02:15:37", 10.68294, -55.89914], + ["2019-08-19T02:45:37", 10.68788, -55.90506], + ["2019-08-19T03:45:20", 10.69724, -55.91617], + ["2019-08-19T04:14:54", 10.70276, -55.92087], + ["2019-08-19T04:44:54", 10.70782, -55.9249], + ["2019-08-19T05:16:06", 10.71442, -55.92941], + ["2019-08-19T05:44:36", 10.7212, -55.93372], + ["2019-08-19T06:44:13", 10.73865, -55.94132], + ["2019-08-19T07:14:13", 10.74822, -55.94441], + ["2019-08-19T07:44:13", 10.7571, -55.94647], + ["2019-08-19T09:14:58", 10.78207, -55.94595], + ["2019-08-19T09:43:57", 10.78952, -55.94462], + ["2019-08-19T10:13:57", 10.79664, -55.94342], + ["2019-08-19T11:42:33", 10.81641, -55.93584], + ["2019-08-19T12:12:33", 10.82126, -55.93258], + ["2019-08-19T12:42:33", 10.82491, -55.92923], + ["2019-08-19T13:12:57", 10.8288, -55.92566], + ["2019-08-19T13:42:59", 10.83189, -55.92248], + ["2019-08-19T14:12:59", 10.83395, -55.91965], + ["2019-08-19T14:42:03", 10.8354, -55.91737], + ["2019-08-19T15:12:59", 10.83607, -55.9151], + ["2019-08-19T15:42:03", 10.83691, -55.91299], + ["2019-08-19T16:12:28", 10.8378, -55.91055], + ["2019-08-19T16:41:50", 10.83886, -55.90793], + ["2019-08-19T17:12:06", 10.83945, -55.90454], + ["2019-08-19T17:41:40", 10.83963, -55.90125], + ["2019-08-19T18:11:56", 10.83925, -55.89804], + ["2019-08-19T18:41:04", 10.83929, -55.89498], + ["2019-08-19T19:11:04", 10.83993, -55.89266], + ["2019-08-19T19:41:04", 10.84057, -55.89026], + ["2019-08-19T20:11:24", 10.84095, -55.88757], + ["2019-08-19T20:40:43", 10.84108, -55.88513], + ["2019-08-19T20:54:12", 10.84113, -55.87964], + ["2019-08-19T21:24:12", 10.84113, -55.87887], + ["2019-08-19T21:54:12", 10.84117, -55.87827], + ["2019-08-19T22:10:55", 10.84098, -55.87662], + ["2019-08-19T22:40:24", 10.84044, -55.87317], + ["2019-08-19T23:10:24", 10.83911, -55.86957], + ["2019-08-19T23:39:59", 10.83612, -55.86646], + ["2019-08-20T00:10:25", 10.83184, -55.86307], + ["2019-08-20T00:39:44", 10.82705, -55.85992], + ["2019-08-20T01:09:55", 10.82175, -55.85624], + ["2019-08-20T01:39:55", 10.81596, -55.85203], + ["2019-08-20T02:09:55", 10.80957, -55.84808], + ["2019-08-20T02:39:15", 10.80343, -55.84433], + ["2019-08-20T03:09:27", 10.79655, -55.84055], + ["2019-08-20T03:39:04", 10.78986, -55.83736], + ["2019-08-20T04:09:04", 10.78334, -55.83436], + ["2019-08-20T04:39:04", 10.77669, -55.8317], + ["2019-08-20T05:39:05", 10.76361, -55.82611], + ["2019-08-20T06:08:56", 10.75579, -55.82402], + ["2019-08-20T06:38:56", 10.74888, -55.8223], + ["2019-08-20T07:09:08", 10.74215, -55.82077], + ["2019-08-20T07:38:36", 10.73579, -55.8197], + ["2019-08-20T08:08:55", 10.72977, -55.81857], + ["2019-08-20T08:38:25", 10.72368, -55.8175], + ["2019-08-20T09:08:36", 10.71726, -55.81643], + ["2019-08-20T09:38:36", 10.71104, -55.81557], + ["2019-08-20T10:08:36", 10.70413, -55.81488], + ["2019-08-20T10:38:05", 10.69681, -55.81384], + ["2019-08-20T11:07:59", 10.68975, -55.81316], + ["2019-08-20T11:37:59", 10.68271, -55.8129], + ["2019-08-20T12:08:27", 10.67552, -55.81311], + ["2019-08-20T12:37:36", 10.66915, -55.8138], + ["2019-08-20T12:37:49", 10.66917, -55.81375], + ["2019-08-20T13:07:36", 10.66293, -55.81534], + ["2019-08-20T13:37:36", 10.65709, -55.81723], + ["2019-08-20T14:07:57", 10.65159, -55.82031], + ["2019-08-20T14:37:26", 10.64618, -55.82373], + ["2019-08-20T15:07:56", 10.64084, -55.82721], + ["2019-08-20T15:36:58", 10.63597, -55.83081], + ["2019-08-20T16:07:06", 10.63148, -55.8345], + ["2019-08-20T16:36:31", 10.62752, -55.83801], + ["2019-08-20T17:06:54", 10.62313, -55.84161], + ["2019-08-20T17:36:14", 10.61881, -55.84528], + ["2019-08-20T18:06:24", 10.61428, -55.84991], + ["2019-08-20T18:36:26", 10.6098, -55.85455], + ["2019-08-20T19:06:26", 10.60534, -55.85953], + ["2019-08-20T19:35:45", 10.60095, -55.86414], + ["2019-08-20T20:05:56", 10.59661, -55.86932], + ["2019-08-20T20:35:34", 10.59241, -55.87424], + ["2019-08-20T21:05:27", 10.58736, -55.88019], + ["2019-08-20T21:35:27", 10.58273, -55.8862], + ["2019-08-20T21:53:41", 10.57991, -55.89023], + ["2019-08-20T22:05:26", 10.57784, -55.89316], + ["2019-08-20T22:35:26", 10.57299, -55.8996], + ["2019-08-20T23:05:58", 10.56816, -55.90692], + ["2019-08-20T23:35:07", 10.564, -55.91412], + ["2019-08-21T00:05:27", 10.56028, -55.92197], + ["2019-08-21T00:35:35", 10.55694, -55.92953], + ["2019-08-21T01:05:35", 10.55355, -55.93674], + ["2019-08-21T02:04:56", 10.5459, -55.95117], + ["2019-08-21T02:34:31", 10.54156, -55.95862], + ["2019-08-21T03:05:27", 10.53736, -55.96628], + ["2019-08-21T03:34:29", 10.53438, -55.97349], + ["2019-08-21T04:04:29", 10.53138, -55.98096], + ["2019-08-21T04:34:07", 10.5288, -55.98883], + ["2019-08-21T05:05:28", 10.52685, -55.99773], + ["2019-08-21T05:35:28", 10.52578, -56.0064], + ["2019-08-21T06:05:28", 10.52449, -56.01541], + ["2019-08-21T06:33:46", 10.52317, -56.02338], + ["2019-08-21T07:03:46", 10.52205, -56.03188], + ["2019-08-21T07:33:46", 10.52132, -56.03995], + ["2019-08-21T08:04:28", 10.51986, -56.04855], + ["2019-08-21T08:34:26", 10.51823, -56.05692], + ["2019-08-21T09:04:26", 10.51703, -56.06662], + ["2019-08-21T09:33:19", 10.51564, -56.07629], + ["2019-08-21T10:03:55", 10.51485, -56.08633], + ["2019-08-21T10:32:59", 10.51517, -56.09555], + ["2019-08-21T11:04:27", 10.51634, -56.10611], + ["2019-08-21T15:02:28", 10.52855, -56.17377], + ["2019-08-21T15:31:18", 10.53184, -56.18214], + ["2019-08-21T16:02:26", 10.53595, -56.19028], + ["2019-08-21T16:31:18", 10.54047, -56.19836], + ["2019-08-21T17:01:28", 10.54593, -56.20682], + ["2019-08-21T17:30:55", 10.55091, -56.21518], + ["2019-08-21T18:00:48", 10.55659, -56.22341], + ["2019-08-21T18:30:48", 10.56243, -56.23096], + ["2019-08-21T19:01:03", 10.56849, -56.23843], + ["2019-08-21T19:30:15", 10.57477, -56.24612], + ["2019-08-21T20:00:26", 10.58194, -56.25378], + ["2019-08-21T21:29:51", 10.60379, -56.27621], + ["2019-08-21T21:54:26", 10.60891, -56.28131], + ["2019-08-21T22:01:56", 10.61015, -56.28263], + ["2019-08-21T22:29:37", 10.61628, -56.28864], + ["2019-08-21T23:01:56", 10.62324, -56.29584], + ["2019-08-21T23:29:22", 10.62926, -56.30084], + ["2019-08-22T01:29:27", 10.65359, -56.32235], + ["2019-08-22T01:58:56", 10.65903, -56.32684], + ["2019-08-22T02:29:27", 10.66483, -56.33145], + ["2019-08-22T03:29:29", 10.67623, -56.33935], + ["2019-08-22T03:59:29", 10.68099, -56.34313], + ["2019-08-22T04:29:29", 10.68657, -56.34708], + ["2019-08-22T05:29:45", 10.69829, -56.35468], + ["2019-08-22T05:58:24", 10.70364, -56.35818], + ["2019-08-22T06:28:59", 10.7094, -56.36182], + ["2019-08-22T06:57:41", 10.71547, -56.36455], + ["2019-08-22T07:28:28", 10.72152, -56.36685], + ["2019-08-22T07:57:41", 10.72783, -56.36859], + ["2019-08-22T08:29:28", 10.73378, -56.37073], + ["2019-08-22T08:57:32", 10.73946, -56.37256], + ["2019-08-22T09:29:28", 10.74494, -56.37485], + ["2019-08-22T10:57:27", 10.75781, -56.37992], + ["2019-08-22T11:27:27", 10.76236, -56.38164], + ["2019-08-22T11:57:27", 10.76772, -56.38361], + ["2019-08-22T12:57:56", 10.77781, -56.38614], + ["2019-08-22T13:26:48", 10.78216, -56.38651], + ["2019-08-22T13:57:56", 10.78652, -56.38708], + ["2019-08-22T14:26:42", 10.79053, -56.38724], + ["2019-08-22T14:57:08", 10.79584, -56.38705], + ["2019-08-22T15:27:30", 10.80131, -56.38668], + ["2019-08-22T15:57:30", 10.80689, -56.38599], + ["2019-08-22T16:27:26", 10.8119, -56.38534], + ["2019-08-22T16:57:26", 10.81709, -56.3844], + ["2019-08-22T17:26:42", 10.82121, -56.38297], + ["2019-08-22T17:56:42", 10.82481, -56.38168], + ["2019-08-22T18:56:57", 10.82998, -56.37778], + ["2019-08-22T19:25:33", 10.83139, -56.37601], + ["2019-08-22T19:57:29", 10.83239, -56.37463], + ["2019-08-22T20:25:33", 10.83306, -56.37421], + ["2019-08-22T20:54:27", 10.83353, -56.3739], + ["2019-08-22T21:24:27", 10.83404, -56.37399], + ["2019-08-22T21:54:27", 10.83413, -56.37399], + ["2019-08-22T22:26:27", 10.83381, -56.37393], + ["2019-08-22T22:55:03", 10.83285, -56.37411], + ["2019-08-22T23:24:42", 10.83175, -56.37437], + ["2019-08-22T23:54:42", 10.83089, -56.37488], + ["2019-08-23T00:25:14", 10.82994, -56.37543], + ["2019-08-23T00:54:25", 10.82887, -56.37613], + ["2019-08-23T01:25:26", 10.82704, -56.37695], + ["2019-08-23T03:53:28", 10.81558, -56.37909], + ["2019-08-23T04:23:03", 10.81246, -56.37927], + ["2019-08-23T04:53:03", 10.80834, -56.3797], + ["2019-08-23T05:23:59", 10.80323, -56.37989], + ["2019-08-23T05:53:59", 10.79782, -56.37998], + ["2019-08-23T06:23:59", 10.79216, -56.38058], + ["2019-08-23T07:51:39", 10.77676, -56.38306], + ["2019-08-23T08:21:39", 10.77238, -56.3846], + ["2019-08-23T08:51:39", 10.76873, -56.38657], + ["2019-08-23T09:21:58", 10.76566, -56.3887], + ["2019-08-23T10:21:28", 10.76066, -56.39466], + ["2019-08-23T10:51:28", 10.75843, -56.39775], + ["2019-08-23T11:21:28", 10.7562, -56.40161], + ["2019-08-23T11:51:29", 10.75318, -56.40517], + ["2019-08-23T12:21:29", 10.74953, -56.40912], + ["2019-08-23T12:51:01", 10.74559, -56.41299], + ["2019-08-23T13:21:29", 10.74197, -56.41678], + ["2019-08-23T15:20:23", 10.72614, -56.43294], + ["2019-08-23T15:50:23", 10.72151, -56.43757], + ["2019-08-23T16:20:23", 10.71743, -56.44238], + ["2019-08-23T16:50:20", 10.7138, -56.44835], + ["2019-08-23T17:20:20", 10.71105, -56.45401], + ["2019-08-23T17:50:08", 10.70738, -56.46023], + ["2019-08-23T18:20:08", 10.70403, -56.46564], + ["2019-08-23T18:49:57", 10.70146, -56.4717], + ["2019-08-23T19:19:57", 10.69953, -56.47745], + ["2019-08-23T19:49:57", 10.69799, -56.48303], + ["2019-08-23T20:19:11", 10.69638, -56.48839], + ["2019-08-23T20:49:11", 10.69488, -56.49431], + ["2019-08-23T21:19:11", 10.69351, -56.50049], + ["2019-08-23T21:48:58", 10.69153, -56.50762], + ["2019-08-23T22:18:58", 10.69003, -56.51294], + ["2019-08-23T22:48:39", 10.68861, -56.51932], + ["2019-08-23T23:18:39", 10.68689, -56.52533], + ["2019-08-23T23:48:57", 10.68527, -56.53207], + ["2019-08-24T00:18:34", 10.68359, -56.53851], + ["2019-08-24T00:48:57", 10.68154, -56.54449], + ["2019-08-24T01:18:22", 10.67911, -56.55023], + ["2019-08-24T01:48:04", 10.67724, -56.55623], + ["2019-08-24T02:18:04", 10.67544, -56.56189], + ["2019-08-24T02:47:49", 10.67379, -56.56733], + ["2019-08-24T03:17:49", 10.67203, -56.57239], + ["2019-08-24T03:48:08", 10.67099, -56.57819], + ["2019-08-24T04:17:39", 10.6698, -56.58383], + ["2019-08-24T04:47:56", 10.66804, -56.58926], + ["2019-08-24T05:17:55", 10.66613, -56.59441], + ["2019-08-24T05:47:55", 10.66441, -56.60007], + ["2019-08-24T06:17:22", 10.66249, -56.6058], + ["2019-08-24T06:47:56", 10.66001, -56.61166], + ["2019-08-24T07:17:09", 10.65762, -56.61749], + ["2019-08-24T07:47:25", 10.65599, -56.62497], + ["2019-08-24T08:16:51", 10.65514, -56.63208], + ["2019-08-24T08:46:33", 10.65495, -56.63989], + ["2019-08-24T09:16:33", 10.65508, -56.64719], + ["2019-08-24T09:46:58", 10.65605, -56.65469], + ["2019-08-24T10:16:24", 10.6571, -56.66159], + ["2019-08-24T10:46:58", 10.65784, -56.66794], + ["2019-08-24T11:16:26", 10.65874, -56.67441], + ["2019-08-24T11:46:26", 10.65986, -56.68076], + ["2019-08-24T12:15:48", 10.66133, -56.68723], + ["2019-08-24T12:45:36", 10.66232, -56.69411], + ["2019-08-24T13:15:36", 10.66249, -56.70123], + ["2019-08-24T13:45:28", 10.66228, -56.70893], + ["2019-08-24T14:15:28", 10.66172, -56.71674], + ["2019-08-24T14:45:19", 10.66244, -56.72504], + ["2019-08-24T15:15:19", 10.6627, -56.73294], + ["2019-08-24T15:45:36", 10.66317, -56.74179], + ["2019-08-24T16:15:27", 10.66403, -56.75073], + ["2019-08-24T16:45:27", 10.66429, -56.75983], + ["2019-08-24T17:44:56", 10.66631, -56.77963], + ["2019-08-24T18:14:56", 10.66803, -56.78993], + ["2019-08-24T18:44:56", 10.67022, -56.80032], + ["2019-08-24T19:14:16", 10.67212, -56.81067], + ["2019-08-24T19:44:39", 10.67354, -56.82135], + ["2019-08-24T20:14:11", 10.67477, -56.83148], + ["2019-08-24T20:44:25", 10.67581, -56.84189], + ["2019-08-24T21:14:01", 10.67697, -56.85117], + ["2019-08-24T21:44:27", 10.67775, -56.85989], + ["2019-08-24T22:13:44", 10.67882, -56.86813], + ["2019-08-24T22:43:57", 10.67983, -56.87662], + ["2019-08-24T23:13:31", 10.68124, -56.8851], + ["2019-08-24T23:43:55", 10.68291, -56.89359], + ["2019-08-25T00:13:22", 10.68505, -56.90149], + ["2019-08-25T00:43:36", 10.68767, -56.90985], + ["2019-08-25T01:43:07", 10.69245, -56.92646], + ["2019-08-25T02:13:07", 10.69494, -56.93367], + ["2019-08-25T02:43:07", 10.69794, -56.94122], + ["2019-08-25T03:12:37", 10.70073, -56.94846], + ["2019-08-25T03:42:57", 10.70373, -56.95615], + ["2019-08-25T04:12:24", 10.70761, -56.96313], + ["2019-08-25T04:42:57", 10.71179, -56.97076], + ["2019-08-25T05:11:52", 10.71674, -56.97816], + ["2019-08-25T05:41:52", 10.72202, -56.9852], + ["2019-08-25T06:11:52", 10.7273, -56.99121], + ["2019-08-25T06:41:40", 10.7321, -56.99733], + ["2019-08-25T07:11:40", 10.73686, -57.00317], + ["2019-08-25T07:42:38", 10.74181, -57.00894], + ["2019-08-25T08:11:30", 10.74617, -57.01431], + ["2019-08-25T08:41:56", 10.7502, -57.01996], + ["2019-08-25T09:11:55", 10.7538, -57.02491], + ["2019-08-25T09:41:55", 10.75736, -57.02963], + ["2019-08-25T10:11:19", 10.76019, -57.03354], + ["2019-08-25T10:41:57", 10.76307, -57.03778], + ["2019-08-25T11:11:27", 10.76542, -57.04128], + ["2019-08-25T11:41:27", 10.76765, -57.0448], + ["2019-08-25T15:40:30", 10.78219, -57.07562], + ["2019-08-25T16:09:38", 10.78368, -57.08109], + ["2019-08-25T17:09:22", 10.78644, -57.0928], + ["2019-08-25T18:08:42", 10.7897, -57.10572], + ["2019-08-25T18:38:42", 10.79133, -57.11241], + ["2019-08-25T19:08:42", 10.79253, -57.11807], + ["2019-08-25T21:09:57", 10.79627, -57.13922], + ["2019-08-25T21:38:30", 10.79656, -57.14264], + ["2019-08-25T21:53:52", 10.79691, -57.14493], + ["2019-08-25T22:08:56", 10.7971, -57.14703], + ["2019-08-25T23:38:03", 10.79888, -57.16037], + ["2019-08-26T00:07:50", 10.79879, -57.16569], + ["2019-08-26T00:37:50", 10.79767, -57.17075], + ["2019-08-26T01:07:34", 10.7964, -57.17564], + ["2019-08-26T01:37:34", 10.79511, -57.18088], + ["2019-08-26T02:07:57", 10.79411, -57.18692], + ["2019-08-26T02:38:28", 10.7928, -57.19265], + ["2019-08-26T03:08:28", 10.7913, -57.19849], + ["2019-08-26T04:36:58", 10.79103, -57.21478], + ["2019-08-26T05:06:58", 10.79215, -57.21838], + ["2019-08-26T05:36:58", 10.79357, -57.22147], + ["2019-08-26T06:06:57", 10.79521, -57.22421], + ["2019-08-26T06:36:57", 10.79774, -57.22739], + ["2019-08-26T09:05:46", 10.81089, -57.23544], + ["2019-08-26T10:35:55", 10.8147, -57.23651], + ["2019-08-26T12:04:56", 10.81863, -57.23882], + ["2019-08-26T12:34:56", 10.82082, -57.24045], + ["2019-08-26T13:04:56", 10.82344, -57.24234], + ["2019-08-26T17:04:06", 10.83734, -57.25433], + ["2019-08-26T17:34:43", 10.83978, -57.25586], + ["2019-08-26T19:03:24", 10.84755, -57.26147], + ["2019-08-26T19:33:24", 10.8509, -57.26319], + ["2019-08-26T20:03:24", 10.85399, -57.26456], + ["2019-08-26T20:33:39", 10.85696, -57.26544], + ["2019-08-26T21:03:39", 10.85859, -57.26638], + ["2019-08-26T21:33:39", 10.86108, -57.26801], + ["2019-08-26T21:53:40", 10.86284, -57.26947], + ["2019-08-26T22:02:47", 10.86358, -57.27017], + ["2019-08-26T22:33:32", 10.8659, -57.27255], + ["2019-08-26T23:02:43", 10.86843, -57.27526], + ["2019-08-26T23:32:43", 10.87118, -57.27792], + ["2019-08-27T00:02:43", 10.8741, -57.28049], + ["2019-08-27T00:32:23", 10.87771, -57.28347], + ["2019-08-27T01:02:23", 10.88119, -57.28665], + ["2019-08-27T01:33:57", 10.885, -57.28952], + ["2019-08-27T02:02:06", 10.88814, -57.29158], + ["2019-08-27T02:32:06", 10.8911, -57.2939], + ["2019-08-27T03:02:06", 10.89355, -57.29596], + ["2019-08-27T03:32:04", 10.89639, -57.29916], + ["2019-08-27T04:02:28", 10.89925, -57.30234], + ["2019-08-27T04:31:59", 10.90195, -57.30515], + ["2019-08-27T05:02:28", 10.90547, -57.30835], + ["2019-08-27T06:02:58", 10.91354, -57.3161], + ["2019-08-27T06:31:38", 10.91729, -57.31931], + ["2019-08-27T07:01:30", 10.92087, -57.32237], + ["2019-08-27T07:31:30", 10.9237, -57.3252], + ["2019-08-27T08:01:21", 10.92697, -57.32839], + ["2019-08-27T08:31:21", 10.93191, -57.33208], + ["2019-08-27T09:01:21", 10.9359, -57.33551], + ["2019-08-27T09:32:30", 10.9403, -57.34085], + ["2019-08-27T10:00:44", 10.94501, -57.34466], + ["2019-08-27T10:30:44", 10.94986, -57.34826], + ["2019-08-27T11:00:44", 10.9551, -57.35135], + ["2019-08-27T11:32:00", 10.9604, -57.35515], + ["2019-08-27T12:02:00", 10.96478, -57.35858], + ["2019-08-27T12:32:00", 10.97032, -57.36313], + ["2019-08-27T16:01:55", 11.00491, -57.38849], + ["2019-08-27T17:59:02", 11.02556, -57.40143], + ["2019-08-27T19:30:27", 11.04145, -57.41019], + ["2019-08-27T20:28:35", 11.05025, -57.41568], + ["2019-08-27T21:58:26", 11.06347, -57.42529], + ["2019-08-27T22:28:26", 11.06712, -57.42838], + ["2019-08-27T22:58:26", 11.07094, -57.43173], + ["2019-08-27T23:27:51", 11.07447, -57.43555], + ["2019-08-27T23:57:37", 11.07792, -57.43937], + ["2019-08-28T00:27:37", 11.08101, -57.44263], + ["2019-08-28T00:58:26", 11.08429, -57.44574], + ["2019-08-28T01:28:56", 11.08705, -57.4484], + ["2019-08-28T01:58:56", 11.08945, -57.45175], + ["2019-08-28T02:27:31", 11.09086, -57.45475], + ["2019-08-28T02:57:31", 11.09236, -57.45853], + ["2019-08-28T03:27:31", 11.09463, -57.46231], + ["2019-08-28T03:57:33", 11.09644, -57.46587], + ["2019-08-28T04:27:33", 11.09863, -57.46973], + ["2019-08-28T04:56:26", 11.10117, -57.47314], + ["2019-08-28T05:56:02", 11.10588, -57.48059], + ["2019-08-28T06:56:53", 11.11073, -57.48683], + ["2019-08-28T07:26:53", 11.11373, -57.49001], + ["2019-08-28T07:56:53", 11.11652, -57.4931], + ["2019-08-28T08:25:35", 11.11873, -57.4957], + ["2019-08-28T10:25:27", 11.13123, -57.51049], + ["2019-08-28T10:54:59", 11.13399, -57.51404], + ["2019-08-28T11:25:27", 11.13672, -57.51761], + ["2019-08-28T11:54:46", 11.13944, -57.52069], + ["2019-08-28T12:54:38", 11.14527, -57.52783], + ["2019-08-28T13:24:09", 11.14764, -57.53151], + ["2019-08-28T13:54:09", 11.14957, -57.53503], + ["2019-08-28T14:24:59", 11.15215, -57.53906], + ["2019-08-28T14:54:35", 11.15448, -57.54306], + ["2019-08-28T15:24:35", 11.15727, -57.54752], + ["2019-08-28T16:53:22", 11.16649, -57.56119], + ["2019-08-28T17:24:33", 11.16958, -57.56628], + ["2019-08-28T17:53:00", 11.17305, -57.57077], + ["2019-08-28T18:23:41", 11.17726, -57.57614], + ["2019-08-28T18:53:41", 11.18104, -57.58138], + ["2019-08-28T19:23:41", 11.18507, -57.58704], + ["2019-08-28T21:23:01", 11.20846, -57.61321], + ["2019-08-28T21:53:01", 11.20889, -57.61364], + ["2019-08-28T22:23:01", 11.2134, -57.61819], + ["2019-08-28T22:51:45", 11.2179, -57.62222], + ["2019-08-28T23:22:56", 11.22261, -57.62646], + ["2019-08-28T23:52:56", 11.22643, -57.62981], + ["2019-08-29T00:22:56", 11.23051, -57.63376], + ["2019-08-29T01:22:27", 11.23799, -57.64096], + ["2019-08-29T01:51:11", 11.24061, -57.64429], + ["2019-08-29T02:22:00", 11.24294, -57.6474], + ["2019-08-29T02:51:11", 11.24443, -57.6503], + ["2019-08-29T03:21:01", 11.2461, -57.65364], + ["2019-08-29T03:51:01", 11.24739, -57.65613], + ["2019-08-29T05:21:16", 11.25128, -57.66302], + ["2019-08-29T05:50:31", 11.25342, -57.6651], + ["2019-08-29T06:21:26", 11.25577, -57.66727], + ["2019-08-29T06:50:58", 11.25899, -57.66987], + ["2019-08-29T07:20:58", 11.26294, -57.6727], + ["2019-08-29T07:50:14", 11.2672, -57.67563], + ["2019-08-29T08:49:49", 11.27708, -57.68198], + ["2019-08-29T09:21:23", 11.2822, -57.68381], + ["2019-08-29T09:49:49", 11.28631, -57.68533], + ["2019-08-29T10:21:27", 11.28957, -57.68602], + ["2019-08-29T10:51:27", 11.29257, -57.68602], + ["2019-08-29T11:21:27", 11.29592, -57.68585], + ["2019-08-29T14:49:00", 11.31257, -57.68985], + ["2019-08-29T16:19:41", 11.31884, -57.69764], + ["2019-08-29T16:49:41", 11.3209, -57.6997], + ["2019-08-29T17:19:41", 11.32343, -57.70227], + ["2019-08-29T17:49:38", 11.32558, -57.70495], + ["2019-08-29T18:19:38", 11.32854, -57.70718], + ["2019-08-29T18:47:59", 11.33087, -57.70856], + ["2019-08-29T19:18:04", 11.33358, -57.71048], + ["2019-08-29T19:48:11", 11.33614, -57.71227], + ["2019-08-29T20:18:11", 11.33854, -57.71356], + ["2019-08-29T20:47:38", 11.3414, -57.71484], + ["2019-08-29T21:18:29", 11.3447, -57.71622], + ["2019-08-29T21:47:35", 11.34788, -57.71759], + ["2019-08-29T21:54:00", 11.34851, -57.71786], + ["2019-08-29T22:17:59", 11.35089, -57.71921], + ["2019-08-29T22:47:31", 11.35351, -57.72098], + ["2019-08-29T23:18:47", 11.35602, -57.72296], + ["2019-08-30T01:17:26", 11.36332, -57.72723], + ["2019-08-30T01:47:27", 11.36397, -57.72875], + ["2019-08-30T02:17:27", 11.36457, -57.73038], + ["2019-08-30T02:47:56", 11.36506, -57.73186], + ["2019-08-30T03:17:56", 11.36553, -57.73358], + ["2019-08-30T04:16:59", 11.36602, -57.73579], + ["2019-08-30T04:46:59", 11.36568, -57.73656], + ["2019-08-30T05:16:59", 11.36495, -57.73785], + ["2019-08-30T05:46:07", 11.36415, -57.73956], + ["2019-08-30T06:45:52", 11.36403, -57.74496], + ["2019-08-30T07:16:25", 11.36458, -57.74853], + ["2019-08-30T07:46:25", 11.36552, -57.75196], + ["2019-08-30T08:16:25", 11.36719, -57.75522], + ["2019-08-30T08:45:28", 11.36958, -57.75772], + ["2019-08-30T09:15:28", 11.37215, -57.75995], + ["2019-08-30T09:45:26", 11.37476, -57.76177], + ["2019-08-30T10:15:26", 11.37768, -57.76349], + ["2019-08-30T10:44:37", 11.38009, -57.76538], + ["2019-08-30T12:15:29", 11.38907, -57.77063], + ["2019-08-30T12:45:32", 11.39155, -57.77172], + ["2019-08-30T13:15:32", 11.39417, -57.77335], + ["2019-08-30T13:45:54", 11.39675, -57.77522], + ["2019-08-30T14:15:54", 11.39915, -57.77728], + ["2019-08-30T15:45:09", 11.40387, -57.78177], + ["2019-08-30T16:13:38", 11.40552, -57.78311], + ["2019-08-30T16:43:38", 11.40672, -57.78534], + ["2019-08-30T17:13:29", 11.40808, -57.78802], + ["2019-08-30T17:43:29", 11.40993, -57.79102], + ["2019-08-30T18:12:33", 11.41218, -57.79425], + ["2019-08-30T18:42:56", 11.41476, -57.79739], + ["2019-08-30T19:12:55", 11.41786, -57.80099], + ["2019-08-30T19:42:55", 11.42146, -57.80408], + ["2019-08-30T20:12:05", 11.42526, -57.80704], + ["2019-08-30T20:42:28", 11.42989, -57.81059], + ["2019-08-30T21:12:28", 11.43457, -57.81368], + ["2019-08-30T21:42:28", 11.44011, -57.81711], + ["2019-08-30T22:11:36", 11.44616, -57.82022], + ["2019-08-30T22:41:58", 11.45272, -57.82336], + ["2019-08-30T23:11:21", 11.4592, -57.82666], + ["2019-08-30T23:41:38", 11.46608, -57.83026], + ["2019-08-31T00:11:03", 11.47303, -57.83328], + ["2019-08-31T00:40:41", 11.48024, -57.83582], + ["2019-08-31T01:10:41", 11.48685, -57.83771], + ["2019-08-31T01:41:24", 11.49325, -57.83966], + ["2019-08-31T02:41:00", 11.50635, -57.84244], + ["2019-08-31T03:11:00", 11.51163, -57.84356], + ["2019-08-31T03:41:00", 11.51708, -57.84442], + ["2019-08-31T04:10:07", 11.522, -57.84467], + ["2019-08-31T04:40:58", 11.52657, -57.84448], + ["2019-08-31T05:10:07", 11.53024, -57.84415], + ["2019-08-31T05:40:27", 11.5338, -57.84393], + ["2019-08-31T06:10:00", 11.53679, -57.84326], + ["2019-08-31T06:39:59", 11.53941, -57.84296], + ["2019-08-31T07:09:59", 11.54151, -57.84296], + ["2019-08-31T07:40:28", 11.54375, -57.84283], + ["2019-08-31T08:09:49", 11.54668, -57.84265], + ["2019-08-31T09:09:18", 11.55252, -57.84289], + ["2019-08-31T09:40:24", 11.55608, -57.84378], + ["2019-08-31T10:09:18", 11.56015, -57.84521], + ["2019-08-31T11:39:09", 11.57391, -57.84807], + ["2019-08-31T12:09:09", 11.57833, -57.84919], + ["2019-08-31T12:39:09", 11.58331, -57.85065], + ["2019-08-31T13:08:57", 11.58869, -57.85239], + ["2019-08-31T13:38:57", 11.59461, -57.85471], + ["2019-08-31T14:08:11", 11.6006, -57.85681], + ["2019-08-31T14:38:57", 11.60674, -57.85889], + ["2019-08-31T15:07:45", 11.61244, -57.86057], + ["2019-08-31T15:37:45", 11.61866, -57.86186], + ["2019-08-31T16:07:45", 11.62394, -57.86212], + ["2019-08-31T16:37:57", 11.62977, -57.86234], + ["2019-08-31T17:07:57", 11.63526, -57.8632], + ["2019-08-31T17:37:57", 11.64092, -57.8638], + ["2019-08-31T18:07:06", 11.64614, -57.86401], + ["2019-08-31T19:07:26", 11.65694, -57.8644], + ["2019-08-31T19:37:26", 11.66252, -57.8644], + ["2019-08-31T20:07:26", 11.66836, -57.86517], + ["2019-08-31T21:35:56", 11.68909, -57.86426], + ["2019-08-31T22:05:56", 11.69115, -57.86426], + ["2019-08-31T22:35:56", 11.69634, -57.86426], + ["2019-08-31T23:06:27", 11.70197, -57.86465], + ["2019-09-01T00:35:22", 11.71797, -57.86812], + ["2019-09-01T01:05:22", 11.72351, -57.86992], + ["2019-09-01T01:35:22", 11.72849, -57.87146], + ["2019-09-01T02:05:58", 11.734, -57.87295], + ["2019-09-01T02:35:58", 11.73894, -57.87355], + ["2019-09-01T03:05:58", 11.74392, -57.87372], + ["2019-09-01T04:34:39", 11.75861, -57.87601], + ["2019-09-01T06:34:05", 11.77521, -57.87138], + ["2019-09-01T07:04:05", 11.77903, -57.86923], + ["2019-09-01T07:34:05", 11.78246, -57.867], + ["2019-09-01T08:04:03", 11.78613, -57.86572], + ["2019-09-01T09:03:52", 11.79388, -57.86475], + ["2019-09-01T09:34:26", 11.79818, -57.86453], + ["2019-09-01T10:03:41", 11.80196, -57.8645], + ["2019-09-01T10:33:29", 11.80533, -57.8646], + ["2019-09-01T11:03:29", 11.80825, -57.86511], + ["2019-09-01T11:33:30", 11.81192, -57.86618], + ["2019-09-01T12:04:26", 11.81583, -57.86743], + ["2019-09-01T12:34:27", 11.81902, -57.86882], + ["2019-09-01T13:04:27", 11.8225, -57.87097], + ["2019-09-01T13:33:14", 11.82683, -57.87347], + ["2019-09-01T15:02:56", 11.83823, -57.87823], + ["2019-09-01T15:32:30", 11.84171, -57.87997], + ["2019-09-01T16:02:56", 11.8448, -57.88226], + ["2019-09-01T17:04:14", 11.85161, -57.88708], + ["2019-09-01T17:32:17", 11.85485, -57.89001], + ["2019-09-01T18:02:17", 11.85845, -57.89233], + ["2019-09-01T18:31:43", 11.86234, -57.89395], + ["2019-09-01T19:01:43", 11.8668, -57.89618], + ["2019-09-01T19:32:30", 11.87194, -57.89923], + ["2019-09-01T20:02:00", 11.87704, -57.90231], + ["2019-09-01T20:32:00", 11.88228, -57.90591], + ["2019-09-01T20:53:47", 11.89344, -57.91212], + ["2019-09-01T21:23:47", 11.8967, -57.91366], + ["2019-09-01T21:53:47", 11.89773, -57.91409], + ["2019-09-01T23:31:49", 11.91544, -57.92197], + ["2019-09-02T00:00:42", 11.91979, -57.92355], + ["2019-09-02T00:31:49", 11.9242, -57.92514], + ["2019-09-02T02:31:55", 11.93485, -57.93253], + ["2019-09-02T03:00:15", 11.93614, -57.93478], + ["2019-09-02T03:31:55", 11.93785, -57.93768], + ["2019-09-02T03:59:56", 11.93898, -57.94012], + ["2019-09-02T05:00:24", 11.94238, -57.94475], + ["2019-09-02T05:30:24", 11.94431, -57.94655], + ["2019-09-02T06:00:24", 11.94701, -57.94861], + ["2019-09-02T06:29:12", 11.94953, -57.95004], + ["2019-09-02T06:59:30", 11.9526, -57.95209], + ["2019-09-02T08:58:58", 11.96896, -57.96121], + ["2019-09-02T09:58:56", 11.97861, -57.96637], + ["2019-09-02T10:27:57", 11.98285, -57.96893], + ["2019-09-02T10:58:56", 11.98719, -57.97229], + ["2019-09-02T11:27:34", 11.99124, -57.9754], + ["2019-09-02T12:57:39", 12.00312, -57.98638], + ["2019-09-02T13:27:39", 12.0063, -57.98998], + ["2019-09-02T13:57:39", 12.00913, -57.99393], + ["2019-09-02T14:27:30", 12.0108, -57.99768], + ["2019-09-02T14:57:30", 12.01243, -58.00189], + ["2019-09-02T15:26:26", 12.01448, -58.00609], + ["2019-09-02T15:58:02", 12.01699, -58.01111], + ["2019-09-02T16:26:26", 12.01954, -58.01578], + ["2019-09-02T17:26:11", 12.02534, -58.02637], + ["2019-09-02T17:58:28", 12.02828, -58.03154], + ["2019-09-02T18:25:52", 12.03108, -58.0358], + ["2019-09-02T18:58:28", 12.03467, -58.04141], + ["2019-09-02T19:25:24", 12.0378, -58.04581], + ["2019-09-02T19:55:24", 12.04179, -58.05087], + ["2019-09-02T21:54:08", 12.06773, -58.07333], + ["2019-09-02T21:54:53", 12.06789, -58.07339], + ["2019-09-02T22:26:08", 12.07593, -58.07999], + ["2019-09-02T22:54:43", 12.08352, -58.08554], + ["2019-09-02T23:26:02", 12.09201, -58.09088], + ["2019-09-02T23:54:19", 12.09915, -58.09529], + ["2019-09-03T00:24:19", 12.10559, -58.09907], + ["2019-09-03T00:54:19", 12.11173, -58.10156], + ["2019-09-03T01:24:41", 12.11728, -58.10286], + ["2019-09-03T01:54:07", 12.12188, -58.10355], + ["2019-09-03T02:24:41", 12.12608, -58.10449], + ["2019-09-03T02:54:01", 12.12988, -58.10471], + ["2019-09-03T03:24:32", 12.13288, -58.10605], + ["2019-09-03T03:53:49", 12.13534, -58.10797], + ["2019-09-03T04:53:30", 12.14092, -58.11164], + ["2019-09-03T05:23:30", 12.14461, -58.11447], + ["2019-09-03T05:53:30", 12.1486, -58.11713], + ["2019-09-03T07:52:47", 12.16551, -58.13257], + ["2019-09-03T08:52:33", 12.17441, -58.14188], + ["2019-09-03T09:22:58", 12.17989, -58.14761], + ["2019-09-03T10:23:42", 12.19297, -58.16174], + ["2019-09-03T11:52:03", 12.21257, -58.17389], + ["2019-09-03T12:21:46", 12.21919, -58.17843], + ["2019-09-03T12:51:46", 12.22391, -58.18246], + ["2019-09-03T13:21:46", 12.22932, -58.18658], + ["2019-09-03T13:54:05", 12.23457, -58.19025], + ["2019-09-03T14:21:25", 12.23765, -58.19363], + ["2019-09-03T17:50:31", 12.26542, -58.21246], + ["2019-09-03T21:51:05", 12.28508, -58.24527], + ["2019-09-03T22:20:02", 12.28585, -58.24866], + ["2019-09-03T22:50:37", 12.28653, -58.25165], + ["2019-09-03T23:19:30", 12.2877, -58.2552], + ["2019-09-03T23:49:30", 12.28929, -58.25923], + ["2019-09-04T00:19:30", 12.29165, -58.26395], + ["2019-09-04T00:49:23", 12.29461, -58.26852], + ["2019-09-04T01:19:23", 12.29658, -58.27109], + ["2019-09-04T01:49:06", 12.29898, -58.27376], + ["2019-09-04T02:21:00", 12.30188, -58.27676], + ["2019-09-04T02:49:06", 12.30478, -58.27994], + ["2019-09-04T03:18:52", 12.30826, -58.28372], + ["2019-09-04T03:50:09", 12.31291, -58.28815], + ["2019-09-04T06:50:58", 12.33722, -58.30948], + ["2019-09-04T07:18:52", 12.34014, -58.31247], + ["2019-09-04T07:48:52", 12.34173, -58.31487], + ["2019-09-04T08:18:52", 12.34306, -58.31805], + ["2019-09-04T08:47:52", 12.3452, -58.32175], + ["2019-09-04T09:18:18", 12.34757, -58.32541], + ["2019-09-04T09:47:32", 12.34984, -58.32904], + ["2019-09-04T10:18:21", 12.35207, -58.33223], + ["2019-09-04T10:48:21", 12.35409, -58.33395], + ["2019-09-04T11:18:21", 12.35619, -58.33661], + ["2019-09-04T11:47:10", 12.35822, -58.3396], + ["2019-09-04T14:46:13", 12.37436, -58.36874], + ["2019-09-04T15:16:13", 12.37758, -58.37492], + ["2019-09-04T15:46:13", 12.38101, -58.38016], + ["2019-09-04T16:17:29", 12.38515, -58.3851], + ["2019-09-04T16:48:28", 12.38969, -58.38961], + ["2019-09-04T17:18:28", 12.39574, -58.39648], + ["2019-09-04T18:47:04", 12.41286, -58.41574], + ["2019-09-04T19:18:11", 12.41806, -58.41947], + ["2019-09-04T19:48:11", 12.42372, -58.42453], + ["2019-09-04T20:15:15", 12.42731, -58.42707], + ["2019-09-04T20:45:15", 12.43117, -58.43042], + ["2019-09-04T22:14:56", 12.44021, -58.44654], + ["2019-09-04T22:15:28", 12.44015, -58.4465], + ["2019-09-04T22:44:56", 12.44278, -58.45178], + ["2019-09-04T23:14:56", 12.44475, -58.45667], + ["2019-09-04T23:44:11", 12.44633, -58.46225], + ["2019-09-05T00:14:11", 12.44822, -58.46937], + ["2019-09-05T00:44:11", 12.45002, -58.47641], + ["2019-09-05T01:14:25", 12.45272, -58.48505], + ["2019-09-05T01:44:03", 12.45663, -58.49261], + ["2019-09-05T03:43:47", 12.47892, -58.51493], + ["2019-09-05T04:13:47", 12.48484, -58.51965], + ["2019-09-05T04:43:47", 12.48986, -58.52454], + ["2019-09-05T06:13:12", 12.50905, -58.54101], + ["2019-09-05T06:43:12", 12.51609, -58.5459], + ["2019-09-05T07:13:12", 12.52141, -58.54813], + ["2019-09-05T07:43:55", 12.5257, -58.5513], + ["2019-09-05T08:13:01", 12.52863, -58.55466], + ["2019-09-05T08:45:57", 12.52887, -58.55756], + ["2019-09-05T10:44:02", 12.53426, -58.57089], + ["2019-09-05T11:14:02", 12.53606, -58.57346], + ["2019-09-05T11:44:02", 12.53868, -58.57681], + ["2019-09-05T12:41:49", 12.54377, -58.58087], + ["2019-09-05T13:12:24", 12.54586, -58.58234], + ["2019-09-05T15:13:26", 12.5567, -58.5943], + ["2019-09-05T16:41:58", 12.56555, -58.61166], + ["2019-09-05T17:11:13", 12.56784, -58.61578], + ["2019-09-05T17:41:13", 12.56977, -58.62119], + ["2019-09-05T18:10:08", 12.57142, -58.62716], + ["2019-09-05T18:40:08", 12.57318, -58.63377], + ["2019-09-05T19:10:08", 12.57455, -58.63995], + ["2019-09-05T19:40:41", 12.57642, -58.64673], + ["2019-09-05T20:10:02", 12.57754, -58.65268], + ["2019-09-05T20:40:02", 12.5787, -58.65989], + ["2019-09-05T21:10:02", 12.5793, -58.66641], + ["2019-09-05T21:40:14", 12.57907, -58.67133], + ["2019-09-05T22:10:44", 12.57977, -58.67575], + ["2019-09-05T22:40:44", 12.58127, -58.67953], + ["2019-09-05T23:09:43", 12.58106, -58.68488], + ["2019-09-05T23:40:40", 12.58228, -58.69019], + ["2019-09-06T01:08:43", 12.58179, -58.69728], + ["2019-09-06T01:38:43", 12.57922, -58.70037], + ["2019-09-06T02:08:43", 12.57587, -58.70303], + ["2019-09-06T02:39:32", 12.573, -58.70779], + ["2019-09-06T03:08:22", 12.57174, -58.71313], + ["2019-09-06T03:38:00", 12.57082, -58.71936], + ["2019-09-06T04:08:00", 12.57082, -58.72614], + ["2019-09-06T04:38:41", 12.57009, -58.73392], + ["2019-09-06T05:07:21", 12.57053, -58.73974], + ["2019-09-06T05:38:57", 12.57119, -58.74429], + ["2019-09-06T06:07:21", 12.57216, -58.74875], + ["2019-09-06T06:37:57", 12.57313, -58.75476], + ["2019-09-06T07:07:04", 12.5746, -58.76135], + ["2019-09-06T07:37:26", 12.57583, -58.7666], + ["2019-09-06T08:07:28", 12.57672, -58.77156], + ["2019-09-06T08:37:28", 12.57788, -58.7774], + ["2019-09-06T09:06:58", 12.57872, -58.78204], + ["2019-09-06T09:36:49", 12.5797, -58.78722], + ["2019-09-06T10:06:49", 12.57979, -58.79263], + ["2019-09-06T10:36:38", 12.57989, -58.79926], + ["2019-09-06T11:06:38", 12.57972, -58.80673], + ["2019-09-06T11:37:12", 12.57968, -58.8143], + ["2019-09-06T12:06:40", 12.5791, -58.82141], + ["2019-09-06T12:37:12", 12.57898, -58.82828], + ["2019-09-06T13:06:29", 12.57878, -58.83526], + ["2019-09-06T13:36:29", 12.57895, -58.84204], + ["2019-09-06T16:05:36", 12.59044, -58.87912], + ["2019-09-06T16:35:20", 12.59381, -58.88475], + ["2019-09-06T17:05:20", 12.59716, -58.88956], + ["2019-09-06T17:35:07", 12.60013, -58.89323], + ["2019-09-06T18:05:07", 12.60322, -58.89658], + ["2019-09-06T18:35:57", 12.60711, -58.90051], + ["2019-09-06T19:05:29", 12.61133, -58.90405], + ["2019-09-06T19:35:29", 12.61575, -58.90903], + ["2019-09-06T20:04:46", 12.6198, -58.91382], + ["2019-09-06T20:35:41", 12.62376, -58.91843], + ["2019-09-06T22:34:28", 12.63861, -58.93555], + ["2019-09-06T23:34:25", 12.64253, -58.95071], + ["2019-09-07T00:04:25", 12.64322, -58.95766], + ["2019-09-07T00:34:25", 12.64322, -58.9635], + ["2019-09-07T01:03:21", 12.64269, -58.96857], + ["2019-09-07T01:33:07", 12.64252, -58.97348], + ["2019-09-07T02:03:07", 12.64218, -58.97751], + ["2019-09-07T03:32:38", 12.64593, -58.99024], + ["2019-09-07T04:02:38", 12.6458, -58.99582], + ["2019-09-07T04:32:38", 12.64567, -59.00183], + ["2019-09-07T05:03:28", 12.64629, -59.00854], + ["2019-09-07T05:32:12", 12.64653, -59.0152], + ["2019-09-07T06:02:26", 12.64708, -59.02193], + ["2019-09-07T06:32:26", 12.64785, -59.02742], + ["2019-09-07T07:02:26", 12.64888, -59.03214], + ["2019-09-07T07:31:57", 12.64972, -59.03608], + ["2019-09-07T08:01:57", 12.65036, -59.03934], + ["2019-09-07T08:31:57", 12.65061, -59.04268], + ["2019-09-07T09:01:57", 12.65052, -59.04568], + ["2019-09-07T10:31:17", 12.64563, -59.05295], + ["2019-09-07T12:01:55", 12.63593, -59.05964], + ["2019-09-07T12:30:53", 12.63338, -59.06238], + ["2019-09-07T13:01:55", 12.63121, -59.06616], + ["2019-09-07T13:31:10", 12.6292, -59.07096], + ["2019-09-07T14:01:10", 12.62744, -59.07645], + ["2019-09-07T14:30:32", 12.6271, -59.08209], + ["2019-09-07T15:01:17", 12.62775, -59.08713], + ["2019-09-07T16:29:44", 12.62871, -59.10083], + ["2019-09-07T17:00:24", 12.6298, -59.10513], + ["2019-09-07T17:29:34", 12.6311, -59.10913], + ["2019-09-07T18:00:24", 12.63319, -59.11319], + ["2019-09-07T18:29:11", 12.63436, -59.11688], + ["2019-09-07T19:00:02", 12.63447, -59.12039], + ["2019-09-07T19:58:35", 12.63248, -59.12781], + ["2019-09-07T20:28:35", 12.63055, -59.13116], + ["2019-09-07T20:58:35", 12.62798, -59.13425], + ["2019-09-07T21:29:00", 12.62548, -59.13748], + ["2019-09-07T21:58:20", 12.62248, -59.14096], + ["2019-09-07T22:57:56", 12.6148, -59.14946], + ["2019-09-07T23:27:56", 12.6112, -59.15487], + ["2019-09-07T23:57:56", 12.60824, -59.15976], + ["2019-09-08T00:28:27", 12.60499, -59.16458], + ["2019-09-08T00:57:50", 12.60132, -59.1691], + ["2019-09-08T01:28:01", 12.59799, -59.17303], + ["2019-09-08T02:27:43", 12.59091, -59.17911], + ["2019-09-08T02:56:47", 12.5868, -59.18225], + ["2019-09-08T03:27:28", 12.58283, -59.18585], + ["2019-09-08T03:56:47", 12.57946, -59.18903], + ["2019-09-08T04:26:32", 12.57582, -59.19257], + ["2019-09-08T04:56:32", 12.57217, -59.19626], + ["2019-09-08T05:26:58", 12.57062, -59.20065], + ["2019-09-08T05:56:58", 12.56944, -59.20498], + ["2019-09-08T06:26:58", 12.56802, -59.20953], + ["2019-09-08T08:26:57", 12.56019, -59.22879], + ["2019-09-08T08:55:58", 12.55737, -59.23367], + ["2019-09-08T09:56:01", 12.55106, -59.24271], + ["2019-09-08T10:25:56", 12.54711, -59.24701], + ["2019-09-08T10:55:56", 12.54368, -59.25139], + ["2019-09-08T11:25:56", 12.53952, -59.2562], + ["2019-09-08T11:55:42", 12.53443, -59.2608], + ["2019-09-08T12:25:42", 12.52975, -59.2644], + ["2019-09-08T14:55:04", 12.50788, -59.28593], + ["2019-09-08T15:25:04", 12.50479, -59.2922], + ["2019-09-08T15:55:04", 12.502, -59.29889], + ["2019-09-08T17:54:19", 12.4948, -59.33481], + ["2019-09-08T18:24:27", 12.49457, -59.34477], + ["2019-09-08T18:54:27", 12.49474, -59.35438], + ["2019-09-08T19:24:27", 12.495, -59.36313], + ["2019-09-08T20:24:25", 12.49606, -59.37997], + ["2019-09-08T20:54:25", 12.49597, -59.38812], + ["2019-09-08T21:24:25", 12.49584, -59.3967], + ["2019-09-08T21:53:28", 12.49604, -59.40396], + ["2019-09-08T23:23:56", 12.49554, -59.42463], + ["2019-09-08T23:53:56", 12.4946, -59.43124], + ["2019-09-09T00:23:56", 12.49387, -59.43896], + ["2019-09-09T00:52:46", 12.49306, -59.44733], + ["2019-09-09T01:52:41", 12.49235, -59.46417], + ["2019-09-09T02:22:27", 12.49213, -59.47236], + ["2019-09-09T02:52:27", 12.49187, -59.47931], + ["2019-09-09T06:21:25", 12.49669, -59.52829], + ["2019-09-09T07:20:56", 12.49712, -59.54145], + ["2019-09-09T07:51:59", 12.49737, -59.54803], + ["2019-09-09T08:20:56", 12.49759, -59.55475], + ["2019-09-09T09:20:44", 12.49827, -59.5686], + ["2019-09-09T10:20:41", 12.4974, -59.57977], + ["2019-09-09T10:51:11", 12.49713, -59.58649], + ["2019-09-09T11:49:54", 12.49702, -59.59875], + ["2019-09-09T12:19:54", 12.49681, -59.60441], + ["2019-09-09T12:49:54", 12.49638, -59.6105], + ["2019-09-09T14:49:14", 12.49776, -59.63505], + ["2019-09-09T15:20:57", 12.49888, -59.64169], + ["2019-09-09T15:49:14", 12.49931, -59.64749], + ["2019-09-09T16:19:07", 12.50015, -59.65447], + ["2019-09-09T16:49:07", 12.50122, -59.66168], + ["2019-09-09T18:18:10", 12.50667, -59.68372], + ["2019-09-09T18:49:11", 12.50876, -59.69067], + ["2019-09-09T19:18:10", 12.51096, -59.69788], + ["2019-09-09T19:48:27", 12.51355, -59.70562], + ["2019-09-09T20:18:27", 12.51574, -59.71369], + ["2019-09-09T20:48:27", 12.5184, -59.7215], + ["2019-09-09T21:17:44", 12.52133, -59.72916], + ["2019-09-09T22:17:31", 12.52835, -59.74377], + ["2019-09-09T22:48:57", 12.53199, -59.75226], + ["2019-09-09T23:18:57", 12.53469, -59.75964], + ["2019-09-09T23:48:57", 12.53735, -59.76685], + ["2019-09-10T02:16:23", 12.54721, -59.80096], + ["2019-09-10T04:16:59", 12.55396, -59.83044], + ["2019-09-10T04:46:29", 12.55741, -59.83868], + ["2019-09-10T05:16:29", 12.5617, -59.84735], + ["2019-09-10T06:16:30", 12.57214, -59.86511], + ["2019-09-10T08:47:28", 12.60687, -59.90782], + ["2019-09-10T09:17:28", 12.61464, -59.91409], + ["2019-09-10T09:47:28", 12.62292, -59.9213], + ["2019-09-10T13:43:44", 12.69393, -59.95944], + ["2019-09-10T14:13:24", 12.70264, -59.96521], + ["2019-09-10T14:43:24", 12.71032, -59.96976], + ["2019-09-10T15:13:22", 12.71902, -59.97491], + ["2019-09-10T15:44:15", 12.7278, -59.98184], + ["2019-09-10T17:12:32", 12.75505, -59.99842], + ["2019-09-10T17:42:32", 12.76436, -60.00374], + ["2019-09-10T18:12:32", 12.77359, -60.00949], + ["2019-09-10T19:42:59", 12.80468, -60.02679], + ["2019-09-10T21:42:28", 12.84152, -60.04068], + ["2019-09-10T22:11:37", 12.84956, -60.04355], + ["2019-09-10T22:42:56", 12.85764, -60.0459], + ["2019-09-10T23:42:29", 12.87453, -60.04849], + ["2019-09-11T00:12:29", 12.88217, -60.04849], + ["2019-09-11T00:42:29", 12.8905, -60.0484], + ["2019-09-11T01:11:02", 12.89802, -60.04774], + ["2019-09-11T01:41:02", 12.90583, -60.04723], + ["2019-09-11T02:11:02", 12.91274, -60.04749], + ["2019-09-11T02:41:30", 12.91964, -60.04828], + ["2019-09-11T05:11:59", 12.94691, -60.05042], + ["2019-09-11T05:39:57", 12.95103, -60.0502], + ["2019-09-11T06:09:45", 12.95525, -60.05053], + ["2019-09-11T06:39:45", 12.95941, -60.05122], + ["2019-09-11T07:09:45", 12.96332, -60.05182], + ["2019-09-11T08:10:36", 12.97291, -60.05326], + ["2019-09-11T08:11:29", 12.97288, -60.05325], + ["2019-09-11T08:40:36", 12.97699, -60.05369], + ["2019-09-11T09:10:36", 12.98193, -60.05429], + ["2019-09-11T10:08:51", 12.99129, -60.05521], + ["2019-09-11T10:39:43", 12.99551, -60.05615], + ["2019-09-11T11:08:51", 12.99927, -60.05692], + ["2019-09-11T12:08:10", 13.00717, -60.05841], + ["2019-09-11T12:38:10", 13.01073, -60.05884], + ["2019-09-11T12:38:56", 13.01071, -60.05881], + ["2019-09-11T13:08:10", 13.01429, -60.05893], + ["2019-09-11T14:37:39", 13.02451, -60.0607], + ["2019-09-11T15:08:28", 13.02784, -60.06122], + ["2019-09-11T16:37:23", 13.03825, -60.06406], + ["2019-09-11T17:07:59", 13.0421, -60.0662], + ["2019-09-11T17:37:59", 13.04515, -60.06869], + ["2019-09-11T18:07:59", 13.0488, -60.07178], + ["2019-09-11T19:06:58", 13.05776, -60.07764], + ["2019-09-11T19:40:02", 13.06297, -60.08124], + ["2019-09-11T20:05:52", 13.06774, -60.08463], + ["2019-09-11T20:35:52", 13.07263, -60.08875], + ["2019-09-11T21:05:40", 13.07788, -60.09348], + ["2019-09-11T21:35:40", 13.08183, -60.09769], + ["2019-09-11T21:52:15", 13.08412, -60.10028], + ["2019-09-12T00:05:29", 13.0987, -60.1213], + ["2019-09-12T00:35:29", 13.10102, -60.12542], + ["2019-09-12T01:05:29", 13.10321, -60.12988], + ["2019-09-12T01:34:47", 13.10477, -60.13391], + ["2019-09-12T02:06:07", 13.10606, -60.13803], + ["2019-09-12T03:05:02", 13.10623, -60.14492], + ["2019-09-12T03:35:02", 13.10559, -60.14758], + ["2019-09-12T04:05:02", 13.10482, -60.15161], + ["2019-09-12T04:34:01", 13.1036, -60.15549], + ["2019-09-12T06:04:06", 13.10051, -60.16261], + ["2019-09-12T06:33:29", 13.09975, -60.16602], + ["2019-09-12T07:04:06", 13.09867, -60.1705], + ["2019-09-12T07:33:27", 13.09854, -60.17563], + ["2019-09-12T08:03:19", 13.09896, -60.18106], + ["2019-09-12T08:33:19", 13.09978, -60.18518], + ["2019-09-12T10:03:26", 13.10463, -60.1973], + ["2019-09-12T11:03:58", 13.1097, -60.20474], + ["2019-09-12T11:33:25", 13.11216, -60.2077], + ["2019-09-12T12:03:25", 13.11431, -60.21045], + ["2019-09-12T12:31:55", 13.11599, -60.2135], + ["2019-09-12T16:02:07", 13.1288, -60.23543], + ["2019-09-12T16:32:07", 13.13159, -60.23843], + ["2019-09-12T17:02:07", 13.13472, -60.24161], + ["2019-09-12T17:31:04", 13.13807, -60.2453], + ["2019-09-12T18:00:50", 13.14132, -60.24984], + ["2019-09-12T18:30:50", 13.1442, -60.25473], + ["2019-09-12T19:00:59", 13.14695, -60.26068], + ["2019-09-12T19:30:59", 13.14914, -60.2666], + ["2019-09-12T20:00:59", 13.15133, -60.27338], + ["2019-09-12T21:29:53", 13.16149, -60.30205], + ["2019-09-12T22:01:30", 13.16282, -60.30414], + ["2019-09-12T22:29:53", 13.16685, -60.31107], + ["2019-09-12T23:29:37", 13.17558, -60.32428], + ["2019-09-13T00:00:01", 13.17999, -60.33002], + ["2019-09-13T00:29:16", 13.18518, -60.33624], + ["2019-09-13T00:59:31", 13.18955, -60.34204], + ["2019-09-13T01:59:05", 13.20056, -60.35266], + ["2019-09-13T02:28:58", 13.20738, -60.3572], + ["2019-09-13T02:58:58", 13.21498, -60.36218], + ["2019-09-13T03:28:22", 13.22263, -60.36731], + ["2019-09-13T04:27:54", 13.23787, -60.37988], + ["2019-09-13T04:57:54", 13.24607, -60.3864], + ["2019-09-13T05:27:54", 13.25452, -60.39224], + ["2019-09-13T05:58:28", 13.26245, -60.39789], + ["2019-09-13T06:27:34", 13.26915, -60.40246], + ["2019-09-13T06:57:34", 13.27627, -60.40692], + ["2019-09-13T07:27:34", 13.28339, -60.41104], + ["2019-09-13T07:58:25", 13.28973, -60.41461], + ["2019-09-13T08:27:23", 13.29518, -60.41711], + ["2019-09-13T08:57:56", 13.30096, -60.41838], + ["2019-09-13T09:27:56", 13.30581, -60.41924], + ["2019-09-13T09:57:56", 13.31066, -60.42078], + ["2019-09-13T10:27:11", 13.31526, -60.4223], + ["2019-09-13T10:57:08", 13.32032, -60.42332], + ["2019-09-13T11:27:08", 13.32508, -60.42383], + ["2019-09-13T11:57:58", 13.33042, -60.4249], + ["2019-09-13T13:56:19", 13.35439, -60.43081], + ["2019-09-13T14:26:57", 13.36213, -60.4324], + ["2019-09-13T14:56:19", 13.36993, -60.43433], + ["2019-09-13T15:26:57", 13.37799, -60.43735], + ["2019-09-13T15:56:55", 13.38647, -60.44112], + ["2019-09-13T16:26:55", 13.39535, -60.44412], + ["2019-09-13T16:56:04", 13.40328, -60.44675], + ["2019-09-13T17:55:49", 13.42073, -60.4531], + ["2019-09-13T18:25:49", 13.42854, -60.45628], + ["2019-09-13T18:55:49", 13.43558, -60.45834], + ["2019-09-13T19:26:30", 13.4419, -60.45959], + ["2019-09-13T19:55:38", 13.44727, -60.46033], + ["2019-09-13T20:25:57", 13.45254, -60.46091], + ["2019-09-13T20:52:01", 13.46554, -60.46482], + ["2019-09-13T21:22:01", 13.46992, -60.46602], + ["2019-09-13T21:52:01", 13.47074, -60.46619], + ["2019-09-13T21:55:09", 13.47132, -60.4664], + ["2019-09-13T23:24:59", 13.4876, -60.4701], + ["2019-09-13T23:54:59", 13.49314, -60.47044], + ["2019-09-14T00:24:59", 13.49906, -60.47147], + ["2019-09-14T01:24:57", 13.51044, -60.47501], + ["2019-09-14T01:54:21", 13.51577, -60.47646], + ["2019-09-14T02:24:21", 13.52131, -60.47715], + ["2019-09-14T02:54:21", 13.52603, -60.47775], + ["2019-09-14T03:24:35", 13.53169, -60.47836], + ["2019-09-14T03:54:06", 13.53731, -60.47925], + ["2019-09-14T04:53:49", 13.54761, -60.47797], + ["2019-09-14T05:23:32", 13.55218, -60.47616], + ["2019-09-14T05:53:32", 13.5557, -60.47479], + ["2019-09-14T06:23:58", 13.55866, -60.47345], + ["2019-09-14T06:53:18", 13.56176, -60.47153], + ["2019-09-14T07:23:36", 13.5651, -60.46973], + ["2019-09-14T07:53:03", 13.56923, -60.46866], + ["2019-09-14T08:23:24", 13.57317, -60.4675], + ["2019-09-14T08:52:48", 13.57725, -60.46585], + ["2019-09-14T09:22:55", 13.58082, -60.46409], + ["2019-09-14T09:52:55", 13.58421, -60.46229], + ["2019-09-14T10:22:55", 13.5873, -60.46109], + ["2019-09-14T10:52:28", 13.59047, -60.45975], + ["2019-09-14T11:22:55", 13.59342, -60.45877], + ["2019-09-14T11:52:57", 13.59663, -60.45792], + ["2019-09-14T12:22:57", 13.60032, -60.45758], + ["2019-09-14T12:51:57", 13.60465, -60.45712], + ["2019-09-14T13:21:34", 13.60961, -60.45623], + ["2019-09-14T13:51:34", 13.61476, -60.45477], + ["2019-09-14T14:21:57", 13.61986, -60.45325], + ["2019-09-14T14:51:16", 13.62429, -60.45242], + ["2019-09-14T15:50:42", 13.63524, -60.45259], + ["2019-09-14T16:20:42", 13.6403, -60.45147], + ["2019-09-14T16:50:42", 13.64476, -60.45044], + ["2019-09-14T17:20:56", 13.64938, -60.4487], + ["2019-09-14T17:50:55", 13.65381, -60.44754], + ["2019-09-14T18:20:55", 13.6584, -60.44565], + ["2019-09-14T19:49:48", 13.67002, -60.44183], + ["2019-09-14T20:19:36", 13.67341, -60.44264], + ["2019-09-14T20:49:36", 13.67616, -60.44067], + ["2019-09-14T21:19:58", 13.67842, -60.43759], + ["2019-09-14T21:49:15", 13.68063, -60.43546], + ["2019-09-14T21:51:35", 13.68082, -60.43536], + ["2019-09-14T22:19:58", 13.68328, -60.43329], + ["2019-09-14T22:49:27", 13.68567, -60.431], + ["2019-09-14T23:19:27", 13.68842, -60.42963], + ["2019-09-15T00:19:26", 13.69209, -60.42825], + ["2019-09-15T00:49:26", 13.69316, -60.43005], + ["2019-09-15T01:19:26", 13.69355, -60.43237], + ["2019-09-15T01:48:28", 13.69467, -60.43466], + ["2019-09-15T05:18:58", 13.69612, -60.46313], + ["2019-09-15T07:47:34", 13.70142, -60.48724], + ["2019-09-15T08:48:56", 13.7061, -60.49316], + ["2019-09-15T09:17:17", 13.70898, -60.49719], + ["2019-09-15T09:48:28", 13.7126, -60.50238], + ["2019-09-15T10:48:26", 13.71903, -60.51624], + ["2019-09-15T11:47:59", 13.72488, -60.53155], + ["2019-09-15T12:17:59", 13.72793, -60.53919], + ["2019-09-15T12:47:59", 13.73111, -60.54752], + ["2019-09-15T13:15:55", 13.73429, -60.55411], + ["2019-09-15T15:15:33", 13.74759, -60.58621], + ["2019-09-15T15:45:33", 13.75154, -60.59316], + ["2019-09-15T16:15:33", 13.75605, -60.59985], + ["2019-09-15T16:47:12", 13.76155, -60.6062], + ["2019-09-15T17:44:38", 13.7687, -60.61603], + ["2019-09-15T18:14:38", 13.77269, -60.62212], + ["2019-09-15T18:44:38", 13.77793, -60.62796], + ["2019-09-15T19:15:31", 13.78486, -60.63281], + ["2019-09-15T19:44:12", 13.79264, -60.63754], + ["2019-09-15T20:43:58", 13.80822, -60.65067], + ["2019-09-15T21:51:32", 13.82211, -60.66296], + ["2019-09-15T22:44:29", 13.83564, -60.67389], + ["2019-09-15T23:14:29", 13.84264, -60.68024], + ["2019-09-15T23:44:29", 13.84976, -60.68796], + ["2019-09-16T00:13:28", 13.85732, -60.6951], + ["2019-09-16T00:43:13", 13.86497, -60.70026], + ["2019-09-16T01:13:13", 13.87235, -60.70532], + ["2019-09-16T01:44:18", 13.88156, -60.71033], + ["2019-09-16T03:44:28", 13.9173, -60.73163], + ["2019-09-16T05:42:57", 13.9529, -60.7366], + ["2019-09-16T06:12:16", 13.96234, -60.73584], + ["2019-09-16T06:42:57", 13.97037, -60.73608], + ["2019-09-16T07:12:29", 13.97684, -60.73725], + ["2019-09-16T07:42:29", 13.98371, -60.74017], + ["2019-09-16T08:12:55", 13.99117, -60.7427], + ["2019-09-16T08:42:55", 13.9998, -60.7457], + ["2019-09-16T09:11:33", 14.00924, -60.74887], + ["2019-09-16T11:11:58", 14.06584, -60.77375], + ["2019-09-16T11:41:58", 14.07867, -60.78285], + ["2019-09-16T12:11:58", 14.09189, -60.79272], + ["2019-09-16T15:10:19", 14.15396, -60.83292], + ["2019-09-16T15:40:17", 14.16212, -60.83908], + ["2019-09-16T16:11:27", 14.17116, -60.84654], + ["2019-09-16T16:41:27", 14.18056, -60.85469], + ["2019-09-16T17:11:27", 14.19219, -60.86465], + ["2019-09-16T17:39:53", 14.20336, -60.87515], + ["2019-09-16T18:39:45", 14.22797, -60.89722], + ["2019-09-16T19:10:25", 14.24229, -60.9079], + ["2019-09-16T20:11:57", 14.26777, -60.92612], + ["2019-09-16T20:41:57", 14.27871, -60.93505], + ["2019-09-16T21:11:57", 14.29081, -60.94604], + ["2019-09-16T21:39:12", 14.30348, -60.96037], + ["2019-09-16T22:09:12", 14.30773, -60.96603], + ["2019-09-16T23:38:52", 14.32633, -60.99589], + ["2019-09-17T00:08:52", 14.33148, -61.00782], + ["2019-09-17T00:38:52", 14.3347, -61.01898], + ["2019-09-17T01:38:36", 14.34083, -61.04209], + ["2019-09-17T02:08:36", 14.34246, -61.05436], + ["2019-09-17T02:38:36", 14.34521, -61.06543], + ["2019-09-17T03:38:22", 14.34686, -61.0871], + ["2019-09-17T04:08:22", 14.34682, -61.09757], + ["2019-09-17T04:38:22", 14.34738, -61.1077], + ["2019-09-17T08:09:21", 14.36354, -61.19089], + ["2019-09-17T08:37:39", 14.36742, -61.20372], + ["2019-09-17T09:07:39", 14.3703, -61.21445], + ["2019-09-17T09:37:36", 14.37231, -61.22556], + ["2019-09-17T10:37:09", 14.37704, -61.24835], + ["2019-09-17T11:08:42", 14.38006, -61.25984], + ["2019-09-17T11:38:42", 14.38341, -61.271], + ["2019-09-17T12:07:30", 14.38784, -61.28321], + ["2019-09-17T12:37:30", 14.39166, -61.29325], + ["2019-09-17T13:07:30", 14.39514, -61.30664], + ["2019-09-17T14:06:32", 14.40156, -61.33163], + ["2019-09-17T14:35:52", 14.40438, -61.34366], + ["2019-09-17T15:06:55", 14.4066, -61.35608], + ["2019-09-17T15:35:52", 14.40854, -61.36838], + ["2019-09-17T20:04:37", 14.41707, -61.46472], + ["2019-09-17T20:51:45", 14.43783, -61.4885], + ["2019-09-17T21:21:45", 14.4401, -61.49073], + ["2019-09-17T21:51:45", 14.44113, -61.4921], + ["2019-09-17T22:03:58", 14.44308, -61.49523], + ["2019-09-17T22:33:58", 14.44677, -61.50287], + ["2019-09-18T03:03:05", 14.45218, -61.57275], + ["2019-09-18T03:33:32", 14.4553, -61.58099], + ["2019-09-18T04:35:34", 14.46213, -61.59393], + ["2019-09-18T06:32:10", 14.47286, -61.61224], + ["2019-09-18T08:32:56", 14.48509, -61.62857], + ["2019-09-18T11:01:09", 14.48221, -61.65042], + ["2019-09-18T11:30:56", 14.48119, -61.65768], + ["2019-09-18T12:00:49", 14.47995, -61.66634], + ["2019-09-18T12:30:49", 14.47759, -61.67484], + ["2019-09-18T13:01:30", 14.47551, -61.68439], + ["2019-09-18T15:03:14", 14.47341, -61.71991], + ["2019-09-18T15:30:21", 14.47449, -61.72733], + ["2019-09-18T18:02:58", 14.48518, -61.76639], + ["2019-09-18T18:29:35", 14.48729, -61.77429], + ["2019-09-18T18:59:36", 14.4899, -61.78336], + ["2019-09-18T19:30:33", 14.49286, -61.79276], + ["2019-09-18T19:59:22", 14.49597, -61.80219], + ["2019-09-18T20:59:32", 14.50251, -61.82098], + ["2019-09-18T21:28:44", 14.5049, -61.82867], + ["2019-09-18T21:58:42", 14.50711, -61.83496], + ["2019-09-18T22:28:38", 14.50997, -61.83926], + ["2019-09-18T23:28:32", 14.5133, -61.84512], + ["2019-09-19T00:29:01", 14.51452, -61.84885], + ["2019-09-19T00:59:01", 14.51632, -61.85065], + ["2019-09-19T01:29:01", 14.5195, -61.854], + ["2019-09-19T01:58:00", 14.52228, -61.85794], + ["2019-09-19T02:27:48", 14.52451, -61.8618], + ["2019-09-19T02:57:48", 14.52601, -61.86523], + ["2019-09-19T03:29:27", 14.52822, -61.86853], + ["2019-09-19T05:29:56", 14.53745, -61.8838], + ["2019-09-19T05:57:13", 14.53869, -61.88785], + ["2019-09-19T06:29:56", 14.53882, -61.89264], + ["2019-09-19T06:57:26", 14.53949, -61.8967], + ["2019-09-19T07:27:26", 14.54035, -61.89953], + ["2019-09-19T07:57:26", 14.54117, -61.90176], + ["2019-09-19T08:26:21", 14.5424, -61.90448], + ["2019-09-19T08:57:16", 14.544, -61.90646], + ["2019-09-19T09:26:21", 14.54605, -61.90903], + ["2019-09-19T09:56:57", 14.54785, -61.91138], + ["2019-09-19T10:26:09", 14.54836, -61.91312], + ["2019-09-19T12:57:28", 14.54528, -61.92249], + ["2019-09-19T14:26:13", 14.54387, -61.92999], + ["2019-09-19T14:56:13", 14.54434, -61.93402], + ["2019-09-19T15:26:13", 14.544, -61.93762], + ["2019-09-19T15:54:30", 14.54374, -61.94102], + ["2019-09-19T16:24:30", 14.54408, -61.94368], + ["2019-09-19T16:54:30", 14.54554, -61.94583], + ["2019-09-19T17:24:25", 14.54716, -61.94922], + ["2019-09-19T17:58:06", 14.54892, -61.95416], + ["2019-09-19T18:24:21", 14.5498, -61.95813], + ["2019-09-19T18:58:06", 14.55046, -61.96222], + ["2019-09-19T19:25:13", 14.5504, -61.96572], + ["2019-09-19T19:55:13", 14.55066, -61.96915], + ["2019-09-19T20:25:13", 14.55109, -61.97336], + ["2019-09-19T20:53:39", 14.55928, -61.98473], + ["2019-09-19T20:54:30", 14.5529, -61.97746], + ["2019-09-19T21:24:30", 14.55655, -61.98175], + ["2019-09-19T21:53:39", 14.56018, -61.9855], + ["2019-09-19T22:23:59", 14.5647, -61.98938], + ["2019-09-19T22:53:20", 14.5687, -61.99399], + ["2019-09-19T23:22:59", 14.57295, -61.99975], + ["2019-09-19T23:52:59", 14.57797, -62.00687], + ["2019-09-20T00:23:19", 14.58213, -62.01601], + ["2019-09-20T00:53:19", 14.58586, -62.02425], + ["2019-09-20T01:23:19", 14.59019, -62.03275], + ["2019-09-20T02:52:19", 14.60284, -62.05682], + ["2019-09-20T03:22:27", 14.60704, -62.06391], + ["2019-09-20T03:52:27", 14.61004, -62.06846], + ["2019-09-20T04:22:27", 14.61244, -62.07224], + ["2019-09-20T04:51:36", 14.61478, -62.07545], + ["2019-09-20T05:21:36", 14.61723, -62.07845], + ["2019-09-20T05:51:36", 14.61993, -62.08145], + ["2019-09-20T06:51:27", 14.62832, -62.08643], + ["2019-09-20T07:51:02", 14.63674, -62.09044], + ["2019-09-20T08:21:27", 14.64082, -62.09341], + ["2019-09-20T08:51:02", 14.64387, -62.09619], + ["2019-09-20T11:21:26", 14.66954, -62.10638], + ["2019-09-20T11:50:29", 14.67378, -62.10966], + ["2019-09-20T12:20:29", 14.67884, -62.11438], + ["2019-09-20T12:50:02", 14.68541, -62.11917], + ["2019-09-20T13:49:54", 14.69666, -62.13028], + ["2019-09-20T14:49:50", 14.7062, -62.14469], + ["2019-09-20T15:19:50", 14.71208, -62.15121], + ["2019-09-20T15:49:50", 14.71873, -62.15619], + ["2019-09-20T16:19:25", 14.72563, -62.16061], + ["2019-09-20T16:49:25", 14.73245, -62.16473], + ["2019-09-20T17:20:28", 14.74061, -62.16876], + ["2019-09-20T18:20:53", 14.75661, -62.17617], + ["2019-09-20T18:50:53", 14.76476, -62.17969], + ["2019-09-20T19:20:53", 14.77291, -62.18338], + ["2019-09-20T19:48:37", 14.78025, -62.18692], + ["2019-09-20T22:18:08", 14.81988, -62.20078], + ["2019-09-20T22:50:32", 14.82726, -62.20187], + ["2019-09-20T23:17:55", 14.83148, -62.2038], + ["2019-09-21T00:47:25", 14.83885, -62.21367], + ["2019-09-21T01:17:25", 14.83949, -62.21839], + ["2019-09-21T01:47:25", 14.83958, -62.22345], + ["2019-09-21T02:47:07", 14.84081, -62.23709], + ["2019-09-21T03:16:43", 14.84334, -62.24581], + ["2019-09-21T03:46:43", 14.84557, -62.25319], + ["2019-09-21T04:16:43", 14.84849, -62.26117], + ["2019-09-21T04:46:31", 14.85213, -62.26905], + ["2019-09-21T05:16:31", 14.85573, -62.27557], + ["2019-09-21T06:16:23", 14.86519, -62.28876], + ["2019-09-21T14:15:29", 14.89024, -62.37503], + ["2019-09-21T18:17:27", 14.87413, -62.43188], + ["2019-09-22T00:42:47", 14.86942, -62.49185], + ["2019-09-22T01:43:29", 14.86386, -62.50115], + ["2019-09-22T02:13:29", 14.8603, -62.50561], + ["2019-09-22T02:43:29", 14.85652, -62.51102], + ["2019-09-22T03:12:27", 14.85316, -62.51596], + ["2019-09-22T03:44:09", 14.84996, -62.52261], + ["2019-09-22T04:41:57", 14.84376, -62.5376], + ["2019-09-22T06:12:59", 14.83762, -62.55385], + ["2019-09-22T06:42:59", 14.83547, -62.55857], + ["2019-09-22T07:12:59", 14.83435, -62.56329], + ["2019-09-22T07:41:25", 14.83411, -62.56723], + ["2019-09-22T08:12:27", 14.83507, -62.57187], + ["2019-09-22T08:41:14", 14.83625, -62.57623], + ["2019-09-22T09:11:10", 14.83679, -62.57987], + ["2019-09-22T09:41:10", 14.83748, -62.58322], + ["2019-09-22T10:12:39", 14.83828, -62.58635], + ["2019-09-22T10:41:03", 14.83896, -62.58875], + ["2019-09-22T11:12:39", 14.8403, -62.59296], + ["2019-09-22T13:39:58", 14.84888, -62.60837], + ["2019-09-22T14:09:41", 14.85018, -62.61188], + ["2019-09-22T14:39:41", 14.85207, -62.61514], + ["2019-09-22T15:09:41", 14.85379, -62.61771], + ["2019-09-22T16:40:58", 14.8579, -62.6246], + ["2019-09-22T17:40:58", 14.85845, -62.62556], + ["2019-09-22T18:09:05", 14.859, -62.62692], + ["2019-09-22T18:40:58", 14.85957, -62.62933], + ["2019-09-22T20:38:43", 14.86133, -62.63687], + ["2019-09-22T21:09:19", 14.86346, -62.63791], + ["2019-09-23T00:38:41", 14.87787, -62.64111], + ["2019-09-23T03:38:27", 14.88596, -62.65137], + ["2019-09-23T07:36:23", 14.89776, -62.65436], + ["2019-09-23T20:03:34", 15.04488, -62.62152], + ["2019-09-23T21:04:31", 15.05247, -62.61078], + ["2019-09-24T03:04:23", 15.07882, -62.54379], + ["2019-09-24T13:59:38", 15.06957, -62.51996], + ["2019-09-24T23:56:00", 15.07314, -62.54858], + ["2019-09-25T05:24:36", 15.07786, -62.56284], + ["2019-09-25T05:54:24", 15.07879, -62.56653], + ["2019-09-25T06:24:24", 15.08012, -62.57202], + ["2019-09-25T06:54:24", 15.08192, -62.57794], + ["2019-09-25T13:52:59", 15.14311, -62.63513], + ["2019-09-25T14:23:28", 15.14736, -62.63556], + ["2019-09-25T19:51:29", 15.20842, -62.63535], + ["2019-09-26T08:18:02", 15.25645, -62.65231], + ["2019-09-26T20:45:27", 15.25374, -62.76849], + ["2019-09-26T20:51:53", 15.25077, -62.79034], + ["2019-09-26T21:21:53", 15.25077, -62.79085], + ["2019-09-26T21:51:53", 15.25077, -62.79282], + ["2019-09-26T22:14:54", 15.25167, -62.80071], + ["2019-09-26T22:44:54", 15.25382, -62.80981], + ["2019-09-26T23:14:56", 15.25629, -62.81986], + ["2019-09-26T23:44:56", 15.25878, -62.82904], + ["2019-09-27T00:14:56", 15.26093, -62.83685], + ["2019-09-27T00:44:26", 15.26254, -62.84314], + ["2019-09-27T03:14:26", 15.2684, -62.87523], + ["2019-09-27T03:44:26", 15.26952, -62.88158], + ["2019-09-27T04:14:26", 15.27021, -62.88776], + ["2019-09-27T07:43:05", 15.27479, -62.93057], + ["2019-09-27T18:39:48", 15.36463, -63.09189], + ["2019-09-27T19:10:25", 15.36971, -63.0946], + ["2019-09-27T21:09:59", 15.37322, -63.09646], + ["2019-09-27T21:39:59", 15.37262, -63.0962], + ["2019-09-27T22:09:59", 15.37082, -63.09543], + ["2019-09-27T22:39:02", 15.36793, -63.09409], + ["2019-09-27T23:09:27", 15.36435, -63.09282], + ["2019-09-27T23:39:27", 15.36044, -63.09222], + ["2019-09-28T00:09:27", 15.35576, -63.09119], + ["2019-09-28T02:08:40", 15.34018, -63.09894], + ["2019-09-28T10:35:58", 15.27761, -63.14105], + ["2019-09-28T13:34:59", 15.25839, -63.16632], + ["2019-09-28T22:02:37", 15.28452, -63.28177], + ["2019-09-29T01:31:56", 15.2923, -63.29855], + ["2019-09-29T04:00:43", 15.2895, -63.31021], + ["2019-09-29T06:00:06", 15.30042, -63.33014], + ["2019-09-29T13:28:29", 15.35321, -63.37247], + ["2019-09-29T15:27:58", 15.36473, -63.36938], + ["2019-09-29T15:57:38", 15.36655, -63.36808], + ["2019-09-29T16:27:38", 15.36809, -63.36722], + ["2019-09-29T17:57:58", 15.37555, -63.37576], + ["2019-09-29T21:26:21", 15.39677, -63.39862], + ["2019-09-29T23:55:41", 15.4064, -63.41803], + ["2019-09-30T19:50:55", 15.51449, -63.56421], + ["2019-09-30T23:21:33", 15.54828, -63.61826], + ["2019-10-01T10:18:04", 15.65886, -63.71439], + ["2019-10-01T12:19:00", 15.66941, -63.72348], + ["2019-10-01T19:16:02", 15.72479, -63.78333], + ["2019-10-01T22:16:18", 15.76094, -63.8056], + ["2019-10-01T22:44:32", 15.76478, -63.80822], + ["2019-10-01T23:14:32", 15.76911, -63.81131], + ["2019-10-01T23:44:32", 15.77173, -63.81354], + ["2019-10-02T00:44:18", 15.77746, -63.8168], + ["2019-10-02T06:13:13", 15.79323, -63.86002], + ["2019-10-02T09:45:28", 15.81054, -63.87512], + ["2019-10-02T11:13:58", 15.81353, -63.88043], + ["2019-10-02T16:42:29", 15.82905, -63.93564], + ["2019-10-02T18:42:00", 15.84533, -63.96472], + ["2019-10-02T19:10:49", 15.85012, -63.97128], + ["2019-10-02T19:41:57", 15.85594, -63.97832], + ["2019-10-02T20:11:57", 15.86212, -63.98364], + ["2019-10-02T20:41:57", 15.86967, -63.98785], + ["2019-10-03T05:38:37", 15.93417, -64.05591], + ["2019-10-03T09:09:58", 15.94764, -64.08217], + ["2019-10-03T12:37:39", 15.97198, -64.10037], + ["2019-10-03T14:07:20", 15.97574, -64.10602], + ["2019-10-03T15:38:01", 15.97971, -64.1149], + ["2019-10-03T16:06:54", 15.98092, -64.11752], + ["2019-10-03T16:38:01", 15.98228, -64.11972], + ["2019-10-03T17:08:12", 15.98355, -64.12193], + ["2019-10-03T17:38:12", 15.98484, -64.12399], + ["2019-10-03T18:37:02", 15.98677, -64.12811], + ["2019-10-03T20:06:10", 15.98736, -64.13369], + ["2019-10-03T20:36:10", 15.98616, -64.13575], + ["2019-10-03T21:06:10", 15.98569, -64.1391], + ["2019-10-03T23:34:45", 15.98881, -64.15363], + ["2019-10-04T00:34:10", 15.98934, -64.15913], + ["2019-10-04T01:04:10", 15.98801, -64.16189], + ["2019-10-04T01:34:10", 15.98672, -64.16455], + ["2019-10-04T04:04:05", 15.97399, -64.18156], + ["2019-10-04T04:34:05", 15.97223, -64.18585], + ["2019-10-04T05:04:05", 15.97, -64.18997], + ["2019-10-04T08:32:22", 15.95005, -64.2197], + ["2019-10-04T12:01:47", 15.93761, -64.27396], + ["2019-10-04T13:30:04", 15.93968, -64.29727], + ["2019-10-04T14:00:04", 15.94127, -64.30602], + ["2019-10-04T14:30:04", 15.94191, -64.31399], + ["2019-10-04T20:58:37", 15.97077, -64.41931], + ["2019-10-04T22:58:03", 15.99029, -64.44235], + ["2019-10-05T10:26:00", 16.06557, -64.46704], + ["2019-10-05T16:26:28", 16.06087, -64.48407], + ["2019-10-05T21:25:00", 16.05831, -64.51859], + ["2019-10-05T23:23:59", 16.05208, -64.54013], + ["2019-10-06T01:23:30", 16.04975, -64.56814], + ["2019-10-06T01:53:30", 16.05031, -64.57595], + ["2019-10-06T02:23:30", 16.05134, -64.58453], + ["2019-10-06T03:52:25", 16.05322, -64.60876], + ["2019-10-06T04:52:04", 16.05705, -64.62589], + ["2019-10-06T05:22:04", 16.05877, -64.63387], + ["2019-10-06T05:52:04", 16.0604, -64.64055], + ["2019-10-06T07:22:42", 16.06196, -64.65964], + ["2019-10-06T10:50:51", 16.0622, -64.69766], + ["2019-10-06T11:50:36", 16.06524, -64.71021], + ["2019-10-06T14:20:07", 16.08095, -64.73813], + ["2019-10-06T20:48:34", 16.14145, -64.80765], + ["2019-10-06T21:18:04", 16.14852, -64.81498], + ["2019-10-06T21:52:15", 16.14886, -64.81525], + ["2019-10-06T22:18:04", 16.15079, -64.81757], + ["2019-10-06T23:48:48", 16.15847, -64.82317], + ["2019-10-07T00:17:40", 16.16127, -64.82486], + ["2019-10-07T00:48:27", 16.16434, -64.8271], + ["2019-10-07T01:18:27", 16.16717, -64.82796], + ["2019-10-07T01:48:27", 16.17077, -64.8295], + ["2019-10-07T21:44:30", 16.28503, -64.922], + ["2019-10-08T09:41:26", 16.40527, -64.99133], + ["2019-10-08T11:39:15", 16.43113, -65.01], + ["2019-10-08T12:09:15", 16.43873, -65.01488], + ["2019-10-08T12:39:15", 16.44504, -65.01891], + ["2019-10-08T13:10:01", 16.45326, -65.02218], + ["2019-10-08T13:40:01", 16.46051, -65.02502], + ["2019-10-08T14:10:01", 16.46712, -65.0282], + ["2019-10-08T14:38:44", 16.47327, -65.03122], + ["2019-10-08T15:10:00", 16.48065, -65.0336], + ["2019-10-08T15:10:57", 16.48067, -65.03364], + ["2019-10-08T15:40:57", 16.48788, -65.03588], + ["2019-10-08T16:10:57", 16.49659, -65.03845], + ["2019-10-08T19:39:00", 16.54782, -65.04483], + ["2019-10-08T22:38:27", 16.59743, -65.05083], + ["2019-10-08T23:38:28", 16.61129, -65.05255], + ["2019-10-09T00:37:59", 16.6248, -65.0535], + ["2019-10-09T02:06:04", 16.64526, -65.05396], + ["2019-10-09T02:36:46", 16.65195, -65.05444], + ["2019-10-09T03:05:51", 16.65823, -65.05493], + ["2019-10-09T03:35:39", 16.66536, -65.05521], + ["2019-10-09T04:05:39", 16.67158, -65.05521], + ["2019-10-09T04:35:24", 16.67803, -65.05502], + ["2019-10-09T05:05:24", 16.68412, -65.05408], + ["2019-10-09T05:37:30", 16.69016, -65.05343], + ["2019-10-09T08:05:40", 16.71245, -65.05607], + ["2019-10-09T08:35:40", 16.7164, -65.0571], + ["2019-10-09T09:05:40", 16.72146, -65.05737], + ["2019-10-09T10:05:56", 16.73096, -65.05807], + ["2019-10-09T10:34:11", 16.73475, -65.05743], + ["2019-10-09T11:34:42", 16.74281, -65.05645], + ["2019-10-09T12:04:42", 16.74637, -65.05654], + ["2019-10-09T12:34:42", 16.74989, -65.0574], + ["2019-10-09T13:03:50", 16.75427, -65.05875], + ["2019-10-09T13:34:42", 16.75838, -65.06085], + ["2019-10-09T15:34:59", 16.77462, -65.07227], + ["2019-10-09T19:02:12", 16.8076, -65.10323], + ["2019-10-09T19:33:08", 16.81252, -65.10863], + ["2019-10-09T20:02:12", 16.81765, -65.11404], + ["2019-10-09T20:32:55", 16.82362, -65.11978], + ["2019-10-09T21:02:58", 16.82894, -65.1251], + ["2019-10-09T21:32:58", 16.83422, -65.12982], + ["2019-10-09T21:52:19", 16.83778, -65.13245], + ["2019-10-10T00:01:19", 16.86281, -65.14843], + ["2019-10-10T00:31:29", 16.86948, -65.15146], + ["2019-10-10T01:00:58", 16.87499, -65.15375], + ["2019-10-10T01:31:29", 16.8812, -65.1561], + ["2019-10-10T03:30:15", 16.905, -65.16919], + ["2019-10-10T04:00:05", 16.9119, -65.174], + ["2019-10-10T04:30:05", 16.91847, -65.17752], + ["2019-10-10T05:29:42", 16.93149, -65.18331], + ["2019-10-10T07:29:29", 16.95672, -65.19282], + ["2019-10-10T07:59:29", 16.962, -65.19531], + ["2019-10-10T08:29:29", 16.96698, -65.19788], + ["2019-10-10T11:28:01", 17.00041, -65.21365], + ["2019-10-10T11:57:42", 17.00648, -65.21604], + ["2019-10-10T12:27:42", 17.01129, -65.2175], + ["2019-10-10T12:58:43", 17.01627, -65.21942], + ["2019-10-10T13:27:34", 17.02055, -65.22125], + ["2019-10-10T14:27:32", 17.02826, -65.22521], + ["2019-10-10T14:57:58", 17.03196, -65.2275], + ["2019-10-10T15:27:58", 17.03591, -65.2305], + ["2019-10-10T15:57:58", 17.04042, -65.23428], + ["2019-10-10T16:27:04", 17.0449, -65.23831], + ["2019-10-10T16:58:10", 17.05072, -65.24271], + ["2019-10-10T17:28:07", 17.05281, -65.24548], + ["2019-10-10T17:56:53", 17.06341, -65.25233], + ["2019-10-10T18:26:53", 17.06985, -65.25696], + ["2019-10-10T18:56:28", 17.07704, -65.26255], + ["2019-10-10T19:26:28", 17.08451, -65.26813], + ["2019-10-10T19:56:59", 17.09265, -65.2737], + ["2019-10-10T20:26:15", 17.09977, -65.27826], + ["2019-10-10T20:56:31", 17.10691, -65.28194], + ["2019-10-10T23:25:36", 17.128, -65.29147], + ["2019-10-10T23:56:31", 17.13105, -65.29228], + ["2019-10-11T00:26:31", 17.13362, -65.29407], + ["2019-10-11T00:56:31", 17.1368, -65.29613], + ["2019-10-11T01:25:06", 17.13913, -65.29822], + ["2019-10-11T01:56:13", 17.14143, -65.29987], + ["2019-10-11T02:25:32", 17.14347, -65.30215], + ["2019-10-11T02:55:32", 17.14484, -65.30515], + ["2019-10-11T03:24:30", 17.14604, -65.3088], + ["2019-10-11T03:54:05", 17.14792, -65.31338], + ["2019-10-11T04:24:05", 17.15028, -65.31784], + ["2019-10-11T04:53:34", 17.15335, -65.32298], + ["2019-10-11T05:23:34", 17.1567, -65.32813], + ["2019-10-11T05:54:13", 17.16043, -65.33359], + ["2019-10-11T06:23:12", 17.16358, -65.33911], + ["2019-10-11T06:53:31", 17.16707, -65.34511], + ["2019-10-11T07:22:53", 17.17023, -65.35025], + ["2019-10-11T07:53:06", 17.17316, -65.35559], + ["2019-10-11T08:22:38", 17.1764, -65.36087], + ["2019-10-11T08:52:55", 17.17967, -65.36633], + ["2019-10-11T09:22:31", 17.18247, -65.37157], + ["2019-10-11T09:52:21", 17.18575, -65.37682], + ["2019-10-11T10:22:21", 17.18923, -65.38223], + ["2019-10-11T10:52:38", 17.19304, -65.38727], + ["2019-10-11T11:22:05", 17.19679, -65.39233], + ["2019-10-11T11:52:27", 17.20026, -65.39838], + ["2019-10-11T12:51:56", 17.20726, -65.4111], + ["2019-10-11T13:21:56", 17.21142, -65.4184], + ["2019-10-11T13:51:56", 17.21648, -65.42621], + ["2019-10-11T14:21:23", 17.22208, -65.43356], + ["2019-10-11T14:51:23", 17.22796, -65.4406], + ["2019-10-11T15:21:23", 17.2332, -65.44669], + ["2019-10-11T15:51:58", 17.23826, -65.45282], + ["2019-10-11T16:21:27", 17.24264, -65.45815], + ["2019-10-11T16:51:27", 17.24702, -65.46399], + ["2019-10-11T17:20:54", 17.25183, -65.47018], + ["2019-10-11T17:51:24", 17.25672, -65.47659], + ["2019-10-11T18:20:59", 17.26166, -65.4826], + ["2019-10-11T18:50:59", 17.26681, -65.48853], + ["2019-10-11T19:20:26", 17.27245, -65.49429], + ["2019-10-11T19:50:12", 17.27843, -65.50033], + ["2019-10-11T20:20:12", 17.28418, -65.50565], + ["2019-10-11T20:49:57", 17.29002, -65.5108], + ["2019-10-11T21:19:57", 17.29573, -65.51578], + ["2019-10-11T21:52:33", 17.30242, -65.5209], + ["2019-10-11T22:19:58", 17.30779, -65.52454], + ["2019-10-11T22:50:28", 17.31382, -65.52804], + ["2019-10-11T23:19:51", 17.31877, -65.53131], + ["2019-10-12T01:19:21", 17.33926, -65.54621], + ["2019-10-12T01:49:57", 17.34385, -65.55011], + ["2019-10-12T02:19:21", 17.3481, -65.55368], + ["2019-10-12T02:49:40", 17.35251, -65.55725], + ["2019-10-12T03:19:23", 17.35642, -65.56075], + ["2019-10-12T03:49:23", 17.36028, -65.56461], + ["2019-10-12T04:18:55", 17.36392, -65.56841], + ["2019-10-12T04:48:55", 17.3671, -65.57227], + ["2019-10-12T05:18:03", 17.3696, -65.57617], + ["2019-10-12T05:48:26", 17.37137, -65.58032], + ["2019-10-12T06:18:03", 17.37299, -65.58459], + ["2019-10-12T06:47:50", 17.37479, -65.58923], + ["2019-10-12T07:17:50", 17.37664, -65.59335], + ["2019-10-12T07:48:08", 17.37891, -65.59738], + ["2019-10-12T08:17:40", 17.38105, -65.60012], + ["2019-10-12T08:48:28", 17.38398, -65.6033], + ["2019-10-12T09:17:56", 17.38678, -65.60617], + ["2019-10-12T09:47:56", 17.38983, -65.60953], + ["2019-10-12T10:17:13", 17.3927, -65.61284], + ["2019-10-12T10:47:58", 17.3959, -65.6163], + ["2019-10-12T11:17:02", 17.39895, -65.61932], + ["2019-10-12T11:46:50", 17.40199, -65.62217], + ["2019-10-12T12:16:50", 17.40461, -65.62466], + ["2019-10-12T12:47:28", 17.40724, -65.62715], + ["2019-10-12T13:17:28", 17.41003, -65.63007], + ["2019-10-12T13:47:28", 17.4126, -65.63333], + ["2019-10-12T14:16:58", 17.41509, -65.63666], + ["2019-10-12T14:46:58", 17.41749, -65.64044], + ["2019-10-12T15:16:33", 17.42024, -65.64478], + ["2019-10-12T16:16:07", 17.42554, -65.65334], + ["2019-10-12T16:46:55", 17.42775, -65.65817], + ["2019-10-12T17:16:07", 17.42962, -65.66321], + ["2019-10-12T17:46:27", 17.43127, -65.66911], + ["2019-10-12T18:16:27", 17.43299, -65.67503], + ["2019-10-12T18:46:27", 17.43514, -65.6812], + ["2019-10-12T19:16:09", 17.43691, -65.68733], + ["2019-10-12T19:46:09", 17.43936, -65.69351], + ["2019-10-12T20:15:59", 17.44246, -65.69889], + ["2019-10-12T20:45:59", 17.44564, -65.70456], + ["2019-10-12T21:15:02", 17.44857, -65.70929], + ["2019-10-12T21:21:39", 17.45132, -65.71413], + ["2019-10-12T21:51:39", 17.45171, -65.7149], + ["2019-10-12T22:14:44", 17.45343, -65.71869], + ["2019-10-13T04:13:05", 17.48445, -65.78458], + ["2019-10-13T04:42:39", 17.48656, -65.79116], + ["2019-10-13T05:12:39", 17.48862, -65.79718], + ["2019-10-13T05:42:24", 17.49041, -65.80346], + ["2019-10-13T06:12:24", 17.49178, -65.80887], + ["2019-10-13T06:42:24", 17.49311, -65.81444], + ["2019-10-13T07:12:27", 17.49468, -65.82012], + ["2019-10-13T07:42:27", 17.49605, -65.82577], + ["2019-10-13T08:11:41", 17.49762, -65.83093], + ["2019-10-13T08:41:26", 17.4993, -65.83556], + ["2019-10-13T09:11:26", 17.50024, -65.83994], + ["2019-10-13T09:41:15", 17.50078, -65.84506], + ["2019-10-13T10:11:15", 17.5016, -65.84995], + ["2019-10-13T10:41:54", 17.50245, -65.85538], + ["2019-10-13T11:11:57", 17.50335, -65.86126], + ["2019-10-13T11:41:57", 17.50404, -65.86812], + ["2019-10-13T12:10:47", 17.50522, -65.8754], + ["2019-10-13T12:41:29", 17.50715, -65.8826], + ["2019-10-13T15:40:06", 17.52146, -65.9218], + ["2019-10-13T19:09:15", 17.53517, -65.96762], + ["2019-10-13T19:39:15", 17.53719, -65.97431], + ["2019-10-13T20:09:15", 17.53895, -65.98135], + ["2019-10-13T20:39:57", 17.54082, -65.98904], + ["2019-10-13T21:09:08", 17.54274, -65.996], + ["2019-10-13T21:22:21", 17.54529, -66.0042], + ["2019-10-13T21:52:21", 17.54576, -66.00548], + ["2019-10-14T01:08:17", 17.55749, -66.04113], + ["2019-10-14T01:38:56", 17.55748, -66.04568], + ["2019-10-14T02:08:17", 17.55719, -66.05005], + ["2019-10-14T03:38:56", 17.55405, -66.06149], + ["2019-10-14T04:08:25", 17.55248, -66.06505], + ["2019-10-14T04:38:25", 17.55072, -66.06856], + ["2019-10-14T05:07:37", 17.5487, -66.0722], + ["2019-10-14T05:37:30", 17.54665, -66.07675], + ["2019-10-14T06:07:30", 17.54493, -66.0813], + ["2019-10-14T07:38:27", 17.5405, -66.09972], + ["2019-10-14T08:07:01", 17.53917, -66.10636], + ["2019-10-14T08:37:01", 17.5378, -66.11366], + ["2019-10-14T09:07:01", 17.53703, -66.12061], + ["2019-10-14T10:06:35", 17.53605, -66.13506], + ["2019-10-14T10:36:35", 17.53562, -66.14278], + ["2019-10-14T11:06:35", 17.53545, -66.15042], + ["2019-10-14T12:06:14", 17.53385, -66.16449], + ["2019-10-14T12:36:28", 17.53273, -66.17062], + ["2019-10-14T13:35:56", 17.5302, -66.18358], + ["2019-10-14T14:05:56", 17.52745, -66.18959], + ["2019-10-14T14:35:56", 17.52492, -66.19577], + ["2019-10-14T15:06:57", 17.52227, -66.2026], + ["2019-10-14T15:36:57", 17.52, -66.2086], + ["2019-10-14T16:06:57", 17.51712, -66.21572], + ["2019-10-14T16:35:36", 17.51537, -66.22264], + ["2019-10-14T17:05:36", 17.51357, -66.23062], + ["2019-10-14T17:35:07", 17.51154, -66.23856], + ["2019-10-14T18:05:58", 17.50932, -66.24688], + ["2019-10-14T18:34:45", 17.5074, -66.25476], + ["2019-10-14T19:04:45", 17.50598, -66.26327], + ["2019-10-14T19:34:45", 17.50413, -66.27142], + ["2019-10-14T20:05:28", 17.50228, -66.28012], + ["2019-10-14T21:05:13", 17.49684, -66.29604], + ["2019-10-14T22:05:30", 17.49215, -66.31287], + ["2019-10-14T22:35:30", 17.49103, -66.32068], + ["2019-10-14T23:05:30", 17.49039, -66.32892], + ["2019-10-14T23:34:25", 17.49015, -66.33642], + ["2019-10-15T00:04:58", 17.49001, -66.34372], + ["2019-10-15T00:34:16", 17.48989, -66.35107], + ["2019-10-15T01:05:27", 17.49031, -66.35919], + ["2019-10-15T01:34:04", 17.49141, -66.36622], + ["2019-10-15T02:04:04", 17.49253, -66.37257], + ["2019-10-15T02:34:04", 17.49274, -66.3772], + ["2019-10-15T03:04:57", 17.49199, -66.38077], + ["2019-10-15T04:05:28", 17.48874, -66.38593], + ["2019-10-15T06:34:56", 17.48237, -66.40009], + ["2019-10-15T07:03:05", 17.48025, -66.40308], + ["2019-10-15T07:34:56", 17.47752, -66.40694], + ["2019-10-15T09:03:59", 17.46856, -66.42216], + ["2019-10-15T09:33:59", 17.46543, -66.42834], + ["2019-10-15T10:03:59", 17.46251, -66.43546], + ["2019-10-15T12:31:50", 17.45118, -66.47107], + ["2019-10-15T13:02:58", 17.45025, -66.47766], + ["2019-10-15T13:31:50", 17.44895, -66.48352], + ["2019-10-15T14:02:58", 17.44746, -66.49008], + ["2019-10-15T17:31:16", 17.44217, -66.52204], + ["2019-10-15T18:02:27", 17.44236, -66.52478], + ["2019-10-15T18:31:16", 17.44264, -66.52737], + ["2019-10-15T19:01:59", 17.44318, -66.53052], + ["2019-10-15T20:01:30", 17.44346, -66.5376], + ["2019-10-15T20:30:33", 17.44286, -66.54105], + ["2019-10-15T21:01:29", 17.44238, -66.54523], + ["2019-10-15T21:30:33", 17.44184, -66.54938], + ["2019-10-15T22:00:56", 17.441, -66.5527], + ["2019-10-15T22:30:06", 17.4399, -66.55619], + ["2019-10-15T23:00:06", 17.43818, -66.55842], + ["2019-10-15T23:30:06", 17.43629, -66.56134], + ["2019-10-16T02:59:12", 17.4224, -66.58826], + ["2019-10-16T03:58:43", 17.4189, -66.59424], + ["2019-10-16T04:28:43", 17.41658, -66.59672], + ["2019-10-16T04:58:43", 17.41409, -66.59845], + ["2019-10-16T05:29:57", 17.41115, -66.6001], + ["2019-10-16T05:59:57", 17.40827, -66.60173], + ["2019-10-16T06:29:57", 17.40527, -66.60422], + ["2019-10-16T06:58:21", 17.40209, -66.60699], + ["2019-10-16T08:28:26", 17.3933, -66.61505], + ["2019-10-16T08:57:27", 17.39044, -66.61722], + ["2019-10-16T09:28:59", 17.3879, -66.6196], + ["2019-10-16T09:57:27", 17.38611, -66.62219], + ["2019-10-16T10:57:16", 17.38264, -66.62848], + ["2019-10-16T16:56:28", 17.36315, -66.68893], + ["2019-10-16T17:25:27", 17.36325, -66.69379], + ["2019-10-16T17:55:17", 17.36324, -66.69891], + ["2019-10-16T18:25:17", 17.36333, -66.70389], + ["2019-10-16T18:55:56", 17.36401, -66.70883], + ["2019-10-16T19:25:28", 17.365, -66.71245], + ["2019-10-16T19:55:28", 17.36624, -66.71597], + ["2019-10-16T20:24:52", 17.36758, -66.7197], + ["2019-10-16T20:54:57", 17.37204, -66.73069], + ["2019-10-16T21:24:29", 17.37123, -66.72781], + ["2019-10-16T21:54:57", 17.37222, -66.73172], + ["2019-10-16T22:24:19", 17.37268, -66.73486], + ["2019-10-16T22:54:00", 17.37366, -66.73833], + ["2019-10-16T23:24:00", 17.37426, -66.74151], + ["2019-10-17T00:54:27", 17.37521, -66.75037], + ["2019-10-17T01:23:57", 17.37482, -66.75292], + ["2019-10-17T01:53:57", 17.37418, -66.75548], + ["2019-10-17T02:23:21", 17.37315, -66.75745], + ["2019-10-17T02:53:56", 17.37127, -66.75911], + ["2019-10-17T03:23:02", 17.36951, -66.76009], + ["2019-10-17T03:53:56", 17.36822, -66.76151], + ["2019-10-17T04:22:36", 17.3676, -66.76345], + ["2019-10-17T04:52:36", 17.36764, -66.76646], + ["2019-10-17T05:22:36", 17.36777, -66.76895], + ["2019-10-17T05:52:23", 17.36739, -66.77184], + ["2019-10-17T06:22:23", 17.36739, -66.7739], + ["2019-10-17T08:23:02", 17.36802, -66.7838], + ["2019-10-17T08:53:02", 17.36738, -66.78577], + ["2019-10-17T09:23:02", 17.36639, -66.7868], + ["2019-10-17T09:52:46", 17.36533, -66.78765], + ["2019-10-17T10:22:46", 17.36482, -66.78894], + ["2019-10-17T10:51:38", 17.36407, -66.79067], + ["2019-10-17T12:22:06", 17.35953, -66.79785], + ["2019-10-17T13:50:56", 17.35463, -66.80432], + ["2019-10-17T14:50:43", 17.35082, -66.80963], + ["2019-10-17T15:20:29", 17.34907, -66.81417], + ["2019-10-17T15:50:29", 17.34783, -66.81847], + ["2019-10-17T16:20:29", 17.34676, -66.82335], + ["2019-10-17T16:50:24", 17.34652, -66.82974], + ["2019-10-17T17:20:24", 17.34678, -66.8366], + ["2019-10-17T17:50:24", 17.34811, -66.84442], + ["2019-10-17T18:49:56", 17.35126, -66.86107], + ["2019-10-17T19:19:56", 17.35341, -66.86897], + ["2019-10-17T19:49:56", 17.35594, -66.87738], + ["2019-10-17T20:19:08", 17.35821, -66.88535], + ["2019-10-17T20:49:08", 17.36113, -66.89256], + ["2019-10-17T21:19:08", 17.36413, -66.89874], + ["2019-10-17T21:49:57", 17.36777, -66.90366], + ["2019-10-17T23:18:45", 17.37591, -66.91382], + ["2019-10-17T23:49:27", 17.37711, -66.91623], + ["2019-10-18T00:18:24", 17.37751, -66.918], + ["2019-10-18T00:49:03", 17.37731, -66.91998], + ["2019-10-18T01:17:39", 17.37652, -66.9224], + ["2019-10-18T01:47:39", 17.37562, -66.92446], + ["2019-10-18T02:17:39", 17.3745, -66.92661], + ["2019-10-18T02:47:05", 17.37349, -66.92975], + ["2019-10-18T03:17:19", 17.37375, -66.93237], + ["2019-10-18T03:47:05", 17.37358, -66.93523], + ["2019-10-18T08:47:31", 17.37447, -66.98267], + ["2019-10-18T09:45:10", 17.37259, -66.9905], + ["2019-10-18T10:15:10", 17.37143, -66.99402], + ["2019-10-18T10:45:10", 17.37092, -66.99771], + ["2019-10-18T11:16:18", 17.36983, -67.00098], + ["2019-10-18T11:46:30", 17.36734, -67.00345], + ["2019-10-18T12:16:30", 17.36554, -67.00705], + ["2019-10-18T12:44:26", 17.36397, -67.01085], + ["2019-10-18T13:14:23", 17.36243, -67.01535], + ["2019-10-18T13:45:59", 17.36034, -67.02054], + ["2019-10-18T14:45:27", 17.35673, -67.02979], + ["2019-10-18T15:15:27", 17.35557, -67.03451], + ["2019-10-18T15:45:27", 17.35471, -67.03949], + ["2019-10-18T17:13:34", 17.35399, -67.05504], + ["2019-10-18T17:43:34", 17.35403, -67.06028], + ["2019-10-18T18:13:34", 17.35369, -67.06491], + ["2019-10-18T18:44:07", 17.35387, -67.07077], + ["2019-10-18T19:13:13", 17.35359, -67.07678], + ["2019-10-18T20:44:53", 17.3527, -67.09671], + ["2019-10-18T21:12:57", 17.35244, -67.10266], + ["2019-10-18T21:44:53", 17.3521, -67.10863], + ["2019-10-18T22:12:41", 17.35182, -67.1131], + ["2019-10-18T22:43:27", 17.35169, -67.11761], + ["2019-10-18T23:13:27", 17.35182, -67.12164], + ["2019-10-18T23:42:12", 17.35149, -67.12512], + ["2019-10-19T00:13:57", 17.3506, -67.12961], + ["2019-10-19T00:41:55", 17.34959, -67.13367], + ["2019-10-19T04:11:14", 17.34353, -67.15326], + ["2019-10-19T05:42:55", 17.34196, -67.16135], + ["2019-10-19T06:11:21", 17.34202, -67.16446], + ["2019-10-19T07:10:32", 17.34305, -67.17198], + ["2019-10-19T07:40:32", 17.34326, -67.17533], + ["2019-10-19T08:10:32", 17.3436, -67.1791], + ["2019-10-19T08:41:42", 17.34374, -67.18253], + ["2019-10-19T09:09:57", 17.3435, -67.18564], + ["2019-10-19T10:42:04", 17.34607, -67.19644], + ["2019-10-19T11:09:13", 17.34756, -67.2002], + ["2019-10-19T11:39:13", 17.34958, -67.20441], + ["2019-10-19T12:09:59", 17.35201, -67.20824], + ["2019-10-19T12:39:59", 17.3551, -67.2121], + ["2019-10-19T13:09:59", 17.3581, -67.21588], + ["2019-10-19T13:39:55", 17.36074, -67.21911], + ["2019-10-19T14:09:55", 17.36293, -67.22177], + ["2019-10-19T14:40:25", 17.36418, -67.22338], + ["2019-10-19T15:10:25", 17.3653, -67.22528], + ["2019-10-19T16:40:11", 17.36966, -67.22958], + ["2019-10-19T17:37:50", 17.37137, -67.23291], + ["2019-10-19T19:07:27", 17.37476, -67.23447], + ["2019-10-19T20:07:21", 17.37472, -67.23578], + ["2019-10-19T20:52:14", 17.37385, -67.24196], + ["2019-10-19T21:22:14", 17.37376, -67.24231], + ["2019-10-19T21:52:14", 17.37376, -67.24274], + ["2019-10-19T22:36:55", 17.37321, -67.24481], + ["2019-10-19T23:06:45", 17.37415, -67.24544], + ["2019-10-19T23:36:45", 17.37539, -67.24561], + ["2019-10-20T00:06:39", 17.37756, -67.24597], + ["2019-10-20T00:36:36", 17.38135, -67.24606], + ["2019-10-20T01:06:36", 17.38508, -67.24512], + ["2019-10-20T05:34:51", 17.37982, -67.2226], + ["2019-10-20T06:06:28", 17.37694, -67.22107], + ["2019-10-20T06:34:51", 17.37415, -67.22002], + ["2019-10-20T07:06:01", 17.37178, -67.21935], + ["2019-10-20T07:34:35", 17.36942, -67.21881], + ["2019-10-20T08:34:40", 17.36255, -67.21639], + ["2019-10-20T09:35:28", 17.35403, -67.21753], + ["2019-10-20T11:07:53", 17.34267, -67.22033], + ["2019-10-20T11:37:53", 17.33915, -67.22291], + ["2019-10-20T12:07:53", 17.33627, -67.22488], + ["2019-10-20T12:34:55", 17.33441, -67.22708], + ["2019-10-20T15:03:33", 17.32704, -67.24782], + ["2019-10-20T15:33:58", 17.32588, -67.25223], + ["2019-10-20T16:03:58", 17.32489, -67.25592], + ["2019-10-20T16:36:11", 17.32365, -67.26031], + ["2019-10-20T17:32:55", 17.32247, -67.26868], + ["2019-10-20T18:04:28", 17.32238, -67.2741], + ["2019-10-20T18:32:50", 17.32275, -67.27887], + ["2019-10-20T19:02:46", 17.32336, -67.28382], + ["2019-10-20T19:32:46", 17.32405, -67.28931], + ["2019-10-21T00:31:31", 17.35164, -67.35787], + ["2019-10-21T02:04:41", 17.37108, -67.37692], + ["2019-10-21T05:03:41", 17.41333, -67.40799], + ["2019-10-21T10:30:26", 17.50285, -67.43591], + ["2019-10-21T11:00:14", 17.50937, -67.43407], + ["2019-10-21T12:00:00", 17.52014, -67.43051], + ["2019-10-21T12:59:40", 17.52891, -67.42944], + ["2019-10-21T13:29:38", 17.53313, -67.42967], + ["2019-10-21T13:59:38", 17.53665, -67.43017], + ["2019-10-21T14:29:56", 17.53989, -67.43066], + ["2019-10-21T16:28:43", 17.54896, -67.43313], + ["2019-10-21T16:58:43", 17.5505, -67.4345], + ["2019-10-21T17:28:43", 17.55222, -67.4357], + ["2019-10-21T18:59:14", 17.56027, -67.44359], + ["2019-10-21T19:29:14", 17.56319, -67.44651], + ["2019-10-21T19:59:14", 17.56637, -67.4502], + ["2019-10-21T20:28:17", 17.5698, -67.45377], + ["2019-10-22T01:27:39", 17.58437, -67.47498], + ["2019-10-22T04:59:26", 17.59225, -67.49216], + ["2019-10-22T11:26:59", 17.64254, -67.55115], + ["2019-10-22T11:55:27", 17.64826, -67.55322], + ["2019-10-22T12:55:11", 17.66161, -67.55652], + ["2019-10-22T14:26:26", 17.67975, -67.56277], + ["2019-10-22T15:24:21", 17.69199, -67.56914], + ["2019-10-22T15:54:21", 17.69684, -67.57223], + ["2019-10-22T16:24:21", 17.70195, -67.57559], + ["2019-10-22T16:54:57", 17.70797, -67.57953], + ["2019-10-22T19:23:39", 17.73973, -67.60272], + ["2019-10-22T19:53:39", 17.74681, -67.60762], + ["2019-10-22T20:23:39", 17.7523, -67.61199], + ["2019-10-22T20:53:18", 17.75805, -67.61685], + ["2019-10-22T21:23:18", 17.7632, -67.62139], + ["2019-10-22T21:52:54", 17.77016, -67.6264], + ["2019-10-22T22:22:54", 17.776, -67.63052], + ["2019-10-22T22:52:54", 17.78212, -67.63498], + ["2019-10-22T23:23:31", 17.78736, -67.63806], + ["2019-10-23T00:26:06", 17.79861, -67.64525], + ["2019-10-23T03:21:48", 17.83023, -67.66927], + ["2019-10-23T03:52:42", 17.8354, -67.67361], + ["2019-10-23T04:21:48", 17.8407, -67.67691], + ["2019-10-23T04:51:17", 17.84717, -67.67998], + ["2019-10-23T05:21:17", 17.85378, -67.68298], + ["2019-10-23T06:51:13", 17.87402, -67.68881], + ["2019-10-23T07:21:13", 17.88132, -67.69078], + ["2019-10-23T07:51:13", 17.88922, -67.69318], + ["2019-10-23T08:21:42", 17.8958, -67.69566], + ["2019-10-23T08:51:42", 17.90237, -67.69772], + ["2019-10-23T09:20:27", 17.9081, -67.69968], + ["2019-10-23T14:19:20", 17.94926, -67.74773], + ["2019-10-23T16:18:40", 17.97499, -67.78009], + ["2019-10-23T16:48:29", 17.98317, -67.78776], + ["2019-10-23T17:18:29", 17.99111, -67.79385], + ["2019-10-23T17:49:04", 18.00034, -67.80176], + ["2019-10-23T18:19:04", 18.00914, -67.8082], + ["2019-10-23T18:49:04", 18.01837, -67.81421], + ["2019-10-23T19:18:22", 18.02722, -67.81995], + ["2019-10-23T22:17:24", 18.07815, -67.83651], + ["2019-10-24T06:47:30", 18.13631, -67.87378], + ["2019-10-24T07:15:00", 18.13681, -67.87582], + ["2019-10-24T09:44:22", 18.13272, -67.87445], + ["2019-10-24T10:14:07", 18.13287, -67.87482], + ["2019-10-24T10:44:07", 18.13291, -67.87714], + ["2019-10-24T11:14:55", 18.13314, -67.88065], + ["2019-10-24T12:14:57", 18.13239, -67.88876], + ["2019-10-24T14:14:17", 18.12617, -67.91345], + ["2019-10-24T16:42:32", 18.11156, -67.95084], + ["2019-10-24T18:42:06", 18.12057, -67.95007], + ["2019-10-24T19:12:06", 18.12761, -67.94638], + ["2019-10-24T19:42:06", 18.13439, -67.9426], + ["2019-10-24T20:11:57", 18.13911, -67.93743], + ["2019-10-24T20:41:57", 18.14336, -67.93185], + ["2019-10-24T20:51:57", 18.14602, -67.92506], + ["2019-10-24T21:41:52", 18.14597, -67.92511], + ["2019-10-24T21:51:57", 18.14632, -67.92404], + ["2019-10-24T22:12:41", 18.14642, -67.92236], + ["2019-10-24T23:12:26", 18.14579, -67.91952], + ["2019-10-24T23:41:29", 18.14429, -67.91922], + ["2019-10-25T00:12:26", 18.14245, -67.91986], + ["2019-10-25T00:41:11", 18.14058, -67.92184], + ["2019-10-25T01:12:28", 18.13754, -67.92511], + ["2019-10-25T01:41:27", 18.13397, -67.92758], + ["2019-10-25T02:11:27", 18.13157, -67.93161], + ["2019-10-25T04:11:27", 18.12081, -67.9541], + ["2019-10-25T04:40:58", 18.11936, -67.95992], + ["2019-10-25T05:10:58", 18.11842, -67.9649], + ["2019-10-25T05:40:14", 18.11765, -67.96984], + ["2019-10-25T06:11:27", 18.11686, -67.97385], + ["2019-10-25T06:39:54", 18.11595, -67.97562], + ["2019-10-25T07:10:33", 18.11562, -67.97845], + ["2019-10-25T07:39:47", 18.11636, -67.98138], + ["2019-10-25T08:09:34", 18.12115, -67.98454], + ["2019-10-25T08:39:34", 18.12819, -67.98849], + ["2019-10-25T09:39:16", 18.1427, -67.99368], + ["2019-10-25T10:10:43", 18.14951, -67.9939], + ["2019-10-25T10:40:43", 18.15629, -67.9939], + ["2019-10-25T11:39:26", 18.17326, -68.00194], + ["2019-10-25T12:08:31", 18.18185, -68.00412], + ["2019-10-25T12:39:57", 18.19015, -68.00336], + ["2019-10-25T13:08:10", 18.19616, -68.00165], + ["2019-10-25T16:38:59", 18.24668, -67.99429], + ["2019-10-25T17:08:18", 18.25478, -67.99186], + ["2019-10-25T17:38:18", 18.26336, -67.98911], + ["2019-10-25T18:06:46", 18.27078, -67.98762], + ["2019-10-25T18:36:46", 18.27769, -67.98642], + ["2019-10-25T19:06:46", 18.28404, -67.98453], + ["2019-10-25T19:36:43", 18.2911, -67.98325], + ["2019-10-25T20:06:43", 18.29719, -67.98248], + ["2019-10-25T20:36:31", 18.30258, -67.98357], + ["2019-10-25T21:06:31", 18.30786, -67.9852], + ["2019-10-25T21:36:57", 18.31451, -67.98514], + ["2019-10-25T22:36:58", 18.32531, -67.98035], + ["2019-10-25T23:05:40", 18.32888, -67.9786], + ["2019-10-25T23:35:40", 18.32974, -67.97611], + ["2019-10-26T00:05:40", 18.32802, -67.97345], + ["2019-10-26T00:35:28", 18.32464, -67.96871], + ["2019-10-26T01:05:28", 18.32082, -67.9621], + ["2019-10-26T04:35:56", 18.30919, -67.9278], + ["2019-10-26T05:04:46", 18.31068, -67.93026], + ["2019-10-26T05:34:57", 18.31184, -67.93407], + ["2019-10-26T06:34:58", 18.3185, -67.94595], + ["2019-10-26T07:34:29", 18.33143, -67.95831], + ["2019-10-26T08:04:29", 18.33946, -67.9644], + ["2019-10-26T08:34:29", 18.34882, -67.96964], + ["2019-10-26T10:03:50", 18.37829, -67.98298], + ["2019-10-26T10:33:50", 18.38421, -67.98804], + ["2019-10-26T11:03:50", 18.38812, -67.99353], + ["2019-10-26T11:33:37", 18.39042, -67.99721], + ["2019-10-26T12:03:37", 18.39222, -67.99936], + ["2019-10-26T14:33:57", 18.39047, -67.98611], + ["2019-10-26T15:02:37", 18.38841, -67.98175], + ["2019-10-26T15:33:04", 18.38688, -67.97653], + ["2019-10-26T16:34:10", 18.38644, -67.96572], + ["2019-10-26T18:03:58", 18.39277, -67.95681], + ["2019-10-26T18:32:29", 18.39657, -67.96011], + ["2019-10-26T19:02:29", 18.40245, -67.965], + ["2019-10-26T19:32:29", 18.41017, -67.97144], + ["2019-10-26T20:01:18", 18.41785, -67.97884], + ["2019-10-26T20:31:45", 18.42632, -67.98797], + ["2019-10-26T22:30:57", 18.47056, -68.01005], + ["2019-10-26T23:00:21", 18.47924, -68.01184], + ["2019-10-26T23:30:57", 18.48764, -68.01511], + ["2019-10-27T00:00:09", 18.49428, -68.01849], + ["2019-10-27T00:30:56", 18.50115, -68.02063], + ["2019-10-27T00:59:54", 18.50405, -68.02249], + ["2019-10-27T01:30:58", 18.50293, -68.02652], + ["2019-10-27T01:59:46", 18.5012, -68.02887], + ["2019-10-27T02:29:58", 18.49993, -68.03113], + ["2019-10-27T02:59:29", 18.49912, -68.03243], + ["2019-10-27T03:29:10", 18.49774, -68.03549], + ["2019-10-27T03:59:10", 18.4974, -68.03738], + ["2019-10-27T04:29:26", 18.49435, -68.0374], + ["2019-10-27T04:59:27", 18.49235, -68.03485], + ["2019-10-27T05:29:27", 18.49119, -68.03064], + ["2019-10-27T05:58:58", 18.49067, -68.02601], + ["2019-10-27T06:28:58", 18.48977, -68.02103], + ["2019-10-27T06:58:24", 18.48831, -68.01833], + ["2019-10-27T07:28:39", 18.48582, -68.0184], + ["2019-10-27T07:58:04", 18.48209, -68.02097], + ["2019-10-27T08:28:40", 18.47717, -68.02597], + ["2019-10-27T08:57:50", 18.47198, -68.03122], + ["2019-10-27T09:27:38", 18.46508, -68.03634], + ["2019-10-27T09:57:38", 18.46002, -68.03857], + ["2019-10-27T10:28:00", 18.4571, -68.04201], + ["2019-10-27T10:58:56", 18.45484, -68.04738], + ["2019-10-27T11:28:56", 18.45068, -68.05194], + ["2019-10-27T11:57:14", 18.44512, -68.05441], + ["2019-10-27T12:56:54", 18.42918, -68.05671], + ["2019-10-27T13:26:54", 18.41892, -68.061], + ["2019-10-27T13:56:54", 18.41072, -68.06502], + ["2019-10-27T14:26:34", 18.40334, -68.06797], + ["2019-10-27T14:56:34", 18.39772, -68.07123], + ["2019-10-27T15:26:56", 18.39163, -68.0708], + ["2019-10-27T15:56:25", 18.38733, -68.06822], + ["2019-10-27T16:26:25", 18.38106, -68.06426], + ["2019-10-27T16:55:56", 18.37349, -68.05777], + ["2019-10-27T16:56:09", 18.37345, -68.05784], + ["2019-10-27T17:26:09", 18.36693, -68.05844], + ["2019-10-27T17:55:56", 18.35972, -68.06156], + ["2019-10-27T18:25:56", 18.35247, -68.06482], + ["2019-10-27T18:55:27", 18.34875, -68.06735], + ["2019-10-27T19:25:10", 18.35152, -68.06931], + ["2019-10-27T19:55:10", 18.355, -68.07025], + ["2019-10-27T20:25:28", 18.35864, -68.07178], + ["2019-10-27T20:54:55", 18.36253, -68.07248], + ["2019-10-27T21:25:26", 18.372, -68.07035], + ["2019-10-27T21:52:04", 18.37197, -68.07034], + ["2019-10-27T22:25:26", 18.37745, -68.0658], + ["2019-10-28T00:24:27", 18.37976, -68.0701], + ["2019-10-28T00:54:00", 18.37805, -68.07357], + ["2019-10-28T01:24:00", 18.375, -68.07477], + ["2019-10-28T01:53:55", 18.37139, -68.07579], + ["2019-10-28T02:23:55", 18.36766, -68.07639], + ["2019-10-28T02:53:05", 18.36514, -68.07501], + ["2019-10-28T03:52:43", 18.35541, -68.06771], + ["2019-10-28T04:22:42", 18.34862, -68.06531], + ["2019-10-28T04:52:42", 18.34098, -68.0635], + ["2019-10-28T05:23:08", 18.33332, -68.06328], + ["2019-10-28T05:52:43", 18.32726, -68.0639], + ["2019-10-28T06:23:27", 18.32419, -68.06134], + ["2019-10-28T07:22:55", 18.32852, -68.04944], + ["2019-10-28T08:23:11", 18.34208, -68.03928], + ["2019-10-28T08:52:19", 18.34703, -68.03641], + ["2019-10-28T09:22:55", 18.35254, -68.03686], + ["2019-10-28T10:22:27", 18.37174, -68.03921], + ["2019-10-28T10:51:53", 18.37915, -68.03842], + ["2019-10-28T10:52:27", 18.37916, -68.03834], + ["2019-10-28T11:22:27", 18.38538, -68.03775], + ["2019-10-28T11:52:27", 18.3888, -68.03715], + ["2019-10-28T12:22:27", 18.3906, -68.03775], + ["2019-10-28T14:51:06", 18.37616, -68.04507], + ["2019-10-28T15:50:53", 18.36736, -68.03958], + ["2019-10-28T18:20:26", 18.34434, -68.00836], + ["2019-10-28T19:51:44", 18.33959, -67.9931], + ["2019-10-28T20:20:02", 18.34333, -67.99121], + ["2019-10-28T20:50:26", 18.34947, -67.98935], + ["2019-10-28T21:20:28", 18.36663, -67.98549], + ["2019-10-28T21:50:28", 18.36762, -67.98532], + ["2019-10-28T21:51:30", 18.36786, -67.98523], + ["2019-10-28T22:19:34", 18.3772, -67.9826], + ["2019-10-28T22:50:29", 18.38759, -67.97787], + ["2019-10-28T23:19:14", 18.39679, -67.97366], + ["2019-10-29T00:18:56", 18.41152, -67.96283], + ["2019-10-29T01:19:56", 18.41886, -67.95358], + ["2019-10-29T01:48:31", 18.42292, -67.94998], + ["2019-10-29T02:48:14", 18.42789, -67.94217], + ["2019-10-29T06:47:23", 18.43318, -67.86841], + ["2019-10-29T07:17:12", 18.43277, -67.8575], + ["2019-10-29T07:47:12", 18.4359, -67.84763], + ["2019-10-29T08:17:43", 18.44064, -67.83719], + ["2019-10-29T08:47:12", 18.44555, -67.82809], + ["2019-10-29T10:17:43", 18.45224, -67.81332], + ["2019-10-29T10:46:17", 18.45313, -67.81167], + ["2019-10-29T11:16:17", 18.45407, -67.81176], + ["2019-10-29T11:46:17", 18.45729, -67.81262], + ["2019-10-29T12:16:06", 18.46301, -67.81482], + ["2019-10-29T12:46:58", 18.46891, -67.81741], + ["2019-10-29T13:16:04", 18.47427, -67.81964], + ["2019-10-29T13:46:25", 18.4788, -67.82232], + ["2019-10-29T16:45:34", 18.49777, -67.84197], + ["2019-10-29T17:15:34", 18.49863, -67.84643], + ["2019-10-29T17:45:34", 18.50017, -67.85089], + ["2019-10-29T18:45:28", 18.51078, -67.84877], + ["2019-10-29T19:15:28", 18.51597, -67.84636], + ["2019-10-29T19:45:28", 18.52082, -67.84457], + ["2019-10-29T20:15:26", 18.52574, -67.84199], + ["2019-10-29T20:45:26", 18.5308, -67.84045], + ["2019-10-29T21:14:06", 18.53624, -67.83954], + ["2019-10-29T23:15:00", 18.56235, -67.83887], + ["2019-10-30T01:43:27", 18.58973, -67.85974], + ["2019-10-30T03:13:58", 18.59041, -67.86914], + ["2019-10-30T04:14:12", 18.58642, -67.87521], + ["2019-10-30T07:12:19", 18.57037, -67.90528], + ["2019-10-30T07:42:19", 18.5687, -67.90821], + ["2019-10-30T08:12:19", 18.56857, -67.90958], + ["2019-10-30T08:41:49", 18.56914, -67.90973], + ["2019-10-30T10:10:58", 18.57343, -67.90412], + ["2019-10-30T10:41:22", 18.575, -67.9014], + ["2019-10-30T11:10:58", 18.57802, -67.89923], + ["2019-10-30T12:10:35", 18.58354, -67.89521], + ["2019-10-30T12:40:35", 18.58375, -67.89445], + ["2019-10-30T13:10:35", 18.58182, -67.89368], + ["2019-10-30T15:09:58", 18.55068, -67.88565], + ["2019-10-30T15:41:40", 18.53808, -67.88397], + ["2019-10-30T16:11:40", 18.52563, -67.8844], + ["2019-10-30T16:41:40", 18.51224, -67.88861], + ["2019-10-30T17:10:28", 18.50181, -67.89337], + ["2019-10-30T17:40:28", 18.50305, -67.8926], + ["2019-10-30T18:10:28", 18.50515, -67.89063], + ["2019-10-30T18:39:17", 18.51073, -67.89252], + ["2019-10-30T19:09:59", 18.51748, -67.89178], + ["2019-10-30T19:39:28", 18.52374, -67.8895], + ["2019-10-30T20:10:13", 18.53153, -67.8884], + ["2019-10-30T21:10:29", 18.5473, -67.88684], + ["2019-10-30T22:39:00", 18.57074, -67.88572], + ["2019-10-30T23:09:00", 18.57992, -67.8828], + ["2019-10-30T23:39:00", 18.59108, -67.87885], + ["2019-10-31T00:08:58", 18.60188, -67.87698], + ["2019-10-31T00:38:58", 18.61132, -67.87466], + ["2019-10-31T01:08:01", 18.61809, -67.87259], + ["2019-10-31T02:38:27", 18.62519, -67.86181], + ["2019-10-31T04:07:39", 18.61406, -67.84884], + ["2019-10-31T04:37:39", 18.60595, -67.84901], + ["2019-10-31T05:07:39", 18.59728, -67.84995], + ["2019-10-31T06:37:16", 18.57286, -67.85812], + ["2019-10-31T07:07:07", 18.56714, -67.8635], + ["2019-10-31T07:37:07", 18.56615, -67.86642], + ["2019-10-31T11:37:28", 18.60514, -67.85123], + ["2019-10-31T12:35:24", 18.62131, -67.84668], + ["2019-10-31T13:04:57", 18.63133, -67.84604], + ["2019-10-31T13:34:57", 18.63996, -67.8456], + ["2019-10-31T14:04:45", 18.64581, -67.84482], + ["2019-10-31T14:34:45", 18.64972, -67.84207], + ["2019-10-31T15:05:27", 18.65241, -67.83838], + ["2019-10-31T15:35:10", 18.65292, -67.83515], + ["2019-10-31T16:05:10", 18.65103, -67.83481], + ["2019-10-31T16:34:07", 18.64804, -67.83716], + ["2019-10-31T17:04:40", 18.64446, -67.83911], + ["2019-10-31T17:34:26", 18.63951, -67.84117], + ["2019-10-31T18:04:26", 18.63393, -67.84408], + ["2019-10-31T18:33:37", 18.62865, -67.84711], + ["2019-10-31T19:04:03", 18.62289, -67.85001], + ["2019-10-31T19:33:27", 18.6167, -67.85361], + ["2019-10-31T20:03:10", 18.60986, -67.85705], + ["2019-10-31T20:33:10", 18.60372, -67.86014], + ["2019-10-31T21:02:57", 18.59832, -67.86194], + ["2019-10-31T21:32:57", 18.59356, -67.86435], + ["2019-10-31T21:52:02", 18.591, -67.86511], + ["2019-10-31T22:03:26", 18.58952, -67.86545], + ["2019-10-31T22:32:50", 18.58767, -67.86664], + ["2019-10-31T23:02:56", 18.58726, -67.86792], + ["2019-10-31T23:32:39", 18.58868, -67.86829], + ["2019-11-01T00:02:39", 18.5964, -67.86331], + ["2019-11-01T00:32:26", 18.60534, -67.85919], + ["2019-11-01T01:02:26", 18.61641, -67.85507], + ["2019-11-01T01:31:48", 18.6271, -67.85263], + ["2019-11-01T02:02:33", 18.63527, -67.8512], + ["2019-11-01T02:31:48", 18.63985, -67.85074], + ["2019-11-01T03:01:42", 18.64372, -67.84787], + ["2019-11-01T03:31:42", 18.64449, -67.84229], + ["2019-11-01T04:01:58", 18.64283, -67.83674], + ["2019-11-01T04:31:58", 18.64073, -67.83168], + ["2019-11-01T05:01:58", 18.63794, -67.828], + ["2019-11-01T05:31:21", 18.63446, -67.82544], + ["2019-11-01T06:01:56", 18.63003, -67.82132], + ["2019-11-01T06:31:12", 18.62564, -67.81961], + ["2019-11-01T07:01:24", 18.62139, -67.82074], + ["2019-11-01T07:30:45", 18.61642, -67.8224], + ["2019-11-01T08:00:45", 18.61299, -67.82377], + ["2019-11-01T08:30:45", 18.60951, -67.82617], + ["2019-11-01T09:00:58", 18.60685, -67.82898], + ["2019-11-01T09:30:27", 18.60404, -67.83264], + ["2019-11-01T10:00:54", 18.60186, -67.836], + ["2019-11-01T10:30:10", 18.60103, -67.83859], + ["2019-11-01T11:00:26", 18.60087, -67.84171], + ["2019-11-01T11:29:57", 18.60278, -67.84444], + ["2019-11-01T12:00:30", 18.60714, -67.84546], + ["2019-11-01T12:29:36", 18.61208, -67.84589], + ["2019-11-01T12:59:57", 18.61834, -67.84613], + ["2019-11-01T13:29:08", 18.62454, -67.84787], + ["2019-11-01T13:59:27", 18.63136, -67.85016], + ["2019-11-01T14:28:51", 18.63786, -67.84787], + ["2019-11-01T14:59:08", 18.64063, -67.84662], + ["2019-11-01T15:28:36", 18.64155, -67.84641], + ["2019-11-01T15:58:57", 18.64143, -67.84735], + ["2019-11-01T16:28:28", 18.63957, -67.84773], + ["2019-11-01T16:58:28", 18.63511, -67.84979], + ["2019-11-01T17:28:02", 18.62936, -67.85202], + ["2019-11-01T17:58:26", 18.62214, -67.85504], + ["2019-11-01T18:27:56", 18.61441, -67.8576], + ["2019-11-01T18:58:27", 18.60552, -67.86215], + ["2019-11-01T19:27:46", 18.59657, -67.86749], + ["2019-11-01T19:57:56", 18.58846, -67.87497], + ["2019-11-01T20:27:55", 18.58124, -67.88288], + ["2019-11-01T20:57:55", 18.57429, -67.88992], + ["2019-11-01T21:21:42", 18.56931, -67.89825], + ["2019-11-01T21:51:42", 18.56927, -67.89886], + ["2019-11-01T21:57:26", 18.56915, -67.89963], + ["2019-11-01T22:27:03", 18.56918, -67.90338], + ["2019-11-01T23:26:44", 18.57397, -67.90521], + ["2019-11-01T23:56:21", 18.58058, -67.90185], + ["2019-11-02T00:26:21", 18.58745, -67.89892], + ["2019-11-02T00:56:05", 18.59449, -67.89747], + ["2019-11-02T01:26:05", 18.60243, -67.89532], + ["2019-11-02T01:56:28", 18.611, -67.89359], + ["2019-11-02T02:26:08", 18.6181, -67.89171], + ["2019-11-02T02:56:08", 18.62402, -67.89111], + ["2019-11-02T03:25:26", 18.62827, -67.89192], + ["2019-11-02T03:55:26", 18.6323, -67.89072], + ["2019-11-02T04:25:26", 18.63432, -67.88763], + ["2019-11-02T04:55:58", 18.63285, -67.88464], + ["2019-11-02T05:25:19", 18.62941, -67.88159], + ["2019-11-02T05:55:11", 18.62407, -67.87855], + ["2019-11-02T06:25:11", 18.6178, -67.87752], + ["2019-11-02T06:55:26", 18.60854, -67.87551], + ["2019-11-02T07:25:00", 18.59795, -67.87694], + ["2019-11-02T07:56:13", 18.58671, -67.88235], + ["2019-11-02T08:25:08", 18.57705, -67.88882], + ["2019-11-02T08:55:08", 18.56791, -67.89706], + ["2019-11-02T09:24:30", 18.56713, -67.90457], + ["2019-11-02T11:24:29", 18.58319, -67.91616], + ["2019-11-02T11:54:30", 18.5887, -67.91625], + ["2019-11-02T12:24:30", 18.59389, -67.91669], + ["2019-11-02T12:53:46", 18.59853, -67.91754], + ["2019-11-02T16:53:05", 18.6104, -67.93868], + ["2019-11-02T17:52:39", 18.60241, -67.94729], + ["2019-11-02T18:22:39", 18.59421, -67.95184], + ["2019-11-02T18:52:39", 18.58434, -67.95775], + ["2019-11-02T19:22:22", 18.57386, -67.96485], + ["2019-11-02T19:52:22", 18.56377, -67.97275], + ["2019-11-02T20:22:55", 18.55411, -67.98206], + ["2019-11-02T20:52:27", 18.54651, -67.99128], + ["2019-11-02T21:22:27", 18.5408, -68.00098], + ["2019-11-02T21:51:47", 18.53733, -68.00991], + ["2019-11-02T22:21:57", 18.53468, -68.0181], + ["2019-11-02T22:51:36", 18.53259, -68.02399], + ["2019-11-02T23:21:56", 18.53124, -68.02826], + ["2019-11-02T23:51:16", 18.52873, -68.03384], + ["2019-11-03T00:21:29", 18.52705, -68.04272], + ["2019-11-03T00:50:43", 18.52468, -68.05072], + ["2019-11-03T01:20:58", 18.52089, -68.05798], + ["2019-11-03T01:50:19", 18.51666, -68.066], + ["2019-11-03T02:20:55", 18.5124, -68.07364], + ["2019-11-03T02:50:19", 18.50761, -68.08127], + ["2019-11-03T03:20:40", 18.50264, -68.08932], + ["2019-11-03T03:50:25", 18.49666, -68.09473], + ["2019-11-03T04:20:25", 18.48623, -68.09885], + ["2019-11-03T04:50:04", 18.47372, -68.10312], + ["2019-11-03T05:20:58", 18.46098, -68.10809], + ["2019-11-03T08:20:27", 18.38659, -68.15817], + ["2019-11-03T08:49:34", 18.3765, -68.16946], + ["2019-11-03T09:49:24", 18.35738, -68.19414], + ["2019-11-03T11:19:42", 18.33717, -68.2202], + ["2019-11-03T11:50:27", 18.33114, -68.22999], + ["2019-11-03T12:20:27", 18.32685, -68.23651], + ["2019-11-03T12:49:02", 18.32303, -68.23968], + ["2019-11-03T13:19:02", 18.31943, -68.24225], + ["2019-11-03T16:47:49", 18.28651, -68.2435], + ["2019-11-03T19:47:16", 18.25208, -68.26907], + ["2019-11-03T21:51:59", 18.21217, -68.3084], + ["2019-11-04T01:16:14", 18.14043, -68.37273], + ["2019-11-04T02:47:29", 18.11218, -68.39359], + ["2019-11-04T03:46:28", 18.09696, -68.40259], + ["2019-11-04T05:15:22", 18.07113, -68.41925], + ["2019-11-04T05:45:22", 18.06104, -68.42715], + ["2019-11-04T06:15:22", 18.05267, -68.43359], + ["2019-11-04T08:44:54", 18.02083, -68.47391], + ["2019-11-04T13:43:58", 18.0093, -68.52563], + ["2019-11-04T17:42:58", 17.98927, -68.5704], + ["2019-11-04T20:12:54", 17.97165, -68.61297], + ["2019-11-04T21:13:28", 17.96438, -68.63129], + ["2019-11-04T23:41:27", 17.95042, -68.66579], + ["2019-11-05T00:11:27", 17.94905, -68.67231], + ["2019-11-05T00:41:27", 17.94742, -68.67789], + ["2019-11-05T01:12:30", 17.94555, -68.68301], + ["2019-11-05T09:09:31", 17.9322, -68.81183], + ["2019-11-05T09:40:28", 17.93384, -68.8197], + ["2019-11-05T10:39:56", 17.93605, -68.83338], + ["2019-11-05T11:09:56", 17.93652, -68.83888], + ["2019-11-05T11:39:56", 17.93794, -68.8435], + ["2019-11-05T13:39:28", 17.94715, -68.85941], + ["2019-11-05T15:39:31", 17.95841, -68.87558], + ["2019-11-05T20:37:57", 17.98262, -68.90384], + ["2019-11-05T21:37:37", 17.98401, -68.91305], + ["2019-11-05T22:07:37", 17.98435, -68.91502], + ["2019-11-05T22:37:37", 17.98444, -68.91965], + ["2019-11-06T02:04:34", 17.97522, -68.93715], + ["2019-11-06T02:34:34", 17.97346, -68.93818], + ["2019-11-06T03:04:34", 17.97106, -68.93886], + ["2019-11-06T03:36:04", 17.96832, -68.93967], + ["2019-11-06T05:33:37", 17.95653, -68.94177], + ["2019-11-06T06:03:48", 17.95308, -68.94202], + ["2019-11-06T06:33:37", 17.94932, -68.94271], + ["2019-11-06T20:03:27", 17.88633, -69.11618], + ["2019-11-06T22:31:59", 17.88446, -69.16074], + ["2019-11-06T23:01:59", 17.88403, -69.16855], + ["2019-11-06T23:31:59", 17.88291, -69.1767], + ["2019-11-07T00:01:31", 17.88186, -69.18416], + ["2019-11-07T00:31:31", 17.88083, -69.19223], + ["2019-11-07T02:59:54", 17.87927, -69.23111], + ["2019-11-07T04:29:02", 17.87896, -69.25585], + ["2019-11-07T04:59:02", 17.87875, -69.2634], + ["2019-11-07T05:29:02", 17.87901, -69.27087], + ["2019-11-07T07:28:41", 17.88685, -69.29868], + ["2019-11-07T11:57:29", 17.89545, -69.34448], + ["2019-11-07T12:57:28", 17.89491, -69.35136], + ["2019-11-07T13:27:28", 17.89474, -69.35539], + ["2019-11-07T13:57:28", 17.89491, -69.3602], + ["2019-11-07T14:26:24", 17.89522, -69.36511], + ["2019-11-07T17:57:08", 17.89842, -69.41309], + ["2019-11-07T19:25:30", 17.90358, -69.43111], + ["2019-11-07T19:55:30", 17.90508, -69.43729], + ["2019-11-07T20:25:30", 17.9068, -69.44244], + ["2019-11-07T20:51:44", 17.90934, -69.45383], + ["2019-11-07T21:21:44", 17.91007, -69.45804], + ["2019-11-07T21:51:44", 17.91024, -69.45898], + ["2019-11-08T06:54:28", 17.91056, -69.57764], + ["2019-11-08T08:23:00", 17.91094, -69.59702], + ["2019-11-08T12:22:02", 17.92005, -69.6561], + ["2019-11-08T12:52:58", 17.92161, -69.66436], + ["2019-11-08T13:22:58", 17.92341, -69.67191], + ["2019-11-08T13:52:58", 17.92547, -69.68066], + ["2019-11-08T17:51:44", 17.95187, -69.74026], + ["2019-11-08T19:20:23", 17.96533, -69.75658], + ["2019-11-08T19:50:23", 17.96919, -69.76182], + ["2019-11-08T20:20:23", 17.97258, -69.7662], + ["2019-11-08T22:49:29", 17.98731, -69.78659], + ["2019-11-08T23:19:29", 17.98988, -69.7908], + ["2019-11-08T23:49:29", 17.9922, -69.79483], + ["2019-11-09T01:19:58", 17.99796, -69.80887], + ["2019-11-09T02:48:40", 18.00195, -69.82074], + ["2019-11-09T03:19:56", 18.00284, -69.82465], + ["2019-11-09T05:18:37", 18.00585, -69.83938], + ["2019-11-09T05:48:24", 18.00696, -69.84312], + ["2019-11-09T06:18:24", 18.00786, -69.84647], + ["2019-11-09T06:48:24", 18.00906, -69.84981], + ["2019-11-09T10:47:06", 18.01061, -69.86996], + ["2019-11-09T11:17:06", 18.00997, -69.87314], + ["2019-11-09T11:47:06", 18.00967, -69.8764], + ["2019-11-09T15:17:29", 17.99988, -69.9043], + ["2019-11-09T15:45:58", 17.99791, -69.90788], + ["2019-11-09T16:15:58", 17.99619, -69.9127], + ["2019-11-09T16:45:58", 17.99525, -69.91733], + ["2019-11-09T18:15:19", 17.99613, -69.93223], + ["2019-11-09T18:45:19", 17.99776, -69.93798], + ["2019-11-09T19:15:19", 17.99926, -69.94373], + ["2019-11-09T20:14:53", 18.00215, -69.95491], + ["2019-11-09T20:44:53", 18.00322, -69.96015], + ["2019-11-09T21:14:53", 18.00434, -69.96487], + ["2019-11-09T21:22:14", 18.00539, -69.96974], + ["2019-11-09T21:52:14", 18.00556, -69.97042], + ["2019-11-09T22:15:28", 18.00631, -69.97348], + ["2019-11-09T22:45:28", 18.0076, -69.97726], + ["2019-11-09T23:14:23", 18.00888, -69.98041], + ["2019-11-09T23:44:59", 18.01071, -69.98345], + ["2019-11-10T00:14:23", 18.01219, -69.9859], + ["2019-11-10T00:43:57", 18.01363, -69.98824], + ["2019-11-10T01:13:57", 18.01475, -69.99014], + ["2019-11-10T01:44:55", 18.01514, -69.99144], + ["2019-11-10T02:14:55", 18.0151, -69.99238], + ["2019-11-10T02:44:55", 18.01531, -69.99307], + ["2019-11-10T03:13:38", 18.01599, -69.9937], + ["2019-11-10T03:44:10", 18.0165, -69.99505], + ["2019-11-10T04:14:10", 18.01719, -69.99677], + ["2019-11-10T07:43:13", 18.02381, -70.00982], + ["2019-11-10T08:14:22", 18.02446, -70.0125], + ["2019-11-10T08:44:22", 18.02476, -70.01542], + ["2019-11-10T09:14:22", 18.0239, -70.01833], + ["2019-11-10T09:42:59", 18.02292, -70.021], + ["2019-11-10T12:11:15", 18.02104, -70.03229], + ["2019-11-10T14:41:55", 18.01752, -70.03964], + ["2019-11-10T16:09:47", 18.01352, -70.03968], + ["2019-11-10T16:39:47", 18.01206, -70.03925], + ["2019-11-10T17:09:47", 18.01069, -70.03925], + ["2019-11-10T17:39:55", 18.00894, -70.03976], + ["2019-11-10T18:10:00", 18.00733, -70.04066], + ["2019-11-10T18:40:00", 18.00553, -70.04263], + ["2019-11-10T21:38:08", 18.00611, -70.06338], + ["2019-11-10T22:08:08", 18.00658, -70.06587], + ["2019-11-10T22:38:08", 18.00778, -70.07025], + ["2019-11-11T07:06:06", 18.01475, -70.09023], + ["2019-11-11T10:35:57", 18.00255, -70.09048], + ["2019-11-11T16:35:06", 17.98396, -70.12729], + ["2019-11-11T17:34:06", 17.98201, -70.13679], + ["2019-11-11T18:04:06", 17.98154, -70.14075], + ["2019-11-11T18:34:06", 17.9803, -70.14453], + ["2019-11-11T21:02:04", 17.97419, -70.15825], + ["2019-11-11T21:32:37", 17.97478, -70.15759], + ["2019-11-11T22:02:04", 17.97377, -70.15894], + ["2019-11-11T22:32:59", 17.97287, -70.16016], + ["2019-11-11T23:02:59", 17.97133, -70.16179], + ["2019-11-11T23:32:59", 17.96966, -70.16385], + ["2019-11-12T05:01:58", 17.93264, -70.19897], + ["2019-11-12T06:30:20", 17.92367, -70.2084], + ["2019-11-12T07:59:36", 17.91787, -70.21487], + ["2019-11-12T08:29:36", 17.91517, -70.21684], + ["2019-11-12T08:59:36", 17.91225, -70.21814], + ["2019-11-12T13:29:28", 17.88648, -70.2247], + ["2019-11-12T13:58:43", 17.88443, -70.22723], + ["2019-11-12T19:58:00", 17.85683, -70.27255], + ["2019-11-12T23:26:49", 17.86417, -70.29034], + ["2019-11-12T23:58:25", 17.86534, -70.29241], + ["2019-11-13T00:28:25", 17.86641, -70.29464], + ["2019-11-13T00:58:25", 17.86753, -70.29764], + ["2019-11-13T02:56:08", 17.85855, -70.30661], + ["2019-11-13T09:24:13", 17.78588, -70.32498], + ["2019-11-13T11:54:57", 17.761, -70.33444], + ["2019-11-13T16:23:04", 17.72244, -70.36266], + ["2019-11-13T18:55:34", 17.70525, -70.37918], + ["2019-11-14T00:21:59", 17.67139, -70.40291], + ["2019-11-14T09:49:03", 17.57349, -70.46735], + ["2019-11-14T15:18:06", 17.52535, -70.52118], + ["2019-11-14T16:18:00", 17.51766, -70.52789], + ["2019-11-14T22:17:35", 17.46234, -70.58041], + ["2019-11-14T23:15:34", 17.45638, -70.5899], + ["2019-11-15T03:14:46", 17.43213, -70.61978], + ["2019-11-15T04:14:42", 17.42498, -70.62738], + ["2019-11-15T04:44:58", 17.42156, -70.63203], + ["2019-11-15T05:14:58", 17.41851, -70.63658], + ["2019-11-15T05:44:58", 17.41521, -70.64182], + ["2019-11-15T18:11:18", 17.29667, -70.7641], + ["2019-11-16T03:38:30", 17.25888, -70.85126], + ["2019-11-16T05:09:00", 17.25682, -70.86163], + ["2019-11-16T06:09:42", 17.25691, -70.86812], + ["2019-11-16T09:07:40", 17.25624, -70.87912], + ["2019-11-16T14:07:58", 17.22534, -70.88028], + ["2019-11-16T17:35:31", 17.19099, -70.90979], + ["2019-11-16T18:35:01", 17.1854, -70.92421], + ["2019-11-16T19:05:01", 17.18295, -70.93125], + ["2019-11-16T19:35:01", 17.18063, -70.93777], + ["2019-11-16T22:34:28", 17.17263, -70.9618], + ["2019-11-16T23:04:28", 17.17254, -70.96334], + ["2019-11-16T23:34:28", 17.1722, -70.96411], + ["2019-11-17T01:03:44", 17.16955, -70.96405], + ["2019-11-17T02:03:19", 17.16666, -70.96445], + ["2019-11-17T02:33:19", 17.1652, -70.96487], + ["2019-11-17T03:03:19", 17.16335, -70.96539], + ["2019-11-17T03:33:41", 17.16127, -70.96674], + ["2019-11-17T04:03:27", 17.15922, -70.96813], + ["2019-11-17T04:33:27", 17.15703, -70.96933], + ["2019-11-17T05:02:44", 17.15493, -70.97078], + ["2019-11-17T06:02:26", 17.15116, -70.97387], + ["2019-11-17T06:32:07", 17.14929, -70.97586], + ["2019-11-17T07:02:07", 17.14792, -70.97775], + ["2019-11-17T07:32:26", 17.14673, -70.97915], + ["2019-11-17T08:01:54", 17.14553, -70.98013], + ["2019-11-17T10:01:29", 17.13952, -70.9779], + ["2019-11-17T10:31:23", 17.13809, -70.97604], + ["2019-11-17T11:01:23", 17.13633, -70.97458], + ["2019-11-17T11:31:56", 17.13366, -70.9725], + ["2019-11-17T12:01:09", 17.13094, -70.9697], + ["2019-11-17T12:31:06", 17.12763, -70.96653], + ["2019-11-17T13:01:06", 17.12415, -70.96422], + ["2019-11-17T13:31:06", 17.11964, -70.96216], + ["2019-11-17T14:00:31", 17.1148, -70.96111], + ["2019-11-17T14:30:30", 17.11022, -70.96124], + ["2019-11-17T15:00:30", 17.10567, -70.96107], + ["2019-11-17T15:30:30", 17.10086, -70.96133], + ["2019-11-17T15:59:55", 17.09601, -70.96245], + ["2019-11-17T16:29:43", 17.09132, -70.96465], + ["2019-11-17T16:59:43", 17.08694, -70.96722], + ["2019-11-17T17:29:30", 17.08274, -70.97049], + ["2019-11-17T17:59:30", 17.07991, -70.97461], + ["2019-11-17T18:59:23", 17.07625, -70.98444], + ["2019-11-17T19:29:14", 17.075, -70.98851], + ["2019-11-17T19:59:14", 17.07427, -70.99194], + ["2019-11-17T20:29:27", 17.07393, -70.99509], + ["2019-11-17T20:59:10", 17.07364, -70.9975], + ["2019-11-17T21:29:10", 17.07313, -70.9993], + ["2019-11-17T21:52:19", 17.07215, -70.99991], + ["2019-11-17T21:58:31", 17.07185, -70.99997], + ["2019-11-17T22:58:13", 17.06762, -70.99921], + ["2019-11-17T23:27:51", 17.06561, -70.99843], + ["2019-11-17T23:57:51", 17.06402, -70.99791], + ["2019-11-18T00:28:09", 17.06197, -70.99741], + ["2019-11-18T00:57:42", 17.05975, -70.99686], + ["2019-11-18T01:27:56", 17.05693, -70.9967], + ["2019-11-18T01:57:56", 17.05418, -70.9967], + ["2019-11-18T02:27:56", 17.05191, -70.99722], + ["2019-11-18T02:57:23", 17.04899, -70.99773], + ["2019-11-18T04:27:26", 17.04032, -71.00211], + ["2019-11-18T04:56:37", 17.03771, -71.00355], + ["2019-11-18T05:26:37", 17.03518, -71.00519], + ["2019-11-18T05:56:37", 17.03325, -71.00751], + ["2019-11-18T06:26:58", 17.03152, -71.01016], + ["2019-11-18T06:56:11", 17.02995, -71.01242], + ["2019-11-18T07:25:44", 17.02816, -71.01533], + ["2019-11-18T07:55:44", 17.02679, -71.01868], + ["2019-11-18T09:25:56", 17.02542, -71.0257], + ["2019-11-18T09:56:28", 17.02504, -71.02719], + ["2019-11-18T10:26:28", 17.0241, -71.02856], + ["2019-11-18T10:55:27", 17.02262, -71.02905], + ["2019-11-18T11:25:27", 17.02069, -71.02896], + ["2019-11-18T12:54:39", 17.01482, -71.03005], + ["2019-11-18T13:24:39", 17.01267, -71.03022], + ["2019-11-18T13:54:39", 17.0104, -71.03082], + ["2019-11-18T14:54:28", 17.00507, -71.03352], + ["2019-11-18T15:24:28", 17.00189, -71.03592], + ["2019-11-18T15:54:28", 16.99833, -71.0378], + ["2019-11-18T16:24:26", 16.99535, -71.04027], + ["2019-11-18T16:54:26", 16.99278, -71.04216], + ["2019-11-18T17:24:26", 16.99008, -71.04388], + ["2019-11-18T17:53:36", 16.98819, -71.04673], + ["2019-11-18T18:23:36", 16.98652, -71.05016], + ["2019-11-18T18:53:36", 16.9851, -71.05316], + ["2019-11-18T19:23:58", 16.98358, -71.05658], + ["2019-11-18T19:53:37", 16.98215, -71.05938], + ["2019-11-18T20:23:26", 16.98061, -71.06233], + ["2019-11-18T20:53:26", 16.97915, -71.06525], + ["2019-11-18T21:23:57", 16.97822, -71.06824], + ["2019-11-18T21:53:02", 16.9773, -71.07056], + ["2019-11-18T22:23:02", 16.97627, -71.07236], + ["2019-11-18T22:53:02", 16.97494, -71.0733], + ["2019-11-18T23:23:26", 16.97264, -71.07333], + ["2019-11-19T02:22:58", 16.95685, -71.07529], + ["2019-11-19T05:51:45", 16.92755, -71.08731], + ["2019-11-19T07:22:58", 16.91699, -71.09802], + ["2019-11-19T10:50:49", 16.89275, -71.11227], + ["2019-11-19T11:50:32", 16.88657, -71.11609], + ["2019-11-19T13:21:28", 16.87689, -71.11818], + ["2019-11-19T13:51:28", 16.87256, -71.11818], + ["2019-11-19T14:21:28", 16.86788, -71.11792], + ["2019-11-19T15:49:28", 16.85437, -71.11819], + ["2019-11-19T16:19:28", 16.84845, -71.11931], + ["2019-11-19T16:49:28", 16.84274, -71.12094], + ["2019-11-19T17:19:12", 16.83666, -71.12376], + ["2019-11-19T17:49:12", 16.83065, -71.12667], + ["2019-11-19T20:19:28", 16.79775, -71.14713], + ["2019-11-20T00:47:25", 16.75764, -71.18762], + ["2019-11-20T11:16:02", 16.70039, -71.23349], + ["2019-11-20T12:44:43", 16.69468, -71.24187], + ["2019-11-20T15:14:31", 16.68724, -71.24695], + ["2019-11-20T15:43:58", 16.68515, -71.24724], + ["2019-11-20T16:14:31", 16.68218, -71.24738], + ["2019-11-20T21:42:12", 16.64358, -71.24515], + ["2019-11-20T21:52:24", 16.64201, -71.24551], + ["2019-11-20T22:12:08", 16.63888, -71.24625], + ["2019-11-20T22:42:08", 16.6348, -71.24754], + ["2019-11-20T23:12:08", 16.63141, -71.2496], + ["2019-11-20T23:41:35", 16.62797, -71.25171], + ["2019-11-21T00:11:26", 16.62449, -71.25348], + ["2019-11-21T00:41:26", 16.62101, -71.25442], + ["2019-11-21T01:11:26", 16.61732, -71.25519], + ["2019-11-21T02:10:58", 16.60873, -71.25488], + ["2019-11-21T02:40:58", 16.60525, -71.25454], + ["2019-11-21T03:10:58", 16.60165, -71.25403], + ["2019-11-21T03:40:16", 16.59775, -71.25302], + ["2019-11-21T04:09:59", 16.59318, -71.25166], + ["2019-11-21T04:39:59", 16.58889, -71.24994], + ["2019-11-21T05:09:47", 16.58429, -71.24771], + ["2019-11-21T05:39:47", 16.5797, -71.24548], + ["2019-11-21T06:09:36", 16.57474, -71.24281], + ["2019-11-21T06:39:36", 16.56972, -71.24075], + ["2019-11-21T07:09:36", 16.56474, -71.23929], + ["2019-11-21T07:39:09", 16.55941, -71.23865], + ["2019-11-21T08:09:09", 16.55353, -71.23856], + ["2019-11-21T09:08:56", 16.54174, -71.23956], + ["2019-11-21T09:38:22", 16.53621, -71.24128], + ["2019-11-21T10:08:22", 16.53093, -71.24317], + ["2019-11-21T10:38:22", 16.52574, -71.24557], + ["2019-11-21T11:08:29", 16.52064, -71.24841], + ["2019-11-21T11:38:29", 16.51652, -71.25158], + ["2019-11-21T12:08:29", 16.51214, -71.25561], + ["2019-11-21T13:37:15", 16.50113, -71.26414], + ["2019-11-21T14:07:15", 16.49761, -71.26636], + ["2019-11-21T14:37:15", 16.49413, -71.26833], + ["2019-11-21T15:07:27", 16.48982, -71.26938], + ["2019-11-21T15:37:00", 16.48546, -71.26987], + ["2019-11-21T16:07:27", 16.48042, -71.27023], + ["2019-11-21T16:36:44", 16.47471, -71.27042], + ["2019-11-21T17:06:26", 16.46905, -71.27106], + ["2019-11-21T17:36:26", 16.46326, -71.27158], + ["2019-11-22T02:33:58", 16.35781, -71.33694], + ["2019-11-22T05:03:58", 16.32455, -71.35849], + ["2019-11-22T06:34:29", 16.30142, -71.37336], + ["2019-11-22T07:04:29", 16.29451, -71.37842], + ["2019-11-22T07:34:29", 16.28704, -71.38442], + ["2019-11-22T08:03:26", 16.27993, -71.39067], + ["2019-11-22T08:33:26", 16.27311, -71.39727], + ["2019-11-22T10:33:30", 16.24821, -71.43295], + ["2019-11-22T11:02:13", 16.24298, -71.4436], + ["2019-11-22T13:02:25", 16.22362, -71.49061], + ["2019-11-22T13:31:58", 16.21958, -71.50189], + ["2019-11-22T14:02:25", 16.21598, -71.51412], + ["2019-11-22T14:31:13", 16.21317, -71.52545], + ["2019-11-22T15:01:13", 16.20978, -71.53652], + ["2019-11-22T15:31:13", 16.20665, -71.54648], + ["2019-11-22T17:30:45", 16.19428, -71.5882], + ["2019-11-22T21:51:52", 16.17656, -71.67252], + ["2019-11-23T03:29:09", 16.18515, -71.75732], + ["2019-11-23T05:58:36", 16.18759, -71.78821], + ["2019-11-23T06:28:24", 16.18846, -71.79506], + ["2019-11-23T06:58:24", 16.1894, -71.80132], + ["2019-11-23T10:28:28", 16.19755, -71.84576], + ["2019-11-23T10:58:28", 16.19898, -71.85002], + ["2019-11-23T11:28:28", 16.19941, -71.85345], + ["2019-11-24T02:23:56", 16.15183, -71.97696], + ["2019-11-24T03:55:58", 16.14405, -71.98826], + ["2019-11-24T04:25:58", 16.14143, -71.99247], + ["2019-11-24T04:55:58", 16.13843, -71.99719], + ["2019-11-24T06:24:25", 16.13059, -72.01123], + ["2019-11-24T07:54:28", 16.11952, -72.03431], + ["2019-11-24T08:54:28", 16.11699, -72.03964], + ["2019-11-24T10:23:28", 16.11038, -72.05692], + ["2019-11-24T10:52:09", 16.1085, -72.06241], + ["2019-11-24T13:53:36", 16.10203, -72.09578], + ["2019-11-24T17:51:07", 16.10366, -72.13943], + ["2019-11-24T18:50:38", 16.10286, -72.15029], + ["2019-11-24T19:20:38", 16.10222, -72.15604], + ["2019-11-24T19:50:38", 16.10171, -72.16162], + ["2019-11-24T21:22:56", 16.09869, -72.18129], + ["2019-11-25T00:49:32", 16.09259, -72.22037], + ["2019-11-25T03:20:05", 16.09448, -72.24745], + ["2019-11-25T03:50:05", 16.09478, -72.25071], + ["2019-11-25T04:20:05", 16.0962, -72.25595], + ["2019-11-25T05:47:58", 16.10027, -72.26478], + ["2019-11-25T06:17:58", 16.10083, -72.26718], + ["2019-11-25T06:47:58", 16.1016, -72.2694], + ["2019-11-25T07:47:24", 16.1018, -72.27506], + ["2019-11-25T08:17:24", 16.1018, -72.2784], + ["2019-11-25T08:47:24", 16.10171, -72.28116], + ["2019-11-25T09:21:01", 16.10064, -72.28528], + ["2019-11-25T10:46:35", 16.10555, -72.29306], + ["2019-11-25T11:16:35", 16.10641, -72.29572], + ["2019-11-25T11:46:35", 16.10637, -72.29931], + ["2019-11-25T12:48:36", 16.10781, -72.30826], + ["2019-11-25T19:14:37", 16.1216, -72.36389], + ["2019-11-25T22:44:46", 16.12028, -72.38324], + ["2019-11-26T03:42:43", 16.11246, -72.42819], + ["2019-11-26T06:14:29", 16.10897, -72.45878], + ["2019-11-26T06:44:29", 16.10781, -72.4648], + ["2019-11-26T07:14:29", 16.10609, -72.47098], + ["2019-11-26T09:43:13", 16.09722, -72.49289], + ["2019-11-26T10:41:14", 16.09206, -72.50111], + ["2019-11-26T11:11:14", 16.08927, -72.50566], + ["2019-11-26T11:41:14", 16.08618, -72.50995], + ["2019-11-26T18:39:47", 16.07989, -72.61133], + ["2019-11-26T21:09:56", 16.08457, -72.65469], + ["2019-11-27T01:38:32", 16.09119, -72.71451], + ["2019-11-27T07:38:30", 16.10108, -72.79755], + ["2019-11-27T19:04:57", 16.13946, -72.96289], + ["2019-11-27T20:51:59", 16.14887, -73.00891], + ["2019-11-27T21:21:59", 16.15007, -73.0132], + ["2019-11-27T21:51:59", 16.15063, -73.01483], + ["2019-11-27T23:03:58", 16.15727, -73.03785], + ["2019-11-27T23:33:58", 16.15963, -73.04679], + ["2019-11-28T00:03:58", 16.16268, -73.05606], + ["2019-11-28T01:33:47", 16.17181, -73.08114], + ["2019-11-28T02:02:22", 16.17514, -73.08969], + ["2019-11-28T02:33:47", 16.17872, -73.09866], + ["2019-11-28T03:33:31", 16.18468, -73.11487], + ["2019-11-28T04:32:30", 16.19275, -73.12945], + ["2019-11-28T05:02:30", 16.1964, -73.13641], + ["2019-11-28T05:32:30", 16.20103, -73.14319], + ["2019-11-28T08:31:30", 16.21829, -73.17695], + ["2019-11-28T09:00:44", 16.2205, -73.18344], + ["2019-11-28T09:31:30", 16.22284, -73.19128], + ["2019-11-28T17:30:29", 16.31126, -73.31067], + ["2019-11-28T19:57:58", 16.34006, -73.34564], + ["2019-11-28T22:27:27", 16.368, -73.37924], + ["2019-11-29T04:56:28", 16.45925, -73.45703], + ["2019-11-29T07:56:32", 16.49853, -73.47159], + ["2019-11-29T08:24:58", 16.50372, -73.47281], + ["2019-11-29T08:54:30", 16.50902, -73.47389], + ["2019-11-29T09:24:30", 16.51438, -73.47501], + ["2019-11-29T09:54:26", 16.52035, -73.47633], + ["2019-11-29T10:24:26", 16.52537, -73.47727], + ["2019-11-29T10:54:26", 16.53061, -73.47864], + ["2019-11-29T11:24:57", 16.53644, -73.48153], + ["2019-11-29T11:54:57", 16.54249, -73.48471], + ["2019-11-29T14:23:22", 16.5661, -73.49838], + ["2019-11-29T19:22:27", 16.59858, -73.54456], + ["2019-11-29T19:52:05", 16.60222, -73.55206], + ["2019-11-29T20:22:05", 16.60565, -73.55884], + ["2019-11-29T20:51:35", 16.60946, -73.56583], + ["2019-11-29T21:21:35", 16.61246, -73.57192], + ["2019-11-29T21:51:57", 16.61543, -73.57852], + ["2019-11-29T22:21:57", 16.61822, -73.58496], + ["2019-11-29T22:51:57", 16.62019, -73.59088], + ["2019-11-30T01:20:47", 16.62914, -73.61618], + ["2019-11-30T02:20:22", 16.63195, -73.62643], + ["2019-11-30T02:50:22", 16.63367, -73.63227], + ["2019-11-30T03:20:22", 16.63509, -73.63827], + ["2019-11-30T03:50:13", 16.63732, -73.64488], + ["2019-11-30T04:20:13", 16.63959, -73.65012], + ["2019-11-30T06:51:13", 16.66144, -73.67652], + ["2019-11-30T07:21:13", 16.66693, -73.68098], + ["2019-11-30T07:51:13", 16.67298, -73.6857], + ["2019-11-30T09:19:33", 16.68865, -73.69705], + ["2019-11-30T09:50:58", 16.69361, -73.70153], + ["2019-11-30T10:19:01", 16.69808, -73.7055], + ["2019-11-30T10:49:01", 16.70319, -73.70928], + ["2019-11-30T11:19:01", 16.70813, -73.71245], + ["2019-11-30T13:49:04", 16.73295, -73.72488], + ["2019-11-30T14:50:45", 16.74393, -73.73105], + ["2019-11-30T19:16:57", 16.78698, -73.77237], + ["2019-11-30T20:47:47", 16.8012, -73.78979], + ["2019-11-30T21:16:25", 16.80666, -73.79555], + ["2019-12-01T00:45:20", 16.84977, -73.82522], + ["2019-12-01T01:15:57", 16.85702, -73.82867], + ["2019-12-01T01:45:20", 16.8647, -73.83199], + ["2019-12-01T09:43:38", 16.9956, -73.88357], + ["2019-12-01T10:13:22", 17.00287, -73.88804], + ["2019-12-01T10:43:22", 17.00879, -73.89053], + ["2019-12-01T11:13:14", 17.0148, -73.89306], + ["2019-12-01T11:43:14", 17.02081, -73.89624], + ["2019-12-01T12:43:07", 17.02901, -73.90085], + ["2019-12-01T13:14:00", 17.03486, -73.90463], + ["2019-12-01T15:13:40", 17.06397, -73.9194], + ["2019-12-01T15:43:58", 17.08052, -73.92665], + ["2019-12-01T16:43:58", 17.08842, -73.92957], + ["2019-12-02T12:10:26", 17.38467, -74.14923], + ["2019-12-02T13:38:37", 17.40397, -74.16907], + ["2019-12-02T21:51:40", 17.51314, -74.25909], + ["2019-12-03T01:05:51", 17.55945, -74.30261], + ["2019-12-03T09:36:02", 17.62869, -74.37921], + ["2019-12-03T10:33:55", 17.63698, -74.38968], + ["2019-12-03T11:33:44", 17.64655, -74.40079], + ["2019-12-03T13:03:23", 17.66383, -74.41797], + ["2019-12-03T16:32:46", 17.69172, -74.45929], + ["2019-12-03T17:03:28", 17.69526, -74.46912], + ["2019-12-03T17:32:31", 17.69863, -74.47913], + ["2019-12-03T18:03:01", 17.70256, -74.48941], + ["2019-12-03T18:33:01", 17.70664, -74.49834], + ["2019-12-03T19:03:01", 17.71085, -74.50641], + ["2019-12-03T21:02:49", 17.73063, -74.53992], + ["2019-12-03T21:34:02", 17.73977, -74.55522], + ["2019-12-03T22:04:02", 17.74239, -74.55892], + ["2019-12-03T22:34:02", 17.74977, -74.5687], + ["2019-12-03T23:01:12", 17.75698, -74.57693], + ["2019-12-03T23:31:58", 17.76434, -74.5857], + ["2019-12-04T00:01:58", 17.77103, -74.59394], + ["2019-12-04T00:31:58", 17.77785, -74.60269], + ["2019-12-04T02:31:28", 17.79931, -74.63638], + ["2019-12-04T03:03:04", 17.80593, -74.64545], + ["2019-12-04T03:33:04", 17.81323, -74.65378], + ["2019-12-04T04:03:04", 17.82156, -74.66159], + ["2019-12-04T06:00:30", 17.85167, -74.68859], + ["2019-12-04T11:59:00", 17.93915, -74.76575], + ["2019-12-04T12:27:57", 17.94527, -74.77118], + ["2019-12-04T12:57:57", 17.95166, -74.7771], + ["2019-12-04T13:27:57", 17.95818, -74.78268], + ["2019-12-04T13:59:30", 17.96538, -74.7887], + ["2019-12-04T18:57:07", 18.03503, -74.85226], + ["2019-12-04T20:26:31", 18.0463, -74.87613], + ["2019-12-04T21:26:10", 18.06159, -74.90004], + ["2019-12-04T21:56:10", 18.06223, -74.90107], + ["2019-12-04T22:26:10", 18.06755, -74.90845], + ["2019-12-05T03:27:55", 18.1342, -74.9957], + ["2019-12-05T04:24:52", 18.15054, -75.0123], + ["2019-12-05T04:54:52", 18.15951, -75.02131], + ["2019-12-05T05:24:52", 18.16814, -75.03015], + ["2019-12-05T06:55:29", 18.19654, -75.05871], + ["2019-12-05T10:23:28", 18.24939, -75.11615], + ["2019-12-05T12:53:29", 18.28652, -75.15508], + ["2019-12-05T13:23:29", 18.2942, -75.16298], + ["2019-12-05T13:53:29", 18.3024, -75.17139], + ["2019-12-05T14:53:29", 18.31734, -75.18857], + ["2019-12-05T15:22:13", 18.32445, -75.19735], + ["2019-12-05T15:52:13", 18.33187, -75.20722], + ["2019-12-05T16:22:13", 18.33908, -75.21648], + ["2019-12-05T16:52:28", 18.34699, -75.2262], + ["2019-12-05T17:22:28", 18.3548, -75.23531], + ["2019-12-05T17:52:28", 18.36343, -75.24475], + ["2019-12-05T18:21:48", 18.37178, -75.25381], + ["2019-12-05T18:53:01", 18.38015, -75.26376], + ["2019-12-05T20:52:00", 18.41295, -75.30728], + ["2019-12-06T01:20:18", 18.48621, -75.39661], + ["2019-12-06T01:51:28", 18.49431, -75.40703], + ["2019-12-06T03:51:13", 18.52563, -75.44382], + ["2019-12-06T04:21:13", 18.5325, -75.4524], + ["2019-12-06T04:51:13", 18.53958, -75.4621], + ["2019-12-06T05:20:28", 18.54654, -75.47189], + ["2019-12-06T05:50:28", 18.55323, -75.4821], + ["2019-12-06T06:20:28", 18.56053, -75.49274], + ["2019-12-06T07:48:35", 18.57969, -75.52343], + ["2019-12-06T08:18:35", 18.5851, -75.53348], + ["2019-12-06T08:48:35", 18.58931, -75.54266], + ["2019-12-06T14:17:52", 18.62414, -75.63602], + ["2019-12-06T15:50:58", 18.63323, -75.66132], + ["2019-12-06T16:17:29", 18.63589, -75.66895], + ["2019-12-06T21:52:33", 18.66903, -75.7774], + ["2019-12-06T23:45:51", 18.67935, -75.81641], + ["2019-12-07T00:45:40", 18.68411, -75.83575], + ["2019-12-07T04:14:54", 18.68803, -75.9032], + ["2019-12-07T06:44:17", 18.68742, -75.95416], + ["2019-12-07T08:14:36", 18.68978, -75.97745], + ["2019-12-07T08:44:36", 18.69034, -75.98414], + ["2019-12-07T09:14:36", 18.69124, -75.99151], + ["2019-12-07T10:43:25", 18.69341, -76.00937], + ["2019-12-07T13:43:31", 18.70794, -76.03482], + ["2019-12-07T15:12:28", 18.71393, -76.04965], + ["2019-12-07T19:13:59", 18.73096, -76.09875], + ["2019-12-07T19:42:05", 18.73293, -76.10558], + ["2019-12-07T20:12:05", 18.7352, -76.11322], + ["2019-12-07T20:42:05", 18.73735, -76.12112], + ["2019-12-07T22:42:30", 18.74779, -76.15521], + ["2019-12-08T01:39:39", 18.76402, -76.20607], + ["2019-12-08T02:09:39", 18.76672, -76.21422], + ["2019-12-08T02:39:39", 18.76917, -76.22186], + ["2019-12-08T08:09:00", 18.78365, -76.30228], + ["2019-12-08T08:38:13", 18.78349, -76.31137], + ["2019-12-08T09:07:57", 18.78348, -76.32109], + ["2019-12-08T09:37:57", 18.78279, -76.33087], + ["2019-12-08T10:37:43", 18.7811, -76.35348], + ["2019-12-08T12:09:24", 18.78072, -76.39124], + ["2019-12-08T18:35:33", 18.7712, -76.57837], + ["2019-12-08T19:07:38", 18.77037, -76.59439], + ["2019-12-08T21:04:56", 18.76431, -76.64963], + ["2019-12-08T21:34:36", 18.76146, -76.67174], + ["2019-12-08T22:04:36", 18.7609, -76.67603], + ["2019-12-08T22:34:31", 18.7595, -76.68917], + ["2019-12-09T05:32:51", 18.74268, -76.86386], + ["2019-12-09T09:02:12", 18.73673, -76.94002], + ["2019-12-09T09:32:28", 18.73542, -76.95169], + ["2019-12-09T10:01:55", 18.73415, -76.9632], + ["2019-12-09T10:32:58", 18.73261, -76.97548], + ["2019-12-09T11:01:47", 18.73218, -76.98672], + ["2019-12-09T11:32:58", 18.73162, -76.99866], + ["2019-12-09T12:02:28", 18.73079, -77.00982], + ["2019-12-09T12:32:28", 18.72929, -77.02185], + ["2019-12-09T14:32:59", 18.72177, -77.06985], + ["2019-12-09T15:31:10", 18.71571, -77.09547], + ["2019-12-09T16:01:10", 18.71309, -77.1074], + ["2019-12-09T16:31:10", 18.71, -77.12027], + ["2019-12-09T17:02:28", 18.70768, -77.13375], + ["2019-12-09T17:32:28", 18.70571, -77.14722], + ["2019-12-09T18:02:28", 18.70386, -77.16173], + ["2019-12-09T21:29:52", 18.70105, -77.25259], + ["2019-12-09T21:59:46", 18.70266, -77.26571], + ["2019-12-09T22:29:46", 18.70373, -77.27746], + ["2019-12-09T23:00:59", 18.70469, -77.28995], + ["2019-12-10T00:00:30", 18.70608, -77.31331], + ["2019-12-10T00:30:30", 18.70651, -77.32395], + ["2019-12-10T01:00:30", 18.70677, -77.33553], + ["2019-12-10T04:00:42", 18.70585, -77.39897], + ["2019-12-10T04:30:42", 18.70542, -77.40978], + ["2019-12-10T05:00:42", 18.70478, -77.42197], + ["2019-12-10T05:28:22", 18.70457, -77.4328], + ["2019-12-10T05:58:17", 18.70456, -77.44455], + ["2019-12-10T06:58:00", 18.70564, -77.46919], + ["2019-12-10T07:28:00", 18.70624, -77.48026], + ["2019-12-10T08:57:22", 18.70913, -77.51572], + ["2019-12-10T10:29:25", 18.71347, -77.55197], + ["2019-12-10T11:26:40", 18.71621, -77.57504], + ["2019-12-10T11:58:29", 18.71791, -77.58752], + ["2019-12-10T12:26:40", 18.72033, -77.59829], + ["2019-12-10T15:57:36", 18.73226, -77.67599], + ["2019-12-10T16:29:01", 18.73353, -77.68616], + ["2019-12-10T16:59:01", 18.73507, -77.69817], + ["2019-12-10T18:55:15", 18.74249, -77.74038], + ["2019-12-10T19:28:29", 18.74433, -77.75256], + ["2019-12-10T19:55:15", 18.74614, -77.7627], + ["2019-12-10T21:56:06", 18.75303, -77.80983], + ["2019-12-10T23:24:27", 18.75626, -77.84147], + ["2019-12-10T23:54:27", 18.75841, -77.85348], + ["2019-12-11T00:24:27", 18.76021, -77.86362], + ["2019-12-11T01:53:54", 18.76873, -77.89456], + ["2019-12-11T02:23:36", 18.77218, -77.90468], + ["2019-12-11T02:53:36", 18.77548, -77.91515], + ["2019-12-11T03:23:36", 18.77818, -77.92468], + ["2019-12-11T03:53:25", 18.78049, -77.93411], + ["2019-12-11T04:23:25", 18.78212, -77.94287], + ["2019-12-11T06:52:24", 18.78814, -77.98305], + ["2019-12-11T07:22:24", 18.78921, -77.99044], + ["2019-12-11T07:52:24", 18.79024, -77.99799], + ["2019-12-11T08:23:29", 18.79177, -78.00637], + ["2019-12-11T11:51:46", 18.80818, -78.0635], + ["2019-12-11T12:23:12", 18.81088, -78.07135], + ["2019-12-11T14:24:04", 18.81923, -78.10996], + ["2019-12-11T15:24:04", 18.82073, -78.11767], + ["2019-12-11T15:51:02", 18.82143, -78.12466], + ["2019-12-11T16:21:02", 18.8219, -78.13248], + ["2019-12-11T16:51:02", 18.8225, -78.14063], + ["2019-12-11T19:20:27", 18.82438, -78.18095], + ["2019-12-11T19:50:27", 18.82464, -78.1879], + ["2019-12-11T20:20:27", 18.82515, -78.19562], + ["2019-12-11T22:18:15", 18.82525, -78.22669], + ["2019-12-11T22:48:15", 18.82504, -78.23347], + ["2019-12-11T23:18:15", 18.82495, -78.24093], + ["2019-12-11T23:49:04", 18.82507, -78.2486], + ["2019-12-12T00:17:49", 18.82497, -78.25576], + ["2019-12-12T00:47:49", 18.82506, -78.2634], + ["2019-12-12T01:17:49", 18.82485, -78.27078], + ["2019-12-12T03:16:52", 18.82195, -78.29994], + ["2019-12-12T03:46:52", 18.82075, -78.30655], + ["2019-12-12T04:18:08", 18.81966, -78.31336], + ["2019-12-12T04:48:08", 18.81854, -78.3204], + ["2019-12-12T06:16:27", 18.81684, -78.33902], + ["2019-12-12T06:45:57", 18.81679, -78.34591], + ["2019-12-12T07:15:57", 18.81692, -78.35097], + ["2019-12-12T07:45:57", 18.81688, -78.35681], + ["2019-12-12T08:46:59", 18.81777, -78.36851], + ["2019-12-12T09:16:59", 18.81876, -78.37409], + ["2019-12-12T09:46:59", 18.8197, -78.37967], + ["2019-12-12T10:15:32", 18.82043, -78.38431], + ["2019-12-12T14:45:29", 18.82424, -78.42355], + ["2019-12-12T17:13:53", 18.82612, -78.44556], + ["2019-12-12T22:42:20", 18.84623, -78.49628], + ["2019-12-12T23:12:04", 18.84925, -78.50021], + ["2019-12-12T23:41:51", 18.85251, -78.50406], + ["2019-12-13T00:11:51", 18.85564, -78.50732], + ["2019-12-13T00:42:44", 18.85836, -78.51049], + ["2019-12-13T01:43:29", 18.86226, -78.51613], + ["2019-12-13T02:41:13", 18.86468, -78.52085], + ["2019-12-13T03:11:13", 18.86554, -78.52282], + ["2019-12-13T03:41:13", 18.86648, -78.52454], + ["2019-12-13T06:11:33", 18.86748, -78.53541], + ["2019-12-13T06:41:33", 18.86765, -78.53747], + ["2019-12-13T07:11:33", 18.86774, -78.5397], + ["2019-12-13T13:10:36", 18.884, -78.56665], + ["2019-12-13T13:39:59", 18.88652, -78.56854], + ["2019-12-13T14:09:59", 18.88909, -78.57034], + ["2019-12-13T14:40:12", 18.89127, -78.57207], + ["2019-12-13T15:10:12", 18.89324, -78.57404], + ["2019-12-13T17:07:22", 18.90075, -78.58466], + ["2019-12-13T17:37:22", 18.90255, -78.58826], + ["2019-12-13T18:07:22", 18.90414, -78.59195], + ["2019-12-13T21:36:50", 18.91664, -78.62137], + ["2019-12-13T22:08:58", 18.91874, -78.62627], + ["2019-12-13T22:36:33", 18.92017, -78.63039], + ["2019-12-14T00:06:10", 18.92644, -78.64324], + ["2019-12-14T01:07:06", 18.93154, -78.6515], + ["2019-12-14T01:35:42", 18.93394, -78.65558], + ["2019-12-14T02:07:06", 18.93621, -78.65991], + ["2019-12-14T02:35:25", 18.93855, -78.66403], + ["2019-12-14T03:06:17", 18.94112, -78.66827], + ["2019-12-14T05:06:12", 18.94915, -78.68549], + ["2019-12-14T06:05:01", 18.95265, -78.6932], + ["2019-12-14T06:35:01", 18.95462, -78.69707], + ["2019-12-14T07:05:01", 18.95681, -78.70102], + ["2019-12-14T07:34:24", 18.95876, -78.70499], + ["2019-12-14T08:04:10", 18.96144, -78.70872], + ["2019-12-14T08:34:10", 18.96371, -78.7131], + ["2019-12-14T09:03:56", 18.96603, -78.71775], + ["2019-12-14T09:33:56", 18.96848, -78.72238], + ["2019-12-14T10:04:08", 18.97148, -78.72732], + ["2019-12-14T10:33:47", 18.97472, -78.73196], + ["2019-12-14T11:04:25", 18.97859, -78.73681], + ["2019-12-14T11:33:56", 18.98306, -78.74164], + ["2019-12-14T12:03:56", 18.988, -78.74619], + ["2019-12-14T12:33:21", 18.99269, -78.75055], + ["2019-12-14T13:03:06", 18.99712, -78.75479], + ["2019-12-14T13:33:06", 19.00133, -78.75891], + ["2019-12-14T14:02:50", 19.00581, -78.76296], + ["2019-12-14T14:32:50", 19.01049, -78.76682], + ["2019-12-14T16:02:29", 19.02593, -78.77753], + ["2019-12-14T16:32:16", 19.03049, -78.7803], + ["2019-12-14T17:02:29", 19.03503, -78.78259], + ["2019-12-14T17:32:29", 19.03939, -78.78462], + ["2019-12-14T18:02:29", 19.04377, -78.78616], + ["2019-12-14T19:01:54", 19.0523, -78.78783], + ["2019-12-14T19:31:54", 19.05586, -78.78809], + ["2019-12-14T20:01:54", 19.05925, -78.78818], + ["2019-12-14T20:31:27", 19.06268, -78.78798], + ["2019-12-14T21:01:27", 19.06581, -78.78798], + ["2019-12-14T21:30:56", 19.06815, -78.78885], + ["2019-12-14T21:47:00", 19.06918, -78.78943], + ["2019-12-14T22:30:45", 19.07152, -78.79223], + ["2019-12-14T23:00:45", 19.07268, -78.79446], + ["2019-12-14T23:30:45", 19.07354, -78.79703], + ["2019-12-15T11:28:00", 19.0773, -78.95645], + ["2019-12-15T12:58:26", 19.08214, -78.98322], + ["2019-12-15T13:28:27", 19.08398, -78.99198], + ["2019-12-15T13:58:27", 19.08552, -79.00134], + ["2019-12-15T15:27:19", 19.08964, -79.02891], + ["2019-12-15T15:57:19", 19.09084, -79.03731], + ["2019-12-15T16:27:19", 19.09148, -79.04642], + ["2019-12-15T18:26:59", 19.09233, -79.08005], + ["2019-12-15T19:26:45", 19.09164, -79.09665], + ["2019-12-15T20:29:58", 19.09074, -79.11319], + ["2019-12-15T20:56:16", 19.0905, -79.11987], + ["2019-12-16T00:27:06", 19.08924, -79.16674], + ["2019-12-16T03:24:47", 19.08463, -79.20556], + ["2019-12-16T03:54:31", 19.08229, -79.21311], + ["2019-12-16T04:24:31", 19.08122, -79.22075], + ["2019-12-16T04:54:31", 19.08023, -79.22787], + ["2019-12-16T06:24:13", 19.07656, -79.24733], + ["2019-12-16T06:54:13", 19.07562, -79.25342], + ["2019-12-16T07:24:13", 19.07459, -79.25857], + ["2019-12-16T07:54:06", 19.07425, -79.26428], + ["2019-12-16T09:53:42", 19.07155, -79.28787], + ["2019-12-16T10:23:42", 19.07031, -79.29371], + ["2019-12-16T10:53:42", 19.06928, -79.29929], + ["2019-12-16T11:24:29", 19.06753, -79.30504], + ["2019-12-16T12:24:28", 19.06388, -79.31659], + ["2019-12-16T13:24:30", 19.06015, -79.3287], + ["2019-12-16T13:52:31", 19.05855, -79.33584], + ["2019-12-16T14:22:31", 19.05739, -79.34331], + ["2019-12-16T14:52:31", 19.0558, -79.35052], + ["2019-12-16T15:52:22", 19.05335, -79.36539], + ["2019-12-16T16:22:16", 19.05208, -79.37343], + ["2019-12-16T16:52:16", 19.05122, -79.38106], + ["2019-12-16T22:20:47", 19.07195, -79.4678], + ["2019-12-16T23:20:33", 19.08129, -79.48303], + ["2019-12-16T23:52:58", 19.08673, -79.49112], + ["2019-12-17T00:20:33", 19.09129, -79.49805], + ["2019-12-17T02:21:40", 19.11223, -79.52558], + ["2019-12-17T02:51:40", 19.11635, -79.53125], + ["2019-12-17T03:21:40", 19.12064, -79.5376], + ["2019-12-17T03:49:39", 19.12389, -79.54294], + ["2019-12-17T05:19:30", 19.1329, -79.55838], + ["2019-12-17T06:51:58", 19.13832, -79.57315], + ["2019-12-17T14:48:29", 19.12621, -79.61478], + ["2019-12-17T16:49:13", 19.11465, -79.63146], + ["2019-12-17T18:45:46", 19.10374, -79.6478], + ["2019-12-17T21:46:26", 19.09043, -79.67477], + ["2019-12-18T01:14:14", 19.08047, -79.70157], + ["2019-12-18T03:43:25", 19.07648, -79.71597], + ["2019-12-18T04:13:25", 19.07528, -79.71872], + ["2019-12-18T04:43:25", 19.07356, -79.72104], + ["2019-12-18T05:43:03", 19.06797, -79.72348], + ["2019-12-18T06:14:02", 19.0639, -79.72467], + ["2019-12-18T06:44:02", 19.06047, -79.72664], + ["2019-12-18T07:14:02", 19.05704, -79.72826], + ["2019-12-18T07:43:28", 19.05332, -79.72977], + ["2019-12-18T08:13:28", 19.0498, -79.73166], + ["2019-12-18T11:12:05", 19.0277, -79.73959], + ["2019-12-18T11:41:41", 19.0235, -79.74063], + ["2019-12-18T12:11:41", 19.02024, -79.74097], + ["2019-12-18T12:42:29", 19.01665, -79.74132], + ["2019-12-18T13:12:29", 19.013, -79.74149], + ["2019-12-18T13:43:43", 19.00969, -79.74176], + ["2019-12-18T14:13:43", 19.00583, -79.74176], + ["2019-12-18T18:13:33", 18.97609, -79.7486], + ["2019-12-18T18:43:33", 18.97244, -79.74997], + ["2019-12-18T19:13:33", 18.96858, -79.75229], + ["2019-12-18T19:39:43", 18.96573, -79.75415], + ["2019-12-19T00:38:23", 18.94, -79.7784], + ["2019-12-19T01:08:19", 18.93766, -79.78079], + ["2019-12-19T03:07:57", 18.92975, -79.78738], + ["2019-12-19T03:37:33", 18.92741, -79.78769], + ["2019-12-19T04:07:33", 18.92471, -79.78769], + ["2019-12-19T04:37:33", 18.92171, -79.7876], + ["2019-12-19T06:37:06", 18.90757, -79.78529], + ["2019-12-19T07:07:59", 18.90377, -79.78448], + ["2019-12-19T07:37:06", 18.89946, -79.78366], + ["2019-12-19T08:06:50", 18.89529, -79.78292], + ["2019-12-19T08:36:50", 18.89164, -79.78259], + ["2019-12-19T09:36:15", 18.88401, -79.78179], + ["2019-12-19T10:06:15", 18.87998, -79.78136], + ["2019-12-19T10:36:15", 18.87573, -79.7811], + ["2019-12-19T11:08:02", 18.87098, -79.78055], + ["2019-12-19T11:36:00", 18.86678, -79.77988], + ["2019-12-19T12:05:52", 18.86196, -79.77872], + ["2019-12-19T17:06:27", 18.8071, -79.77764], + ["2019-12-19T20:36:27", 18.76753, -79.80676], + ["2019-12-19T21:33:40", 18.75756, -79.81903], + ["2019-12-19T22:33:27", 18.74772, -79.83392], + ["2019-12-20T00:02:51", 18.73298, -79.85944], + ["2019-12-20T00:32:51", 18.72804, -79.8687], + ["2019-12-20T01:02:51", 18.72349, -79.87781], + ["2019-12-20T01:32:29", 18.71847, -79.88802], + ["2019-12-20T02:02:29", 18.71409, -79.8966], + ["2019-12-20T02:32:29", 18.70881, -79.90561], + ["2019-12-20T03:02:18", 18.70261, -79.91454], + ["2019-12-20T03:32:18", 18.69664, -79.92252], + ["2019-12-20T04:02:21", 18.68994, -79.93111], + ["2019-12-20T04:32:21", 18.68307, -79.93686], + ["2019-12-20T05:32:53", 18.66833, -79.94816], + ["2019-12-20T06:02:53", 18.66099, -79.95245], + ["2019-12-20T06:32:53", 18.65254, -79.9569], + ["2019-12-20T07:01:35", 18.64359, -79.96051], + ["2019-12-20T07:31:58", 18.63312, -79.9646], + ["2019-12-20T08:31:40", 18.61116, -79.97526], + ["2019-12-20T09:01:40", 18.59829, -79.98085], + ["2019-12-20T09:31:40", 18.58378, -79.98557], + ["2019-12-20T10:00:47", 18.56961, -79.98923], + ["2019-12-20T11:00:33", 18.54093, -79.99719], + ["2019-12-20T18:28:36", 18.36068, -80.05734], + ["2019-12-20T19:28:29", 18.34148, -80.06464], + ["2019-12-20T21:57:51", 18.2919, -80.08691], + ["2019-12-21T00:28:27", 18.24008, -80.11069], + ["2019-12-21T05:55:55", 18.13484, -80.18478], + ["2019-12-21T06:26:58", 18.12621, -80.19315], + ["2019-12-21T08:55:04", 18.08528, -80.23428], + ["2019-12-21T09:24:53", 18.07719, -80.2431], + ["2019-12-21T09:55:56", 18.06906, -80.25217], + ["2019-12-21T13:23:51", 18.02212, -80.32022], + ["2019-12-21T15:24:11", 18.00014, -80.35903], + ["2019-12-21T15:54:11", 17.99559, -80.36864], + ["2019-12-21T16:24:11", 17.99061, -80.37851], + ["2019-12-21T16:53:01", 17.98607, -80.38791], + ["2019-12-21T17:52:51", 17.97747, -80.4077], + ["2019-12-22T13:18:29", 17.8785, -80.76587], + ["2019-12-22T15:18:31", 17.88511, -80.80085], + ["2019-12-22T15:48:31", 17.88683, -80.80866], + ["2019-12-22T16:18:31", 17.88949, -80.81699], + ["2019-12-22T20:47:57", 17.9193, -80.88959], + ["2019-12-22T23:16:26", 17.9361, -80.92953], + ["2019-12-22T23:46:26", 17.93898, -80.93691], + ["2019-12-23T00:16:26", 17.94164, -80.94403], + ["2019-12-23T03:17:24", 17.9559, -80.98878], + ["2019-12-23T03:47:24", 17.9583, -80.99677], + ["2019-12-23T04:17:24", 17.96109, -81.00381], + ["2019-12-23T06:45:26", 17.97738, -81.04031], + ["2019-12-23T07:14:28", 17.98096, -81.04718], + ["2019-12-23T07:44:28", 17.9862, -81.05439], + ["2019-12-23T08:14:28", 17.99079, -81.06091], + ["2019-12-23T09:14:06", 17.99866, -81.07415], + ["2019-12-23T09:44:06", 18.00222, -81.08033], + ["2019-12-23T10:14:06", 18.00552, -81.08694], + ["2019-12-23T10:44:54", 18.00854, -81.0935], + ["2019-12-23T11:14:31", 18.0113, -81.09981], + ["2019-12-23T11:44:31", 18.01413, -81.10745], + ["2019-12-23T12:44:30", 18.02095, -81.12072], + ["2019-12-23T14:12:53", 18.03094, -81.14178], + ["2019-12-23T14:43:29", 18.03483, -81.14939], + ["2019-12-23T15:12:42", 18.03843, -81.15646], + ["2019-12-23T15:43:29", 18.04234, -81.16415], + ["2019-12-23T16:12:30", 18.04605, -81.17175], + ["2019-12-23T18:11:54", 18.06504, -81.20325], + ["2019-12-23T18:41:55", 18.07044, -81.21039], + ["2019-12-23T19:11:55", 18.07598, -81.21717], + ["2019-12-23T19:41:55", 18.0822, -81.22369], + ["2019-12-23T20:11:21", 18.08827, -81.22955], + ["2019-12-23T23:42:05", 18.12977, -81.26047], + ["2019-12-24T01:40:09", 18.15177, -81.27231], + ["2019-12-24T02:10:09", 18.15619, -81.27481], + ["2019-12-24T02:40:09", 18.16108, -81.27746], + ["2019-12-24T12:08:33", 18.2053, -81.3096], + ["2019-12-24T12:37:24", 18.20511, -81.31147], + ["2019-12-24T13:07:24", 18.20438, -81.31336], + ["2019-12-24T13:37:24", 18.20395, -81.31473], + ["2019-12-24T14:37:08", 18.20288, -81.31833], + ["2019-12-24T15:07:08", 18.20172, -81.31995], + ["2019-12-24T15:37:08", 18.20043, -81.32192], + ["2019-12-24T22:35:00", 18.18589, -81.36255], + ["2019-12-25T13:31:05", 18.22164, -81.49887], + ["2019-12-25T15:03:28", 18.21968, -81.52078], + ["2019-12-25T16:00:31", 18.21635, -81.53568], + ["2019-12-25T17:00:25", 18.2114, -81.5517], + ["2019-12-25T17:30:03", 18.20788, -81.56035], + ["2019-12-25T18:00:03", 18.20445, -81.56722], + ["2019-12-25T18:30:03", 18.2002, -81.57477], + ["2019-12-25T20:00:58", 18.18505, -81.59822], + ["2019-12-25T20:29:48", 18.17958, -81.60599], + ["2019-12-25T21:00:58", 18.17338, -81.61453], + ["2019-12-25T21:59:59", 18.1626, -81.63048], + ["2019-12-25T22:29:59", 18.15771, -81.63856], + ["2019-12-25T22:59:59", 18.15308, -81.6474], + ["2019-12-26T00:28:55", 18.14197, -81.67171], + ["2019-12-26T00:58:51", 18.13888, -81.6799], + ["2019-12-26T06:57:30", 18.13091, -81.759], + ["2019-12-26T07:28:30", 18.13132, -81.76544], + ["2019-12-26T07:58:28", 18.13143, -81.77197], + ["2019-12-26T08:28:28", 18.13173, -81.77927], + ["2019-12-26T15:55:43", 18.1552, -81.87054], + ["2019-12-26T16:57:29", 18.1582, -81.88409], + ["2019-12-26T17:25:05", 18.15964, -81.88952], + ["2019-12-26T18:54:33", 18.1631, -81.9074], + ["2019-12-26T19:25:58", 18.16423, -81.91318], + ["2019-12-26T19:54:33", 18.16486, -81.91873], + ["2019-12-27T05:22:17", 18.1739, -82.04407], + ["2019-12-27T08:55:10", 18.17275, -82.10217], + ["2019-12-27T12:52:59", 18.16036, -82.1765], + ["2019-12-27T13:22:59", 18.15839, -82.18612], + ["2019-12-27T13:52:59", 18.15654, -82.19701], + ["2019-12-27T14:20:54", 18.1547, -82.20663], + ["2019-12-27T15:50:43", 18.14891, -82.23944], + ["2019-12-27T16:50:00", 18.14531, -82.26142], + ["2019-12-27T17:20:00", 18.14346, -82.27292], + ["2019-12-27T17:50:00", 18.14166, -82.28442], + ["2019-12-27T18:19:56", 18.14012, -82.29707], + ["2019-12-27T18:49:56", 18.13909, -82.30916], + ["2019-12-27T19:19:56", 18.13853, -82.32144], + ["2019-12-27T20:47:03", 18.13832, -82.36819], + ["2019-12-27T21:17:03", 18.13841, -82.37643], + ["2019-12-27T21:47:03", 18.13841, -82.37823], + ["2019-12-27T23:19:09", 18.13787, -82.4115], + ["2019-12-28T00:18:54", 18.13751, -82.43082], + ["2019-12-28T00:48:54", 18.13794, -82.43966], + ["2019-12-28T01:18:54", 18.13991, -82.44781], + ["2019-12-28T01:48:27", 18.14128, -82.4562], + ["2019-12-28T02:18:27", 18.14252, -82.46478], + ["2019-12-28T02:47:57", 18.14339, -82.47314], + ["2019-12-28T03:18:07", 18.14337, -82.48135], + ["2019-12-28T03:47:38", 18.1433, -82.48923], + ["2019-12-28T04:47:23", 18.14322, -82.50657], + ["2019-12-28T05:17:23", 18.14331, -82.51524], + ["2019-12-28T05:47:23", 18.14327, -82.52399], + ["2019-12-28T06:17:28", 18.14255, -82.53344], + ["2019-12-28T06:47:28", 18.14173, -82.54194], + ["2019-12-28T07:17:28", 18.14104, -82.55078], + ["2019-12-28T07:46:57", 18.14007, -82.55904], + ["2019-12-28T08:16:57", 18.1387, -82.56702], + ["2019-12-28T08:46:07", 18.1371, -82.57481], + ["2019-12-28T09:16:07", 18.13525, -82.58235], + ["2019-12-28T09:46:07", 18.13345, -82.58905], + ["2019-12-28T10:15:53", 18.1322, -82.59523], + ["2019-12-28T10:45:53", 18.131, -82.6015], + ["2019-12-28T11:15:39", 18.13029, -82.60824], + ["2019-12-28T11:45:39", 18.12909, -82.61511], + ["2019-12-28T13:45:14", 18.12422, -82.65002], + ["2019-12-28T16:14:28", 18.11802, -82.70577], + ["2019-12-28T16:44:28", 18.11652, -82.71787], + ["2019-12-28T17:14:28", 18.11553, -82.73083], + ["2019-12-28T18:43:34", 18.11331, -82.76952], + ["2019-12-28T19:13:34", 18.1128, -82.7836], + ["2019-12-28T19:43:34", 18.11284, -82.79639], + ["2019-12-28T23:14:55", 18.12358, -82.88357], + ["2019-12-28T23:43:57", 18.12493, -82.89321], + ["2019-12-29T00:13:57", 18.12626, -82.90291], + ["2019-12-29T00:43:57", 18.12712, -82.91287], + ["2019-12-29T01:12:56", 18.12795, -82.92186], + ["2019-12-29T01:42:56", 18.12889, -82.93164], + ["2019-12-29T02:13:26", 18.12975, -82.94069], + ["2019-12-29T02:43:26", 18.13082, -82.95013], + ["2019-12-29T03:11:46", 18.13158, -82.95859], + ["2019-12-29T03:41:34", 18.13279, -82.96762], + ["2019-12-29T04:11:34", 18.13412, -82.97595], + ["2019-12-29T05:42:28", 18.13775, -83.00131], + ["2019-12-29T06:41:58", 18.14001, -83.01752], + ["2019-12-29T12:41:27", 18.13863, -83.11053], + ["2019-12-29T13:42:31", 18.13684, -83.12802], + ["2019-12-29T15:10:28", 18.13438, -83.15349], + ["2019-12-29T15:38:56", 18.13408, -83.16179], + ["2019-12-29T16:10:12", 18.13377, -83.17072], + ["2019-12-29T16:38:56", 18.13331, -83.17905], + ["2019-12-29T18:09:29", 18.13402, -83.20536], + ["2019-12-29T18:39:29", 18.13436, -83.21351], + ["2019-12-29T19:09:29", 18.13449, -83.22235], + ["2019-12-29T19:38:03", 18.1349, -83.23047], + ["2019-12-29T20:08:58", 18.13526, -83.23868], + ["2019-12-29T20:38:03", 18.13576, -83.24643], + ["2019-12-29T21:37:45", 18.13699, -83.26166], + ["2019-12-29T22:07:37", 18.13743, -83.26934], + ["2019-12-29T22:37:37", 18.1379, -83.27612], + ["2019-12-29T23:07:22", 18.13876, -83.28372], + ["2019-12-29T23:37:22", 18.13966, -83.29049], + ["2019-12-30T01:07:27", 18.14328, -83.3116], + ["2019-12-30T01:37:27", 18.14478, -83.31787], + ["2019-12-30T02:07:27", 18.14671, -83.32465], + ["2019-12-30T02:36:11", 18.14848, -83.3306], + ["2019-12-30T03:06:11", 18.1505, -83.33695], + ["2019-12-30T03:36:11", 18.15204, -83.34296], + ["2019-12-30T04:06:27", 18.15378, -83.34959], + ["2019-12-30T04:35:47", 18.15561, -83.35599], + ["2019-12-30T05:06:27", 18.15726, -83.36306], + ["2019-12-30T06:04:59", 18.15837, -83.37634], + ["2019-12-30T06:34:59", 18.15837, -83.38243], + ["2019-12-30T07:04:59", 18.15816, -83.38894], + ["2019-12-30T08:35:29", 18.15408, -83.40705], + ["2019-12-30T09:05:29", 18.15142, -83.41271], + ["2019-12-30T09:35:29", 18.14751, -83.41855], + ["2019-12-30T19:33:00", 18.02804, -83.56683], + ["2019-12-30T20:02:03", 18.02416, -83.57505], + ["2019-12-30T20:32:03", 18.01974, -83.58423], + ["2019-12-30T21:01:03", 18.01088, -83.60423], + ["2019-12-30T21:31:03", 18.01011, -83.60629], + ["2019-12-30T22:01:03", 18.00857, -83.61032], + ["2019-12-31T00:30:29", 17.99136, -83.65365], + ["2019-12-31T01:00:00", 17.98825, -83.66199], + ["2019-12-31T01:30:29", 17.98505, -83.67055], + ["2019-12-31T04:58:57", 17.96236, -83.72937], + ["2019-12-31T05:30:26", 17.95977, -83.73743], + ["2019-12-31T06:29:59", 17.95459, -83.75323], + ["2019-12-31T06:58:28", 17.95247, -83.76053], + ["2019-12-31T08:29:57", 17.94495, -83.78403], + ["2019-12-31T09:27:40", 17.93973, -83.79807], + ["2019-12-31T10:27:33", 17.93348, -83.81177], + ["2019-12-31T14:26:45", 17.89731, -83.87177], + ["2019-12-31T15:00:05", 17.89171, -83.88074], + ["2019-12-31T15:30:05", 17.88669, -83.89001], + ["2019-12-31T17:58:35", 17.86037, -83.94064], + ["2019-12-31T19:26:58", 17.84668, -83.97566], + ["2019-12-31T19:56:58", 17.8423, -83.98708], + ["2019-12-31T20:26:58", 17.83758, -84.00031], + ["2019-12-31T21:24:45", 17.82886, -84.02396], + ["2020-01-01T00:24:10", 17.80034, -84.09537], + ["2020-01-01T00:54:10", 17.79592, -84.10756], + ["2020-01-01T01:24:10", 17.79193, -84.11923], + ["2020-01-01T01:53:57", 17.78772, -84.13133], + ["2020-01-01T02:23:57", 17.78407, -84.14239], + ["2020-01-01T05:22:44", 17.76182, -84.20845], + ["2020-01-01T05:52:44", 17.758, -84.21926], + ["2020-01-01T06:22:44", 17.75409, -84.22922], + ["2020-01-01T11:21:43", 17.70269, -84.3219], + ["2020-01-01T12:21:26", 17.69029, -84.33947], + ["2020-01-01T12:52:58", 17.68346, -84.34892], + ["2020-01-01T13:22:58", 17.67719, -84.35776], + ["2020-01-01T13:52:58", 17.67007, -84.3678], + ["2020-01-01T14:20:41", 17.66443, -84.37645], + ["2020-01-01T16:49:40", 17.63671, -84.42398], + ["2020-01-01T20:49:30", 17.61012, -84.53317], + ["2020-01-01T21:19:30", 17.60991, -84.53532], + ["2020-01-01T21:49:30", 17.60978, -84.53644], + ["2020-01-02T02:17:53", 17.6111, -84.6564], + ["2020-01-02T03:17:36", 17.61568, -84.68455], + ["2020-01-02T03:47:36", 17.61856, -84.69862], + ["2020-01-02T04:17:36", 17.62144, -84.71133], + ["2020-01-02T06:47:09", 17.6406, -84.7775], + ["2020-01-02T07:47:03", 17.64867, -84.80194], + ["2020-01-02T09:18:00", 17.65925, -84.83899], + ["2020-01-02T09:48:00", 17.66268, -84.85057], + ["2020-01-02T10:18:00", 17.6665, -84.86337], + ["2020-01-02T11:47:46", 17.6837, -84.91262], + ["2020-01-02T12:47:46", 17.68713, -84.92404], + ["2020-01-02T15:17:00", 17.71384, -84.97949], + ["2020-01-03T01:43:25", 17.84068, -85.20663], + ["2020-01-03T04:12:14", 17.87004, -85.26367], + ["2020-01-03T04:42:14", 17.87686, -85.27585], + ["2020-01-03T05:12:14", 17.88308, -85.28693], + ["2020-01-03T06:11:56", 17.89597, -85.30991], + ["2020-01-03T07:11:45", 17.90919, -85.33157], + ["2020-01-03T07:44:25", 17.91659, -85.34259], + ["2020-01-03T13:10:24", 17.98937, -85.44284], + ["2020-01-03T16:09:49", 18.03568, -85.48978], + ["2020-01-03T16:39:41", 18.04282, -85.49759], + ["2020-01-03T17:10:26", 18.04974, -85.50627], + ["2020-01-03T17:40:26", 18.05549, -85.51416], + ["2020-01-03T18:10:26", 18.06193, -85.52301], + ["2020-01-03T20:10:59", 18.08847, -85.55734], + ["2020-01-03T20:47:25", 18.10965, -85.58065], + ["2020-01-03T21:17:25", 18.11004, -85.58108], + ["2020-01-03T21:47:25", 18.11133, -85.58237], + ["2020-01-03T23:38:20", 18.13609, -85.61035], + ["2020-01-04T02:07:53", 18.16507, -85.65411], + ["2020-01-04T02:37:53", 18.17091, -85.66355], + ["2020-01-04T03:07:53", 18.17619, -85.6723], + ["2020-01-04T04:37:28", 18.19347, -85.6994], + ["2020-01-04T06:36:55", 18.21734, -85.73648], + ["2020-01-04T07:08:59", 18.22441, -85.7463], + ["2020-01-04T07:36:39", 18.23077, -85.75476], + ["2020-01-04T08:06:39", 18.23712, -85.76412], + ["2020-01-04T08:36:18", 18.24347, -85.77415], + ["2020-01-04T09:06:18", 18.24948, -85.78317], + ["2020-01-04T12:35:06", 18.2915, -85.84738], + ["2020-01-04T13:05:06", 18.29734, -85.85509], + ["2020-01-04T13:35:06", 18.30395, -85.86368], + ["2020-01-04T14:05:59", 18.31062, -85.87213], + ["2020-01-04T15:06:30", 18.32329, -85.88855], + ["2020-01-04T19:05:58", 18.38184, -85.94864], + ["2020-01-05T00:32:11", 18.45463, -86.01546], + ["2020-01-05T01:03:16", 18.45903, -86.02039], + ["2020-01-05T06:04:00", 18.46322, -86.06319], + ["2020-01-05T08:31:29", 18.45568, -86.09143], + ["2020-01-05T09:30:27", 18.45305, -86.10278], + ["2020-01-05T10:00:27", 18.45193, -86.10809], + ["2020-01-05T10:30:27", 18.4509, -86.11462], + ["2020-01-05T11:01:35", 18.44961, -86.1232], + ["2020-01-05T14:00:31", 18.4494, -86.1741], + ["2020-01-05T14:29:07", 18.45167, -86.18298], + ["2020-01-05T14:58:50", 18.45369, -86.19426], + ["2020-01-05T15:28:50", 18.45592, -86.20499], + ["2020-01-05T15:58:55", 18.45733, -86.2175], + ["2020-01-05T16:28:55", 18.45939, -86.22951], + ["2020-01-05T16:58:55", 18.46098, -86.23965], + ["2020-01-05T17:30:41", 18.46362, -86.25252], + ["2020-01-05T20:29:59", 18.48576, -86.32495], + ["2020-01-05T21:27:31", 18.49918, -86.35615], + ["2020-01-05T21:57:31", 18.50107, -86.3601], + ["2020-01-05T22:27:31", 18.50678, -86.37152], + ["2020-01-06T00:58:58", 18.53944, -86.42804], + ["2020-01-06T01:28:58", 18.54605, -86.43868], + ["2020-01-06T01:58:58", 18.55283, -86.44992], + ["2020-01-06T04:27:26", 18.58686, -86.49643], + ["2020-01-06T04:57:28", 18.59378, -86.50454], + ["2020-01-06T05:27:28", 18.60146, -86.51245], + ["2020-01-06T06:56:01", 18.62376, -86.53261], + ["2020-01-06T07:25:32", 18.63203, -86.53953], + ["2020-01-06T07:55:32", 18.63954, -86.54468], + ["2020-01-06T08:25:32", 18.64774, -86.55025], + ["2020-01-06T10:24:59", 18.67968, -86.56811], + ["2020-01-06T10:54:59", 18.68788, -86.57241], + ["2020-01-06T11:24:59", 18.69492, -86.57593], + ["2020-01-06T11:55:31", 18.70218, -86.58014], + ["2020-01-06T12:24:33", 18.70944, -86.58494], + ["2020-01-06T12:54:33", 18.71734, -86.58992], + ["2020-01-06T13:24:33", 18.72502, -86.59421], + ["2020-01-06T20:22:51", 18.85048, -86.65475], + ["2020-01-06T20:54:57", 18.86011, -86.65761], + ["2020-01-06T21:46:40", 18.87505, -86.66195], + ["2020-01-06T21:52:36", 18.87686, -86.6624], + ["2020-01-06T22:52:25", 18.89544, -86.66772], + ["2020-01-07T01:21:32", 18.94118, -86.67972], + ["2020-01-07T04:51:56", 19.0101, -86.69324], + ["2020-01-07T08:19:19", 19.07944, -86.70648], + ["2020-01-07T14:20:55", 19.21347, -86.72098], + ["2020-01-07T15:17:52", 19.23594, -86.72145], + ["2020-01-07T15:47:52", 19.24834, -86.72171], + ["2020-01-07T16:17:52", 19.25967, -86.72171], + ["2020-01-07T18:47:24", 19.31878, -86.71919], + ["2020-01-07T19:17:24", 19.32977, -86.7185], + ["2020-01-07T19:47:24", 19.34179, -86.71738], + ["2020-01-07T20:18:00", 19.35412, -86.71643], + ["2020-01-07T20:48:00", 19.36541, -86.71505], + ["2020-01-07T21:18:00", 19.37683, -86.71326], + ["2020-01-07T22:46:42", 19.41036, -86.70697], + ["2020-01-07T23:46:24", 19.43303, -86.70401], + ["2020-01-08T02:15:12", 19.48862, -86.69437], + ["2020-01-08T02:46:29", 19.49942, -86.69266], + ["2020-01-08T03:15:12", 19.50994, -86.69119], + ["2020-01-08T04:15:06", 19.53181, -86.68875], + ["2020-01-08T05:46:28", 19.56835, -86.68892], + ["2020-01-08T06:16:28", 19.57977, -86.68841], + ["2020-01-08T06:46:28", 19.5926, -86.68781], + ["2020-01-08T11:13:24", 19.70793, -86.67767], + ["2020-01-08T13:14:17", 19.7661, -86.66728], + ["2020-01-08T13:44:17", 19.78073, -86.66472], + ["2020-01-08T14:14:17", 19.79549, -86.66128], + ["2020-01-08T15:14:00", 19.82354, -86.65545], + ["2020-01-08T15:44:00", 19.8371, -86.65313], + ["2020-01-08T16:14:00", 19.85212, -86.65021], + ["2020-01-08T19:13:02", 19.93983, -86.63959], + ["2020-01-08T22:44:46", 20.04243, -86.61221], + ["2020-01-09T01:10:29", 20.11361, -86.58588], + ["2020-01-09T02:41:26", 20.15596, -86.56556], + ["2020-01-09T03:11:26", 20.16926, -86.5592], + ["2020-01-09T03:41:26", 20.18325, -86.55252], + ["2020-01-09T05:09:31", 20.22233, -86.53362], + ["2020-01-09T05:39:31", 20.23645, -86.52598], + ["2020-01-09T06:09:31", 20.24774, -86.52032], + ["2020-01-09T11:39:59", 20.384, -86.43701], + ["2020-01-09T12:07:54", 20.39459, -86.43002], + ["2020-01-09T12:37:54", 20.40609, -86.42255], + ["2020-01-09T18:37:38", 20.55453, -86.34369], + ["2020-01-09T20:05:39", 20.59381, -86.32821], + ["2020-01-09T20:35:39", 20.60982, -86.32332], + ["2020-01-09T21:05:39", 20.6233, -86.31937], + ["2020-01-09T21:47:13", 20.64413, -86.31328], + ["2020-01-09T23:08:06", 20.6873, -86.30096], + ["2020-01-09T23:36:09", 20.70228, -86.29716], + ["2020-01-10T00:06:09", 20.71807, -86.29356], + ["2020-01-10T00:36:09", 20.73489, -86.29013], + ["2020-01-10T01:05:26", 20.75046, -86.28744], + ["2020-01-10T01:35:26", 20.76672, -86.28452], + ["2020-01-10T02:35:27", 20.79924, -86.27869], + ["2020-01-10T06:03:30", 20.90586, -86.26166], + ["2020-01-10T06:33:08", 20.92193, -86.25951], + ["2020-01-10T07:03:08", 20.93785, -86.25659], + ["2020-01-10T07:33:08", 20.95317, -86.25479], + ["2020-01-10T10:02:23", 21.03404, -86.25018], + ["2020-01-10T10:32:23", 21.04807, -86.24948], + ["2020-01-10T11:02:23", 21.06361, -86.24872], + ["2020-01-10T14:05:08", 21.1523, -86.25354], + ["2020-01-10T14:31:21", 21.1656, -86.25577], + ["2020-01-10T16:30:51", 21.22573, -86.2677], + ["2020-01-10T17:00:44", 21.24047, -86.27075], + ["2020-01-10T17:30:44", 21.25347, -86.27392], + ["2020-01-10T19:00:10", 21.29444, -86.28488], + ["2020-01-10T20:29:39", 21.33232, -86.29947], + ["2020-01-10T20:59:39", 21.3421, -86.30701], + ["2020-01-10T21:29:39", 21.35206, -86.31509], + ["2020-01-10T21:46:47", 21.35828, -86.31976], + ["2020-01-10T21:59:34", 21.36368, -86.32377], + ["2020-01-10T22:29:34", 21.37415, -86.33123], + ["2020-01-10T22:59:09", 21.38548, -86.33938], + ["2020-01-10T23:29:09", 21.3981, -86.3471], + ["2020-01-10T23:59:09", 21.40977, -86.35397], + ["2020-01-11T00:59:59", 21.43675, -86.37021], + ["2020-01-11T05:29:59", 21.61999, -86.43716], + ["2020-01-11T06:58:12", 21.68986, -86.45645], + ["2020-01-11T10:57:08", 21.87593, -86.49827], + ["2020-01-11T11:27:08", 21.89803, -86.503], + ["2020-01-11T11:57:08", 21.92138, -86.50763], + ["2020-01-11T18:26:06", 22.26699, -86.65973], + ["2020-01-11T19:27:28", 22.31941, -86.69431], + ["2020-01-11T19:55:44", 22.34278, -86.71017], + ["2020-01-11T20:55:32", 22.39152, -86.74209], + ["2020-01-11T21:25:20", 22.42979, -86.76672], + ["2020-01-11T21:55:20", 22.43593, -86.77032], + ["2020-01-11T22:26:20", 22.45715, -86.7836], + ["2020-01-11T22:56:20", 22.47878, -86.79544], + ["2020-01-11T23:25:05", 22.49793, -86.80582], + ["2020-01-12T00:24:33", 22.53418, -86.82727], + ["2020-01-12T00:54:33", 22.55199, -86.83757], + ["2020-01-12T01:24:33", 22.56753, -86.84641], + ["2020-01-12T01:55:59", 22.58416, -86.85637], + ["2020-01-12T02:25:59", 22.59849, -86.86512], + ["2020-01-12T02:55:59", 22.61398, -86.87387], + ["2020-01-12T03:24:18", 22.62752, -86.88173], + ["2020-01-12T03:54:58", 22.64133, -86.88977], + ["2020-01-12T05:23:50", 22.67696, -86.91678], + ["2020-01-12T07:55:25", 22.73188, -86.96332], + ["2020-01-12T08:23:06", 22.74226, -86.97188], + ["2020-01-12T08:53:06", 22.75359, -86.98038], + ["2020-01-12T09:23:28", 22.76597, -86.98945], + ["2020-01-12T09:53:28", 22.77884, -86.99787], + ["2020-01-12T10:23:28", 22.79232, -87.00482], + ["2020-01-12T13:23:59", 22.85464, -87.05548], + ["2020-01-12T13:52:12", 22.86321, -87.06631], + ["2020-01-12T14:23:04", 22.87192, -87.07928], + ["2020-01-12T17:52:13", 22.92691, -87.18962], + ["2020-01-12T18:22:13", 22.93322, -87.20447], + ["2020-01-12T18:52:13", 22.94189, -87.22051], + ["2020-01-12T19:20:21", 22.94933, -87.23569], + ["2020-01-12T19:50:21", 22.95783, -87.25251], + ["2020-01-12T20:20:21", 22.96504, -87.26633], + ["2020-01-12T20:47:09", 22.98296, -87.29505], + ["2020-01-12T21:22:09", 22.98294, -87.29501], + ["2020-01-12T21:47:09", 22.9909, -87.30646], + ["2020-01-12T22:20:07", 23.00146, -87.3215], + ["2020-01-12T22:53:38", 23.0124, -87.33673], + ["2020-01-13T01:50:31", 23.07657, -87.40631], + ["2020-01-13T02:20:31", 23.08859, -87.4161], + ["2020-01-13T02:50:31", 23.10108, -87.4252], + ["2020-01-13T06:19:00", 23.18866, -87.4671], + ["2020-01-13T14:46:57", 23.29427, -87.50122], + ["2020-01-13T15:47:30", 23.30222, -87.5116], + ["2020-01-13T16:15:04", 23.3068, -87.51665], + ["2020-01-13T16:45:04", 23.31148, -87.5224], + ["2020-01-13T17:14:51", 23.31643, -87.52934], + ["2020-01-13T17:44:51", 23.32111, -87.53543], + ["2020-01-13T18:14:25", 23.32724, -87.54313], + ["2020-01-13T18:44:25", 23.33445, -87.55172], + ["2020-01-13T19:14:25", 23.34102, -87.55927], + ["2020-01-13T20:44:48", 23.36942, -87.58892], + ["2020-01-13T21:14:48", 23.37397, -87.59295], + ["2020-01-13T21:44:48", 23.37466, -87.59338], + ["2020-01-14T02:45:04", 23.40668, -87.63217], + ["2020-01-14T03:45:04", 23.41003, -87.6362], + ["2020-01-14T15:09:49", 23.3961, -87.70441], + ["2020-01-14T20:08:44", 23.38385, -87.74451], + ["2020-01-14T23:39:07", 23.3739, -87.78259], + ["2020-01-15T00:08:21", 23.37085, -87.7894], + ["2020-01-15T00:39:44", 23.36851, -87.79749], + ["2020-01-15T01:40:32", 23.36355, -87.81079], + ["2020-01-15T02:37:11", 23.35835, -87.82321], + ["2020-01-15T03:07:11", 23.35556, -87.83102], + ["2020-01-15T03:37:11", 23.35346, -87.83832], + ["2020-01-15T04:08:12", 23.35174, -87.84537], + ["2020-01-15T05:07:26", 23.3491, -87.85981], + ["2020-01-15T05:37:26", 23.34798, -87.86711], + ["2020-01-15T06:07:26", 23.34656, -87.87466], + ["2020-01-15T08:36:12", 23.34645, -87.90808], + ["2020-01-15T09:07:31", 23.347, -87.91446], + ["2020-01-15T10:06:38", 23.34758, -87.92661], + ["2020-01-15T10:36:38", 23.34758, -87.93227], + ["2020-01-15T11:06:38", 23.34728, -87.93845], + ["2020-01-15T12:05:59", 23.34542, -87.9494], + ["2020-01-15T12:35:59", 23.34473, -87.95541], + ["2020-01-15T13:05:59", 23.34361, -87.96133], + ["2020-01-15T13:37:58", 23.34262, -87.96793], + ["2020-01-15T14:05:02", 23.34181, -87.9743], + ["2020-01-15T14:35:02", 23.34069, -87.98099], + ["2020-01-15T15:08:36", 23.33934, -87.98867], + ["2020-01-15T15:38:36", 23.33805, -87.99733], + ["2020-01-15T19:34:31", 23.33137, -88.07339], + ["2020-01-15T21:35:59", 23.33568, -88.12485], + ["2020-01-15T23:35:32", 23.3372, -88.16525], + ["2020-01-16T13:30:56", 23.28569, -88.30301], + ["2020-01-16T14:00:10", 23.28384, -88.30649], + ["2020-01-16T19:29:04", 23.26218, -88.35471], + ["2020-01-16T21:28:39", 23.26022, -88.37344], + ["2020-01-16T21:59:41", 23.26001, -88.379], + ["2020-01-16T22:29:41", 23.25984, -88.38415], + ["2020-01-16T22:59:41", 23.25915, -88.38947], + ["2020-01-17T00:28:13", 23.25886, -88.40619], + ["2020-01-17T01:27:55", 23.25753, -88.41461], + ["2020-01-17T01:30:41", 23.26031, -88.42236], + ["2020-01-17T02:30:41", 23.25632, -88.42468], + ["2020-01-17T02:57:26", 23.2555, -88.42889], + ["2020-01-17T03:58:38", 23.25415, -88.4387], + ["2020-01-17T04:28:38", 23.25355, -88.44298], + ["2020-01-17T04:58:38", 23.25261, -88.44754], + ["2020-01-17T06:30:04", 23.25082, -88.46195], + ["2020-01-17T07:00:04", 23.25056, -88.46753], + ["2020-01-17T07:30:04", 23.2494, -88.47354], + ["2020-01-17T08:26:34", 23.24929, -88.48434], + ["2020-01-17T09:26:51", 23.24714, -88.49606], + ["2020-01-17T14:27:42", 23.23606, -88.5635], + ["2020-01-17T14:54:52", 23.23612, -88.56923], + ["2020-01-17T15:24:51", 23.23647, -88.57553], + ["2020-01-17T15:55:26", 23.23792, -88.58204], + ["2020-01-17T16:25:26", 23.23882, -88.58753], + ["2020-01-17T16:55:26", 23.24015, -88.59311], + ["2020-01-17T17:24:19", 23.24121, -88.59878], + ["2020-01-17T20:53:57", 23.25514, -88.64431], + ["2020-01-17T21:23:57", 23.25557, -88.64501], + ["2020-01-17T21:53:57", 23.25608, -88.64578], + ["2020-01-18T00:54:28", 23.26854, -88.67023], + ["2020-01-18T01:22:42", 23.27046, -88.67313], + ["2020-01-18T01:54:28", 23.27296, -88.67624], + ["2020-01-18T02:22:20", 23.27543, -88.67934], + ["2020-01-18T02:52:20", 23.27809, -88.68234], + ["2020-01-18T05:21:18", 23.28927, -88.69738], + ["2020-01-18T05:51:18", 23.29112, -88.69995], + ["2020-01-18T06:21:18", 23.29301, -88.70269], + ["2020-01-18T17:18:41", 23.33084, -88.76971], + ["2020-01-18T17:48:22", 23.33327, -88.77282], + ["2020-01-18T18:18:22", 23.33507, -88.77582], + ["2020-01-18T18:49:59", 23.33747, -88.77902], + ["2020-01-18T21:20:28", 23.3555, -88.79065], + ["2020-01-18T21:47:37", 23.35922, -88.79201], + ["2020-01-18T23:47:59", 23.37389, -88.79727], + ["2020-01-19T00:16:55", 23.37695, -88.79805], + ["2020-01-19T00:46:55", 23.37983, -88.79864], + ["2020-01-19T01:16:55", 23.3824, -88.79958], + ["2020-01-19T01:46:43", 23.38498, -88.80063], + ["2020-01-19T02:16:43", 23.38695, -88.80157], + ["2020-01-19T02:47:03", 23.38859, -88.80262], + ["2020-01-19T03:17:03", 23.39013, -88.80365], + ["2020-01-19T03:47:03", 23.39146, -88.80511], + ["2020-01-19T05:46:30", 23.39549, -88.80965], + ["2020-01-19T08:45:24", 23.39743, -88.81314], + ["2020-01-19T09:16:41", 23.39695, -88.81381], + ["2020-01-19T09:45:06", 23.39629, -88.8143], + ["2020-01-19T11:44:47", 23.39107, -88.8182], + ["2020-01-19T13:15:28", 23.38536, -88.82335], + ["2020-01-19T13:45:28", 23.38321, -88.82489], + ["2020-01-19T14:15:28", 23.38089, -88.82669], + ["2020-01-19T16:15:47", 23.3704, -88.83365], + ["2020-01-19T17:13:31", 23.36853, -88.83893], + ["2020-01-19T19:44:12", 23.36017, -88.84271], + ["2020-01-19T21:12:59", 23.35436, -88.84542], + ["2020-01-19T21:42:51", 23.35233, -88.84654], + ["2020-01-19T22:12:51", 23.35096, -88.84698], + ["2020-01-19T22:43:38", 23.34974, -88.8468], + ["2020-01-19T23:12:46", 23.34834, -88.84558], + ["2020-01-19T23:43:03", 23.34617, -88.84451], + ["2020-01-20T01:42:05", 23.33681, -88.83331], + ["2020-01-20T02:12:29", 23.33381, -88.82984], + ["2020-01-20T02:42:29", 23.33136, -88.82684], + ["2020-01-20T03:12:29", 23.32883, -88.82349], + ["2020-01-20T05:11:57", 23.31804, -88.81326], + ["2020-01-20T05:41:47", 23.31454, -88.81063], + ["2020-01-20T06:11:47", 23.31179, -88.80916], + ["2020-01-20T06:41:31", 23.30879, -88.80831], + ["2020-01-20T07:41:16", 23.30302, -88.80907], + ["2020-01-20T08:41:00", 23.29546, -88.80896], + ["2020-01-20T13:41:05", 23.25105, -88.82671], + ["2020-01-20T14:11:01", 23.24632, -88.83029], + ["2020-01-20T14:39:24", 23.24106, -88.83363], + ["2020-01-20T15:09:24", 23.23655, -88.83749], + ["2020-01-20T15:39:24", 23.23157, -88.84161], + ["2020-01-20T16:09:03", 23.22617, -88.84587], + ["2020-01-20T16:39:03", 23.22154, -88.85008], + ["2020-01-20T17:09:03", 23.2166, -88.8548], + ["2020-01-20T18:38:48", 23.20248, -88.87033], + ["2020-01-20T20:39:26", 23.18792, -88.88742], + ["2020-01-20T21:09:05", 23.18497, -88.89173], + ["2020-01-20T21:39:05", 23.18192, -88.89594], + ["2020-01-20T22:09:42", 23.17865, -88.90004], + ["2020-01-20T22:39:42", 23.17552, -88.90389], + ["2020-01-21T00:10:58", 23.16695, -88.9173], + ["2020-01-21T00:37:15", 23.1647, -88.92146], + ["2020-01-21T01:07:15", 23.16217, -88.92574], + ["2020-01-21T02:37:27", 23.15493, -88.94058], + ["2020-01-21T03:38:05", 23.15008, -88.95126], + ["2020-01-21T05:07:28", 23.14247, -88.9672], + ["2020-01-21T05:37:28", 23.14041, -88.97202], + ["2020-01-21T06:07:28", 23.13882, -88.9776], + ["2020-01-21T08:06:29", 23.13254, -88.9971], + ["2020-01-21T09:35:31", 23.12718, -89.01018], + ["2020-01-21T10:06:27", 23.12542, -89.01465], + ["2020-01-21T10:35:04", 23.12349, -89.01882], + ["2020-01-21T19:33:58", 23.06533, -89.09148], + ["2020-01-21T21:06:28", 23.04883, -89.11172], + ["2020-01-21T21:36:28", 23.04836, -89.11233], + ["2020-01-21T22:06:28", 23.04643, -89.11508], + ["2020-01-21T22:33:34", 23.04299, -89.1189], + ["2020-01-21T23:03:11", 23.03951, -89.12334], + ["2020-01-21T23:33:11", 23.03569, -89.12797], + ["2020-01-22T00:03:11", 23.03277, -89.1326], + ["2020-01-22T00:35:00", 23.02956, -89.13791], + ["2020-01-22T01:02:50", 23.02695, -89.14227], + ["2020-01-22T02:03:29", 23.02037, -89.15186], + ["2020-01-22T02:32:26", 23.01741, -89.15576], + ["2020-01-22T04:03:01", 23.009, -89.1683], + ["2020-01-22T04:34:06", 23.00704, -89.17306], + ["2020-01-22T05:04:06", 23.00412, -89.17752], + ["2020-01-22T05:31:13", 23.00167, -89.18172], + ["2020-01-22T06:01:13", 22.99944, -89.1861], + ["2020-01-22T06:33:00", 22.99717, -89.1908], + ["2020-01-22T07:01:05", 22.99479, -89.19472], + ["2020-01-22T07:31:05", 22.99226, -89.19824], + ["2020-01-22T09:30:19", 22.98521, -89.21429], + ["2020-01-22T10:02:29", 22.98315, -89.21808], + ["2020-01-22T10:59:53", 22.98041, -89.22565], + ["2020-01-22T14:29:17", 22.97194, -89.25539], + ["2020-01-22T18:58:58", 22.9587, -89.297], + ["2020-01-22T19:28:58", 22.95707, -89.30155], + ["2020-01-22T19:58:58", 22.95557, -89.30661], + ["2020-01-22T20:27:44", 22.95438, -89.31188], + ["2020-01-22T20:57:44", 22.95296, -89.31737], + ["2020-01-22T21:27:44", 22.95086, -89.32165], + ["2020-01-23T03:26:38", 22.92966, -89.36391], + ["2020-01-23T04:26:28", 22.92806, -89.37021], + ["2020-01-23T04:56:28", 22.92746, -89.37313], + ["2020-01-23T05:26:28", 22.92737, -89.37569], + ["2020-01-23T05:55:48", 22.92723, -89.37836], + ["2020-01-23T06:55:40", 22.92776, -89.38385], + ["2020-01-23T07:27:30", 22.92795, -89.38713], + ["2020-01-23T07:57:30", 22.92838, -89.39013], + ["2020-01-23T08:27:30", 22.92881, -89.39331], + ["2020-01-23T08:55:31", 22.92892, -89.39597], + ["2020-01-23T09:26:00", 22.92898, -89.39932], + ["2020-01-23T09:56:00", 22.92984, -89.4025], + ["2020-01-23T11:24:55", 22.93271, -89.41115], + ["2020-01-23T11:54:55", 22.93378, -89.41433], + ["2020-01-23T12:24:55", 22.9346, -89.4169], + ["2020-01-23T12:54:40", 22.93604, -89.41976], + ["2020-01-23T13:24:40", 22.93814, -89.42388], + ["2020-01-23T13:54:40", 22.9396, -89.42654], + ["2020-01-23T14:24:38", 22.94122, -89.42914], + ["2020-01-23T15:55:57", 22.9465, -89.4357], + ["2020-01-23T18:55:26", 22.95996, -89.44708], + ["2020-01-23T19:24:10", 22.9627, -89.44893], + ["2020-01-23T21:47:30", 22.97632, -89.45871], + ["2020-01-23T22:54:26", 22.98271, -89.46231], + ["2020-01-23T23:23:44", 22.98544, -89.4639], + ["2020-01-24T00:23:23", 22.99018, -89.46753], + ["2020-01-24T00:52:57", 22.99288, -89.46942], + ["2020-01-24T01:22:57", 22.99537, -89.47131], + ["2020-01-24T01:52:46", 22.9982, -89.47307], + ["2020-01-24T02:22:46", 23.00082, -89.47461], + ["2020-01-24T02:52:57", 23.00362, -89.4758], + ["2020-01-24T03:52:29", 23.00946, -89.47915], + ["2020-01-24T04:22:29", 23.01221, -89.48061], + ["2020-01-24T04:52:29", 23.01521, -89.48224], + ["2020-01-24T05:21:54", 23.01807, -89.48383], + ["2020-01-24T05:51:40", 23.02126, -89.48546], + ["2020-01-24T06:21:40", 23.02401, -89.48699], + ["2020-01-24T06:51:38", 23.02657, -89.4883], + ["2020-01-24T07:21:38", 23.02902, -89.48924], + ["2020-01-24T07:51:38", 23.03142, -89.48993], + ["2020-01-24T08:21:27", 23.03369, -89.49073], + ["2020-01-24T08:51:27", 23.03626, -89.49124], + ["2020-01-24T09:20:42", 23.03873, -89.49182], + ["2020-01-24T09:50:55", 23.04123, -89.49254], + ["2020-01-24T10:20:27", 23.0432, -89.49338], + ["2020-01-24T10:50:26", 23.04552, -89.4941], + ["2020-01-24T11:20:26", 23.04767, -89.49478], + ["2020-01-24T11:50:26", 23.04956, -89.49572], + ["2020-01-24T12:19:59", 23.05154, -89.49684], + ["2020-01-24T12:49:59", 23.05334, -89.49814], + ["2020-01-24T13:19:59", 23.05497, -89.49951], + ["2020-01-24T13:50:27", 23.05678, -89.50131], + ["2020-01-24T14:19:55", 23.05828, -89.5033], + ["2020-01-24T14:50:25", 23.05989, -89.50548], + ["2020-01-24T15:19:41", 23.06184, -89.50797], + ["2020-01-24T15:49:58", 23.0636, -89.51076], + ["2020-01-24T17:49:28", 23.07213, -89.51956], + ["2020-01-24T18:19:30", 23.07388, -89.52144], + ["2020-01-24T18:49:30", 23.07573, -89.52298], + ["2020-01-24T19:18:43", 23.07738, -89.52472], + ["2020-01-24T19:48:34", 23.07895, -89.52678], + ["2020-01-24T20:18:34", 23.08054, -89.52893], + ["2020-01-24T20:48:57", 23.08218, -89.53137], + ["2020-01-24T21:18:19", 23.08319, -89.53363], + ["2020-01-24T21:48:41", 23.08379, -89.53581], + ["2020-01-24T22:18:08", 23.08426, -89.53802], + ["2020-01-24T22:48:41", 23.08481, -89.54053], + ["2020-01-24T23:17:52", 23.08546, -89.54318], + ["2020-01-24T23:48:30", 23.08605, -89.54562], + ["2020-01-25T00:17:42", 23.08665, -89.54831], + ["2020-01-25T00:47:57", 23.08738, -89.55121], + ["2020-01-25T03:48:58", 23.08933, -89.57259], + ["2020-01-25T05:46:47", 23.08695, -89.58691], + ["2020-01-25T10:16:38", 23.07436, -89.61801], + ["2020-01-25T10:46:38", 23.07324, -89.62136], + ["2020-01-25T11:16:38", 23.07221, -89.62479], + ["2020-01-25T15:44:26", 23.05917, -89.66632], + ["2020-01-25T19:13:46", 23.04443, -89.71185], + ["2020-01-25T19:43:46", 23.04207, -89.71872], + ["2020-01-25T20:13:46", 23.04014, -89.72516], + ["2020-01-25T20:45:26", 23.03659, -89.73714], + ["2020-01-25T21:15:26", 23.03509, -89.74245], + ["2020-01-25T21:45:26", 23.03505, -89.74332], + ["2020-01-26T01:42:42", 23.02095, -89.78024], + ["2020-01-26T02:44:27", 23.01922, -89.78815], + ["2020-01-26T04:41:49", 23.0163, -89.79993], + ["2020-01-26T07:11:24", 23.0076, -89.81125], + ["2020-01-26T08:40:53", 23.00149, -89.81811], + ["2020-01-26T11:40:08", 22.98887, -89.83606], + ["2020-01-26T12:43:28", 22.98589, -89.84204], + ["2020-01-26T14:39:37", 22.98073, -89.85399], + ["2020-01-26T15:11:29", 22.97968, -89.85724], + ["2020-01-26T15:39:37", 22.97867, -89.86017], + ["2020-01-26T16:39:03", 22.97689, -89.866], + ["2020-01-26T17:09:07", 22.97649, -89.86862], + ["2020-01-26T17:39:03", 22.97607, -89.87192], + ["2020-01-26T19:40:00", 22.97594, -89.88367], + ["2020-01-26T21:46:49", 22.97557, -89.89322], + ["2020-01-27T00:08:10", 22.97433, -89.90122], + ["2020-01-27T00:38:10", 22.97339, -89.90259], + ["2020-01-27T01:08:10", 22.97339, -89.90448], + ["2020-01-27T02:08:01", 22.97199, -89.90732], + ["2020-01-27T06:38:56", 22.96985, -89.91998], + ["2020-01-27T07:36:12", 22.96866, -89.92198], + ["2020-01-27T08:06:12", 22.96767, -89.9231], + ["2020-01-27T08:36:12", 22.96673, -89.92371], + ["2020-01-27T09:06:58", 22.96563, -89.92456], + ["2020-01-27T14:05:01", 22.9635, -89.91687], + ["2020-01-27T14:34:32", 22.9615, -89.91467], + ["2020-01-27T15:34:21", 22.95771, -89.91195], + ["2020-01-27T19:33:42", 22.92628, -89.90646], + ["2020-01-27T21:05:30", 22.90871, -89.90768], + ["2020-01-27T23:02:52", 22.88396, -89.9111], + ["2020-01-28T02:06:03", 22.85213, -89.92133], + ["2020-01-28T04:04:48", 22.83534, -89.93066], + ["2020-01-28T04:32:07", 22.83212, -89.93289], + ["2020-01-28T05:01:45", 22.82876, -89.93553], + ["2020-01-28T05:31:45", 22.82558, -89.9381], + ["2020-01-28T06:01:45", 22.82305, -89.94067], + ["2020-01-28T06:32:30", 22.8206, -89.94363], + ["2020-01-28T07:02:42", 22.81861, -89.9468], + ["2020-01-28T07:32:42", 22.81659, -89.94989], + ["2020-01-28T08:02:54", 22.81483, -89.95269], + ["2020-01-28T08:31:59", 22.81334, -89.95535], + ["2020-01-28T09:01:05", 22.81189, -89.95793], + ["2020-01-28T09:31:05", 22.81073, -89.96033], + ["2020-01-28T10:01:05", 22.80983, -89.96265], + ["2020-01-28T11:32:07", 22.80633, -89.96917], + ["2020-01-28T13:00:07", 22.80455, -89.97602], + ["2020-01-28T13:30:07", 22.80386, -89.97808], + ["2020-01-28T14:00:07", 22.80313, -89.98032], + ["2020-01-28T14:29:49", 22.80238, -89.98271], + ["2020-01-28T14:59:49", 22.80131, -89.98468], + ["2020-01-28T18:59:04", 22.79824, -90.0069], + ["2020-01-28T19:30:01", 22.79843, -90.01008], + ["2020-01-28T20:00:01", 22.79847, -90.01334], + ["2020-01-28T20:28:45", 22.79873, -90.01636], + ["2020-01-28T21:00:10", 22.7993, -90.02002], + ["2020-01-28T21:46:45", 22.79936, -90.02417], + ["2020-01-28T21:58:12", 22.79936, -90.02533], + ["2020-01-28T22:28:12", 22.79932, -90.02764], + ["2020-01-28T22:57:56", 22.79936, -90.03024], + ["2020-01-28T23:27:56", 22.79953, -90.03256], + ["2020-01-29T00:27:41", 22.79973, -90.03682], + ["2020-01-29T02:58:12", 22.79409, -90.04535], + ["2020-01-29T09:25:23", 22.77917, -90.0741], + ["2020-01-29T09:55:13", 22.77911, -90.07616], + ["2020-01-29T10:25:13", 22.77924, -90.07762], + ["2020-01-29T10:55:13", 22.7792, -90.07874], + ["2020-01-29T11:25:29", 22.77825, -90.07944], + ["2020-01-29T12:24:58", 22.77547, -90.07828], + ["2020-01-29T12:54:58", 22.77444, -90.07785], + ["2020-01-29T13:24:58", 22.77302, -90.07785], + ["2020-01-29T13:54:27", 22.77178, -90.07802], + ["2020-01-29T14:24:27", 22.77071, -90.07819], + ["2020-01-29T14:53:44", 22.77008, -90.07831], + ["2020-01-29T15:24:28", 22.76987, -90.07791], + ["2020-01-29T16:24:00", 22.76911, -90.07581], + ["2020-01-29T16:53:07", 22.76795, -90.07393], + ["2020-01-29T17:23:07", 22.76666, -90.07248], + ["2020-01-29T17:53:07", 22.76439, -90.07111], + ["2020-01-29T19:22:47", 22.75417, -90.06896], + ["2020-01-29T20:52:22", 22.74033, -90.06668], + ["2020-01-29T21:22:02", 22.73129, -90.06665], + ["2020-01-29T21:52:02", 22.72962, -90.06665], + ["2020-01-29T22:21:59", 22.72422, -90.06674], + ["2020-01-29T23:21:19", 22.71317, -90.06715], + ["2020-01-29T23:53:04", 22.7072, -90.06689], + ["2020-01-30T00:21:19", 22.70192, -90.0668], + ["2020-01-30T00:52:00", 22.69624, -90.06762], + ["2020-01-30T01:21:03", 22.6907, -90.06784], + ["2020-01-30T01:51:57", 22.68423, -90.06851], + ["2020-01-30T02:20:30", 22.67815, -90.06956], + ["2020-01-30T02:53:29", 22.67128, -90.07101], + ["2020-01-30T03:20:30", 22.66596, -90.07214], + ["2020-01-30T04:22:00", 22.65374, -90.07599], + ["2020-01-30T05:21:29", 22.6426, -90.08041], + ["2020-01-30T06:50:12", 22.62601, -90.08745], + ["2020-01-30T07:20:12", 22.6206, -90.08968], + ["2020-01-30T07:50:12", 22.61528, -90.0913], + ["2020-01-30T08:20:59", 22.62067, -90.09286], + ["2020-01-30T08:50:59", 22.60479, -90.09509], + ["2020-01-30T11:18:47", 22.58312, -90.10361], + ["2020-01-30T12:48:33", 22.57064, -90.10965], + ["2020-01-30T13:18:16", 22.56652, -90.11208], + ["2020-01-30T13:48:16", 22.56287, -90.11475], + ["2020-01-30T14:18:00", 22.55921, -90.11763], + ["2020-01-30T14:48:00", 22.55591, -90.12072], + ["2020-01-30T15:18:30", 22.5524, -90.12399], + ["2020-01-30T17:16:37", 22.54057, -90.14227], + ["2020-01-30T17:46:37", 22.5383, -90.1469], + ["2020-01-30T18:16:37", 22.53555, -90.15255], + ["2020-01-30T18:47:59", 22.53254, -90.15888], + ["2020-01-30T19:17:59", 22.52988, -90.16489], + ["2020-01-30T19:47:59", 22.52713, -90.17236], + ["2020-01-30T20:15:56", 22.52484, -90.17917], + ["2020-01-30T23:15:59", 22.51532, -90.22345], + ["2020-01-31T00:16:27", 22.51324, -90.23657], + ["2020-01-31T00:44:44", 22.5128, -90.24285], + ["2020-01-31T02:47:01", 22.51216, -90.2694], + ["2020-01-31T03:14:04", 22.51273, -90.27557], + ["2020-01-31T03:44:04", 22.5135, -90.28192], + ["2020-01-31T05:16:34", 22.519, -90.3], + ["2020-01-31T05:46:34", 22.52106, -90.30531], + ["2020-01-31T06:16:34", 22.52329, -90.31107], + ["2020-01-31T07:13:14", 22.52777, -90.32084], + ["2020-01-31T07:43:14", 22.52983, -90.32581], + ["2020-01-31T08:13:14", 22.53146, -90.33011], + ["2020-01-31T12:11:45", 22.54041, -90.36199], + ["2020-01-31T12:41:33", 22.54181, -90.36612], + ["2020-01-31T13:12:39", 22.54302, -90.37072], + ["2020-01-31T14:43:26", 22.5494, -90.38191], + ["2020-01-31T15:13:26", 22.55262, -90.38482], + ["2020-01-31T15:43:26", 22.55575, -90.38843], + ["2020-01-31T16:10:41", 22.55791, -90.39142], + ["2020-01-31T16:43:31", 22.56053, -90.39436], + ["2020-01-31T17:13:31", 22.56375, -90.39685], + ["2020-01-31T17:40:25", 22.56628, -90.39832], + ["2020-01-31T23:38:44", 22.53491, -90.43182], + ["2020-02-01T00:10:10", 22.53148, -90.43646], + ["2020-02-01T00:38:31", 22.52839, -90.44077], + ["2020-02-01T04:37:44", 22.50712, -90.47418], + ["2020-02-01T05:41:26", 22.50422, -90.48154], + ["2020-02-01T06:37:34", 22.50078, -90.48699], + ["2020-02-01T07:37:20", 22.49622, -90.49023], + ["2020-02-01T10:06:38", 22.48066, -90.49493], + ["2020-02-01T11:35:58", 22.47089, -90.4973], + ["2020-02-01T12:05:58", 22.46746, -90.49833], + ["2020-02-01T12:35:58", 22.46437, -90.49902], + ["2020-02-01T13:39:13", 22.45767, -90.50027], + ["2020-02-01T14:05:59", 22.45445, -90.5004], + ["2020-02-01T14:35:59", 22.4508, -90.50109], + ["2020-02-01T15:05:59", 22.44715, -90.50238], + ["2020-02-01T15:36:28", 22.44331, -90.50373], + ["2020-02-01T16:06:28", 22.43923, -90.50476], + ["2020-02-01T16:37:59", 22.43542, -90.50548], + ["2020-02-01T17:07:59", 22.43113, -90.50702], + ["2020-02-01T18:04:37", 22.42454, -90.50995], + ["2020-02-01T18:34:37", 22.42089, -90.51175], + ["2020-02-01T19:04:37", 22.41754, -90.51355], + ["2020-02-01T21:33:48", 22.39865, -90.52464], + ["2020-02-01T22:03:48", 22.39552, -90.52679], + ["2020-02-01T22:33:48", 22.39183, -90.52954], + ["2020-02-01T23:03:28", 22.3881, -90.53234], + ["2020-02-01T23:33:28", 22.38492, -90.53474], + ["2020-02-02T00:03:28", 22.38157, -90.53757], + ["2020-02-02T01:03:18", 22.37497, -90.54349], + ["2020-02-02T03:32:42", 22.3612, -90.5571], + ["2020-02-02T08:01:37", 22.34541, -90.57962], + ["2020-02-02T10:30:47", 22.33871, -90.58578], + ["2020-02-02T11:00:39", 22.33783, -90.58678], + ["2020-02-02T11:31:59", 22.33626, -90.58786], + ["2020-02-02T13:00:10", 22.33099, -90.58765], + ["2020-02-02T15:59:40", 22.32111, -90.58771], + ["2020-02-02T17:29:05", 22.31674, -90.58752], + ["2020-02-02T17:59:06", 22.31541, -90.58768], + ["2020-02-02T18:29:05", 22.31382, -90.58786], + ["2020-02-02T19:01:42", 22.31179, -90.58841], + ["2020-02-02T20:28:26", 22.30792, -90.59043], + ["2020-02-02T20:58:26", 22.30663, -90.59103], + ["2020-02-02T21:28:26", 22.30534, -90.5918], + ["2020-02-02T22:00:28", 22.304, -90.59259], + ["2020-02-03T00:30:27", 22.29963, -90.59686], + ["2020-02-03T00:57:45", 22.29937, -90.59763], + ["2020-02-03T01:27:45", 22.29933, -90.59857], + ["2020-02-03T03:57:02", 22.30374, -90.60254], + ["2020-02-03T04:27:58", 22.30544, -90.60316], + ["2020-02-03T04:57:58", 22.30711, -90.60333], + ["2020-02-03T05:27:58", 22.30891, -90.60375], + ["2020-02-03T07:27:58", 22.3168, -90.60388], + ["2020-02-03T07:56:57", 22.31835, -90.6039], + ["2020-02-03T08:26:57", 22.31981, -90.60364], + ["2020-02-03T08:56:57", 22.32157, -90.60364], + ["2020-02-03T09:25:59", 22.32353, -90.60357], + ["2020-02-03T09:55:59", 22.32538, -90.60357], + ["2020-02-03T11:25:16", 22.33029, -90.60359], + ["2020-02-03T11:55:16", 22.33222, -90.60272], + ["2020-02-03T12:25:16", 22.33364, -90.60196], + ["2020-02-03T14:54:35", 22.34032, -90.59872], + ["2020-02-03T15:24:42", 22.34218, -90.59836], + ["2020-02-03T21:26:28", 22.3749, -90.59253], + ["2020-02-03T23:52:47", 22.3854, -90.5918], + ["2020-02-04T02:21:57", 22.39463, -90.59152], + ["2020-02-04T04:52:01", 22.40528, -90.59088], + ["2020-02-04T07:50:23", 22.42684, -90.58749], + ["2020-02-04T08:22:29", 22.43141, -90.58629], + ["2020-02-04T08:50:23", 22.43559, -90.58466], + ["2020-02-04T11:51:58", 22.45641, -90.57852], + ["2020-02-04T12:22:30", 22.45902, -90.57834], + ["2020-02-04T12:52:30", 22.46087, -90.57825], + ["2020-02-04T13:22:30", 22.46349, -90.57825], + ["2020-02-04T14:48:25", 22.4707, -90.57865], + ["2020-02-04T15:18:25", 22.47319, -90.57865], + ["2020-02-04T15:48:25", 22.47581, -90.57822], + ["2020-02-04T19:17:43", 22.49413, -90.58078], + ["2020-02-04T19:48:43", 22.4973, -90.58203], + ["2020-02-04T20:18:43", 22.50022, -90.58306], + ["2020-02-04T20:48:43", 22.5037, -90.58426], + ["2020-02-04T21:05:41", 22.50833, -90.5865], + ["2020-02-04T21:35:41", 22.5088, -90.58676], + ["2020-02-05T01:16:19", 22.52617, -90.59894], + ["2020-02-05T06:14:47", 22.55457, -90.61391], + ["2020-02-05T11:43:09", 22.61685, -90.6557], + ["2020-02-05T14:13:43", 22.64454, -90.67667], + ["2020-02-05T16:12:27", 22.65976, -90.68872], + ["2020-02-05T22:13:56", 22.70015, -90.72275], + ["2020-02-06T02:10:26", 22.72443, -90.73708], + ["2020-02-06T03:10:09", 22.72996, -90.73956], + ["2020-02-06T03:43:30", 22.73297, -90.74061], + ["2020-02-06T04:13:30", 22.73657, -90.74173], + ["2020-02-06T04:39:48", 22.73965, -90.74249], + ["2020-02-06T09:10:27", 22.77875, -90.73654], + ["2020-02-06T13:08:32", 22.8075, -90.72136], + ["2020-02-06T15:36:57", 22.82179, -90.70877], + ["2020-02-06T17:09:01", 22.82802, -90.69803], + ["2020-02-06T19:05:54", 22.83374, -90.68283], + ["2020-02-07T00:36:27", 22.78671, -90.63482], + ["2020-02-07T02:36:01", 22.76288, -90.63055], + ["2020-02-07T04:35:57", 22.74428, -90.6309], + ["2020-02-07T05:03:54", 22.74027, -90.63115], + ["2020-02-07T05:35:57", 22.73583, -90.63115], + ["2020-02-07T10:32:49", 22.7053, -90.64883], + ["2020-02-07T11:34:29", 22.70106, -90.65483], + ["2020-02-07T12:04:29", 22.69964, -90.65741], + ["2020-02-07T12:34:29", 22.69681, -90.66016], + ["2020-02-07T15:01:50", 22.68994, -90.68024], + ["2020-02-07T16:31:41", 22.68647, -90.69116], + ["2020-02-07T20:30:53", 22.67636, -90.73202], + ["2020-02-07T23:00:20", 22.67061, -90.76439], + ["2020-02-08T00:00:07", 22.66888, -90.77847], + ["2020-02-08T01:00:59", 22.66785, -90.79233], + ["2020-02-08T01:59:23", 22.66651, -90.80609], + ["2020-02-08T02:29:23", 22.66582, -90.81227], + ["2020-02-08T02:59:23", 22.66543, -90.81879], + ["2020-02-08T04:29:07", 22.66478, -90.8403], + ["2020-02-08T06:31:01", 22.66706, -90.86879], + ["2020-02-08T06:58:50", 22.66738, -90.87512], + ["2020-02-08T07:28:50", 22.66764, -90.88146], + ["2020-02-08T08:28:48", 22.66854, -90.8944], + ["2020-02-08T10:29:35", 22.67066, -90.91956], + ["2020-02-08T10:59:35", 22.67078, -90.92563], + ["2020-02-08T11:57:55", 22.66994, -90.93698], + ["2020-02-08T13:27:06", 22.66847, -90.95486], + ["2020-02-08T13:57:06", 22.66796, -90.9612], + ["2020-02-08T14:27:06", 22.66727, -90.96713], + ["2020-02-08T14:56:56", 22.66634, -90.97319], + ["2020-02-08T15:26:56", 22.66621, -90.97884], + ["2020-02-08T18:55:47", 22.65806, -91.0234], + ["2020-02-08T19:25:57", 22.65673, -91.02988], + ["2020-02-08T19:55:47", 22.65574, -91.03686], + ["2020-02-08T20:25:09", 22.65398, -91.04434], + ["2020-02-08T20:55:09", 22.65299, -91.05062], + ["2020-02-08T21:25:09", 22.65209, -91.05783], + ["2020-02-08T21:55:17", 22.65127, -91.06567], + ["2020-02-08T23:24:28", 22.64838, -91.08899], + ["2020-02-09T00:24:19", 22.64765, -91.10308], + ["2020-02-09T01:25:56", 22.64589, -91.11709], + ["2020-02-09T01:53:56", 22.64565, -91.12345], + ["2020-02-09T02:23:56", 22.64471, -91.13048], + ["2020-02-09T02:54:58", 22.64426, -91.13757], + ["2020-02-09T04:53:39", 22.64764, -91.16449], + ["2020-02-09T05:23:10", 22.64922, -91.17207], + ["2020-02-09T05:53:10", 22.65059, -91.17869], + ["2020-02-09T06:23:10", 22.65231, -91.18564], + ["2020-02-09T08:52:35", 22.66172, -91.21677], + ["2020-02-09T10:22:35", 22.67007, -91.2334], + ["2020-02-09T14:54:24", 22.70244, -91.26999], + ["2020-02-09T16:23:17", 22.71273, -91.27997], + ["2020-02-09T19:20:28", 22.73603, -91.30023], + ["2020-02-09T20:20:10", 22.74421, -91.30768], + ["2020-02-09T20:50:10", 22.74773, -91.31077], + ["2020-02-09T21:20:10", 22.75078, -91.31368], + ["2020-02-09T21:52:28", 22.75814, -91.32334], + ["2020-02-09T22:52:28", 22.75874, -91.32393], + ["2020-02-09T23:51:02", 22.76287, -91.3375], + ["2020-02-10T00:51:02", 22.76484, -91.34146], + ["2020-02-10T10:47:07", 22.80952, -91.47067], + ["2020-02-10T11:49:00", 22.81907, -91.48175], + ["2020-02-10T13:49:08", 22.83945, -91.501], + ["2020-02-10T14:19:08", 22.84473, -91.50564], + ["2020-02-10T14:49:08", 22.8507, -91.51053], + ["2020-02-10T15:16:23", 22.85597, -91.51437], + ["2020-02-10T21:44:43", 22.91665, -91.56046], + ["2020-02-10T22:46:58", 22.92399, -91.56531], + ["2020-02-11T05:13:25", 22.94043, -91.6015], + ["2020-02-11T08:42:34", 22.9456, -91.6358], + ["2020-02-11T14:40:57", 22.99392, -91.70111], + ["2020-02-11T17:40:06", 23.03287, -91.73132], + ["2020-02-11T18:43:29", 23.04717, -91.73917], + ["2020-02-11T19:13:29", 23.05429, -91.7426], + ["2020-02-11T19:43:29", 23.06223, -91.74603], + ["2020-02-11T23:41:40", 23.10907, -91.7647], + ["2020-02-12T01:10:30", 23.11909, -91.76895], + ["2020-02-12T02:09:29", 23.12264, -91.77234], + ["2020-02-12T04:39:36", 23.12651, -91.78745], + ["2020-02-12T05:08:16", 23.12698, -91.79122], + ["2020-02-12T05:38:16", 23.12732, -91.79653], + ["2020-02-12T06:10:30", 23.1277, -91.80182], + ["2020-02-12T06:36:56", 23.1285, -91.80636], + ["2020-02-12T07:06:56", 23.12962, -91.81125], + ["2020-02-12T15:35:31", 23.20793, -91.9014], + ["2020-02-12T19:36:30", 23.27431, -91.91965], + ["2020-02-12T23:06:13", 23.322, -91.91504], + ["2020-02-13T01:05:01", 23.33808, -91.90888], + ["2020-02-13T01:35:01", 23.34053, -91.90698], + ["2020-02-13T02:05:01", 23.34255, -91.90536], + ["2020-02-13T03:07:15", 23.34433, -91.90299], + ["2020-02-13T04:07:15", 23.34605, -91.90213], + ["2020-02-13T10:05:19", 23.3505, -91.93329], + ["2020-02-13T15:03:06", 23.37918, -91.97113], + ["2020-02-13T15:31:39", 23.38307, -91.97418], + ["2020-02-13T16:04:00", 23.3878, -91.97781], + ["2020-02-13T17:31:00", 23.40278, -91.98748], + ["2020-02-13T18:01:00", 23.40823, -91.99005], + ["2020-02-13T18:31:00", 23.41364, -91.99227], + ["2020-02-13T19:31:15", 23.4245, -91.99404], + ["2020-02-13T20:01:15", 23.42956, -91.99516], + ["2020-02-13T20:31:15", 23.43514, -91.99576], + ["2020-02-13T22:30:21", 23.45525, -91.99442], + ["2020-02-14T04:31:55", 23.43461, -92.01157], + ["2020-02-14T04:58:06", 23.43222, -92.01486], + ["2020-02-14T05:28:06", 23.42965, -92.01898], + ["2020-02-14T06:30:07", 23.42205, -92.03424], + ["2020-02-14T07:30:07", 23.41999, -92.0387], + ["2020-02-14T07:57:43", 23.41782, -92.04398], + ["2020-02-14T10:26:46", 23.40592, -92.07277], + ["2020-02-14T12:59:01", 23.39782, -92.10348], + ["2020-02-14T13:56:11", 23.39652, -92.11548], + ["2020-02-15T00:56:17", 23.40232, -92.24374], + ["2020-02-15T03:55:29", 23.40366, -92.28146], + ["2020-02-15T04:22:13", 23.40421, -92.28737], + ["2020-02-15T04:52:13", 23.4052, -92.29355], + ["2020-02-15T08:53:29", 23.41629, -92.34235], + ["2020-02-15T22:18:50", 23.51232, -92.45264], + ["2020-02-15T23:48:40", 23.52245, -92.45792], + ["2020-02-16T02:21:42", 23.53247, -92.46518], + ["2020-02-16T02:50:30", 23.53361, -92.46693], + ["2020-02-16T03:20:30", 23.53455, -92.4689], + ["2020-02-16T05:46:51", 23.53887, -92.48187], + ["2020-02-16T08:19:59", 23.54499, -92.50388], + ["2020-02-24T02:10:21", 24.03684, -91.99091], + ["2020-02-25T09:34:11", 24.02365, -91.7836], + ["2020-02-25T13:30:32", 23.97674, -91.81186], + ["2020-02-25T14:00:32", 23.97382, -91.81607], + ["2020-02-25T14:30:32", 23.97103, -91.82053], + ["2020-02-25T15:01:01", 23.9682, -91.82486], + ["2020-02-25T15:30:26", 23.96532, -91.82904], + ["2020-02-25T16:02:34", 23.96239, -91.83353], + ["2020-02-25T16:29:55", 23.95997, -91.83698], + ["2020-02-25T16:59:48", 23.95739, -91.84014], + ["2020-02-25T21:09:28", 23.95722, -91.84003], + ["2020-02-25T22:29:30", 23.95783, -91.8319], + ["2020-02-26T03:28:09", 23.95864, -91.78137], + ["2020-02-26T05:56:51", 23.93843, -91.74811], + ["2020-02-26T08:26:11", 23.90852, -91.72278], + ["2020-02-26T08:56:34", 23.90291, -91.71884], + ["2020-02-26T17:53:24", 23.7415, -91.68765], + ["2020-02-27T04:23:36", 23.60083, -91.7392], + ["2020-02-27T05:51:28", 23.59069, -91.74254], + ["2020-02-27T09:20:10", 23.57351, -91.74945], + ["2020-02-27T17:47:11", 23.526, -91.72241], + ["2020-02-27T18:18:34", 23.52132, -91.72107], + ["2020-02-28T02:14:24", 23.44383, -91.70162], + ["2020-02-28T03:44:03", 23.43403, -91.68879], + ["2020-02-28T04:14:03", 23.42974, -91.68483], + ["2020-02-28T04:44:03", 23.42618, -91.68158], + ["2020-02-29T01:09:14", 23.35765, -91.56357], + ["2020-03-02T11:28:13", 23.45118, -91.69662], + ["2020-03-03T07:56:14", 23.53195, -91.69763], + ["2020-03-03T08:22:18", 23.53461, -91.69898], + ["2020-03-03T08:52:18", 23.53856, -91.69958], + ["2020-03-05T03:14:56", 23.8082, -91.74902], + ["2020-03-05T08:46:20", 23.74325, -91.70959], + ["2020-03-06T02:09:14", 23.6217, -91.78491], + ["2020-03-06T02:42:13", 23.61966, -91.78252], + ["2020-03-06T03:12:13", 23.61837, -91.78021], + ["2020-03-09T11:47:30", 23.77671, -92.43057], + ["2020-03-11T11:02:06", 24.06124, -93.01984], + ["2020-03-12T07:59:40", 24.11943, -93.33722], + ["2020-03-26T16:54:36", 23.93441, -94.55889], + ["2020-03-28T11:17:58", 23.96267, -94.58163], + ["2020-03-30T18:06:19", 24.18187, -94.99362], + ["2020-03-30T19:04:34", 24.18457, -94.99866], + ["2020-03-31T21:00:37", 24.24458, -95.05005], + ["2020-03-31T22:29:48", 24.23877, -95.04678], + ["2020-04-01T00:28:35", 24.22508, -95.04707], + ["2020-04-01T00:56:29", 24.2211, -95.04691], + ["2020-04-01T01:28:35", 24.21615, -95.047], + ["2020-04-01T01:57:02", 24.21141, -95.04794], + ["2020-04-01T04:26:10", 24.18568, -95.06128], + ["2020-04-01T15:24:00", 24.09192, -95.16641], + ["2020-04-01T16:55:00", 24.08493, -95.17706], + ["2020-04-02T05:20:28", 24.08651, -95.19253], + ["2020-04-02T10:22:22", 24.06127, -95.17224], + ["2020-04-02T19:48:32", 24.01026, -95.19022], + ["2020-04-03T06:47:22", 24.03007, -95.22423], + ["2020-04-05T05:30:35", 24.16317, -95.31784], + ["2020-04-05T06:03:11", 24.16539, -95.3178], + ["2020-04-05T06:33:11", 24.16788, -95.31815], + ["2020-04-05T07:01:58", 24.16892, -95.31783], + ["2020-04-05T07:31:58", 24.16978, -95.31766], + ["2020-04-05T08:01:58", 24.17064, -95.31732], + ["2020-04-05T08:59:56", 24.17075, -95.31699], + ["2020-04-05T11:29:30", 24.17027, -95.31979], + ["2020-04-05T18:30:18", 24.17922, -95.36926], + ["2020-04-05T19:27:03", 24.18477, -95.38037], + ["2020-04-05T19:56:58", 24.18854, -95.38657], + ["2020-04-05T20:26:58", 24.19172, -95.39163], + ["2020-04-06T22:21:27", 24.62305, -95.66824], + ["2020-04-06T23:24:28", 24.64342, -95.68292], + ["2020-04-07T03:49:35", 24.71357, -95.75507], + ["2020-04-07T11:49:48", 24.83178, -95.88937], + ["2020-04-07T21:46:11", 24.94576, -96.01169], + ["2020-04-07T22:15:50", 24.95145, -96.01685], + ["2020-04-07T22:45:50", 24.95608, -96.02158], + ["2020-04-09T01:10:12", 25.10212, -96.27551], + ["2020-04-09T04:38:25", 25.09799, -96.28003], + ["2020-04-16T05:38:54", 24.00107, -97.3157], + ["2020-04-19T05:49:28", 22.97621, -97.29349], + ["2020-04-19T06:49:56", 22.96562, -97.28462], + ["2020-04-19T07:19:56", 22.9603, -97.28024], + ["2020-04-19T07:49:56", 22.95532, -97.27621], + ["2020-04-19T08:19:40", 22.95056, -97.27172], + ["2020-04-19T08:49:40", 22.94511, -97.26648], + ["2020-04-19T13:49:28", 22.91727, -97.21997], + ["2020-04-19T14:17:16", 22.91583, -97.21561], + ["2020-04-19T16:46:41", 22.91084, -97.18884], + ["2020-04-20T03:44:31", 22.92802, -97.18042], + ["2020-04-20T04:14:26", 22.93099, -97.17992], + ["2020-04-20T04:44:26", 22.93365, -97.17932], + ["2020-04-20T09:44:28", 22.92715, -97.13657], + ["2020-04-20T12:41:54", 22.87781, -97.12213], + ["2020-04-20T13:13:34", 22.86842, -97.1228], + ["2020-04-21T04:07:53", 22.84951, -97.17093], + ["2020-04-21T05:11:28", 22.86087, -97.17957], + ["2020-04-21T19:03:23", 22.89177, -97.16837], + ["2020-04-21T19:36:02", 22.8899, -97.17158], + ["2020-04-21T20:03:11", 22.88813, -97.17569], + ["2020-04-21T20:36:02", 22.8854, -97.18155], + ["2020-04-21T21:32:57", 22.8819, -97.19586], + ["2020-04-22T12:33:36", 22.85858, -97.55566], + ["2020-04-22T18:30:10", 22.76535, -97.58972], + ["2020-04-22T19:58:22", 22.73616, -97.58435], + ["2020-04-23T03:27:00", 22.6776, -97.4935], + ["2020-04-23T10:56:33", 22.76113, -97.397], + ["2020-04-23T11:26:59", 22.76801, -97.39403], + ["2020-04-23T11:56:59", 22.77608, -97.39197], + ["2020-04-23T12:26:00", 22.78392, -97.39006], + ["2020-04-23T12:56:00", 22.79229, -97.38861], + ["2020-04-23T15:24:27", 22.81328, -97.37683], + ["2020-04-23T17:02:52", 22.81402, -97.37206], + ["2020-04-24T07:54:00", 22.91264, -97.50369], + ["2020-04-26T16:38:48", 22.84795, -97.47015], + ["2020-04-26T23:37:11", 22.77416, -97.47405], + ["2020-04-27T08:05:57", 22.73955, -97.48578], + ["2020-04-27T08:36:30", 22.74217, -97.48481], + ["2020-04-27T09:06:30", 22.7447, -97.48206], + ["2020-04-27T09:35:40", 22.74879, -97.4783], + ["2020-04-27T10:05:40", 22.75218, -97.47342], + ["2020-04-27T10:35:23", 22.75497, -97.46701], + ["2020-04-27T11:05:16", 22.7571, -97.4604], + ["2020-04-27T11:35:16", 22.75925, -97.45456], + ["2020-04-27T12:05:02", 22.76094, -97.44777], + ["2020-04-27T12:35:02", 22.76188, -97.4404], + ["2020-04-27T14:04:58", 22.76462, -97.4194], + ["2020-04-27T14:34:58", 22.76565, -97.41408], + ["2020-04-27T15:04:58", 22.76668, -97.40927], + ["2020-04-28T03:30:50", 22.74557, -97.40799], + ["2020-04-28T08:29:45", 22.76116, -97.42953], + ["2020-04-28T08:59:22", 22.76306, -97.43009], + ["2020-04-28T09:29:22", 22.76525, -97.42949], + ["2020-04-28T09:59:22", 22.76752, -97.42795], + ["2020-04-28T17:58:36", 22.76085, -97.36099], + ["2020-04-28T20:29:30", 22.75089, -97.34041], + ["2020-04-28T21:59:23", 22.74659, -97.33475], + ["2020-04-28T22:29:23", 22.7456, -97.33398], + ["2020-04-28T22:59:23", 22.7444, -97.33295], + ["2020-04-29T03:25:24", 22.74102, -97.34497], + ["2020-04-29T08:53:39", 22.73442, -97.39648], + ["2020-04-29T16:53:01", 22.71186, -97.45419], + ["2020-05-04T08:20:12", 23.03239, -97.38141], + ["2020-05-04T22:15:35", 23.07468, -97.30566], + ["2020-05-05T05:47:28", 23.07788, -97.24169], + ["2020-05-05T06:47:26", 23.07837, -97.23004], + ["2020-05-05T17:11:45", 23.01295, -97.06923], + ["2020-05-05T21:43:29", 22.97266, -97.03323], + ["2020-05-06T00:10:11", 22.95335, -97.013], + ["2020-05-06T09:07:54", 22.89709, -96.91052], + ["2020-05-06T16:38:19", 22.82211, -96.80562], + ["2020-05-06T17:36:02", 22.82149, -96.79572], + ["2020-05-07T00:38:11", 22.75869, -96.69055], + ["2020-05-07T19:00:11", 22.73109, -96.41443], + ["2020-05-08T01:02:11", 22.75964, -96.24512], + ["2020-05-10T16:40:41", 23.20054, -95.82805], + ["2020-05-11T16:46:46", 23.373, -96.04523], + ["2020-05-11T22:01:25", 23.39075, -96.12137], + ["2020-05-12T08:32:31", 23.45021, -96.27878], + ["2020-05-12T13:57:44", 23.50613, -96.3364], + ["2020-05-12T19:57:30", 23.53605, -96.35657], + ["2020-05-12T21:27:58", 23.5335, -96.36163], + ["2020-05-13T02:54:05", 23.51413, -96.4119], + ["2020-05-13T09:55:39", 23.49491, -96.51392], + ["2020-05-13T15:50:34", 23.51179, -96.59848] + ], + "drifter_17": [ + ["2019-08-06T13:27:00", 10.46221, -53.67437], + ["2019-08-06T14:51:56", 10.46816, -53.67934], + ["2019-08-06T15:51:56", 10.46898, -53.67883], + ["2019-08-06T16:51:56", 10.47022, -53.67694], + ["2019-08-06T17:52:27", 10.47205, -53.67441], + ["2019-08-06T18:51:28", 10.47662, -53.67382], + ["2019-08-06T19:51:28", 10.48276, -53.67125], + ["2019-08-06T20:51:28", 10.48615, -53.66687], + ["2019-08-06T21:51:26", 10.48813, -53.66095], + ["2019-08-06T22:51:23", 10.48885, -53.65512], + ["2019-08-07T03:49:59", 10.47199, -53.62988], + ["2019-08-07T05:49:00", 10.46005, -53.62296], + ["2019-08-07T06:49:00", 10.45305, -53.6221], + ["2019-08-07T07:49:00", 10.44674, -53.6203], + ["2019-08-07T08:48:57", 10.44305, -53.61692], + ["2019-08-07T09:48:57", 10.43945, -53.61435], + ["2019-08-07T10:49:26", 10.43599, -53.61069], + ["2019-08-07T11:49:26", 10.43166, -53.60691], + ["2019-08-07T12:49:26", 10.42891, -53.60391], + ["2019-08-07T18:49:27", 10.41953, -53.59598], + ["2019-08-07T21:45:44", 10.40945, -53.59532], + ["2019-08-07T22:45:44", 10.40786, -53.59532], + ["2019-08-07T23:45:44", 10.40593, -53.59515], + ["2019-08-08T00:45:35", 10.4047, -53.59753], + ["2019-08-08T01:46:29", 10.40414, -53.60482], + ["2019-08-08T02:46:29", 10.40393, -53.61426], + ["2019-08-08T03:44:28", 10.4038, -53.62216], + ["2019-08-08T04:44:28", 10.40145, -53.62924], + ["2019-08-08T05:44:28", 10.3982, -53.63546], + ["2019-08-08T06:44:28", 10.3946, -53.64215], + ["2019-08-08T07:43:59", 10.39012, -53.64859], + ["2019-08-08T08:43:26", 10.38548, -53.65628], + ["2019-08-08T09:43:25", 10.38034, -53.66354], + ["2019-08-08T10:43:57", 10.37484, -53.67111], + ["2019-08-08T11:43:04", 10.37037, -53.67996], + ["2019-08-08T14:42:45", 10.35797, -53.71466], + ["2019-08-08T18:41:05", 10.34459, -53.75034], + ["2019-08-08T20:41:29", 10.33537, -53.772], + ["2019-08-09T02:40:53", 10.31212, -53.84106], + ["2019-08-09T03:38:55", 10.30886, -53.85455], + ["2019-08-09T06:40:27", 10.30661, -53.90073], + ["2019-08-09T09:39:30", 10.31668, -53.93823], + ["2019-08-09T11:38:18", 10.32581, -53.9606], + ["2019-08-09T14:37:52", 10.33006, -53.99219], + ["2019-08-09T18:36:39", 10.34567, -54.04221], + ["2019-08-09T23:35:56", 10.38153, -54.08459], + ["2019-08-10T03:35:30", 10.38514, -54.09402], + ["2019-08-10T09:33:49", 10.39966, -54.11984], + ["2019-08-10T14:31:20", 10.40686, -54.12897], + ["2019-08-10T15:33:54", 10.40722, -54.13307], + ["2019-08-10T16:33:54", 10.40971, -54.13968], + ["2019-08-10T22:29:39", 10.40851, -54.17108], + ["2019-08-10T23:29:02", 10.40657, -54.17548], + ["2019-08-11T00:29:02", 10.404, -54.18114], + ["2019-08-11T01:29:02", 10.40267, -54.18921], + ["2019-08-11T02:31:55", 10.39822, -54.19696], + ["2019-08-11T05:28:00", 10.38216, -54.22705], + ["2019-08-11T06:28:27", 10.38006, -54.23814], + ["2019-08-11T07:28:27", 10.38045, -54.24681], + ["2019-08-11T08:28:27", 10.38315, -54.25522], + ["2019-08-11T09:27:57", 10.38683, -54.26505], + ["2019-08-11T10:27:57", 10.3882, -54.2738], + ["2019-08-11T11:27:16", 10.39116, -54.28406], + ["2019-08-11T12:27:34", 10.3925, -54.29327], + ["2019-08-11T13:27:58", 10.39235, -54.30429], + ["2019-08-11T15:27:57", 10.39381, -54.32867], + ["2019-08-11T20:26:26", 10.40083, -54.38101], + ["2019-08-11T21:24:20", 10.40344, -54.39124], + ["2019-08-11T22:25:07", 10.40903, -54.41018], + ["2019-08-12T00:25:07", 10.41199, -54.42014], + ["2019-08-12T04:24:18", 10.40766, -54.45105], + ["2019-08-12T05:24:30", 10.40519, -54.46007], + ["2019-08-12T06:24:30", 10.4048, -54.4696], + ["2019-08-12T07:21:37", 10.40513, -54.47827], + ["2019-08-12T08:22:55", 10.40668, -54.48877], + ["2019-08-12T09:22:26", 10.40741, -54.49784], + ["2019-08-12T10:22:26", 10.40681, -54.50788], + ["2019-08-12T11:22:26", 10.40642, -54.51947], + ["2019-08-12T12:20:01", 10.40631, -54.5301], + ["2019-08-12T13:20:01", 10.40691, -54.54083], + ["2019-08-12T14:20:27", 10.4064, -54.55451], + ["2019-08-12T15:20:27", 10.40709, -54.56799], + ["2019-08-12T19:19:28", 10.41099, -54.61734], + ["2019-08-12T20:20:26", 10.41405, -54.63049], + ["2019-08-13T00:20:01", 10.43083, -54.694], + ["2019-08-13T02:18:00", 10.43973, -54.72177], + ["2019-08-13T03:19:00", 10.44549, -54.73291], + ["2019-08-13T04:17:21", 10.44929, -54.74149], + ["2019-08-13T05:18:38", 10.45464, -54.74991], + ["2019-08-13T06:16:41", 10.4611, -54.75873], + ["2019-08-13T10:16:31", 10.47664, -54.79559], + ["2019-08-13T11:16:28", 10.48077, -54.80692], + ["2019-08-13T15:16:28", 10.49895, -54.84827], + ["2019-08-13T16:14:00", 10.50466, -54.85391], + ["2019-08-13T17:14:30", 10.5131, -54.85794], + ["2019-08-13T18:16:10", 10.52229, -54.86133], + ["2019-08-13T19:13:26", 10.53282, -54.86703], + ["2019-08-13T20:13:58", 10.54469, -54.87239], + ["2019-08-13T21:14:06", 10.55502, -54.87741], + ["2019-08-13T22:13:58", 10.56001, -54.8826], + ["2019-08-14T00:13:29", 10.56771, -54.89075], + ["2019-08-14T01:11:28", 10.57444, -54.89696], + ["2019-08-14T02:11:28", 10.58032, -54.90125], + ["2019-08-14T05:11:04", 10.60212, -54.90787], + ["2019-08-14T07:12:03", 10.61715, -54.90161], + ["2019-08-14T08:10:58", 10.62218, -54.90007], + ["2019-08-14T09:10:58", 10.62523, -54.90076], + ["2019-08-14T10:10:28", 10.62496, -54.90436], + ["2019-08-14T12:10:31", 10.62092, -54.91551], + ["2019-08-14T13:10:31", 10.61826, -54.92298], + ["2019-08-14T14:10:31", 10.61504, -54.93182], + ["2019-08-14T21:08:29", 10.62831, -54.97476], + ["2019-08-14T22:08:10", 10.62781, -54.98157], + ["2019-08-15T03:07:26", 10.61642, -55.01904], + ["2019-08-15T04:06:31", 10.61792, -55.02802], + ["2019-08-15T05:07:06", 10.61983, -55.03693], + ["2019-08-15T06:06:58", 10.6198, -55.04523], + ["2019-08-15T07:07:00", 10.61862, -55.05451], + ["2019-08-15T08:07:00", 10.61617, -55.06524], + ["2019-08-15T09:07:00", 10.61093, -55.07837], + ["2019-08-15T14:04:59", 10.57741, -55.15027], + ["2019-08-15T15:04:28", 10.57215, -55.16797], + ["2019-08-15T16:04:28", 10.57138, -55.18539], + ["2019-08-15T18:03:59", 10.57239, -55.21985], + ["2019-08-15T19:05:00", 10.57022, -55.2362], + ["2019-08-15T20:05:00", 10.56726, -55.25208], + ["2019-08-15T23:03:00", 10.56267, -55.30206], + ["2019-08-16T00:02:00", 10.56264, -55.31997], + ["2019-08-16T01:02:00", 10.5647, -55.33902], + ["2019-08-16T02:01:00", 10.56785, -55.35923], + ["2019-08-16T03:01:00", 10.57296, -55.37811], + ["2019-08-16T04:01:30", 10.5799, -55.39545], + ["2019-08-16T07:02:09", 10.60472, -55.43613], + ["2019-08-16T07:59:37", 10.60963, -55.4472], + ["2019-08-16T11:58:56", 10.63311, -55.51358], + ["2019-08-16T13:01:05", 10.64533, -55.53101], + ["2019-08-16T17:59:28", 10.72015, -55.58414], + ["2019-08-16T18:58:08", 10.73744, -55.58774], + ["2019-08-16T19:58:18", 10.75173, -55.58932], + ["2019-08-16T20:58:18", 10.76379, -55.59026], + ["2019-08-16T21:58:18", 10.77456, -55.59155], + ["2019-08-16T22:56:57", 10.78609, -55.59428], + ["2019-08-16T23:56:57", 10.7963, -55.59479], + ["2019-08-17T01:58:00", 10.81246, -55.59268], + ["2019-08-17T02:57:28", 10.81629, -55.58792], + ["2019-08-17T03:58:00", 10.81868, -55.58246], + ["2019-08-17T07:55:27", 10.83276, -55.55234], + ["2019-08-17T08:55:27", 10.83519, -55.54617], + ["2019-08-17T09:55:27", 10.83558, -55.54282], + ["2019-08-17T10:55:07", 10.83285, -55.54041], + ["2019-08-17T13:54:57", 10.81843, -55.53708], + ["2019-08-17T14:55:33", 10.80968, -55.53503], + ["2019-08-17T15:55:33", 10.80007, -55.53391], + ["2019-08-17T16:54:27", 10.7941, -55.53433], + ["2019-08-17T17:54:05", 10.78901, -55.53519], + ["2019-08-17T18:53:27", 10.78392, -55.53601], + ["2019-08-17T19:53:26", 10.77827, -55.53854], + ["2019-08-17T20:53:57", 10.76978, -55.54191], + ["2019-08-17T21:53:57", 10.76188, -55.54483], + ["2019-08-17T22:53:57", 10.75313, -55.55075], + ["2019-08-17T23:52:59", 10.74325, -55.5574], + ["2019-08-18T05:51:31", 10.69159, -55.60892], + ["2019-08-18T06:51:32", 10.6838, -55.61691], + ["2019-08-18T10:51:02", 10.64015, -55.65512], + ["2019-08-18T11:49:26", 10.63063, -55.67061], + ["2019-08-18T12:49:26", 10.62218, -55.68726], + ["2019-08-18T14:49:45", 10.61021, -55.72202], + ["2019-08-18T18:50:42", 10.59986, -55.78754], + ["2019-08-18T19:48:00", 10.60682, -55.8014], + ["2019-08-18T20:48:00", 10.62055, -55.81942], + ["2019-08-18T21:48:00", 10.63437, -55.8353], + ["2019-08-18T22:48:37", 10.64758, -55.84949], + ["2019-08-18T23:48:29", 10.65965, -55.86244], + ["2019-08-19T00:48:29", 10.67098, -55.87634], + ["2019-08-19T01:46:00", 10.68099, -55.88947], + ["2019-08-19T02:48:59", 10.69167, -55.90274], + ["2019-08-19T03:46:00", 10.70108, -55.91333], + ["2019-08-19T04:46:25", 10.71247, -55.92258], + ["2019-08-19T05:46:26", 10.72619, -55.93143], + ["2019-08-19T06:46:00", 10.74412, -55.93891], + ["2019-08-19T07:46:00", 10.76244, -55.94363], + ["2019-08-19T08:46:00", 10.77888, -55.94354], + ["2019-08-19T09:45:27", 10.79502, -55.94186], + ["2019-08-19T10:46:27", 10.80982, -55.93845], + ["2019-08-19T11:44:36", 10.82211, -55.93235], + ["2019-08-19T12:44:36", 10.83044, -55.92548], + ["2019-08-19T13:45:48", 10.83706, -55.91882], + ["2019-08-19T14:43:42", 10.83969, -55.91321], + ["2019-08-19T15:43:25", 10.84083, -55.90752], + ["2019-08-19T16:43:25", 10.84229, -55.90177], + ["2019-08-19T17:43:25", 10.8428, -55.89456], + ["2019-08-19T18:43:07", 10.84244, -55.88781], + ["2019-08-19T19:43:07", 10.84394, -55.88232], + ["2019-08-19T20:42:56", 10.84457, -55.87823], + ["2019-08-19T21:42:29", 10.84491, -55.87278], + ["2019-08-19T22:42:29", 10.84405, -55.86626], + ["2019-08-19T23:42:29", 10.83894, -55.86017], + ["2019-08-20T00:42:27", 10.82986, -55.85324], + ["2019-08-20T02:40:55", 10.80641, -55.83754], + ["2019-08-20T03:41:10", 10.79319, -55.82999], + ["2019-08-20T04:40:55", 10.78083, -55.82278], + ["2019-08-20T05:40:56", 10.76683, -55.81613], + ["2019-08-20T06:40:38", 10.75278, -55.81116], + ["2019-08-20T08:40:06", 10.72788, -55.80578], + ["2019-08-20T09:40:29", 10.71571, -55.80408], + ["2019-08-20T10:40:06", 10.702, -55.80191], + ["2019-08-20T11:39:56", 10.68869, -55.80164], + ["2019-08-20T12:39:25", 10.67584, -55.80338], + ["2019-08-20T13:38:57", 10.66383, -55.80779], + ["2019-08-20T14:38:57", 10.65332, -55.81311], + ["2019-08-20T15:38:29", 10.6431, -55.81885], + ["2019-08-20T16:38:28", 10.63391, -55.8252], + ["2019-08-20T17:38:25", 10.6245, -55.83139], + ["2019-08-20T18:38:25", 10.6154, -55.83997], + ["2019-08-20T19:38:05", 10.60608, -55.84921], + ["2019-08-20T20:37:55", 10.59683, -55.85858], + ["2019-08-20T21:37:08", 10.5878, -55.87034], + ["2019-08-20T22:37:08", 10.57913, -55.8833], + ["2019-08-20T23:37:28", 10.5712, -55.89688], + ["2019-08-21T00:36:56", 10.56463, -55.91113], + ["2019-08-21T01:36:56", 10.5581, -55.92566], + ["2019-08-21T02:36:26", 10.54891, -55.93994], + ["2019-08-21T03:36:31", 10.54102, -55.95502], + ["2019-08-21T05:35:28", 10.53039, -55.98643], + ["2019-08-21T06:35:28", 10.52747, -56.00291], + ["2019-08-21T07:35:28", 10.52515, -56.0181], + ["2019-08-21T08:34:56", 10.52239, -56.03412], + ["2019-08-21T09:34:56", 10.51921, -56.05017], + ["2019-08-21T11:35:42", 10.51791, -56.08795], + ["2019-08-21T12:34:40", 10.51926, -56.10529], + ["2019-08-21T13:35:42", 10.52237, -56.12289], + ["2019-08-21T14:37:11", 10.5269, -56.13989], + ["2019-08-21T15:34:27", 10.53308, -56.15619], + ["2019-08-21T16:34:27", 10.54236, -56.17349], + ["2019-08-21T17:34:27", 10.55295, -56.18967], + ["2019-08-21T18:33:55", 10.56511, -56.20422], + ["2019-08-21T19:33:27", 10.57872, -56.21738], + ["2019-08-21T20:33:02", 10.59358, -56.23153], + ["2019-08-21T21:33:02", 10.60697, -56.24518], + ["2019-08-21T22:33:02", 10.61856, -56.2572], + ["2019-08-21T23:33:56", 10.63077, -56.26877], + ["2019-08-22T00:32:28", 10.64156, -56.27973], + ["2019-08-22T01:32:28", 10.65276, -56.289], + ["2019-08-22T02:32:01", 10.66368, -56.29813], + ["2019-08-22T03:32:01", 10.67316, -56.30646], + ["2019-08-22T04:31:56", 10.68205, -56.31198], + ["2019-08-22T05:32:28", 10.69167, -56.31689], + ["2019-08-22T06:31:58", 10.70191, -56.32236], + ["2019-08-22T10:30:07", 10.73922, -56.33469], + ["2019-08-22T17:28:57", 10.80186, -56.32996], + ["2019-08-22T18:29:26", 10.80843, -56.32635], + ["2019-08-22T19:28:29", 10.81159, -56.32273], + ["2019-08-22T20:28:29", 10.81219, -56.32101], + ["2019-08-22T21:28:28", 10.81153, -56.3204], + ["2019-08-22T22:27:38", 10.81033, -56.32013], + ["2019-08-23T00:27:00", 10.80801, -56.3216], + ["2019-08-23T01:27:00", 10.80393, -56.32366], + ["2019-08-23T02:27:00", 10.79766, -56.32486], + ["2019-08-23T04:26:58", 10.78819, -56.32526], + ["2019-08-23T05:26:28", 10.77982, -56.32535], + ["2019-08-23T06:26:30", 10.77008, -56.32471], + ["2019-08-23T07:26:59", 10.76075, -56.32617], + ["2019-08-23T08:26:59", 10.75195, -56.32883], + ["2019-08-23T09:25:29", 10.7447, -56.33188], + ["2019-08-23T10:25:09", 10.73874, -56.33658], + ["2019-08-23T11:24:56", 10.73299, -56.34378], + ["2019-08-23T12:24:27", 10.72655, -56.35107], + ["2019-08-23T13:24:08", 10.72042, -56.35919], + ["2019-08-23T14:23:55", 10.71346, -56.36771], + ["2019-08-23T15:23:26", 10.70509, -56.3761], + ["2019-08-23T16:23:28", 10.69749, -56.38657], + ["2019-08-23T17:23:28", 10.69169, -56.39844], + ["2019-08-23T19:22:31", 10.67831, -56.42258], + ["2019-08-23T20:22:00", 10.67318, -56.43508], + ["2019-08-23T21:22:00", 10.66936, -56.44727], + ["2019-08-23T22:21:30", 10.6659, -56.46066], + ["2019-08-23T23:21:04", 10.66174, -56.47412], + ["2019-08-24T00:20:28", 10.65699, -56.48602], + ["2019-08-24T01:20:26", 10.65193, -56.49881], + ["2019-08-24T02:20:06", 10.64802, -56.51154], + ["2019-08-24T03:19:58", 10.64632, -56.52362], + ["2019-08-24T04:19:26", 10.64434, -56.53381], + ["2019-08-24T05:19:57", 10.64051, -56.54291], + ["2019-08-24T07:18:57", 10.63551, -56.5621], + ["2019-08-24T08:19:58", 10.63089, -56.57376], + ["2019-08-24T09:18:57", 10.62792, -56.58484], + ["2019-08-24T10:18:57", 10.62764, -56.59766], + ["2019-08-24T11:18:58", 10.62998, -56.61041], + ["2019-08-24T19:17:59", 10.63528, -56.73334], + ["2019-08-24T20:15:42", 10.63709, -56.75275], + ["2019-08-25T01:14:35", 10.6578, -56.83823], + ["2019-08-25T07:14:28", 10.70106, -56.90933], + ["2019-08-25T08:12:16", 10.7101, -56.922], + ["2019-08-25T09:12:16", 10.7183, -56.93324], + ["2019-08-25T10:12:16", 10.72499, -56.94131], + ["2019-08-25T11:13:57", 10.73188, -56.94864], + ["2019-08-25T13:12:26", 10.74273, -56.96262], + ["2019-08-25T14:12:56", 10.74749, -56.96984], + ["2019-08-25T15:12:56", 10.75109, -56.97679], + ["2019-08-25T16:12:56", 10.75332, -56.98434], + ["2019-08-25T17:10:40", 10.75564, -56.99298], + ["2019-08-25T18:11:44", 10.75644, -57.00305], + ["2019-08-25T23:09:57", 10.76266, -57.05914], + ["2019-08-26T00:09:29", 10.76216, -57.06952], + ["2019-08-26T03:09:01", 10.75449, -57.09808], + ["2019-08-26T05:07:58", 10.75383, -57.11463], + ["2019-08-26T06:07:59", 10.75643, -57.11917], + ["2019-08-26T07:07:58", 10.76156, -57.12338], + ["2019-08-26T08:07:31", 10.76923, -57.12717], + ["2019-08-26T13:07:07", 10.79243, -57.13977], + ["2019-08-26T14:06:11", 10.79626, -57.14221], + ["2019-08-26T15:07:01", 10.7975, -57.1442], + ["2019-08-26T16:07:07", 10.79968, -57.14694], + ["2019-08-26T17:04:44", 10.80444, -57.14893], + ["2019-08-26T22:03:51", 10.83261, -57.16617], + ["2019-08-26T23:05:35", 10.83761, -57.16928], + ["2019-08-27T00:05:35", 10.84117, -57.17288], + ["2019-08-27T01:03:16", 10.84461, -57.17496], + ["2019-08-27T03:02:57", 10.85253, -57.18254], + ["2019-08-27T04:02:57", 10.85656, -57.18855], + ["2019-08-27T05:02:57", 10.8615, -57.1955], + ["2019-08-27T06:02:29", 10.86757, -57.20044], + ["2019-08-27T08:03:12", 10.88337, -57.21118], + ["2019-08-27T09:04:28", 10.89302, -57.21713], + ["2019-08-27T10:01:16", 10.90128, -57.22385], + ["2019-08-27T13:01:27", 10.93105, -57.24427], + ["2019-08-27T14:00:58", 10.9397, -57.25137], + ["2019-08-27T15:01:27", 10.94847, -57.25989], + ["2019-08-27T16:01:29", 10.95728, -57.267], + ["2019-08-27T17:00:41", 10.96651, -57.27335], + ["2019-08-27T20:59:57", 11.00172, -57.29468], + ["2019-08-27T23:59:16", 11.02177, -57.31146], + ["2019-08-28T01:59:43", 11.03003, -57.32443], + ["2019-08-28T02:58:37", 11.0361, -57.33264], + ["2019-08-28T03:58:14", 11.04175, -57.341], + ["2019-08-28T04:58:37", 11.04545, -57.34955], + ["2019-08-28T05:58:07", 11.04909, -57.35709], + ["2019-08-28T06:57:29", 11.05418, -57.36415], + ["2019-08-28T07:57:29", 11.05916, -57.3717], + ["2019-08-28T08:57:30", 11.06407, -57.3797], + ["2019-08-28T09:57:56", 11.0697, -57.38793], + ["2019-08-28T10:57:56", 11.0767, -57.39531], + ["2019-08-28T11:57:56", 11.08408, -57.40149], + ["2019-08-28T12:55:23", 11.08856, -57.40796], + ["2019-08-28T13:57:29", 11.0929, -57.41742], + ["2019-08-28T15:54:29", 11.09952, -57.43769], + ["2019-08-28T16:55:00", 11.10424, -57.44858], + ["2019-08-28T17:54:29", 11.10939, -57.45966], + ["2019-08-28T18:53:58", 11.11551, -57.47012], + ["2019-08-28T19:54:41", 11.12326, -57.48052], + ["2019-08-28T20:54:41", 11.13056, -57.48953], + ["2019-08-28T21:54:06", 11.13619, -57.49784], + ["2019-08-28T22:54:06", 11.14181, -57.50668], + ["2019-08-28T23:53:30", 11.14441, -57.51593], + ["2019-08-29T00:53:30", 11.1467, -57.52747], + ["2019-08-29T01:53:30", 11.14945, -57.53786], + ["2019-08-29T02:53:30", 11.15271, -57.54816], + ["2019-08-29T03:53:27", 11.1561, -57.5589], + ["2019-08-29T04:51:27", 11.15874, -57.56964], + ["2019-08-29T05:51:27", 11.16179, -57.58011], + ["2019-08-29T09:51:26", 11.17996, -57.60922], + ["2019-08-29T10:51:59", 11.18477, -57.61697], + ["2019-08-29T14:50:41", 11.19813, -57.64725], + ["2019-08-29T15:50:29", 11.19963, -57.65637], + ["2019-08-29T16:50:06", 11.20255, -57.66589], + ["2019-08-29T18:49:27", 11.21111, -57.68857], + ["2019-08-29T19:49:27", 11.21694, -57.69937], + ["2019-08-29T20:48:54", 11.22399, -57.70891], + ["2019-08-29T21:48:54", 11.23111, -57.71646], + ["2019-08-29T22:48:29", 11.23739, -57.72263], + ["2019-08-29T23:48:30", 11.24302, -57.72842], + ["2019-08-30T00:48:28", 11.24827, -57.7337], + ["2019-08-30T01:49:27", 11.25229, -57.73825], + ["2019-08-30T02:47:08", 11.25397, -57.74423], + ["2019-08-30T03:47:29", 11.25492, -57.75194], + ["2019-08-30T04:47:29", 11.25543, -57.75803], + ["2019-08-30T05:47:29", 11.25667, -57.76447], + ["2019-08-30T11:46:13", 11.28912, -57.80518], + ["2019-08-30T12:48:13", 11.29584, -57.80905], + ["2019-08-30T13:45:06", 11.30079, -57.81268], + ["2019-08-30T15:44:59", 11.308, -57.82191], + ["2019-08-30T16:44:04", 11.30984, -57.82809], + ["2019-08-30T17:44:59", 11.31238, -57.83521], + ["2019-08-30T19:43:30", 11.32507, -57.85073], + ["2019-08-30T20:43:30", 11.33194, -57.85691], + ["2019-08-30T21:43:30", 11.33949, -57.86395], + ["2019-08-30T22:43:48", 11.34786, -57.87051], + ["2019-08-30T23:44:59", 11.35862, -57.87646], + ["2019-08-31T00:42:43", 11.36923, -57.88211], + ["2019-08-31T01:42:57", 11.37818, -57.88672], + ["2019-08-31T02:42:30", 11.38558, -57.8912], + ["2019-08-31T03:42:28", 11.39178, -57.89444], + ["2019-08-31T04:42:56", 11.39652, -57.89761], + ["2019-08-31T05:42:28", 11.40096, -57.89899], + ["2019-08-31T06:41:27", 11.40452, -57.90056], + ["2019-08-31T07:41:27", 11.4086, -57.9021], + ["2019-08-31T08:41:27", 11.41358, -57.90485], + ["2019-08-31T11:41:12", 11.4358, -57.91998], + ["2019-08-31T12:41:14", 11.44653, -57.92523], + ["2019-08-31T13:42:01", 11.45818, -57.92935], + ["2019-08-31T14:40:28", 11.46809, -57.93235], + ["2019-08-31T15:40:28", 11.47775, -57.93613], + ["2019-08-31T16:40:28", 11.48702, -57.93903], + ["2019-08-31T17:39:39", 11.49503, -57.94316], + ["2019-08-31T18:39:56", 11.50292, -57.94641], + ["2019-08-31T19:39:39", 11.50967, -57.94882], + ["2019-08-31T20:39:58", 11.51697, -57.95328], + ["2019-08-31T21:38:59", 11.5243, -57.95834], + ["2019-08-31T22:38:59", 11.5331, -57.96469], + ["2019-08-31T23:39:58", 11.54536, -57.97119], + ["2019-09-01T00:38:57", 11.55781, -57.97449], + ["2019-09-01T04:37:57", 11.60685, -57.97107], + ["2019-09-01T05:37:27", 11.61363, -57.96902], + ["2019-09-01T11:36:14", 11.63195, -57.97913], + ["2019-09-01T12:35:50", 11.63904, -57.98422], + ["2019-09-01T16:34:29", 11.68371, -58.00125], + ["2019-09-01T18:34:27", 11.70439, -58.00673], + ["2019-09-01T19:34:27", 11.71293, -58.01154], + ["2019-09-01T20:34:27", 11.71937, -58.01746], + ["2019-09-01T21:32:56", 11.72508, -58.02276], + ["2019-09-01T22:32:56", 11.72959, -58.02619], + ["2019-09-01T23:32:56", 11.73543, -58.02997], + ["2019-09-02T02:33:04", 11.76094, -58.04214], + ["2019-09-02T07:32:14", 11.79942, -58.04773], + ["2019-09-02T11:30:27", 11.82171, -58.06314], + ["2019-09-02T12:30:17", 11.82827, -58.07108], + ["2019-09-02T13:30:17", 11.83316, -58.07623], + ["2019-09-02T14:30:17", 11.83629, -58.08258], + ["2019-09-02T15:28:29", 11.84025, -58.08891], + ["2019-09-02T16:28:29", 11.84622, -58.09861], + ["2019-09-02T17:28:29", 11.85257, -58.10745], + ["2019-09-02T18:30:36", 11.86122, -58.11829], + ["2019-09-02T19:27:30", 11.86972, -58.12772], + ["2019-09-02T23:27:29", 11.91316, -58.16623], + ["2019-09-03T01:27:01", 11.93558, -58.17624], + ["2019-09-03T02:27:01", 11.94086, -58.17753], + ["2019-09-03T03:27:01", 11.94279, -58.17804], + ["2019-09-03T04:25:50", 11.94192, -58.17959], + ["2019-09-03T05:25:50", 11.94102, -58.18216], + ["2019-09-03T06:26:42", 11.94287, -58.18774], + ["2019-09-03T07:26:18", 11.94845, -58.19595], + ["2019-09-03T08:25:31", 11.95589, -58.20502], + ["2019-09-03T09:25:31", 11.9664, -58.21644], + ["2019-09-03T10:25:31", 11.97932, -58.22794], + ["2019-09-03T17:24:27", 12.01862, -58.26624], + ["2019-09-03T18:23:25", 12.02071, -58.27838], + ["2019-09-03T19:23:25", 12.02513, -58.29074], + ["2019-09-03T20:23:01", 12.03229, -58.30423], + ["2019-09-03T21:24:18", 12.04209, -58.31326], + ["2019-09-03T22:22:09", 12.05347, -58.31961], + ["2019-09-04T00:21:08", 12.07315, -58.32955], + ["2019-09-04T01:23:29", 12.08199, -58.33578], + ["2019-09-04T02:21:08", 12.0886, -58.34363], + ["2019-09-04T03:21:54", 12.09478, -58.35321], + ["2019-09-04T04:21:28", 12.1017, -58.36464], + ["2019-09-04T05:21:28", 12.1038, -58.37563], + ["2019-09-04T06:21:28", 12.10539, -58.38275], + ["2019-09-04T08:20:29", 12.11234, -58.39361], + ["2019-09-04T09:20:29", 12.11831, -58.3979], + ["2019-09-04T10:20:29", 12.1284, -58.40314], + ["2019-09-04T12:19:00", 12.15284, -58.41394], + ["2019-09-04T17:18:41", 12.18658, -58.44302], + ["2019-09-04T18:18:28", 12.19508, -58.45178], + ["2019-09-04T22:16:56", 12.2269, -58.48407], + ["2019-09-04T23:17:44", 12.23824, -58.49252], + ["2019-09-05T00:16:56", 12.25037, -58.49875], + ["2019-09-05T04:15:03", 12.31014, -58.52789], + ["2019-09-05T05:15:44", 12.32155, -58.53293], + ["2019-09-05T08:14:29", 12.35859, -58.54237], + ["2019-09-05T09:14:00", 12.36627, -58.54968], + ["2019-09-05T10:14:29", 12.36944, -58.55276], + ["2019-09-05T11:13:27", 12.37415, -58.55365], + ["2019-09-05T13:13:14", 12.38772, -58.55341], + ["2019-09-05T14:13:05", 12.39284, -58.55234], + ["2019-09-05T15:13:10", 12.40377, -58.5528], + ["2019-09-05T16:12:29", 12.41468, -58.55768], + ["2019-09-05T17:12:12", 12.42531, -58.56546], + ["2019-09-05T18:12:05", 12.43805, -58.57538], + ["2019-09-05T19:12:12", 12.44767, -58.58237], + ["2019-09-05T20:12:58", 12.45298, -58.58905], + ["2019-09-05T21:11:54", 12.45484, -58.59506], + ["2019-09-05T22:11:54", 12.45347, -58.60184], + ["2019-09-05T23:11:35", 12.45342, -58.60956], + ["2019-09-06T00:11:36", 12.45515, -58.61389], + ["2019-09-06T01:11:57", 12.45938, -58.6138], + ["2019-09-06T02:10:41", 12.46321, -58.61691], + ["2019-09-06T03:10:04", 12.46904, -58.62581], + ["2019-09-06T04:10:04", 12.47501, -58.63843], + ["2019-09-06T05:09:26", 12.48079, -58.65115], + ["2019-09-06T06:09:26", 12.48371, -58.6636], + ["2019-09-06T07:08:57", 12.48447, -58.67471], + ["2019-09-06T08:08:39", 12.48459, -58.68398], + ["2019-09-06T09:08:39", 12.4842, -58.69299], + ["2019-09-06T10:08:29", 12.48477, -58.70465], + ["2019-09-06T11:08:31", 12.48785, -58.7182], + ["2019-09-06T15:07:28", 12.49878, -58.76825], + ["2019-09-06T16:06:58", 12.50313, -58.78112], + ["2019-09-06T17:06:58", 12.50832, -58.79425], + ["2019-09-06T23:06:25", 12.55669, -58.86624], + ["2019-09-07T05:03:56", 12.58851, -58.92621], + ["2019-09-07T06:03:26", 12.59228, -58.92769], + ["2019-09-07T07:03:26", 12.5949, -58.92786], + ["2019-09-07T08:02:56", 12.59715, -58.9289], + ["2019-09-07T09:02:56", 12.59981, -58.93173], + ["2019-09-07T10:02:56", 12.60047, -58.9353], + ["2019-09-07T11:02:26", 12.59824, -58.94061], + ["2019-09-07T12:02:26", 12.59713, -58.94754], + ["2019-09-07T13:02:29", 12.59563, -58.95499], + ["2019-09-07T14:02:07", 12.59545, -58.96255], + ["2019-09-07T15:00:58", 12.59703, -58.96788], + ["2019-09-07T16:00:58", 12.59896, -58.97243], + ["2019-09-07T17:00:58", 12.60282, -58.97818], + ["2019-09-07T18:00:58", 12.60778, -58.98495], + ["2019-09-07T19:00:57", 12.6102, -58.98907], + ["2019-09-07T20:00:58", 12.61181, -58.99231], + ["2019-09-07T21:00:13", 12.61109, -58.99658], + ["2019-09-07T22:00:13", 12.60809, -59.00302], + ["2019-09-07T22:59:27", 12.60307, -59.01102], + ["2019-09-07T23:59:27", 12.59745, -59.01797], + ["2019-09-08T00:58:57", 12.5918, -59.02487], + ["2019-09-08T01:58:58", 12.58542, -59.03421], + ["2019-09-08T02:58:27", 12.57629, -59.04295], + ["2019-09-08T03:58:27", 12.56998, -59.0517], + ["2019-09-08T04:58:09", 12.5647, -59.06232], + ["2019-09-08T05:57:37", 12.55598, -59.07156], + ["2019-09-08T06:56:56", 12.54867, -59.07962], + ["2019-09-08T07:57:23", 12.54046, -59.08694], + ["2019-09-08T08:56:56", 12.53008, -59.09515], + ["2019-09-08T09:56:55", 12.51865, -59.10275], + ["2019-09-08T11:56:09", 12.49127, -59.12231], + ["2019-09-08T13:55:57", 12.46452, -59.15454], + ["2019-09-08T14:55:56", 12.451, -59.17123], + ["2019-09-08T15:55:57", 12.43937, -59.18991], + ["2019-09-08T16:56:01", 12.42918, -59.21017], + ["2019-09-08T18:54:57", 12.41289, -59.24557], + ["2019-09-08T19:54:57", 12.40843, -59.26523], + ["2019-09-08T20:54:57", 12.40513, -59.28351], + ["2019-09-08T21:54:25", 12.4009, -59.29919], + ["2019-09-08T22:54:25", 12.39588, -59.31464], + ["2019-09-09T03:54:34", 12.35699, -59.37347], + ["2019-09-09T09:51:56", 12.31671, -59.47836], + ["2019-09-09T10:50:58", 12.31529, -59.49488], + ["2019-09-09T11:50:58", 12.31568, -59.5123], + ["2019-09-09T13:50:09", 12.31953, -59.54755], + ["2019-09-09T14:50:00", 12.3221, -59.56191], + ["2019-09-09T15:50:00", 12.32347, -59.57727], + ["2019-09-09T16:49:27", 12.32329, -59.59222], + ["2019-09-09T17:49:27", 12.32312, -59.60587], + ["2019-09-09T18:49:27", 12.32385, -59.61926], + ["2019-09-09T20:49:05", 12.33054, -59.64444], + ["2019-09-09T21:49:05", 12.33251, -59.65792], + ["2019-09-09T22:49:05", 12.33577, -59.67285], + ["2019-09-09T23:50:05", 12.33898, -59.68964], + ["2019-09-10T02:47:28", 12.35439, -59.73654], + ["2019-09-10T03:48:29", 12.35947, -59.75577], + ["2019-09-10T04:46:37", 12.36473, -59.77209], + ["2019-09-10T05:46:58", 12.37021, -59.78802], + ["2019-09-10T06:46:58", 12.3767, -59.80295], + ["2019-09-10T07:46:58", 12.38507, -59.81516], + ["2019-09-10T14:44:03", 12.45603, -59.88138], + ["2019-09-10T16:43:26", 12.47789, -59.90286], + ["2019-09-10T19:42:35", 12.52735, -59.94488], + ["2019-09-10T20:42:35", 12.54722, -59.95741], + ["2019-09-10T21:42:35", 12.56722, -59.97089], + ["2019-09-10T22:42:26", 12.58438, -59.98294], + ["2019-09-10T23:42:29", 12.59953, -59.99429], + ["2019-09-11T00:42:29", 12.61306, -60.00491], + ["2019-09-11T01:42:29", 12.62331, -60.01199], + ["2019-09-11T02:42:28", 12.63357, -60.01935], + ["2019-09-11T03:41:16", 12.64381, -60.02663], + ["2019-09-11T04:41:16", 12.65557, -60.03513], + ["2019-09-11T05:41:16", 12.66896, -60.04526], + ["2019-09-11T06:42:41", 12.68283, -60.05549], + ["2019-09-11T07:42:41", 12.69682, -60.0633], + ["2019-09-11T08:42:41", 12.70708, -60.06699], + ["2019-09-11T10:41:33", 12.72046, -60.06372], + ["2019-09-11T11:40:43", 12.72433, -60.05932], + ["2019-09-11T12:40:43", 12.72725, -60.05675], + ["2019-09-11T13:40:43", 12.73094, -60.05649], + ["2019-09-11T15:38:59", 12.74085, -60.0594], + ["2019-09-11T16:39:06", 12.74766, -60.06158], + ["2019-09-11T17:38:59", 12.75604, -60.06644], + ["2019-09-11T21:39:01", 12.78458, -60.09195], + ["2019-09-11T22:38:27", 12.78617, -60.09894], + ["2019-09-11T23:38:29", 12.78792, -60.10852], + ["2019-09-12T00:38:01", 12.79011, -60.11584], + ["2019-09-12T01:38:41", 12.7932, -60.12424], + ["2019-09-12T02:37:34", 12.7983, -60.1351], + ["2019-09-12T03:37:29", 12.80553, -60.14563], + ["2019-09-12T06:36:26", 12.83008, -60.17978], + ["2019-09-12T07:36:57", 12.83947, -60.19153], + ["2019-09-12T08:36:26", 12.84808, -60.20276], + ["2019-09-12T09:36:44", 12.85786, -60.21414], + ["2019-09-12T10:36:27", 12.86864, -60.22565], + ["2019-09-12T13:35:29", 12.90438, -60.26324], + ["2019-09-12T20:34:01", 13.00913, -60.36502], + ["2019-09-13T01:33:36", 13.09954, -60.4216], + ["2019-09-13T07:31:57", 13.1951, -60.50824], + ["2019-09-13T11:31:25", 13.24986, -60.53696], + ["2019-09-13T12:30:57", 13.26405, -60.54559], + ["2019-09-13T13:30:58", 13.2795, -60.55698], + ["2019-09-13T14:30:28", 13.29536, -60.57094], + ["2019-09-13T15:30:28", 13.31158, -60.58914], + ["2019-09-13T16:30:59", 13.32903, -60.60815] + ], + "drifter_18": [ + ["2019-08-08T12:23:17", 11.83018, -56.09376], + ["2019-08-09T00:20:29", 11.83233, -56.09659], + ["2019-08-09T23:13:30", 11.92091, -56.20355], + ["2019-08-10T00:10:55", 11.83572, -56.48712], + ["2019-08-10T06:08:54", 11.83173, -56.50366], + ["2019-08-10T07:11:30", 11.84595, -56.61157], + ["2019-08-10T08:11:30", 11.85091, -56.62723], + ["2019-08-10T09:11:30", 11.85649, -56.64165], + ["2019-08-10T19:05:15", 11.86095, -56.65598], + ["2019-08-10T20:08:31", 11.93369, -56.76981], + ["2019-08-12T12:54:27", 11.94466, -56.77768], + ["2019-08-12T15:55:17", 12.08518, -57.09592], + ["2019-08-12T23:53:55", 12.10752, -57.13242], + ["2019-08-13T14:48:04", 12.201, -57.19632], + ["2019-08-13T15:50:00", 12.34046, -57.20874], + ["2019-08-14T12:42:17", 12.34435, -57.20715], + ["2019-08-14T13:43:43", 12.31964, -57.29779], + ["2019-08-15T02:38:58", 12.31917, -57.30536], + ["2019-08-15T06:36:01", 12.33577, -57.44125], + ["2019-08-15T08:35:10", 12.34294, -57.49042], + ["2019-08-15T19:34:30", 12.3537, -57.51395], + ["2019-08-16T09:27:35", 12.44355, -57.65811], + ["2019-08-16T10:30:10", 12.54129, -57.76486], + ["2019-08-16T13:29:42", 12.54473, -57.77185], + ["2019-08-17T00:25:10", 12.54942, -57.79016], + ["2019-08-17T07:23:21", 12.60099, -57.89725], + ["2019-08-17T09:22:09", 12.64364, -57.96268], + ["2019-08-17T10:22:09", 12.65837, -57.98609], + ["2019-08-17T11:22:09", 12.66751, -57.99871], + ["2019-08-17T12:24:13", 12.67747, -58.00815], + ["2019-08-17T17:22:05", 12.68816, -58.01816], + ["2019-08-17T18:19:49", 12.70566, -58.06903], + ["2019-08-17T23:19:35", 12.70506, -58.08206], + ["2019-08-18T06:21:19", 12.717, -58.14664], + ["2019-08-18T12:15:56", 12.73215, -58.21793], + ["2019-08-18T13:18:01", 12.75197, -58.28854], + ["2019-08-18T15:18:24", 12.76058, -58.30078], + ["2019-08-18T17:16:00", 12.77768, -58.32281], + ["2019-08-18T18:16:00", 12.79007, -58.34477], + ["2019-08-18T19:16:00", 12.79501, -58.35601], + ["2019-08-18T23:13:46", 12.7993, -58.36871], + ["2019-08-19T05:11:33", 12.83128, -58.42642], + ["2019-08-19T11:08:57", 12.90243, -58.50934], + ["2019-08-19T12:09:33", 13.00618, -58.58319], + ["2019-08-19T13:08:08", 13.01991, -58.58588], + ["2019-08-19T14:08:08", 13.03451, -58.58945], + ["2019-08-19T15:08:08", 13.04464, -58.59649], + ["2019-08-19T16:07:57", 13.05666, -58.60361], + ["2019-08-19T17:06:58", 13.07004, -58.60538], + ["2019-08-19T18:06:58", 13.08247, -58.60318], + ["2019-08-19T19:06:58", 13.09118, -58.60404], + ["2019-08-19T20:07:29", 13.09843, -58.60687], + ["2019-08-19T21:06:09", 13.1074, -58.6069], + ["2019-08-19T22:06:09", 13.11772, -58.60768], + ["2019-08-19T23:06:00", 13.12416, -58.60983], + ["2019-08-20T00:05:23", 13.1255, -58.61456], + ["2019-08-20T01:05:24", 13.127, -58.62311], + ["2019-08-20T02:05:03", 13.12636, -58.63116], + ["2019-08-20T03:04:56", 13.12338, -58.63263], + ["2019-08-20T04:05:00", 13.12082, -58.63403], + ["2019-08-20T05:05:15", 13.11799, -58.63434], + ["2019-08-20T06:04:34", 13.11673, -58.6387], + ["2019-08-20T07:03:55", 13.11572, -58.64532], + ["2019-08-20T09:02:37", 13.11559, -58.65207], + ["2019-08-20T10:02:37", 13.12157, -58.67183], + ["2019-08-20T11:02:37", 13.12372, -58.68762], + ["2019-08-20T12:02:27", 13.12544, -58.69766], + ["2019-08-20T13:01:58", 13.12241, -58.7049], + ["2019-08-20T14:01:08", 13.12111, -58.71246], + ["2019-08-20T15:01:08", 13.12084, -58.72227], + ["2019-08-20T16:00:27", 13.12204, -58.73575], + ["2019-08-20T17:00:27", 13.12557, -58.75401], + ["2019-08-20T17:59:55", 13.12999, -58.77573], + ["2019-08-20T18:59:57", 13.13541, -58.793], + ["2019-08-20T19:59:55", 13.14272, -58.80267], + ["2019-08-20T20:59:28", 13.15004, -58.81158], + ["2019-08-20T21:59:28", 13.15557, -58.82221], + ["2019-08-20T22:58:58", 13.15892, -58.83405], + ["2019-08-20T23:58:41", 13.16149, -58.84564], + ["2019-08-21T00:57:57", 13.16385, -58.85574], + ["2019-08-21T01:57:57", 13.16684, -58.86693], + ["2019-08-21T02:57:28", 13.16937, -58.88083], + ["2019-08-21T03:57:28", 13.17274, -58.89499], + ["2019-08-21T04:57:28", 13.17948, -58.9034], + ["2019-08-21T05:56:58", 13.18772, -58.90915], + ["2019-08-21T06:56:07", 13.19501, -58.91418], + ["2019-08-21T07:55:55", 13.20375, -58.91992], + ["2019-08-21T08:55:45", 13.21101, -58.9263], + ["2019-08-21T09:55:07", 13.21903, -58.93033], + ["2019-08-21T10:54:56", 13.22257, -58.93372], + ["2019-08-21T11:54:26", 13.22381, -58.936], + ["2019-08-21T12:54:26", 13.22461, -58.93886], + ["2019-08-21T13:53:56", 13.22487, -58.94727], + ["2019-08-21T17:52:29", 13.2278, -58.95694], + ["2019-08-21T18:51:40", 13.28587, -58.99414], + ["2019-08-21T19:51:58", 13.29367, -58.99815], + ["2019-08-21T20:51:40", 13.3006, -59.00168], + ["2019-08-21T21:51:59", 13.30551, -59.00708], + ["2019-08-21T22:51:59", 13.31029, -59.01241], + ["2019-08-21T23:50:42", 13.31866, -59.01859], + ["2019-08-22T00:50:26", 13.3262, -59.02341], + ["2019-08-22T01:49:59", 13.3379, -59.02811], + ["2019-08-22T02:49:28", 13.35151, -59.03152], + ["2019-08-22T03:49:28", 13.36483, -59.03569], + ["2019-08-22T04:49:28", 13.37346, -59.04135], + ["2019-08-22T08:48:56", 13.37841, -59.04739], + ["2019-08-22T09:47:49", 13.39261, -59.06149], + ["2019-08-22T10:47:49", 13.39717, -59.06826], + ["2019-08-22T11:47:57", 13.40228, -59.0759], + ["2019-08-22T12:47:57", 13.41155, -59.08298], + ["2019-08-22T13:47:57", 13.42333, -59.0888], + ["2019-08-22T14:47:26", 13.43642, -59.09695], + ["2019-08-22T15:47:26", 13.45033, -59.10583], + ["2019-08-22T21:46:26", 13.46519, -59.11264], + ["2019-08-23T07:43:59", 13.52567, -59.14441], + ["2019-08-23T08:44:27", 13.53739, -59.22128], + ["2019-08-23T09:44:27", 13.53593, -59.23481], + ["2019-08-23T13:42:30", 13.53713, -59.25052], + ["2019-08-23T22:37:35", 13.54962, -59.30502], + ["2019-08-24T02:37:33", 13.63125, -59.37305], + ["2019-08-24T13:35:12", 13.65288, -59.38931], + ["2019-08-24T22:31:54", 13.68025, -59.42548], + ["2019-08-24T23:31:02", 13.72248, -59.50812], + ["2019-08-25T00:31:02", 13.72487, -59.51519], + ["2019-08-25T01:31:02", 13.72629, -59.52154], + ["2019-08-25T02:30:37", 13.72685, -59.52609], + ["2019-08-25T03:30:37", 13.72543, -59.53184], + ["2019-08-25T04:30:37", 13.72547, -59.53828], + ["2019-08-25T20:27:17", 13.7262, -59.54489], + ["2019-08-25T23:27:06", 13.74754, -59.65225], + ["2019-08-26T04:25:47", 13.75853, -59.67239], + ["2019-08-26T18:20:32", 13.77402, -59.72345], + ["2019-08-26T19:22:30", 13.79988, -59.84186], + ["2019-08-27T00:18:40", 13.8044, -59.85095], + ["2019-08-27T01:19:17", 13.82911, -59.91211], + ["2019-08-27T02:17:59", 13.83644, -59.92788], + ["2019-08-27T03:19:17", 13.84432, -59.9415], + ["2019-08-27T04:20:41", 13.84945, -59.95432], + ["2019-08-27T06:17:36", 13.85544, -59.96884], + ["2019-08-27T08:17:29", 13.86836, -60.00192], + ["2019-08-27T10:18:57", 13.89424, -60.04001], + ["2019-08-27T12:16:04", 13.9403, -60.06943], + ["2019-08-27T13:14:36", 13.9925, -60.08686], + ["2019-08-27T14:16:04", 14.01873, -60.09494], + ["2019-08-27T18:14:05", 14.04648, -60.1012], + ["2019-08-27T19:15:42", 14.16338, -60.11551], + ["2019-08-27T21:15:42", 14.2196, -60.11057], + ["2019-08-27T22:11:55", 14.25003, -60.11057], + ["2019-08-27T23:13:06", 14.26973, -60.10458], + ["2019-08-28T03:11:30", 14.28879, -60.09604], + ["2019-08-28T05:09:37", 14.3328, -60.06091], + ["2019-08-28T06:09:37", 14.33964, -60.05243], + ["2019-08-28T13:10:02", 14.3408, -60.04977], + ["2019-08-29T16:02:39", 14.30971, -60.06384], + ["2019-08-29T21:02:31", 14.43359, -60.547], + ["2019-08-29T22:01:26", 14.47017, -60.55948], + ["2019-08-29T23:01:26", 14.47165, -60.56471], + ["2019-08-30T00:01:26", 14.47388, -60.57201], + ["2019-08-30T04:58:11", 14.47294, -60.58197], + ["2019-08-30T22:52:33", 14.46602, -60.60339], + ["2019-08-30T23:51:28", 14.38818, -60.80667], + ["2019-08-31T00:51:28", 14.37431, -60.81932], + ["2019-08-31T01:52:10", 14.36053, -60.83365], + ["2019-08-31T02:51:29", 14.34678, -60.85107], + ["2019-08-31T07:50:05", 14.33609, -60.87259], + ["2019-08-31T08:49:59", 14.33119, -60.97772], + ["2019-08-31T09:48:56", 14.33795, -60.99756], + ["2019-08-31T10:48:56", 14.34366, -61.01981], + ["2019-08-31T11:48:38", 14.34306, -61.04453], + ["2019-08-31T12:48:28", 14.34587, -61.06757], + ["2019-08-31T13:47:58", 14.34902, -61.0903], + ["2019-08-31T14:47:10", 14.35204, -61.11176], + ["2019-08-31T15:47:10", 14.35524, -61.13262], + ["2019-08-31T16:46:59", 14.36151, -61.15253], + ["2019-08-31T17:46:27", 14.36379, -61.17279], + ["2019-08-31T18:45:56", 14.36168, -61.19525], + ["2019-08-31T19:45:55", 14.36295, -61.2149], + ["2019-08-31T20:45:26", 14.36643, -61.23392], + ["2019-08-31T21:44:59", 14.37142, -61.24896], + ["2019-08-31T22:44:29", 14.37359, -61.2627], + ["2019-08-31T23:44:27", 14.37799, -61.27728], + ["2019-09-01T00:43:55", 14.3818, -61.29352], + ["2019-09-01T01:43:55", 14.38839, -61.31291], + ["2019-09-01T02:43:30", 14.39633, -61.33548], + ["2019-09-01T03:42:57", 14.40413, -61.35773], + ["2019-09-01T04:42:57", 14.41248, -61.37922], + ["2019-09-01T05:42:27", 14.41879, -61.39587], + ["2019-09-01T06:41:57", 14.42442, -61.41], + ["2019-09-01T07:41:31", 14.43085, -61.41751], + ["2019-09-01T08:41:25", 14.43718, -61.42041], + ["2019-09-01T09:40:56", 14.44326, -61.42191], + ["2019-09-01T10:39:57", 14.44644, -61.42358], + ["2019-09-01T11:39:57", 14.4447, -61.42776], + ["2019-09-01T12:39:57", 14.43831, -61.4336], + ["2019-09-01T13:39:38", 14.42964, -61.43884], + ["2019-09-01T14:39:27", 14.42494, -61.44983], + ["2019-09-01T15:38:57", 14.42567, -61.46689], + ["2019-09-01T16:38:30", 14.42883, -61.48499], + ["2019-09-01T17:37:30", 14.43165, -61.50076], + ["2019-09-01T18:37:30", 14.4349, -61.51122], + ["2019-09-01T19:37:36", 14.43614, -61.51422], + ["2019-09-01T20:36:46", 14.43491, -61.51712], + ["2019-09-01T21:36:33", 14.43454, -61.52701], + ["2019-09-01T22:36:27", 14.43581, -61.53836], + ["2019-09-02T03:35:33", 14.43659, -61.54883], + ["2019-09-02T04:35:00", 14.40584, -61.59903], + ["2019-09-02T13:34:40", 14.40353, -61.61029], + ["2019-09-02T16:31:22", 14.35751, -61.72382], + ["2019-09-02T21:31:00", 14.3543, -61.75418], + ["2019-09-02T22:29:14", 14.37095, -61.81091], + ["2019-09-02T23:29:14", 14.36731, -61.81915], + ["2019-09-03T00:29:14", 14.36504, -61.82439], + ["2019-09-03T07:27:12", 14.36551, -61.83057], + ["2019-09-03T08:26:50", 14.36664, -61.85837], + ["2019-09-03T09:26:50", 14.36845, -61.86838], + ["2019-09-03T14:27:43", 14.36669, -61.87662], + ["2019-09-03T15:25:24", 14.35752, -61.91153], + ["2019-09-04T02:24:24", 14.3615, -61.91885], + ["2019-09-04T10:20:59", 14.41055, -62.0209], + ["2019-09-04T11:19:09", 14.47207, -62.0351], + ["2019-09-04T12:19:09", 14.47147, -62.03549], + ["2019-09-04T13:19:09", 14.46928, -62.04081], + ["2019-09-04T17:19:11", 14.46735, -62.04999], + ["2019-09-04T19:18:27", 14.45783, -62.09647], + ["2019-09-04T21:17:11", 14.43892, -62.09937], + ["2019-09-05T15:12:06", 14.42326, -62.10446], + ["2019-09-05T20:09:46", 14.2679, -62.21799], + ["2019-09-06T02:10:05", 14.27638, -62.26489], + ["2019-09-06T03:10:28", 14.25792, -62.2652], + ["2019-09-06T04:10:28", 14.25149, -62.26467], + ["2019-09-06T10:05:26", 14.24527, -62.26785], + ["2019-09-06T11:05:17", 14.19341, -62.27551], + ["2019-09-06T12:05:17", 14.18207, -62.28036], + ["2019-09-06T13:06:53", 14.17374, -62.28156], + ["2019-09-06T14:06:53", 14.16534, -62.28549], + ["2019-09-06T15:06:53", 14.15375, -62.29081], + ["2019-09-06T22:03:33", 14.14281, -62.29373], + ["2019-09-07T00:02:00", 14.08659, -62.33096], + ["2019-09-07T01:02:00", 14.08181, -62.34378], + ["2019-09-07T02:02:00", 14.07958, -62.35047], + ["2019-09-07T09:00:12", 14.07271, -62.35287], + ["2019-09-07T11:59:27", 14.00897, -62.37155], + ["2019-09-07T12:58:57", 13.99855, -62.39841], + ["2019-09-07T16:58:09", 13.99776, -62.40738], + ["2019-09-07T19:57:09", 13.97817, -62.4166], + ["2019-09-07T21:55:59", 13.96492, -62.42545], + ["2019-09-07T22:55:59", 13.96554, -62.44697], + ["2019-09-07T23:55:59", 13.96739, -62.45736], + ["2019-09-08T00:57:06", 13.96833, -62.46869], + ["2019-09-08T02:53:58", 13.97148, -62.48178], + ["2019-09-08T03:56:30", 13.97188, -62.48831], + ["2019-09-08T04:53:58", 13.96814, -62.48367], + ["2019-09-08T05:55:56", 13.96304, -62.47913], + ["2019-09-08T06:55:56", 13.95831, -62.47766], + ["2019-09-08T07:53:16", 13.95265, -62.47989], + ["2019-09-08T08:54:22", 13.94679, -62.48529], + ["2019-09-08T12:53:28", 13.94392, -62.48978], + ["2019-09-08T13:51:33", 13.92787, -62.52368], + ["2019-09-08T17:52:39", 13.92472, -62.52914], + ["2019-09-09T02:50:28", 13.91411, -62.53351], + ["2019-09-09T11:45:13", 13.88876, -62.60504], + ["2019-09-09T18:43:15", 13.82014, -62.65143], + ["2019-09-09T20:42:37", 13.77979, -62.76788], + ["2019-09-10T18:37:47", 13.77767, -62.79761], + ["2019-09-10T20:35:42", 13.69022, -63.14645], + ["2019-09-10T22:36:59", 13.68826, -63.19003], + ["2019-09-11T03:34:37", 13.68707, -63.22491], + ["2019-09-11T04:33:51", 13.66174, -63.28845], + ["2019-09-11T09:34:28", 13.6549, -63.29636], + ["2019-09-11T15:30:43", 13.60163, -63.37408], + ["2019-09-11T16:29:22", 13.5469, -63.48184], + ["2019-09-11T17:29:22", 13.54041, -63.49494], + ["2019-09-11T18:29:26", 13.53612, -63.50601], + ["2019-09-11T19:29:26", 13.53166, -63.51735], + ["2019-09-11T20:29:11", 13.52664, -63.52808], + ["2019-09-11T22:28:29", 13.51779, -63.53952], + ["2019-09-11T23:28:08", 13.49369, -63.56683], + ["2019-09-12T00:28:08", 13.48499, -63.58291], + ["2019-09-12T01:27:29", 13.47864, -63.60257], + ["2019-09-12T02:26:28", 13.47182, -63.62656], + ["2019-09-12T03:26:28", 13.46588, -63.65262], + ["2019-09-12T04:26:28", 13.46034, -63.67528], + ["2019-09-12T05:26:10", 13.45716, -63.69382], + ["2019-09-12T06:25:57", 13.45409, -63.71127], + ["2019-09-12T07:25:53", 13.45121, -63.72839], + ["2019-09-12T09:24:43", 13.44837, -63.74274], + ["2019-09-12T10:24:43", 13.4418, -63.76101], + ["2019-09-12T11:24:43", 13.43699, -63.76985], + ["2019-09-12T16:25:27", 13.42914, -63.77963], + ["2019-09-12T17:22:27", 13.40785, -63.84793], + ["2019-09-12T18:22:27", 13.40801, -63.86452], + ["2019-09-12T19:23:02", 13.40822, -63.87671], + ["2019-09-12T20:21:30", 13.40837, -63.88821], + ["2019-09-12T21:21:30", 13.40764, -63.9015], + ["2019-09-12T22:20:57", 13.40644, -63.91498], + ["2019-09-13T01:22:31", 13.4052, -63.92746], + ["2019-09-13T02:20:59", 13.38916, -63.95721], + ["2019-09-13T03:20:59", 13.38483, -63.96666], + ["2019-09-13T09:17:11", 13.38148, -63.97842], + ["2019-09-13T19:16:06", 13.35707, -64.07959], + ["2019-09-13T22:13:57", 13.34888, -64.22968], + ["2019-09-13T23:13:03", 13.3571, -64.29147], + ["2019-09-14T00:13:03", 13.36424, -64.31439], + ["2019-09-14T03:14:29", 13.37025, -64.33353], + ["2019-09-14T04:11:48", 13.38354, -64.38129], + ["2019-09-14T05:14:29", 13.38846, -64.39529], + ["2019-09-14T09:12:27", 13.39243, -64.4079], + ["2019-09-14T11:11:18", 13.40942, -64.45508], + ["2019-09-14T17:08:59", 13.42172, -64.48199], + ["2019-09-14T19:07:31", 13.46482, -64.5665], + ["2019-09-14T22:07:55", 13.4813, -64.59338], + ["2019-09-14T23:05:56", 13.51705, -64.63589], + ["2019-09-15T00:05:56", 13.53024, -64.64837], + ["2019-09-15T01:06:59", 13.54136, -64.65833], + ["2019-09-15T11:03:58", 13.55253, -64.66846], + ["2019-09-15T12:04:00", 13.64728, -64.77115], + ["2019-09-15T14:02:08", 13.65807, -64.78076], + ["2019-09-15T15:01:30", 13.67786, -64.79639], + ["2019-09-15T16:01:30", 13.69402, -64.80596], + ["2019-09-15T17:01:59", 13.70986, -64.81762], + ["2019-09-15T22:01:20", 13.72984, -64.83325], + ["2019-09-15T23:01:57", 13.83663, -64.8754], + ["2019-09-16T11:55:06", 13.8542, -64.88251], + ["2019-09-16T12:54:29", 14.03901, -65.05692], + ["2019-09-16T13:54:29", 14.06241, -65.06502], + ["2019-09-16T18:53:08", 14.08219, -65.07214], + ["2019-09-16T22:54:00", 14.16938, -65.12054], + ["2019-09-17T07:51:36", 14.24315, -65.18741], + ["2019-09-17T08:48:30", 14.45703, -65.33817], + ["2019-09-17T09:50:56", 14.47917, -65.35413], + ["2019-09-17T16:46:57", 14.50456, -65.37595], + ["2019-09-17T18:44:58", 14.68495, -65.58914], + ["2019-09-18T06:44:17", 14.74613, -65.65304], + ["2019-09-18T16:38:54", 15.04942, -65.93759], + ["2019-09-20T09:28:38", 15.25278, -66.15814], + ["2019-09-21T17:22:05", 15.64894, -66.55377], + ["2019-09-21T18:19:14", 16.06887, -66.54053], + ["2019-09-22T14:12:31", 16.08539, -66.54385], + ["2019-09-23T16:06:49", 16.36633, -66.58411], + ["2019-09-25T08:52:22", 16.64042, -66.73654], + ["2019-09-26T03:46:28", 16.86079, -66.75601], + ["2019-09-26T09:44:50", 17.02592, -66.63083], + ["2019-09-26T10:46:34", 17.0487, -66.56049], + ["2019-09-26T11:44:39", 17.05011, -66.55276], + ["2019-09-26T20:43:53", 17.05092, -66.54622], + ["2019-09-26T21:45:30", 17.07818, -66.50134], + ["2019-09-26T22:41:03", 17.07856, -66.4953], + ["2019-09-26T23:41:03", 17.07829, -66.48777], + ["2019-09-27T00:41:03", 17.07872, -66.48159], + ["2019-09-27T06:40:19", 17.07859, -66.47687], + ["2019-09-27T13:39:58", 17.08207, -66.4455], + ["2019-09-27T14:36:16", 17.06644, -66.40994], + ["2019-09-27T15:36:16", 17.06412, -66.40754], + ["2019-09-27T16:36:16", 17.06305, -66.40461], + ["2019-09-27T22:34:59", 17.06361, -66.40076], + ["2019-09-28T02:35:59", 17.05019, -66.37653], + ["2019-09-28T07:31:55", 17.02735, -66.36099], + ["2019-09-28T12:29:55", 16.99947, -66.33508], + ["2019-09-28T13:30:58", 16.96171, -66.30481], + ["2019-09-28T17:31:00", 16.9518, -66.29892], + ["2019-09-29T14:22:29", 16.93403, -66.26682], + ["2019-09-30T17:14:48", 16.81302, -66.0571], + ["2019-09-30T20:13:27", 16.82411, -65.70544], + ["2019-09-30T21:13:27", 16.84754, -65.67821], + ["2019-09-30T22:14:35", 16.85574, -65.67194], + ["2019-09-30T23:13:04", 16.86552, -65.66385], + ["2019-10-01T00:13:04", 16.87502, -65.65192], + ["2019-10-01T01:13:04", 16.88171, -65.63854], + ["2019-10-01T08:13:05", 16.88574, -65.62291], + ["2019-10-01T12:12:04", 16.89743, -65.57178], + ["2019-10-01T13:11:12", 16.92561, -65.56482], + ["2019-10-01T14:11:12", 16.93209, -65.56086], + ["2019-10-01T19:09:12", 16.94187, -65.55624], + ["2019-10-02T00:09:23", 16.98239, -65.54107], + ["2019-10-02T04:04:56", 17.02144, -65.54564], + ["2019-10-02T06:04:29", 17.05377, -65.54147], + ["2019-10-02T16:04:43", 17.06617, -65.53583], + ["2019-10-02T22:02:27", 17.11002, -65.55878], + ["2019-10-03T02:01:17", 17.13667, -65.58344], + ["2019-10-03T09:58:14", 17.14264, -65.5976], + ["2019-10-03T10:59:55", 17.13623, -65.65137], + ["2019-10-03T11:56:35", 17.13398, -65.66003], + ["2019-10-03T12:57:59", 17.13383, -65.6687], + ["2019-10-03T16:57:46", 17.13644, -65.67819], + ["2019-10-03T17:57:28", 17.15455, -65.70923], + ["2019-10-03T19:55:40", 17.16071, -65.71735], + ["2019-10-03T20:55:40", 17.17421, -65.73456], + ["2019-10-03T21:55:40", 17.17661, -65.73576], + ["2019-10-04T00:54:32", 17.17734, -65.73688], + ["2019-10-04T08:52:34", 17.17366, -65.74506], + ["2019-10-04T12:49:30", 17.14489, -65.77625], + ["2019-10-04T13:49:05", 17.11788, -65.79849], + ["2019-10-04T14:48:58", 17.11246, -65.80991], + ["2019-10-04T20:46:53", 17.10887, -65.82028], + ["2019-10-04T21:47:13", 17.11195, -65.85596], + ["2019-10-04T22:45:12", 17.10821, -65.8638], + ["2019-10-05T03:46:54", 17.10345, -65.8692], + ["2019-10-05T10:44:39", 17.07315, -65.90585], + ["2019-10-05T18:42:13", 17.06094, -65.94002], + ["2019-10-05T19:39:29", 17.01407, -65.97742], + ["2019-10-05T20:38:51", 17.01344, -65.98099], + ["2019-10-05T21:38:51", 17.013, -65.98604], + ["2019-10-05T23:40:00", 17.01171, -65.98956], + ["2019-10-06T00:38:13", 17.00686, -65.98947], + ["2019-10-06T01:40:30", 16.9986, -65.98862], + ["2019-10-06T02:37:12", 16.98876, -65.9881], + ["2019-10-06T03:40:03", 16.97925, -65.98541], + ["2019-10-06T05:37:20", 16.96947, -65.98755], + ["2019-10-06T07:37:28", 16.95309, -66.00143], + ["2019-10-06T11:37:14", 16.94425, -66.01398], + ["2019-10-06T12:34:47", 16.92399, -66.01318], + ["2019-10-06T14:34:00", 16.91388, -66.00951], + ["2019-10-07T02:32:58", 16.89602, -66.00409], + ["2019-10-07T08:29:41", 16.81739, -66.02817], + ["2019-10-07T17:25:04", 16.79236, -66.03827], + ["2019-10-07T20:24:15", 16.73852, -66.02347], + ["2019-10-08T04:21:32", 16.71558, -66.01642], + ["2019-10-08T11:22:06", 16.69197, -66.0455], + ["2019-10-08T13:19:37", 16.69422, -66.06479], + ["2019-10-08T15:19:37", 16.68916, -66.06986], + ["2019-10-08T16:21:59", 16.68852, -66.07004], + ["2019-10-09T04:18:02", 16.68417, -66.07196], + ["2019-10-09T11:12:44", 16.6353, -66.09244], + ["2019-10-09T14:13:34", 16.60513, -66.10208], + ["2019-10-10T12:05:29", 16.59689, -66.10451], + ["2019-10-10T13:05:12", 16.41697, -66.09014], + ["2019-10-10T14:04:30", 16.41066, -66.09079], + ["2019-10-10T15:05:14", 16.40736, -66.08951], + ["2019-10-10T16:04:30", 16.40485, -66.08743], + ["2019-10-10T17:04:28", 16.4047, -66.08377], + ["2019-10-10T18:05:33", 16.40765, -66.07863], + ["2019-10-10T19:03:58", 16.41076, -66.07223], + ["2019-10-10T20:03:58", 16.41254, -66.06496], + ["2019-10-10T21:03:30", 16.4128, -66.06032], + ["2019-10-10T22:02:57", 16.4103, -66.05765], + ["2019-10-10T23:02:57", 16.407, -66.05544], + ["2019-10-11T00:02:58", 16.40279, -66.05347], + ["2019-10-11T01:02:55", 16.39691, -66.04977], + ["2019-10-11T02:02:24", 16.38894, -66.04644], + ["2019-10-11T03:02:28", 16.38235, -66.04528], + ["2019-10-11T04:03:03", 16.37703, -66.04413], + ["2019-10-11T05:01:58", 16.37334, -66.04333], + ["2019-10-11T06:01:41", 16.36953, -66.04443], + ["2019-10-11T07:01:25", 16.36495, -66.04498], + ["2019-10-11T08:00:38", 16.35888, -66.04245], + ["2019-10-11T09:00:38", 16.35387, -66.03854], + ["2019-10-11T10:00:11", 16.34722, -66.03494], + ["2019-10-11T11:00:11", 16.33959, -66.03299], + ["2019-10-11T12:59:28", 16.33204, -66.03119], + ["2019-10-11T13:59:28", 16.31331, -66.027], + ["2019-10-11T14:59:28", 16.30533, -66.0276], + ["2019-10-11T20:56:56", 16.29718, -66.02829], + ["2019-10-11T21:56:58", 16.2852, -66.03751], + ["2019-10-11T22:55:56", 16.27983, -66.03409], + ["2019-10-11T23:55:56", 16.27309, -66.03192], + ["2019-10-12T00:55:56", 16.26661, -66.03149], + ["2019-10-12T12:52:59", 16.26228, -66.03381], + ["2019-10-12T17:51:28", 16.20363, -66.03156], + ["2019-10-12T23:49:59", 16.20061, -66.02603], + ["2019-10-13T01:48:57", 16.20523, -65.98459], + ["2019-10-13T02:48:57", 16.20211, -65.97112], + ["2019-10-13T03:48:57", 16.19906, -65.96606], + ["2019-10-13T11:46:54", 16.19558, -65.96048], + ["2019-10-13T12:45:38", 16.1685, -65.93195], + ["2019-10-13T13:45:38", 16.16741, -65.93048], + ["2019-10-13T14:45:38", 16.16621, -65.92791], + ["2019-10-13T15:45:45", 16.16355, -65.92722], + ["2019-10-13T16:45:45", 16.15938, -65.93035], + ["2019-10-13T18:44:10", 16.15659, -65.93456], + ["2019-10-13T23:45:27", 16.15748, -65.93942], + ["2019-10-14T14:37:31", 16.16158, -65.94452], + ["2019-10-14T15:37:29", 16.23552, -65.93695], + ["2019-10-14T16:37:29", 16.24302, -65.92795], + ["2019-10-15T01:35:27", 16.2477, -65.9234], + ["2019-10-15T03:36:30", 16.26811, -65.86929], + ["2019-10-15T10:33:55", 16.2706, -65.86669], + ["2019-10-15T11:33:27", 16.28601, -65.89812], + ["2019-10-15T15:31:18", 16.2989, -65.90222], + ["2019-10-15T16:33:29", 16.35512, -65.90213], + ["2019-10-15T17:30:52", 16.36872, -65.90131], + ["2019-10-15T22:29:14", 16.38332, -65.90082], + ["2019-10-15T23:30:29", 16.45374, -65.88576], + ["2019-10-16T00:29:36", 16.4673, -65.87775], + ["2019-10-16T02:29:36", 16.48392, -65.85747], + ["2019-10-16T04:27:02", 16.49383, -65.84863], + ["2019-10-16T05:29:23", 16.51154, -65.8391], + ["2019-10-16T06:27:02", 16.51773, -65.8366], + ["2019-10-16T07:27:23", 16.52287, -65.83456], + ["2019-10-16T08:27:23", 16.53085, -65.83184], + ["2019-10-16T09:26:27", 16.54033, -65.83047], + ["2019-10-16T10:26:12", 16.54923, -65.82916], + ["2019-10-16T11:26:12", 16.55536, -65.82657], + ["2019-10-16T12:25:26", 16.55729, -65.82297], + ["2019-10-16T13:24:57", 16.55684, -65.82031], + ["2019-10-16T15:23:52", 16.55601, -65.81836], + ["2019-10-16T16:24:43", 16.55755, -65.82152], + ["2019-10-16T17:23:52", 16.55859, -65.82483], + ["2019-10-16T18:23:31", 16.5639, -65.83105], + ["2019-10-16T19:23:26", 16.5721, -65.83734], + ["2019-10-16T20:22:31", 16.58297, -65.84268], + ["2019-10-16T21:22:31", 16.59463, -65.84948], + ["2019-10-16T22:22:57", 16.60484, -65.8566], + ["2019-10-17T01:20:59", 16.6141, -65.86208], + ["2019-10-17T05:20:11", 16.63011, -65.86306], + ["2019-10-17T08:18:53", 16.64318, -65.87213], + ["2019-10-17T09:21:56", 16.67269, -65.88446], + ["2019-10-17T11:18:48", 16.68549, -65.88654], + ["2019-10-17T11:19:43", 16.69897, -65.89039], + ["2019-10-17T13:18:48", 16.70102, -65.88757], + ["2019-10-17T18:18:59", 16.70519, -65.89005], + ["2019-10-17T19:15:57", 16.7275, -65.92122], + ["2019-10-17T20:17:56", 16.73632, -65.92679], + ["2019-10-17T23:14:44", 16.74777, -65.93091], + ["2019-10-18T01:14:44", 16.77627, -65.94401], + ["2019-10-18T02:15:57", 16.78228, -65.94598], + ["2019-10-18T03:13:25", 16.78553, -65.95062], + ["2019-10-18T21:10:34", 16.78865, -65.95523], + ["2019-10-18T22:08:21", 16.85642, -66.10675], + ["2019-10-19T05:06:23", 16.86273, -66.11315], + ["2019-10-19T13:08:05", 16.91919, -66.18246], + ["2019-10-19T14:05:30", 16.96869, -66.25223], + ["2019-10-19T18:03:27", 16.9739, -66.25766], + ["2019-10-19T19:06:58", 16.98457, -66.29434], + ["2019-10-24T03:36:48", 16.98674, -66.30743], + ["2019-10-24T18:33:57", 16.1831, -67.21677], + ["2019-10-25T05:27:03", 16.1098, -67.3555], + ["2019-10-25T14:29:02", 16.08063, -67.44394], + ["2019-10-26T05:21:35", 16.01031, -67.52646], + ["2019-10-27T08:19:11", 15.93223, -67.67349], + ["2019-10-28T14:05:44", 15.80885, -67.98157], + ["2019-10-30T11:55:01", 15.6271, -68.44247], + ["2019-10-30T12:54:30", 15.2948, -69.15851], + ["2019-10-30T13:54:30", 15.28611, -69.17446], + ["2019-10-31T03:50:29", 15.27328, -69.19394], + ["2019-11-01T01:42:32", 15.21002, -69.4679], + ["2019-11-01T21:32:11", 15.18867, -69.86252], + ["2019-11-02T07:29:45", 15.13252, -70.11133], + ["2019-11-02T12:28:45", 15.0935, -70.28345], + ["2019-11-02T18:28:58", 15.09651, -70.36053], + ["2019-11-03T15:26:00", 15.10114, -70.4469], + ["2019-11-07T14:03:28", 15.12935, -70.81444], + ["2019-11-07T14:59:46", 16.17912, -72.18289], + ["2019-11-08T06:54:33", 16.18734, -72.18463], + ["2019-11-16T11:15:59", 16.25529, -72.25314], + ["2019-11-17T00:12:06", 16.74147, -73.72009], + ["2019-11-17T01:08:29", 16.78928, -73.84668], + ["2019-11-17T02:08:29", 16.79, -73.85765], + ["2019-11-17T03:07:25", 16.79116, -73.86984], + ["2019-11-17T04:07:25", 16.79302, -73.88113], + ["2019-11-17T08:06:40", 16.79495, -73.89169], + ["2019-11-17T09:06:27", 16.79111, -73.93845], + ["2019-11-17T10:05:27", 16.78915, -73.95459], + ["2019-11-17T11:05:27", 16.78666, -73.96886], + ["2019-11-17T12:05:27", 16.78477, -73.98397], + ["2019-11-17T13:05:09", 16.78421, -73.99796], + ["2019-11-17T14:05:05", 16.78414, -74.00986], + ["2019-11-17T15:05:05", 16.78475, -74.02088], + ["2019-11-17T16:04:42", 16.78582, -74.03119], + ["2019-11-17T17:04:04", 16.78715, -74.04152], + ["2019-11-17T18:03:59", 16.78735, -74.05025], + ["2019-11-17T19:03:59", 16.78623, -74.05783], + ["2019-11-17T20:03:39", 16.78314, -74.06375], + ["2019-11-17T21:03:25", 16.77838, -74.06931], + ["2019-11-17T22:02:57", 16.77201, -74.07671], + ["2019-11-17T23:02:57", 16.76485, -74.08584], + ["2019-11-18T00:02:27", 16.75763, -74.09569], + ["2019-11-18T04:01:09", 16.74905, -74.10571], + ["2019-11-18T05:00:58", 16.71632, -74.15356], + ["2019-11-18T06:00:56", 16.7081, -74.1637], + ["2019-11-18T09:59:27", 16.70025, -74.17255], + ["2019-11-18T10:58:38", 16.67208, -74.2088], + ["2019-11-18T11:58:38", 16.66325, -74.22031], + ["2019-11-18T12:58:27", 16.65484, -74.2337], + ["2019-11-18T13:57:58", 16.6483, -74.2463], + ["2019-11-18T14:57:58", 16.64379, -74.26], + ["2019-11-18T16:56:57", 16.64182, -74.27383], + ["2019-11-18T17:56:27", 16.63948, -74.29416], + ["2019-11-18T18:56:27", 16.64078, -74.3028], + ["2019-11-18T19:56:27", 16.64499, -74.30941], + ["2019-11-18T20:55:56", 16.64825, -74.31241], + ["2019-11-18T21:55:37", 16.64952, -74.31348], + ["2019-11-18T22:55:28", 16.64889, -74.31433], + ["2019-11-18T23:54:57", 16.64597, -74.31619], + ["2019-11-19T00:54:57", 16.64232, -74.32301], + ["2019-11-19T01:54:27", 16.6385, -74.33511], + ["2019-11-19T02:54:07", 16.63525, -74.34763], + ["2019-11-19T03:53:57", 16.63163, -74.35962], + ["2019-11-19T05:52:59", 16.62841, -74.37436], + ["2019-11-19T07:51:57", 16.62083, -74.40317], + ["2019-11-19T08:52:09", 16.60895, -74.42834], + ["2019-11-19T09:51:57", 16.60026, -74.43845], + ["2019-11-19T10:51:25", 16.5887, -74.44861], + ["2019-11-19T11:50:56", 16.57731, -74.45834], + ["2019-11-19T12:50:56", 16.56508, -74.46764], + ["2019-11-19T16:49:59", 16.55293, -74.47742], + ["2019-11-19T17:49:29", 16.5072, -74.54134], + ["2019-11-19T18:49:01", 16.49613, -74.56091], + ["2019-11-19T22:49:57", 16.48451, -74.58157], + ["2019-11-19T23:46:41", 16.43556, -74.6534], + ["2019-11-20T00:46:41", 16.4237, -74.67017], + ["2019-11-20T01:46:41", 16.4107, -74.68768], + ["2019-11-20T12:43:57", 16.39843, -74.70416], + ["2019-11-20T13:44:29", 16.26542, -74.92212], + ["2019-11-20T14:45:26", 16.25221, -74.94195], + ["2019-11-20T15:43:01", 16.24054, -74.96338], + ["2019-11-20T20:41:41", 16.22969, -74.98547], + ["2019-11-20T23:40:30", 16.15623, -75.12088], + ["2019-11-21T03:39:15", 16.10205, -75.21362], + ["2019-11-21T10:38:38", 16.04255, -75.32358], + ["2019-11-21T11:38:29", 15.98282, -75.47729], + ["2019-11-21T16:37:41", 15.97221, -75.4975], + ["2019-11-21T17:39:29", 15.93283, -75.61865], + ["2019-11-22T03:32:52", 15.92587, -75.64514], + ["2019-11-23T03:27:07", 15.88772, -75.87653], + ["2019-11-24T00:23:06", 15.81866, -76.41583], + ["2019-11-24T01:22:11", 15.73166, -76.69922], + ["2019-11-24T02:22:11", 15.73341, -76.71243], + ["2019-11-24T12:19:06", 15.73517, -76.7229], + ["2019-11-25T10:15:32", 15.75659, -76.8541], + ["2019-11-25T11:12:17", 15.70944, -77.18326], + ["2019-11-25T12:12:17", 15.70435, -77.19802], + ["2019-11-25T13:12:17", 15.69821, -77.21484], + ["2019-11-26T01:14:06", 15.69332, -77.22995], + ["2019-12-02T10:34:33", 15.61604, -77.38137], + ["2019-12-02T11:37:05", 14.11707, -77.98322], + ["2019-12-03T09:30:20", 14.11124, -77.98865], + ["2019-12-07T11:48:57", 14.00099, -78.01035], + ["2019-12-11T10:28:29", 13.56718, -78.20565], + ["2019-12-11T11:29:30", 13.27992, -78.74677], + ["2019-12-12T21:18:18", 13.27877, -78.7569], + ["2019-12-14T05:09:00", 13.22143, -79.07434], + ["2019-12-14T10:05:26", 13.14781, -79.42035], + ["2019-12-14T18:02:20", 13.12742, -79.45157], + ["2019-12-14T19:01:43", 13.09772, -79.51096], + ["2019-12-14T20:01:43", 13.09575, -79.52226], + ["2019-12-14T21:02:30", 13.09532, -79.5329], + ["2019-12-14T22:02:30", 13.09549, -79.54497], + ["2019-12-14T23:01:56", 13.0957, -79.5562], + ["2019-12-15T05:59:03", 13.09627, -79.56607], + ["2019-12-15T07:00:01", 13.08233, -79.62475], + ["2019-12-15T08:00:59", 13.08207, -79.63361], + ["2019-12-15T21:54:26", 13.08121, -79.64145], + ["2019-12-16T04:55:12", 13.08407, -79.76837], + ["2019-12-16T08:51:11", 13.07797, -79.84161], + ["2019-12-16T14:49:11", 13.07139, -79.87701], + ["2019-12-17T05:48:59", 13.07229, -79.93295], + ["2019-12-17T09:44:08", 13.11035, -80.10388], + ["2019-12-17T10:46:06", 13.12406, -80.14767], + ["2019-12-17T21:43:51", 13.12809, -80.15851], + ["2019-12-18T02:40:15", 13.16174, -80.28397], + ["2019-12-19T08:32:32", 13.15604, -80.34152], + ["2019-12-19T15:30:29", 13.15676, -80.67743], + ["2019-12-20T15:25:32", 13.13601, -80.75664], + ["2019-12-24T06:59:37", 13.18248, -81.06287], + ["2019-12-24T07:57:02", 12.81042, -81.92819], + ["2019-12-25T04:52:54", 12.80068, -81.93607], + ["2019-12-25T09:50:59", 12.48567, -82.0607], + ["2019-12-27T19:38:29", 12.38731, -82.08835], + ["2019-12-28T21:33:12", 11.45671, -82.67062], + ["2019-12-29T02:34:59", 11.21686, -82.86118], + ["2019-12-29T03:31:57", 11.18536, -82.88919], + ["2019-12-29T09:31:07", 11.17965, -82.8923], + ["2019-12-30T04:27:01", 11.13297, -82.91486], + ["2019-12-31T12:18:30", 11.0579, -83.01611], + ["2019-12-31T14:15:31", 10.67769, -83.01345], + ["2019-12-31T15:15:16", 10.66377, -83.00451], + ["2019-12-31T16:15:31", 10.65646, -83.00226], + ["2020-01-01T03:13:05", 10.64905, -83.00073], + ["2020-01-01T07:11:09", 10.61674, -83.04546], + ["2020-01-01T08:11:09", 10.56433, -83.056], + ["2020-01-01T09:11:04", 10.55017, -83.05426], + ["2020-01-01T10:09:32", 10.53421, -83.04532], + ["2020-01-01T11:09:32", 10.51638, -83.0364], + ["2020-01-01T12:09:32", 10.50853, -83.02764], + ["2020-01-01T13:09:39", 10.50548, -83.01931], + ["2020-01-01T14:09:11", 10.50307, -83.01219], + ["2020-01-01T15:09:39", 10.50022, -83.00757], + ["2020-01-01T16:09:04", 10.49847, -83.00275], + ["2020-01-01T17:09:04", 10.49702, -83.00126], + ["2020-01-01T18:09:04", 10.49307, -83.00185], + ["2020-01-01T19:10:28", 10.48629, -83.00503], + ["2020-01-02T01:07:07", 10.47488, -83.01169], + ["2020-01-02T05:08:14", 10.36477, -83.02829], + ["2020-01-02T07:06:05", 10.32534, -82.98056], + ["2020-01-02T08:06:05", 10.31102, -82.95677], + ["2020-01-02T09:06:05", 10.3057, -82.94597], + ["2020-01-02T10:07:36", 10.29961, -82.93756], + ["2020-01-02T12:03:47", 10.29358, -82.93048], + ["2020-01-02T13:03:47", 10.28871, -82.91934], + ["2020-01-02T14:03:47", 10.28639, -82.91659], + ["2020-01-02T16:04:29", 10.28334, -82.91513], + ["2020-01-03T01:02:26", 10.26209, -82.91643], + ["2020-01-03T02:01:41", 10.14898, -82.85988], + ["2020-01-03T03:02:27", 10.14205, -82.84958], + ["2020-01-03T04:00:58", 10.13524, -82.83649], + ["2020-01-03T05:00:29", 10.12801, -82.82431], + ["2020-01-03T05:59:28", 10.1204, -82.81116], + ["2020-01-03T06:59:28", 10.1128, -82.79517], + ["2020-01-03T07:59:28", 10.1055, -82.78315], + ["2020-01-03T08:58:40", 10.09679, -82.77216], + ["2020-01-03T09:58:40", 10.08606, -82.76356], + ["2020-01-03T10:58:40", 10.07692, -82.75111], + ["2020-01-03T11:58:34", 10.06722, -82.74261], + ["2020-01-03T12:58:27", 10.05562, -82.73178], + ["2020-01-03T13:57:59", 10.04454, -82.72018], + ["2020-01-03T14:57:59", 10.03333, -82.70984], + ["2020-01-03T15:57:27", 10.02247, -82.69799], + ["2020-01-03T16:57:28", 10.01194, -82.68465], + ["2020-01-03T17:56:40", 9.99907, -82.67426], + ["2020-01-03T18:56:30", 9.98457, -82.65952], + ["2020-01-03T19:55:28", 9.97181, -82.64117], + ["2020-01-03T20:55:28", 9.96152, -82.62168], + ["2020-01-03T21:55:28", 9.95298, -82.6022], + ["2020-01-03T22:55:27", 9.94457, -82.58521], + ["2020-01-03T23:55:32", 9.93645, -82.56934], + ["2020-01-04T00:54:38", 9.92929, -82.55609], + ["2020-01-04T01:54:38", 9.9237, -82.54431], + ["2020-01-04T02:54:38", 9.91975, -82.534], + ["2020-01-04T03:54:26", 9.91639, -82.52637], + ["2020-01-04T04:53:56", 9.91259, -82.52094], + ["2020-01-04T05:53:56", 9.9071, -82.51607], + ["2020-01-04T06:53:28", 9.89994, -82.5104], + ["2020-01-04T07:53:28", 9.89258, -82.50433], + ["2020-01-04T08:52:58", 9.88524, -82.49686], + ["2020-01-04T09:52:59", 9.87653, -82.48712], + ["2020-01-04T13:52:39", 9.86572, -82.47592], + ["2020-01-04T14:54:01", 9.81847, -82.41544], + ["2020-01-04T17:51:39", 9.80904, -82.39661], + ["2020-01-04T18:51:39", 9.78997, -82.34175], + ["2020-01-04T19:51:39", 9.77887, -82.32208], + ["2020-01-04T20:50:58", 9.76864, -82.30167], + ["2020-01-04T21:50:58", 9.75916, -82.28143], + ["2020-01-04T22:50:27", 9.75282, -82.26134], + ["2020-01-04T23:50:27", 9.74785, -82.24124], + ["2020-01-05T00:49:59", 9.74283, -82.22382], + ["2020-01-05T01:49:38", 9.73861, -82.2069], + ["2020-01-05T05:48:28", 9.73465, -82.19049], + ["2020-01-05T06:47:58", 9.712, -82.13406], + ["2020-01-05T07:47:39", 9.70485, -82.12157], + ["2020-01-05T08:47:39", 9.69807, -82.1066], + ["2020-01-05T09:47:39", 9.69039, -82.09148], + ["2020-01-05T10:47:58", 9.68258, -82.07586], + ["2020-01-05T11:47:31", 9.67563, -82.05929], + ["2020-01-05T12:45:58", 9.669, -82.0425], + ["2020-01-05T13:45:58", 9.66198, -82.02542], + ["2020-01-05T14:45:58", 9.6546, -82.00843], + ["2020-01-05T15:44:57", 9.64683, -81.99023], + ["2020-01-05T16:44:57", 9.64133, -81.97221], + ["2020-01-05T17:44:57", 9.63927, -81.95341], + ["2020-01-05T18:44:00", 9.64086, -81.93899], + ["2020-01-05T19:44:00", 9.64494, -81.92449], + ["2020-01-05T20:44:00", 9.64828, -81.90989], + ["2020-01-05T21:43:57", 9.64546, -81.89874], + ["2020-01-05T22:44:29", 9.64227, -81.88974], + ["2020-01-05T23:43:26", 9.63602, -81.87954], + ["2020-01-06T00:43:26", 9.62951, -81.86803], + ["2020-01-06T01:43:26", 9.6232, -81.85534], + ["2020-01-06T02:42:58", 9.61783, -81.84014], + ["2020-01-06T03:42:30", 9.61214, -81.82239], + ["2020-01-06T04:42:30", 9.61148, -81.8008], + ["2020-01-06T05:41:58", 9.61337, -81.77907], + ["2020-01-06T06:41:58", 9.61469, -81.75784], + ["2020-01-06T07:41:40", 9.61543, -81.73999], + ["2020-01-06T08:41:16", 9.61602, -81.72363], + ["2020-01-06T09:42:23", 9.61708, -81.70731], + ["2020-01-06T10:42:23", 9.61757, -81.69186], + ["2020-01-06T11:40:59", 9.61796, -81.67804], + ["2020-01-06T12:40:58", 9.61856, -81.66498], + ["2020-01-06T13:40:40", 9.62088, -81.65036], + ["2020-01-06T14:40:00", 9.62442, -81.63263], + ["2020-01-06T15:40:00", 9.62781, -81.61278], + ["2020-01-06T16:40:00", 9.62811, -81.59639], + ["2020-01-06T17:39:42", 9.62618, -81.58163], + ["2020-01-06T18:38:41", 9.62409, -81.56665], + ["2020-01-06T19:38:41", 9.62217, -81.55202], + ["2020-01-06T23:37:04", 9.61886, -81.53897], + ["2020-01-07T00:38:55", 9.60842, -81.46381], + ["2020-01-07T01:36:21", 9.60549, -81.44199], + ["2020-01-07T08:34:19", 9.60408, -81.42086], + ["2020-01-07T14:32:21", 9.63542, -81.29056], + ["2020-01-07T15:33:59", 9.67074, -81.21332], + ["2020-01-08T06:28:08", 9.67456, -81.2012], + ["2020-01-08T11:29:30", 9.7103, -80.97214], + ["2020-01-08T12:26:31", 9.74261, -80.91022], + ["2020-01-08T14:29:28", 9.74881, -80.90219], + ["2020-01-08T15:25:44", 9.76038, -80.8837], + ["2020-01-08T16:24:55", 9.76618, -80.875], + ["2020-01-08T17:24:55", 9.77393, -80.86546], + ["2020-01-09T01:21:57", 9.7805, -80.85834], + ["2020-01-09T06:24:00", 9.83502, -80.7968], + ["2020-01-10T13:10:16", 9.87015, -80.74481], + ["2020-01-10T14:06:43", 10.15899, -80.67169], + ["2020-01-10T15:07:58", 10.17796, -80.67737], + ["2020-01-10T16:06:19", 10.19739, -80.68338], + ["2020-01-10T19:06:47", 10.21574, -80.6897], + ["2020-01-10T20:05:25", 10.27507, -80.70959], + ["2020-01-11T00:07:47", 10.29497, -80.71613], + ["2020-01-11T01:03:39", 10.36901, -80.74112], + ["2020-01-11T02:03:39", 10.38369, -80.74557], + ["2020-01-11T15:01:23", 10.39751, -80.74823], + ["2020-01-11T18:58:07", 10.5751, -80.79428], + ["2020-01-11T19:57:28", 10.63906, -80.81253], + ["2020-01-11T20:57:28", 10.65781, -80.81707], + ["2020-01-12T01:59:41", 10.67571, -80.82025], + ["2020-01-12T05:58:58", 10.77076, -80.82919], + ["2020-01-12T23:54:00", 10.84117, -80.82983], + ["2020-01-13T08:50:45", 11.11696, -80.91797], + ["2020-01-13T11:53:13", 11.25049, -80.99377], + ["2020-01-13T12:50:07", 11.29701, -81.02361], + ["2020-01-13T14:49:28", 11.31276, -81.03461], + ["2020-01-13T20:50:37", 11.34588, -81.05517], + ["2020-01-15T06:38:24", 11.45792, -81.12213], + ["2020-01-15T13:38:56", 11.95755, -81.5817], + ["2020-01-15T17:37:12", 12.01853, -81.68707], + ["2020-01-15T18:34:25", 12.05302, -81.74606], + ["2020-01-15T22:35:04", 12.06172, -81.7587], + ["2020-01-16T05:34:07", 12.08653, -81.80585], + ["2020-01-16T20:28:41", 12.1046, -81.87564], + ["2020-01-17T02:28:13", 12.2006, -82.09923], + ["2020-01-17T03:24:54", 12.22614, -82.1879], + ["2020-01-17T07:26:13", 12.22729, -82.20343], + ["2020-01-17T11:22:20", 12.22642, -82.2739], + ["2020-01-17T15:20:43", 12.22367, -82.34329], + ["2020-01-17T18:19:42", 12.21043, -82.42041], + ["2020-01-17T22:21:00", 12.19493, -82.49069], + ["2020-01-17T23:18:24", 12.14796, -82.59988], + ["2020-01-18T01:17:47", 12.1299, -82.62289], + ["2020-01-18T02:17:47", 12.08549, -82.66804], + ["2020-01-18T05:16:26", 12.06244, -82.68735], + ["2020-01-18T06:18:38", 11.99014, -82.75033], + ["2020-01-18T07:16:26", 11.96759, -82.77567], + ["2020-01-18T08:15:34", 11.94676, -82.80038], + ["2020-01-18T09:15:34", 11.92407, -82.82671], + ["2020-01-18T11:14:40", 11.90248, -82.85083], + ["2020-01-18T12:14:16", 11.85651, -82.89987], + ["2020-01-18T13:14:16", 11.83018, -82.92428], + ["2020-01-18T14:15:57", 11.80447, -82.94522], + ["2020-01-18T19:16:25", 11.77939, -82.97037], + ["2020-01-20T08:09:45", 11.64732, -83.08032], + ["2020-01-20T12:05:12", 10.81728, -83.24185], + ["2020-01-21T08:58:58", 10.75971, -83.23547], + ["2020-01-22T09:52:22", 10.38368, -83.01785], + ["2020-01-23T04:48:33", 9.88632, -82.30023], + ["2020-01-24T03:40:40", 9.49076, -81.7157], + ["2020-01-24T04:42:15", 9.38477, -81.38155], + ["2020-01-24T05:43:08", 9.39367, -81.38177], + ["2020-01-24T06:38:58", 9.39978, -81.38181], + ["2020-01-24T07:38:58", 9.40363, -81.38158], + ["2020-01-24T08:38:58", 9.40642, -81.38132], + ["2020-01-24T09:39:11", 9.40907, -81.38088], + ["2020-01-24T10:38:43", 9.41346, -81.38092], + ["2020-01-24T11:38:28", 9.41867, -81.38181], + ["2020-01-24T12:38:28", 9.42315, -81.3831], + ["2020-01-24T13:37:33", 9.42861, -81.38361], + ["2020-01-24T14:37:33", 9.43629, -81.38453], + ["2020-01-24T15:37:33", 9.44205, -81.38599], + ["2020-01-24T16:38:59", 9.45072, -81.38736], + ["2020-01-24T17:38:59", 9.45808, -81.3886], + ["2020-01-24T18:38:59", 9.46435, -81.39066], + ["2020-01-24T19:35:41", 9.46838, -81.39203], + ["2020-01-24T23:35:08", 9.47096, -81.39444], + ["2020-01-25T00:36:59", 9.47481, -81.40197], + ["2020-01-25T01:33:41", 9.47541, -81.40445], + ["2020-01-25T03:33:12", 9.47533, -81.4064], + ["2020-01-25T04:34:29", 9.47434, -81.40593], + ["2020-01-25T05:33:12", 9.47003, -81.40201], + ["2020-01-25T06:32:59", 9.46517, -81.39975], + ["2020-01-25T07:31:58", 9.45956, -81.39767], + ["2020-01-25T08:31:58", 9.45243, -81.39472], + ["2020-01-25T09:31:58", 9.44265, -81.39069], + ["2020-01-25T10:32:29", 9.43085, -81.38596], + ["2020-01-25T14:30:01", 9.41632, -81.37811], + ["2020-01-25T15:30:47", 9.3424, -81.32932], + ["2020-01-25T16:30:57", 9.31945, -81.31604], + ["2020-01-25T17:28:38", 9.29629, -81.30428], + ["2020-01-25T18:28:09", 9.27743, -81.29327], + ["2020-01-25T19:28:09", 9.26774, -81.28005], + ["2020-01-25T20:27:56", 9.25941, -81.26743], + ["2020-01-25T21:27:56", 9.25101, -81.255], + ["2020-01-26T01:26:38", 9.24353, -81.24298], + ["2020-01-26T02:26:10", 9.23418, -81.20532], + ["2020-01-26T06:25:29", 9.23864, -81.19669], + ["2020-01-26T07:25:30", 9.26303, -81.14639], + ["2020-01-26T17:21:10", 9.27366, -81.13123], + ["2020-01-26T22:21:58", 9.35784, -80.9325], + ["2020-01-26T23:19:11", 9.37429, -80.84863], + ["2020-01-27T00:18:40", 9.37721, -80.836], + ["2020-01-27T01:18:40", 9.37941, -80.82174], + ["2020-01-27T02:18:40", 9.38083, -80.80785], + ["2020-01-27T03:18:31", 9.38147, -80.79343], + ["2020-01-27T04:18:10", 9.38188, -80.77896], + ["2020-01-27T06:16:56", 9.38144, -80.76465], + ["2020-01-27T07:16:56", 9.37867, -80.73504], + ["2020-01-27T08:16:56", 9.37665, -80.71968], + ["2020-01-27T09:16:57", 9.37456, -80.7038], + ["2020-01-27T10:16:25", 9.37179, -80.68759], + ["2020-01-27T11:16:25", 9.36927, -80.67148], + ["2020-01-27T12:16:26", 9.36618, -80.65594], + ["2020-01-27T13:16:10", 9.36234, -80.64108], + ["2020-01-27T14:16:08", 9.35737, -80.62726], + ["2020-01-27T15:15:59", 9.35163, -80.61342], + ["2020-01-27T16:16:55", 9.3454, -80.59932], + ["2020-01-27T17:16:55", 9.33782, -80.5855], + ["2020-01-27T18:14:31", 9.33001, -80.57074], + ["2020-01-27T19:15:40", 9.3225, -80.56216], + ["2020-01-27T22:16:48", 9.32159, -80.55588], + ["2020-01-27T23:13:26", 9.31893, -80.53377], + ["2020-01-28T00:16:48", 9.3157, -80.52392], + ["2020-01-28T06:11:58", 9.31039, -80.51361], + ["2020-01-28T08:14:28", 9.28917, -80.48535], + ["2020-01-28T09:10:55", 9.2992, -80.46393], + ["2020-01-28T10:10:55", 9.30424, -80.45286], + ["2020-01-28T11:10:46", 9.31058, -80.44144], + ["2020-01-28T12:10:28", 9.3175, -80.43039], + ["2020-01-28T13:09:58", 9.32352, -80.41995], + ["2020-01-28T14:09:58", 9.3305, -80.40835], + ["2020-01-28T15:09:25", 9.33685, -80.39453], + ["2020-01-28T16:09:29", 9.34249, -80.38055], + ["2020-01-28T17:09:05", 9.34811, -80.36801], + ["2020-01-28T18:08:35", 9.35374, -80.35654], + ["2020-01-28T19:08:35", 9.35781, -80.34509], + ["2020-01-28T20:08:32", 9.36154, -80.33316], + ["2020-01-28T21:07:59", 9.36151, -80.32031], + ["2020-01-28T22:08:06", 9.36023, -80.30933], + ["2020-01-28T23:06:56", 9.35711, -80.29861], + ["2020-01-29T00:06:56", 9.35594, -80.28804], + ["2020-01-29T01:06:57", 9.35431, -80.27594], + ["2020-01-29T02:06:56", 9.35263, -80.26389], + ["2020-01-29T03:06:28", 9.35033, -80.25272], + ["2020-01-29T04:05:56", 9.3477, -80.24283], + ["2020-01-29T05:05:56", 9.3454, -80.23287], + ["2020-01-29T06:05:56", 9.34317, -80.22351], + ["2020-01-29T07:05:28", 9.34021, -80.21527], + ["2020-01-29T08:04:39", 9.33735, -80.20804], + ["2020-01-29T09:04:59", 9.3343, -80.20247], + ["2020-01-29T10:03:57", 9.33175, -80.19864], + ["2020-01-29T11:03:57", 9.33029, -80.19687], + ["2020-01-29T12:03:28", 9.32947, -80.1955], + ["2020-01-29T13:03:26", 9.33009, -80.19437], + ["2020-01-29T14:04:28", 9.33197, -80.19351], + ["2020-01-29T15:02:04", 9.33338, -80.19403], + ["2020-01-29T16:02:04", 9.33445, -80.19589], + ["2020-01-29T17:02:04", 9.33479, -80.19898], + ["2020-01-29T18:02:45", 9.33573, -80.20276], + ["2020-01-29T19:02:56", 9.33657, -80.2085], + ["2020-01-29T20:02:56", 9.33812, -80.21729], + ["2020-01-29T21:02:56", 9.33888, -80.2269], + ["2020-01-29T21:59:42", 9.33888, -80.2384], + ["2020-01-30T05:00:26", 9.33863, -80.24814], + ["2020-01-30T05:57:53", 9.32624, -80.31979], + ["2020-01-30T06:56:21", 9.32483, -80.32729], + ["2020-01-30T07:56:21", 9.32353, -80.33581], + ["2020-01-30T08:56:21", 9.32306, -80.34414], + ["2020-01-31T04:52:30", 9.32203, -80.35229], + ["2020-02-01T02:46:12", 9.36661, -80.53088], + ["2020-02-01T10:40:58", 9.28649, -80.65933], + ["2020-02-04T01:18:43", 9.26768, -80.71664], + ["2020-02-04T03:16:43", 8.92489, -80.85645], + ["2020-02-04T04:18:29", 8.92589, -80.84106], + ["2020-02-04T05:18:29", 8.9284, -80.83077], + ["2020-02-04T06:18:29", 8.93282, -80.82047], + ["2020-02-04T07:15:35", 8.94037, -80.80914], + ["2020-02-04T08:15:35", 8.94886, -80.79965], + ["2020-02-04T09:15:35", 8.95585, -80.78429], + ["2020-02-04T10:15:06", 8.95994, -80.77124], + ["2020-02-04T13:16:36", 8.96449, -80.76257], + ["2020-02-04T21:40:09", 8.96489, -80.76147], + ["2020-02-05T01:11:01", 8.94968, -80.76873], + ["2020-02-05T01:46:50", 8.93627, -80.76412], + ["2020-02-05T03:37:38", 8.93576, -80.76254], + ["2020-02-05T04:10:14", 8.94973, -80.76855] + ], + "drifter_19": [ + ["2019-08-08T12:05:00", 11.83018, -56.09376], + ["2019-08-08T12:21:18", 11.83195, -56.09631], + ["2019-08-08T17:31:43", 11.88855, -56.1521], + ["2019-08-08T18:19:29", 11.90418, -56.16885], + ["2019-08-08T20:19:29", 11.91208, -56.17563], + ["2019-08-09T00:18:26", 11.92155, -56.20279], + ["2019-08-09T01:15:17", 11.92072, -56.20929], + ["2019-08-09T02:14:59", 11.91625, -56.21873], + ["2019-08-09T03:14:59", 11.91071, -56.22843], + ["2019-08-09T04:14:59", 11.90552, -56.23615], + ["2019-08-09T21:07:24", 11.84174, -56.45032], + ["2019-08-09T22:10:53", 11.83987, -56.46838], + ["2019-08-10T02:06:56", 11.82834, -56.53922], + ["2019-08-10T09:02:28", 11.86087, -56.65115], + ["2019-08-10T10:02:59", 11.86492, -56.66296], + ["2019-08-10T17:24:26", 11.91555, -56.7536], + ["2019-08-10T18:00:07", 11.92303, -56.75891], + ["2019-08-11T01:54:44", 11.98557, -56.80002], + ["2019-08-11T05:52:30", 12.00106, -56.81203], + ["2019-08-11T06:56:02", 12.00518, -56.81619], + ["2019-08-11T07:52:30", 12.00973, -56.8201], + ["2019-08-12T13:40:05", 12.08983, -57.10327], + ["2019-08-12T18:39:28", 12.13155, -57.16214], + ["2019-08-13T01:38:33", 12.21735, -57.19965], + ["2019-08-13T02:36:59", 12.22656, -57.20238], + ["2019-08-13T03:36:59", 12.23682, -57.20667], + ["2019-08-13T04:36:59", 12.24725, -57.20993], + ["2019-08-13T09:32:14", 12.29875, -57.21899], + ["2019-08-13T14:33:00", 12.3379, -57.20197], + ["2019-08-13T18:30:43", 12.34833, -57.19711], + ["2019-08-13T19:28:33", 12.35059, -57.19653], + ["2019-08-13T23:30:29", 12.3495, -57.20026], + ["2019-08-14T00:27:57", 12.34864, -57.20248], + ["2019-08-14T01:27:57", 12.34589, -57.2048], + ["2019-08-14T02:27:32", 12.34311, -57.20892], + ["2019-08-14T06:24:28", 12.32998, -57.22986], + ["2019-08-14T07:24:59", 12.32411, -57.2424], + ["2019-08-14T09:24:59", 12.32162, -57.24841], + ["2019-08-14T10:22:37", 12.31934, -57.25415], + ["2019-08-14T11:25:44", 12.31676, -57.26151], + ["2019-08-14T13:23:27", 12.31481, -57.27775], + ["2019-08-14T14:23:27", 12.31434, -57.28702], + ["2019-08-14T15:23:27", 12.31383, -57.29758], + ["2019-08-14T17:03:39", 12.31383, -57.3175], + ["2019-08-14T22:17:29", 12.32232, -57.37726], + ["2019-08-15T02:18:27", 12.32564, -57.41867], + ["2019-08-15T17:10:31", 12.40669, -57.60095], + ["2019-08-15T21:06:04", 12.44545, -57.64835], + ["2019-08-15T22:07:59", 12.45615, -57.65922], + ["2019-08-15T23:07:59", 12.46525, -57.66875], + ["2019-08-16T00:07:59", 12.47491, -57.67999], + ["2019-08-16T01:04:22", 12.48412, -57.68912], + ["2019-08-16T02:06:10", 12.49242, -57.69706], + ["2019-08-16T03:06:10", 12.4983, -57.70333], + ["2019-08-16T04:06:10", 12.5056, -57.71011], + ["2019-08-16T05:04:19", 12.51124, -57.71518], + ["2019-08-16T07:04:23", 12.51765, -57.72504], + ["2019-08-16T13:02:08", 12.53229, -57.75995], + ["2019-08-16T13:59:30", 12.5347, -57.76599], + ["2019-08-16T14:59:30", 12.53667, -57.77191], + ["2019-08-16T15:59:30", 12.53796, -57.78058], + ["2019-08-17T02:53:00", 12.60004, -57.89255], + ["2019-08-17T12:50:01", 12.67488, -57.99365], + ["2019-08-17T13:50:29", 12.68268, -58.0051], + ["2019-08-17T18:46:47", 12.6942, -58.06113], + ["2019-08-17T20:47:26", 12.70073, -58.09241], + ["2019-08-17T22:46:32", 12.7113, -58.11575], + ["2019-08-17T23:44:09", 12.71635, -58.12432], + ["2019-08-18T00:44:09", 12.72, -58.13196], + ["2019-08-18T01:47:08", 12.72299, -58.14127], + ["2019-08-18T02:43:32", 12.72612, -58.15042], + ["2019-08-18T04:45:41", 12.7281, -58.16968], + ["2019-08-18T05:46:16", 12.72578, -58.17987], + ["2019-08-18T06:43:26", 12.72414, -58.19144], + ["2019-08-18T07:43:26", 12.72251, -58.20243], + ["2019-08-18T08:43:26", 12.72277, -58.21213], + ["2019-08-18T11:40:07", 12.73607, -58.24707], + ["2019-08-18T12:43:00", 12.7431, -58.25967], + ["2019-08-18T15:38:45", 12.76303, -58.29385], + ["2019-08-18T19:36:50", 12.77861, -58.33871], + ["2019-08-18T23:35:14", 12.80393, -58.3952], + ["2019-08-19T00:35:47", 12.81478, -58.409], + ["2019-08-19T01:36:36", 12.82447, -58.42124], + ["2019-08-19T02:36:36", 12.83348, -58.43274], + ["2019-08-19T03:34:52", 12.84547, -58.44415], + ["2019-08-19T04:33:28", 12.87282, -58.47073], + ["2019-08-19T06:33:28", 12.88621, -58.48309], + ["2019-08-19T07:34:29", 12.90425, -58.49551], + ["2019-08-19T08:32:22", 12.92064, -58.50676], + ["2019-08-19T09:32:22", 12.93678, -58.51826], + ["2019-08-19T10:32:22", 12.95313, -58.5289], + ["2019-08-19T16:28:07", 13.04994, -58.5921], + ["2019-08-19T17:28:29", 13.06357, -58.58948], + ["2019-08-19T18:27:26", 13.07153, -58.59024], + ["2019-08-19T19:27:26", 13.07895, -58.59384], + ["2019-08-19T20:27:34", 13.08799, -58.59628], + ["2019-08-19T21:25:29", 13.09621, -58.59866], + ["2019-08-19T22:25:31", 13.10134, -58.6009], + ["2019-08-19T23:25:31", 13.104, -58.6033], + ["2019-08-20T00:24:58", 13.10175, -58.6087], + ["2019-08-20T02:22:19", 13.0945, -58.62243], + ["2019-08-20T03:24:31", 13.08897, -58.62079], + ["2019-08-20T04:22:19", 13.08604, -58.62097], + ["2019-08-20T05:23:26", 13.08124, -58.62335], + ["2019-08-20T06:22:37", 13.0781, -58.62839], + ["2019-08-20T08:23:27", 13.07781, -58.6393], + ["2019-08-20T09:21:28", 13.08034, -58.64758], + ["2019-08-20T10:23:27", 13.07922, -58.66016], + ["2019-08-20T12:19:39", 13.08129, -58.68488], + ["2019-08-20T13:18:23", 13.08227, -58.69186], + ["2019-08-20T14:18:23", 13.08051, -58.70087], + ["2019-08-20T15:17:58", 13.07877, -58.71456], + ["2019-08-20T16:17:58", 13.07615, -58.72992], + ["2019-08-20T16:50:46", 13.0764, -58.73993], + ["2019-08-20T17:17:30", 13.07716, -58.74994], + ["2019-08-20T18:17:11", 13.0826, -58.77288], + ["2019-08-20T19:17:11", 13.09063, -58.78515], + ["2019-08-20T20:17:11", 13.09728, -58.78824], + ["2019-08-20T21:16:59", 13.10237, -58.793], + ["2019-08-21T01:15:59", 13.11288, -58.83621], + ["2019-08-21T03:15:32", 13.11652, -58.85385], + ["2019-08-21T04:13:26", 13.12085, -58.86119], + ["2019-08-21T05:13:26", 13.12643, -58.87158], + ["2019-08-21T06:12:54", 13.13298, -58.88217], + ["2019-08-21T07:12:54", 13.13993, -58.88629], + ["2019-08-21T08:12:08", 13.14642, -58.88855], + ["2019-08-21T10:11:36", 13.15765, -58.89902], + ["2019-08-21T11:11:36", 13.16203, -58.90194], + ["2019-08-21T12:11:36", 13.16525, -58.90503], + ["2019-08-21T14:08:56", 13.17025, -58.91928], + ["2019-08-21T14:50:10", 13.18364, -58.93778], + ["2019-08-21T15:50:10", 13.18965, -58.94216], + ["2019-08-21T16:50:10", 13.19119, -58.94345], + ["2019-08-21T17:07:30", 13.19477, -58.94595], + ["2019-08-21T18:07:30", 13.21116, -58.95642], + ["2019-08-21T19:06:28", 13.22965, -58.96329], + ["2019-08-21T20:06:30", 13.24327, -58.96579], + ["2019-08-21T21:07:48", 13.2521, -58.96529], + ["2019-08-21T22:07:48", 13.25734, -58.96375], + ["2019-08-21T23:07:48", 13.26215, -58.96564], + ["2019-08-22T01:05:03", 13.27199, -58.97722], + ["2019-08-22T02:05:03", 13.28023, -58.97928], + ["2019-08-22T03:05:03", 13.29074, -58.98151], + ["2019-08-22T12:58:22", 13.34815, -59.02417], + ["2019-08-22T14:58:36", 13.37416, -59.03574], + ["2019-08-22T15:50:32", 13.39532, -59.04101], + ["2019-08-22T16:50:32", 13.39699, -59.04135], + ["2019-08-22T16:57:54", 13.39828, -59.04187], + ["2019-08-22T22:56:11", 13.4495, -59.08786], + ["2019-08-23T01:55:16", 13.47551, -59.1067], + ["2019-08-23T03:55:16", 13.4819, -59.11176], + ["2019-08-23T04:56:01", 13.4845, -59.12128], + ["2019-08-23T05:52:45", 13.48436, -59.12684], + ["2019-08-23T06:52:45", 13.48385, -59.13285], + ["2019-08-23T07:52:45", 13.48055, -59.14066], + ["2019-08-23T08:50:35", 13.47725, -59.15189], + ["2019-08-23T10:52:29", 13.48079, -59.19915], + ["2019-08-23T12:52:29", 13.48036, -59.21323], + ["2019-08-23T13:47:56", 13.48721, -59.2303], + ["2019-08-23T14:51:10", 13.49454, -59.24789], + ["2019-08-23T15:47:56", 13.50318, -59.26129], + ["2019-08-23T16:47:34", 13.51375, -59.27451], + ["2019-08-23T17:48:24", 13.52391, -59.28732], + ["2019-08-23T18:47:31", 13.53656, -59.30059], + ["2019-08-23T19:47:31", 13.55154, -59.31201], + ["2019-08-23T21:46:41", 13.57639, -59.32324], + ["2019-08-23T22:44:47", 13.58717, -59.32852], + ["2019-08-23T23:44:47", 13.59721, -59.33264], + ["2019-08-24T04:43:11", 13.64426, -59.34622], + ["2019-08-24T10:39:41", 13.65756, -59.36417], + ["2019-08-24T20:35:30", 13.70444, -59.45786], + ["2019-08-24T21:36:44", 13.70997, -59.46609], + ["2019-08-25T00:33:40", 13.7188, -59.48746], + ["2019-08-25T02:36:18", 13.72248, -59.5051], + ["2019-08-25T06:31:28", 13.72967, -59.53546], + ["2019-08-25T09:31:58", 13.72835, -59.55634], + ["2019-08-25T16:28:02", 13.72429, -59.59964], + ["2019-08-25T17:28:31", 13.73024, -59.60703], + ["2019-08-25T18:25:14", 13.73564, -59.61419], + ["2019-08-25T19:25:14", 13.74191, -59.62217], + ["2019-08-25T20:25:14", 13.74444, -59.62878], + ["2019-08-26T01:25:31", 13.75375, -59.66556], + ["2019-08-26T02:22:53", 13.75468, -59.67575], + ["2019-08-26T04:24:47", 13.75891, -59.70151], + ["2019-08-26T05:22:13", 13.76305, -59.71304], + ["2019-08-26T11:19:02", 13.78734, -59.78149], + ["2019-08-26T15:20:06", 13.78783, -59.81213], + ["2019-08-26T19:18:59", 13.79588, -59.84549], + ["2019-08-26T20:15:26", 13.8031, -59.85699], + ["2019-08-26T21:15:44", 13.81033, -59.87123], + ["2019-08-26T22:15:44", 13.81531, -59.88651], + ["2019-08-26T23:14:57", 13.81938, -59.90314], + ["2019-08-27T00:14:27", 13.82533, -59.91904], + ["2019-08-27T01:15:59", 13.83359, -59.93365], + ["2019-08-27T02:15:59", 13.84204, -59.94687], + ["2019-08-27T07:12:34", 13.87596, -60.0253], + ["2019-08-27T14:10:44", 14.04221, -60.10648], + ["2019-08-27T22:07:28", 14.26222, -60.10312], + ["2019-08-28T01:05:20", 14.30996, -60.07528], + ["2019-08-28T02:05:20", 14.32043, -60.06635], + ["2019-08-28T04:05:31", 14.32963, -60.05321], + ["2019-08-28T05:05:31", 14.33212, -60.04952], + ["2019-08-28T06:05:31", 14.33319, -60.04669], + ["2019-08-28T07:02:28", 14.33227, -60.04511], + ["2019-08-28T08:02:28", 14.32944, -60.04502], + ["2019-08-28T09:02:28", 14.32493, -60.04828], + ["2019-08-28T15:00:30", 14.29186, -60.08316], + ["2019-08-28T19:59:30", 14.27476, -60.17117], + ["2019-08-28T20:56:31", 14.27303, -60.19458], + ["2019-08-28T21:58:00", 14.27202, -60.21711], + ["2019-08-28T22:55:42", 14.27302, -60.23871], + ["2019-08-28T23:58:00", 14.27597, -60.26389], + ["2019-08-29T01:58:07", 14.28281, -60.31671], + ["2019-08-29T02:54:11", 14.28635, -60.34439], + ["2019-08-29T03:55:13", 14.29215, -60.36945], + ["2019-08-29T04:55:12", 14.29902, -60.39076], + ["2019-08-29T05:53:22", 14.30716, -60.40771], + ["2019-08-29T06:55:12", 14.317, -60.42715], + ["2019-08-29T07:52:50", 14.32746, -60.44244], + ["2019-08-29T08:54:42", 14.33823, -60.45728], + ["2019-08-29T09:53:19", 14.34855, -60.4693], + ["2019-08-29T10:53:19", 14.36031, -60.48175], + ["2019-08-29T13:51:14", 14.39188, -60.52129], + ["2019-08-29T14:51:30", 14.40214, -60.5325], + ["2019-08-29T15:51:14", 14.41166, -60.54034], + ["2019-08-29T16:52:12", 14.42111, -60.54294], + ["2019-08-29T18:51:12", 14.43538, -60.54257], + ["2019-08-30T02:48:00", 14.43659, -60.59528], + ["2019-08-30T03:43:54", 14.43386, -60.59845], + ["2019-08-30T04:43:54", 14.43137, -60.60214], + ["2019-08-30T05:43:54", 14.42665, -60.60626], + ["2019-08-30T10:44:16", 14.38034, -60.68869], + ["2019-08-30T11:43:12", 14.37087, -60.70371], + ["2019-08-30T12:43:12", 14.36619, -60.71332], + ["2019-08-30T13:41:06", 14.365, -60.72314], + ["2019-08-30T14:41:06", 14.36624, -60.73438], + ["2019-08-30T15:42:36", 14.36823, -60.74179], + ["2019-08-30T16:28:34", 14.36956, -60.7514], + ["2019-08-30T17:42:25", 14.37134, -60.77811], + ["2019-08-30T19:38:57", 14.3702, -60.809], + ["2019-08-30T20:38:57", 14.37196, -60.82445], + ["2019-08-30T21:38:57", 14.36303, -60.84393], + ["2019-08-30T23:36:36", 14.34491, -60.88463], + ["2019-08-31T00:36:36", 14.33869, -60.90463], + ["2019-08-31T01:36:12", 14.3267, -60.92612], + ["2019-08-31T02:36:00", 14.32439, -60.94415], + ["2019-08-31T03:35:31", 14.32686, -60.96094], + ["2019-08-31T04:34:56", 14.32218, -60.98114], + ["2019-08-31T05:34:37", 14.32139, -61.00204], + ["2019-08-31T06:34:10", 14.32441, -61.01936], + ["2019-08-31T07:34:10", 14.33042, -61.0379], + ["2019-08-31T08:34:10", 14.33891, -61.05502], + ["2019-08-31T09:32:56", 14.343, -61.07657], + ["2019-08-31T10:32:56", 14.34459, -61.10163], + ["2019-08-31T11:32:56", 14.34669, -61.12463], + ["2019-08-31T12:32:29", 14.34378, -61.14523], + ["2019-08-31T14:31:29", 14.32903, -61.18912], + ["2019-08-31T15:31:48", 14.3261, -61.21109], + ["2019-08-31T16:28:34", 14.3277, -61.23111], + ["2019-08-31T16:31:28", 14.32792, -61.23212], + ["2019-08-31T17:30:27", 14.32742, -61.25058], + ["2019-08-31T18:30:44", 14.33058, -61.26645], + ["2019-08-31T19:29:29", 14.33337, -61.28136], + ["2019-08-31T20:29:29", 14.33655, -61.29587], + ["2019-08-31T21:28:56", 14.34212, -61.30786], + ["2019-08-31T22:28:27", 14.34894, -61.31812], + ["2019-08-31T23:28:08", 14.35779, -61.32962], + ["2019-09-01T00:27:38", 14.36593, -61.34567], + ["2019-09-01T01:26:29", 14.372, -61.36222], + ["2019-09-01T02:26:29", 14.37805, -61.38196], + ["2019-09-01T03:26:09", 14.38219, -61.40115], + ["2019-09-01T04:25:54", 14.38648, -61.41879], + ["2019-09-01T05:25:25", 14.3902, -61.43265], + ["2019-09-01T06:24:56", 14.3938, -61.44324], + ["2019-09-01T07:24:37", 14.39659, -61.44916], + ["2019-09-01T08:24:08", 14.39998, -61.45227], + ["2019-09-01T09:23:56", 14.40161, -61.45679], + ["2019-09-01T10:22:57", 14.40055, -61.46176], + ["2019-09-01T11:22:57", 14.3969, -61.46588], + ["2019-09-01T12:22:39", 14.39047, -61.47571], + ["2019-09-01T13:21:56", 14.38938, -61.49066], + ["2019-09-01T14:21:38", 14.38987, -61.508], + ["2019-09-01T15:20:57", 14.39312, -61.53833], + ["2019-09-01T16:20:57", 14.39342, -61.53996], + ["2019-09-01T17:20:57", 14.3969, -61.55206], + ["2019-09-01T18:20:24", 14.39342, -61.56165], + ["2019-09-01T19:19:57", 14.38688, -61.57263], + ["2019-09-01T20:19:28", 14.38106, -61.58325], + ["2019-09-01T21:18:55", 14.38163, -61.60031], + ["2019-09-01T22:18:39", 14.38224, -61.6178], + ["2019-09-01T23:18:09", 14.37999, -61.63623], + ["2019-09-02T00:17:39", 14.37639, -61.65271], + ["2019-09-02T01:17:25", 14.37431, -61.66568], + ["2019-09-02T02:16:36", 14.37072, -61.67352], + ["2019-09-02T03:15:58", 14.36874, -61.68172], + ["2019-09-02T04:15:58", 14.36878, -61.68893], + ["2019-09-02T05:15:39", 14.36628, -61.69165], + ["2019-09-02T06:15:27", 14.364, -61.6973], + ["2019-09-02T07:14:57", 14.35973, -61.707], + ["2019-09-02T08:14:24", 14.35485, -61.71793], + ["2019-09-02T09:14:26", 14.34857, -61.72974], + ["2019-09-02T10:13:56", 14.34467, -61.74329], + ["2019-09-02T11:13:27", 14.34107, -61.75827], + ["2019-09-02T12:12:10", 14.33762, -61.77085], + ["2019-09-02T13:12:10", 14.33071, -61.78149], + ["2019-09-02T14:11:02", 14.32563, -61.78767], + ["2019-09-02T15:11:02", 14.32451, -61.7966], + ["2019-09-02T16:10:39", 14.32527, -61.80615], + ["2019-09-02T16:28:07", 14.32574, -61.80884], + ["2019-09-02T17:10:29", 14.32657, -61.81656], + ["2019-09-02T18:09:57", 14.32686, -61.83057], + ["2019-09-02T19:09:26", 14.32863, -61.84845], + ["2019-09-02T20:09:07", 14.3289, -61.86514], + ["2019-09-02T21:08:56", 14.32761, -61.88016], + ["2019-09-02T22:08:26", 14.32278, -61.89093], + ["2019-09-02T23:07:57", 14.31729, -61.89969], + ["2019-09-03T00:07:37", 14.31265, -61.90915], + ["2019-09-03T01:06:59", 14.30637, -61.91695], + ["2019-09-03T02:06:59", 14.30577, -61.92871], + ["2019-09-03T03:05:57", 14.30858, -61.94176], + ["2019-09-03T04:05:57", 14.31236, -61.953], + ["2019-09-03T05:05:42", 14.31483, -61.9635], + ["2019-09-03T06:05:25", 14.31446, -61.96906], + ["2019-09-03T07:04:53", 14.31294, -61.97348], + ["2019-09-03T08:04:23", 14.31217, -61.97311], + ["2019-09-03T09:03:55", 14.30964, -61.97382], + ["2019-09-03T10:02:57", 14.30656, -61.97786], + ["2019-09-03T11:02:57", 14.29896, -61.98172], + ["2019-09-03T12:02:23", 14.29, -61.99082], + ["2019-09-03T13:02:23", 14.28292, -62.00284], + ["2019-09-03T14:00:56", 14.27586, -62.01786], + ["2019-09-03T15:00:56", 14.27127, -62.0358], + ["2019-09-03T16:00:56", 14.27393, -62.05417], + ["2019-09-03T16:27:48", 14.27574, -62.06094], + ["2019-09-03T17:00:38", 14.27872, -62.06943], + ["2019-09-03T18:00:10", 14.28182, -62.08136], + ["2019-09-03T18:58:58", 14.28295, -62.08824], + ["2019-09-03T19:59:36", 14.28522, -62.09076], + ["2019-09-03T20:58:58", 14.28943, -62.09381], + ["2019-09-03T21:59:46", 14.29155, -62.09735], + ["2019-09-03T22:58:35", 14.29163, -62.10138], + ["2019-09-03T23:57:59", 14.28609, -62.10458], + ["2019-09-04T00:57:58", 14.28314, -62.10843], + ["2019-09-04T01:57:27", 14.28263, -62.11853], + ["2019-09-04T02:57:29", 14.28056, -62.13336], + ["2019-09-04T03:57:10", 14.27814, -62.14725], + ["2019-09-04T04:56:19", 14.27145, -62.15503], + ["2019-09-04T05:55:58", 14.26593, -62.16367], + ["2019-09-04T06:55:58", 14.2631, -62.17453], + ["2019-09-04T07:54:57", 14.25923, -62.18271], + ["2019-09-04T08:54:26", 14.25502, -62.18797], + ["2019-09-04T09:54:26", 14.25275, -62.1908], + ["2019-09-04T10:53:46", 14.25215, -62.19373], + ["2019-09-04T11:52:58", 14.25141, -62.19663], + ["2019-09-04T12:52:58", 14.24785, -62.19809], + ["2019-09-04T13:52:04", 14.24084, -62.20013], + ["2019-09-04T14:52:04", 14.23144, -62.20356], + ["2019-09-04T15:52:04", 14.21998, -62.2088], + ["2019-09-04T16:28:21", 14.21339, -62.21219], + ["2019-09-04T16:51:59", 14.20959, -62.21512], + ["2019-09-04T17:50:55", 14.20049, -62.22482], + ["2019-09-04T18:50:55", 14.1965, -62.23349], + ["2019-09-04T19:49:56", 14.19297, -62.24207], + ["2019-09-04T20:49:56", 14.18851, -62.24911], + ["2019-09-05T01:47:00", 14.15718, -62.27994], + ["2019-09-05T03:46:58", 14.13586, -62.29141], + ["2019-09-05T05:47:57", 14.11432, -62.30728], + ["2019-09-05T06:46:26", 14.10702, -62.32067], + ["2019-09-05T07:46:26", 14.10208, -62.33466], + ["2019-09-05T13:41:23", 14.0854, -62.40353], + ["2019-09-05T14:40:41", 14.08145, -62.41048], + ["2019-09-05T15:40:41", 14.07737, -62.42078], + ["2019-09-05T21:40:00", 14.08855, -62.50494], + ["2019-09-05T22:37:37", 14.09302, -62.51077], + ["2019-09-06T00:39:59", 14.10016, -62.52643], + ["2019-09-06T01:37:28", 14.10445, -62.53345], + ["2019-09-06T02:37:28", 14.10823, -62.53937], + ["2019-09-06T03:37:27", 14.10966, -62.5444], + ["2019-09-06T04:35:25", 14.11283, -62.54965], + ["2019-09-06T05:35:25", 14.11283, -62.55222], + ["2019-09-06T06:35:25", 14.11094, -62.55222], + ["2019-09-06T07:34:28", 14.10842, -62.55255], + ["2019-09-06T08:34:38", 14.10325, -62.55151], + ["2019-09-06T09:34:41", 14.0962, -62.55246], + ["2019-09-06T10:34:28", 14.08735, -62.55042], + ["2019-09-06T11:32:55", 14.08045, -62.55272], + ["2019-09-06T12:32:55", 14.07144, -62.55684], + ["2019-09-06T13:32:55", 14.06397, -62.56482], + ["2019-09-06T14:32:17", 14.05791, -62.57721], + ["2019-09-06T15:31:59", 14.05161, -62.59027], + ["2019-09-06T16:27:48", 14.04609, -62.60251], + ["2019-09-06T17:30:11", 14.03953, -62.61069], + ["2019-09-06T18:31:30", 14.03101, -62.60941], + ["2019-09-06T19:28:37", 14.02014, -62.60985], + ["2019-09-06T20:30:56", 14.0104, -62.61118], + ["2019-09-06T21:28:37", 14.0007, -62.61337], + ["2019-09-06T22:29:01", 13.98895, -62.6189], + ["2019-09-06T23:29:12", 13.97604, -62.62375], + ["2019-09-07T00:28:02", 13.96814, -62.62918], + ["2019-09-07T01:27:26", 13.95952, -62.63782], + ["2019-09-07T02:27:28", 13.94783, -62.6474], + ["2019-09-07T03:25:59", 13.93307, -62.65411], + ["2019-09-07T04:25:59", 13.91839, -62.66003], + ["2019-09-07T05:26:34", 13.90494, -62.66943], + ["2019-09-07T07:25:42", 13.88167, -62.68714], + ["2019-09-07T08:25:12", 13.87107, -62.69635], + ["2019-09-07T09:25:42", 13.86064, -62.70499], + ["2019-09-07T10:23:08", 13.85047, -62.71417], + ["2019-09-07T11:22:11", 13.83795, -62.72602], + ["2019-09-07T12:22:11", 13.83023, -62.73975], + ["2019-09-07T14:28:09", 13.83114, -62.78923], + ["2019-09-07T15:28:09", 13.8359, -62.80245], + ["2019-09-07T16:28:09", 13.83663, -62.80374], + ["2019-09-07T18:22:06", 13.84526, -62.82707], + ["2019-09-07T19:20:59", 13.84938, -62.83594], + ["2019-09-07T20:22:06", 13.85329, -62.84372], + ["2019-09-07T21:18:31", 13.85641, -62.84885], + ["2019-09-07T22:18:31", 13.85517, -62.85503], + ["2019-09-07T23:18:31", 13.8526, -62.86087], + ["2019-09-08T00:18:17", 13.84985, -62.86523], + ["2019-09-08T01:19:59", 13.84906, -62.87045], + ["2019-09-08T02:15:41", 13.85021, -62.87678], + ["2019-09-08T03:15:41", 13.85386, -62.88184], + ["2019-09-08T04:15:41", 13.85652, -62.88553], + ["2019-09-08T05:17:59", 13.85901, -62.89212], + ["2019-09-08T06:16:58", 13.86159, -62.89818], + ["2019-09-08T07:16:58", 13.86082, -62.90625], + ["2019-09-08T08:14:34", 13.85853, -62.91221], + ["2019-09-08T09:14:34", 13.85454, -62.91418], + ["2019-09-08T10:13:59", 13.84925, -62.91614], + ["2019-09-08T15:10:38", 13.82897, -62.93716], + ["2019-09-08T16:09:11", 13.83168, -62.95089], + ["2019-09-08T17:09:11", 13.83413, -62.95922], + ["2019-09-08T18:09:11", 13.83658, -62.96832], + ["2019-09-08T19:09:55", 13.83694, -62.9791], + ["2019-09-08T20:10:31", 13.83329, -62.9895], + ["2019-09-08T21:08:14", 13.83015, -62.99823], + ["2019-09-08T22:07:59", 13.82319, -63.00758], + ["2019-09-08T23:07:59", 13.81624, -63.02011], + ["2019-09-09T00:07:58", 13.80914, -63.03281], + ["2019-09-09T01:07:58", 13.80251, -63.04301], + ["2019-09-09T02:07:58", 13.79856, -63.05511], + ["2019-09-09T03:06:28", 13.79626, -63.07428], + ["2019-09-09T04:05:12", 13.79418, -63.09448], + ["2019-09-09T05:05:26", 13.79424, -63.11304], + ["2019-09-09T06:05:12", 13.79122, -63.12967], + ["2019-09-09T08:05:28", 13.7856, -63.159], + ["2019-09-09T09:04:01", 13.78295, -63.17038], + ["2019-09-09T10:04:59", 13.77916, -63.18048], + ["2019-09-09T11:04:30", 13.77546, -63.18844], + ["2019-09-09T12:04:30", 13.77057, -63.19754], + ["2019-09-09T13:01:50", 13.76498, -63.20987], + ["2019-09-09T16:20:43", 13.74598, -63.26047], + ["2019-09-09T17:03:56", 13.74137, -63.27069], + ["2019-09-09T19:00:34", 13.73677, -63.3107], + ["2019-09-09T19:59:04", 13.73765, -63.33209], + ["2019-09-09T21:00:34", 13.73733, -63.35516], + ["2019-09-10T00:00:01", 13.72807, -63.41333], + ["2019-09-10T01:59:31", 13.72703, -63.44592], + ["2019-09-10T02:56:26", 13.72749, -63.45538], + ["2019-09-10T03:56:58", 13.72608, -63.4632], + ["2019-09-10T05:58:28", 13.71528, -63.47989], + ["2019-09-10T07:56:50", 13.70525, -63.50073], + ["2019-09-10T10:55:40", 13.69413, -63.54727], + ["2019-09-10T14:53:05", 13.6887, -63.62363], + ["2019-09-10T15:51:17", 13.69028, -63.64066], + ["2019-09-10T16:50:16", 13.69163, -63.65766], + ["2019-09-10T17:50:16", 13.6936, -63.67114], + ["2019-09-10T18:50:30", 13.69636, -63.68518], + ["2019-09-10T21:47:33", 13.70813, -63.72168], + ["2019-09-10T22:47:33", 13.71173, -63.72992], + ["2019-09-11T00:46:32", 13.71206, -63.74594], + ["2019-09-11T01:45:42", 13.71063, -63.75642], + ["2019-09-11T02:45:42", 13.70866, -63.76663], + ["2019-09-11T06:45:01", 13.6894, -63.80994], + ["2019-09-11T07:44:05", 13.67983, -63.81827], + ["2019-09-11T08:44:11", 13.67136, -63.82706], + ["2019-09-11T09:44:19", 13.65971, -63.83527], + ["2019-09-11T10:43:36", 13.65147, -63.84579], + ["2019-09-11T11:45:25", 13.64257, -63.85828], + ["2019-09-11T13:44:30", 13.63169, -63.88867], + ["2019-09-11T14:43:11", 13.62913, -63.91656], + ["2019-09-11T15:43:11", 13.629, -63.91853], + ["2019-09-11T16:43:11", 13.62827, -63.92368], + ["2019-09-11T17:39:42", 13.62542, -63.93439], + ["2019-09-11T18:42:09", 13.62043, -63.94574], + ["2019-09-11T19:40:59", 13.60285, -63.96542], + ["2019-09-11T21:40:59", 13.59787, -63.97675], + ["2019-09-11T22:37:20", 13.59103, -63.98923], + ["2019-09-11T23:39:03", 13.58381, -64.00363], + ["2019-09-12T00:36:21", 13.57762, -64.01461], + ["2019-09-12T01:38:12", 13.57119, -64.02713], + ["2019-09-12T02:35:18", 13.56415, -64.04066], + ["2019-09-12T03:35:18", 13.55621, -64.05637], + ["2019-09-12T04:35:18", 13.54879, -64.07294], + ["2019-09-12T05:33:41", 13.54183, -64.09189], + ["2019-09-12T06:33:41", 13.53492, -64.11239], + ["2019-09-12T07:33:41", 13.52771, -64.13034], + ["2019-09-12T08:33:59", 13.52241, -64.14758], + ["2019-09-12T10:34:29", 13.51702, -64.1812], + ["2019-09-12T12:32:59", 13.5152, -64.21259], + ["2019-09-12T15:29:51", 13.51504, -64.25837], + ["2019-09-12T16:29:51", 13.51508, -64.26318], + ["2019-09-12T17:31:17", 13.51601, -64.27673], + ["2019-09-12T18:31:18", 13.51697, -64.2897], + ["2019-09-12T20:30:35", 13.52691, -64.32266], + ["2019-09-12T21:30:41", 13.53468, -64.34065], + ["2019-09-12T22:30:39", 13.54286, -64.36237], + ["2019-09-12T23:30:41", 13.55314, -64.38193], + ["2019-09-13T06:27:29", 13.60614, -64.4855], + ["2019-09-13T08:24:30", 13.62342, -64.5184], + ["2019-09-13T16:06:04", 13.75273, -64.65796], + ["2019-09-13T23:17:15", 13.9362, -64.77988], + ["2019-09-14T00:20:30", 13.96024, -64.80298], + ["2019-09-14T01:19:58", 13.98433, -64.82297], + ["2019-09-14T05:18:26", 14.10087, -64.90964], + ["2019-09-14T07:16:40", 14.16289, -64.94904], + ["2019-09-14T08:15:53", 14.19444, -64.96456], + ["2019-09-14T09:15:53", 14.22886, -64.97778], + ["2019-09-14T10:13:06", 14.26125, -64.9892], + ["2019-09-14T14:14:57", 14.39651, -65.04764], + ["2019-09-14T16:10:25", 14.45789, -65.08243], + ["2019-09-14T22:11:04", 14.64754, -65.21245], + ["2019-09-14T23:08:28", 14.67608, -65.23573], + ["2019-09-15T00:08:28", 14.70634, -65.26053], + ["2019-09-15T01:07:59", 14.7338, -65.28299], + ["2019-09-15T15:55:29", 15.04542, -65.6134], + ["2019-09-15T16:00:27", 15.04676, -65.61539], + ["2019-09-15T17:00:27", 15.06839, -65.6463], + ["2019-09-15T21:58:32", 15.15564, -65.77603], + ["2019-09-16T04:57:42", 15.25005, -65.91779], + ["2019-09-16T05:54:15", 15.25976, -65.93301], + ["2019-09-16T16:51:54", 15.39842, -66.08749], + ["2019-09-17T07:42:37", 15.55256, -66.19678], + ["2019-09-17T13:42:35", 15.62199, -66.24963], + ["2019-09-17T17:40:59", 15.67706, -66.26425], + ["2019-09-18T00:37:35", 15.77215, -66.27283], + ["2019-09-18T08:35:17", 15.86528, -66.24963], + ["2019-09-18T09:34:43", 15.87177, -66.25012], + ["2019-09-18T10:33:14", 15.88147, -66.25317], + ["2019-09-18T15:55:42", 15.91368, -66.2619], + ["2019-09-19T04:24:34", 16.02687, -66.25696], + ["2019-09-19T10:22:58", 16.08947, -66.25632], + ["2019-09-19T12:23:00", 16.10684, -66.25308], + ["2019-09-19T14:21:00", 16.12269, -66.25055], + ["2019-09-19T15:18:53", 16.13963, -66.24862], + ["2019-09-19T16:18:53", 16.14396, -66.24811], + ["2019-09-19T21:19:32", 16.20553, -66.2489], + ["2019-09-20T03:17:02", 16.26241, -66.23972], + ["2019-09-20T05:14:28", 16.2714, -66.23163], + ["2019-09-20T12:12:17", 16.31312, -66.21912], + ["2019-09-20T14:10:32", 16.32098, -66.22174], + ["2019-09-20T18:11:13", 16.34472, -66.22714], + ["2019-09-20T20:07:40", 16.36546, -66.22865], + ["2019-09-20T21:07:40", 16.37739, -66.22891], + ["2019-09-21T02:08:27", 16.42297, -66.22308], + ["2019-09-21T03:05:10", 16.43028, -66.21964], + ["2019-09-21T04:05:12", 16.43713, -66.21652], + ["2019-09-21T17:58:56", 16.51629, -66.17288], + ["2019-09-21T19:00:30", 16.52039, -66.17184], + ["2019-09-22T00:57:30", 16.55421, -66.16086], + ["2019-09-22T03:58:11", 16.5836, -66.15349], + ["2019-09-22T07:57:30", 16.59757, -66.13409], + ["2019-09-22T13:51:16", 16.58843, -66.11194], + ["2019-09-22T15:50:18", 16.60073, -66.11096], + ["2019-09-23T16:40:21", 16.69171, -66.1001], + ["2019-09-23T21:41:29", 16.71213, -66.08969], + ["2019-09-23T22:37:56", 16.71409, -66.08481], + ["2019-09-24T00:38:26", 16.71881, -66.07234], + ["2019-09-24T01:37:57", 16.7202, -66.06573], + ["2019-09-24T02:38:26", 16.72062, -66.05801], + ["2019-09-24T03:36:03", 16.71865, -66.0494], + ["2019-09-24T04:36:09", 16.71571, -66.0407], + ["2019-09-24T05:36:09", 16.71232, -66.03194], + ["2019-09-24T09:33:19", 16.69635, -65.99036], + ["2019-09-24T10:33:41", 16.69127, -65.97936], + ["2019-09-24T11:33:41", 16.68977, -65.96451], + ["2019-09-24T13:32:29", 16.69332, -65.94162], + ["2019-09-24T14:31:59", 16.70289, -65.92402], + ["2019-09-24T15:31:59", 16.71791, -65.90024], + ["2019-09-24T15:55:50", 16.72342, -65.89105], + ["2019-09-25T03:26:57", 16.72762, -65.59311], + ["2019-09-25T05:24:19", 16.71525, -65.55686], + ["2019-09-25T06:23:33", 16.70879, -65.54067], + ["2019-09-25T07:24:19", 16.69924, -65.52365], + ["2019-09-25T08:22:19", 16.69142, -65.50861], + ["2019-09-25T09:23:48", 16.68158, -65.49414], + ["2019-09-25T10:23:35", 16.67252, -65.48318], + ["2019-09-25T11:23:35", 16.66239, -65.47461], + ["2019-09-25T21:15:48", 16.67263, -65.44806], + ["2019-09-26T01:13:13", 16.70569, -65.41788], + ["2019-09-26T06:11:26", 16.76543, -65.36169], + ["2019-09-26T08:12:13", 16.78735, -65.3215], + ["2019-09-26T14:12:19", 16.83923, -65.19405], + ["2019-09-26T21:07:58", 16.84246, -65.0682], + ["2019-09-26T23:08:06", 16.83545, -65.03664], + ["2019-09-27T01:08:06", 16.83253, -65.02515], + ["2019-09-27T02:04:20", 16.82972, -65.01675], + ["2019-09-27T03:07:12", 16.82536, -65.00937], + ["2019-09-27T04:06:31", 16.82225, -65.00433], + ["2019-09-27T05:05:31", 16.81832, -65.00003], + ["2019-09-27T06:02:40", 16.81569, -64.99773], + ["2019-09-27T07:03:13", 16.81407, -64.99579], + ["2019-09-27T08:03:10", 16.81366, -64.99567], + ["2019-09-27T09:02:01", 16.81334, -64.99621], + ["2019-09-27T10:02:01", 16.81398, -64.99836], + ["2019-09-27T11:02:01", 16.81595, -64.99948], + ["2019-09-27T12:02:29", 16.82029, -64.99957], + ["2019-09-27T12:59:48", 16.82688, -65.00018], + ["2019-09-27T14:01:12", 16.83461, -65.00104], + ["2019-09-27T14:58:44", 16.851, -65.0009], + ["2019-09-27T15:58:44", 16.85349, -65.00064], + ["2019-09-27T17:01:29", 16.86466, -64.99979], + ["2019-09-27T17:58:30", 16.87486, -64.99994], + ["2019-09-27T18:58:30", 16.88636, -65.00106], + ["2019-09-27T19:58:30", 16.89726, -65.00089], + ["2019-09-27T20:58:13", 16.90944, -64.99936], + ["2019-09-28T02:57:23", 16.98033, -64.96924], + ["2019-09-28T10:51:59", 17.00574, -64.8743], + ["2019-09-28T11:52:59", 17.00552, -64.86584], + ["2019-09-28T12:49:36", 17.00334, -64.85894], + ["2019-09-28T13:50:13", 16.99861, -64.85413], + ["2019-09-28T14:42:15", 16.9912, -64.85175], + ["2019-09-28T15:42:15", 16.9909, -64.85175], + ["2019-09-28T15:49:01", 16.99062, -64.85174], + ["2019-09-28T16:49:01", 16.98916, -64.852], + ["2019-09-28T17:49:01", 16.9892, -64.85269], + ["2019-09-28T18:49:31", 16.99139, -64.85348], + ["2019-09-28T19:48:13", 16.99464, -64.85286], + ["2019-09-28T20:48:13", 17.00013, -64.85226], + ["2019-09-28T21:48:13", 17.007, -64.85046], + ["2019-09-28T22:45:41", 17.01143, -64.84708], + ["2019-09-29T01:44:18", 17.02242, -64.84329], + ["2019-09-29T01:44:38", 17.0296, -64.8499], + ["2019-09-29T03:44:38", 17.0323, -64.8494], + ["2019-09-29T04:44:29", 17.03963, -64.85352], + ["2019-09-29T06:42:30", 17.06123, -64.86254], + ["2019-09-29T07:42:30", 17.07488, -64.86305], + ["2019-09-29T08:42:30", 17.09119, -64.86288], + ["2019-09-29T09:41:31", 17.10702, -64.86032], + ["2019-09-29T10:40:57", 17.12295, -64.85415], + ["2019-09-29T11:41:05", 17.13544, -64.8472], + ["2019-09-29T12:40:26", 17.14624, -64.8399], + ["2019-09-29T13:39:09", 17.16832, -64.828], + ["2019-09-29T14:39:09", 17.18059, -64.82294], + ["2019-09-29T15:39:09", 17.18183, -64.82259], + ["2019-09-29T15:42:29", 17.18264, -64.82223], + ["2019-09-29T16:39:13", 17.19758, -64.81865], + ["2019-09-29T17:36:52", 17.21542, -64.8131], + ["2019-09-29T18:40:05", 17.23351, -64.80493], + ["2019-09-29T19:36:52", 17.24881, -64.79644], + ["2019-09-29T20:36:54", 17.26481, -64.78702], + ["2019-09-29T21:36:54", 17.2773, -64.77878], + ["2019-09-29T22:37:59", 17.28798, -64.77289], + ["2019-09-29T23:35:26", 17.29799, -64.76806], + ["2019-09-30T00:36:28", 17.31015, -64.76343], + ["2019-09-30T04:33:52", 17.35003, -64.74014], + ["2019-09-30T05:36:56", 17.35701, -64.7343], + ["2019-09-30T06:32:31", 17.36314, -64.72922], + ["2019-09-30T07:32:31", 17.37022, -64.72347], + ["2019-09-30T08:32:31", 17.37816, -64.71823], + ["2019-09-30T09:32:57", 17.38757, -64.71332], + ["2019-09-30T13:30:35", 17.42586, -64.69937], + ["2019-09-30T14:30:11", 17.43395, -64.69598], + ["2019-09-30T15:30:11", 17.44167, -64.6928], + ["2019-09-30T16:30:58", 17.44899, -64.68962], + ["2019-09-30T17:30:58", 17.45663, -64.68817], + ["2019-09-30T18:28:50", 17.4659, -64.68738], + ["2019-09-30T20:30:38", 17.48751, -64.68973], + ["2019-09-30T21:30:06", 17.49956, -64.6907], + ["2019-09-30T23:27:43", 17.52096, -64.69208], + ["2019-10-01T02:25:03", 17.54225, -64.68527], + ["2019-10-01T04:23:52", 17.55397, -64.68254], + ["2019-10-01T05:23:52", 17.55822, -64.68271], + ["2019-10-01T06:23:58", 17.56407, -64.68558], + ["2019-10-01T10:23:07", 17.59517, -64.70313], + ["2019-10-01T11:21:26", 17.60249, -64.70265], + ["2019-10-01T12:21:26", 17.60635, -64.70231], + ["2019-10-01T13:21:26", 17.6094, -64.70325], + ["2019-10-01T14:22:29", 17.61511, -64.70699], + ["2019-10-01T15:19:21", 17.6212, -64.70981], + ["2019-10-01T16:19:01", 17.62636, -64.71307], + ["2019-10-01T17:20:30", 17.62971, -64.71639], + ["2019-10-01T18:18:24", 17.63437, -64.72101], + ["2019-10-01T19:18:11", 17.64212, -64.72668], + ["2019-10-01T20:18:11", 17.6465, -64.73336], + ["2019-10-01T21:18:13", 17.65014, -64.74054], + ["2019-10-01T22:17:05", 17.65263, -64.74679], + ["2019-10-01T23:17:13", 17.65455, -64.75218], + ["2019-10-02T00:17:13", 17.65515, -64.75716], + ["2019-10-02T01:17:13", 17.65498, -64.76334], + ["2019-10-02T02:16:06", 17.65625, -64.76806], + ["2019-10-02T03:15:59", 17.65811, -64.77048], + ["2019-10-02T04:15:29", 17.65931, -64.77283], + ["2019-10-02T06:15:14", 17.66081, -64.77746], + ["2019-10-02T07:14:27", 17.66155, -64.77838], + ["2019-10-02T08:14:04", 17.66125, -64.78363], + ["2019-10-02T10:12:00", 17.66241, -64.80007], + ["2019-10-02T12:12:59", 17.66736, -64.81762], + ["2019-10-02T13:11:25", 17.66922, -64.82504], + ["2019-10-02T13:42:05", 17.67161, -64.83853], + ["2019-10-02T14:42:05", 17.67225, -64.84041], + ["2019-10-02T15:42:05", 17.67259, -64.84119], + ["2019-10-02T16:11:01", 17.67392, -64.8442], + ["2019-10-02T17:11:01", 17.67692, -64.84961], + ["2019-10-02T20:07:30", 17.68273, -64.85714], + ["2019-10-02T21:07:30", 17.68376, -64.86109], + ["2019-10-02T22:07:30", 17.68509, -64.86658], + ["2019-10-02T23:06:58", 17.68599, -64.86972], + ["2019-10-03T01:07:29", 17.68591, -64.86984], + ["2019-10-03T03:07:29", 17.68578, -64.87027], + ["2019-10-03T08:03:11", 17.68571, -64.87033], + ["2019-10-03T10:03:06", 17.68566, -64.87033], + ["2019-10-03T11:03:41", 17.68548, -64.87026], + ["2019-10-03T12:03:41", 17.68428, -64.87344], + ["2019-10-03T13:03:13", 17.68397, -64.87739], + ["2019-10-03T14:03:13", 17.68483, -64.88211], + ["2019-10-03T14:41:18", 17.68593, -64.88428], + ["2019-10-03T15:41:18", 17.68593, -64.88428], + ["2019-10-03T15:59:51", 17.68596, -64.88424], + ["2019-10-03T16:59:59", 17.69017, -64.86879] + ], + "drifter_20": [ + ["2019-08-08T12:05:00", 11.83018, -56.09376], + ["2019-08-08T13:01:56", 11.83995, -56.10272], + ["2019-08-08T14:01:07", 11.85192, -56.11331], + ["2019-08-08T15:00:51", 11.86222, -56.12479], + ["2019-08-08T22:56:31", 11.92094, -56.19461], + ["2019-08-08T23:57:06", 11.92165, -56.20028], + ["2019-08-09T00:57:06", 11.92126, -56.20697], + ["2019-08-09T01:53:27", 11.91829, -56.21448], + ["2019-08-09T03:52:40", 11.9074, -56.23334], + ["2019-08-09T05:54:59", 11.90076, -56.24823], + ["2019-08-09T09:50:30", 11.88446, -56.28217], + ["2019-08-09T10:51:30", 11.87641, -56.29227], + ["2019-08-09T11:49:25", 11.86767, -56.3031], + ["2019-08-09T13:49:36", 11.85132, -56.32907], + ["2019-08-09T14:46:56", 11.84648, -56.34506], + ["2019-08-09T15:46:56", 11.84378, -56.36154], + ["2019-08-09T16:46:56", 11.84121, -56.37656], + ["2019-08-09T17:46:57", 11.83996, -56.39279], + ["2019-08-09T18:46:57", 11.84056, -56.40747], + ["2019-08-09T19:46:57", 11.84095, -56.42438], + ["2019-08-09T20:44:40", 11.8404, -56.44174], + ["2019-08-10T00:45:29", 11.82922, -56.51248], + ["2019-08-10T04:41:31", 11.83737, -56.58633], + ["2019-08-10T05:42:58", 11.84341, -56.60282], + ["2019-08-10T06:42:58", 11.8483, -56.61758], + ["2019-08-10T07:42:58", 11.85431, -56.63303], + ["2019-08-10T10:40:57", 11.86728, -56.67041], + ["2019-08-10T11:39:01", 11.87297, -56.68307], + ["2019-08-10T12:39:01", 11.87726, -56.69543], + ["2019-08-10T13:39:01", 11.88292, -56.70856], + ["2019-08-10T21:35:58", 11.95893, -56.78491], + ["2019-08-10T22:35:00", 11.96644, -56.7897], + ["2019-08-11T00:32:58", 11.97912, -56.79512], + ["2019-08-11T01:33:57", 11.98292, -56.79883], + ["2019-08-11T02:32:58", 11.98599, -56.80182], + ["2019-08-11T03:32:29", 11.98802, -56.80382], + ["2019-08-11T04:32:29", 11.99261, -56.807], + ["2019-08-11T05:32:29", 11.99806, -56.81052], + ["2019-08-11T06:29:17", 12.00211, -56.81393], + ["2019-08-11T07:29:17", 12.00644, -56.81805], + ["2019-08-11T08:30:58", 12.01226, -56.82126], + ["2019-08-11T15:28:30", 12.04383, -56.84918], + ["2019-08-11T16:25:32", 12.04463, -56.85556], + ["2019-08-11T17:28:00", 12.04574, -56.86328], + ["2019-08-12T03:22:30", 12.05392, -56.95859], + ["2019-08-12T06:21:30", 12.05177, -57.00189], + ["2019-08-12T07:21:58", 12.05221, -57.01708], + ["2019-08-12T08:21:58", 12.05225, -57.03244], + ["2019-08-12T09:18:30", 12.05624, -57.04693], + ["2019-08-12T10:18:30", 12.06221, -57.06032], + ["2019-08-12T11:18:30", 12.0689, -57.07422], + ["2019-08-12T12:17:30", 12.07657, -57.08704], + ["2019-08-12T13:16:16", 12.08596, -57.0998], + ["2019-08-12T14:16:16", 12.09338, -57.11096], + ["2019-08-12T16:14:44", 12.10744, -57.13528], + ["2019-08-12T17:15:32", 12.11554, -57.1467], + ["2019-08-12T18:15:32", 12.1252, -57.15794], + ["2019-08-12T19:15:32", 12.13735, -57.16833], + ["2019-08-12T21:12:48", 12.16094, -57.18657], + ["2019-08-12T22:12:48", 12.173, -57.19223], + ["2019-08-12T23:12:48", 12.18596, -57.19644], + ["2019-08-13T01:12:00", 12.20947, -57.2037], + ["2019-08-13T02:10:17", 12.21916, -57.20727], + ["2019-08-13T03:10:17", 12.22937, -57.21173], + ["2019-08-13T04:09:05", 12.2386, -57.21588], + ["2019-08-13T05:08:30", 12.24898, -57.21994], + ["2019-08-13T06:06:30", 12.25893, -57.22455], + ["2019-08-13T07:06:30", 12.26824, -57.22687], + ["2019-08-13T08:05:20", 12.2795, -57.22883], + ["2019-08-13T09:05:20", 12.2901, -57.22849], + ["2019-08-13T13:04:59", 12.3269, -57.21439], + ["2019-08-13T14:06:10", 12.3332, -57.21133], + ["2019-08-13T17:00:14", 12.33976, -57.20495], + ["2019-08-13T18:00:14", 12.34105, -57.20555], + ["2019-08-13T19:00:14", 12.34225, -57.20667], + ["2019-08-13T20:01:56", 12.34388, -57.20737], + ["2019-08-13T20:59:50", 12.34473, -57.20764], + ["2019-08-13T21:35:07", 12.3426, -57.21077], + ["2019-08-13T22:58:45", 12.34264, -57.21075], + ["2019-08-13T23:35:07", 12.34089, -57.21112], + ["2019-08-13T23:58:28", 12.33987, -57.21216], + ["2019-08-14T01:01:30", 12.3382, -57.21286], + ["2019-08-14T01:57:12", 12.3348, -57.21462], + ["2019-08-14T02:57:12", 12.33124, -57.219], + ["2019-08-14T03:57:12", 12.32888, -57.22424], + ["2019-08-14T04:56:58", 12.32542, -57.22943], + ["2019-08-14T12:52:09", 12.31432, -57.28839], + ["2019-08-14T13:52:40", 12.31298, -57.29658], + ["2019-08-14T14:52:40", 12.31259, -57.30594], + ["2019-08-14T20:48:48", 12.31737, -57.37772], + ["2019-08-14T22:48:41", 12.32193, -57.40448], + ["2019-08-14T23:48:41", 12.32223, -57.40637], + ["2019-08-15T00:48:41", 12.32335, -57.41684], + ["2019-08-15T01:45:45", 12.32415, -57.4274], + ["2019-08-15T02:47:22", 12.32731, -57.44016], + ["2019-08-15T03:44:55", 12.33015, -57.45245], + ["2019-08-15T04:46:33", 12.3332, -57.46525], + ["2019-08-15T05:46:33", 12.3344, -57.47641], + ["2019-08-15T06:46:33", 12.33655, -57.48911], + ["2019-08-15T08:42:58", 12.34647, -57.51028], + ["2019-08-15T09:42:58", 12.35222, -57.52006], + ["2019-08-15T10:42:58", 12.35793, -57.53268], + ["2019-08-15T13:41:05", 12.37999, -57.57321], + ["2019-08-15T14:41:02", 12.38893, -57.58853], + ["2019-08-16T00:36:58", 12.48844, -57.70609], + ["2019-08-16T04:34:27", 12.51664, -57.73273], + ["2019-08-16T05:34:28", 12.52099, -57.73721], + ["2019-08-16T07:32:00", 12.52777, -57.74647], + ["2019-08-16T08:31:10", 12.53171, -57.75174], + ["2019-08-16T09:32:00", 12.53438, -57.75745], + ["2019-08-16T10:33:29", 12.53751, -57.76231], + ["2019-08-16T11:33:29", 12.53841, -57.77029], + ["2019-08-16T14:28:59", 12.54625, -57.78796], + ["2019-08-16T19:26:59", 12.55771, -57.83334], + ["2019-08-16T21:26:50", 12.56875, -57.85687], + ["2019-08-17T02:23:28", 12.61098, -57.90558], + ["2019-08-17T05:20:24", 12.62874, -57.93109], + ["2019-08-17T06:20:31", 12.63275, -57.94229], + ["2019-08-17T10:17:41", 12.66093, -57.98972], + ["2019-08-17T11:18:29", 12.67124, -57.99988], + ["2019-08-17T12:18:17", 12.68153, -58.0098], + ["2019-08-17T14:16:33", 12.69777, -58.0325], + ["2019-08-17T16:15:24", 12.70296, -58.05037], + ["2019-08-17T17:15:24", 12.70232, -58.06067], + ["2019-08-17T20:14:36", 12.70336, -58.10437], + ["2019-08-17T21:15:30", 12.70598, -58.11813], + ["2019-08-17T23:35:35", 12.71577, -58.14346], + ["2019-08-18T00:12:58", 12.71804, -58.14922], + ["2019-08-18T01:12:58", 12.72113, -58.15909], + ["2019-08-18T03:11:28", 12.72795, -58.17932], + ["2019-08-18T04:09:15", 12.72997, -58.18833], + ["2019-08-18T05:09:15", 12.72993, -58.19794], + ["2019-08-18T06:09:58", 12.72912, -58.20944], + ["2019-08-18T07:07:13", 12.72802, -58.22113], + ["2019-08-18T08:07:13", 12.72759, -58.23237], + ["2019-08-18T09:07:13", 12.72931, -58.24353], + ["2019-08-18T10:05:39", 12.7343, -58.25584], + ["2019-08-18T11:05:39", 12.73979, -58.26786], + ["2019-08-18T12:05:39", 12.74614, -58.27945], + ["2019-08-18T13:06:04", 12.75402, -58.29147], + ["2019-08-18T14:06:04", 12.7623, -58.30194], + ["2019-08-18T15:06:04", 12.77088, -58.31284], + ["2019-08-18T16:04:34", 12.77682, -58.32385], + ["2019-08-18T18:02:32", 12.78809, -58.34694], + ["2019-08-18T19:02:32", 12.79191, -58.35853], + ["2019-08-18T20:02:32", 12.7959, -58.37158], + ["2019-08-18T22:03:11", 12.81124, -58.40115], + ["2019-08-18T22:34:52", 12.82499, -58.42196], + ["2019-08-18T23:34:52", 12.82726, -58.42471], + ["2019-08-19T01:01:02", 12.84443, -58.44131], + ["2019-08-19T01:59:29", 12.8524, -58.45359], + ["2019-08-19T02:59:29", 12.86206, -58.46921], + ["2019-08-19T04:56:25", 12.88887, -58.49559], + ["2019-08-19T05:56:25", 12.90531, -58.50769], + ["2019-08-19T06:57:11", 12.92378, -58.52078], + ["2019-08-19T11:52:34", 13.01009, -58.58231], + ["2019-08-19T12:52:00", 13.02424, -58.58542], + ["2019-08-19T13:52:25", 13.03531, -58.59314], + ["2019-08-19T14:51:36", 13.04519, -58.60165], + ["2019-08-19T15:50:55", 13.05877, -58.60382], + ["2019-08-19T16:50:24", 13.0718, -58.60208], + ["2019-08-19T17:48:57", 13.08081, -58.60206], + ["2019-08-19T18:48:57", 13.08828, -58.60541], + ["2019-08-19T19:48:57", 13.0954, -58.60635], + ["2019-08-19T20:48:56", 13.10493, -58.6069], + ["2019-08-19T21:48:59", 13.11313, -58.60938], + ["2019-08-19T22:48:26", 13.11772, -58.61246], + ["2019-08-19T23:35:14", 13.11807, -58.61649], + ["2019-08-19T23:47:28", 13.11794, -58.61811], + ["2019-08-20T00:47:28", 13.11725, -58.62729], + ["2019-08-20T01:46:55", 13.1149, -58.63162], + ["2019-08-20T02:45:57", 13.11137, -58.63208], + ["2019-08-20T03:45:29", 13.10996, -58.6322], + ["2019-08-20T04:45:28", 13.10715, -58.634], + ["2019-08-20T05:44:54", 13.10604, -58.6398], + ["2019-08-20T06:43:53", 13.10609, -58.64626], + ["2019-08-20T07:43:53", 13.10682, -58.65338], + ["2019-08-20T08:43:24", 13.10934, -58.66269], + ["2019-08-20T09:41:55", 13.11119, -58.67653], + ["2019-08-20T10:41:55", 13.11269, -58.69086], + ["2019-08-20T11:41:40", 13.11334, -58.70029], + ["2019-08-20T12:41:07", 13.1111, -58.70761], + ["2019-08-20T13:40:27", 13.11107, -58.7159], + ["2019-08-20T14:40:27", 13.11146, -58.72723], + ["2019-08-20T16:10:56", 13.11502, -58.75275], + ["2019-08-20T17:09:54", 13.11908, -58.77451], + ["2019-08-20T18:08:26", 13.1249, -58.79089], + ["2019-08-20T19:08:26", 13.13293, -58.79904], + ["2019-08-20T20:07:55", 13.14039, -58.80615], + ["2019-08-20T21:07:25", 13.14507, -58.81534], + ["2019-08-20T22:06:38", 13.14935, -58.82781], + ["2019-08-20T23:06:38", 13.15184, -58.84], + ["2019-08-20T23:35:23", 13.15313, -58.84509], + ["2019-08-21T00:06:25", 13.15389, -58.84995], + ["2019-08-21T01:05:57", 13.15628, -58.85907], + ["2019-08-21T02:05:39", 13.1582, -58.87244], + ["2019-08-21T03:04:26", 13.16102, -58.88766], + ["2019-08-21T04:03:36", 13.16661, -58.89642], + ["2019-08-21T05:02:55", 13.17458, -58.90247], + ["2019-08-21T06:02:56", 13.18188, -58.9061], + ["2019-08-21T07:01:28", 13.18978, -58.91103], + ["2019-08-21T08:01:55", 13.19712, -58.9155], + ["2019-08-21T09:01:28", 13.20325, -58.92133], + ["2019-08-21T10:00:54", 13.20776, -58.92639], + ["2019-08-21T11:00:25", 13.20957, -58.9296], + ["2019-08-21T12:58:56", 13.21032, -58.94104], + ["2019-08-21T13:57:56", 13.21251, -58.9526], + ["2019-08-21T14:57:56", 13.21912, -58.9635], + ["2019-08-21T15:57:39", 13.23082, -58.97711], + ["2019-08-21T16:56:25", 13.24911, -58.98845], + ["2019-08-21T17:56:25", 13.26615, -58.99463], + ["2019-08-21T18:55:56", 13.27855, -58.99762], + ["2019-08-21T19:55:53", 13.28849, -58.9996], + ["2019-08-21T20:55:29", 13.29441, -59.0032], + ["2019-08-21T21:54:27", 13.2993, -59.00705], + ["2019-08-21T22:54:27", 13.30608, -59.01151], + ["2019-08-21T23:34:36", 13.31098, -59.01553], + ["2019-08-21T23:53:58", 13.31274, -59.01712], + ["2019-08-22T00:53:23", 13.32173, -59.02097], + ["2019-08-22T01:52:38", 13.33389, -59.02274], + ["2019-08-22T02:51:27", 13.34526, -59.02704], + ["2019-08-22T03:51:27", 13.35672, -59.03339], + ["2019-08-22T04:51:26", 13.36131, -59.03876], + ["2019-08-22T05:50:57", 13.36647, -59.04263], + ["2019-08-22T06:51:28", 13.37133, -59.04474], + ["2019-08-22T07:49:57", 13.37522, -59.04766], + ["2019-08-22T08:49:57", 13.37857, -59.05298], + ["2019-08-22T09:49:25", 13.37958, -59.05814], + ["2019-08-22T10:49:24", 13.38511, -59.06738], + ["2019-08-22T11:48:25", 13.39432, -59.07474], + ["2019-08-22T12:47:32", 13.40655, -59.08105], + ["2019-08-22T13:47:32", 13.41809, -59.08594], + ["2019-08-22T14:47:07", 13.43059, -59.09143], + ["2019-08-22T16:46:25", 13.4556, -59.10083], + ["2019-08-22T17:46:57", 13.46711, -59.10938], + ["2019-08-22T18:45:28", 13.47729, -59.11867], + ["2019-08-22T19:45:28", 13.48467, -59.12476], + ["2019-08-22T20:44:27", 13.49102, -59.12814], + ["2019-08-22T22:42:14", 13.50974, -59.13728], + ["2019-08-22T23:42:14", 13.50961, -59.13805], + ["2019-08-23T00:42:14", 13.51236, -59.14423], + ["2019-08-23T01:43:27", 13.51898, -59.15485], + ["2019-08-23T02:43:27", 13.52344, -59.16086], + ["2019-08-23T03:42:25", 13.52515, -59.16259], + ["2019-08-23T04:42:25", 13.52558, -59.16577], + ["2019-08-23T05:40:27", 13.52246, -59.17045], + ["2019-08-23T06:40:27", 13.5183, -59.17706], + ["2019-08-23T07:40:59", 13.51224, -59.18988], + ["2019-08-23T08:39:26", 13.50835, -59.20745], + ["2019-08-23T09:39:26", 13.50904, -59.22299], + ["2019-08-23T10:39:26", 13.51286, -59.23947], + ["2019-08-23T11:39:59", 13.51773, -59.25839], + ["2019-08-23T14:37:29", 13.5326, -59.29446], + ["2019-08-23T15:37:56", 13.54019, -59.30579], + ["2019-08-23T16:37:42", 13.55094, -59.31988], + ["2019-08-23T17:37:42", 13.56463, -59.3331], + ["2019-08-23T18:35:57", 13.57785, -59.34317], + ["2019-08-23T19:35:57", 13.59047, -59.35132], + ["2019-08-23T20:34:38", 13.60019, -59.35659], + ["2019-08-23T21:34:51", 13.60767, -59.36127], + ["2019-08-23T22:34:38", 13.61512, -59.36234], + ["2019-08-24T05:31:01", 13.66476, -59.38254], + ["2019-08-24T08:29:45", 13.67281, -59.38523], + ["2019-08-24T09:29:45", 13.67144, -59.38832], + ["2019-08-24T10:29:45", 13.67032, -59.3927], + ["2019-08-24T11:27:58", 13.67027, -59.39742], + ["2019-08-24T12:27:58", 13.67126, -59.40369], + ["2019-08-24T13:27:41", 13.67373, -59.41309], + ["2019-08-24T17:25:57", 13.69517, -59.45428], + ["2019-08-24T21:22:25", 13.71439, -59.49188], + ["2019-08-24T23:20:57", 13.72063, -59.50641], + ["2019-08-24T23:35:29", 13.72127, -59.50812], + ["2019-08-25T00:21:57", 13.72245, -59.51274], + ["2019-08-25T01:21:57", 13.72279, -59.51849], + ["2019-08-25T02:20:59", 13.72212, -59.52456], + ["2019-08-25T03:20:59", 13.72173, -59.53091], + ["2019-08-25T04:22:35", 13.72325, -59.53876], + ["2019-08-25T14:14:11", 13.71138, -59.59088], + ["2019-08-26T04:08:01", 13.76108, -59.70618], + ["2019-08-26T05:06:30", 13.76507, -59.71794], + ["2019-08-26T06:06:30", 13.7682, -59.7285], + ["2019-08-26T07:06:30", 13.77159, -59.7406], + ["2019-08-26T08:06:14", 13.77639, -59.75253], + ["2019-08-26T09:06:14", 13.7812, -59.7648], + ["2019-08-26T10:03:37", 13.78432, -59.77444], + ["2019-08-26T11:03:37", 13.78664, -59.78259], + ["2019-08-26T12:03:37", 13.789, -59.79272], + ["2019-08-26T17:00:21", 13.78771, -59.8266], + ["2019-08-26T18:00:43", 13.79085, -59.8349], + ["2019-08-26T19:00:59", 13.79458, -59.84384], + ["2019-08-26T20:00:00", 13.80088, -59.85391], + ["2019-08-26T20:59:30", 13.80812, -59.86746], + ["2019-08-26T21:59:17", 13.81359, -59.88266], + ["2019-08-27T04:55:57", 13.85688, -59.98257], + ["2019-08-27T05:55:29", 13.86417, -59.99942], + ["2019-08-27T06:55:29", 13.87189, -60.01822], + ["2019-08-27T07:56:58", 13.88484, -60.03738], + ["2019-08-27T08:56:58", 13.90604, -60.05334], + ["2019-08-27T09:54:06", 13.928, -60.06681], + ["2019-08-27T10:54:06", 13.95242, -60.07797], + ["2019-08-27T11:53:29", 13.97883, -60.086], + ["2019-08-27T12:53:29", 14.00629, -60.09445], + ["2019-08-27T13:54:11", 14.03421, -60.10205], + ["2019-08-27T16:49:18", 14.11826, -60.11611], + ["2019-08-27T17:49:18", 14.14843, -60.11662], + ["2019-08-27T18:49:18", 14.17701, -60.11533], + ["2019-08-27T22:48:29", 14.27621, -60.09695], + ["2019-08-27T23:48:41", 14.29274, -60.08765], + ["2019-08-28T00:48:32", 14.30746, -60.07779], + ["2019-08-28T01:47:00", 14.31877, -60.06857], + ["2019-08-28T02:46:32", 14.32592, -60.06047], + ["2019-08-28T03:46:32", 14.33013, -60.05481], + ["2019-08-28T13:43:51", 14.2983, -60.06952], + ["2019-08-28T14:40:59", 14.2933, -60.08145], + ["2019-08-28T15:43:18", 14.28792, -60.09796], + ["2019-08-28T16:40:31", 14.28518, -60.11237], + ["2019-08-28T17:41:00", 14.2829, -60.1297], + ["2019-08-28T18:40:27", 14.28017, -60.14865], + ["2019-08-28T19:41:19", 14.27595, -60.17196], + ["2019-08-28T20:39:30", 14.27253, -60.19666], + ["2019-08-28T21:41:19", 14.2705, -60.21994], + ["2019-08-28T23:37:27", 14.27407, -60.26603], + ["2019-08-29T00:37:27", 14.27875, -60.29401], + ["2019-08-29T01:37:27", 14.28304, -60.31976], + ["2019-08-29T05:35:13", 14.30675, -60.41409], + ["2019-08-29T06:33:13", 14.31575, -60.43252], + ["2019-08-29T07:33:13", 14.32618, -60.44797], + ["2019-08-29T08:33:27", 14.33727, -60.46231], + ["2019-08-29T09:30:59", 14.34751, -60.4743], + ["2019-08-29T14:30:00", 14.40398, -60.53424], + ["2019-08-29T15:29:28", 14.41422, -60.54285], + ["2019-08-29T19:26:57", 14.44584, -60.54691], + ["2019-08-29T20:26:28", 14.44741, -60.55292], + ["2019-08-29T21:27:38", 14.44792, -60.5679], + ["2019-08-29T22:27:38", 14.44642, -60.57734], + ["2019-08-29T23:27:38", 14.44638, -60.57794], + ["2019-08-29T23:35:37", 14.44622, -60.57892], + ["2019-08-30T00:25:28", 14.44507, -60.58426], + ["2019-08-30T01:25:28", 14.44456, -60.58975], + ["2019-08-30T02:25:28", 14.44379, -60.59198], + ["2019-08-30T10:20:28", 14.3939, -60.67557], + ["2019-08-30T11:20:05", 14.38363, -60.69089], + ["2019-08-30T13:18:26", 14.37451, -60.71191], + ["2019-08-30T14:19:01", 14.3746, -60.72379], + ["2019-08-30T15:18:26", 14.3782, -60.73105], + ["2019-08-30T18:17:26", 14.38479, -60.77536], + ["2019-08-30T19:17:27", 14.38342, -60.7923], + ["2019-08-30T20:14:57", 14.3824, -60.81013], + ["2019-08-30T21:14:57", 14.37849, -60.82541], + ["2019-08-30T22:14:58", 14.34744, -60.86963], + ["2019-08-30T23:14:58", 14.34624, -60.87289], + ["2019-08-31T00:14:58", 14.34148, -60.88611], + ["2019-08-31T01:14:37", 14.33227, -60.90463], + ["2019-08-31T02:14:26", 14.32304, -60.92285], + ["2019-08-31T03:13:25", 14.32576, -60.94079], + ["2019-08-31T04:13:25", 14.32447, -60.95856], + ["2019-08-31T05:12:58", 14.32305, -60.97763], + ["2019-08-31T06:12:24", 14.3253, -60.99701], + ["2019-08-31T08:11:25", 14.33641, -61.03616], + ["2019-08-31T09:10:24", 14.34193, -61.05748], + ["2019-08-31T10:10:24", 14.34382, -61.08331], + ["2019-08-31T11:09:25", 14.34391, -61.1077], + ["2019-08-31T12:09:25", 14.34657, -61.12778], + ["2019-08-31T14:08:28", 14.33583, -61.16931], + ["2019-08-31T15:07:29", 14.33047, -61.19356], + ["2019-08-31T16:07:29", 14.32717, -61.21939], + ["2019-08-31T17:07:07", 14.32745, -61.24216], + ["2019-08-31T18:05:56", 14.3293, -61.26023], + ["2019-08-31T19:06:26", 14.33187, -61.27454], + ["2019-08-31T20:05:56", 14.33509, -61.29001], + ["2019-08-31T21:04:56", 14.34003, -61.30357], + ["2019-08-31T22:04:56", 14.34608, -61.31421], + ["2019-08-31T23:04:26", 14.3544, -61.32462], + ["2019-09-01T00:03:56", 14.36316, -61.3389], + ["2019-09-01T01:02:57", 14.36987, -61.35542], + ["2019-09-01T02:02:57", 14.37584, -61.37387], + ["2019-09-01T03:02:27", 14.38125, -61.39374], + ["2019-09-01T04:00:56", 14.38466, -61.41186], + ["2019-09-01T05:00:56", 14.38899, -61.428], + ["2019-09-01T06:00:56", 14.39238, -61.43924], + ["2019-09-01T10:57:57", 14.399, -61.46399], + ["2019-09-01T12:57:25", 14.38933, -61.48462], + ["2019-09-01T18:10:57", 14.39466, -61.56012], + ["2019-09-01T19:09:59", 14.38826, -61.57159], + ["2019-09-01T20:09:59", 14.38208, -61.58206], + ["2019-09-01T21:09:27", 14.38135, -61.59781], + ["2019-09-01T21:34:51", 14.3806, -61.63382], + ["2019-09-01T22:34:51", 14.37978, -61.63794], + ["2019-09-01T23:34:51", 14.37901, -61.6412], + ["2019-09-02T00:07:27", 14.37692, -61.65039], + ["2019-09-02T01:06:06", 14.37475, -61.66436], + ["2019-09-02T02:06:06", 14.3714, -61.67294], + ["2019-09-02T03:05:24", 14.36874, -61.68024], + ["2019-09-02T04:05:24", 14.36865, -61.68814], + ["2019-09-02T05:03:29", 14.36694, -61.69169], + ["2019-09-02T06:03:29", 14.36424, -61.69581], + ["2019-09-02T07:03:29", 14.36055, -61.70517], + ["2019-09-02T08:02:24", 14.35542, -61.7158], + ["2019-09-02T09:02:24", 14.34954, -61.72739], + ["2019-09-02T10:02:24", 14.34508, -61.74026], + ["2019-09-02T11:01:58", 14.34146, -61.75476], + ["2019-09-02T12:01:24", 14.33874, -61.76794], + ["2019-09-02T13:00:26", 14.33229, -61.77911], + ["2019-09-02T14:00:26", 14.3265, -61.78555], + ["2019-09-02T14:59:55", 14.32491, -61.79456], + ["2019-09-02T15:59:28", 14.32517, -61.80457], + ["2019-09-02T16:58:37", 14.32649, -61.81426], + ["2019-09-02T17:58:37", 14.327, -61.82791], + ["2019-09-02T19:53:09", 14.32914, -61.86108], + ["2019-09-02T20:52:40", 14.32815, -61.87662], + ["2019-09-02T21:51:56", 14.32403, -61.88911], + ["2019-09-02T22:51:56", 14.31832, -61.89709], + ["2019-09-02T23:35:21", 14.31525, -61.90472], + ["2019-09-02T23:50:55", 14.314, -61.90739], + ["2019-09-03T00:50:55", 14.30743, -61.91486], + ["2019-09-03T01:50:27", 14.30557, -61.92572], + ["2019-09-03T02:48:36", 14.30739, -61.93779], + ["2019-09-03T03:48:36", 14.31108, -61.94963], + ["2019-09-03T04:48:36", 14.31408, -61.96027], + ["2019-09-03T05:48:26", 14.31463, -61.96716], + ["2019-09-03T06:47:27", 14.31345, -61.97228], + ["2019-09-03T07:47:27", 14.31186, -61.97382], + ["2019-09-03T08:46:25", 14.31, -61.97324], + ["2019-09-03T09:46:25", 14.30794, -61.97736], + ["2019-09-03T10:45:54", 14.30155, -61.97995], + ["2019-09-03T11:44:56", 14.29275, -61.98785], + ["2019-09-03T12:44:26", 14.28503, -61.99884], + ["2019-09-03T13:44:06", 14.27865, -62.01376], + ["2019-09-03T14:43:56", 14.27198, -62.03012], + ["2019-09-03T15:43:27", 14.27301, -62.04883], + ["2019-09-03T17:41:36", 14.28151, -62.07842], + ["2019-09-03T18:41:36", 14.2831, -62.08623], + ["2019-09-03T19:41:36", 14.28392, -62.08975], + ["2019-09-03T20:41:26", 14.28849, -62.09277], + ["2019-09-03T21:35:22", 14.29251, -62.10002], + ["2019-09-03T22:35:22", 14.28951, -62.10191], + ["2019-09-03T23:35:22", 14.28805, -62.10242], + ["2019-09-03T23:40:00", 14.28754, -62.10275], + ["2019-09-04T00:39:09", 14.2837, -62.10694], + ["2019-09-04T01:39:09", 14.28293, -62.11475], + ["2019-09-04T02:38:39", 14.2808, -62.12793], + ["2019-09-04T03:36:59", 14.27914, -62.14324], + ["2019-09-04T04:36:59", 14.27395, -62.15302], + ["2019-09-04T05:36:59", 14.2673, -62.16049], + ["2019-09-04T06:36:39", 14.26408, -62.17117], + ["2019-09-04T07:37:28", 14.26045, -62.18137], + ["2019-09-04T08:34:57", 14.25581, -62.1869], + ["2019-09-04T09:34:57", 14.25341, -62.18965], + ["2019-09-04T10:34:57", 14.25225, -62.19308], + ["2019-09-04T11:34:27", 14.25205, -62.1958], + ["2019-09-04T12:33:57", 14.24976, -62.19782], + ["2019-09-04T13:33:57", 14.24375, -62.19928], + ["2019-09-04T14:33:06", 14.23518, -62.20239], + ["2019-09-04T15:32:57", 14.22342, -62.20688], + ["2019-09-04T16:32:05", 14.21256, -62.2128], + ["2019-09-04T17:32:05", 14.20252, -62.22052], + ["2019-09-04T18:32:26", 14.19759, -62.2312], + ["2019-09-04T19:31:28", 14.194, -62.23941], + ["2019-09-05T12:24:27", 14.08748, -62.41013], + ["2019-09-05T13:23:26", 14.08623, -62.41504], + ["2019-09-05T14:21:57", 14.08318, -62.42108], + ["2019-09-05T15:21:57", 14.07889, -62.43069], + ["2019-09-05T16:21:57", 14.0752, -62.44168], + ["2019-09-05T17:22:01", 14.07122, -62.45181], + ["2019-09-05T22:19:29", 14.09097, -62.51752], + ["2019-09-06T01:17:26", 14.09961, -62.53781], + ["2019-09-06T02:17:26", 14.10343, -62.54493], + ["2019-09-06T03:17:26", 14.10583, -62.55188], + ["2019-09-06T04:16:29", 14.10838, -62.55621], + ["2019-09-06T05:15:01", 14.1099, -62.55894], + ["2019-09-06T06:15:01", 14.10801, -62.55928], + ["2019-09-06T07:15:01", 14.10548, -62.56168], + ["2019-09-06T08:14:06", 14.09847, -62.56158], + ["2019-09-06T10:12:57", 14.0825, -62.5614], + ["2019-09-06T11:13:54", 14.07497, -62.56485], + ["2019-09-06T12:12:57", 14.06542, -62.56955], + ["2019-09-06T13:12:25", 14.05836, -62.57617], + ["2019-09-06T14:11:27", 14.05309, -62.5867], + ["2019-09-06T15:10:53", 14.04642, -62.59988], + ["2019-09-06T16:10:59", 14.0398, -62.61102], + ["2019-09-06T17:10:53", 14.03389, -62.61954], + ["2019-09-06T18:10:28", 14.02624, -62.62015], + ["2019-09-06T19:10:28", 14.01611, -62.62024], + ["2019-09-06T20:08:30", 14.00693, -62.61929], + ["2019-09-06T21:08:30", 13.99727, -62.62152], + ["2019-09-06T22:07:59", 13.9865, -62.62628], + ["2019-09-06T23:08:00", 13.9742, -62.63275], + ["2019-09-06T23:28:46", 13.97051, -62.63428], + ["2019-09-07T00:06:29", 13.9656, -62.63658], + ["2019-09-07T01:06:29", 13.95723, -62.64353], + ["2019-09-07T02:06:29", 13.94418, -62.64954], + ["2019-09-07T07:03:38", 13.87292, -62.68695], + ["2019-09-07T08:02:57", 13.8619, -62.69549], + ["2019-09-07T09:02:57", 13.85212, -62.70416], + ["2019-09-07T10:01:58", 13.84155, -62.71237], + ["2019-09-07T11:01:26", 13.82969, -62.72323], + ["2019-09-07T12:01:26", 13.82072, -62.73696], + ["2019-09-07T13:01:26", 13.8169, -62.75507], + ["2019-09-07T13:59:58", 13.8178, -62.77377], + ["2019-09-07T14:59:58", 13.82033, -62.78973], + ["2019-09-07T17:58:57", 13.83079, -62.83011], + ["2019-09-07T18:56:30", 13.83401, -62.83954], + ["2019-09-07T19:56:59", 13.83921, -62.84924], + ["2019-09-07T20:56:30", 13.84148, -62.85593], + ["2019-09-07T21:56:27", 13.84048, -62.86219], + ["2019-09-07T22:56:27", 13.8376, -62.86743], + ["2019-09-07T23:55:34", 13.83562, -62.87021], + ["2019-09-08T00:55:25", 13.83558, -62.87375], + ["2019-09-08T02:53:28", 13.83858, -62.88364], + ["2019-09-08T03:56:54", 13.84081, -62.88766], + ["2019-09-08T04:53:28", 13.8433, -62.89368], + ["2019-09-08T05:53:59", 13.84466, -62.90155], + ["2019-09-08T06:52:58", 13.84566, -62.91022], + ["2019-09-08T07:52:30", 13.8449, -62.91687], + ["2019-09-08T08:52:58", 13.84013, -62.91983], + ["2019-09-08T14:50:19", 13.80756, -62.93945], + ["2019-09-08T15:49:41", 13.80734, -62.9494], + ["2019-09-08T19:47:55", 13.80318, -62.98523], + ["2019-09-09T03:42:58", 13.75047, -63.05325], + ["2019-09-09T04:42:27", 13.74871, -63.07254], + ["2019-09-09T05:42:27", 13.7488, -63.09091], + ["2019-09-09T06:41:57", 13.74812, -63.10718], + ["2019-09-09T14:38:48", 13.70094, -63.17673], + ["2019-09-09T15:39:26", 13.69656, -63.19983], + ["2019-09-09T16:36:54", 13.69459, -63.21964], + ["2019-09-09T17:36:29", 13.69297, -63.23798], + ["2019-09-09T18:36:29", 13.69271, -63.25549], + ["2019-09-09T19:36:02", 13.69321, -63.27536], + ["2019-09-09T21:34:59", 13.69017, -63.323], + ["2019-09-09T22:28:46", 13.68735, -63.35407], + ["2019-09-09T23:28:46", 13.68701, -63.3569], + ["2019-09-09T23:33:28", 13.68685, -63.35819], + ["2019-09-10T00:33:28", 13.68535, -63.37167], + ["2019-09-10T04:30:17", 13.68066, -63.40863], + ["2019-09-10T05:30:27", 13.67764, -63.41675], + ["2019-09-10T06:28:25", 13.67233, -63.4279], + ["2019-09-10T07:28:25", 13.66611, -63.43829], + ["2019-09-10T11:28:43", 13.63691, -63.50677], + ["2019-09-10T12:27:56", 13.63396, -63.52789], + ["2019-09-10T13:26:31", 13.63322, -63.54745], + ["2019-09-10T14:25:58", 13.63455, -63.56461], + ["2019-09-10T15:26:31", 13.63558, -63.58118], + ["2019-09-10T16:26:41", 13.63728, -63.59619], + ["2019-09-10T17:24:02", 13.64004, -63.60779], + ["2019-09-11T02:20:36", 13.64681, -63.69211], + ["2019-09-11T03:21:17", 13.64527, -63.70331], + ["2019-09-11T06:20:57", 13.62864, -63.73328], + ["2019-09-11T08:16:24", 13.6118, -63.74926], + ["2019-09-11T09:18:35", 13.60147, -63.758], + ["2019-09-11T10:16:24", 13.59206, -63.76865], + ["2019-09-11T11:16:58", 13.58223, -63.78052], + ["2019-09-11T13:15:12", 13.56545, -63.80665], + ["2019-09-11T14:14:01", 13.56145, -63.82187], + ["2019-09-11T14:15:12", 13.56142, -63.82193], + ["2019-09-11T15:13:16", 13.55952, -63.83985], + ["2019-09-11T15:15:12", 13.55949, -63.83978], + ["2019-09-11T16:13:16", 13.55965, -63.85822], + ["2019-09-11T17:13:16", 13.56051, -63.87796], + ["2019-09-11T23:20:02", 13.54981, -63.961], + ["2019-09-12T13:06:13", 13.50487, -64.16055], + ["2019-09-12T14:07:36", 13.5039, -64.17572], + ["2019-09-12T15:07:36", 13.5045, -64.19108], + ["2019-09-12T16:07:36", 13.50411, -64.20456], + ["2019-09-12T17:03:45", 13.50329, -64.21713], + ["2019-09-12T18:04:31", 13.5037, -64.23166], + ["2019-09-12T19:04:31", 13.50379, -64.24738], + ["2019-09-12T20:03:59", 13.50494, -64.26749], + ["2019-09-12T21:03:59", 13.51049, -64.29123], + ["2019-09-12T22:02:58", 13.51637, -64.31464], + ["2019-09-12T23:02:31", 13.52672, -64.33954], + ["2019-09-13T00:02:31", 13.53281, -64.35138], + ["2019-09-13T01:02:14", 13.54149, -64.36696], + ["2019-09-13T06:57:56", 13.57176, -64.45859], + ["2019-09-13T07:59:03", 13.57984, -64.47705], + ["2019-09-13T08:56:40", 13.58869, -64.49512], + ["2019-09-13T09:55:32", 13.60099, -64.51438], + ["2019-09-13T10:55:32", 13.61468, -64.53146], + ["2019-09-13T14:55:41", 13.67948, -64.6046], + ["2019-09-13T15:52:28", 13.6968, -64.61903], + ["2019-09-13T16:52:28", 13.7177, -64.63525], + ["2019-09-13T17:52:28", 13.74006, -64.65027], + ["2019-09-13T18:52:00", 13.76346, -64.66701], + ["2019-09-13T19:50:29", 13.78717, -64.68773], + ["2019-09-13T20:50:29", 13.80953, -64.70867], + ["2019-09-13T21:50:29", 13.83215, -64.72644], + ["2019-09-13T22:49:23", 13.85588, -64.74448], + ["2019-09-13T23:21:34", 13.86965, -64.7557], + ["2019-09-14T00:48:39", 13.90498, -64.78695], + ["2019-09-14T01:49:32", 13.92879, -64.80817], + ["2019-09-14T02:49:32", 13.95407, -64.82947], + ["2019-09-14T03:49:32", 13.98325, -64.85342], + ["2019-09-14T07:44:29", 14.10614, -64.93329], + ["2019-09-14T08:44:57", 14.13718, -64.9455], + ["2019-09-14T12:42:29", 14.2642, -64.97537], + ["2019-09-14T13:41:29", 14.29052, -64.98724], + ["2019-09-14T17:39:00", 14.40191, -65.04608], + ["2019-09-14T18:39:07", 14.42717, -65.06562], + ["2019-09-14T19:39:07", 14.45476, -65.08716], + ["2019-09-14T21:38:40", 14.51947, -65.13684], + ["2019-09-14T22:36:10", 14.54931, -65.16028], + ["2019-09-14T23:20:51", 14.57143, -65.17719], + ["2019-09-14T23:36:06", 14.57834, -65.1825], + ["2019-09-15T01:35:30", 14.63256, -65.2281], + ["2019-09-15T02:35:04", 14.65735, -65.24878], + ["2019-09-15T03:35:30", 14.68247, -65.2681], + ["2019-09-15T04:34:37", 14.70717, -65.28912], + ["2019-09-15T05:32:28", 14.73009, -65.31047], + ["2019-09-15T06:32:28", 14.75335, -65.3321], + ["2019-09-15T07:32:28", 14.77682, -65.35193], + ["2019-09-15T08:30:58", 14.80095, -65.37385], + ["2019-09-15T09:30:58", 14.82211, -65.39308], + ["2019-09-15T10:30:58", 14.84271, -65.41342], + ["2019-09-15T11:31:28", 14.86212, -65.43716], + ["2019-09-16T02:24:29", 15.18352, -65.84125], + ["2019-09-16T15:18:31", 15.32645, -66.06125], + ["2019-09-16T16:19:04", 15.3408, -66.07257], + ["2019-09-16T17:18:30", 15.35043, -66.07977], + ["2019-09-16T18:18:30", 15.35674, -66.08526], + ["2019-09-16T19:18:30", 15.36571, -66.09014], + ["2019-09-16T23:14:48", 15.40718, -66.1282], + ["2019-09-17T02:14:31", 15.44153, -66.15991], + ["2019-09-17T10:09:18", 15.55174, -66.23944], + ["2019-09-17T16:07:04", 15.61642, -66.28009], + ["2019-09-17T17:05:22", 15.62757, -66.28207], + ["2019-09-17T18:05:22", 15.64332, -66.28534], + ["2019-09-18T00:02:27", 15.72255, -66.29395], + ["2019-09-18T01:01:58", 15.7378, -66.29564], + ["2019-09-18T06:59:59", 15.81661, -66.2803], + ["2019-09-18T07:59:00", 15.82108, -66.27491], + ["2019-09-18T08:59:00", 15.82554, -66.27276], + ["2019-09-18T15:55:27", 15.86676, -66.28534], + ["2019-09-18T21:50:58", 15.91262, -66.26056], + ["2019-09-18T23:50:59", 15.92893, -66.2728], + ["2019-09-19T01:49:59", 15.94743, -66.28494], + ["2019-09-19T06:48:18", 15.99423, -66.28301], + ["2019-09-19T12:46:19", 16.054, -66.2861], + ["2019-09-19T20:41:57", 16.13749, -66.28952], + ["2019-09-19T21:39:56", 16.147, -66.2899], + ["2019-09-19T22:39:56", 16.15468, -66.28836], + ["2019-09-20T03:37:59", 16.20291, -66.27374], + ["2019-09-20T07:36:37", 16.2258, -66.26349], + ["2019-09-20T12:34:44", 16.26296, -66.26083], + ["2019-09-20T18:31:26", 16.30192, -66.25922], + ["2019-09-20T19:30:58", 16.31221, -66.25928], + ["2019-09-20T20:30:58", 16.32388, -66.25912], + ["2019-09-20T21:20:14", 16.34772, -66.25632], + ["2019-09-20T22:20:14", 16.35403, -66.25288], + ["2019-09-20T23:20:14", 16.35562, -66.25176], + ["2019-09-21T00:26:55", 16.36252, -66.24715], + ["2019-09-21T01:26:55", 16.36694, -66.245], + ["2019-09-21T02:26:55", 16.37097, -66.24303], + ["2019-09-21T03:26:27", 16.37548, -66.24066], + ["2019-09-21T04:26:30", 16.38187, -66.23806], + ["2019-09-21T09:24:28", 16.41392, -66.21109], + ["2019-09-21T11:23:05", 16.424, -66.20782], + ["2019-09-21T17:19:27", 16.45294, -66.20941], + ["2019-09-21T18:18:55", 16.4631, -66.20886], + ["2019-09-21T23:20:10", 16.49834, -66.20551], + ["2019-09-22T00:14:27", 16.50651, -66.20604], + ["2019-09-22T01:14:27", 16.51741, -66.20569], + ["2019-09-22T02:14:27", 16.52883, -66.20355], + ["2019-09-22T10:10:00", 16.55174, -66.17055], + ["2019-09-22T18:07:28", 16.58123, -66.17062], + ["2019-09-22T22:04:02", 16.58054, -66.16995], + ["2019-09-23T03:00:52", 16.60011, -66.18326], + ["2019-09-23T13:56:29", 16.65838, -66.18872], + ["2019-09-23T15:56:20", 16.67098, -66.18225], + ["2019-09-23T16:53:37", 16.67402, -66.17981], + ["2019-09-24T12:45:24", 16.68198, -66.05038], + ["2019-09-24T13:43:26", 16.68138, -66.03525], + ["2019-09-24T14:42:56", 16.69443, -66.01613], + ["2019-09-24T15:42:26", 16.71615, -65.99229], + ["2019-09-24T16:42:26", 16.73186, -65.96628], + ["2019-09-24T17:43:58", 16.74856, -65.9388], + ["2019-09-24T18:43:58", 16.76169, -65.91202], + ["2019-09-24T19:41:29", 16.76835, -65.88457], + ["2019-09-24T20:41:43", 16.77234, -65.85366], + ["2019-09-24T21:41:29", 16.77209, -65.82165], + ["2019-09-24T22:39:17", 16.76946, -65.7915], + ["2019-09-25T00:39:42", 16.76277, -65.7355], + ["2019-09-25T01:38:29", 16.75788, -65.70769], + ["2019-09-25T02:38:29", 16.75329, -65.68322], + ["2019-09-25T03:40:57", 16.74811, -65.65897], + ["2019-09-25T04:36:54", 16.74255, -65.63708], + ["2019-09-25T06:35:48", 16.72539, -65.59981], + ["2019-09-25T07:35:48", 16.71758, -65.58505], + ["2019-09-25T08:35:48", 16.70951, -65.56847], + ["2019-09-25T09:35:34", 16.70236, -65.55295], + ["2019-09-25T10:34:42", 16.69521, -65.53928], + ["2019-09-25T11:32:34", 16.68706, -65.52665], + ["2019-09-25T12:32:34", 16.67964, -65.51764], + ["2019-09-25T13:32:27", 16.67462, -65.51185], + ["2019-09-25T14:32:27", 16.67329, -65.50885], + ["2019-09-25T15:33:00", 16.67519, -65.50644], + ["2019-09-25T16:30:56", 16.67787, -65.50424], + ["2019-09-25T17:31:19", 16.68057, -65.501], + ["2019-09-25T19:32:59", 16.68978, -65.49362], + ["2019-09-25T20:28:45", 16.69436, -65.48681], + ["2019-09-25T21:29:00", 16.69923, -65.47815], + ["2019-09-25T22:30:00", 16.71283, -65.46335], + ["2019-09-25T23:30:00", 16.71407, -65.46198], + ["2019-09-26T01:26:15", 16.73134, -65.44605], + ["2019-09-26T02:26:15", 16.74288, -65.4379], + ["2019-09-26T03:26:15", 16.75657, -65.42975], + ["2019-09-26T05:25:56", 16.7895, -65.40781], + ["2019-09-26T06:26:25", 16.80618, -65.39215], + ["2019-09-26T07:25:41", 16.82268, -65.3737], + ["2019-09-26T08:25:41", 16.83997, -65.35156], + ["2019-09-26T09:25:29", 16.85301, -65.32611], + ["2019-09-26T11:23:28", 16.87473, -65.27405], + ["2019-09-26T15:24:43", 16.89419, -65.18002], + ["2019-09-26T19:20:35", 16.89507, -65.10107], + ["2019-09-26T20:19:59", 16.89247, -65.08476], + ["2019-09-26T21:19:59", 16.88912, -65.07086], + ["2019-09-26T22:19:59", 16.88603, -65.0585], + ["2019-09-26T23:19:48", 16.88353, -65.04671], + ["2019-09-27T00:19:30", 16.88048, -65.03531], + ["2019-09-27T01:16:58", 16.87765, -65.02609], + ["2019-09-27T02:18:00", 16.87456, -65.01813], + ["2019-09-27T03:17:26", 16.87221, -65.01239], + ["2019-09-27T06:16:58", 16.86609, -64.9982], + ["2019-09-27T08:14:41", 16.86489, -64.99675], + ["2019-09-27T09:14:41", 16.86708, -64.99693], + ["2019-09-27T10:14:41", 16.87064, -64.9953], + ["2019-09-27T11:14:05", 16.87551, -64.99426], + ["2019-09-27T15:11:55", 16.91656, -64.99207], + ["2019-09-27T16:10:34", 16.9269, -64.99096], + ["2019-09-27T17:10:34", 16.93716, -64.98993], + ["2019-09-27T18:09:58", 16.94858, -64.99102], + ["2019-09-27T19:08:57", 16.96086, -64.99227], + ["2019-09-27T20:08:57", 16.97464, -64.99039], + ["2019-09-27T21:08:57", 16.98588, -64.98627], + ["2019-09-27T22:07:38", 17.00649, -64.97255], + ["2019-09-27T22:08:29", 16.99614, -64.97989], + ["2019-09-27T23:19:18", 17.00795, -64.97116], + ["2019-09-28T00:07:38", 17.01554, -64.96603], + ["2019-09-28T01:06:26", 17.02412, -64.9595], + ["2019-09-28T03:03:52", 17.03587, -64.94009], + ["2019-09-28T04:03:52", 17.03973, -64.93125], + ["2019-09-28T05:03:52", 17.04385, -64.92171], + ["2019-09-28T06:05:28", 17.04753, -64.91064], + ["2019-09-28T07:02:52", 17.05082, -64.9014], + ["2019-09-28T09:03:59", 17.05508, -64.88226], + ["2019-09-28T10:02:00", 17.05534, -64.87499], + ["2019-09-28T11:02:00", 17.05616, -64.87061], + ["2019-09-28T13:02:16", 17.05837, -64.86514], + ["2019-09-28T14:00:18", 17.06031, -64.86476], + ["2019-09-28T15:00:18", 17.06095, -64.86639], + ["2019-09-28T16:00:58", 17.06261, -64.86823], + ["2019-09-28T16:59:58", 17.06559, -64.86951], + ["2019-09-28T17:59:58", 17.06902, -64.87072], + ["2019-09-28T18:59:58", 17.0755, -64.87244], + ["2019-09-28T19:58:30", 17.08256, -64.87433], + ["2019-09-28T20:58:31", 17.09115, -64.87466], + ["2019-09-28T21:58:27", 17.09825, -64.87302], + ["2019-09-28T22:58:28", 17.10484, -64.87128], + ["2019-09-28T23:19:19", 17.10711, -64.87094], + ["2019-09-28T23:57:58", 17.11024, -64.87076], + ["2019-09-29T01:56:27", 17.1223, -64.86736], + ["2019-09-29T03:55:04", 17.13501, -64.86785], + ["2019-09-29T06:54:41", 17.16434, -64.87482], + ["2019-09-29T09:53:11", 17.2041, -64.87112], + ["2019-09-29T10:52:03", 17.21553, -64.86776], + ["2019-09-29T11:50:10", 17.22562, -64.86426], + ["2019-09-29T12:50:10", 17.23472, -64.8616], + ["2019-09-29T13:48:59", 17.24225, -64.85822], + ["2019-09-29T14:48:59", 17.25122, -64.85684], + ["2019-09-29T15:48:59", 17.26152, -64.85522], + ["2019-09-29T16:47:28", 17.2743, -64.85355], + ["2019-09-29T17:47:28", 17.28765, -64.85226], + ["2019-09-29T18:47:28", 17.3025, -64.85046], + ["2019-09-29T19:47:30", 17.31882, -64.84784], + ["2019-09-29T20:46:55", 17.33569, -64.84402] + ], + "drifter_0": [] +} diff --git a/aaemap.html b/public/aaemap.html similarity index 100% rename from aaemap.html rename to public/aaemap.html diff --git a/atlanticmap.html b/public/atlanticmap.html similarity index 100% rename from atlanticmap.html rename to public/atlanticmap.html diff --git a/public/background.svg b/public/background.svg new file mode 100644 index 00000000..68883c5e --- /dev/null +++ b/public/background.svg @@ -0,0 +1 @@ + diff --git a/.nojekyll b/public/cards/.gitkeep similarity index 100% rename from .nojekyll rename to public/cards/.gitkeep diff --git a/driftermap.html b/public/driftermap.html similarity index 100% rename from driftermap.html rename to public/driftermap.html diff --git a/drifters/copy-icon.svg b/public/drifters/copy-icon.svg similarity index 100% rename from drifters/copy-icon.svg rename to public/drifters/copy-icon.svg diff --git a/drifters/download_icon.svg b/public/drifters/download_icon.svg similarity index 83% rename from drifters/download_icon.svg rename to public/drifters/download_icon.svg index c9cd2c8d..de8931fd 100644 --- a/drifters/download_icon.svg +++ b/public/drifters/download_icon.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/marker.svg b/public/drifters/marker.svg similarity index 100% rename from marker.svg rename to public/drifters/marker.svg diff --git a/marker_notx.svg b/public/drifters/marker_notx.svg similarity index 100% rename from marker_notx.svg rename to public/drifters/marker_notx.svg diff --git a/drifters/sprite.svg b/public/drifters/sprite.svg similarity index 99% rename from drifters/sprite.svg rename to public/drifters/sprite.svg index a94e1c94..bc21b9ee 100644 --- a/drifters/sprite.svg +++ b/public/drifters/sprite.svg @@ -1 +1 @@ - \ No newline at end of file + diff --git a/public/driftersGI.json b/public/driftersGI.json new file mode 100644 index 00000000..5f5b211b --- /dev/null +++ b/public/driftersGI.json @@ -0,0 +1,85 @@ +{ + "Sea Otter": [ + ["2021-09-24T16:02:52.001Z", -0.866432, -90.71865], + ["2021-09-24T16:10:05.001Z", -0.864378, -90.726669], + ["2021-09-24T16:20:05.001Z", -0.862758, -90.730586], + ["2021-09-24T16:30:05.001Z", -0.860659, -90.734515], + ["2021-09-24T16:44:24.001Z", -0.857747, -90.739917], + ["2021-09-24T16:50:07.001Z", -0.856794, -90.741907], + ["2021-09-24T17:00:33.001Z", -0.85479, -90.745389], + ["2021-09-24T17:10:10.001Z", -0.852998, -90.748192], + ["2021-09-24T17:20:36.001Z", -0.851379, -90.750714], + ["2021-09-24T17:30:04.001Z", -0.849933, -90.753024], + ["2021-09-24T17:40:05.001Z", -0.848666, -90.754291], + ["2021-09-24T17:50:04.001Z", -0.847405, -90.756198], + ["2021-09-24T18:00:36.001Z", -0.845062, -90.758534], + ["2021-09-24T18:10:05.001Z", -0.84224, -90.76007], + ["2021-09-24T18:20:04.001Z", -0.83936, -90.761158], + ["2021-09-24T18:30:05.001Z", -0.836979, -90.762157], + ["2021-09-24T18:41:07.001Z", -0.834701, -90.76297], + ["2021-09-24T18:50:41.001Z", -0.832461, -90.763462], + ["2021-09-24T19:10:05.001Z", -0.828096, -90.764794], + ["2021-09-24T19:20:06.001Z", -0.825696, -90.765498], + ["2021-09-24T19:30:05.001Z", -0.823469, -90.76617], + ["2021-09-24T19:40:06.001Z", -0.821254, -90.767328], + ["2021-09-24T19:50:06.001Z", -0.818771, -90.769498], + ["2021-09-24T20:02:35.001Z", -0.81561, -90.771667] + ], + "RLS1": [ + ["2021-09-24T16:20:12.001Z", -0.843744, -90.679744], + ["2021-09-24T16:30:06.001Z", -0.841734, -90.684435], + ["2021-09-24T16:40:06.001Z", -0.839514, -90.688915], + ["2021-09-24T16:51:04.001Z", -0.83703, -90.69392], + ["2021-09-24T17:00:06.001Z", -0.834669, -90.697997], + ["2021-09-24T17:10:07.001Z", -0.831923, -90.702426], + ["2021-09-24T17:20:06.001Z", -0.829203, -90.706643], + ["2021-09-24T17:30:06.001Z", -0.826547, -90.710739], + ["2021-09-24T17:40:06.001Z", -0.824013, -90.714701], + ["2021-09-24T17:50:06.001Z", -0.82135, -90.718522], + ["2021-09-24T18:00:05.001Z", -0.818566, -90.722067], + ["2021-09-24T18:10:06.001Z", -0.81568, -90.725651], + ["2021-09-24T18:20:07.001Z", -0.812704, -90.729094], + ["2021-09-24T18:30:06.001Z", -0.809709, -90.732237], + ["2021-09-24T18:40:40.001Z", -0.806362, -90.735162], + ["2021-09-24T18:50:07.001Z", -0.803334, -90.737517], + ["2021-09-24T19:00:07.001Z", -0.800045, -90.739878], + ["2021-09-24T19:10:07.001Z", -0.796749, -90.74231], + ["2021-09-24T19:20:07.001Z", -0.793414, -90.744294], + ["2021-09-24T19:30:08.001Z", -0.790125, -90.74585], + ["2021-09-24T19:40:33.001Z", -0.786797, -90.747008], + ["2021-09-24T19:50:17.001Z", -0.783667, -90.747936], + ["2021-09-24T20:00:39.001Z", -0.780371, -90.748461] + ], + "RLS2": [ + ["2021-09-24T16:41:34.001Z", -0.793344, -90.576435], + ["2021-09-24T16:58:07.001Z", -0.782259, -90.564832], + ["2021-09-24T17:00:06.001Z", -0.781837, -90.56585], + ["2021-09-24T17:10:06.001Z", -0.779437, -90.571302], + ["2021-09-24T17:24:05.001Z", -0.775712, -90.578931], + ["2021-09-24T17:30:52.001Z", -0.773882, -90.582694], + ["2021-09-24T17:40:06.001Z", -0.771123, -90.58768], + ["2021-09-24T17:50:33.001Z", -0.768224, -90.593485], + ["2021-09-24T18:00:34.001Z", -0.765139, -90.59897], + ["2021-09-24T18:10:10.001Z", -0.762259, -90.604294], + ["2021-09-24T18:20:06.001Z", -0.759213, -90.609702], + ["2021-09-24T18:30:08.001Z", -0.755994, -90.61495], + ["2021-09-24T18:40:06.001Z", -0.752659, -90.620038], + ["2021-09-24T18:50:08.001Z", -0.749254, -90.62503], + ["2021-09-24T19:00:36.001Z", -0.74569, -90.630234], + ["2021-09-24T19:10:08.001Z", -0.742086, -90.634726], + ["2021-09-24T19:20:05.001Z", -0.738067, -90.63927], + ["2021-09-24T19:30:06.001Z", -0.733875, -90.643635], + ["2021-09-24T19:40:06.001Z", -0.729658, -90.647904], + ["2021-09-24T19:50:06.001Z", -0.72551, -90.652051], + ["2021-09-24T20:00:37.001Z", -0.72119, -90.656083] + ], + "RLS3": [ + ["2021-09-24T17:02:03.001Z", -0.754662, -90.512736], + ["2021-09-24T17:10:04.001Z", -0.753747, -90.515834], + ["2021-09-24T17:20:05.001Z", -0.752595, -90.519603], + ["2021-09-24T17:30:05.001Z", -0.750618, -90.523424], + ["2021-09-24T17:40:05.001Z", -0.748, -90.52727], + ["2021-09-24T17:50:05.001Z", -0.745453, -90.531155], + ["2021-09-24T20:03:27.001Z", -0.704819, -90.582093] + ] +} diff --git a/examples-data/CROCOidealized_data/CROCO_idealized.nc b/public/examples-data/CROCOidealized_data/CROCO_idealized.nc similarity index 100% rename from examples-data/CROCOidealized_data/CROCO_idealized.nc rename to public/examples-data/CROCOidealized_data/CROCO_idealized.nc diff --git a/examples-data/DecayingMovingEddy_data/decaying_moving_eddyU.nc b/public/examples-data/DecayingMovingEddy_data/decaying_moving_eddyU.nc similarity index 100% rename from examples-data/DecayingMovingEddy_data/decaying_moving_eddyU.nc rename to public/examples-data/DecayingMovingEddy_data/decaying_moving_eddyU.nc diff --git a/examples-data/DecayingMovingEddy_data/decaying_moving_eddyV.nc b/public/examples-data/DecayingMovingEddy_data/decaying_moving_eddyV.nc similarity index 100% rename from examples-data/DecayingMovingEddy_data/decaying_moving_eddyV.nc rename to public/examples-data/DecayingMovingEddy_data/decaying_moving_eddyV.nc diff --git a/examples-data/GlobCurrent_example_data/20020101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020131000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020131000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020131000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020131000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020301000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020301000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020301000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020301000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020302000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020302000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020302000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020302000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020303000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020303000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020303000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020303000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020304000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020304000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020304000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020304000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020305000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020305000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020305000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020305000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020306000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020306000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020306000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020306000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020307000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020307000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020307000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020307000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020308000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020308000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020308000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020308000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020309000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020309000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020309000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020309000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020310000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020310000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020310000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020310000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020311000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020311000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020311000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020311000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020312000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020312000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020312000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020312000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020313000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020313000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020313000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020313000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020314000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020314000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020314000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020314000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020315000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020315000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020315000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020315000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020316000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020316000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020316000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020316000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020317000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020317000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020317000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020317000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020318000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020318000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020318000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020318000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020319000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020319000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020319000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020319000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020320000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020320000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020320000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020320000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020321000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020321000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020321000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020321000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020322000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020322000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020322000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020322000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020323000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020323000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020323000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020323000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020324000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020324000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020324000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020324000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020325000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020325000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020325000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020325000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020326000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020326000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020326000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020326000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020327000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020327000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020327000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020327000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020328000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020328000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020328000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020328000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020329000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020329000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020329000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020329000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020330000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020330000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020330000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020330000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020331000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020331000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020331000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020331000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020401000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020401000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020401000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020401000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020402000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020402000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020402000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020402000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020403000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020403000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020403000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020403000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020404000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020404000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020404000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020404000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020405000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020405000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020405000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020405000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020406000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020406000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020406000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020406000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020407000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020407000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020407000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020407000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020408000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020408000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020408000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020408000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020409000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020409000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020409000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020409000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020410000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020410000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020410000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020410000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020411000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020411000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020411000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020411000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020412000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020412000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020412000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020412000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020413000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020413000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020413000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020413000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020414000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020414000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020414000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020414000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020415000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020415000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020415000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020415000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020416000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020416000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020416000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020416000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020417000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020417000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020417000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020417000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020418000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020418000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020418000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020418000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020419000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020419000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020419000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020419000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020420000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020420000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020420000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020420000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020421000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020421000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020421000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020421000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020422000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020422000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020422000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020422000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020423000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020423000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020423000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020423000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020424000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020424000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020424000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020424000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020425000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020425000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020425000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020425000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020426000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020426000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020426000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020426000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020427000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020427000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020427000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020427000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020428000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020428000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020428000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020428000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020429000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020429000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020429000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020429000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020430000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020430000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020430000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020430000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020501000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020501000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020501000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020501000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020502000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020502000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020502000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020502000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020503000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020503000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020503000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020503000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020504000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020504000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020504000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020504000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020505000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020505000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020505000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020505000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020506000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020506000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020506000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020506000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020507000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020507000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020507000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020507000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020508000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020508000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020508000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020508000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020509000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020509000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020509000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020509000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020510000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020510000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020510000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020510000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020511000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020511000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020511000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020511000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020512000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020512000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020512000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020512000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020513000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020513000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020513000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020513000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020514000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020514000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020514000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020514000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020515000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020515000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020515000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020515000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020516000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020516000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020516000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020516000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020517000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020517000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020517000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020517000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020518000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020518000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020518000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020518000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020519000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020519000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020519000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020519000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020520000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020520000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020520000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020520000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020521000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020521000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020521000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020521000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020522000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020522000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020522000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020522000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020523000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020523000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020523000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020523000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020524000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020524000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020524000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020524000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020525000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020525000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020525000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020525000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020526000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020526000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020526000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020526000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020527000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020527000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020527000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020527000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020528000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020528000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020528000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020528000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020529000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020529000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020529000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020529000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020530000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020530000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020530000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020530000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020531000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020531000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020531000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020531000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020601000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020601000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020601000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020601000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020602000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020602000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020602000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020602000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020603000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020603000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020603000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020603000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020604000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020604000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020604000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020604000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020605000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020605000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020605000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020605000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020606000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020606000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020606000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020606000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020607000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020607000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020607000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020607000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020608000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020608000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020608000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020608000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020609000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020609000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020609000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020609000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020610000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020610000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020610000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020610000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020611000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020611000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020611000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020611000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020612000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020612000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020612000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020612000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020613000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020613000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020613000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020613000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020614000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020614000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020614000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020614000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020615000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020615000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020615000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020615000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020616000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020616000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020616000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020616000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020617000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020617000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020617000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020617000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020618000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020618000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020618000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020618000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020619000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020619000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020619000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020619000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020620000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020620000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020620000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020620000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020621000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020621000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020621000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020621000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020622000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020622000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020622000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020622000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020623000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020623000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020623000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020623000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020624000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020624000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020624000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020624000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020625000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020625000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020625000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020625000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020626000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020626000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020626000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020626000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020627000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020627000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020627000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020627000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020628000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020628000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020628000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020628000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020629000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020629000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020629000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020629000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020630000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020630000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020630000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020630000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020701000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020701000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020701000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020701000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020702000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020702000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020702000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020702000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020703000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020703000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020703000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020703000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020704000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020704000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020704000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020704000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020705000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020705000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020705000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020705000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020706000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020706000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020706000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020706000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020707000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020707000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020707000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020707000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020708000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020708000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020708000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020708000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020709000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020709000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020709000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020709000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020710000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020710000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020710000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020710000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020711000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020711000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020711000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020711000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020712000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020712000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020712000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020712000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020713000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020713000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020713000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020713000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020714000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020714000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020714000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020714000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020715000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020715000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020715000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020715000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020716000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020716000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020716000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020716000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020717000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020717000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020717000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020717000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020718000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020718000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020718000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020718000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020719000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020719000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020719000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020719000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020720000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020720000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020720000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020720000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020721000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020721000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020721000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020721000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020722000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020722000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020722000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020722000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020723000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020723000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020723000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020723000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020724000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020724000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020724000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020724000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020725000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020725000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020725000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020725000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020726000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020726000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020726000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020726000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020727000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020727000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020727000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020727000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020728000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020728000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020728000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020728000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020729000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020729000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020729000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020729000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020730000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020730000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020730000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020730000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020731000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020731000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020731000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020731000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020801000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020801000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020801000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020801000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020802000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020802000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020802000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020802000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020803000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020803000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020803000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020803000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020804000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020804000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020804000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020804000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020805000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020805000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020805000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020805000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020806000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020806000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020806000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020806000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020807000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020807000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020807000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020807000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020808000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020808000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020808000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020808000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020809000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020809000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020809000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020809000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020810000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020810000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020810000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020810000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020811000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020811000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020811000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020811000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020812000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020812000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020812000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020812000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020813000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020813000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020813000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020813000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020814000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020814000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020814000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020814000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020815000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020815000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020815000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020815000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020816000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020816000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020816000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020816000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020817000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020817000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020817000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020817000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020818000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020818000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020818000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020818000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020819000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020819000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020819000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020819000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020820000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020820000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020820000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020820000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020821000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020821000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020821000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020821000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020822000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020822000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020822000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020822000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020823000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020823000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020823000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020823000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020824000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020824000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020824000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020824000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020825000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020825000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020825000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020825000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020826000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020826000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020826000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020826000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020827000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020827000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020827000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020827000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020828000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020828000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020828000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020828000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020829000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020829000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020829000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020829000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020830000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020830000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020830000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020830000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020831000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020831000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020831000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020831000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020901000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020901000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020901000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020901000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020902000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020902000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020902000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020902000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020903000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020903000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020903000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020903000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020904000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020904000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020904000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020904000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020905000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020905000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020905000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020905000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020906000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020906000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020906000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020906000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020907000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020907000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020907000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020907000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020908000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020908000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020908000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020908000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020909000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020909000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020909000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020909000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020910000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020910000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020910000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020910000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020911000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020911000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020911000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020911000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020912000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020912000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020912000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020912000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020913000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020913000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020913000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020913000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020914000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020914000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020914000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020914000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020915000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020915000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020915000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020915000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020916000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020916000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020916000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020916000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020917000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020917000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020917000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020917000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020918000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020918000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020918000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020918000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020919000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020919000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020919000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020919000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020920000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020920000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020920000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020920000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020921000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020921000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020921000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020921000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020922000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020922000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020922000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020922000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020923000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020923000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020923000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020923000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020924000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020924000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020924000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020924000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020925000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020925000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020925000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020925000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020926000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020926000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020926000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020926000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020927000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020927000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020927000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020927000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020928000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020928000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020928000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020928000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020929000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020929000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020929000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020929000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20020930000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20020930000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20020930000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20020930000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021001000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021001000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021001000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021001000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021002000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021002000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021002000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021002000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021003000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021003000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021003000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021003000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021004000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021004000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021004000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021004000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021005000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021005000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021005000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021005000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021006000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021006000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021006000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021006000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021007000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021007000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021007000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021007000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021008000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021008000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021008000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021008000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021009000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021009000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021009000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021009000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021010000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021010000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021010000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021010000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021011000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021011000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021011000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021011000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021012000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021012000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021012000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021012000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021013000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021013000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021013000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021013000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021014000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021014000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021014000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021014000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021015000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021015000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021015000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021015000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021016000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021016000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021016000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021016000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021017000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021017000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021017000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021017000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021018000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021018000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021018000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021018000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021019000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021019000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021019000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021019000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021020000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021020000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021020000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021020000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021021000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021021000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021021000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021021000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021022000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021022000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021022000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021022000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021023000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021023000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021023000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021023000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021024000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021024000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021024000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021024000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021025000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021025000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021025000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021025000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021026000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021026000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021026000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021026000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021027000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021027000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021027000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021027000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021028000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021028000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021028000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021028000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021029000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021029000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021029000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021029000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021030000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021030000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021030000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021030000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021031000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021031000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021031000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021031000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021102000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021103000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021104000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021105000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021106000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021107000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021108000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021109000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021110000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021111000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021112000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021113000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021114000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021115000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021116000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021117000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021118000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021119000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021120000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021121000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021122000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021123000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021124000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021125000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021126000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021127000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021128000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021129000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021130000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021201000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021202000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021203000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021204000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021205000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021206000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021207000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021208000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021209000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021210000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021211000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021212000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021213000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021214000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021215000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021216000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021217000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021218000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021219000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021220000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021221000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021222000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021223000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021224000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021225000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021226000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021227000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021228000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021229000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021229000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021229000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021229000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021230000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021230000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021230000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021230000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20021231000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20021231000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20021231000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20021231000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/GlobCurrent_example_data/20030101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc b/public/examples-data/GlobCurrent_example_data/20030101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc similarity index 100% rename from examples-data/GlobCurrent_example_data/20030101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc rename to public/examples-data/GlobCurrent_example_data/20030101000000-GLOBCURRENT-L4-CUReul_hs-ALT_SUM-v02.0-fv01.0.nc diff --git a/examples-data/MITgcm_example_data/mitgcm_UV_surface_zonally_reentrant.nc b/public/examples-data/MITgcm_example_data/mitgcm_UV_surface_zonally_reentrant.nc similarity index 100% rename from examples-data/MITgcm_example_data/mitgcm_UV_surface_zonally_reentrant.nc rename to public/examples-data/MITgcm_example_data/mitgcm_UV_surface_zonally_reentrant.nc diff --git a/examples-data/MovingEddies_data/create_movingeddies_files.py b/public/examples-data/MovingEddies_data/create_movingeddies_files.py similarity index 87% rename from examples-data/MovingEddies_data/create_movingeddies_files.py rename to public/examples-data/MovingEddies_data/create_movingeddies_files.py index d43068f9..73f6399d 100644 --- a/examples-data/MovingEddies_data/create_movingeddies_files.py +++ b/public/examples-data/MovingEddies_data/create_movingeddies_files.py @@ -3,12 +3,12 @@ import math -def moving_eddies_fieldset(xdim=200, ydim=350, mesh="flat"): +def moving_eddies_fieldset(xdim=200, ydim=350, mesh='flat'): # Set Parcels FieldSet variables time = np.arange(0.0, 8.0 * 86400.0, 86400.0, dtype=np.float64) # Coordinates of the test fieldset (on A-grid in m) - if mesh is "spherical": + if mesh is 'spherical': lon = np.linspace(0, 4, xdim, dtype=np.float32) lat = np.linspace(45, 52, ydim, dtype=np.float32) else: @@ -21,10 +21,10 @@ def cosd(x): dx = ( (lon[1] - lon[0]) * 1852 * 60 * cosd(lat.mean()) - if mesh is "spherical" + if mesh is 'spherical' else lon[1] - lon[0] ) - dy = (lat[1] - lat[0]) * 1852 * 60 if mesh is "spherical" else lat[1] - lat[0] + dy = (lat[1] - lat[0]) * 1852 * 60 if mesh is 'spherical' else lat[1] - lat[0] # Define arrays U (zonal), V (meridional), and P (sea surface height) on A-grid U = np.zeros((lon.size, lat.size, time.size), dtype=np.float32) @@ -62,12 +62,12 @@ def cosd(x): U[:, :-1, t] = np.diff(P[:, :, t], axis=1) / dy / corio_0 * g U[:, -1, t] = U[:, -2, t] # Fill in the last row - data = {"U": U, "V": V, "P": P} - dimensions = {"lon": lon, "lat": lat, "time": time} + data = {'U': U, 'V': V, 'P': P} + dimensions = {'lon': lon, 'lat': lat, 'time': time} return FieldSet.from_data(data, dimensions, transpose=True, mesh=mesh) -if __name__ == "__main__": +if __name__ == '__main__': fieldset = moving_eddies_fieldset() - filename = "moving_eddies" + filename = 'moving_eddies' fieldset.write(filename) diff --git a/examples-data/MovingEddies_data/moving_eddiesP.nc b/public/examples-data/MovingEddies_data/moving_eddiesP.nc similarity index 100% rename from examples-data/MovingEddies_data/moving_eddiesP.nc rename to public/examples-data/MovingEddies_data/moving_eddiesP.nc diff --git a/examples-data/MovingEddies_data/moving_eddiesU.nc b/public/examples-data/MovingEddies_data/moving_eddiesU.nc similarity index 100% rename from examples-data/MovingEddies_data/moving_eddiesU.nc rename to public/examples-data/MovingEddies_data/moving_eddiesU.nc diff --git a/examples-data/MovingEddies_data/moving_eddiesV.nc b/public/examples-data/MovingEddies_data/moving_eddiesV.nc similarity index 100% rename from examples-data/MovingEddies_data/moving_eddiesV.nc rename to public/examples-data/MovingEddies_data/moving_eddiesV.nc diff --git a/examples-data/NemoCurvilinear_data/U_purely_zonal-ORCA025_grid_U.nc4 b/public/examples-data/NemoCurvilinear_data/U_purely_zonal-ORCA025_grid_U.nc4 similarity index 100% rename from examples-data/NemoCurvilinear_data/U_purely_zonal-ORCA025_grid_U.nc4 rename to public/examples-data/NemoCurvilinear_data/U_purely_zonal-ORCA025_grid_U.nc4 diff --git a/examples-data/NemoCurvilinear_data/V_purely_zonal-ORCA025_grid_V.nc4 b/public/examples-data/NemoCurvilinear_data/V_purely_zonal-ORCA025_grid_V.nc4 similarity index 100% rename from examples-data/NemoCurvilinear_data/V_purely_zonal-ORCA025_grid_V.nc4 rename to public/examples-data/NemoCurvilinear_data/V_purely_zonal-ORCA025_grid_V.nc4 diff --git a/examples-data/NemoCurvilinear_data/mesh_mask.nc4 b/public/examples-data/NemoCurvilinear_data/mesh_mask.nc4 similarity index 100% rename from examples-data/NemoCurvilinear_data/mesh_mask.nc4 rename to public/examples-data/NemoCurvilinear_data/mesh_mask.nc4 diff --git a/examples-data/NemoCurvilinear_data/mesh_mask_edges.nc4 b/public/examples-data/NemoCurvilinear_data/mesh_mask_edges.nc4 similarity index 100% rename from examples-data/NemoCurvilinear_data/mesh_mask_edges.nc4 rename to public/examples-data/NemoCurvilinear_data/mesh_mask_edges.nc4 diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05U.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05U.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05U.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05U.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05V.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05V.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05V.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05V.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05W.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05W.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05W.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000104d05W.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05U.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05U.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05U.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05U.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05V.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05V.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05V.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05V.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05W.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05W.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05W.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000109d05W.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05U.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05U.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05U.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05U.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05V.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05V.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05V.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05V.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05W.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05W.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05W.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000114d05W.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05U.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05U.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05U.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05U.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05V.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05V.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05V.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05V.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05W.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05W.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05W.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000119d05W.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05U.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05U.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05U.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05U.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05V.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05V.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05V.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05V.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05W.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05W.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05W.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000124d05W.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05U.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05U.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05U.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05U.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05V.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05V.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05V.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05V.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05W.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05W.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05W.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20000129d05W.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20130104d05U.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20130104d05U.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20130104d05U.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/ORCA025-N06_20130104d05U.nc diff --git a/examples-data/NemoNorthSeaORCA025-N006_data/coordinates.nc b/public/examples-data/NemoNorthSeaORCA025-N006_data/coordinates.nc similarity index 100% rename from examples-data/NemoNorthSeaORCA025-N006_data/coordinates.nc rename to public/examples-data/NemoNorthSeaORCA025-N006_data/coordinates.nc diff --git a/examples-data/OFAM_example_data/OFAM_simple_U.nc b/public/examples-data/OFAM_example_data/OFAM_simple_U.nc similarity index 100% rename from examples-data/OFAM_example_data/OFAM_simple_U.nc rename to public/examples-data/OFAM_example_data/OFAM_simple_U.nc diff --git a/examples-data/OFAM_example_data/OFAM_simple_V.nc b/public/examples-data/OFAM_example_data/OFAM_simple_V.nc similarity index 100% rename from examples-data/OFAM_example_data/OFAM_simple_V.nc rename to public/examples-data/OFAM_example_data/OFAM_simple_V.nc diff --git a/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169000.nc b/public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169000.nc similarity index 100% rename from examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169000.nc rename to public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169000.nc diff --git a/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169001.nc b/public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169001.nc similarity index 100% rename from examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169001.nc rename to public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169001.nc diff --git a/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169002.nc b/public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169002.nc similarity index 100% rename from examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169002.nc rename to public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169002.nc diff --git a/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169003.nc b/public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169003.nc similarity index 100% rename from examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169003.nc rename to public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169003.nc diff --git a/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169004.nc b/public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169004.nc similarity index 100% rename from examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169004.nc rename to public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169004.nc diff --git a/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169005.nc b/public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169005.nc similarity index 100% rename from examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169005.nc rename to public/examples-data/POPSouthernOcean_data/t.x1_SAMOC_flux.169005.nc diff --git a/examples-data/Peninsula_data/peninsulaP.nc b/public/examples-data/Peninsula_data/peninsulaP.nc similarity index 100% rename from examples-data/Peninsula_data/peninsulaP.nc rename to public/examples-data/Peninsula_data/peninsulaP.nc diff --git a/examples-data/Peninsula_data/peninsulaT.nc b/public/examples-data/Peninsula_data/peninsulaT.nc similarity index 100% rename from examples-data/Peninsula_data/peninsulaT.nc rename to public/examples-data/Peninsula_data/peninsulaT.nc diff --git a/examples-data/Peninsula_data/peninsulaU.nc b/public/examples-data/Peninsula_data/peninsulaU.nc similarity index 100% rename from examples-data/Peninsula_data/peninsulaU.nc rename to public/examples-data/Peninsula_data/peninsulaU.nc diff --git a/examples-data/Peninsula_data/peninsulaV.nc b/public/examples-data/Peninsula_data/peninsulaV.nc similarity index 100% rename from examples-data/Peninsula_data/peninsulaV.nc rename to public/examples-data/Peninsula_data/peninsulaV.nc diff --git a/examples-data/SWASH_data/field_0065532.nc b/public/examples-data/SWASH_data/field_0065532.nc similarity index 100% rename from examples-data/SWASH_data/field_0065532.nc rename to public/examples-data/SWASH_data/field_0065532.nc diff --git a/examples-data/SWASH_data/field_0065537.nc b/public/examples-data/SWASH_data/field_0065537.nc similarity index 100% rename from examples-data/SWASH_data/field_0065537.nc rename to public/examples-data/SWASH_data/field_0065537.nc diff --git a/examples-data/SWASH_data/field_0065542.nc b/public/examples-data/SWASH_data/field_0065542.nc similarity index 100% rename from examples-data/SWASH_data/field_0065542.nc rename to public/examples-data/SWASH_data/field_0065542.nc diff --git a/examples-data/SWASH_data/field_0065548.nc b/public/examples-data/SWASH_data/field_0065548.nc similarity index 100% rename from examples-data/SWASH_data/field_0065548.nc rename to public/examples-data/SWASH_data/field_0065548.nc diff --git a/examples-data/SWASH_data/field_0065552.nc b/public/examples-data/SWASH_data/field_0065552.nc similarity index 100% rename from examples-data/SWASH_data/field_0065552.nc rename to public/examples-data/SWASH_data/field_0065552.nc diff --git a/examples-data/SWASH_data/field_0065557.nc b/public/examples-data/SWASH_data/field_0065557.nc similarity index 100% rename from examples-data/SWASH_data/field_0065557.nc rename to public/examples-data/SWASH_data/field_0065557.nc diff --git a/examples-data/WOA_data/woa18_decav_t01_04.nc b/public/examples-data/WOA_data/woa18_decav_t01_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t01_04.nc rename to public/examples-data/WOA_data/woa18_decav_t01_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t02_04.nc b/public/examples-data/WOA_data/woa18_decav_t02_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t02_04.nc rename to public/examples-data/WOA_data/woa18_decav_t02_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t03_04.nc b/public/examples-data/WOA_data/woa18_decav_t03_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t03_04.nc rename to public/examples-data/WOA_data/woa18_decav_t03_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t04_04.nc b/public/examples-data/WOA_data/woa18_decav_t04_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t04_04.nc rename to public/examples-data/WOA_data/woa18_decav_t04_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t05_04.nc b/public/examples-data/WOA_data/woa18_decav_t05_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t05_04.nc rename to public/examples-data/WOA_data/woa18_decav_t05_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t06_04.nc b/public/examples-data/WOA_data/woa18_decav_t06_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t06_04.nc rename to public/examples-data/WOA_data/woa18_decav_t06_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t07_04.nc b/public/examples-data/WOA_data/woa18_decav_t07_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t07_04.nc rename to public/examples-data/WOA_data/woa18_decav_t07_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t08_04.nc b/public/examples-data/WOA_data/woa18_decav_t08_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t08_04.nc rename to public/examples-data/WOA_data/woa18_decav_t08_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t09_04.nc b/public/examples-data/WOA_data/woa18_decav_t09_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t09_04.nc rename to public/examples-data/WOA_data/woa18_decav_t09_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t10_04.nc b/public/examples-data/WOA_data/woa18_decav_t10_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t10_04.nc rename to public/examples-data/WOA_data/woa18_decav_t10_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t11_04.nc b/public/examples-data/WOA_data/woa18_decav_t11_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t11_04.nc rename to public/examples-data/WOA_data/woa18_decav_t11_04.nc diff --git a/examples-data/WOA_data/woa18_decav_t12_04.nc b/public/examples-data/WOA_data/woa18_decav_t12_04.nc similarity index 100% rename from examples-data/WOA_data/woa18_decav_t12_04.nc rename to public/examples-data/WOA_data/woa18_decav_t12_04.nc diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 00000000..77f9cfe8 Binary files /dev/null and b/public/favicon.png differ diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 00000000..8ca17491 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/funders-logos/EPSRlogo.png b/public/funders-logos/EPSRlogo.png new file mode 100644 index 00000000..2c5f058f Binary files /dev/null and b/public/funders-logos/EPSRlogo.png differ diff --git a/public/funders-logos/ERClogo.png b/public/funders-logos/ERClogo.png new file mode 100644 index 00000000..fe617484 Binary files /dev/null and b/public/funders-logos/ERClogo.png differ diff --git a/public/funders-logos/NWOlogo.png b/public/funders-logos/NWOlogo.png new file mode 100644 index 00000000..6f3e5180 Binary files /dev/null and b/public/funders-logos/NWOlogo.png differ diff --git a/public/funders-logos/UUlogo.png b/public/funders-logos/UUlogo.png new file mode 100755 index 00000000..2c916477 Binary files /dev/null and b/public/funders-logos/UUlogo.png differ diff --git a/public/funders-logos/UUlogo_dia.png b/public/funders-logos/UUlogo_dia.png new file mode 100755 index 00000000..af457db2 Binary files /dev/null and b/public/funders-logos/UUlogo_dia.png differ diff --git a/galapagosmap.html b/public/galapagosmap.html similarity index 100% rename from galapagosmap.html rename to public/galapagosmap.html diff --git a/galapagosmap2024.html b/public/galapagosmap2024.html similarity index 100% rename from galapagosmap2024.html rename to public/galapagosmap2024.html diff --git a/public/homepage-animation.gif b/public/homepage-animation.gif new file mode 100644 index 00000000..a76c535d Binary files /dev/null and b/public/homepage-animation.gif differ diff --git a/public/homepage-animation_SH.gif b/public/homepage-animation_SH.gif new file mode 100644 index 00000000..f3e2d978 Binary files /dev/null and b/public/homepage-animation_SH.gif differ diff --git a/moc_drifterdata.txt b/public/moc_drifterdata.txt similarity index 100% rename from moc_drifterdata.txt rename to public/moc_drifterdata.txt diff --git a/public/ol-v6.5.0-dist/ol.css b/public/ol-v6.5.0-dist/ol.css new file mode 100644 index 00000000..7c5c9bcf --- /dev/null +++ b/public/ol-v6.5.0-dist/ol.css @@ -0,0 +1,278 @@ +.ol-box { + box-sizing: border-box; + border-radius: 2px; + border: 2px solid #00f; +} +.ol-mouse-position { + top: 8px; + right: 8px; + position: absolute; +} +.ol-scale-line { + background: rgba(0, 60, 136, 0.3); + border-radius: 4px; + bottom: 8px; + left: 8px; + padding: 2px; + position: absolute; +} +.ol-scale-line-inner { + border: 1px solid #eee; + border-top: none; + color: #eee; + font-size: 10px; + text-align: center; + margin: 1px; + will-change: contents, width; + transition: all 0.25s; +} +.ol-scale-bar { + position: absolute; + bottom: 8px; + left: 8px; +} +.ol-scale-step-marker { + width: 1px; + height: 15px; + background-color: #000; + float: right; + z-index: 10; +} +.ol-scale-step-text { + position: absolute; + bottom: -5px; + font-size: 12px; + z-index: 11; + color: #000; + text-shadow: + -2px 0 #fff, + 0 2px #fff, + 2px 0 #fff, + 0 -2px #fff; +} +.ol-scale-text { + position: absolute; + font-size: 14px; + text-align: center; + bottom: 25px; + color: #000; + text-shadow: + -2px 0 #fff, + 0 2px #fff, + 2px 0 #fff, + 0 -2px #fff; +} +.ol-scale-singlebar { + position: relative; + height: 10px; + z-index: 9; + box-sizing: border-box; + border: 1px solid #000; +} +.ol-unsupported { + display: none; +} +.ol-unselectable, +.ol-viewport { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; +} +.ol-selectable { + -webkit-touch-callout: default; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} +.ol-grabbing { + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} +.ol-grab { + cursor: move; + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; +} +.ol-control { + position: absolute; + background-color: rgba(255, 255, 255, 0.4); + border-radius: 4px; + padding: 2px; +} +.ol-control:hover { + background-color: rgba(255, 255, 255, 0.6); +} +.ol-zoom { + top: 0.5em; + left: 0.5em; +} +.ol-rotate { + top: 0.5em; + right: 0.5em; + transition: + opacity 0.25s linear, + visibility 0s linear; +} +.ol-rotate.ol-hidden { + opacity: 0; + visibility: hidden; + transition: + opacity 0.25s linear, + visibility 0s linear 0.25s; +} +.ol-zoom-extent { + top: 4.643em; + left: 0.5em; +} +.ol-full-screen { + right: 0.5em; + top: 0.5em; +} +.ol-control button { + display: block; + margin: 1px; + padding: 0; + color: #fff; + font-size: 1.14em; + font-weight: 700; + text-decoration: none; + text-align: center; + height: 1.375em; + width: 1.375em; + line-height: 0.4em; + background-color: rgba(0, 60, 136, 0.5); + border: none; + border-radius: 2px; +} +.ol-control button::-moz-focus-inner { + border: none; + padding: 0; +} +.ol-zoom-extent button { + line-height: 1.4em; +} +.ol-compass { + display: block; + font-weight: 400; + font-size: 1.2em; + will-change: transform; +} +.ol-touch .ol-control button { + font-size: 1.5em; +} +.ol-touch .ol-zoom-extent { + top: 5.5em; +} +.ol-control button:focus, +.ol-control button:hover { + text-decoration: none; + background-color: rgba(0, 60, 136, 0.7); +} +.ol-zoom .ol-zoom-in { + border-radius: 2px 2px 0 0; +} +.ol-zoom .ol-zoom-out { + border-radius: 0 0 2px 2px; +} +.ol-attribution { + text-align: right; + bottom: 0.5em; + right: 0.5em; + max-width: calc(100% - 1.3em); +} +.ol-attribution ul { + margin: 0; + padding: 0 0.5em; + color: #000; + text-shadow: 0 0 2px #fff; +} +.ol-attribution li { + display: inline; + list-style: none; +} +.ol-attribution li:not(:last-child):after { + content: ' '; +} +.ol-attribution img { + max-height: 2em; + max-width: inherit; + vertical-align: middle; +} +.ol-attribution button, +.ol-attribution ul { + display: inline-block; +} +.ol-attribution.ol-collapsed ul { + display: none; +} +.ol-attribution:not(.ol-collapsed) { + background: rgba(255, 255, 255, 0.8); +} +.ol-attribution.ol-uncollapsible { + bottom: 0; + right: 0; + border-radius: 4px 0 0; +} +.ol-attribution.ol-uncollapsible img { + margin-top: -0.2em; + max-height: 1.6em; +} +.ol-attribution.ol-uncollapsible button { + display: none; +} +.ol-zoomslider { + top: 4.5em; + left: 0.5em; + height: 200px; +} +.ol-zoomslider button { + position: relative; + height: 10px; +} +.ol-touch .ol-zoomslider { + top: 5.5em; +} +.ol-overviewmap { + left: 0.5em; + bottom: 0.5em; +} +.ol-overviewmap.ol-uncollapsible { + bottom: 0; + left: 0; + border-radius: 0 4px 0 0; +} +.ol-overviewmap .ol-overviewmap-map, +.ol-overviewmap button { + display: inline-block; +} +.ol-overviewmap .ol-overviewmap-map { + border: 1px solid #7b98bc; + height: 150px; + margin: 2px; + width: 150px; +} +.ol-overviewmap:not(.ol-collapsed) button { + bottom: 1px; + left: 2px; + position: absolute; +} +.ol-overviewmap.ol-collapsed .ol-overviewmap-map, +.ol-overviewmap.ol-uncollapsible button { + display: none; +} +.ol-overviewmap:not(.ol-collapsed) { + background: rgba(255, 255, 255, 0.8); +} +.ol-overviewmap-box { + border: 2px dotted rgba(0, 60, 136, 0.7); +} +.ol-overviewmap .ol-overviewmap-box:hover { + cursor: move; +} +/*# sourceMappingURL=ol.css.map */ diff --git a/ol-v6.5.0-dist/ol.css.map b/public/ol-v6.5.0-dist/ol.css.map similarity index 97% rename from ol-v6.5.0-dist/ol.css.map rename to public/ol-v6.5.0-dist/ol.css.map index cc95cbb2..8d0f94d4 100644 --- a/ol-v6.5.0-dist/ol.css.map +++ b/public/ol-v6.5.0-dist/ol.css.map @@ -1 +1 @@ -{"version":3,"sources":["src/ol/ol.css"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["src/ol/ol.css"],"names":[],"mappings":"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"} diff --git a/public/ol-v6.5.0-dist/ol.js b/public/ol-v6.5.0-dist/ol.js new file mode 100644 index 00000000..25b4ac21 --- /dev/null +++ b/public/ol-v6.5.0-dist/ol.js @@ -0,0 +1,53794 @@ +!(function (t, e) { + 'object' == typeof exports && 'object' == typeof module + ? (module.exports = e()) + : 'function' == typeof define && define.amd + ? define([], e) + : 'object' == typeof exports + ? (exports.ol = e()) + : (t.ol = e()) +})(window, function () { + return (function (t) { + var e = {} + function r(n) { + if (e[n]) return e[n].exports + var i = (e[n] = { i: n, l: !1, exports: {} }) + return t[n].call(i.exports, i, i.exports, r), (i.l = !0), i.exports + } + return ( + (r.m = t), + (r.c = e), + (r.d = function (t, e, n) { + r.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n }) + }), + (r.r = function (t) { + 'undefined' != typeof Symbol && + Symbol.toStringTag && + Object.defineProperty(t, Symbol.toStringTag, { value: 'Module' }), + Object.defineProperty(t, '__esModule', { value: !0 }) + }), + (r.t = function (t, e) { + if ((1 & e && (t = r(t)), 8 & e)) return t + if (4 & e && 'object' == typeof t && t && t.__esModule) return t + var n = Object.create(null) + if ( + (r.r(n), + Object.defineProperty(n, 'default', { enumerable: !0, value: t }), + 2 & e && 'string' != typeof t) + ) + for (var i in t) + r.d( + n, + i, + function (e) { + return t[e] + }.bind(null, i), + ) + return n + }), + (r.n = function (t) { + var e = + t && t.__esModule + ? function () { + return t.default + } + : function () { + return t + } + return r.d(e, 'a', e), e + }), + (r.o = function (t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + }), + (r.p = ''), + r((r.s = 10)) + ) + })([ + function (t, e, r) { + 'use strict' + ;(function (t, n) { + r.d(e, 'a', function () { + return J + }), + r.d(e, 'b', function () { + return br + }), + r.d(e, 'c', function () { + return $r + }), + r.d(e, 'd', function () { + return hr + }), + r.d(e, 'e', function () { + return Jr + }), + r.d(e, 'f', function () { + return i + }) + var i = { + $version: 8, + $root: { + version: { + required: !0, + type: 'enum', + values: [8], + doc: 'Style specification version number. Must be 8.', + example: 8, + }, + name: { + type: 'string', + doc: 'A human-readable name for the style.', + example: 'Bright', + }, + metadata: { + type: '*', + doc: "Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.", + }, + center: { + type: 'array', + value: 'number', + doc: 'Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).', + example: [-73.9749, 40.7736], + }, + zoom: { + type: 'number', + doc: 'Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).', + example: 12.5, + }, + bearing: { + type: 'number', + default: 0, + period: 360, + units: 'degrees', + doc: 'Default bearing, in degrees. The bearing is the compass direction that is "up"; for example, a bearing of 90° orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).', + example: 29, + }, + pitch: { + type: 'number', + default: 0, + units: 'degrees', + doc: 'Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).', + example: 50, + }, + light: { + type: 'light', + doc: 'The global light source.', + example: { anchor: 'viewport', color: 'white', intensity: 0.4 }, + }, + terrain: { + type: 'terrain', + doc: 'A global modifier that elevates layers and markers based on a DEM data source.', + }, + sources: { + required: !0, + type: 'sources', + doc: 'Data source specifications.', + example: { + 'mapbox-streets': { + type: 'vector', + url: 'mapbox://mapbox.mapbox-streets-v6', + }, + }, + }, + sprite: { + type: 'string', + doc: 'A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).', + example: 'mapbox://sprites/mapbox/bright-v8', + }, + glyphs: { + type: 'string', + doc: 'A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).', + example: 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf', + }, + transition: { + type: 'transition', + doc: "A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.", + example: { duration: 300, delay: 0 }, + }, + layers: { + required: !0, + type: 'array', + value: 'layer', + doc: 'Layers will be drawn in the order of this array.', + example: [ + { + id: 'water', + source: 'mapbox-streets', + 'source-layer': 'water', + type: 'fill', + paint: { 'fill-color': '#00ffff' }, + }, + ], + }, + }, + sources: { + '*': { + type: 'source', + doc: 'Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided.', + }, + }, + source: [ + 'source_vector', + 'source_raster', + 'source_raster_dem', + 'source_geojson', + 'source_video', + 'source_image', + ], + source_vector: { + type: { + required: !0, + type: 'enum', + values: { vector: { doc: 'A vector tile source.' } }, + doc: 'The type of the source.', + }, + url: { + type: 'string', + doc: 'A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.', + }, + tiles: { + type: 'array', + value: 'string', + doc: 'An array of one or more tile source URLs, as in the TileJSON spec.', + }, + bounds: { + type: 'array', + value: 'number', + length: 4, + default: [-180, -85.051129, 180, 85.051129], + doc: "An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.", + }, + scheme: { + type: 'enum', + values: { + xyz: { doc: 'Slippy map tilenames scheme.' }, + tms: { doc: 'OSGeo spec scheme.' }, + }, + default: 'xyz', + doc: 'Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.', + }, + minzoom: { + type: 'number', + default: 0, + doc: 'Minimum zoom level for which tiles are available, as in the TileJSON spec.', + }, + maxzoom: { + type: 'number', + default: 22, + doc: 'Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.', + }, + attribution: { + type: 'string', + doc: 'Contains an attribution to be displayed when the map is shown to a user.', + }, + promoteId: { + type: 'promoteId', + doc: 'A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`. If specified as a string for a vector tile source, the same property is used across all its source layers.', + }, + volatile: { + type: 'boolean', + default: !1, + doc: "A setting to determine whether a source's tiles are cached locally.", + 'sdk-support': { + 'basic functionality': { android: '9.3.0', ios: '5.10.0' }, + }, + }, + '*': { type: '*', doc: 'Other keys to configure the data source.' }, + }, + source_raster: { + type: { + required: !0, + type: 'enum', + values: { raster: { doc: 'A raster tile source.' } }, + doc: 'The type of the source.', + }, + url: { + type: 'string', + doc: 'A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.', + }, + tiles: { + type: 'array', + value: 'string', + doc: 'An array of one or more tile source URLs, as in the TileJSON spec.', + }, + bounds: { + type: 'array', + value: 'number', + length: 4, + default: [-180, -85.051129, 180, 85.051129], + doc: "An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.", + }, + minzoom: { + type: 'number', + default: 0, + doc: 'Minimum zoom level for which tiles are available, as in the TileJSON spec.', + }, + maxzoom: { + type: 'number', + default: 22, + doc: 'Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.', + }, + tileSize: { + type: 'number', + default: 512, + units: 'pixels', + doc: 'The minimum visual size to display tiles for this layer. Only configurable for raster layers.', + }, + scheme: { + type: 'enum', + values: { + xyz: { doc: 'Slippy map tilenames scheme.' }, + tms: { doc: 'OSGeo spec scheme.' }, + }, + default: 'xyz', + doc: 'Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.', + }, + attribution: { + type: 'string', + doc: 'Contains an attribution to be displayed when the map is shown to a user.', + }, + volatile: { + type: 'boolean', + default: !1, + doc: "A setting to determine whether a source's tiles are cached locally.", + 'sdk-support': { + 'basic functionality': { android: '9.3.0', ios: '5.10.0' }, + }, + }, + '*': { type: '*', doc: 'Other keys to configure the data source.' }, + }, + source_raster_dem: { + type: { + required: !0, + type: 'enum', + values: { + 'raster-dem': { doc: 'A RGB-encoded raster DEM source' }, + }, + doc: 'The type of the source.', + }, + url: { + type: 'string', + doc: 'A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.', + }, + tiles: { + type: 'array', + value: 'string', + doc: 'An array of one or more tile source URLs, as in the TileJSON spec.', + }, + bounds: { + type: 'array', + value: 'number', + length: 4, + default: [-180, -85.051129, 180, 85.051129], + doc: "An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.", + }, + minzoom: { + type: 'number', + default: 0, + doc: 'Minimum zoom level for which tiles are available, as in the TileJSON spec.', + }, + maxzoom: { + type: 'number', + default: 22, + doc: 'Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.', + }, + tileSize: { + type: 'number', + default: 512, + units: 'pixels', + doc: 'The minimum visual size to display tiles for this layer. Only configurable for raster layers.', + }, + attribution: { + type: 'string', + doc: 'Contains an attribution to be displayed when the map is shown to a user.', + }, + encoding: { + type: 'enum', + values: { + terrarium: { + doc: 'Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info.', + }, + mapbox: { + doc: 'Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info.', + }, + }, + default: 'mapbox', + doc: 'The encoding used by this source. Mapbox Terrain RGB is used by default', + }, + volatile: { + type: 'boolean', + default: !1, + doc: "A setting to determine whether a source's tiles are cached locally.", + 'sdk-support': { + 'basic functionality': { android: '9.3.0', ios: '5.10.0' }, + }, + }, + '*': { type: '*', doc: 'Other keys to configure the data source.' }, + }, + source_geojson: { + type: { + required: !0, + type: 'enum', + values: { geojson: { doc: 'A GeoJSON data source.' } }, + doc: 'The data type of the GeoJSON source.', + }, + data: { + type: '*', + doc: 'A URL to a GeoJSON file, or inline GeoJSON.', + }, + maxzoom: { + type: 'number', + default: 18, + doc: 'Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels).', + }, + attribution: { + type: 'string', + doc: 'Contains an attribution to be displayed when the map is shown to a user.', + }, + buffer: { + type: 'number', + default: 128, + maximum: 512, + minimum: 0, + doc: 'Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance.', + }, + filter: { + type: '*', + doc: 'An expression for filtering features prior to processing them for rendering.', + }, + tolerance: { + type: 'number', + default: 0.375, + doc: 'Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance).', + }, + cluster: { + type: 'boolean', + default: !1, + doc: 'If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\n * `cluster` Is `true` if the point is a cluster \n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\n * `point_count` Number of original points grouped into this cluster\n * `point_count_abbreviated` An abbreviated point count', + }, + clusterRadius: { + type: 'number', + default: 50, + minimum: 0, + doc: 'Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile.', + }, + clusterMaxZoom: { + type: 'number', + doc: 'Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered). Clusters are re-evaluated at integer zoom levels so setting clusterMaxZoom to 14 means the clusters will be displayed until z15.', + }, + clusterMinPoints: { + type: 'number', + doc: 'Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`.', + }, + clusterProperties: { + type: '*', + doc: 'An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{"property_name": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `"+"` or `"max"`) — it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\n\nExample: `{"sum": ["+", ["get", "scalerank"]]}`.\n\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `["accumulated"]` value, e.g.:\n`{"sum": [["+", ["accumulated"], ["get", "sum"]], ["get", "scalerank"]]}`', + }, + lineMetrics: { + type: 'boolean', + default: !1, + doc: 'Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values.', + }, + generateId: { + type: 'boolean', + default: !1, + doc: 'Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values.', + }, + promoteId: { + type: 'promoteId', + doc: 'A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`.', + }, + }, + source_video: { + type: { + required: !0, + type: 'enum', + values: { video: { doc: 'A video data source.' } }, + doc: 'The data type of the video source.', + }, + urls: { + required: !0, + type: 'array', + value: 'string', + doc: 'URLs to video content in order of preferred format.', + }, + coordinates: { + required: !0, + doc: 'Corners of video specified in longitude, latitude pairs.', + type: 'array', + length: 4, + value: { + type: 'array', + length: 2, + value: 'number', + doc: 'A single longitude, latitude pair.', + }, + }, + }, + source_image: { + type: { + required: !0, + type: 'enum', + values: { image: { doc: 'An image data source.' } }, + doc: 'The data type of the image source.', + }, + url: { + required: !0, + type: 'string', + doc: 'URL that points to an image.', + }, + coordinates: { + required: !0, + doc: 'Corners of image specified in longitude, latitude pairs.', + type: 'array', + length: 4, + value: { + type: 'array', + length: 2, + value: 'number', + doc: 'A single longitude, latitude pair.', + }, + }, + }, + layer: { + id: { type: 'string', doc: 'Unique layer name.', required: !0 }, + type: { + type: 'enum', + values: { + fill: { + doc: 'A filled polygon with an optional stroked border.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + }, + line: { + doc: 'A stroked line.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + }, + symbol: { + doc: 'An icon or a text label.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + }, + circle: { + doc: 'A filled circle.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + }, + heatmap: { + doc: 'A heatmap.', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'fill-extrusion': { + doc: 'An extruded (3D) polygon.', + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + }, + raster: { + doc: 'Raster map textures such as satellite imagery.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + }, + hillshade: { + doc: 'Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.', + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + background: { + doc: 'The background color or pattern of the map.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + }, + sky: { + doc: 'A spherical dome around the map that is always rendered behind all other layers.', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + }, + }, + doc: 'Rendering type of this layer.', + required: !0, + }, + metadata: { + type: '*', + doc: "Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.", + }, + source: { + type: 'string', + doc: 'Name of a source description to be used for this layer. Required for all layer types except `background`.', + }, + 'source-layer': { + type: 'string', + doc: 'Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources.', + }, + minzoom: { + type: 'number', + minimum: 0, + maximum: 24, + doc: 'The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden.', + }, + maxzoom: { + type: 'number', + minimum: 0, + maximum: 24, + doc: 'The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden.', + }, + filter: { + type: 'filter', + doc: 'A expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `feature-state` expression is not supported in filter expressions.', + }, + layout: { type: 'layout', doc: 'Layout properties for the layer.' }, + paint: { + type: 'paint', + doc: 'Default paint properties for this layer.', + }, + }, + layout: [ + 'layout_fill', + 'layout_line', + 'layout_circle', + 'layout_heatmap', + 'layout_fill-extrusion', + 'layout_symbol', + 'layout_raster', + 'layout_hillshade', + 'layout_background', + 'layout_sky', + ], + layout_background: { + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + 'property-type': 'constant', + }, + }, + layout_sky: { + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + 'property-type': 'constant', + }, + }, + layout_fill: { + 'fill-sort-key': { + type: 'number', + doc: 'Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.', + 'sdk-support': { + 'basic functionality': { + js: '1.2.0', + android: '9.1.0', + ios: '5.8.0', + macos: '0.15.0', + }, + 'data-driven styling': { + js: '1.2.0', + android: '9.1.0', + ios: '5.8.0', + macos: '0.15.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + 'property-type': 'constant', + }, + }, + layout_circle: { + 'circle-sort-key': { + type: 'number', + doc: 'Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.', + 'sdk-support': { + 'basic functionality': { + js: '1.2.0', + android: '9.2.0', + ios: '5.9.0', + macos: '0.16.0', + }, + 'data-driven styling': { + js: '1.2.0', + android: '9.2.0', + ios: '5.9.0', + macos: '0.16.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + 'property-type': 'constant', + }, + }, + layout_heatmap: { + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + 'property-type': 'constant', + }, + }, + 'layout_fill-extrusion': { + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + 'property-type': 'constant', + }, + }, + layout_line: { + 'line-cap': { + type: 'enum', + values: { + butt: { + doc: 'A cap with a squared-off end which is drawn to the exact endpoint of the line.', + }, + round: { + doc: "A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.", + }, + square: { + doc: "A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.", + }, + }, + default: 'butt', + doc: 'The display of line endings.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'line-join': { + type: 'enum', + values: { + bevel: { + doc: "A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.", + }, + round: { + doc: "A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.", + }, + miter: { + doc: 'A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet.', + }, + }, + default: 'miter', + doc: 'The display of lines when joining.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.40.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'line-miter-limit': { + type: 'number', + default: 2, + doc: 'Used to automatically convert miter joins to bevel joins for sharp angles.', + requires: [{ 'line-join': 'miter' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'line-round-limit': { + type: 'number', + default: 1.05, + doc: 'Used to automatically convert round joins to miter joins for shallow angles.', + requires: [{ 'line-join': 'round' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'line-sort-key': { + type: 'number', + doc: 'Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.', + 'sdk-support': { + 'basic functionality': { + js: '1.2.0', + android: '9.1.0', + ios: '5.8.0', + macos: '0.15.0', + }, + 'data-driven styling': { + js: '1.2.0', + android: '9.1.0', + ios: '5.8.0', + macos: '0.15.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + 'property-type': 'constant', + }, + }, + layout_symbol: { + 'symbol-placement': { + type: 'enum', + values: { + point: { + doc: 'The label is placed at the point where the geometry is located.', + }, + line: { + doc: 'The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries.', + }, + 'line-center': { + doc: 'The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries.', + }, + }, + default: 'point', + doc: 'Label placement relative to its geometry.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + '`line-center` value': { + js: '0.47.0', + android: '6.4.0', + ios: '4.3.0', + macos: '0.10.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'symbol-spacing': { + type: 'number', + default: 250, + minimum: 1, + units: 'pixels', + doc: 'Distance between two symbol anchors.', + requires: [{ 'symbol-placement': 'line' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'symbol-avoid-edges': { + type: 'boolean', + default: !1, + doc: "If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.", + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'symbol-sort-key': { + type: 'number', + doc: 'Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first. When `icon-allow-overlap` or `text-allow-overlap` is `false`, features with a lower sort key will have priority during placement. When `icon-allow-overlap` or `text-allow-overlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.', + 'sdk-support': { + 'basic functionality': { + js: '0.53.0', + android: '7.4.0', + ios: '4.11.0', + macos: '0.14.0', + }, + 'data-driven styling': { + js: '0.53.0', + android: '7.4.0', + ios: '4.11.0', + macos: '0.14.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'symbol-z-order': { + type: 'enum', + values: { + auto: { + doc: 'Sorts symbols by `symbol-sort-key` if set. Otherwise, sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`.', + }, + 'viewport-y': { + doc: 'Sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`.', + }, + source: { + doc: 'Sorts symbols by `symbol-sort-key` if set. Otherwise, no sorting is applied; symbols are rendered in the same order as the source data.', + }, + }, + default: 'auto', + doc: 'Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their y-position relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbol-sort-key`.', + 'sdk-support': { + 'basic functionality': { + js: '0.49.0', + android: '6.6.0', + ios: '4.5.0', + macos: '0.12.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-allow-overlap': { + type: 'boolean', + default: !1, + doc: 'If true, the icon will be visible even if it collides with other previously drawn symbols.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-ignore-placement': { + type: 'boolean', + default: !1, + doc: 'If true, other symbols can be visible even if they collide with the icon.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-optional': { + type: 'boolean', + default: !1, + doc: 'If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.', + requires: ['icon-image', 'text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-rotation-alignment': { + type: 'enum', + values: { + map: { + doc: 'When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line.', + }, + viewport: { + doc: 'Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.', + }, + auto: { + doc: 'When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.', + }, + }, + default: 'auto', + doc: 'In combination with `symbol-placement`, determines the rotation behavior of icons.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + '`auto` value': { + js: '0.25.0', + android: '4.2.0', + ios: '3.4.0', + macos: '0.3.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-size': { + type: 'number', + default: 1, + minimum: 0, + units: 'factor of the original icon size', + doc: 'Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.35.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'icon-text-fit': { + type: 'enum', + values: { + none: { + doc: 'The icon is displayed at its intrinsic aspect ratio.', + }, + width: { + doc: 'The icon is scaled in the x-dimension to fit the width of the text.', + }, + height: { + doc: 'The icon is scaled in the y-dimension to fit the height of the text.', + }, + both: { + doc: 'The icon is scaled in both x- and y-dimensions.', + }, + }, + default: 'none', + doc: 'Scales the icon to fit around the associated text.', + requires: ['icon-image', 'text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.21.0', + android: '4.2.0', + ios: '3.4.0', + macos: '0.2.1', + }, + 'stretchable icons': { + js: '1.6.0', + android: '9.2.0', + ios: '5.8.0', + macos: '0.15.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-text-fit-padding': { + type: 'array', + value: 'number', + length: 4, + default: [0, 0, 0, 0], + units: 'pixels', + doc: 'Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.', + requires: [ + 'icon-image', + 'text-field', + { 'icon-text-fit': ['both', 'width', 'height'] }, + ], + 'sdk-support': { + 'basic functionality': { + js: '0.21.0', + android: '4.2.0', + ios: '3.4.0', + macos: '0.2.1', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-image': { + type: 'resolvedImage', + doc: 'Name of image in sprite to use for drawing an image background.', + tokens: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.35.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'icon-rotate': { + type: 'number', + default: 0, + period: 360, + units: 'degrees', + doc: 'Rotates the icon clockwise.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.21.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'icon-padding': { + type: 'number', + default: 2, + minimum: 0, + units: 'pixels', + doc: 'Size of the additional area around the icon bounding box used for detecting symbol collisions.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-keep-upright': { + type: 'boolean', + default: !1, + doc: 'If true, the icon may be flipped to prevent it from being rendered upside-down.', + requires: [ + 'icon-image', + { 'icon-rotation-alignment': 'map' }, + { 'symbol-placement': ['line', 'line-center'] }, + ], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-offset': { + type: 'array', + value: 'number', + length: 2, + default: [0, 0], + doc: 'Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'icon-anchor': { + type: 'enum', + values: { + center: { + doc: 'The center of the icon is placed closest to the anchor.', + }, + left: { + doc: 'The left side of the icon is placed closest to the anchor.', + }, + right: { + doc: 'The right side of the icon is placed closest to the anchor.', + }, + top: { + doc: 'The top of the icon is placed closest to the anchor.', + }, + bottom: { + doc: 'The bottom of the icon is placed closest to the anchor.', + }, + 'top-left': { + doc: 'The top left corner of the icon is placed closest to the anchor.', + }, + 'top-right': { + doc: 'The top right corner of the icon is placed closest to the anchor.', + }, + 'bottom-left': { + doc: 'The bottom left corner of the icon is placed closest to the anchor.', + }, + 'bottom-right': { + doc: 'The bottom right corner of the icon is placed closest to the anchor.', + }, + }, + default: 'center', + doc: 'Part of the icon placed closest to the anchor.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.40.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + 'data-driven styling': { + js: '0.40.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'icon-pitch-alignment': { + type: 'enum', + values: { + map: { doc: 'The icon is aligned to the plane of the map.' }, + viewport: { + doc: 'The icon is aligned to the plane of the viewport.', + }, + auto: { + doc: 'Automatically matches the value of `icon-rotation-alignment`.', + }, + }, + default: 'auto', + doc: 'Orientation of icon when map is pitched.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.39.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-pitch-alignment': { + type: 'enum', + values: { + map: { doc: 'The text is aligned to the plane of the map.' }, + viewport: { + doc: 'The text is aligned to the plane of the viewport.', + }, + auto: { + doc: 'Automatically matches the value of `text-rotation-alignment`.', + }, + }, + default: 'auto', + doc: 'Orientation of text when map is pitched.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.21.0', + android: '4.2.0', + ios: '3.4.0', + macos: '0.2.1', + }, + '`auto` value': { + js: '0.25.0', + android: '4.2.0', + ios: '3.4.0', + macos: '0.3.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-rotation-alignment': { + type: 'enum', + values: { + map: { + doc: 'When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line.', + }, + viewport: { + doc: 'Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.', + }, + auto: { + doc: 'When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.', + }, + }, + default: 'auto', + doc: 'In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + '`auto` value': { + js: '0.25.0', + android: '4.2.0', + ios: '3.4.0', + macos: '0.3.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-field': { + type: 'formatted', + default: '', + tokens: !0, + doc: 'Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-font': { + type: 'array', + value: 'string', + default: ['Open Sans Regular', 'Arial Unicode MS Regular'], + doc: 'Font stack to use for displaying text.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-size': { + type: 'number', + default: 16, + minimum: 0, + units: 'pixels', + doc: 'Font size.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.35.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-max-width': { + type: 'number', + default: 10, + minimum: 0, + units: 'ems', + doc: 'The maximum line width for text wrapping.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.40.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-line-height': { + type: 'number', + default: 1.2, + units: 'ems', + doc: 'Text leading value for multi-line text.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-letter-spacing': { + type: 'number', + default: 0, + units: 'ems', + doc: 'Text tracking amount.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.40.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-justify': { + type: 'enum', + values: { + auto: { + doc: 'The text is aligned towards the anchor position.', + }, + left: { doc: 'The text is aligned to the left.' }, + center: { doc: 'The text is centered.' }, + right: { doc: 'The text is aligned to the right.' }, + }, + default: 'center', + doc: 'Text justification options.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.39.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + auto: { + js: '0.54.0', + android: '7.4.0', + ios: '4.10.0', + macos: '0.14.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-radial-offset': { + type: 'number', + units: 'ems', + default: 0, + doc: "Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which defaults to using the two-dimensional `text-offset` if present.", + 'sdk-support': { + 'basic functionality': { + js: '0.54.0', + android: '7.4.0', + ios: '4.10.0', + macos: '0.14.0', + }, + 'data-driven styling': { + js: '0.54.0', + android: '7.4.0', + ios: '4.10.0', + macos: '0.14.0', + }, + }, + requires: ['text-field'], + 'property-type': 'data-driven', + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + }, + 'text-variable-anchor': { + type: 'array', + value: 'enum', + values: { + center: { + doc: 'The center of the text is placed closest to the anchor.', + }, + left: { + doc: 'The left side of the text is placed closest to the anchor.', + }, + right: { + doc: 'The right side of the text is placed closest to the anchor.', + }, + top: { + doc: 'The top of the text is placed closest to the anchor.', + }, + bottom: { + doc: 'The bottom of the text is placed closest to the anchor.', + }, + 'top-left': { + doc: 'The top left corner of the text is placed closest to the anchor.', + }, + 'top-right': { + doc: 'The top right corner of the text is placed closest to the anchor.', + }, + 'bottom-left': { + doc: 'The bottom left corner of the text is placed closest to the anchor.', + }, + 'bottom-right': { + doc: 'The bottom right corner of the text is placed closest to the anchor.', + }, + }, + requires: ['text-field', { 'symbol-placement': ['point'] }], + doc: 'To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the renderer will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` or the two-dimensional `text-offset`.', + 'sdk-support': { + 'basic functionality': { + js: '0.54.0', + android: '7.4.0', + ios: '4.10.0', + macos: '0.14.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-anchor': { + type: 'enum', + values: { + center: { + doc: 'The center of the text is placed closest to the anchor.', + }, + left: { + doc: 'The left side of the text is placed closest to the anchor.', + }, + right: { + doc: 'The right side of the text is placed closest to the anchor.', + }, + top: { + doc: 'The top of the text is placed closest to the anchor.', + }, + bottom: { + doc: 'The bottom of the text is placed closest to the anchor.', + }, + 'top-left': { + doc: 'The top left corner of the text is placed closest to the anchor.', + }, + 'top-right': { + doc: 'The top right corner of the text is placed closest to the anchor.', + }, + 'bottom-left': { + doc: 'The bottom left corner of the text is placed closest to the anchor.', + }, + 'bottom-right': { + doc: 'The bottom right corner of the text is placed closest to the anchor.', + }, + }, + default: 'center', + doc: 'Part of the text placed closest to the anchor.', + requires: ['text-field', { '!': 'text-variable-anchor' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.39.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-max-angle': { + type: 'number', + default: 45, + units: 'degrees', + doc: 'Maximum angle change between adjacent characters.', + requires: [ + 'text-field', + { 'symbol-placement': ['line', 'line-center'] }, + ], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-writing-mode': { + type: 'array', + value: 'enum', + values: { + horizontal: { + doc: "If a text's language supports horizontal writing mode, symbols with point placement would be laid out horizontally.", + }, + vertical: { + doc: "If a text's language supports vertical writing mode, symbols with point placement would be laid out vertically.", + }, + }, + doc: "The property allows control over a symbol's orientation. Note that the property values act as a hint, so that a symbol whose language doesn’t support the provided orientation will be laid out in its natural orientation. Example: English point symbol will be rendered horizontally even if array value contains single 'vertical' enum value. The order of elements in an array define priority order for the placement of an orientation variant.", + requires: ['text-field', { 'symbol-placement': ['point'] }], + 'sdk-support': { + 'basic functionality': { + js: '1.3.0', + android: '8.3.0', + ios: '5.3.0', + macos: '0.15.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-rotate': { + type: 'number', + default: 0, + period: 360, + units: 'degrees', + doc: 'Rotates the text clockwise.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.35.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-padding': { + type: 'number', + default: 2, + minimum: 0, + units: 'pixels', + doc: 'Size of the additional area around the text bounding box used for detecting symbol collisions.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-keep-upright': { + type: 'boolean', + default: !0, + doc: 'If true, the text may be flipped vertically to prevent it from being rendered upside-down.', + requires: [ + 'text-field', + { 'text-rotation-alignment': 'map' }, + { 'symbol-placement': ['line', 'line-center'] }, + ], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-transform': { + type: 'enum', + values: { + none: { doc: 'The text is not altered.' }, + uppercase: { + doc: 'Forces all letters to be displayed in uppercase.', + }, + lowercase: { + doc: 'Forces all letters to be displayed in lowercase.', + }, + }, + default: 'none', + doc: 'Specifies how to capitalize text, similar to the CSS `text-transform` property.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-offset': { + type: 'array', + doc: 'Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up. If used with text-variable-anchor, input values will be taken as absolute values. Offsets along the x- and y-axis will be applied automatically based on the anchor position.', + value: 'number', + units: 'ems', + length: 2, + default: [0, 0], + requires: ['text-field', { '!': 'text-radial-offset' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.35.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom', 'feature'] }, + 'property-type': 'data-driven', + }, + 'text-allow-overlap': { + type: 'boolean', + default: !1, + doc: 'If true, the text will be visible even if it collides with other previously drawn symbols.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-ignore-placement': { + type: 'boolean', + default: !1, + doc: 'If true, other symbols can be visible even if they collide with the text.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-optional': { + type: 'boolean', + default: !1, + doc: 'If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.', + requires: ['text-field', 'icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + 'property-type': 'constant', + }, + }, + layout_raster: { + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + 'property-type': 'constant', + }, + }, + layout_hillshade: { + visibility: { + type: 'enum', + values: { + visible: { doc: 'The layer is shown.' }, + none: { doc: 'The layer is not shown.' }, + }, + default: 'visible', + doc: 'Whether this layer is displayed.', + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + 'property-type': 'constant', + }, + }, + filter: { + type: 'array', + value: '*', + doc: 'A filter selects specific features from a layer.', + }, + filter_operator: { + type: 'enum', + values: { + '==': { + doc: '`["==", key, value]` equality: `feature[key] = value`', + }, + '!=': { + doc: '`["!=", key, value]` inequality: `feature[key] ≠ value`', + }, + '>': { + doc: '`[">", key, value]` greater than: `feature[key] > value`', + }, + '>=': { + doc: '`[">=", key, value]` greater than or equal: `feature[key] ≥ value`', + }, + '<': { + doc: '`["<", key, value]` less than: `feature[key] < value`', + }, + '<=': { + doc: '`["<=", key, value]` less than or equal: `feature[key] ≤ value`', + }, + in: { + doc: '`["in", key, v0, ..., vn]` set inclusion: `feature[key] ∈ {v0, ..., vn}`', + }, + '!in': { + doc: '`["!in", key, v0, ..., vn]` set exclusion: `feature[key] ∉ {v0, ..., vn}`', + }, + all: { + doc: '`["all", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`', + }, + any: { + doc: '`["any", f0, ..., fn]` logical `OR`: `f0 ∨ ... ∨ fn`', + }, + none: { + doc: '`["none", f0, ..., fn]` logical `NOR`: `¬f0 ∧ ... ∧ ¬fn`', + }, + has: { doc: '`["has", key]` `feature[key]` exists' }, + '!has': { doc: '`["!has", key]` `feature[key]` does not exist' }, + within: { + doc: '`["within", object]` feature geometry is within object geometry', + }, + }, + doc: 'The filter operator.', + }, + geometry_type: { + type: 'enum', + values: { + Point: { doc: 'Filter to point geometries.' }, + LineString: { doc: 'Filter to line geometries.' }, + Polygon: { doc: 'Filter to polygon geometries.' }, + }, + doc: 'The geometry type for the filter to select.', + }, + function: { + expression: { type: 'expression', doc: 'An expression.' }, + stops: { + type: 'array', + doc: 'An array of stops.', + value: 'function_stop', + }, + base: { + type: 'number', + default: 1, + minimum: 0, + doc: 'The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly.', + }, + property: { + type: 'string', + doc: 'The name of a feature property to use as the function input.', + default: '$zoom', + }, + type: { + type: 'enum', + values: { + identity: { + doc: 'Return the input value as the output value.', + }, + exponential: { + doc: 'Generate an output by interpolating between stops just less than and just greater than the function input.', + }, + interval: { + doc: 'Return the output value of the stop just less than the function input.', + }, + categorical: { + doc: 'Return the output value of the stop equal to the function input.', + }, + }, + doc: 'The interpolation strategy to use in function evaluation.', + default: 'exponential', + }, + colorSpace: { + type: 'enum', + values: { + rgb: { + doc: 'Use the RGB color space to interpolate color values', + }, + lab: { + doc: 'Use the LAB color space to interpolate color values.', + }, + hcl: { + doc: 'Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually.', + }, + }, + doc: 'The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.', + default: 'rgb', + }, + default: { + type: '*', + required: !1, + doc: "A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\n* In categorical functions, when the feature value does not match any of the stop domain values.\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\nIf no default is provided, the style property's default is used in these circumstances.", + }, + }, + function_stop: { + type: 'array', + minimum: 0, + maximum: 24, + value: ['number', 'color'], + length: 2, + doc: 'Zoom level and value pair.', + }, + expression: { + type: 'array', + value: '*', + minimum: 1, + doc: 'An expression defines a function that can be used for data-driven style properties or feature filters.', + }, + expression_name: { + doc: '', + type: 'enum', + values: { + let: { + doc: 'Binds expressions to named variables, which can then be referenced in the result expression using ["var", "variable_name"].', + group: 'Variable binding', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + var: { + doc: 'References variable bound using "let".', + group: 'Variable binding', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + literal: { + doc: 'Provides a literal array or object value.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + array: { + doc: 'Asserts that the input is an array (optionally with a specific item type and length). If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + at: { + doc: 'Retrieves an item from an array.', + group: 'Lookup', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + in: { + doc: 'Determines whether an item exists in an array or a substring exists in a string.', + group: 'Lookup', + 'sdk-support': { + 'basic functionality': { + js: '1.6.0', + android: '9.1.0', + ios: '5.8.0', + macos: '0.15.0', + }, + }, + }, + 'index-of': { + doc: 'Returns the first position at which an item can be found in an array or a substring can be found in a string, or `-1` if the input cannot be found. Accepts an optional index from where to begin the search.', + group: 'Lookup', + 'sdk-support': { 'basic functionality': { js: '1.10.0' } }, + }, + slice: { + doc: 'Returns an item from an array or a substring from a string from a specified start index, or between a start index and an end index if set. The return value is inclusive of the start index but not of the end index.', + group: 'Lookup', + 'sdk-support': { 'basic functionality': { js: '1.10.0' } }, + }, + case: { + doc: 'Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + match: { + doc: 'Selects the output whose label value matches the input value, or the fallback value if no match is found. The input can be any expression (e.g. `["get", "building_type"]`). Each label must be either:\n - a single literal value; or\n - an array of literal values, whose values must be all strings or all numbers (e.g. `[100, 101]` or `["c", "b"]`). The input matches if any of the values in the array matches, similar to the `"in"` operator.\nEach label must be unique. If the input type does not match the type of the labels, the result will be the fallback value.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + coalesce: { + doc: 'Evaluates each expression in turn until the first non-null value is obtained, and returns that value.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + step: { + doc: 'Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first output if the input is less than the first stop.', + group: 'Ramps, scales, curves', + 'sdk-support': { + 'basic functionality': { + js: '0.42.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + interpolate: { + doc: 'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array`, or `color`.\n\nInterpolation types:\n- `["linear"]`: Interpolates linearly between the pair of stops just less than and just greater than the input.\n- `["exponential", base]`: Interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\n- `["cubic-bezier", x1, y1, x2, y2]`: Interpolates using the cubic bezier curve defined by the given control points.', + group: 'Ramps, scales, curves', + 'sdk-support': { + 'basic functionality': { + js: '0.42.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'interpolate-hcl': { + doc: 'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.', + group: 'Ramps, scales, curves', + 'sdk-support': { 'basic functionality': { js: '0.49.0' } }, + }, + 'interpolate-lab': { + doc: 'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.', + group: 'Ramps, scales, curves', + 'sdk-support': { 'basic functionality': { js: '0.49.0' } }, + }, + ln2: { + doc: 'Returns mathematical constant ln(2).', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + pi: { + doc: 'Returns the mathematical constant pi.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + e: { + doc: 'Returns the mathematical constant e.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + typeof: { + doc: 'Returns a string describing the type of the given value.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + string: { + doc: 'Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + number: { + doc: 'Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + boolean: { + doc: 'Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + object: { + doc: 'Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + collator: { + doc: 'Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + format: { + doc: 'Returns a `formatted` string for displaying mixed-format text in the `text-field` property. The input may contain a string literal or expression, including an [`\'image\'`](#types-image) expression. Strings may be followed by a style override object that supports the following properties:\n- `"text-font"`: Overrides the font stack specified by the root layout property.\n- `"text-color"`: Overrides the color specified by the root paint property.\n- `"font-scale"`: Applies a scaling factor on `text-size` as specified by the root layout property.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.48.0', + android: '6.7.0', + ios: '4.6.0', + macos: '0.12.0', + }, + 'text-font': { + js: '0.48.0', + android: '6.7.0', + ios: '4.6.0', + macos: '0.12.0', + }, + 'font-scale': { + js: '0.48.0', + android: '6.7.0', + ios: '4.6.0', + macos: '0.12.0', + }, + 'text-color': { + js: '1.3.0', + android: '7.3.0', + ios: '4.10.0', + macos: '0.14.0', + }, + image: { + js: '1.6.0', + android: '8.6.0', + ios: '5.7.0', + macos: '0.15.0', + }, + }, + }, + image: { + doc: 'Returns an `image` type for use in `icon-image`, `*-pattern` entries and as a section in the `format` expression. If set, the `image` argument will check that the requested image exists in the style and will return either the resolved image name or `null`, depending on whether or not the image is currently in the style. This validation process is synchronous and requires the image to have been added to the style before requesting it in the `image` argument.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '1.4.0', + android: '8.6.0', + ios: '5.7.0', + macos: '0.15.0', + }, + }, + }, + 'number-format': { + doc: 'Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.', + group: 'Types', + 'sdk-support': { 'basic functionality': { js: '0.54.0' } }, + }, + 'to-string': { + doc: 'Converts the input value to a string. If the input is `null`, the result is `""`. If the input is a boolean, the result is `"true"` or `"false"`. If the input is a number, it is converted to a string as specified by the ["NumberToString" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form `"rgba(r,g,b,a)"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'to-number': { + doc: 'Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the ["ToNumber Applied to the String Type" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'to-boolean': { + doc: 'Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'to-rgba': { + doc: "Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.", + group: 'Color', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'to-color': { + doc: 'Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.', + group: 'Types', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + rgb: { + doc: 'Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.', + group: 'Color', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + rgba: { + doc: 'Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.', + group: 'Color', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + get: { + doc: "Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns null if the requested property is missing.", + group: 'Lookup', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + has: { + doc: "Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.", + group: 'Lookup', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + length: { + doc: 'Gets the length of an array or string.', + group: 'Lookup', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + properties: { + doc: 'Gets the feature properties object. Note that in some cases, it may be more efficient to use ["get", "property_name"] directly.', + group: 'Feature data', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'feature-state': { + doc: "Retrieves a property value from the current feature's state. Returns null if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. Features are identified by their `id` attribute, which must be an integer or a string that can be cast to an integer. Note that [\"feature-state\"] can only be used with paint properties that support data-driven styling.", + group: 'Feature data', + 'sdk-support': { 'basic functionality': { js: '0.46.0' } }, + }, + 'geometry-type': { + doc: "Gets the feature's geometry type: `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`.", + group: 'Feature data', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + id: { + doc: "Gets the feature's id, if it has one.", + group: 'Feature data', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + zoom: { + doc: 'Gets the current zoom level. Note that in style layout and paint properties, ["zoom"] may only appear as the input to a top-level "step" or "interpolate" expression.', + group: 'Zoom', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'heatmap-density': { + doc: 'Gets the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.', + group: 'Heatmap', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'line-progress': { + doc: 'Gets the progress along a gradient line. Can only be used in the `line-gradient` property.', + group: 'Feature data', + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.5.0', + ios: '4.6.0', + macos: '0.12.0', + }, + }, + }, + 'sky-radial-progress': { + doc: 'Gets the distance of a point on the sky from the sun position. Returns 0 at sun position and 1 when the distance reaches `sky-gradient-radius`. Can only be used in the `sky-gradient` property.', + group: 'sky', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + }, + accumulated: { + doc: 'Gets the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.', + group: 'Feature data', + 'sdk-support': { 'basic functionality': { js: '0.53.0' } }, + }, + '+': { + doc: 'Returns the sum of the inputs.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + '*': { + doc: 'Returns the product of the inputs.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + '-': { + doc: 'For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + '/': { + doc: 'Returns the result of floating point division of the first input by the second.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + '%': { + doc: 'Returns the remainder after integer division of the first input by the second.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + '^': { + doc: 'Returns the result of raising the first input to the power specified by the second.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + sqrt: { + doc: 'Returns the square root of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.42.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + log10: { + doc: 'Returns the base-ten logarithm of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + ln: { + doc: 'Returns the natural logarithm of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + log2: { + doc: 'Returns the base-two logarithm of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + sin: { + doc: 'Returns the sine of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + cos: { + doc: 'Returns the cosine of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + tan: { + doc: 'Returns the tangent of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + asin: { + doc: 'Returns the arcsine of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + acos: { + doc: 'Returns the arccosine of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + atan: { + doc: 'Returns the arctangent of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + min: { + doc: 'Returns the minimum value of the inputs.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + max: { + doc: 'Returns the maximum value of the inputs.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + round: { + doc: 'Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `["round", -1.5]` evaluates to -2.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + abs: { + doc: 'Returns the absolute value of the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + ceil: { + doc: 'Returns the smallest integer that is greater than or equal to the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + floor: { + doc: 'Returns the largest integer that is less than or equal to the input.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + distance: { + doc: 'Returns the shortest distance in meters between the evaluated feature and the input geometry. The input value can be a valid GeoJSON of type `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Distance values returned may vary in precision due to loss in precision from encoding geometries, particularly below zoom level 13.', + group: 'Math', + 'sdk-support': { + 'basic functionality': { + android: '9.2.0', + ios: '5.9.0', + macos: '0.16.0', + }, + }, + }, + '==': { + doc: 'Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + collator: { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + '!=': { + doc: 'Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + collator: { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + '>': { + doc: 'Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + collator: { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + '<': { + doc: 'Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + collator: { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + '>=': { + doc: 'Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + collator: { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + '<=': { + doc: 'Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + collator: { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + all: { + doc: 'Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + any: { + doc: 'Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + '!': { + doc: 'Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.', + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + within: { + doc: "Returns `true` if the evaluated feature is fully contained inside a boundary of the input geometry, `false` otherwise. The input value can be a valid GeoJSON of type `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Supported features for evaluation:\n- `Point`: Returns `false` if a point is on the boundary or falls outside the boundary.\n- `LineString`: Returns `false` if any part of a line falls outside the boundary, the line intersects the boundary, or a line's endpoint is on the boundary.", + group: 'Decision', + 'sdk-support': { + 'basic functionality': { + js: '1.9.0', + android: '9.1.0', + ios: '5.8.0', + macos: '0.15.0', + }, + }, + }, + 'is-supported-script': { + doc: 'Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in Mapbox GL JS).', + group: 'String', + 'sdk-support': { + 'basic functionality': { js: '0.45.0', android: '6.6.0' }, + }, + }, + upcase: { + doc: 'Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.', + group: 'String', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + downcase: { + doc: 'Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.', + group: 'String', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + concat: { + doc: 'Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.', + group: 'String', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + }, + 'resolved-locale': { + doc: 'Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.', + group: 'String', + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.5.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + }, + }, + }, + light: { + anchor: { + type: 'enum', + default: 'viewport', + values: { + map: { + doc: 'The position of the light source is aligned to the rotation of the map.', + }, + viewport: { + doc: 'The position of the light source is aligned to the rotation of the viewport.', + }, + }, + 'property-type': 'data-constant', + transition: !1, + expression: { interpolated: !1, parameters: ['zoom'] }, + doc: 'Whether extruded geometries are lit relative to the map or viewport.', + example: 'map', + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + }, + position: { + type: 'array', + default: [1.15, 210, 30], + length: 3, + value: 'number', + 'property-type': 'data-constant', + transition: !0, + expression: { interpolated: !0, parameters: ['zoom'] }, + doc: 'Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).', + example: [1.5, 90, 80], + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + }, + color: { + type: 'color', + 'property-type': 'data-constant', + default: '#ffffff', + expression: { interpolated: !0, parameters: ['zoom'] }, + transition: !0, + doc: 'Color tint for lighting extruded geometries.', + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + }, + intensity: { + type: 'number', + 'property-type': 'data-constant', + default: 0.5, + minimum: 0, + maximum: 1, + expression: { interpolated: !0, parameters: ['zoom'] }, + transition: !0, + doc: 'Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.', + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + }, + }, + terrain: { + source: { + type: 'string', + doc: 'Name of a source of `raster_dem` type to be used for terrain elevation.', + required: !0, + }, + exaggeration: { + type: 'number', + 'property-type': 'data-constant', + default: 1, + minimum: 0, + maximum: 1e3, + expression: { interpolated: !0, parameters: ['zoom'] }, + transition: !0, + doc: 'Exaggerates the elevation of the terrain by multiplying the data from the DEM with this value.', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + }, + }, + paint: [ + 'paint_fill', + 'paint_line', + 'paint_circle', + 'paint_heatmap', + 'paint_fill-extrusion', + 'paint_symbol', + 'paint_raster', + 'paint_hillshade', + 'paint_background', + 'paint_sky', + ], + paint_fill: { + 'fill-antialias': { + type: 'boolean', + default: !0, + doc: 'Whether or not the fill should be antialiased.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'fill-opacity': { + type: 'number', + default: 1, + minimum: 0, + maximum: 1, + doc: 'The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.21.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'fill-color': { + type: 'color', + default: '#000000', + doc: "The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.", + transition: !0, + requires: [{ '!': 'fill-pattern' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.19.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'fill-outline-color': { + type: 'color', + doc: 'The outline color of the fill. Matches the value of `fill-color` if unspecified.', + transition: !0, + requires: [{ '!': 'fill-pattern' }, { 'fill-antialias': !0 }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.19.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'fill-translate': { + type: 'array', + value: 'number', + length: 2, + default: [0, 0], + transition: !0, + units: 'pixels', + doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.", + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'fill-translate-anchor': { + type: 'enum', + values: { + map: { doc: 'The fill is translated relative to the map.' }, + viewport: { + doc: 'The fill is translated relative to the viewport.', + }, + }, + doc: 'Controls the frame of reference for `fill-translate`.', + default: 'map', + requires: ['fill-translate'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'fill-pattern': { + type: 'resolvedImage', + transition: !0, + doc: 'Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.49.0', + android: '6.5.0', + macos: '0.11.0', + ios: '4.4.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'cross-faded-data-driven', + }, + }, + 'paint_fill-extrusion': { + 'fill-extrusion-opacity': { + type: 'number', + default: 1, + minimum: 0, + maximum: 1, + doc: 'The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'fill-extrusion-color': { + type: 'color', + default: '#000000', + doc: "The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.", + transition: !0, + requires: [{ '!': 'fill-extrusion-pattern' }], + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + 'data-driven styling': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'fill-extrusion-translate': { + type: 'array', + value: 'number', + length: 2, + default: [0, 0], + transition: !0, + units: 'pixels', + doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.", + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'fill-extrusion-translate-anchor': { + type: 'enum', + values: { + map: { + doc: 'The fill extrusion is translated relative to the map.', + }, + viewport: { + doc: 'The fill extrusion is translated relative to the viewport.', + }, + }, + doc: 'Controls the frame of reference for `fill-extrusion-translate`.', + default: 'map', + requires: ['fill-extrusion-translate'], + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'fill-extrusion-pattern': { + type: 'resolvedImage', + transition: !0, + doc: 'Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.', + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + 'data-driven styling': { + js: '0.49.0', + android: '6.5.0', + macos: '0.11.0', + ios: '4.4.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'cross-faded-data-driven', + }, + 'fill-extrusion-height': { + type: 'number', + default: 0, + minimum: 0, + units: 'meters', + doc: 'The height with which to extrude this layer.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + 'data-driven styling': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'fill-extrusion-base': { + type: 'number', + default: 0, + minimum: 0, + units: 'meters', + doc: 'The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.', + transition: !0, + requires: ['fill-extrusion-height'], + 'sdk-support': { + 'basic functionality': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + 'data-driven styling': { + js: '0.27.0', + android: '5.1.0', + ios: '3.6.0', + macos: '0.5.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'fill-extrusion-vertical-gradient': { + type: 'boolean', + default: !0, + doc: 'Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.', + transition: !1, + 'sdk-support': { + 'basic functionality': { + js: '0.50.0', + ios: '4.7.0', + macos: '0.13.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + }, + paint_line: { + 'line-opacity': { + type: 'number', + doc: 'The opacity at which the line will be drawn.', + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'line-color': { + type: 'color', + doc: 'The color with which the line will be drawn.', + default: '#000000', + transition: !0, + requires: [{ '!': 'line-pattern' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.23.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'line-translate': { + type: 'array', + value: 'number', + length: 2, + default: [0, 0], + transition: !0, + units: 'pixels', + doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.", + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'line-translate-anchor': { + type: 'enum', + values: { + map: { doc: 'The line is translated relative to the map.' }, + viewport: { + doc: 'The line is translated relative to the viewport.', + }, + }, + doc: 'Controls the frame of reference for `line-translate`.', + default: 'map', + requires: ['line-translate'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'line-width': { + type: 'number', + default: 1, + minimum: 0, + transition: !0, + units: 'pixels', + doc: 'Stroke thickness.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.39.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'line-gap-width': { + type: 'number', + default: 0, + minimum: 0, + doc: "Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.", + transition: !0, + units: 'pixels', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'line-offset': { + type: 'number', + default: 0, + doc: "The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.", + transition: !0, + units: 'pixels', + 'sdk-support': { + 'basic functionality': { + js: '0.12.1', + android: '3.0.0', + ios: '3.1.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'line-blur': { + type: 'number', + default: 0, + minimum: 0, + transition: !0, + units: 'pixels', + doc: 'Blur applied to the line, in pixels.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'line-dasharray': { + type: 'array', + value: 'number', + doc: "Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.", + minimum: 0, + transition: !0, + units: 'line widths', + requires: [{ '!': 'line-pattern' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': {}, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'cross-faded', + }, + 'line-pattern': { + type: 'resolvedImage', + transition: !0, + doc: 'Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.49.0', + android: '6.5.0', + macos: '0.11.0', + ios: '4.4.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + 'property-type': 'cross-faded-data-driven', + }, + 'line-gradient': { + type: 'color', + doc: 'Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `"lineMetrics": true`.', + transition: !1, + requires: [ + { '!': 'line-dasharray' }, + { '!': 'line-pattern' }, + { source: 'geojson', has: { lineMetrics: !0 } }, + ], + 'sdk-support': { + 'basic functionality': { + js: '0.45.0', + android: '6.5.0', + ios: '4.4.0', + macos: '0.11.0', + }, + 'data-driven styling': {}, + }, + expression: { interpolated: !0, parameters: ['line-progress'] }, + 'property-type': 'color-ramp', + }, + }, + paint_circle: { + 'circle-radius': { + type: 'number', + default: 5, + minimum: 0, + transition: !0, + units: 'pixels', + doc: 'Circle radius.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.18.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'circle-color': { + type: 'color', + default: '#000000', + doc: 'The fill color of the circle.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.18.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'circle-blur': { + type: 'number', + default: 0, + doc: 'Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.20.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'circle-opacity': { + type: 'number', + doc: 'The opacity at which the circle will be drawn.', + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.20.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'circle-translate': { + type: 'array', + value: 'number', + length: 2, + default: [0, 0], + transition: !0, + units: 'pixels', + doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.", + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'circle-translate-anchor': { + type: 'enum', + values: { + map: { doc: 'The circle is translated relative to the map.' }, + viewport: { + doc: 'The circle is translated relative to the viewport.', + }, + }, + doc: 'Controls the frame of reference for `circle-translate`.', + default: 'map', + requires: ['circle-translate'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'circle-pitch-scale': { + type: 'enum', + values: { + map: { + doc: 'Circles are scaled according to their apparent distance to the camera.', + }, + viewport: { doc: 'Circles are not scaled.' }, + }, + default: 'map', + doc: 'Controls the scaling behavior of the circle when the map is pitched.', + 'sdk-support': { + 'basic functionality': { + js: '0.21.0', + android: '4.2.0', + ios: '3.4.0', + macos: '0.2.1', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'circle-pitch-alignment': { + type: 'enum', + values: { + map: { doc: 'The circle is aligned to the plane of the map.' }, + viewport: { + doc: 'The circle is aligned to the plane of the viewport.', + }, + }, + default: 'viewport', + doc: 'Orientation of circle when map is pitched.', + 'sdk-support': { + 'basic functionality': { + js: '0.39.0', + android: '5.2.0', + ios: '3.7.0', + macos: '0.6.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'circle-stroke-width': { + type: 'number', + default: 0, + minimum: 0, + transition: !0, + units: 'pixels', + doc: "The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.", + 'sdk-support': { + 'basic functionality': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'circle-stroke-color': { + type: 'color', + default: '#000000', + doc: 'The stroke color of the circle.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'circle-stroke-opacity': { + type: 'number', + doc: "The opacity of the circle's stroke.", + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + 'data-driven styling': { + js: '0.29.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + }, + paint_heatmap: { + 'heatmap-radius': { + type: 'number', + default: 30, + minimum: 1, + transition: !0, + units: 'pixels', + doc: 'Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed.', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + 'data-driven styling': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'heatmap-weight': { + type: 'number', + default: 1, + minimum: 0, + transition: !1, + doc: 'A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + 'data-driven styling': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'heatmap-intensity': { + type: 'number', + default: 1, + minimum: 0, + transition: !0, + doc: 'Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.', + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'heatmap-color': { + type: 'color', + default: [ + 'interpolate', + ['linear'], + ['heatmap-density'], + 0, + 'rgba(0, 0, 255, 0)', + 0.1, + 'royalblue', + 0.3, + 'cyan', + 0.5, + 'lime', + 0.7, + 'yellow', + 1, + 'red', + ], + doc: 'Defines the color of each pixel based on its density value in a heatmap. Should be an expression that uses `["heatmap-density"]` as input.', + transition: !1, + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + 'data-driven styling': {}, + }, + expression: { interpolated: !0, parameters: ['heatmap-density'] }, + 'property-type': 'color-ramp', + }, + 'heatmap-opacity': { + type: 'number', + doc: 'The global opacity at which the heatmap layer will be drawn.', + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.41.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + }, + paint_symbol: { + 'icon-opacity': { + doc: 'The opacity at which the icon will be drawn.', + type: 'number', + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'icon-color': { + type: 'color', + default: '#000000', + transition: !0, + doc: 'The color of the icon. This can only be used with sdf icons.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'icon-halo-color': { + type: 'color', + default: 'rgba(0, 0, 0, 0)', + transition: !0, + doc: "The color of the icon's halo. Icon halos can only be used with SDF icons.", + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'icon-halo-width': { + type: 'number', + default: 0, + minimum: 0, + transition: !0, + units: 'pixels', + doc: 'Distance of halo to the icon outline.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'icon-halo-blur': { + type: 'number', + default: 0, + minimum: 0, + transition: !0, + units: 'pixels', + doc: 'Fade out the halo towards the outside.', + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'icon-translate': { + type: 'array', + value: 'number', + length: 2, + default: [0, 0], + transition: !0, + units: 'pixels', + doc: "Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.", + requires: ['icon-image'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'icon-translate-anchor': { + type: 'enum', + values: { + map: { doc: 'Icons are translated relative to the map.' }, + viewport: { + doc: 'Icons are translated relative to the viewport.', + }, + }, + doc: 'Controls the frame of reference for `icon-translate`.', + default: 'map', + requires: ['icon-image', 'icon-translate'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-opacity': { + type: 'number', + doc: 'The opacity at which the text will be drawn.', + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'text-color': { + type: 'color', + doc: 'The color with which the text will be drawn.', + default: '#000000', + transition: !0, + overridable: !0, + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'text-halo-color': { + type: 'color', + default: 'rgba(0, 0, 0, 0)', + transition: !0, + doc: "The color of the text's halo, which helps it stand out from backgrounds.", + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'text-halo-width': { + type: 'number', + default: 0, + minimum: 0, + transition: !0, + units: 'pixels', + doc: 'Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.', + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'text-halo-blur': { + type: 'number', + default: 0, + minimum: 0, + transition: !0, + units: 'pixels', + doc: "The halo's fadeout distance towards the outside.", + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': { + js: '0.33.0', + android: '5.0.0', + ios: '3.5.0', + macos: '0.4.0', + }, + }, + expression: { + interpolated: !0, + parameters: ['zoom', 'feature', 'feature-state'], + }, + 'property-type': 'data-driven', + }, + 'text-translate': { + type: 'array', + value: 'number', + length: 2, + default: [0, 0], + transition: !0, + units: 'pixels', + doc: "Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.", + requires: ['text-field'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'text-translate-anchor': { + type: 'enum', + values: { + map: { doc: 'The text is translated relative to the map.' }, + viewport: { + doc: 'The text is translated relative to the viewport.', + }, + }, + doc: 'Controls the frame of reference for `text-translate`.', + default: 'map', + requires: ['text-field', 'text-translate'], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + }, + paint_raster: { + 'raster-opacity': { + type: 'number', + doc: 'The opacity at which the image will be drawn.', + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'raster-hue-rotate': { + type: 'number', + default: 0, + period: 360, + transition: !0, + units: 'degrees', + doc: 'Rotates hues around the color wheel.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'raster-brightness-min': { + type: 'number', + doc: 'Increase or reduce the brightness of the image. The value is the minimum brightness.', + default: 0, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'raster-brightness-max': { + type: 'number', + doc: 'Increase or reduce the brightness of the image. The value is the maximum brightness.', + default: 1, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'raster-saturation': { + type: 'number', + doc: 'Increase or reduce the saturation of the image.', + default: 0, + minimum: -1, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'raster-contrast': { + type: 'number', + doc: 'Increase or reduce the contrast of the image.', + default: 0, + minimum: -1, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'raster-resampling': { + type: 'enum', + doc: 'The resampling/interpolation method to use for overscaling, also known as texture magnification filter', + values: { + linear: { + doc: '(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled', + }, + nearest: { + doc: 'Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled', + }, + }, + default: 'linear', + 'sdk-support': { + 'basic functionality': { + js: '0.47.0', + android: '6.3.0', + ios: '4.2.0', + macos: '0.9.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'raster-fade-duration': { + type: 'number', + default: 300, + minimum: 0, + transition: !1, + units: 'milliseconds', + doc: 'Fade duration when a new tile is added.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + }, + paint_hillshade: { + 'hillshade-illumination-direction': { + type: 'number', + default: 335, + minimum: 0, + maximum: 359, + doc: 'The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.', + transition: !1, + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'hillshade-illumination-anchor': { + type: 'enum', + values: { + map: { + doc: 'The hillshade illumination is relative to the north direction.', + }, + viewport: { + doc: 'The hillshade illumination is relative to the top of the viewport.', + }, + }, + default: 'viewport', + doc: 'Direction of light source when map is rotated.', + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'hillshade-exaggeration': { + type: 'number', + doc: 'Intensity of the hillshade', + default: 0.5, + minimum: 0, + maximum: 1, + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'hillshade-shadow-color': { + type: 'color', + default: '#000000', + doc: 'The shading color of areas that face away from the light source.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'hillshade-highlight-color': { + type: 'color', + default: '#FFFFFF', + doc: 'The shading color of areas that faces towards the light source.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'hillshade-accent-color': { + type: 'color', + default: '#000000', + doc: 'The shading color used to accentuate rugged terrain like sharp cliffs and gorges.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.43.0', + android: '6.0.0', + ios: '4.0.0', + macos: '0.7.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + }, + paint_background: { + 'background-color': { + type: 'color', + default: '#000000', + doc: 'The color with which the background will be drawn.', + transition: !0, + requires: [{ '!': 'background-pattern' }], + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'background-pattern': { + type: 'resolvedImage', + transition: !0, + doc: 'Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.', + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + 'data-driven styling': {}, + }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'cross-faded', + }, + 'background-opacity': { + type: 'number', + default: 1, + minimum: 0, + maximum: 1, + doc: 'The opacity at which the background will be drawn.', + transition: !0, + 'sdk-support': { + 'basic functionality': { + js: '0.10.0', + android: '2.0.1', + ios: '2.0.0', + macos: '0.1.0', + }, + }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + }, + paint_sky: { + 'sky-type': { + type: 'enum', + values: { + gradient: { + doc: 'Renders the sky with a gradient that can be configured with `sky-gradient-radius` and `sky-gradient`.', + }, + atmosphere: { + doc: 'Renders the sky with a simulated atmospheric scattering algorithm, the sun direction can be attached to the light position or explicitly set through `sky-atmosphere-sun`.', + }, + }, + default: 'atmosphere', + doc: 'The type of the sky', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'sky-atmosphere-sun': { + type: 'array', + value: 'number', + length: 2, + transition: !1, + doc: 'Position of the sun center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the sun relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the sun, where 0° is directly above, at zenith, and 90° at the horizon. When this property is ommitted, the sun center is directly inherited from the light position.', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + requires: [{ 'sky-type': 'atmosphere' }], + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'sky-atmosphere-sun-intensity': { + type: 'number', + requires: [{ 'sky-type': 'atmosphere' }], + default: 10, + minimum: 0, + maximum: 100, + transition: !1, + doc: 'Intensity of the sun as a light source in the atmosphere (on a scale from 0 to a 100). Setting higher values will brighten up the sky.', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + 'property-type': 'data-constant', + }, + 'sky-gradient-center': { + type: 'array', + requires: [{ 'sky-type': 'gradient' }], + value: 'number', + default: [0, 0], + length: 2, + transition: !1, + doc: 'Position of the gradient center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the gradient center relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the gradient center, where 0° is directly above, at zenith, and 90° at the horizon.', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'sky-gradient-radius': { + type: 'number', + requires: [{ 'sky-type': 'gradient' }], + default: 90, + minimum: 0, + maximum: 180, + transition: !1, + doc: 'The angular distance (measured in degrees) from `sky-gradient-center` up to which the gradient extends. A value of 180 causes the gradient to wrap around to the opposite direction from `sky-gradient-center`.', + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + expression: { interpolated: !1, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + 'sky-gradient': { + type: 'color', + default: [ + 'interpolate', + ['linear'], + ['sky-radial-progress'], + 0.8, + '#87ceeb', + 1, + 'white', + ], + doc: 'Defines a radial color gradient with which to color the sky. The color values can be interpolated with an expression using `sky-radial-progress`. The range [0, 1] for the interpolant covers a radial distance (in degrees) of [0, `sky-gradient-radius`] centered at the position specified by `sky-gradient-center`.', + transition: !1, + requires: [{ 'sky-type': 'gradient' }], + 'sdk-support': { + 'basic functionality': { js: '2.0.0' }, + 'data-driven styling': {}, + }, + expression: { + interpolated: !0, + parameters: ['sky-radial-progress'], + }, + 'property-type': 'color-ramp', + }, + 'sky-atmosphere-halo-color': { + type: 'color', + default: 'white', + doc: 'A color applied to the atmosphere sun halo. The alpha channel describes how strongly the sun halo is represented in an atmosphere sky layer.', + transition: !1, + requires: [{ 'sky-type': 'atmosphere' }], + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + 'property-type': 'data-constant', + }, + 'sky-atmosphere-color': { + type: 'color', + default: 'white', + doc: 'A color used to tweak the main atmospheric scattering coefficients. Using white applies the default coefficients giving the natural blue color to the atmosphere. This color affects how heavily the corresponding wavelength is represented during scattering. The alpha channel describes the density of the atmosphere, with 1 maximum density and 0 no density.', + transition: !1, + requires: [{ 'sky-type': 'atmosphere' }], + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + 'property-type': 'data-constant', + }, + 'sky-opacity': { + type: 'number', + default: 1, + minimum: 0, + maximum: 1, + doc: 'The opacity of the entire sky layer.', + transition: !0, + 'sdk-support': { 'basic functionality': { js: '2.0.0' } }, + expression: { interpolated: !0, parameters: ['zoom'] }, + 'property-type': 'data-constant', + }, + }, + transition: { + duration: { + type: 'number', + default: 300, + minimum: 0, + units: 'milliseconds', + doc: 'Time allotted for transitions to complete.', + }, + delay: { + type: 'number', + default: 0, + minimum: 0, + units: 'milliseconds', + doc: 'Length of time before a transition begins.', + }, + }, + 'property-type': { + 'data-driven': { + type: 'property-type', + doc: 'Property is interpolable and can be represented using a property expression.', + }, + 'cross-faded': { + type: 'property-type', + doc: 'Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms.', + }, + 'cross-faded-data-driven': { + type: 'property-type', + doc: 'Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression.', + }, + 'color-ramp': { + type: 'property-type', + doc: 'Property should be specified using a color ramp from which the output color can be sampled based on a property calculation.', + }, + 'data-constant': { + type: 'property-type', + doc: 'Property is interpolable but cannot be represented using a property expression.', + }, + constant: { + type: 'property-type', + doc: 'Property is constant across all zoom levels and property values.', + }, + }, + promoteId: { + '*': { + type: 'string', + doc: 'A name of a feature property to use as ID for feature state.', + }, + }, + } + var o = + 'undefined' != typeof globalThis + ? globalThis + : 'undefined' != typeof window + ? window + : void 0 !== t + ? t + : 'undefined' != typeof self + ? self + : {} + function a() { + throw new Error( + 'Dynamic requires are not currently supported by rollup-plugin-commonjs', + ) + } + function s(t, e) { + return t((e = { exports: {} }), e.exports), e.exports + } + var l = s(function (t, e) { + !(function (r) { + var n = e && !e.nodeType && e, + i = t && !t.nodeType && t, + a = 'object' == typeof o && o + ;(a.global !== a && a.window !== a && a.self !== a) || (r = a) + var s, + l, + u = 2147483647, + c = /^xn--/, + h = /[^\x20-\x7E]/, + p = /[\x2E\u3002\uFF0E\uFF61]/g, + f = { + overflow: 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input', + }, + d = Math.floor, + g = String.fromCharCode + function y(t) { + throw RangeError(f[t]) + } + function m(t, e) { + for (var r = t.length, n = []; r--; ) n[r] = e(t[r]) + return n + } + function v(t, e) { + var r = t.split('@'), + n = '' + return ( + r.length > 1 && ((n = r[0] + '@'), (t = r[1])), + n + m((t = t.replace(p, '.')).split('.'), e).join('.') + ) + } + function _(t) { + for (var e, r, n = [], i = 0, o = t.length; i < o; ) + (e = t.charCodeAt(i++)) >= 55296 && e <= 56319 && i < o + ? 56320 == (64512 & (r = t.charCodeAt(i++))) + ? n.push(((1023 & e) << 10) + (1023 & r) + 65536) + : (n.push(e), i--) + : n.push(e) + return n + } + function b(t) { + return m(t, function (t) { + var e = '' + return ( + t > 65535 && + ((e += g((((t -= 65536) >>> 10) & 1023) | 55296)), + (t = 56320 | (1023 & t))), + (e += g(t)) + ) + }).join('') + } + function x(t, e) { + return t + 22 + 75 * (t < 26) - ((0 != e) << 5) + } + function w(t, e, r) { + var n = 0 + for ( + t = r ? d(t / 700) : t >> 1, t += d(t / e); + t > 455; + n += 36 + ) + t = d(t / 35) + return d(n + (36 * t) / (t + 38)) + } + function S(t) { + var e, + r, + n, + i, + o, + a, + s, + l, + c, + h, + p, + f = [], + g = t.length, + m = 0, + v = 128, + _ = 72 + for ((r = t.lastIndexOf('-')) < 0 && (r = 0), n = 0; n < r; ++n) + t.charCodeAt(n) >= 128 && y('not-basic'), + f.push(t.charCodeAt(n)) + for (i = r > 0 ? r + 1 : 0; i < g; ) { + for ( + o = m, a = 1, s = 36; + i >= g && y('invalid-input'), + ((l = + (p = t.charCodeAt(i++)) - 48 < 10 + ? p - 22 + : p - 65 < 26 + ? p - 65 + : p - 97 < 26 + ? p - 97 + : 36) >= 36 || + l > d((u - m) / a)) && + y('overflow'), + (m += l * a), + !(l < (c = s <= _ ? 1 : s >= _ + 26 ? 26 : s - _)); + s += 36 + ) + a > d(u / (h = 36 - c)) && y('overflow'), (a *= h) + ;(_ = w(m - o, (e = f.length + 1), 0 == o)), + d(m / e) > u - v && y('overflow'), + (v += d(m / e)), + (m %= e), + f.splice(m++, 0, v) + } + return b(f) + } + function E(t) { + var e, + r, + n, + i, + o, + a, + s, + l, + c, + h, + p, + f, + m, + v, + b, + S = [] + for ( + f = (t = _(t)).length, e = 128, r = 0, o = 72, a = 0; + a < f; + ++a + ) + (p = t[a]) < 128 && S.push(g(p)) + for (n = i = S.length, i && S.push('-'); n < f; ) { + for (s = u, a = 0; a < f; ++a) + (p = t[a]) >= e && p < s && (s = p) + for ( + s - e > d((u - r) / (m = n + 1)) && y('overflow'), + r += (s - e) * m, + e = s, + a = 0; + a < f; + ++a + ) + if (((p = t[a]) < e && ++r > u && y('overflow'), p == e)) { + for ( + l = r, c = 36; + !(l < (h = c <= o ? 1 : c >= o + 26 ? 26 : c - o)); + c += 36 + ) + (b = l - h), + (v = 36 - h), + S.push(g(x(h + (b % v), 0))), + (l = d(b / v)) + S.push(g(x(l, 0))), (o = w(r, m, n == i)), (r = 0), ++n + } + ++r, ++e + } + return S.join('') + } + if ( + ((s = { + version: '1.3.2', + ucs2: { decode: _, encode: b }, + decode: S, + encode: E, + toASCII: function (t) { + return v(t, function (t) { + return h.test(t) ? 'xn--' + E(t) : t + }) + }, + toUnicode: function (t) { + return v(t, function (t) { + return c.test(t) ? S(t.slice(4).toLowerCase()) : t + }) + }, + }), + n && i) + ) + if (t.exports == n) i.exports = s + else for (l in s) s.hasOwnProperty(l) && (n[l] = s[l]) + else r.punycode = s + })(o) + }), + u = function (t) { + return 'string' == typeof t + }, + c = function (t) { + return 'object' == typeof t && null !== t + }, + h = function (t) { + return null === t + }, + p = function (t) { + return null == t + } + function f(t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + } + var d = function (t, e, r, n) { + ;(e = e || '&'), (r = r || '=') + var i = {} + if ('string' != typeof t || 0 === t.length) return i + var o = /\+/g + t = t.split(e) + var a = 1e3 + n && 'number' == typeof n.maxKeys && (a = n.maxKeys) + var s = t.length + a > 0 && s > a && (s = a) + for (var l = 0; l < s; ++l) { + var u, + c, + h, + p, + d = t[l].replace(o, '%20'), + g = d.indexOf(r) + g >= 0 + ? ((u = d.substr(0, g)), (c = d.substr(g + 1))) + : ((u = d), (c = '')), + (h = decodeURIComponent(u)), + (p = decodeURIComponent(c)), + f(i, h) + ? Array.isArray(i[h]) + ? i[h].push(p) + : (i[h] = [i[h], p]) + : (i[h] = p) + } + return i + }, + g = function (t) { + switch (typeof t) { + case 'string': + return t + case 'boolean': + return t ? 'true' : 'false' + case 'number': + return isFinite(t) ? t : '' + default: + return '' + } + }, + y = function (t, e, r, n) { + return ( + (e = e || '&'), + (r = r || '='), + null === t && (t = void 0), + 'object' == typeof t + ? Object.keys(t) + .map(function (n) { + var i = encodeURIComponent(g(n)) + r + return Array.isArray(t[n]) + ? t[n] + .map(function (t) { + return i + encodeURIComponent(g(t)) + }) + .join(e) + : i + encodeURIComponent(g(t[n])) + }) + .join(e) + : n + ? encodeURIComponent(g(n)) + r + encodeURIComponent(g(t)) + : '' + ) + }, + m = s(function (t, e) { + ;(e.decode = e.parse = d), (e.encode = e.stringify = y) + }) + m.decode, m.parse, m.encode, m.stringify + function v() { + ;(this.protocol = null), + (this.slashes = null), + (this.auth = null), + (this.host = null), + (this.port = null), + (this.hostname = null), + (this.hash = null), + (this.search = null), + (this.query = null), + (this.pathname = null), + (this.path = null), + (this.href = null) + } + var _ = /^([a-z0-9.+-]+:)/i, + b = /:[0-9]*$/, + x = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, + w = ['{', '}', '|', '\\', '^', '`'].concat([ + '<', + '>', + '"', + '`', + ' ', + '\r', + '\n', + '\t', + ]), + S = ["'"].concat(w), + E = ['%', '/', '?', ';', '#'].concat(S), + T = ['/', '?', '#'], + C = /^[+a-z0-9A-Z_-]{0,63}$/, + O = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, + P = { javascript: !0, 'javascript:': !0 }, + R = { javascript: !0, 'javascript:': !0 }, + I = { + http: !0, + https: !0, + ftp: !0, + gopher: !0, + file: !0, + 'http:': !0, + 'https:': !0, + 'ftp:': !0, + 'gopher:': !0, + 'file:': !0, + } + function L(t, e, r) { + if (t && c(t) && t instanceof v) return t + var n = new v() + return n.parse(t, e, r), n + } + ;(v.prototype.parse = function (t, e, r) { + if (!u(t)) + throw new TypeError( + "Parameter 'url' must be a string, not " + typeof t, + ) + var n = t.indexOf('?'), + i = -1 !== n && n < t.indexOf('#') ? '?' : '#', + o = t.split(i) + o[0] = o[0].replace(/\\/g, '/') + var a = (t = o.join(i)) + if (((a = a.trim()), !r && 1 === t.split('#').length)) { + var s = x.exec(a) + if (s) + return ( + (this.path = a), + (this.href = a), + (this.pathname = s[1]), + s[2] + ? ((this.search = s[2]), + (this.query = e + ? m.parse(this.search.substr(1)) + : this.search.substr(1))) + : e && ((this.search = ''), (this.query = {})), + this + ) + } + var c = _.exec(a) + if (c) { + var h = (c = c[0]).toLowerCase() + ;(this.protocol = h), (a = a.substr(c.length)) + } + if (r || c || a.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var p = '//' === a.substr(0, 2) + !p || (c && R[c]) || ((a = a.substr(2)), (this.slashes = !0)) + } + if (!R[c] && (p || (c && !I[c]))) { + for (var f, d, g = -1, y = 0; y < T.length; y++) { + ;-1 !== (v = a.indexOf(T[y])) && (-1 === g || v < g) && (g = v) + } + ;-1 !== + (d = -1 === g ? a.lastIndexOf('@') : a.lastIndexOf('@', g)) && + ((f = a.slice(0, d)), + (a = a.slice(d + 1)), + (this.auth = decodeURIComponent(f))), + (g = -1) + for (y = 0; y < E.length; y++) { + var v + ;-1 !== (v = a.indexOf(E[y])) && (-1 === g || v < g) && (g = v) + } + ;-1 === g && (g = a.length), + (this.host = a.slice(0, g)), + (a = a.slice(g)), + this.parseHost(), + (this.hostname = this.hostname || '') + var b = + '[' === this.hostname[0] && + ']' === this.hostname[this.hostname.length - 1] + if (!b) + for ( + var w = this.hostname.split(/\./), L = ((y = 0), w.length); + y < L; + y++ + ) { + var M = w[y] + if (M && !M.match(C)) { + for (var F = '', A = 0, k = M.length; A < k; A++) + M.charCodeAt(A) > 127 ? (F += 'x') : (F += M[A]) + if (!F.match(C)) { + var j = w.slice(0, y), + N = w.slice(y + 1), + D = M.match(O) + D && (j.push(D[1]), N.unshift(D[2])), + N.length && (a = '/' + N.join('.') + a), + (this.hostname = j.join('.')) + break + } + } + } + this.hostname.length > 255 + ? (this.hostname = '') + : (this.hostname = this.hostname.toLowerCase()), + b || (this.hostname = l.toASCII(this.hostname)) + var G = this.port ? ':' + this.port : '', + z = this.hostname || '' + ;(this.host = z + G), + (this.href += this.host), + b && + ((this.hostname = this.hostname.substr( + 1, + this.hostname.length - 2, + )), + '/' !== a[0] && (a = '/' + a)) + } + if (!P[h]) + for (y = 0, L = S.length; y < L; y++) { + var U = S[y] + if (-1 !== a.indexOf(U)) { + var B = encodeURIComponent(U) + B === U && (B = escape(U)), (a = a.split(U).join(B)) + } + } + var V = a.indexOf('#') + ;-1 !== V && ((this.hash = a.substr(V)), (a = a.slice(0, V))) + var Y = a.indexOf('?') + if ( + (-1 !== Y + ? ((this.search = a.substr(Y)), + (this.query = a.substr(Y + 1)), + e && (this.query = m.parse(this.query)), + (a = a.slice(0, Y))) + : e && ((this.search = ''), (this.query = {})), + a && (this.pathname = a), + I[h] && this.hostname && !this.pathname && (this.pathname = '/'), + this.pathname || this.search) + ) { + G = this.pathname || '' + var W = this.search || '' + this.path = G + W + } + return (this.href = this.format()), this + }), + (v.prototype.format = function () { + var t = this.auth || '' + t && + ((t = (t = encodeURIComponent(t)).replace(/%3A/i, ':')), + (t += '@')) + var e = this.protocol || '', + r = this.pathname || '', + n = this.hash || '', + i = !1, + o = '' + this.host + ? (i = t + this.host) + : this.hostname && + ((i = + t + + (-1 === this.hostname.indexOf(':') + ? this.hostname + : '[' + this.hostname + ']')), + this.port && (i += ':' + this.port)), + this.query && + c(this.query) && + Object.keys(this.query).length && + (o = m.stringify(this.query)) + var a = this.search || (o && '?' + o) || '' + return ( + e && ':' !== e.substr(-1) && (e += ':'), + this.slashes || ((!e || I[e]) && !1 !== i) + ? ((i = '//' + (i || '')), + r && '/' !== r.charAt(0) && (r = '/' + r)) + : i || (i = ''), + n && '#' !== n.charAt(0) && (n = '#' + n), + a && '?' !== a.charAt(0) && (a = '?' + a), + e + + i + + (r = r.replace(/[?#]/g, function (t) { + return encodeURIComponent(t) + })) + + (a = a.replace('#', '%23')) + + n + ) + }), + (v.prototype.resolve = function (t) { + return this.resolveObject(L(t, !1, !0)).format() + }), + (v.prototype.resolveObject = function (t) { + if (u(t)) { + var e = new v() + e.parse(t, !1, !0), (t = e) + } + for ( + var r = new v(), n = Object.keys(this), i = 0; + i < n.length; + i++ + ) { + var o = n[i] + r[o] = this[o] + } + if (((r.hash = t.hash), '' === t.href)) + return (r.href = r.format()), r + if (t.slashes && !t.protocol) { + for (var a = Object.keys(t), s = 0; s < a.length; s++) { + var l = a[s] + 'protocol' !== l && (r[l] = t[l]) + } + return ( + I[r.protocol] && + r.hostname && + !r.pathname && + (r.path = r.pathname = '/'), + (r.href = r.format()), + r + ) + } + if (t.protocol && t.protocol !== r.protocol) { + if (!I[t.protocol]) { + for (var c = Object.keys(t), f = 0; f < c.length; f++) { + var d = c[f] + r[d] = t[d] + } + return (r.href = r.format()), r + } + if (((r.protocol = t.protocol), t.host || R[t.protocol])) + r.pathname = t.pathname + else { + for ( + var g = (t.pathname || '').split('/'); + g.length && !(t.host = g.shift()); + + ); + t.host || (t.host = ''), + t.hostname || (t.hostname = ''), + '' !== g[0] && g.unshift(''), + g.length < 2 && g.unshift(''), + (r.pathname = g.join('/')) + } + if ( + ((r.search = t.search), + (r.query = t.query), + (r.host = t.host || ''), + (r.auth = t.auth), + (r.hostname = t.hostname || t.host), + (r.port = t.port), + r.pathname || r.search) + ) { + var y = r.pathname || '', + m = r.search || '' + r.path = y + m + } + return ( + (r.slashes = r.slashes || t.slashes), (r.href = r.format()), r + ) + } + var _ = r.pathname && '/' === r.pathname.charAt(0), + b = t.host || (t.pathname && '/' === t.pathname.charAt(0)), + x = b || _ || (r.host && t.pathname), + w = x, + S = (r.pathname && r.pathname.split('/')) || [], + E = + ((g = (t.pathname && t.pathname.split('/')) || []), + r.protocol && !I[r.protocol]) + if ( + (E && + ((r.hostname = ''), + (r.port = null), + r.host && ('' === S[0] ? (S[0] = r.host) : S.unshift(r.host)), + (r.host = ''), + t.protocol && + ((t.hostname = null), + (t.port = null), + t.host && ('' === g[0] ? (g[0] = t.host) : g.unshift(t.host)), + (t.host = null)), + (x = x && ('' === g[0] || '' === S[0]))), + b) + ) + (r.host = t.host || '' === t.host ? t.host : r.host), + (r.hostname = + t.hostname || '' === t.hostname ? t.hostname : r.hostname), + (r.search = t.search), + (r.query = t.query), + (S = g) + else if (g.length) + S || (S = []), + S.pop(), + (S = S.concat(g)), + (r.search = t.search), + (r.query = t.query) + else if (!p(t.search)) { + if (E) + (r.hostname = r.host = S.shift()), + (L = + !!(r.host && r.host.indexOf('@') > 0) && + r.host.split('@')) && + ((r.auth = L.shift()), (r.host = r.hostname = L.shift())) + return ( + (r.search = t.search), + (r.query = t.query), + (h(r.pathname) && h(r.search)) || + (r.path = + (r.pathname ? r.pathname : '') + + (r.search ? r.search : '')), + (r.href = r.format()), + r + ) + } + if (!S.length) + return ( + (r.pathname = null), + r.search ? (r.path = '/' + r.search) : (r.path = null), + (r.href = r.format()), + r + ) + for ( + var T = S.slice(-1)[0], + C = + ((r.host || t.host || S.length > 1) && + ('.' === T || '..' === T)) || + '' === T, + O = 0, + P = S.length; + P >= 0; + P-- + ) + '.' === (T = S[P]) + ? S.splice(P, 1) + : '..' === T + ? (S.splice(P, 1), O++) + : O && (S.splice(P, 1), O--) + if (!x && !w) for (; O--; O) S.unshift('..') + !x || + '' === S[0] || + (S[0] && '/' === S[0].charAt(0)) || + S.unshift(''), + C && '/' !== S.join('/').substr(-1) && S.push('') + var L, + M = '' === S[0] || (S[0] && '/' === S[0].charAt(0)) + E && + ((r.hostname = r.host = M ? '' : S.length ? S.shift() : ''), + (L = + !!(r.host && r.host.indexOf('@') > 0) && r.host.split('@')) && + ((r.auth = L.shift()), (r.host = r.hostname = L.shift()))) + return ( + (x = x || (r.host && S.length)) && !M && S.unshift(''), + S.length + ? (r.pathname = S.join('/')) + : ((r.pathname = null), (r.path = null)), + (h(r.pathname) && h(r.search)) || + (r.path = + (r.pathname ? r.pathname : '') + (r.search ? r.search : '')), + (r.auth = t.auth || r.auth), + (r.slashes = r.slashes || t.slashes), + (r.href = r.format()), + r + ) + }), + (v.prototype.parseHost = function () { + var t = this.host, + e = b.exec(t) + e && + (':' !== (e = e[0]) && (this.port = e.substr(1)), + (t = t.substr(0, t.length - e.length))), + t && (this.hostname = t) + }) + function M(t, ...e) { + for (const r of e) for (const e in r) t[e] = r[e] + return t + } + class F extends Error { + constructor(t, e) { + super(e), (this.message = e), (this.key = t) + } + } + class A { + constructor(t, e = []) { + ;(this.parent = t), (this.bindings = {}) + for (const [t, r] of e) this.bindings[t] = r + } + concat(t) { + return new A(this, t) + } + get(t) { + if (this.bindings[t]) return this.bindings[t] + if (this.parent) return this.parent.get(t) + throw new Error(t + ' not found in scope.') + } + has(t) { + return !!this.bindings[t] || (!!this.parent && this.parent.has(t)) + } + } + const k = { kind: 'null' }, + j = { kind: 'number' }, + N = { kind: 'string' }, + D = { kind: 'boolean' }, + G = { kind: 'color' }, + z = { kind: 'object' }, + U = { kind: 'value' }, + B = { kind: 'collator' }, + V = { kind: 'formatted' }, + Y = { kind: 'resolvedImage' } + function W(t, e) { + return { kind: 'array', itemType: t, N: e } + } + function q(t) { + if ('array' === t.kind) { + const e = q(t.itemType) + return 'number' == typeof t.N + ? `array<${e}, ${t.N}>` + : 'value' === t.itemType.kind + ? 'array' + : `array<${e}>` + } + return t.kind + } + const X = [k, j, N, D, G, V, z, W(U), Y] + function Z(t, e) { + if ('error' === e.kind) return null + if ('array' === t.kind) { + if ( + 'array' === e.kind && + ((0 === e.N && 'value' === e.itemType.kind) || + !Z(t.itemType, e.itemType)) && + ('number' != typeof t.N || t.N === e.N) + ) + return null + } else { + if (t.kind === e.kind) return null + if ('value' === t.kind) for (const t of X) if (!Z(t, e)) return null + } + return `Expected ${q(t)} but found ${q(e)} instead.` + } + function K(t, e) { + return e.some((e) => e.kind === t.kind) + } + function H(t, e) { + return e.some((e) => + 'null' === e + ? null === t + : 'array' === e + ? Array.isArray(t) + : 'object' === e + ? t && !Array.isArray(t) && 'object' == typeof t + : e === typeof t, + ) + } + var $ = s(function (t, e) { + var r = { + transparent: [0, 0, 0, 0], + aliceblue: [240, 248, 255, 1], + antiquewhite: [250, 235, 215, 1], + aqua: [0, 255, 255, 1], + aquamarine: [127, 255, 212, 1], + azure: [240, 255, 255, 1], + beige: [245, 245, 220, 1], + bisque: [255, 228, 196, 1], + black: [0, 0, 0, 1], + blanchedalmond: [255, 235, 205, 1], + blue: [0, 0, 255, 1], + blueviolet: [138, 43, 226, 1], + brown: [165, 42, 42, 1], + burlywood: [222, 184, 135, 1], + cadetblue: [95, 158, 160, 1], + chartreuse: [127, 255, 0, 1], + chocolate: [210, 105, 30, 1], + coral: [255, 127, 80, 1], + cornflowerblue: [100, 149, 237, 1], + cornsilk: [255, 248, 220, 1], + crimson: [220, 20, 60, 1], + cyan: [0, 255, 255, 1], + darkblue: [0, 0, 139, 1], + darkcyan: [0, 139, 139, 1], + darkgoldenrod: [184, 134, 11, 1], + darkgray: [169, 169, 169, 1], + darkgreen: [0, 100, 0, 1], + darkgrey: [169, 169, 169, 1], + darkkhaki: [189, 183, 107, 1], + darkmagenta: [139, 0, 139, 1], + darkolivegreen: [85, 107, 47, 1], + darkorange: [255, 140, 0, 1], + darkorchid: [153, 50, 204, 1], + darkred: [139, 0, 0, 1], + darksalmon: [233, 150, 122, 1], + darkseagreen: [143, 188, 143, 1], + darkslateblue: [72, 61, 139, 1], + darkslategray: [47, 79, 79, 1], + darkslategrey: [47, 79, 79, 1], + darkturquoise: [0, 206, 209, 1], + darkviolet: [148, 0, 211, 1], + deeppink: [255, 20, 147, 1], + deepskyblue: [0, 191, 255, 1], + dimgray: [105, 105, 105, 1], + dimgrey: [105, 105, 105, 1], + dodgerblue: [30, 144, 255, 1], + firebrick: [178, 34, 34, 1], + floralwhite: [255, 250, 240, 1], + forestgreen: [34, 139, 34, 1], + fuchsia: [255, 0, 255, 1], + gainsboro: [220, 220, 220, 1], + ghostwhite: [248, 248, 255, 1], + gold: [255, 215, 0, 1], + goldenrod: [218, 165, 32, 1], + gray: [128, 128, 128, 1], + green: [0, 128, 0, 1], + greenyellow: [173, 255, 47, 1], + grey: [128, 128, 128, 1], + honeydew: [240, 255, 240, 1], + hotpink: [255, 105, 180, 1], + indianred: [205, 92, 92, 1], + indigo: [75, 0, 130, 1], + ivory: [255, 255, 240, 1], + khaki: [240, 230, 140, 1], + lavender: [230, 230, 250, 1], + lavenderblush: [255, 240, 245, 1], + lawngreen: [124, 252, 0, 1], + lemonchiffon: [255, 250, 205, 1], + lightblue: [173, 216, 230, 1], + lightcoral: [240, 128, 128, 1], + lightcyan: [224, 255, 255, 1], + lightgoldenrodyellow: [250, 250, 210, 1], + lightgray: [211, 211, 211, 1], + lightgreen: [144, 238, 144, 1], + lightgrey: [211, 211, 211, 1], + lightpink: [255, 182, 193, 1], + lightsalmon: [255, 160, 122, 1], + lightseagreen: [32, 178, 170, 1], + lightskyblue: [135, 206, 250, 1], + lightslategray: [119, 136, 153, 1], + lightslategrey: [119, 136, 153, 1], + lightsteelblue: [176, 196, 222, 1], + lightyellow: [255, 255, 224, 1], + lime: [0, 255, 0, 1], + limegreen: [50, 205, 50, 1], + linen: [250, 240, 230, 1], + magenta: [255, 0, 255, 1], + maroon: [128, 0, 0, 1], + mediumaquamarine: [102, 205, 170, 1], + mediumblue: [0, 0, 205, 1], + mediumorchid: [186, 85, 211, 1], + mediumpurple: [147, 112, 219, 1], + mediumseagreen: [60, 179, 113, 1], + mediumslateblue: [123, 104, 238, 1], + mediumspringgreen: [0, 250, 154, 1], + mediumturquoise: [72, 209, 204, 1], + mediumvioletred: [199, 21, 133, 1], + midnightblue: [25, 25, 112, 1], + mintcream: [245, 255, 250, 1], + mistyrose: [255, 228, 225, 1], + moccasin: [255, 228, 181, 1], + navajowhite: [255, 222, 173, 1], + navy: [0, 0, 128, 1], + oldlace: [253, 245, 230, 1], + olive: [128, 128, 0, 1], + olivedrab: [107, 142, 35, 1], + orange: [255, 165, 0, 1], + orangered: [255, 69, 0, 1], + orchid: [218, 112, 214, 1], + palegoldenrod: [238, 232, 170, 1], + palegreen: [152, 251, 152, 1], + paleturquoise: [175, 238, 238, 1], + palevioletred: [219, 112, 147, 1], + papayawhip: [255, 239, 213, 1], + peachpuff: [255, 218, 185, 1], + peru: [205, 133, 63, 1], + pink: [255, 192, 203, 1], + plum: [221, 160, 221, 1], + powderblue: [176, 224, 230, 1], + purple: [128, 0, 128, 1], + rebeccapurple: [102, 51, 153, 1], + red: [255, 0, 0, 1], + rosybrown: [188, 143, 143, 1], + royalblue: [65, 105, 225, 1], + saddlebrown: [139, 69, 19, 1], + salmon: [250, 128, 114, 1], + sandybrown: [244, 164, 96, 1], + seagreen: [46, 139, 87, 1], + seashell: [255, 245, 238, 1], + sienna: [160, 82, 45, 1], + silver: [192, 192, 192, 1], + skyblue: [135, 206, 235, 1], + slateblue: [106, 90, 205, 1], + slategray: [112, 128, 144, 1], + slategrey: [112, 128, 144, 1], + snow: [255, 250, 250, 1], + springgreen: [0, 255, 127, 1], + steelblue: [70, 130, 180, 1], + tan: [210, 180, 140, 1], + teal: [0, 128, 128, 1], + thistle: [216, 191, 216, 1], + tomato: [255, 99, 71, 1], + turquoise: [64, 224, 208, 1], + violet: [238, 130, 238, 1], + wheat: [245, 222, 179, 1], + white: [255, 255, 255, 1], + whitesmoke: [245, 245, 245, 1], + yellow: [255, 255, 0, 1], + yellowgreen: [154, 205, 50, 1], + } + function n(t) { + return (t = Math.round(t)) < 0 ? 0 : t > 255 ? 255 : t + } + function i(t) { + return t < 0 ? 0 : t > 1 ? 1 : t + } + function o(t) { + return '%' === t[t.length - 1] + ? n((parseFloat(t) / 100) * 255) + : n(parseInt(t)) + } + function a(t) { + return '%' === t[t.length - 1] + ? i(parseFloat(t) / 100) + : i(parseFloat(t)) + } + function s(t, e, r) { + return ( + r < 0 ? (r += 1) : r > 1 && (r -= 1), + 6 * r < 1 + ? t + (e - t) * r * 6 + : 2 * r < 1 + ? e + : 3 * r < 2 + ? t + (e - t) * (2 / 3 - r) * 6 + : t + ) + } + try { + e.parseCSSColor = function (t) { + var e, + i = t.replace(/ /g, '').toLowerCase() + if (i in r) return r[i].slice() + if ('#' === i[0]) + return 4 === i.length + ? (e = parseInt(i.substr(1), 16)) >= 0 && e <= 4095 + ? [ + ((3840 & e) >> 4) | ((3840 & e) >> 8), + (240 & e) | ((240 & e) >> 4), + (15 & e) | ((15 & e) << 4), + 1, + ] + : null + : 7 === i.length && + (e = parseInt(i.substr(1), 16)) >= 0 && + e <= 16777215 + ? [(16711680 & e) >> 16, (65280 & e) >> 8, 255 & e, 1] + : null + var l = i.indexOf('('), + u = i.indexOf(')') + if (-1 !== l && u + 1 === i.length) { + var c = i.substr(0, l), + h = i.substr(l + 1, u - (l + 1)).split(','), + p = 1 + switch (c) { + case 'rgba': + if (4 !== h.length) return null + p = a(h.pop()) + case 'rgb': + return 3 !== h.length + ? null + : [o(h[0]), o(h[1]), o(h[2]), p] + case 'hsla': + if (4 !== h.length) return null + p = a(h.pop()) + case 'hsl': + if (3 !== h.length) return null + var f = (((parseFloat(h[0]) % 360) + 360) % 360) / 360, + d = a(h[1]), + g = a(h[2]), + y = g <= 0.5 ? g * (d + 1) : g + d - g * d, + m = 2 * g - y + return [ + n(255 * s(m, y, f + 1 / 3)), + n(255 * s(m, y, f)), + n(255 * s(m, y, f - 1 / 3)), + p, + ] + default: + return null + } + } + return null + } + } catch (t) {} + }).parseCSSColor + class J { + constructor(t, e, r, n = 1) { + ;(this.r = t), (this.g = e), (this.b = r), (this.a = n) + } + static parse(t) { + if (!t) return + if (t instanceof J) return t + if ('string' != typeof t) return + const e = $(t) + return e + ? new J( + (e[0] / 255) * e[3], + (e[1] / 255) * e[3], + (e[2] / 255) * e[3], + e[3], + ) + : void 0 + } + toString() { + const [t, e, r, n] = this.toArray() + return `rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})` + } + toArray() { + const { r: t, g: e, b: r, a: n } = this + return 0 === n + ? [0, 0, 0, 0] + : [(255 * t) / n, (255 * e) / n, (255 * r) / n, n] + } + } + ;(J.black = new J(0, 0, 0, 1)), + (J.white = new J(1, 1, 1, 1)), + (J.transparent = new J(0, 0, 0, 0)), + (J.red = new J(1, 0, 0, 1)), + (J.blue = new J(0, 0, 1, 1)) + class Q { + constructor(t, e, r) { + ;(this.sensitivity = t + ? e + ? 'variant' + : 'case' + : e + ? 'accent' + : 'base'), + (this.locale = r), + (this.collator = new Intl.Collator( + this.locale ? this.locale : [], + { sensitivity: this.sensitivity, usage: 'search' }, + )) + } + compare(t, e) { + return this.collator.compare(t, e) + } + resolvedLocale() { + return new Intl.Collator( + this.locale ? this.locale : [], + ).resolvedOptions().locale + } + } + class tt { + constructor(t, e, r, n, i) { + ;(this.text = t), + (this.image = e), + (this.scale = r), + (this.fontStack = n), + (this.textColor = i) + } + } + class et { + constructor(t) { + this.sections = t + } + static fromString(t) { + return new et([new tt(t, null, null, null, null)]) + } + isEmpty() { + return ( + 0 === this.sections.length || + !this.sections.some( + (t) => + 0 !== t.text.length || (t.image && 0 !== t.image.name.length), + ) + ) + } + static factory(t) { + return t instanceof et ? t : et.fromString(t) + } + toString() { + return 0 === this.sections.length + ? '' + : this.sections.map((t) => t.text).join('') + } + serialize() { + const t = ['format'] + for (const e of this.sections) { + if (e.image) { + t.push(['image', e.image.name]) + continue + } + t.push(e.text) + const r = {} + e.fontStack && + (r['text-font'] = ['literal', e.fontStack.split(',')]), + e.scale && (r['font-scale'] = e.scale), + e.textColor && + (r['text-color'] = ['rgba'].concat(e.textColor.toArray())), + t.push(r) + } + return t + } + } + class rt { + constructor(t) { + ;(this.name = t.name), (this.available = t.available) + } + toString() { + return this.name + } + static fromString(t) { + return t ? new rt({ name: t, available: !1 }) : null + } + serialize() { + return ['image', this.name] + } + } + function nt(t, e, r, n) { + if ( + !( + 'number' == typeof t && + t >= 0 && + t <= 255 && + 'number' == typeof e && + e >= 0 && + e <= 255 && + 'number' == typeof r && + r >= 0 && + r <= 255 + ) + ) { + return `Invalid rgba value [${('number' == typeof n ? [t, e, r, n] : [t, e, r]).join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.` + } + return void 0 === n || ('number' == typeof n && n >= 0 && n <= 1) + ? null + : `Invalid rgba value [${[t, e, r, n].join(', ')}]: 'a' must be between 0 and 1.` + } + function it(t) { + if (null === t) return !0 + if ('string' == typeof t) return !0 + if ('boolean' == typeof t) return !0 + if ('number' == typeof t) return !0 + if (t instanceof J) return !0 + if (t instanceof Q) return !0 + if (t instanceof et) return !0 + if (t instanceof rt) return !0 + if (Array.isArray(t)) { + for (const e of t) if (!it(e)) return !1 + return !0 + } + if ('object' == typeof t) { + for (const e in t) if (!it(t[e])) return !1 + return !0 + } + return !1 + } + function ot(t) { + if (null === t) return k + if ('string' == typeof t) return N + if ('boolean' == typeof t) return D + if ('number' == typeof t) return j + if (t instanceof J) return G + if (t instanceof Q) return B + if (t instanceof et) return V + if (t instanceof rt) return Y + if (Array.isArray(t)) { + const e = t.length + let r + for (const e of t) { + const t = ot(e) + if (r) { + if (r === t) continue + r = U + break + } + r = t + } + return W(r || U, e) + } + return z + } + function at(t) { + const e = typeof t + return null === t + ? '' + : 'string' === e || 'number' === e || 'boolean' === e + ? String(t) + : t instanceof J || t instanceof et || t instanceof rt + ? t.toString() + : JSON.stringify(t) + } + class st { + constructor(t, e) { + ;(this.type = t), (this.value = e) + } + static parse(t, e) { + if (2 !== t.length) + return e.error( + `'literal' expression requires exactly one argument, but found ${t.length - 1} instead.`, + ) + if (!it(t[1])) return e.error('invalid value') + const r = t[1] + let n = ot(r) + const i = e.expectedType + return ( + 'array' !== n.kind || + 0 !== n.N || + !i || + 'array' !== i.kind || + ('number' == typeof i.N && 0 !== i.N) || + (n = i), + new st(n, r) + ) + } + evaluate() { + return this.value + } + eachChild() {} + outputDefined() { + return !0 + } + serialize() { + return 'array' === this.type.kind || 'object' === this.type.kind + ? ['literal', this.value] + : this.value instanceof J + ? ['rgba'].concat(this.value.toArray()) + : this.value instanceof et + ? this.value.serialize() + : this.value + } + } + class lt { + constructor(t) { + ;(this.name = 'ExpressionEvaluationError'), (this.message = t) + } + toJSON() { + return this.message + } + } + const ut = { string: N, number: j, boolean: D, object: z } + class ct { + constructor(t, e) { + ;(this.type = t), (this.args = e) + } + static parse(t, e) { + if (t.length < 2) return e.error('Expected at least one argument.') + let r, + n = 1 + const i = t[0] + if ('array' === i) { + let i, o + if (t.length > 2) { + const r = t[1] + if ('string' != typeof r || !(r in ut) || 'object' === r) + return e.error( + 'The item type argument of "array" must be one of string, number, boolean', + 1, + ) + ;(i = ut[r]), n++ + } else i = U + if (t.length > 3) { + if ( + null !== t[2] && + ('number' != typeof t[2] || + t[2] < 0 || + t[2] !== Math.floor(t[2])) + ) + return e.error( + 'The length argument to "array" must be a positive integer literal', + 2, + ) + ;(o = t[2]), n++ + } + r = W(i, o) + } else r = ut[i] + const o = [] + for (; n < t.length; n++) { + const r = e.parse(t[n], n, U) + if (!r) return null + o.push(r) + } + return new ct(r, o) + } + evaluate(t) { + for (let e = 0; e < this.args.length; e++) { + const r = this.args[e].evaluate(t) + if (!Z(this.type, ot(r))) return r + if (e === this.args.length - 1) + throw new lt( + `Expected value to be of type ${q(this.type)}, but found ${q(ot(r))} instead.`, + ) + } + return null + } + eachChild(t) { + this.args.forEach(t) + } + outputDefined() { + return this.args.every((t) => t.outputDefined()) + } + serialize() { + const t = this.type, + e = [t.kind] + if ('array' === t.kind) { + const r = t.itemType + if ( + 'string' === r.kind || + 'number' === r.kind || + 'boolean' === r.kind + ) { + e.push(r.kind) + const n = t.N + ;('number' == typeof n || this.args.length > 1) && e.push(n) + } + } + return e.concat(this.args.map((t) => t.serialize())) + } + } + class ht { + constructor(t) { + ;(this.type = V), (this.sections = t) + } + static parse(t, e) { + if (t.length < 2) return e.error('Expected at least one argument.') + const r = t[1] + if (!Array.isArray(r) && 'object' == typeof r) + return e.error('First argument must be an image or text section.') + const n = [] + let i = !1 + for (let r = 1; r <= t.length - 1; ++r) { + const o = t[r] + if (i && 'object' == typeof o && !Array.isArray(o)) { + i = !1 + let t = null + if ( + o['font-scale'] && + ((t = e.parse(o['font-scale'], 1, j)), !t) + ) + return null + let r = null + if ( + o['text-font'] && + ((r = e.parse(o['text-font'], 1, W(N))), !r) + ) + return null + let a = null + if ( + o['text-color'] && + ((a = e.parse(o['text-color'], 1, G)), !a) + ) + return null + const s = n[n.length - 1] + ;(s.scale = t), (s.font = r), (s.textColor = a) + } else { + const o = e.parse(t[r], 1, U) + if (!o) return null + const a = o.type.kind + if ( + 'string' !== a && + 'value' !== a && + 'null' !== a && + 'resolvedImage' !== a + ) + return e.error( + "Formatted text type must be 'string', 'value', 'image' or 'null'.", + ) + ;(i = !0), + n.push({ + content: o, + scale: null, + font: null, + textColor: null, + }) + } + } + return new ht(n) + } + evaluate(t) { + return new et( + this.sections.map((e) => { + const r = e.content.evaluate(t) + return ot(r) === Y + ? new tt('', r, null, null, null) + : new tt( + at(r), + null, + e.scale ? e.scale.evaluate(t) : null, + e.font ? e.font.evaluate(t).join(',') : null, + e.textColor ? e.textColor.evaluate(t) : null, + ) + }), + ) + } + eachChild(t) { + for (const e of this.sections) + t(e.content), + e.scale && t(e.scale), + e.font && t(e.font), + e.textColor && t(e.textColor) + } + outputDefined() { + return !1 + } + serialize() { + const t = ['format'] + for (const e of this.sections) { + t.push(e.content.serialize()) + const r = {} + e.scale && (r['font-scale'] = e.scale.serialize()), + e.font && (r['text-font'] = e.font.serialize()), + e.textColor && (r['text-color'] = e.textColor.serialize()), + t.push(r) + } + return t + } + } + class pt { + constructor(t) { + ;(this.type = Y), (this.input = t) + } + static parse(t, e) { + if (2 !== t.length) return e.error('Expected two arguments.') + const r = e.parse(t[1], 1, N) + return r ? new pt(r) : e.error('No image name provided.') + } + evaluate(t) { + const e = this.input.evaluate(t), + r = rt.fromString(e) + return ( + r && + t.availableImages && + (r.available = t.availableImages.indexOf(e) > -1), + r + ) + } + eachChild(t) { + t(this.input) + } + outputDefined() { + return !1 + } + serialize() { + return ['image', this.input.serialize()] + } + } + const ft = { + 'to-boolean': D, + 'to-color': G, + 'to-number': j, + 'to-string': N, + } + class dt { + constructor(t, e) { + ;(this.type = t), (this.args = e) + } + static parse(t, e) { + if (t.length < 2) return e.error('Expected at least one argument.') + const r = t[0] + if (('to-boolean' === r || 'to-string' === r) && 2 !== t.length) + return e.error('Expected one argument.') + const n = ft[r], + i = [] + for (let r = 1; r < t.length; r++) { + const n = e.parse(t[r], r, U) + if (!n) return null + i.push(n) + } + return new dt(n, i) + } + evaluate(t) { + if ('boolean' === this.type.kind) + return Boolean(this.args[0].evaluate(t)) + if ('color' === this.type.kind) { + let e, r + for (const n of this.args) { + if (((e = n.evaluate(t)), (r = null), e instanceof J)) return e + if ('string' == typeof e) { + const r = t.parseColor(e) + if (r) return r + } else if ( + Array.isArray(e) && + ((r = + e.length < 3 || e.length > 4 + ? `Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.` + : nt(e[0], e[1], e[2], e[3])), + !r) + ) + return new J(e[0] / 255, e[1] / 255, e[2] / 255, e[3]) + } + throw new lt( + r || + `Could not parse color from value '${'string' == typeof e ? e : String(JSON.stringify(e))}'`, + ) + } + if ('number' === this.type.kind) { + let e = null + for (const r of this.args) { + if (((e = r.evaluate(t)), null === e)) return 0 + const n = Number(e) + if (!isNaN(n)) return n + } + throw new lt(`Could not convert ${JSON.stringify(e)} to number.`) + } + return 'formatted' === this.type.kind + ? et.fromString(at(this.args[0].evaluate(t))) + : 'resolvedImage' === this.type.kind + ? rt.fromString(at(this.args[0].evaluate(t))) + : at(this.args[0].evaluate(t)) + } + eachChild(t) { + this.args.forEach(t) + } + outputDefined() { + return this.args.every((t) => t.outputDefined()) + } + serialize() { + if ('formatted' === this.type.kind) + return new ht([ + { + content: this.args[0], + scale: null, + font: null, + textColor: null, + }, + ]).serialize() + if ('resolvedImage' === this.type.kind) + return new pt(this.args[0]).serialize() + const t = ['to-' + this.type.kind] + return ( + this.eachChild((e) => { + t.push(e.serialize()) + }), + t + ) + } + } + const gt = ['Unknown', 'Point', 'LineString', 'Polygon'] + class yt { + constructor() { + ;(this.globals = null), + (this.feature = null), + (this.featureState = null), + (this.formattedSection = null), + (this._parseColorCache = {}), + (this.availableImages = null), + (this.canonical = null) + } + id() { + return this.feature && 'id' in this.feature ? this.feature.id : null + } + geometryType() { + return this.feature + ? 'number' == typeof this.feature.type + ? gt[this.feature.type] + : this.feature.type + : null + } + geometry() { + return this.feature && 'geometry' in this.feature + ? this.feature.geometry + : null + } + canonicalID() { + return this.canonical + } + properties() { + return (this.feature && this.feature.properties) || {} + } + parseColor(t) { + let e = this._parseColorCache[t] + return e || (e = this._parseColorCache[t] = J.parse(t)), e + } + } + class mt { + constructor(t, e, r, n) { + ;(this.name = t), + (this.type = e), + (this._evaluate = r), + (this.args = n) + } + evaluate(t) { + return this._evaluate(t, this.args) + } + eachChild(t) { + this.args.forEach(t) + } + outputDefined() { + return !1 + } + serialize() { + return [this.name].concat(this.args.map((t) => t.serialize())) + } + static parse(t, e) { + const r = t[0], + n = mt.definitions[r] + if (!n) + return e.error( + `Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`, + 0, + ) + const i = Array.isArray(n) ? n[0] : n.type, + o = Array.isArray(n) ? [[n[1], n[2]]] : n.overloads, + a = o.filter( + ([e]) => !Array.isArray(e) || e.length === t.length - 1, + ) + let s = null + for (const [n, o] of a) { + s = new zt(e.registry, e.path, null, e.scope) + const a = [] + let l = !1 + for (let e = 1; e < t.length; e++) { + const r = t[e], + i = Array.isArray(n) ? n[e - 1] : n.type, + o = s.parse(r, 1 + a.length, i) + if (!o) { + l = !0 + break + } + a.push(o) + } + if (!l) + if (Array.isArray(n) && n.length !== a.length) + s.error( + `Expected ${n.length} arguments, but found ${a.length} instead.`, + ) + else { + for (let t = 0; t < a.length; t++) { + const e = Array.isArray(n) ? n[t] : n.type, + r = a[t] + s.concat(t + 1).checkSubtype(e, r.type) + } + if (0 === s.errors.length) return new mt(r, i, o, a) + } + } + if (1 === a.length) e.errors.push(...s.errors) + else { + const r = (a.length ? a : o) + .map(([t]) => { + return ( + (e = t), + Array.isArray(e) + ? `(${e.map(q).join(', ')})` + : `(${q(e.type)}...)` + ) + var e + }) + .join(' | '), + n = [] + for (let r = 1; r < t.length; r++) { + const i = e.parse(t[r], 1 + n.length) + if (!i) return null + n.push(q(i.type)) + } + e.error( + `Expected arguments of type ${r}, but found (${n.join(', ')}) instead.`, + ) + } + return null + } + static register(t, e) { + mt.definitions = e + for (const r in e) t[r] = mt + } + } + class vt { + constructor(t, e, r) { + ;(this.type = B), + (this.locale = r), + (this.caseSensitive = t), + (this.diacriticSensitive = e) + } + static parse(t, e) { + if (2 !== t.length) return e.error('Expected one argument.') + const r = t[1] + if ('object' != typeof r || Array.isArray(r)) + return e.error('Collator options argument must be an object.') + const n = e.parse( + void 0 !== r['case-sensitive'] && r['case-sensitive'], + 1, + D, + ) + if (!n) return null + const i = e.parse( + void 0 !== r['diacritic-sensitive'] && r['diacritic-sensitive'], + 1, + D, + ) + if (!i) return null + let o = null + return r.locale && ((o = e.parse(r.locale, 1, N)), !o) + ? null + : new vt(n, i, o) + } + evaluate(t) { + return new Q( + this.caseSensitive.evaluate(t), + this.diacriticSensitive.evaluate(t), + this.locale ? this.locale.evaluate(t) : null, + ) + } + eachChild(t) { + t(this.caseSensitive), + t(this.diacriticSensitive), + this.locale && t(this.locale) + } + outputDefined() { + return !1 + } + serialize() { + const t = {} + return ( + (t['case-sensitive'] = this.caseSensitive.serialize()), + (t['diacritic-sensitive'] = this.diacriticSensitive.serialize()), + this.locale && (t.locale = this.locale.serialize()), + ['collator', t] + ) + } + } + function _t(t, e) { + ;(t[0] = Math.min(t[0], e[0])), + (t[1] = Math.min(t[1], e[1])), + (t[2] = Math.max(t[2], e[0])), + (t[3] = Math.max(t[3], e[1])) + } + function bt(t, e) { + return ( + !(t[0] <= e[0]) && + !(t[2] >= e[2]) && + !(t[1] <= e[1]) && + !(t[3] >= e[3]) + ) + } + function xt(t, e) { + const r = (180 + t[0]) / 360 + const n = + ((i = t[1]), + (180 - + (180 / Math.PI) * + Math.log(Math.tan(Math.PI / 4 + (i * Math.PI) / 360))) / + 360) + var i + const o = Math.pow(2, e.z) + return [Math.round(r * o * 8192), Math.round(n * o * 8192)] + } + function wt(t, e, r) { + const n = t[0] - e[0], + i = t[1] - e[1], + o = t[0] - r[0], + a = t[1] - r[1] + return n * a - o * i == 0 && n * o <= 0 && i * a <= 0 + } + function St(t, e) { + let r = !1 + for (let a = 0, s = e.length; a < s; a++) { + const s = e[a] + for (let e = 0, a = s.length; e < a - 1; e++) { + if (wt(t, s[e], s[e + 1])) return !1 + ;(n = t), + (i = s[e]), + (o = s[e + 1]), + i[1] > n[1] != o[1] > n[1] && + n[0] < + ((o[0] - i[0]) * (n[1] - i[1])) / (o[1] - i[1]) + i[0] && + (r = !r) + } + } + var n, i, o + return r + } + function Et(t, e) { + for (let r = 0; r < e.length; r++) if (St(t, e[r])) return !0 + return !1 + } + function Tt(t, e, r, n) { + const i = t[0] - r[0], + o = t[1] - r[1], + a = e[0] - r[0], + s = e[1] - r[1], + l = n[0] - r[0], + u = n[1] - r[1], + c = i * u - l * o, + h = a * u - l * s + return (c > 0 && h < 0) || (c < 0 && h > 0) + } + function Ct(t, e, r, n) { + const i = [e[0] - t[0], e[1] - t[1]], + o = [n[0] - r[0], n[1] - r[1]] + return ( + 0 != (a = o)[0] * (s = i)[1] - a[1] * s[0] && + !(!Tt(t, e, r, n) || !Tt(r, n, t, e)) + ) + var a, s + } + function Ot(t, e, r) { + for (const n of r) + for (let r = 0; r < n.length - 1; ++r) + if (Ct(t, e, n[r], n[r + 1])) return !0 + return !1 + } + function Pt(t, e) { + for (let r = 0; r < t.length; ++r) if (!St(t[r], e)) return !1 + for (let r = 0; r < t.length - 1; ++r) + if (Ot(t[r], t[r + 1], e)) return !1 + return !0 + } + function Rt(t, e) { + for (let r = 0; r < e.length; r++) if (Pt(t, e[r])) return !0 + return !1 + } + function It(t, e, r) { + const n = [] + for (let i = 0; i < t.length; i++) { + const o = [] + for (let n = 0; n < t[i].length; n++) { + const a = xt(t[i][n], r) + _t(e, a), o.push(a) + } + n.push(o) + } + return n + } + function Lt(t, e, r) { + const n = [] + for (let i = 0; i < t.length; i++) { + const o = It(t[i], e, r) + n.push(o) + } + return n + } + function Mt(t, e, r, n) { + if (t[0] < r[0] || t[0] > r[2]) { + const e = 0.5 * n + let i = t[0] - r[0] > e ? -n : r[0] - t[0] > e ? n : 0 + 0 === i && (i = t[0] - r[2] > e ? -n : r[2] - t[0] > e ? n : 0), + (t[0] += i) + } + _t(e, t) + } + function Ft(t, e, r, n) { + const i = 8192 * Math.pow(2, n.z), + o = [8192 * n.x, 8192 * n.y], + a = [] + for (const n of t) + for (const t of n) { + const n = [t.x + o[0], t.y + o[1]] + Mt(n, e, r, i), a.push(n) + } + return a + } + function At(t, e, r, n) { + const i = 8192 * Math.pow(2, n.z), + o = [8192 * n.x, 8192 * n.y], + a = [] + for (const r of t) { + const t = [] + for (const n of r) { + const r = [n.x + o[0], n.y + o[1]] + _t(e, r), t.push(r) + } + a.push(t) + } + if (e[2] - e[0] <= i / 2) { + ;((s = e)[0] = s[1] = 1 / 0), (s[2] = s[3] = -1 / 0) + for (const t of a) for (const n of t) Mt(n, e, r, i) + } + var s + return a + } + class kt { + constructor(t, e) { + ;(this.type = D), (this.geojson = t), (this.geometries = e) + } + static parse(t, e) { + if (2 !== t.length) + return e.error( + `'within' expression requires exactly one argument, but found ${t.length - 1} instead.`, + ) + if (it(t[1])) { + const e = t[1] + if ('FeatureCollection' === e.type) + for (let t = 0; t < e.features.length; ++t) { + const r = e.features[t].geometry.type + if ('Polygon' === r || 'MultiPolygon' === r) + return new kt(e, e.features[t].geometry) + } + else if ('Feature' === e.type) { + const t = e.geometry.type + if ('Polygon' === t || 'MultiPolygon' === t) + return new kt(e, e.geometry) + } else if ('Polygon' === e.type || 'MultiPolygon' === e.type) + return new kt(e, e) + } + return e.error( + "'within' expression requires valid geojson object that contains polygon geometry type.", + ) + } + evaluate(t) { + if (null != t.geometry() && null != t.canonicalID()) { + if ('Point' === t.geometryType()) + return (function (t, e) { + const r = [1 / 0, 1 / 0, -1 / 0, -1 / 0], + n = [1 / 0, 1 / 0, -1 / 0, -1 / 0], + i = t.canonicalID() + if ('Polygon' === e.type) { + const o = It(e.coordinates, n, i), + a = Ft(t.geometry(), r, n, i) + if (!bt(r, n)) return !1 + for (const t of a) if (!St(t, o)) return !1 + } + if ('MultiPolygon' === e.type) { + const o = Lt(e.coordinates, n, i), + a = Ft(t.geometry(), r, n, i) + if (!bt(r, n)) return !1 + for (const t of a) if (!Et(t, o)) return !1 + } + return !0 + })(t, this.geometries) + if ('LineString' === t.geometryType()) + return (function (t, e) { + const r = [1 / 0, 1 / 0, -1 / 0, -1 / 0], + n = [1 / 0, 1 / 0, -1 / 0, -1 / 0], + i = t.canonicalID() + if ('Polygon' === e.type) { + const o = It(e.coordinates, n, i), + a = At(t.geometry(), r, n, i) + if (!bt(r, n)) return !1 + for (const t of a) if (!Pt(t, o)) return !1 + } + if ('MultiPolygon' === e.type) { + const o = Lt(e.coordinates, n, i), + a = At(t.geometry(), r, n, i) + if (!bt(r, n)) return !1 + for (const t of a) if (!Rt(t, o)) return !1 + } + return !0 + })(t, this.geometries) + } + return !1 + } + eachChild() {} + outputDefined() { + return !0 + } + serialize() { + return ['within', this.geojson] + } + } + function jt(t) { + if (t instanceof mt) { + if ('get' === t.name && 1 === t.args.length) return !1 + if ('feature-state' === t.name) return !1 + if ('has' === t.name && 1 === t.args.length) return !1 + if ( + 'properties' === t.name || + 'geometry-type' === t.name || + 'id' === t.name + ) + return !1 + if (/^filter-/.test(t.name)) return !1 + } + if (t instanceof kt) return !1 + let e = !0 + return ( + t.eachChild((t) => { + e && !jt(t) && (e = !1) + }), + e + ) + } + function Nt(t) { + if (t instanceof mt && 'feature-state' === t.name) return !1 + let e = !0 + return ( + t.eachChild((t) => { + e && !Nt(t) && (e = !1) + }), + e + ) + } + function Dt(t, e) { + if (t instanceof mt && e.indexOf(t.name) >= 0) return !1 + let r = !0 + return ( + t.eachChild((t) => { + r && !Dt(t, e) && (r = !1) + }), + r + ) + } + class Gt { + constructor(t, e) { + ;(this.type = e.type), (this.name = t), (this.boundExpression = e) + } + static parse(t, e) { + if (2 !== t.length || 'string' != typeof t[1]) + return e.error( + "'var' expression requires exactly one string literal argument.", + ) + const r = t[1] + return e.scope.has(r) + ? new Gt(r, e.scope.get(r)) + : e.error( + `Unknown variable "${r}". Make sure "${r}" has been bound in an enclosing "let" expression before using it.`, + 1, + ) + } + evaluate(t) { + return this.boundExpression.evaluate(t) + } + eachChild() {} + outputDefined() { + return !1 + } + serialize() { + return ['var', this.name] + } + } + class zt { + constructor(t, e = [], r, n = new A(), i = []) { + ;(this.registry = t), + (this.path = e), + (this.key = e.map((t) => `[${t}]`).join('')), + (this.scope = n), + (this.errors = i), + (this.expectedType = r) + } + parse(t, e, r, n, i = {}) { + return e ? this.concat(e, r, n)._parse(t, i) : this._parse(t, i) + } + _parse(t, e) { + function r(t, e, r) { + return 'assert' === r + ? new ct(e, [t]) + : 'coerce' === r + ? new dt(e, [t]) + : t + } + if ( + ((null !== t && + 'string' != typeof t && + 'boolean' != typeof t && + 'number' != typeof t) || + (t = ['literal', t]), + Array.isArray(t)) + ) { + if (0 === t.length) + return this.error( + 'Expected an array with at least one element. If you wanted a literal array, use ["literal", []].', + ) + const n = t[0] + if ('string' != typeof n) + return ( + this.error( + `Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`, + 0, + ), + null + ) + const i = this.registry[n] + if (i) { + let n = i.parse(t, this) + if (!n) return null + if (this.expectedType) { + const t = this.expectedType, + i = n.type + if ( + ('string' !== t.kind && + 'number' !== t.kind && + 'boolean' !== t.kind && + 'object' !== t.kind && + 'array' !== t.kind) || + 'value' !== i.kind + ) + if ( + ('color' !== t.kind && + 'formatted' !== t.kind && + 'resolvedImage' !== t.kind) || + ('value' !== i.kind && 'string' !== i.kind) + ) { + if (this.checkSubtype(t, i)) return null + } else n = r(n, t, e.typeAnnotation || 'coerce') + else n = r(n, t, e.typeAnnotation || 'assert') + } + if ( + !(n instanceof st) && + 'resolvedImage' !== n.type.kind && + (function t(e) { + if (e instanceof Gt) return t(e.boundExpression) + if (e instanceof mt && 'error' === e.name) return !1 + if (e instanceof vt) return !1 + if (e instanceof kt) return !1 + const r = e instanceof dt || e instanceof ct + let n = !0 + if ( + (e.eachChild((e) => { + n = r ? n && t(e) : n && e instanceof st + }), + !n) + ) + return !1 + return ( + jt(e) && + Dt(e, [ + 'zoom', + 'heatmap-density', + 'line-progress', + 'sky-radial-progress', + 'accumulated', + 'is-supported-script', + ]) + ) + })(n) + ) { + const t = new yt() + try { + n = new st(n.type, n.evaluate(t)) + } catch (t) { + return this.error(t.message), null + } + } + return n + } + return this.error( + `Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`, + 0, + ) + } + return void 0 === t + ? this.error("'undefined' value invalid. Use null instead.") + : 'object' == typeof t + ? this.error( + 'Bare objects invalid. Use ["literal", {...}] instead.', + ) + : this.error( + `Expected an array, but found ${typeof t} instead.`, + ) + } + concat(t, e, r) { + const n = 'number' == typeof t ? this.path.concat(t) : this.path, + i = r ? this.scope.concat(r) : this.scope + return new zt(this.registry, n, e || null, i, this.errors) + } + error(t, ...e) { + const r = `${this.key}${e.map((t) => `[${t}]`).join('')}` + this.errors.push(new F(r, t)) + } + checkSubtype(t, e) { + const r = Z(t, e) + return r && this.error(r), r + } + } + function Ut(t, e) { + const r = t.length - 1 + let n, + i, + o = 0, + a = r, + s = 0 + for (; o <= a; ) + if ( + ((s = Math.floor((o + a) / 2)), + (n = t[s]), + (i = t[s + 1]), + n <= e) + ) { + if (s === r || e < i) return s + o = s + 1 + } else { + if (!(n > e)) throw new lt('Input is not a number.') + a = s - 1 + } + return 0 + } + class Bt { + constructor(t, e, r) { + ;(this.type = t), + (this.input = e), + (this.labels = []), + (this.outputs = []) + for (const [t, e] of r) this.labels.push(t), this.outputs.push(e) + } + static parse(t, e) { + if (t.length - 1 < 4) + return e.error( + `Expected at least 4 arguments, but found only ${t.length - 1}.`, + ) + if ((t.length - 1) % 2 != 0) + return e.error('Expected an even number of arguments.') + const r = e.parse(t[1], 1, j) + if (!r) return null + const n = [] + let i = null + e.expectedType && + 'value' !== e.expectedType.kind && + (i = e.expectedType) + for (let r = 1; r < t.length; r += 2) { + const o = 1 === r ? -1 / 0 : t[r], + a = t[r + 1], + s = r, + l = r + 1 + if ('number' != typeof o) + return e.error( + 'Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.', + s, + ) + if (n.length && n[n.length - 1][0] >= o) + return e.error( + 'Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.', + s, + ) + const u = e.parse(a, l, i) + if (!u) return null + ;(i = i || u.type), n.push([o, u]) + } + return new Bt(i, r, n) + } + evaluate(t) { + const e = this.labels, + r = this.outputs + if (1 === e.length) return r[0].evaluate(t) + const n = this.input.evaluate(t) + if (n <= e[0]) return r[0].evaluate(t) + const i = e.length + if (n >= e[i - 1]) return r[i - 1].evaluate(t) + return r[Ut(e, n)].evaluate(t) + } + eachChild(t) { + t(this.input) + for (const e of this.outputs) t(e) + } + outputDefined() { + return this.outputs.every((t) => t.outputDefined()) + } + serialize() { + const t = ['step', this.input.serialize()] + for (let e = 0; e < this.labels.length; e++) + e > 0 && t.push(this.labels[e]), + t.push(this.outputs[e].serialize()) + return t + } + } + var Vt = Yt + function Yt(t, e, r, n) { + ;(this.cx = 3 * t), + (this.bx = 3 * (r - t) - this.cx), + (this.ax = 1 - this.cx - this.bx), + (this.cy = 3 * e), + (this.by = 3 * (n - e) - this.cy), + (this.ay = 1 - this.cy - this.by), + (this.p1x = t), + (this.p1y = n), + (this.p2x = r), + (this.p2y = n) + } + function Wt(t, e, r) { + return t * (1 - r) + e * r + } + ;(Yt.prototype.sampleCurveX = function (t) { + return ((this.ax * t + this.bx) * t + this.cx) * t + }), + (Yt.prototype.sampleCurveY = function (t) { + return ((this.ay * t + this.by) * t + this.cy) * t + }), + (Yt.prototype.sampleCurveDerivativeX = function (t) { + return (3 * this.ax * t + 2 * this.bx) * t + this.cx + }), + (Yt.prototype.solveCurveX = function (t, e) { + var r, n, i, o, a + for (void 0 === e && (e = 1e-6), i = t, a = 0; a < 8; a++) { + if (((o = this.sampleCurveX(i) - t), Math.abs(o) < e)) return i + var s = this.sampleCurveDerivativeX(i) + if (Math.abs(s) < 1e-6) break + i -= o / s + } + if ((i = t) < (r = 0)) return r + if (i > (n = 1)) return n + for (; r < n; ) { + if (((o = this.sampleCurveX(i)), Math.abs(o - t) < e)) return i + t > o ? (r = i) : (n = i), (i = 0.5 * (n - r) + r) + } + return i + }), + (Yt.prototype.solve = function (t, e) { + return this.sampleCurveY(this.solveCurveX(t, e)) + }) + var qt = Object.freeze({ + __proto__: null, + number: Wt, + color: function (t, e, r) { + return new J( + Wt(t.r, e.r, r), + Wt(t.g, e.g, r), + Wt(t.b, e.b, r), + Wt(t.a, e.a, r), + ) + }, + array: function (t, e, r) { + return t.map((t, n) => Wt(t, e[n], r)) + }, + }) + const Xt = 6 / 29, + Zt = 3 * Xt * Xt, + Kt = Math.PI / 180, + Ht = 180 / Math.PI + function $t(t) { + return t > 0.008856451679035631 ? Math.pow(t, 1 / 3) : t / Zt + 4 / 29 + } + function Jt(t) { + return t > Xt ? t * t * t : Zt * (t - 4 / 29) + } + function Qt(t) { + return ( + 255 * + (t <= 0.0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - 0.055) + ) + } + function te(t) { + return (t /= 255) <= 0.04045 + ? t / 12.92 + : Math.pow((t + 0.055) / 1.055, 2.4) + } + function ee(t) { + const e = te(t.r), + r = te(t.g), + n = te(t.b), + i = $t((0.4124564 * e + 0.3575761 * r + 0.1804375 * n) / 0.95047), + o = $t((0.2126729 * e + 0.7151522 * r + 0.072175 * n) / 1) + return { + l: 116 * o - 16, + a: 500 * (i - o), + b: + 200 * + (o - + $t((0.0193339 * e + 0.119192 * r + 0.9503041 * n) / 1.08883)), + alpha: t.a, + } + } + function re(t) { + let e = (t.l + 16) / 116, + r = isNaN(t.a) ? e : e + t.a / 500, + n = isNaN(t.b) ? e : e - t.b / 200 + return ( + (e = 1 * Jt(e)), + (r = 0.95047 * Jt(r)), + (n = 1.08883 * Jt(n)), + new J( + Qt(3.2404542 * r - 1.5371385 * e - 0.4985314 * n), + Qt(-0.969266 * r + 1.8760108 * e + 0.041556 * n), + Qt(0.0556434 * r - 0.2040259 * e + 1.0572252 * n), + t.alpha, + ) + ) + } + function ne(t, e, r) { + const n = e - t + return ( + t + r * (n > 180 || n < -180 ? n - 360 * Math.round(n / 360) : n) + ) + } + const ie = { + forward: ee, + reverse: re, + interpolate: function (t, e, r) { + return { + l: Wt(t.l, e.l, r), + a: Wt(t.a, e.a, r), + b: Wt(t.b, e.b, r), + alpha: Wt(t.alpha, e.alpha, r), + } + }, + }, + oe = { + forward: function (t) { + const { l: e, a: r, b: n } = ee(t), + i = Math.atan2(n, r) * Ht + return { + h: i < 0 ? i + 360 : i, + c: Math.sqrt(r * r + n * n), + l: e, + alpha: t.a, + } + }, + reverse: function (t) { + const e = t.h * Kt, + r = t.c + return re({ + l: t.l, + a: Math.cos(e) * r, + b: Math.sin(e) * r, + alpha: t.alpha, + }) + }, + interpolate: function (t, e, r) { + return { + h: ne(t.h, e.h, r), + c: Wt(t.c, e.c, r), + l: Wt(t.l, e.l, r), + alpha: Wt(t.alpha, e.alpha, r), + } + }, + } + var ae = Object.freeze({ __proto__: null, lab: ie, hcl: oe }) + class se { + constructor(t, e, r, n, i) { + ;(this.type = t), + (this.operator = e), + (this.interpolation = r), + (this.input = n), + (this.labels = []), + (this.outputs = []) + for (const [t, e] of i) this.labels.push(t), this.outputs.push(e) + } + static interpolationFactor(t, e, r, n) { + let i = 0 + if ('exponential' === t.name) i = le(e, t.base, r, n) + else if ('linear' === t.name) i = le(e, 1, r, n) + else if ('cubic-bezier' === t.name) { + const o = t.controlPoints + i = new Vt(o[0], o[1], o[2], o[3]).solve(le(e, 1, r, n)) + } + return i + } + static parse(t, e) { + let [r, n, i, ...o] = t + if (!Array.isArray(n) || 0 === n.length) + return e.error('Expected an interpolation type expression.', 1) + if ('linear' === n[0]) n = { name: 'linear' } + else if ('exponential' === n[0]) { + const t = n[1] + if ('number' != typeof t) + return e.error( + 'Exponential interpolation requires a numeric base.', + 1, + 1, + ) + n = { name: 'exponential', base: t } + } else { + if ('cubic-bezier' !== n[0]) + return e.error( + 'Unknown interpolation type ' + String(n[0]), + 1, + 0, + ) + { + const t = n.slice(1) + if ( + 4 !== t.length || + t.some((t) => 'number' != typeof t || t < 0 || t > 1) + ) + return e.error( + 'Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', + 1, + ) + n = { name: 'cubic-bezier', controlPoints: t } + } + } + if (t.length - 1 < 4) + return e.error( + `Expected at least 4 arguments, but found only ${t.length - 1}.`, + ) + if ((t.length - 1) % 2 != 0) + return e.error('Expected an even number of arguments.') + if (((i = e.parse(i, 2, j)), !i)) return null + const a = [] + let s = null + 'interpolate-hcl' === r || 'interpolate-lab' === r + ? (s = G) + : e.expectedType && + 'value' !== e.expectedType.kind && + (s = e.expectedType) + for (let t = 0; t < o.length; t += 2) { + const r = o[t], + n = o[t + 1], + i = t + 3, + l = t + 4 + if ('number' != typeof r) + return e.error( + 'Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.', + i, + ) + if (a.length && a[a.length - 1][0] >= r) + return e.error( + 'Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.', + i, + ) + const u = e.parse(n, l, s) + if (!u) return null + ;(s = s || u.type), a.push([r, u]) + } + return 'number' === s.kind || + 'color' === s.kind || + ('array' === s.kind && + 'number' === s.itemType.kind && + 'number' == typeof s.N) + ? new se(s, r, n, i, a) + : e.error(`Type ${q(s)} is not interpolatable.`) + } + evaluate(t) { + const e = this.labels, + r = this.outputs + if (1 === e.length) return r[0].evaluate(t) + const n = this.input.evaluate(t) + if (n <= e[0]) return r[0].evaluate(t) + const i = e.length + if (n >= e[i - 1]) return r[i - 1].evaluate(t) + const o = Ut(e, n), + a = e[o], + s = e[o + 1], + l = se.interpolationFactor(this.interpolation, n, a, s), + u = r[o].evaluate(t), + c = r[o + 1].evaluate(t) + return 'interpolate' === this.operator + ? qt[this.type.kind.toLowerCase()](u, c, l) + : 'interpolate-hcl' === this.operator + ? oe.reverse(oe.interpolate(oe.forward(u), oe.forward(c), l)) + : ie.reverse(ie.interpolate(ie.forward(u), ie.forward(c), l)) + } + eachChild(t) { + t(this.input) + for (const e of this.outputs) t(e) + } + outputDefined() { + return this.outputs.every((t) => t.outputDefined()) + } + serialize() { + let t + t = + 'linear' === this.interpolation.name + ? ['linear'] + : 'exponential' === this.interpolation.name + ? 1 === this.interpolation.base + ? ['linear'] + : ['exponential', this.interpolation.base] + : ['cubic-bezier'].concat(this.interpolation.controlPoints) + const e = [this.operator, t, this.input.serialize()] + for (let t = 0; t < this.labels.length; t++) + e.push(this.labels[t], this.outputs[t].serialize()) + return e + } + } + function le(t, e, r, n) { + const i = n - r, + o = t - r + return 0 === i + ? 0 + : 1 === e + ? o / i + : (Math.pow(e, o) - 1) / (Math.pow(e, i) - 1) + } + class ue { + constructor(t, e) { + ;(this.type = t), (this.args = e) + } + static parse(t, e) { + if (t.length < 2) + return e.error('Expectected at least one argument.') + let r = null + const n = e.expectedType + n && 'value' !== n.kind && (r = n) + const i = [] + for (const n of t.slice(1)) { + const t = e.parse(n, 1 + i.length, r, void 0, { + typeAnnotation: 'omit', + }) + if (!t) return null + ;(r = r || t.type), i.push(t) + } + const o = n && i.some((t) => Z(n, t.type)) + return new ue(o ? U : r, i) + } + evaluate(t) { + let e, + r = null, + n = 0 + for (const i of this.args) + if ( + (n++, + (r = i.evaluate(t)), + r && + r instanceof rt && + !r.available && + (e || (e = r.name), + (r = null), + n === this.args.length && (r = e)), + null !== r) + ) + break + return r + } + eachChild(t) { + this.args.forEach(t) + } + outputDefined() { + return this.args.every((t) => t.outputDefined()) + } + serialize() { + const t = ['coalesce'] + return ( + this.eachChild((e) => { + t.push(e.serialize()) + }), + t + ) + } + } + class ce { + constructor(t, e) { + ;(this.type = e.type), + (this.bindings = [].concat(t)), + (this.result = e) + } + evaluate(t) { + return this.result.evaluate(t) + } + eachChild(t) { + for (const e of this.bindings) t(e[1]) + t(this.result) + } + static parse(t, e) { + if (t.length < 4) + return e.error( + `Expected at least 3 arguments, but found ${t.length - 1} instead.`, + ) + const r = [] + for (let n = 1; n < t.length - 1; n += 2) { + const i = t[n] + if ('string' != typeof i) + return e.error( + `Expected string, but found ${typeof i} instead.`, + n, + ) + if (/[^a-zA-Z0-9_]/.test(i)) + return e.error( + "Variable names must contain only alphanumeric characters or '_'.", + n, + ) + const o = e.parse(t[n + 1], n + 1) + if (!o) return null + r.push([i, o]) + } + const n = e.parse(t[t.length - 1], t.length - 1, e.expectedType, r) + return n ? new ce(r, n) : null + } + outputDefined() { + return this.result.outputDefined() + } + serialize() { + const t = ['let'] + for (const [e, r] of this.bindings) t.push(e, r.serialize()) + return t.push(this.result.serialize()), t + } + } + class he { + constructor(t, e, r) { + ;(this.type = t), (this.index = e), (this.input = r) + } + static parse(t, e) { + if (3 !== t.length) + return e.error( + `Expected 2 arguments, but found ${t.length - 1} instead.`, + ) + const r = e.parse(t[1], 1, j), + n = e.parse(t[2], 2, W(e.expectedType || U)) + if (!r || !n) return null + const i = n.type + return new he(i.itemType, r, n) + } + evaluate(t) { + const e = this.index.evaluate(t), + r = this.input.evaluate(t) + if (e < 0) throw new lt(`Array index out of bounds: ${e} < 0.`) + if (e >= r.length) + throw new lt(`Array index out of bounds: ${e} > ${r.length - 1}.`) + if (e !== Math.floor(e)) + throw new lt( + `Array index must be an integer, but found ${e} instead.`, + ) + return r[e] + } + eachChild(t) { + t(this.index), t(this.input) + } + outputDefined() { + return !1 + } + serialize() { + return ['at', this.index.serialize(), this.input.serialize()] + } + } + class pe { + constructor(t, e) { + ;(this.type = D), (this.needle = t), (this.haystack = e) + } + static parse(t, e) { + if (3 !== t.length) + return e.error( + `Expected 2 arguments, but found ${t.length - 1} instead.`, + ) + const r = e.parse(t[1], 1, U), + n = e.parse(t[2], 2, U) + return r && n + ? K(r.type, [D, N, j, k, U]) + ? new pe(r, n) + : e.error( + `Expected first argument to be of type boolean, string, number or null, but found ${q(r.type)} instead`, + ) + : null + } + evaluate(t) { + const e = this.needle.evaluate(t), + r = this.haystack.evaluate(t) + if (!r) return !1 + if (!H(e, ['boolean', 'string', 'number', 'null'])) + throw new lt( + `Expected first argument to be of type boolean, string, number or null, but found ${q(ot(e))} instead.`, + ) + if (!H(r, ['string', 'array'])) + throw new lt( + `Expected second argument to be of type array or string, but found ${q(ot(r))} instead.`, + ) + return r.indexOf(e) >= 0 + } + eachChild(t) { + t(this.needle), t(this.haystack) + } + outputDefined() { + return !0 + } + serialize() { + return ['in', this.needle.serialize(), this.haystack.serialize()] + } + } + class fe { + constructor(t, e, r) { + ;(this.type = j), + (this.needle = t), + (this.haystack = e), + (this.fromIndex = r) + } + static parse(t, e) { + if (t.length <= 2 || t.length >= 5) + return e.error( + `Expected 3 or 4 arguments, but found ${t.length - 1} instead.`, + ) + const r = e.parse(t[1], 1, U), + n = e.parse(t[2], 2, U) + if (!r || !n) return null + if (!K(r.type, [D, N, j, k, U])) + return e.error( + `Expected first argument to be of type boolean, string, number or null, but found ${q(r.type)} instead`, + ) + if (4 === t.length) { + const i = e.parse(t[3], 3, j) + return i ? new fe(r, n, i) : null + } + return new fe(r, n) + } + evaluate(t) { + const e = this.needle.evaluate(t), + r = this.haystack.evaluate(t) + if (!H(e, ['boolean', 'string', 'number', 'null'])) + throw new lt( + `Expected first argument to be of type boolean, string, number or null, but found ${q(ot(e))} instead.`, + ) + if (!H(r, ['string', 'array'])) + throw new lt( + `Expected second argument to be of type array or string, but found ${q(ot(r))} instead.`, + ) + if (this.fromIndex) { + const n = this.fromIndex.evaluate(t) + return r.indexOf(e, n) + } + return r.indexOf(e) + } + eachChild(t) { + t(this.needle), + t(this.haystack), + this.fromIndex && t(this.fromIndex) + } + outputDefined() { + return !1 + } + serialize() { + if (null != this.fromIndex && void 0 !== this.fromIndex) { + const t = this.fromIndex.serialize() + return [ + 'index-of', + this.needle.serialize(), + this.haystack.serialize(), + t, + ] + } + return [ + 'index-of', + this.needle.serialize(), + this.haystack.serialize(), + ] + } + } + class de { + constructor(t, e, r, n, i, o) { + ;(this.inputType = t), + (this.type = e), + (this.input = r), + (this.cases = n), + (this.outputs = i), + (this.otherwise = o) + } + static parse(t, e) { + if (t.length < 5) + return e.error( + `Expected at least 4 arguments, but found only ${t.length - 1}.`, + ) + if (t.length % 2 != 1) + return e.error('Expected an even number of arguments.') + let r, n + e.expectedType && + 'value' !== e.expectedType.kind && + (n = e.expectedType) + const i = {}, + o = [] + for (let a = 2; a < t.length - 1; a += 2) { + let s = t[a] + const l = t[a + 1] + Array.isArray(s) || (s = [s]) + const u = e.concat(a) + if (0 === s.length) + return u.error('Expected at least one branch label.') + for (const t of s) { + if ('number' != typeof t && 'string' != typeof t) + return u.error('Branch labels must be numbers or strings.') + if ( + 'number' == typeof t && + Math.abs(t) > Number.MAX_SAFE_INTEGER + ) + return u.error( + `Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`, + ) + if ('number' == typeof t && Math.floor(t) !== t) + return u.error( + 'Numeric branch labels must be integer values.', + ) + if (r) { + if (u.checkSubtype(r, ot(t))) return null + } else r = ot(t) + if (void 0 !== i[String(t)]) + return u.error('Branch labels must be unique.') + i[String(t)] = o.length + } + const c = e.parse(l, a, n) + if (!c) return null + ;(n = n || c.type), o.push(c) + } + const a = e.parse(t[1], 1, U) + if (!a) return null + const s = e.parse(t[t.length - 1], t.length - 1, n) + return s + ? 'value' !== a.type.kind && e.concat(1).checkSubtype(r, a.type) + ? null + : new de(r, n, a, i, o, s) + : null + } + evaluate(t) { + const e = this.input.evaluate(t) + return ( + (ot(e) === this.inputType && this.outputs[this.cases[e]]) || + this.otherwise + ).evaluate(t) + } + eachChild(t) { + t(this.input), this.outputs.forEach(t), t(this.otherwise) + } + outputDefined() { + return ( + this.outputs.every((t) => t.outputDefined()) && + this.otherwise.outputDefined() + ) + } + serialize() { + const t = ['match', this.input.serialize()], + e = Object.keys(this.cases).sort(), + r = [], + n = {} + for (const t of e) { + const e = n[this.cases[t]] + void 0 === e + ? ((n[this.cases[t]] = r.length), r.push([this.cases[t], [t]])) + : r[e][1].push(t) + } + const i = (t) => ('number' === this.inputType.kind ? Number(t) : t) + for (const [e, n] of r) + 1 === n.length ? t.push(i(n[0])) : t.push(n.map(i)), + t.push(this.outputs[e].serialize()) + return t.push(this.otherwise.serialize()), t + } + } + class ge { + constructor(t, e, r) { + ;(this.type = t), (this.branches = e), (this.otherwise = r) + } + static parse(t, e) { + if (t.length < 4) + return e.error( + `Expected at least 3 arguments, but found only ${t.length - 1}.`, + ) + if (t.length % 2 != 0) + return e.error('Expected an odd number of arguments.') + let r + e.expectedType && + 'value' !== e.expectedType.kind && + (r = e.expectedType) + const n = [] + for (let i = 1; i < t.length - 1; i += 2) { + const o = e.parse(t[i], i, D) + if (!o) return null + const a = e.parse(t[i + 1], i + 1, r) + if (!a) return null + n.push([o, a]), (r = r || a.type) + } + const i = e.parse(t[t.length - 1], t.length - 1, r) + return i ? new ge(r, n, i) : null + } + evaluate(t) { + for (const [e, r] of this.branches) + if (e.evaluate(t)) return r.evaluate(t) + return this.otherwise.evaluate(t) + } + eachChild(t) { + for (const [e, r] of this.branches) t(e), t(r) + t(this.otherwise) + } + outputDefined() { + return ( + this.branches.every(([t, e]) => e.outputDefined()) && + this.otherwise.outputDefined() + ) + } + serialize() { + const t = ['case'] + return ( + this.eachChild((e) => { + t.push(e.serialize()) + }), + t + ) + } + } + class ye { + constructor(t, e, r, n) { + ;(this.type = t), + (this.input = e), + (this.beginIndex = r), + (this.endIndex = n) + } + static parse(t, e) { + if (t.length <= 2 || t.length >= 5) + return e.error( + `Expected 3 or 4 arguments, but found ${t.length - 1} instead.`, + ) + const r = e.parse(t[1], 1, U), + n = e.parse(t[2], 2, j) + if (!r || !n) return null + if (!K(r.type, [W(U), N, U])) + return e.error( + `Expected first argument to be of type array or string, but found ${q(r.type)} instead`, + ) + if (4 === t.length) { + const i = e.parse(t[3], 3, j) + return i ? new ye(r.type, r, n, i) : null + } + return new ye(r.type, r, n) + } + evaluate(t) { + const e = this.input.evaluate(t), + r = this.beginIndex.evaluate(t) + if (!H(e, ['string', 'array'])) + throw new lt( + `Expected first argument to be of type array or string, but found ${q(ot(e))} instead.`, + ) + if (this.endIndex) { + const n = this.endIndex.evaluate(t) + return e.slice(r, n) + } + return e.slice(r) + } + eachChild(t) { + t(this.input), t(this.beginIndex), this.endIndex && t(this.endIndex) + } + outputDefined() { + return !1 + } + serialize() { + if (null != this.endIndex && void 0 !== this.endIndex) { + const t = this.endIndex.serialize() + return [ + 'slice', + this.input.serialize(), + this.beginIndex.serialize(), + t, + ] + } + return [ + 'slice', + this.input.serialize(), + this.beginIndex.serialize(), + ] + } + } + function me(t, e) { + return '==' === t || '!=' === t + ? 'boolean' === e.kind || + 'string' === e.kind || + 'number' === e.kind || + 'null' === e.kind || + 'value' === e.kind + : 'string' === e.kind || 'number' === e.kind || 'value' === e.kind + } + function ve(t, e, r, n) { + return 0 === n.compare(e, r) + } + function _e(t, e, r) { + const n = '==' !== t && '!=' !== t + return class i { + constructor(t, e, r) { + ;(this.type = D), + (this.lhs = t), + (this.rhs = e), + (this.collator = r), + (this.hasUntypedArgument = + 'value' === t.type.kind || 'value' === e.type.kind) + } + static parse(t, e) { + if (3 !== t.length && 4 !== t.length) + return e.error('Expected two or three arguments.') + const r = t[0] + let o = e.parse(t[1], 1, U) + if (!o) return null + if (!me(r, o.type)) + return e + .concat(1) + .error( + `"${r}" comparisons are not supported for type '${q(o.type)}'.`, + ) + let a = e.parse(t[2], 2, U) + if (!a) return null + if (!me(r, a.type)) + return e + .concat(2) + .error( + `"${r}" comparisons are not supported for type '${q(a.type)}'.`, + ) + if ( + o.type.kind !== a.type.kind && + 'value' !== o.type.kind && + 'value' !== a.type.kind + ) + return e.error( + `Cannot compare types '${q(o.type)}' and '${q(a.type)}'.`, + ) + n && + ('value' === o.type.kind && 'value' !== a.type.kind + ? (o = new ct(a.type, [o])) + : 'value' !== o.type.kind && + 'value' === a.type.kind && + (a = new ct(o.type, [a]))) + let s = null + if (4 === t.length) { + if ( + 'string' !== o.type.kind && + 'string' !== a.type.kind && + 'value' !== o.type.kind && + 'value' !== a.type.kind + ) + return e.error( + 'Cannot use collator to compare non-string types.', + ) + if (((s = e.parse(t[3], 3, B)), !s)) return null + } + return new i(o, a, s) + } + evaluate(i) { + const o = this.lhs.evaluate(i), + a = this.rhs.evaluate(i) + if (n && this.hasUntypedArgument) { + const e = ot(o), + r = ot(a) + if ( + e.kind !== r.kind || + ('string' !== e.kind && 'number' !== e.kind) + ) + throw new lt( + `Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`, + ) + } + if (this.collator && !n && this.hasUntypedArgument) { + const t = ot(o), + r = ot(a) + if ('string' !== t.kind || 'string' !== r.kind) + return e(i, o, a) + } + return this.collator + ? r(i, o, a, this.collator.evaluate(i)) + : e(i, o, a) + } + eachChild(t) { + t(this.lhs), t(this.rhs), this.collator && t(this.collator) + } + outputDefined() { + return !0 + } + serialize() { + const e = [t] + return ( + this.eachChild((t) => { + e.push(t.serialize()) + }), + e + ) + } + } + } + const be = _e( + '==', + function (t, e, r) { + return e === r + }, + ve, + ), + xe = _e( + '!=', + function (t, e, r) { + return e !== r + }, + function (t, e, r, n) { + return !ve(0, e, r, n) + }, + ), + we = _e( + '<', + function (t, e, r) { + return e < r + }, + function (t, e, r, n) { + return n.compare(e, r) < 0 + }, + ), + Se = _e( + '>', + function (t, e, r) { + return e > r + }, + function (t, e, r, n) { + return n.compare(e, r) > 0 + }, + ), + Ee = _e( + '<=', + function (t, e, r) { + return e <= r + }, + function (t, e, r, n) { + return n.compare(e, r) <= 0 + }, + ), + Te = _e( + '>=', + function (t, e, r) { + return e >= r + }, + function (t, e, r, n) { + return n.compare(e, r) >= 0 + }, + ) + class Ce { + constructor(t, e, r, n, i) { + ;(this.type = N), + (this.number = t), + (this.locale = e), + (this.currency = r), + (this.minFractionDigits = n), + (this.maxFractionDigits = i) + } + static parse(t, e) { + if (3 !== t.length) return e.error('Expected two arguments.') + const r = e.parse(t[1], 1, j) + if (!r) return null + const n = t[2] + if ('object' != typeof n || Array.isArray(n)) + return e.error('NumberFormat options argument must be an object.') + let i = null + if (n.locale && ((i = e.parse(n.locale, 1, N)), !i)) return null + let o = null + if (n.currency && ((o = e.parse(n.currency, 1, N)), !o)) return null + let a = null + if ( + n['min-fraction-digits'] && + ((a = e.parse(n['min-fraction-digits'], 1, j)), !a) + ) + return null + let s = null + return n['max-fraction-digits'] && + ((s = e.parse(n['max-fraction-digits'], 1, j)), !s) + ? null + : new Ce(r, i, o, a, s) + } + evaluate(t) { + return new Intl.NumberFormat( + this.locale ? this.locale.evaluate(t) : [], + { + style: this.currency ? 'currency' : 'decimal', + currency: this.currency ? this.currency.evaluate(t) : void 0, + minimumFractionDigits: this.minFractionDigits + ? this.minFractionDigits.evaluate(t) + : void 0, + maximumFractionDigits: this.maxFractionDigits + ? this.maxFractionDigits.evaluate(t) + : void 0, + }, + ).format(this.number.evaluate(t)) + } + eachChild(t) { + t(this.number), + this.locale && t(this.locale), + this.currency && t(this.currency), + this.minFractionDigits && t(this.minFractionDigits), + this.maxFractionDigits && t(this.maxFractionDigits) + } + outputDefined() { + return !1 + } + serialize() { + const t = {} + return ( + this.locale && (t.locale = this.locale.serialize()), + this.currency && (t.currency = this.currency.serialize()), + this.minFractionDigits && + (t['min-fraction-digits'] = this.minFractionDigits.serialize()), + this.maxFractionDigits && + (t['max-fraction-digits'] = this.maxFractionDigits.serialize()), + ['number-format', this.number.serialize(), t] + ) + } + } + class Oe { + constructor(t) { + ;(this.type = j), (this.input = t) + } + static parse(t, e) { + if (2 !== t.length) + return e.error( + `Expected 1 argument, but found ${t.length - 1} instead.`, + ) + const r = e.parse(t[1], 1) + return r + ? 'array' !== r.type.kind && + 'string' !== r.type.kind && + 'value' !== r.type.kind + ? e.error( + `Expected argument of type string or array, but found ${q(r.type)} instead.`, + ) + : new Oe(r) + : null + } + evaluate(t) { + const e = this.input.evaluate(t) + if ('string' == typeof e) return e.length + if (Array.isArray(e)) return e.length + throw new lt( + `Expected value to be of type string or array, but found ${q(ot(e))} instead.`, + ) + } + eachChild(t) { + t(this.input) + } + outputDefined() { + return !1 + } + serialize() { + const t = ['length'] + return ( + this.eachChild((e) => { + t.push(e.serialize()) + }), + t + ) + } + } + const Pe = { + '==': be, + '!=': xe, + '>': Se, + '<': we, + '>=': Te, + '<=': Ee, + array: ct, + at: he, + boolean: ct, + case: ge, + coalesce: ue, + collator: vt, + format: ht, + image: pt, + in: pe, + 'index-of': fe, + interpolate: se, + 'interpolate-hcl': se, + 'interpolate-lab': se, + length: Oe, + let: ce, + literal: st, + match: de, + number: ct, + 'number-format': Ce, + object: ct, + slice: ye, + step: Bt, + string: ct, + 'to-boolean': dt, + 'to-color': dt, + 'to-number': dt, + 'to-string': dt, + var: Gt, + within: kt, + } + function Re(t, [e, r, n, i]) { + ;(e = e.evaluate(t)), (r = r.evaluate(t)), (n = n.evaluate(t)) + const o = i ? i.evaluate(t) : 1, + a = nt(e, r, n, o) + if (a) throw new lt(a) + return new J((e / 255) * o, (r / 255) * o, (n / 255) * o, o) + } + function Ie(t, e) { + return t in e + } + function Le(t, e) { + const r = e[t] + return void 0 === r ? null : r + } + function Me(t) { + return { type: t } + } + function Fe(t) { + return { result: 'success', value: t } + } + function Ae(t) { + return { result: 'error', value: t } + } + function ke(t) { + return ( + 'data-driven' === t['property-type'] || + 'cross-faded-data-driven' === t['property-type'] + ) + } + function je(t) { + return !!t.expression && t.expression.parameters.indexOf('zoom') > -1 + } + function Ne(t) { + return !!t.expression && t.expression.interpolated + } + function De(t) { + return t instanceof Number + ? 'number' + : t instanceof String + ? 'string' + : t instanceof Boolean + ? 'boolean' + : Array.isArray(t) + ? 'array' + : null === t + ? 'null' + : typeof t + } + function Ge(t) { + return 'object' == typeof t && null !== t && !Array.isArray(t) + } + function ze(t) { + return t + } + function Ue(t, e) { + const r = 'color' === e.type, + n = t.stops && 'object' == typeof t.stops[0][0], + i = n || void 0 !== t.property, + o = n || !i, + a = t.type || (Ne(e) ? 'exponential' : 'interval') + if ( + (r && + ((t = M({}, t)).stops && + (t.stops = t.stops.map((t) => [t[0], J.parse(t[1])])), + t.default + ? (t.default = J.parse(t.default)) + : (t.default = J.parse(e.default))), + t.colorSpace && 'rgb' !== t.colorSpace && !ae[t.colorSpace]) + ) + throw new Error('Unknown color space: ' + t.colorSpace) + let s, l, u + if ('exponential' === a) s = We + else if ('interval' === a) s = Ye + else if ('categorical' === a) { + ;(s = Ve), (l = Object.create(null)) + for (const e of t.stops) l[e[0]] = e[1] + u = typeof t.stops[0][0] + } else { + if ('identity' !== a) + throw new Error(`Unknown function type "${a}"`) + s = qe + } + if (n) { + const r = {}, + n = [] + for (let e = 0; e < t.stops.length; e++) { + const i = t.stops[e], + o = i[0].zoom + void 0 === r[o] && + ((r[o] = { + zoom: o, + type: t.type, + property: t.property, + default: t.default, + stops: [], + }), + n.push(o)), + r[o].stops.push([i[0].value, i[1]]) + } + const i = [] + for (const t of n) i.push([r[t].zoom, Ue(r[t], e)]) + const o = { name: 'linear' } + return { + kind: 'composite', + interpolationType: o, + interpolationFactor: se.interpolationFactor.bind(void 0, o), + zoomStops: i.map((t) => t[0]), + evaluate: ({ zoom: r }, n) => + We({ stops: i, base: t.base }, e, r).evaluate(r, n), + } + } + if (o) { + const r = + 'exponential' === a + ? { name: 'exponential', base: void 0 !== t.base ? t.base : 1 } + : null + return { + kind: 'camera', + interpolationType: r, + interpolationFactor: se.interpolationFactor.bind(void 0, r), + zoomStops: t.stops.map((t) => t[0]), + evaluate: ({ zoom: r }) => s(t, e, r, l, u), + } + } + return { + kind: 'source', + evaluate(r, n) { + const i = n && n.properties ? n.properties[t.property] : void 0 + return void 0 === i ? Be(t.default, e.default) : s(t, e, i, l, u) + }, + } + } + function Be(t, e, r) { + return void 0 !== t ? t : void 0 !== e ? e : void 0 !== r ? r : void 0 + } + function Ve(t, e, r, n, i) { + return Be(typeof r === i ? n[r] : void 0, t.default, e.default) + } + function Ye(t, e, r) { + if ('number' !== De(r)) return Be(t.default, e.default) + const n = t.stops.length + if (1 === n) return t.stops[0][1] + if (r <= t.stops[0][0]) return t.stops[0][1] + if (r >= t.stops[n - 1][0]) return t.stops[n - 1][1] + const i = Ut( + t.stops.map((t) => t[0]), + r, + ) + return t.stops[i][1] + } + function We(t, e, r) { + const n = void 0 !== t.base ? t.base : 1 + if ('number' !== De(r)) return Be(t.default, e.default) + const i = t.stops.length + if (1 === i) return t.stops[0][1] + if (r <= t.stops[0][0]) return t.stops[0][1] + if (r >= t.stops[i - 1][0]) return t.stops[i - 1][1] + const o = Ut( + t.stops.map((t) => t[0]), + r, + ), + a = (function (t, e, r, n) { + const i = n - r, + o = t - r + return 0 === i + ? 0 + : 1 === e + ? o / i + : (Math.pow(e, o) - 1) / (Math.pow(e, i) - 1) + })(r, n, t.stops[o][0], t.stops[o + 1][0]), + s = t.stops[o][1], + l = t.stops[o + 1][1] + let u = qt[e.type] || ze + if (t.colorSpace && 'rgb' !== t.colorSpace) { + const e = ae[t.colorSpace] + u = (t, r) => + e.reverse(e.interpolate(e.forward(t), e.forward(r), a)) + } + return 'function' == typeof s.evaluate + ? { + evaluate(...t) { + const e = s.evaluate.apply(void 0, t), + r = l.evaluate.apply(void 0, t) + if (void 0 !== e && void 0 !== r) return u(e, r, a) + }, + } + : u(s, l, a) + } + function qe(t, e, r) { + return ( + 'color' === e.type + ? (r = J.parse(r)) + : 'formatted' === e.type + ? (r = et.fromString(r.toString())) + : 'resolvedImage' === e.type + ? (r = rt.fromString(r.toString())) + : De(r) === e.type || + ('enum' === e.type && e.values[r]) || + (r = void 0), + Be(r, t.default, e.default) + ) + } + mt.register(Pe, { + error: [ + { kind: 'error' }, + [N], + (t, [e]) => { + throw new lt(e.evaluate(t)) + }, + ], + typeof: [N, [U], (t, [e]) => q(ot(e.evaluate(t)))], + 'to-rgba': [W(j, 4), [G], (t, [e]) => e.evaluate(t).toArray()], + rgb: [G, [j, j, j], Re], + rgba: [G, [j, j, j, j], Re], + has: { + type: D, + overloads: [ + [[N], (t, [e]) => Ie(e.evaluate(t), t.properties())], + [[N, z], (t, [e, r]) => Ie(e.evaluate(t), r.evaluate(t))], + ], + }, + get: { + type: U, + overloads: [ + [[N], (t, [e]) => Le(e.evaluate(t), t.properties())], + [[N, z], (t, [e, r]) => Le(e.evaluate(t), r.evaluate(t))], + ], + }, + 'feature-state': [ + U, + [N], + (t, [e]) => Le(e.evaluate(t), t.featureState || {}), + ], + properties: [z, [], (t) => t.properties()], + 'geometry-type': [N, [], (t) => t.geometryType()], + id: [U, [], (t) => t.id()], + zoom: [j, [], (t) => t.globals.zoom], + 'heatmap-density': [j, [], (t) => t.globals.heatmapDensity || 0], + 'line-progress': [j, [], (t) => t.globals.lineProgress || 0], + 'sky-radial-progress': [ + j, + [], + (t) => t.globals.skyRadialProgress || 0, + ], + accumulated: [ + U, + [], + (t) => + void 0 === t.globals.accumulated ? null : t.globals.accumulated, + ], + '+': [ + j, + Me(j), + (t, e) => { + let r = 0 + for (const n of e) r += n.evaluate(t) + return r + }, + ], + '*': [ + j, + Me(j), + (t, e) => { + let r = 1 + for (const n of e) r *= n.evaluate(t) + return r + }, + ], + '-': { + type: j, + overloads: [ + [[j, j], (t, [e, r]) => e.evaluate(t) - r.evaluate(t)], + [[j], (t, [e]) => -e.evaluate(t)], + ], + }, + '/': [j, [j, j], (t, [e, r]) => e.evaluate(t) / r.evaluate(t)], + '%': [j, [j, j], (t, [e, r]) => e.evaluate(t) % r.evaluate(t)], + ln2: [j, [], () => Math.LN2], + pi: [j, [], () => Math.PI], + e: [j, [], () => Math.E], + '^': [ + j, + [j, j], + (t, [e, r]) => Math.pow(e.evaluate(t), r.evaluate(t)), + ], + sqrt: [j, [j], (t, [e]) => Math.sqrt(e.evaluate(t))], + log10: [j, [j], (t, [e]) => Math.log(e.evaluate(t)) / Math.LN10], + ln: [j, [j], (t, [e]) => Math.log(e.evaluate(t))], + log2: [j, [j], (t, [e]) => Math.log(e.evaluate(t)) / Math.LN2], + sin: [j, [j], (t, [e]) => Math.sin(e.evaluate(t))], + cos: [j, [j], (t, [e]) => Math.cos(e.evaluate(t))], + tan: [j, [j], (t, [e]) => Math.tan(e.evaluate(t))], + asin: [j, [j], (t, [e]) => Math.asin(e.evaluate(t))], + acos: [j, [j], (t, [e]) => Math.acos(e.evaluate(t))], + atan: [j, [j], (t, [e]) => Math.atan(e.evaluate(t))], + min: [j, Me(j), (t, e) => Math.min(...e.map((e) => e.evaluate(t)))], + max: [j, Me(j), (t, e) => Math.max(...e.map((e) => e.evaluate(t)))], + abs: [j, [j], (t, [e]) => Math.abs(e.evaluate(t))], + round: [ + j, + [j], + (t, [e]) => { + const r = e.evaluate(t) + return r < 0 ? -Math.round(-r) : Math.round(r) + }, + ], + floor: [j, [j], (t, [e]) => Math.floor(e.evaluate(t))], + ceil: [j, [j], (t, [e]) => Math.ceil(e.evaluate(t))], + 'filter-==': [ + D, + [N, U], + (t, [e, r]) => t.properties()[e.value] === r.value, + ], + 'filter-id-==': [D, [U], (t, [e]) => t.id() === e.value], + 'filter-type-==': [D, [N], (t, [e]) => t.geometryType() === e.value], + 'filter-<': [ + D, + [N, U], + (t, [e, r]) => { + const n = t.properties()[e.value], + i = r.value + return typeof n == typeof i && n < i + }, + ], + 'filter-id-<': [ + D, + [U], + (t, [e]) => { + const r = t.id(), + n = e.value + return typeof r == typeof n && r < n + }, + ], + 'filter->': [ + D, + [N, U], + (t, [e, r]) => { + const n = t.properties()[e.value], + i = r.value + return typeof n == typeof i && n > i + }, + ], + 'filter-id->': [ + D, + [U], + (t, [e]) => { + const r = t.id(), + n = e.value + return typeof r == typeof n && r > n + }, + ], + 'filter-<=': [ + D, + [N, U], + (t, [e, r]) => { + const n = t.properties()[e.value], + i = r.value + return typeof n == typeof i && n <= i + }, + ], + 'filter-id-<=': [ + D, + [U], + (t, [e]) => { + const r = t.id(), + n = e.value + return typeof r == typeof n && r <= n + }, + ], + 'filter->=': [ + D, + [N, U], + (t, [e, r]) => { + const n = t.properties()[e.value], + i = r.value + return typeof n == typeof i && n >= i + }, + ], + 'filter-id->=': [ + D, + [U], + (t, [e]) => { + const r = t.id(), + n = e.value + return typeof r == typeof n && r >= n + }, + ], + 'filter-has': [D, [U], (t, [e]) => e.value in t.properties()], + 'filter-has-id': [D, [], (t) => null !== t.id() && void 0 !== t.id()], + 'filter-type-in': [ + D, + [W(N)], + (t, [e]) => e.value.indexOf(t.geometryType()) >= 0, + ], + 'filter-id-in': [D, [W(U)], (t, [e]) => e.value.indexOf(t.id()) >= 0], + 'filter-in-small': [ + D, + [N, W(U)], + (t, [e, r]) => r.value.indexOf(t.properties()[e.value]) >= 0, + ], + 'filter-in-large': [ + D, + [N, W(U)], + (t, [e, r]) => + (function (t, e, r, n) { + for (; r <= n; ) { + const i = (r + n) >> 1 + if (e[i] === t) return !0 + e[i] > t ? (n = i - 1) : (r = i + 1) + } + return !1 + })(t.properties()[e.value], r.value, 0, r.value.length - 1), + ], + all: { + type: D, + overloads: [ + [[D, D], (t, [e, r]) => e.evaluate(t) && r.evaluate(t)], + [ + Me(D), + (t, e) => { + for (const r of e) if (!r.evaluate(t)) return !1 + return !0 + }, + ], + ], + }, + any: { + type: D, + overloads: [ + [[D, D], (t, [e, r]) => e.evaluate(t) || r.evaluate(t)], + [ + Me(D), + (t, e) => { + for (const r of e) if (r.evaluate(t)) return !0 + return !1 + }, + ], + ], + }, + '!': [D, [D], (t, [e]) => !e.evaluate(t)], + 'is-supported-script': [ + D, + [N], + (t, [e]) => { + const r = t.globals && t.globals.isSupportedScript + return !r || r(e.evaluate(t)) + }, + ], + upcase: [N, [N], (t, [e]) => e.evaluate(t).toUpperCase()], + downcase: [N, [N], (t, [e]) => e.evaluate(t).toLowerCase()], + concat: [ + N, + Me(U), + (t, e) => e.map((e) => at(e.evaluate(t))).join(''), + ], + 'resolved-locale': [ + N, + [B], + (t, [e]) => e.evaluate(t).resolvedLocale(), + ], + }) + class Xe { + constructor(t, e) { + var r + ;(this.expression = t), + (this._warningHistory = {}), + (this._evaluator = new yt()), + (this._defaultValue = e + ? 'color' === (r = e).type && Ge(r.default) + ? new J(0, 0, 0, 0) + : 'color' === r.type + ? J.parse(r.default) || null + : void 0 === r.default + ? null + : r.default + : null), + (this._enumValues = e && 'enum' === e.type ? e.values : null) + } + evaluateWithoutErrorHandling(t, e, r, n, i, o) { + return ( + (this._evaluator.globals = t), + (this._evaluator.feature = e), + (this._evaluator.featureState = r), + (this._evaluator.canonical = n), + (this._evaluator.availableImages = i || null), + (this._evaluator.formattedSection = o), + this.expression.evaluate(this._evaluator) + ) + } + evaluate(t, e, r, n, i, o) { + ;(this._evaluator.globals = t), + (this._evaluator.feature = e || null), + (this._evaluator.featureState = r || null), + (this._evaluator.canonical = n), + (this._evaluator.availableImages = i || null), + (this._evaluator.formattedSection = o || null) + try { + const t = this.expression.evaluate(this._evaluator) + if (null == t || ('number' == typeof t && t != t)) + return this._defaultValue + if (this._enumValues && !(t in this._enumValues)) + throw new lt( + `Expected value to be one of ${Object.keys(this._enumValues) + .map((t) => JSON.stringify(t)) + .join(', ')}, but found ${JSON.stringify(t)} instead.`, + ) + return t + } catch (t) { + return ( + this._warningHistory[t.message] || + ((this._warningHistory[t.message] = !0), + 'undefined' != typeof console && console.warn(t.message)), + this._defaultValue + ) + } + } + } + function Ze(t) { + return ( + Array.isArray(t) && + t.length > 0 && + 'string' == typeof t[0] && + t[0] in Pe + ) + } + function Ke(t, e) { + const r = new zt( + Pe, + [], + e + ? (function (t) { + const e = { + color: G, + string: N, + number: j, + enum: N, + boolean: D, + formatted: V, + resolvedImage: Y, + } + if ('array' === t.type) return W(e[t.value] || U, t.length) + return e[t.type] + })(e) + : void 0, + ), + n = r.parse( + t, + void 0, + void 0, + void 0, + e && 'string' === e.type ? { typeAnnotation: 'coerce' } : void 0, + ) + return n ? Fe(new Xe(n, e)) : Ae(r.errors) + } + class He { + constructor(t, e) { + ;(this.kind = t), + (this._styleExpression = e), + (this.isStateDependent = 'constant' !== t && !Nt(e.expression)) + } + evaluateWithoutErrorHandling(t, e, r, n, i, o) { + return this._styleExpression.evaluateWithoutErrorHandling( + t, + e, + r, + n, + i, + o, + ) + } + evaluate(t, e, r, n, i, o) { + return this._styleExpression.evaluate(t, e, r, n, i, o) + } + } + class $e { + constructor(t, e, r, n) { + ;(this.kind = t), + (this.zoomStops = r), + (this._styleExpression = e), + (this.isStateDependent = 'camera' !== t && !Nt(e.expression)), + (this.interpolationType = n) + } + evaluateWithoutErrorHandling(t, e, r, n, i, o) { + return this._styleExpression.evaluateWithoutErrorHandling( + t, + e, + r, + n, + i, + o, + ) + } + evaluate(t, e, r, n, i, o) { + return this._styleExpression.evaluate(t, e, r, n, i, o) + } + interpolationFactor(t, e, r) { + return this.interpolationType + ? se.interpolationFactor(this.interpolationType, t, e, r) + : 0 + } + } + function Je(t, e) { + if ('error' === (t = Ke(t, e)).result) return t + const r = t.value.expression, + n = jt(r) + if (!n && !ke(e)) + return Ae([new F('', 'data expressions not supported')]) + const i = Dt(r, ['zoom']) + if (!i && !je(e)) + return Ae([new F('', 'zoom expressions not supported')]) + const o = (function t(e) { + let r = null + if (e instanceof ce) r = t(e.result) + else if (e instanceof ue) { + for (const n of e.args) if (((r = t(n)), r)) break + } else + (e instanceof Bt || e instanceof se) && + e.input instanceof mt && + 'zoom' === e.input.name && + (r = e) + if (r instanceof F) return r + return ( + e.eachChild((e) => { + const n = t(e) + n instanceof F + ? (r = n) + : !r && n + ? (r = new F( + '', + '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.', + )) + : r && + n && + r !== n && + (r = new F( + '', + 'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.', + )) + }), + r + ) + })(r) + if (!o && !i) + return Ae([ + new F( + '', + '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.', + ), + ]) + if (o instanceof F) return Ae([o]) + if (o instanceof se && !Ne(e)) + return Ae([ + new F( + '', + '"interpolate" expressions cannot be used with this property', + ), + ]) + if (!o) return Fe(new He(n ? 'constant' : 'source', t.value)) + const a = o instanceof se ? o.interpolation : void 0 + return Fe(new $e(n ? 'camera' : 'composite', t.value, o.labels, a)) + } + class Qe { + constructor(t, e) { + ;(this._parameters = t), + (this._specification = e), + M(this, Ue(this._parameters, this._specification)) + } + static deserialize(t) { + return new Qe(t._parameters, t._specification) + } + static serialize(t) { + return { + _parameters: t._parameters, + _specification: t._specification, + } + } + } + function tr(t) { + return 'object' == typeof t ? ['literal', t] : t + } + function er(t, e) { + let r = t.stops + if (!r) + return (function (t, e) { + const r = ['get', t.property] + if (void 0 === t.default) + return 'string' === e.type ? ['string', r] : r + if ('enum' === e.type) + return ['match', r, Object.keys(e.values), r, t.default] + { + const n = [ + 'color' === e.type ? 'to-color' : e.type, + r, + tr(t.default), + ] + return ( + 'array' === e.type && + n.splice(1, 0, e.value, e.length || null), + n + ) + } + })(t, e) + const n = r && 'object' == typeof r[0][0], + i = n || void 0 !== t.property, + o = n || !i + return ( + (r = r.map((t) => + !i && e.tokens && 'string' == typeof t[1] + ? [t[0], lr(t[1])] + : [t[0], tr(t[1])], + )), + n + ? (function (t, e, r) { + const n = {}, + i = {}, + o = [] + for (let e = 0; e < r.length; e++) { + const a = r[e], + s = a[0].zoom + void 0 === n[s] && + ((n[s] = { + zoom: s, + type: t.type, + property: t.property, + default: t.default, + }), + (i[s] = []), + o.push(s)), + i[s].push([a[0].value, a[1]]) + } + if ('exponential' === sr({}, e)) { + const r = [rr(t), ['linear'], ['zoom']] + for (const t of o) { + const o = ir(n[t], e, i[t]) + ar(r, t, o, !1) + } + return r + } + { + const t = ['step', ['zoom']] + for (const r of o) { + const o = ir(n[r], e, i[r]) + ar(t, r, o, !0) + } + return or(t), t + } + })(t, e, r) + : o + ? (function (t, e, r, n = ['zoom']) { + const i = sr(t, e) + let o, + a = !1 + if ('interval' === i) (o = ['step', n]), (a = !0) + else { + if ('exponential' !== i) + throw new Error(`Unknown zoom function type "${i}"`) + { + const e = void 0 !== t.base ? t.base : 1 + o = [ + rr(t), + 1 === e ? ['linear'] : ['exponential', e], + n, + ] + } + } + for (const t of r) ar(o, t[0], t[1], a) + return or(o), o + })(t, e, r) + : ir(t, e, r) + ) + } + function rr(t) { + switch (t.colorSpace) { + case 'hcl': + return 'interpolate-hcl' + case 'lab': + return 'interpolate-lab' + default: + return 'interpolate' + } + } + function nr(t, e) { + const r = tr( + ((n = t.default), + (i = e.default), + void 0 !== n ? n : void 0 !== i ? i : void 0), + ) + var n, i + return void 0 === r && 'resolvedImage' === e.type ? '' : r + } + function ir(t, e, r) { + const n = sr(t, e), + i = ['get', t.property] + if ('categorical' === n && 'boolean' == typeof r[0][0]) { + const n = ['case'] + for (const t of r) n.push(['==', i, t[0]], t[1]) + return n.push(nr(t, e)), n + } + if ('categorical' === n) { + const n = ['match', i] + for (const t of r) ar(n, t[0], t[1], !1) + return n.push(nr(t, e)), n + } + if ('interval' === n) { + const e = ['step', ['number', i]] + for (const t of r) ar(e, t[0], t[1], !0) + return ( + or(e), + void 0 === t.default + ? e + : ['case', ['==', ['typeof', i], 'number'], e, tr(t.default)] + ) + } + if ('exponential' === n) { + const e = void 0 !== t.base ? t.base : 1, + n = [ + rr(t), + 1 === e ? ['linear'] : ['exponential', e], + ['number', i], + ] + for (const t of r) ar(n, t[0], t[1], !1) + return void 0 === t.default + ? n + : ['case', ['==', ['typeof', i], 'number'], n, tr(t.default)] + } + throw new Error('Unknown property function type ' + n) + } + function or(t) { + 'step' === t[0] && 3 === t.length && (t.push(0), t.push(t[3])) + } + function ar(t, e, r, n) { + ;(t.length > 3 && e === t[t.length - 2]) || + ((n && 2 === t.length) || t.push(e), t.push(r)) + } + function sr(t, e) { + return t.type + ? t.type + : e.expression.interpolated + ? 'exponential' + : 'interval' + } + function lr(t) { + const e = ['concat'], + r = /{([^{}]+)}/g + let n = 0 + for (let i = r.exec(t); null !== i; i = r.exec(t)) { + const o = t.slice(n, r.lastIndex - i[0].length) + ;(n = r.lastIndex), o.length > 0 && e.push(o), e.push(['get', i[1]]) + } + if (1 === e.length) return t + if (n < t.length) e.push(t.slice(n)) + else if (2 === e.length) return ['to-string', e[1]] + return e + } + function ur(t) { + if (!0 === t || !1 === t) return !0 + if (!Array.isArray(t) || 0 === t.length) return !1 + switch (t[0]) { + case 'has': + return t.length >= 2 && '$id' !== t[1] && '$type' !== t[1] + case 'in': + return ( + t.length >= 3 && + ('string' != typeof t[1] || Array.isArray(t[2])) + ) + case '!in': + case '!has': + case 'none': + return !1 + case '==': + case '!=': + case '>': + case '>=': + case '<': + case '<=': + return ( + 3 !== t.length || Array.isArray(t[1]) || Array.isArray(t[2]) + ) + case 'any': + case 'all': + for (const e of t.slice(1)) + if (!ur(e) && 'boolean' != typeof e) return !1 + return !0 + default: + return !0 + } + } + const cr = { + type: 'boolean', + default: !1, + transition: !1, + 'property-type': 'data-driven', + expression: { interpolated: !1, parameters: ['zoom', 'feature'] }, + } + function hr(t) { + if (null == t) return { filter: () => !0, needGeometry: !1 } + ur(t) || (t = fr(t)) + const e = Ke(t, cr) + if ('error' === e.result) + throw new Error( + e.value.map((t) => `${t.key}: ${t.message}`).join(', '), + ) + return { + filter: (t, r, n) => e.value.evaluate(t, r, {}, n), + needGeometry: (function t(e) { + if (!Array.isArray(e)) return !1 + if ('within' === e[0]) return !0 + for (let r = 1; r < e.length; r++) if (t(e[r])) return !0 + return !1 + })(t), + } + } + function pr(t, e) { + return t < e ? -1 : t > e ? 1 : 0 + } + function fr(t) { + if (!t) return !0 + const e = t[0] + if (t.length <= 1) return 'any' !== e + var r + return '==' === e + ? dr(t[1], t[2], '==') + : '!=' === e + ? mr(dr(t[1], t[2], '==')) + : '<' === e || '>' === e || '<=' === e || '>=' === e + ? dr(t[1], t[2], e) + : 'any' === e + ? ((r = t.slice(1)), ['any'].concat(r.map(fr))) + : 'all' === e + ? ['all'].concat(t.slice(1).map(fr)) + : 'none' === e + ? ['all'].concat(t.slice(1).map(fr).map(mr)) + : 'in' === e + ? gr(t[1], t.slice(2)) + : '!in' === e + ? mr(gr(t[1], t.slice(2))) + : 'has' === e + ? yr(t[1]) + : '!has' === e + ? mr(yr(t[1])) + : 'within' !== e || t + } + function dr(t, e, r) { + switch (t) { + case '$type': + return ['filter-type-' + r, e] + case '$id': + return ['filter-id-' + r, e] + default: + return ['filter-' + r, t, e] + } + } + function gr(t, e) { + if (0 === e.length) return !1 + switch (t) { + case '$type': + return ['filter-type-in', ['literal', e]] + case '$id': + return ['filter-id-in', ['literal', e]] + default: + return e.length > 200 && !e.some((t) => typeof t != typeof e[0]) + ? ['filter-in-large', t, ['literal', e.sort(pr)]] + : ['filter-in-small', t, ['literal', e]] + } + } + function yr(t) { + switch (t) { + case '$type': + return !0 + case '$id': + return ['filter-has-id'] + default: + return ['filter-has', t] + } + } + function mr(t) { + return ['!', t] + } + var vr = [ + 'type', + 'source', + 'source-layer', + 'minzoom', + 'maxzoom', + 'filter', + 'layout', + ] + function _r(t, e) { + const r = {} + for (const e in t) 'ref' !== e && (r[e] = t[e]) + return ( + vr.forEach((t) => { + t in e && (r[t] = e[t]) + }), + r + ) + } + function br(t) { + t = t.slice() + const e = Object.create(null) + for (let r = 0; r < t.length; r++) e[t[r].id] = t[r] + for (let r = 0; r < t.length; r++) + 'ref' in t[r] && (t[r] = _r(t[r], e[t[r].ref])) + return t + } + class xr { + constructor(t, e, r, n) { + ;(this.message = (t ? t + ': ' : '') + r), + n && (this.identifier = n), + null != e && e.__line__ && (this.line = e.__line__) + } + } + class wr { + constructor(t) { + ;(this.error = t), (this.message = t.message) + const e = t.message.match(/line (\d+)/) + this.line = e ? parseInt(e[1], 10) : 0 + } + } + function Sr(t) { + const e = t.key, + r = t.value + return r + ? [new xr(e, r, 'constants have been deprecated as of v8')] + : [] + } + function Er(t) { + return t instanceof Number || + t instanceof String || + t instanceof Boolean + ? t.valueOf() + : t + } + function Tr(t) { + if (Array.isArray(t)) return t.map(Tr) + if ( + t instanceof Object && + !( + t instanceof Number || + t instanceof String || + t instanceof Boolean + ) + ) { + const e = {} + for (const r in t) e[r] = Tr(t[r]) + return e + } + return Er(t) + } + function Cr(t) { + const e = t.key, + r = t.value, + n = t.valueSpec || {}, + i = t.objectElementValidators || {}, + o = t.style, + a = t.styleSpec + let s = [] + const l = De(r) + if ('object' !== l) + return [new xr(e, r, `object expected, ${l} found`)] + for (const t in r) { + const l = t.split('.')[0], + u = n[l] || n['*'] + let c + if (i[l]) c = i[l] + else if (n[l]) c = Vr + else if (i['*']) c = i['*'] + else { + if (!n['*']) { + s.push(new xr(e, r[t], `unknown property "${t}"`)) + continue + } + c = Vr + } + s = s.concat( + c( + { + key: (e ? e + '.' : e) + t, + value: r[t], + valueSpec: u, + style: o, + styleSpec: a, + object: r, + objectKey: t, + }, + r, + ), + ) + } + for (const t in n) + i[t] || + (n[t].required && + void 0 === n[t].default && + void 0 === r[t] && + s.push(new xr(e, r, `missing required property "${t}"`))) + return s + } + function Or(t) { + const e = t.value, + r = t.valueSpec, + n = t.style, + i = t.styleSpec, + o = t.key, + a = t.arrayElementValidator || Vr + if ('array' !== De(e)) + return [new xr(o, e, `array expected, ${De(e)} found`)] + if (r.length && e.length !== r.length) + return [ + new xr( + o, + e, + `array length ${r.length} expected, length ${e.length} found`, + ), + ] + if (r['min-length'] && e.length < r['min-length']) + return [ + new xr( + o, + e, + `array length at least ${r['min-length']} expected, length ${e.length} found`, + ), + ] + let s = { type: r.value, values: r.values } + i.$version < 7 && (s.function = r.function), + 'object' === De(r.value) && (s = r.value) + let l = [] + for (let t = 0; t < e.length; t++) + l = l.concat( + a({ + array: e, + arrayIndex: t, + value: e[t], + valueSpec: s, + style: n, + styleSpec: i, + key: `${o}[${t}]`, + }), + ) + return l + } + function Pr(t) { + const e = t.key, + r = t.value, + n = t.valueSpec + let i = De(r) + return ( + 'number' === i && r != r && (i = 'NaN'), + 'number' !== i + ? [new xr(e, r, `number expected, ${i} found`)] + : 'minimum' in n && r < n.minimum + ? [ + new xr( + e, + r, + `${r} is less than the minimum value ${n.minimum}`, + ), + ] + : 'maximum' in n && r > n.maximum + ? [ + new xr( + e, + r, + `${r} is greater than the maximum value ${n.maximum}`, + ), + ] + : [] + ) + } + function Rr(t) { + const e = t.valueSpec, + r = Er(t.value.type) + let n, + i, + o, + a = {} + const s = 'categorical' !== r && void 0 === t.value.property, + l = !s, + u = + 'array' === De(t.value.stops) && + 'array' === De(t.value.stops[0]) && + 'object' === De(t.value.stops[0][0]), + c = Cr({ + key: t.key, + value: t.value, + valueSpec: t.styleSpec.function, + style: t.style, + styleSpec: t.styleSpec, + objectElementValidators: { + stops: function (t) { + if ('identity' === r) + return [ + new xr( + t.key, + t.value, + 'identity function may not have a "stops" property', + ), + ] + let e = [] + const n = t.value + ;(e = e.concat( + Or({ + key: t.key, + value: n, + valueSpec: t.valueSpec, + style: t.style, + styleSpec: t.styleSpec, + arrayElementValidator: h, + }), + )), + 'array' === De(n) && + 0 === n.length && + e.push( + new xr(t.key, n, 'array must have at least one stop'), + ) + return e + }, + default: function (t) { + return Vr({ + key: t.key, + value: t.value, + valueSpec: e, + style: t.style, + styleSpec: t.styleSpec, + }) + }, + }, + }) + return ( + 'identity' === r && + s && + c.push( + new xr(t.key, t.value, 'missing required property "property"'), + ), + 'identity' === r || + t.value.stops || + c.push( + new xr(t.key, t.value, 'missing required property "stops"'), + ), + 'exponential' === r && + t.valueSpec.expression && + !Ne(t.valueSpec) && + c.push( + new xr(t.key, t.value, 'exponential functions not supported'), + ), + t.styleSpec.$version >= 8 && + (l && !ke(t.valueSpec) + ? c.push( + new xr(t.key, t.value, 'property functions not supported'), + ) + : s && + !je(t.valueSpec) && + c.push( + new xr(t.key, t.value, 'zoom functions not supported'), + )), + ('categorical' !== r && !u) || + void 0 !== t.value.property || + c.push(new xr(t.key, t.value, '"property" property is required')), + c + ) + function h(t) { + let r = [] + const n = t.value, + s = t.key + if ('array' !== De(n)) + return [new xr(s, n, `array expected, ${De(n)} found`)] + if (2 !== n.length) + return [ + new xr( + s, + n, + `array length 2 expected, length ${n.length} found`, + ), + ] + if (u) { + if ('object' !== De(n[0])) + return [new xr(s, n, `object expected, ${De(n[0])} found`)] + if (void 0 === n[0].zoom) + return [new xr(s, n, 'object stop key must have zoom')] + if (void 0 === n[0].value) + return [new xr(s, n, 'object stop key must have value')] + if (o && o > Er(n[0].zoom)) + return [ + new xr( + s, + n[0].zoom, + 'stop zoom values must appear in ascending order', + ), + ] + Er(n[0].zoom) !== o && + ((o = Er(n[0].zoom)), (i = void 0), (a = {})), + (r = r.concat( + Cr({ + key: s + '[0]', + value: n[0], + valueSpec: { zoom: {} }, + style: t.style, + styleSpec: t.styleSpec, + objectElementValidators: { zoom: Pr, value: p }, + }), + )) + } else + r = r.concat( + p( + { + key: s + '[0]', + value: n[0], + valueSpec: {}, + style: t.style, + styleSpec: t.styleSpec, + }, + n, + ), + ) + return Ze(Tr(n[1])) + ? r.concat([ + new xr( + s + '[1]', + n[1], + 'expressions are not allowed in function stops.', + ), + ]) + : r.concat( + Vr({ + key: s + '[1]', + value: n[1], + valueSpec: e, + style: t.style, + styleSpec: t.styleSpec, + }), + ) + } + function p(t, o) { + const s = De(t.value), + l = Er(t.value), + u = null !== t.value ? t.value : o + if (n) { + if (s !== n) + return [ + new xr( + t.key, + u, + `${s} stop domain type must match previous stop domain type ${n}`, + ), + ] + } else n = s + if ('number' !== s && 'string' !== s && 'boolean' !== s) + return [ + new xr( + t.key, + u, + 'stop domain value must be a number, string, or boolean', + ), + ] + if ('number' !== s && 'categorical' !== r) { + let n = `number expected, ${s} found` + return ( + ke(e) && + void 0 === r && + (n += + '\nIf you intended to use a categorical function, specify `"type": "categorical"`.'), + [new xr(t.key, u, n)] + ) + } + return 'categorical' !== r || + 'number' !== s || + (isFinite(l) && Math.floor(l) === l) + ? 'categorical' !== r && 'number' === s && void 0 !== i && l < i + ? [ + new xr( + t.key, + u, + 'stop domain values must appear in ascending order', + ), + ] + : ((i = l), + 'categorical' === r && l in a + ? [new xr(t.key, u, 'stop domain values must be unique')] + : ((a[l] = !0), [])) + : [new xr(t.key, u, 'integer expected, found ' + l)] + } + } + function Ir(t) { + const e = ('property' === t.expressionContext ? Je : Ke)( + Tr(t.value), + t.valueSpec, + ) + if ('error' === e.result) + return e.value.map( + (e) => new xr(`${t.key}${e.key}`, t.value, e.message), + ) + const r = e.value.expression || e.value._styleExpression.expression + if ( + 'property' === t.expressionContext && + 'text-font' === t.propertyKey && + !r.outputDefined() + ) + return [ + new xr( + t.key, + t.value, + `Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`, + ), + ] + if ( + 'property' === t.expressionContext && + 'layout' === t.propertyType && + !Nt(r) + ) + return [ + new xr( + t.key, + t.value, + '"feature-state" data expressions are not supported with layout properties.', + ), + ] + if ('filter' === t.expressionContext && !Nt(r)) + return [ + new xr( + t.key, + t.value, + '"feature-state" data expressions are not supported with filters.', + ), + ] + if ( + t.expressionContext && + 0 === t.expressionContext.indexOf('cluster') + ) { + if (!Dt(r, ['zoom', 'feature-state'])) + return [ + new xr( + t.key, + t.value, + '"zoom" and "feature-state" expressions are not supported with cluster properties.', + ), + ] + if ('cluster-initial' === t.expressionContext && !jt(r)) + return [ + new xr( + t.key, + t.value, + 'Feature data expressions are not supported with initial expression part of cluster properties.', + ), + ] + } + return [] + } + function Lr(t) { + const e = t.key, + r = t.value, + n = t.valueSpec, + i = [] + return ( + Array.isArray(n.values) + ? -1 === n.values.indexOf(Er(r)) && + i.push( + new xr( + e, + r, + `expected one of [${n.values.join(', ')}], ${JSON.stringify(r)} found`, + ), + ) + : -1 === Object.keys(n.values).indexOf(Er(r)) && + i.push( + new xr( + e, + r, + `expected one of [${Object.keys(n.values).join(', ')}], ${JSON.stringify(r)} found`, + ), + ), + i + ) + } + function Mr(t) { + return ur(Tr(t.value)) + ? Ir( + M({}, t, { + expressionContext: 'filter', + valueSpec: { value: 'boolean' }, + }), + ) + : (function t(e) { + const r = e.value, + n = e.key + if ('array' !== De(r)) + return [new xr(n, r, `array expected, ${De(r)} found`)] + const i = e.styleSpec + let o, + a = [] + if (r.length < 1) + return [ + new xr(n, r, 'filter array must have at least 1 element'), + ] + switch ( + ((a = a.concat( + Lr({ + key: n + '[0]', + value: r[0], + valueSpec: i.filter_operator, + style: e.style, + styleSpec: e.styleSpec, + }), + )), + Er(r[0])) + ) { + case '<': + case '<=': + case '>': + case '>=': + r.length >= 2 && + '$type' === Er(r[1]) && + a.push( + new xr( + n, + r, + `"$type" cannot be use with operator "${r[0]}"`, + ), + ) + case '==': + case '!=': + 3 !== r.length && + a.push( + new xr( + n, + r, + `filter array for operator "${r[0]}" must have 3 elements`, + ), + ) + case 'in': + case '!in': + r.length >= 2 && + ((o = De(r[1])), + 'string' !== o && + a.push( + new xr( + n + '[1]', + r[1], + `string expected, ${o} found`, + ), + )) + for (let t = 2; t < r.length; t++) + (o = De(r[t])), + '$type' === Er(r[1]) + ? (a = a.concat( + Lr({ + key: `${n}[${t}]`, + value: r[t], + valueSpec: i.geometry_type, + style: e.style, + styleSpec: e.styleSpec, + }), + )) + : 'string' !== o && + 'number' !== o && + 'boolean' !== o && + a.push( + new xr( + `${n}[${t}]`, + r[t], + `string, number, or boolean expected, ${o} found`, + ), + ) + break + case 'any': + case 'all': + case 'none': + for (let i = 1; i < r.length; i++) + a = a.concat( + t({ + key: `${n}[${i}]`, + value: r[i], + style: e.style, + styleSpec: e.styleSpec, + }), + ) + break + case 'has': + case '!has': + ;(o = De(r[1])), + 2 !== r.length + ? a.push( + new xr( + n, + r, + `filter array for "${r[0]}" operator must have 2 elements`, + ), + ) + : 'string' !== o && + a.push( + new xr( + n + '[1]', + r[1], + `string expected, ${o} found`, + ), + ) + break + case 'within': + ;(o = De(r[1])), + 2 !== r.length + ? a.push( + new xr( + n, + r, + `filter array for "${r[0]}" operator must have 2 elements`, + ), + ) + : 'object' !== o && + a.push( + new xr( + n + '[1]', + r[1], + `object expected, ${o} found`, + ), + ) + } + return a + })(t) + } + function Fr(t, e) { + const r = t.key, + n = t.style, + i = t.styleSpec, + o = t.value, + a = t.objectKey, + s = i[`${e}_${t.layerType}`] + if (!s) return [] + const l = a.match(/^(.*)-transition$/) + if ('paint' === e && l && s[l[1]] && s[l[1]].transition) + return Vr({ + key: r, + value: o, + valueSpec: i.transition, + style: n, + styleSpec: i, + }) + const u = t.valueSpec || s[a] + if (!u) return [new xr(r, o, `unknown property "${a}"`)] + let c + if ( + 'string' === De(o) && + ke(u) && + !u.tokens && + (c = /^{([^}]+)}$/.exec(o)) + ) + return [ + new xr( + r, + o, + `"${a}" does not support interpolation syntax\nUse an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(c[1])} }\`.`, + ), + ] + const h = [] + return ( + 'symbol' === t.layerType && + ('text-field' === a && + n && + !n.glyphs && + h.push( + new xr( + r, + o, + 'use of "text-field" requires a style "glyphs" property', + ), + ), + 'text-font' === a && + Ge(Tr(o)) && + 'identity' === Er(o.type) && + h.push( + new xr( + r, + o, + '"text-font" does not support identity functions', + ), + )), + h.concat( + Vr({ + key: t.key, + value: o, + valueSpec: u, + style: n, + styleSpec: i, + expressionContext: 'property', + propertyType: e, + propertyKey: a, + }), + ) + ) + } + function Ar(t) { + return Fr(t, 'paint') + } + function kr(t) { + return Fr(t, 'layout') + } + function jr(t) { + let e = [] + const r = t.value, + n = t.key, + i = t.style, + o = t.styleSpec + r.type || + r.ref || + e.push(new xr(n, r, 'either "type" or "ref" is required')) + let a = Er(r.type) + const s = Er(r.ref) + if (r.id) { + const o = Er(r.id) + for (let a = 0; a < t.arrayIndex; a++) { + const t = i.layers[a] + Er(t.id) === o && + e.push( + new xr( + n, + r.id, + `duplicate layer id "${r.id}", previously used at line ${t.id.__line__}`, + ), + ) + } + } + if ('ref' in r) { + let t + ;['type', 'source', 'source-layer', 'filter', 'layout'].forEach( + (t) => { + t in r && + e.push(new xr(n, r[t], `"${t}" is prohibited for ref layers`)) + }, + ), + i.layers.forEach((e) => { + Er(e.id) === s && (t = e) + }), + t + ? t.ref + ? e.push( + new xr( + n, + r.ref, + 'ref cannot reference another ref layer', + ), + ) + : (a = Er(t.type)) + : e.push(new xr(n, r.ref, `ref layer "${s}" not found`)) + } else if ('background' !== a && 'sky' !== a) + if (r.source) { + const t = i.sources && i.sources[r.source], + o = t && Er(t.type) + t + ? 'vector' === o && 'raster' === a + ? e.push( + new xr( + n, + r.source, + `layer "${r.id}" requires a raster source`, + ), + ) + : 'raster' === o && 'raster' !== a + ? e.push( + new xr( + n, + r.source, + `layer "${r.id}" requires a vector source`, + ), + ) + : 'vector' !== o || r['source-layer'] + ? 'raster-dem' === o && 'hillshade' !== a + ? e.push( + new xr( + n, + r.source, + "raster-dem source can only be used with layer type 'hillshade'.", + ), + ) + : 'line' !== a || + !r.paint || + !r.paint['line-gradient'] || + ('geojson' === o && t.lineMetrics) || + e.push( + new xr( + n, + r, + `layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`, + ), + ) + : e.push( + new xr( + n, + r, + `layer "${r.id}" must specify a "source-layer"`, + ), + ) + : e.push(new xr(n, r.source, `source "${r.source}" not found`)) + } else e.push(new xr(n, r, 'missing required property "source"')) + return ( + (e = e.concat( + Cr({ + key: n, + value: r, + valueSpec: o.layer, + style: t.style, + styleSpec: t.styleSpec, + objectElementValidators: { + '*': () => [], + type: () => + Vr({ + key: n + '.type', + value: r.type, + valueSpec: o.layer.type, + style: t.style, + styleSpec: t.styleSpec, + object: r, + objectKey: 'type', + }), + filter: Mr, + layout: (t) => + Cr({ + layer: r, + key: t.key, + value: t.value, + style: t.style, + styleSpec: t.styleSpec, + objectElementValidators: { + '*': (t) => kr(M({ layerType: a }, t)), + }, + }), + paint: (t) => + Cr({ + layer: r, + key: t.key, + value: t.value, + style: t.style, + styleSpec: t.styleSpec, + objectElementValidators: { + '*': (t) => Ar(M({ layerType: a }, t)), + }, + }), + }, + }), + )), + e + ) + } + function Nr(t) { + const e = t.value, + r = t.key, + n = De(e) + return 'string' !== n + ? [new xr(r, e, `string expected, ${n} found`)] + : [] + } + const Dr = { + promoteId: function ({ key: t, value: e }) { + if ('string' === De(e)) return Nr({ key: t, value: e }) + { + const r = [] + for (const n in e) + r.push(...Nr({ key: `${t}.${n}`, value: e[n] })) + return r + } + }, + } + function Gr(t) { + const e = t.value, + r = t.key, + n = t.styleSpec, + i = t.style + if (!e.type) return [new xr(r, e, '"type" is required')] + const o = Er(e.type) + let a + switch (o) { + case 'vector': + case 'raster': + case 'raster-dem': + return ( + (a = Cr({ + key: r, + value: e, + valueSpec: n['source_' + o.replace('-', '_')], + style: t.style, + styleSpec: n, + objectElementValidators: Dr, + })), + a + ) + case 'geojson': + if ( + ((a = Cr({ + key: r, + value: e, + valueSpec: n.source_geojson, + style: i, + styleSpec: n, + objectElementValidators: Dr, + })), + e.cluster) + ) + for (const t in e.clusterProperties) { + const [n, i] = e.clusterProperties[t], + o = + 'string' == typeof n + ? [n, ['accumulated'], ['get', t]] + : n + a.push( + ...Ir({ + key: `${r}.${t}.map`, + value: i, + expressionContext: 'cluster-map', + }), + ), + a.push( + ...Ir({ + key: `${r}.${t}.reduce`, + value: o, + expressionContext: 'cluster-reduce', + }), + ) + } + return a + case 'video': + return Cr({ + key: r, + value: e, + valueSpec: n.source_video, + style: i, + styleSpec: n, + }) + case 'image': + return Cr({ + key: r, + value: e, + valueSpec: n.source_image, + style: i, + styleSpec: n, + }) + case 'canvas': + return [ + new xr( + r, + null, + 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', + 'source.canvas', + ), + ] + default: + return Lr({ + key: r + '.type', + value: e.type, + valueSpec: { + values: [ + 'vector', + 'raster', + 'raster-dem', + 'geojson', + 'video', + 'image', + ], + }, + style: i, + styleSpec: n, + }) + } + } + function zr(t) { + const e = t.value, + r = t.styleSpec, + n = r.light, + i = t.style + let o = [] + const a = De(e) + if (void 0 === e) return o + if ('object' !== a) + return ( + (o = o.concat([ + new xr('light', e, `object expected, ${a} found`), + ])), + o + ) + for (const t in e) { + const a = t.match(/^(.*)-transition$/) + o = + a && n[a[1]] && n[a[1]].transition + ? o.concat( + Vr({ + key: t, + value: e[t], + valueSpec: r.transition, + style: i, + styleSpec: r, + }), + ) + : n[t] + ? o.concat( + Vr({ + key: t, + value: e[t], + valueSpec: n[t], + style: i, + styleSpec: r, + }), + ) + : o.concat([new xr(t, e[t], `unknown property "${t}"`)]) + } + return o + } + function Ur(t) { + const e = t.value, + r = t.key, + n = t.style, + i = t.styleSpec, + o = i.terrain + let a = [] + const s = De(e) + if (void 0 === e) return a + if ('object' !== s) + return ( + (a = a.concat([ + new xr('terrain', e, `object expected, ${s} found`), + ])), + a + ) + for (const t in e) { + const r = t.match(/^(.*)-transition$/) + a = + r && o[r[1]] && o[r[1]].transition + ? a.concat( + Vr({ + key: t, + value: e[t], + valueSpec: i.transition, + style: n, + styleSpec: i, + }), + ) + : o[t] + ? a.concat( + Vr({ + key: t, + value: e[t], + valueSpec: o[t], + style: n, + styleSpec: i, + }), + ) + : a.concat([new xr(t, e[t], `unknown property "${t}"`)]) + } + if (e.source) { + const t = n.sources && n.sources[e.source], + i = t && Er(t.type) + t + ? 'raster-dem' !== i && + a.push( + new xr( + r, + e.source, + `terrain cannot be used with a source of type ${i}, it only be used with a "raster-dem" source type`, + ), + ) + : a.push(new xr(r, e.source, `source "${e.source}" not found`)) + } else + a.push( + new xr(r, e, 'terrain is missing required property "source"'), + ) + return a + } + const Br = { + '*': () => [], + array: Or, + boolean: function (t) { + const e = t.value, + r = t.key, + n = De(e) + return 'boolean' !== n + ? [new xr(r, e, `boolean expected, ${n} found`)] + : [] + }, + number: Pr, + color: function (t) { + const e = t.key, + r = t.value, + n = De(r) + return 'string' !== n + ? [new xr(e, r, `color expected, ${n} found`)] + : null === $(r) + ? [new xr(e, r, `color expected, "${r}" found`)] + : [] + }, + constants: Sr, + enum: Lr, + filter: Mr, + function: Rr, + layer: jr, + object: Cr, + source: Gr, + light: zr, + terrain: Ur, + string: Nr, + formatted: function (t) { + return 0 === Nr(t).length ? [] : Ir(t) + }, + resolvedImage: function (t) { + return 0 === Nr(t).length ? [] : Ir(t) + }, + } + function Vr(t) { + const e = t.value, + r = t.valueSpec, + n = t.styleSpec + if (r.expression && Ge(Er(e))) return Rr(t) + if (r.expression && Ze(Tr(e))) return Ir(t) + if (r.type && Br[r.type]) return Br[r.type](t) + return Cr(M({}, t, { valueSpec: r.type ? n[r.type] : r })) + } + function Yr(t) { + const e = t.value, + r = t.key, + n = Nr(t) + return ( + n.length || + (-1 === e.indexOf('{fontstack}') && + n.push( + new xr( + r, + e, + '"glyphs" url must include a "{fontstack}" token', + ), + ), + -1 === e.indexOf('{range}') && + n.push( + new xr(r, e, '"glyphs" url must include a "{range}" token'), + )), + n + ) + } + function Wr(t, e = i) { + let r = [] + return ( + (r = r.concat( + Vr({ + key: '', + value: t, + valueSpec: e.$root, + styleSpec: e, + style: t, + objectElementValidators: { glyphs: Yr, '*': () => [] }, + }), + )), + t.constants && + (r = r.concat( + Sr({ + key: 'constants', + value: t.constants, + style: t, + styleSpec: e, + }), + )), + qr(r) + ) + } + function qr(t) { + return [].concat(t).sort((t, e) => t.line - e.line) + } + function Xr(t) { + return function (...e) { + return qr(t.apply(this, e)) + } + } + ;(Wr.source = Xr(Gr)), + (Wr.light = Xr(zr)), + (Wr.terrain = Xr(Ur)), + (Wr.layer = Xr(jr)), + (Wr.filter = Xr(Mr)), + (Wr.paintProperty = Xr(Ar)), + (Wr.layoutProperty = Xr(kr)) + var Zr = s(function (t, e) { + var r = (function () { + var t = function (t, e, r, n) { + for (r = r || {}, n = t.length; n--; r[t[n]] = e); + return r + }, + e = [1, 12], + r = [1, 13], + n = [1, 9], + i = [1, 10], + o = [1, 11], + a = [1, 14], + s = [1, 15], + l = [14, 18, 22, 24], + u = [18, 22], + c = [22, 24], + h = { + trace: function () {}, + yy: {}, + symbols_: { + error: 2, + JSONString: 3, + STRING: 4, + JSONNumber: 5, + NUMBER: 6, + JSONNullLiteral: 7, + NULL: 8, + JSONBooleanLiteral: 9, + TRUE: 10, + FALSE: 11, + JSONText: 12, + JSONValue: 13, + EOF: 14, + JSONObject: 15, + JSONArray: 16, + '{': 17, + '}': 18, + JSONMemberList: 19, + JSONMember: 20, + ':': 21, + ',': 22, + '[': 23, + ']': 24, + JSONElementList: 25, + $accept: 0, + $end: 1, + }, + terminals_: { + 2: 'error', + 4: 'STRING', + 6: 'NUMBER', + 8: 'NULL', + 10: 'TRUE', + 11: 'FALSE', + 14: 'EOF', + 17: '{', + 18: '}', + 21: ':', + 22: ',', + 23: '[', + 24: ']', + }, + productions_: [ + 0, + [3, 1], + [5, 1], + [7, 1], + [9, 1], + [9, 1], + [12, 2], + [13, 1], + [13, 1], + [13, 1], + [13, 1], + [13, 1], + [13, 1], + [15, 2], + [15, 3], + [20, 3], + [19, 1], + [19, 3], + [16, 2], + [16, 3], + [25, 1], + [25, 3], + ], + performAction: function (t, e, r, n, i, o, a) { + var s = o.length - 1 + switch (i) { + case 1: + ;(this.$ = new String( + t + .replace(/\\(\\|")/g, '$1') + .replace(/\\n/g, '\n') + .replace(/\\r/g, '\r') + .replace(/\\t/g, '\t') + .replace(/\\v/g, '\v') + .replace(/\\f/g, '\f') + .replace(/\\b/g, '\b'), + )), + (this.$.__line__ = this._$.first_line) + break + case 2: + ;(this.$ = new Number(t)), + (this.$.__line__ = this._$.first_line) + break + case 3: + this.$ = null + break + case 4: + ;(this.$ = new Boolean(!0)), + (this.$.__line__ = this._$.first_line) + break + case 5: + ;(this.$ = new Boolean(!1)), + (this.$.__line__ = this._$.first_line) + break + case 6: + return (this.$ = o[s - 1]) + case 13: + ;(this.$ = {}), + Object.defineProperty(this.$, '__line__', { + value: this._$.first_line, + enumerable: !1, + }) + break + case 14: + case 19: + ;(this.$ = o[s - 1]), + Object.defineProperty(this.$, '__line__', { + value: this._$.first_line, + enumerable: !1, + }) + break + case 15: + this.$ = [o[s - 2], o[s]] + break + case 16: + ;(this.$ = {}), (this.$[o[s][0]] = o[s][1]) + break + case 17: + ;(this.$ = o[s - 2]), (o[s - 2][o[s][0]] = o[s][1]) + break + case 18: + ;(this.$ = []), + Object.defineProperty(this.$, '__line__', { + value: this._$.first_line, + enumerable: !1, + }) + break + case 20: + this.$ = [o[s]] + break + case 21: + ;(this.$ = o[s - 2]), o[s - 2].push(o[s]) + } + }, + table: [ + { + 3: 5, + 4: e, + 5: 6, + 6: r, + 7: 3, + 8: n, + 9: 4, + 10: i, + 11: o, + 12: 1, + 13: 2, + 15: 7, + 16: 8, + 17: a, + 23: s, + }, + { 1: [3] }, + { 14: [1, 16] }, + t(l, [2, 7]), + t(l, [2, 8]), + t(l, [2, 9]), + t(l, [2, 10]), + t(l, [2, 11]), + t(l, [2, 12]), + t(l, [2, 3]), + t(l, [2, 4]), + t(l, [2, 5]), + t([14, 18, 21, 22, 24], [2, 1]), + t(l, [2, 2]), + { 3: 20, 4: e, 18: [1, 17], 19: 18, 20: 19 }, + { + 3: 5, + 4: e, + 5: 6, + 6: r, + 7: 3, + 8: n, + 9: 4, + 10: i, + 11: o, + 13: 23, + 15: 7, + 16: 8, + 17: a, + 23: s, + 24: [1, 21], + 25: 22, + }, + { 1: [2, 6] }, + t(l, [2, 13]), + { 18: [1, 24], 22: [1, 25] }, + t(u, [2, 16]), + { 21: [1, 26] }, + t(l, [2, 18]), + { 22: [1, 28], 24: [1, 27] }, + t(c, [2, 20]), + t(l, [2, 14]), + { 3: 20, 4: e, 20: 29 }, + { + 3: 5, + 4: e, + 5: 6, + 6: r, + 7: 3, + 8: n, + 9: 4, + 10: i, + 11: o, + 13: 30, + 15: 7, + 16: 8, + 17: a, + 23: s, + }, + t(l, [2, 19]), + { + 3: 5, + 4: e, + 5: 6, + 6: r, + 7: 3, + 8: n, + 9: 4, + 10: i, + 11: o, + 13: 31, + 15: 7, + 16: 8, + 17: a, + 23: s, + }, + t(u, [2, 17]), + t(u, [2, 15]), + t(c, [2, 21]), + ], + defaultActions: { 16: [2, 6] }, + parseError: function (t, e) { + if (!e.recoverable) throw new Error(t) + this.trace(t) + }, + parse: function (t) { + var e = this, + r = [0], + n = [null], + i = [], + o = this.table, + a = '', + s = 0, + l = 0, + u = 2, + c = 1, + h = i.slice.call(arguments, 1), + p = Object.create(this.lexer), + f = { yy: {} } + for (var d in this.yy) + Object.prototype.hasOwnProperty.call(this.yy, d) && + (f.yy[d] = this.yy[d]) + p.setInput(t, f.yy), + (f.yy.lexer = p), + (f.yy.parser = this), + void 0 === p.yylloc && (p.yylloc = {}) + var g = p.yylloc + i.push(g) + var y = p.options && p.options.ranges + function m() { + var t + return ( + 'number' != typeof (t = p.lex() || c) && + (t = e.symbols_[t] || t), + t + ) + } + 'function' == typeof f.yy.parseError + ? (this.parseError = f.yy.parseError) + : (this.parseError = Object.getPrototypeOf(this).parseError) + for (var v, _, b, x, w, S, E, T, C = {}; ; ) { + if ( + ((_ = r[r.length - 1]), + this.defaultActions[_] + ? (b = this.defaultActions[_]) + : (null == v && (v = m()), (b = o[_] && o[_][v])), + void 0 === b || !b.length || !b[0]) + ) { + var O = '' + for (w in ((T = []), o[_])) + this.terminals_[w] && + w > u && + T.push("'" + this.terminals_[w] + "'") + ;(O = p.showPosition + ? 'Parse error on line ' + + (s + 1) + + ':\n' + + p.showPosition() + + '\nExpecting ' + + T.join(', ') + + ", got '" + + (this.terminals_[v] || v) + + "'" + : 'Parse error on line ' + + (s + 1) + + ': Unexpected ' + + (v == c + ? 'end of input' + : "'" + (this.terminals_[v] || v) + "'")), + this.parseError(O, { + text: p.match, + token: this.terminals_[v] || v, + line: p.yylineno, + loc: g, + expected: T, + }) + } + if (b[0] instanceof Array && b.length > 1) + throw new Error( + 'Parse Error: multiple actions possible at state: ' + + _ + + ', token: ' + + v, + ) + switch (b[0]) { + case 1: + r.push(v), + n.push(p.yytext), + i.push(p.yylloc), + r.push(b[1]), + (v = null), + (l = p.yyleng), + (a = p.yytext), + (s = p.yylineno), + (g = p.yylloc) + break + case 2: + if ( + ((S = this.productions_[b[1]][1]), + (C.$ = n[n.length - S]), + (C._$ = { + first_line: i[i.length - (S || 1)].first_line, + last_line: i[i.length - 1].last_line, + first_column: i[i.length - (S || 1)].first_column, + last_column: i[i.length - 1].last_column, + }), + y && + (C._$.range = [ + i[i.length - (S || 1)].range[0], + i[i.length - 1].range[1], + ]), + void 0 !== + (x = this.performAction.apply( + C, + [a, l, s, f.yy, b[1], n, i].concat(h), + ))) + ) + return x + S && + ((r = r.slice(0, -1 * S * 2)), + (n = n.slice(0, -1 * S)), + (i = i.slice(0, -1 * S))), + r.push(this.productions_[b[1]][0]), + n.push(C.$), + i.push(C._$), + (E = o[r[r.length - 2]][r[r.length - 1]]), + r.push(E) + break + case 3: + return !0 + } + } + return !0 + }, + }, + p = { + EOF: 1, + parseError: function (t, e) { + if (!this.yy.parser) throw new Error(t) + this.yy.parser.parseError(t, e) + }, + setInput: function (t, e) { + return ( + (this.yy = e || this.yy || {}), + (this._input = t), + (this._more = this._backtrack = this.done = !1), + (this.yylineno = this.yyleng = 0), + (this.yytext = this.matched = this.match = ''), + (this.conditionStack = ['INITIAL']), + (this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0, + }), + this.options.ranges && (this.yylloc.range = [0, 0]), + (this.offset = 0), + this + ) + }, + input: function () { + var t = this._input[0] + return ( + (this.yytext += t), + this.yyleng++, + this.offset++, + (this.match += t), + (this.matched += t), + t.match(/(?:\r\n?|\n).*/g) + ? (this.yylineno++, this.yylloc.last_line++) + : this.yylloc.last_column++, + this.options.ranges && this.yylloc.range[1]++, + (this._input = this._input.slice(1)), + t + ) + }, + unput: function (t) { + var e = t.length, + r = t.split(/(?:\r\n?|\n)/g) + ;(this._input = t + this._input), + (this.yytext = this.yytext.substr( + 0, + this.yytext.length - e, + )), + (this.offset -= e) + var n = this.match.split(/(?:\r\n?|\n)/g) + ;(this.match = this.match.substr(0, this.match.length - 1)), + (this.matched = this.matched.substr( + 0, + this.matched.length - 1, + )), + r.length - 1 && (this.yylineno -= r.length - 1) + var i = this.yylloc.range + return ( + (this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: r + ? (r.length === n.length + ? this.yylloc.first_column + : 0) + + n[n.length - r.length].length - + r[0].length + : this.yylloc.first_column - e, + }), + this.options.ranges && + (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), + (this.yyleng = this.yytext.length), + this + ) + }, + more: function () { + return (this._more = !0), this + }, + reject: function () { + return this.options.backtrack_lexer + ? ((this._backtrack = !0), this) + : this.parseError( + 'Lexical error on line ' + + (this.yylineno + 1) + + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + + this.showPosition(), + { text: '', token: null, line: this.yylineno }, + ) + }, + less: function (t) { + this.unput(this.match.slice(t)) + }, + pastInput: function () { + var t = this.matched.substr( + 0, + this.matched.length - this.match.length, + ) + return ( + (t.length > 20 ? '...' : '') + + t.substr(-20).replace(/\n/g, '') + ) + }, + upcomingInput: function () { + var t = this.match + return ( + t.length < 20 && + (t += this._input.substr(0, 20 - t.length)), + (t.substr(0, 20) + (t.length > 20 ? '...' : '')).replace( + /\n/g, + '', + ) + ) + }, + showPosition: function () { + var t = this.pastInput(), + e = new Array(t.length + 1).join('-') + return t + this.upcomingInput() + '\n' + e + '^' + }, + test_match: function (t, e) { + var r, n, i + if ( + (this.options.backtrack_lexer && + ((i = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column, + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done, + }), + this.options.ranges && + (i.yylloc.range = this.yylloc.range.slice(0))), + (n = t[0].match(/(?:\r\n?|\n).*/g)) && + (this.yylineno += n.length), + (this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: n + ? n[n.length - 1].length - + n[n.length - 1].match(/\r?\n?/)[0].length + : this.yylloc.last_column + t[0].length, + }), + (this.yytext += t[0]), + (this.match += t[0]), + (this.matches = t), + (this.yyleng = this.yytext.length), + this.options.ranges && + (this.yylloc.range = [ + this.offset, + (this.offset += this.yyleng), + ]), + (this._more = !1), + (this._backtrack = !1), + (this._input = this._input.slice(t[0].length)), + (this.matched += t[0]), + (r = this.performAction.call( + this, + this.yy, + this, + e, + this.conditionStack[this.conditionStack.length - 1], + )), + this.done && this._input && (this.done = !1), + r) + ) + return r + if (this._backtrack) { + for (var o in i) this[o] = i[o] + return !1 + } + return !1 + }, + next: function () { + if (this.done) return this.EOF + var t, e, r, n + this._input || (this.done = !0), + this._more || ((this.yytext = ''), (this.match = '')) + for (var i = this._currentRules(), o = 0; o < i.length; o++) + if ( + (r = this._input.match(this.rules[i[o]])) && + (!e || r[0].length > e[0].length) + ) { + if (((e = r), (n = o), this.options.backtrack_lexer)) { + if (!1 !== (t = this.test_match(r, i[o]))) return t + if (this._backtrack) { + e = !1 + continue + } + return !1 + } + if (!this.options.flex) break + } + return e + ? !1 !== (t = this.test_match(e, i[n])) && t + : '' === this._input + ? this.EOF + : this.parseError( + 'Lexical error on line ' + + (this.yylineno + 1) + + '. Unrecognized text.\n' + + this.showPosition(), + { text: '', token: null, line: this.yylineno }, + ) + }, + lex: function () { + var t = this.next() + return t || this.lex() + }, + begin: function (t) { + this.conditionStack.push(t) + }, + popState: function () { + return this.conditionStack.length - 1 > 0 + ? this.conditionStack.pop() + : this.conditionStack[0] + }, + _currentRules: function () { + return this.conditionStack.length && + this.conditionStack[this.conditionStack.length - 1] + ? this.conditions[ + this.conditionStack[this.conditionStack.length - 1] + ].rules + : this.conditions.INITIAL.rules + }, + topState: function (t) { + return (t = + this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 + ? this.conditionStack[t] + : 'INITIAL' + }, + pushState: function (t) { + this.begin(t) + }, + stateStackSize: function () { + return this.conditionStack.length + }, + options: {}, + performAction: function (t, e, r, n) { + switch (r) { + case 0: + break + case 1: + return 6 + case 2: + return (e.yytext = e.yytext.substr(1, e.yyleng - 2)), 4 + case 3: + return 17 + case 4: + return 18 + case 5: + return 23 + case 6: + return 24 + case 7: + return 22 + case 8: + return 21 + case 9: + return 10 + case 10: + return 11 + case 11: + return 8 + case 12: + return 14 + case 13: + return 'INVALID' + } + }, + rules: [ + /^(?:\s+)/, + /^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/, + /^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/, + /^(?:\{)/, + /^(?:\})/, + /^(?:\[)/, + /^(?:\])/, + /^(?:,)/, + /^(?::)/, + /^(?:true\b)/, + /^(?:false\b)/, + /^(?:null\b)/, + /^(?:$)/, + /^(?:.)/, + ], + conditions: { + INITIAL: { + rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], + inclusive: !0, + }, + }, + } + function f() { + this.yy = {} + } + return (h.lexer = p), (f.prototype = h), (h.Parser = f), new f() + })() + void 0 !== a && + ((e.parser = r), + (e.Parser = r.Parser), + (e.parse = function () { + return r.parse.apply(r, arguments) + })) + }) + Zr.parser, Zr.Parser, Zr.parse + function Kr(t) { + if (t instanceof String || 'string' == typeof t || t instanceof n) + try { + return Zr.parse(t.toString()) + } catch (t) { + throw new wr(t) + } + return t + } + function Hr(t, e = i) { + let r = t + try { + r = Kr(r) + } catch (t) { + return [t] + } + return Wr(r, e) + } + const $r = { + StyleExpression: Xe, + isExpression: Ze, + isExpressionFilter: ur, + createExpression: Ke, + createPropertyExpression: Je, + normalizePropertyExpression: function (t, e) { + if (Ge(t)) return new Qe(t, e) + if (Ze(t)) { + const r = Je(t, e) + if ('error' === r.result) + throw new Error( + r.value.map((t) => `${t.key}: ${t.message}`).join(', '), + ) + return r.value + } + { + let r = t + return ( + 'string' == typeof t && + 'color' === e.type && + (r = J.parse(t)), + { kind: 'constant', evaluate: () => r } + ) + } + }, + ZoomConstantExpression: He, + ZoomDependentExpression: $e, + StylePropertyFunction: Qe, + }, + Jr = { convertFunction: er, createFunction: Ue, isFunction: Ge } + ;(Hr.parsed = Hr), (Hr.latest = Hr) + }).call(this, r(4), r(7).Buffer) + }, + function (t, e, r) { + t.exports = (function () { + 'use strict' + function t(t, n, i, o, a) { + !(function t(r, n, i, o, a) { + for (; o > i; ) { + if (o - i > 600) { + var s = o - i + 1, + l = n - i + 1, + u = Math.log(s), + c = 0.5 * Math.exp((2 * u) / 3), + h = + 0.5 * + Math.sqrt((u * c * (s - c)) / s) * + (l - s / 2 < 0 ? -1 : 1) + t( + r, + n, + Math.max(i, Math.floor(n - (l * c) / s + h)), + Math.min(o, Math.floor(n + ((s - l) * c) / s + h)), + a, + ) + } + var p = r[n], + f = i, + d = o + for (e(r, i, n), a(r[o], p) > 0 && e(r, i, o); f < d; ) { + for (e(r, f, d), f++, d--; a(r[f], p) < 0; ) f++ + for (; a(r[d], p) > 0; ) d-- + } + 0 === a(r[i], p) ? e(r, i, d) : e(r, ++d, o), + d <= n && (i = d + 1), + n <= d && (o = d - 1) + } + })(t, n, i || 0, o || t.length - 1, a || r) + } + function e(t, e, r) { + var n = t[e] + ;(t[e] = t[r]), (t[r] = n) + } + function r(t, e) { + return t < e ? -1 : t > e ? 1 : 0 + } + var n = function (t) { + void 0 === t && (t = 9), + (this._maxEntries = Math.max(4, t)), + (this._minEntries = Math.max(2, Math.ceil(0.4 * this._maxEntries))), + this.clear() + } + function i(t, e, r) { + if (!r) return e.indexOf(t) + for (var n = 0; n < e.length; n++) if (r(t, e[n])) return n + return -1 + } + function o(t, e) { + a(t, 0, t.children.length, e, t) + } + function a(t, e, r, n, i) { + i || (i = d(null)), + (i.minX = 1 / 0), + (i.minY = 1 / 0), + (i.maxX = -1 / 0), + (i.maxY = -1 / 0) + for (var o = e; o < r; o++) { + var a = t.children[o] + s(i, t.leaf ? n(a) : a) + } + return i + } + function s(t, e) { + return ( + (t.minX = Math.min(t.minX, e.minX)), + (t.minY = Math.min(t.minY, e.minY)), + (t.maxX = Math.max(t.maxX, e.maxX)), + (t.maxY = Math.max(t.maxY, e.maxY)), + t + ) + } + function l(t, e) { + return t.minX - e.minX + } + function u(t, e) { + return t.minY - e.minY + } + function c(t) { + return (t.maxX - t.minX) * (t.maxY - t.minY) + } + function h(t) { + return t.maxX - t.minX + (t.maxY - t.minY) + } + function p(t, e) { + return ( + t.minX <= e.minX && + t.minY <= e.minY && + e.maxX <= t.maxX && + e.maxY <= t.maxY + ) + } + function f(t, e) { + return ( + e.minX <= t.maxX && + e.minY <= t.maxY && + e.maxX >= t.minX && + e.maxY >= t.minY + ) + } + function d(t) { + return { + children: t, + height: 1, + leaf: !0, + minX: 1 / 0, + minY: 1 / 0, + maxX: -1 / 0, + maxY: -1 / 0, + } + } + function g(e, r, n, i, o) { + for (var a = [r, n]; a.length; ) + if (!((n = a.pop()) - (r = a.pop()) <= i)) { + var s = r + Math.ceil((n - r) / i / 2) * i + t(e, s, r, n, o), a.push(r, s, s, n) + } + } + return ( + (n.prototype.all = function () { + return this._all(this.data, []) + }), + (n.prototype.search = function (t) { + var e = this.data, + r = [] + if (!f(t, e)) return r + for (var n = this.toBBox, i = []; e; ) { + for (var o = 0; o < e.children.length; o++) { + var a = e.children[o], + s = e.leaf ? n(a) : a + f(t, s) && + (e.leaf ? r.push(a) : p(t, s) ? this._all(a, r) : i.push(a)) + } + e = i.pop() + } + return r + }), + (n.prototype.collides = function (t) { + var e = this.data + if (!f(t, e)) return !1 + for (var r = []; e; ) { + for (var n = 0; n < e.children.length; n++) { + var i = e.children[n], + o = e.leaf ? this.toBBox(i) : i + if (f(t, o)) { + if (e.leaf || p(t, o)) return !0 + r.push(i) + } + } + e = r.pop() + } + return !1 + }), + (n.prototype.load = function (t) { + if (!t || !t.length) return this + if (t.length < this._minEntries) { + for (var e = 0; e < t.length; e++) this.insert(t[e]) + return this + } + var r = this._build(t.slice(), 0, t.length - 1, 0) + if (this.data.children.length) + if (this.data.height === r.height) this._splitRoot(this.data, r) + else { + if (this.data.height < r.height) { + var n = this.data + ;(this.data = r), (r = n) + } + this._insert(r, this.data.height - r.height - 1, !0) + } + else this.data = r + return this + }), + (n.prototype.insert = function (t) { + return t && this._insert(t, this.data.height - 1), this + }), + (n.prototype.clear = function () { + return (this.data = d([])), this + }), + (n.prototype.remove = function (t, e) { + if (!t) return this + for ( + var r, n, o, a = this.data, s = this.toBBox(t), l = [], u = []; + a || l.length; + + ) { + if ( + (a || + ((a = l.pop()), + (n = l[l.length - 1]), + (r = u.pop()), + (o = !0)), + a.leaf) + ) { + var c = i(t, a.children, e) + if (-1 !== c) + return ( + a.children.splice(c, 1), l.push(a), this._condense(l), this + ) + } + o || a.leaf || !p(a, s) + ? n + ? (r++, (a = n.children[r]), (o = !1)) + : (a = null) + : (l.push(a), u.push(r), (r = 0), (n = a), (a = a.children[0])) + } + return this + }), + (n.prototype.toBBox = function (t) { + return t + }), + (n.prototype.compareMinX = function (t, e) { + return t.minX - e.minX + }), + (n.prototype.compareMinY = function (t, e) { + return t.minY - e.minY + }), + (n.prototype.toJSON = function () { + return this.data + }), + (n.prototype.fromJSON = function (t) { + return (this.data = t), this + }), + (n.prototype._all = function (t, e) { + for (var r = []; t; ) + t.leaf + ? e.push.apply(e, t.children) + : r.push.apply(r, t.children), + (t = r.pop()) + return e + }), + (n.prototype._build = function (t, e, r, n) { + var i, + a = r - e + 1, + s = this._maxEntries + if (a <= s) return o((i = d(t.slice(e, r + 1))), this.toBBox), i + n || + ((n = Math.ceil(Math.log(a) / Math.log(s))), + (s = Math.ceil(a / Math.pow(s, n - 1)))), + ((i = d([])).leaf = !1), + (i.height = n) + var l = Math.ceil(a / s), + u = l * Math.ceil(Math.sqrt(s)) + g(t, e, r, u, this.compareMinX) + for (var c = e; c <= r; c += u) { + var h = Math.min(c + u - 1, r) + g(t, c, h, l, this.compareMinY) + for (var p = c; p <= h; p += l) { + var f = Math.min(p + l - 1, h) + i.children.push(this._build(t, p, f, n - 1)) + } + } + return o(i, this.toBBox), i + }), + (n.prototype._chooseSubtree = function (t, e, r, n) { + for (; n.push(e), !e.leaf && n.length - 1 !== r; ) { + for ( + var i = 1 / 0, o = 1 / 0, a = void 0, s = 0; + s < e.children.length; + s++ + ) { + var l = e.children[s], + u = c(l), + h = + ((p = t), + (f = l), + (Math.max(f.maxX, p.maxX) - Math.min(f.minX, p.minX)) * + (Math.max(f.maxY, p.maxY) - Math.min(f.minY, p.minY)) - + u) + h < o + ? ((o = h), (i = u < i ? u : i), (a = l)) + : h === o && u < i && ((i = u), (a = l)) + } + e = a || e.children[0] + } + var p, f + return e + }), + (n.prototype._insert = function (t, e, r) { + var n = r ? t : this.toBBox(t), + i = [], + o = this._chooseSubtree(n, this.data, e, i) + for ( + o.children.push(t), s(o, n); + e >= 0 && i[e].children.length > this._maxEntries; + + ) + this._split(i, e), e-- + this._adjustParentBBoxes(n, i, e) + }), + (n.prototype._split = function (t, e) { + var r = t[e], + n = r.children.length, + i = this._minEntries + this._chooseSplitAxis(r, i, n) + var a = this._chooseSplitIndex(r, i, n), + s = d(r.children.splice(a, r.children.length - a)) + ;(s.height = r.height), + (s.leaf = r.leaf), + o(r, this.toBBox), + o(s, this.toBBox), + e ? t[e - 1].children.push(s) : this._splitRoot(r, s) + }), + (n.prototype._splitRoot = function (t, e) { + ;(this.data = d([t, e])), + (this.data.height = t.height + 1), + (this.data.leaf = !1), + o(this.data, this.toBBox) + }), + (n.prototype._chooseSplitIndex = function (t, e, r) { + for ( + var n, i, o, s, l, u, h, p = 1 / 0, f = 1 / 0, d = e; + d <= r - e; + d++ + ) { + var g = a(t, 0, d, this.toBBox), + y = a(t, d, r, this.toBBox), + m = + ((i = g), + (o = y), + (s = Math.max(i.minX, o.minX)), + (l = Math.max(i.minY, o.minY)), + (u = Math.min(i.maxX, o.maxX)), + (h = Math.min(i.maxY, o.maxY)), + Math.max(0, u - s) * Math.max(0, h - l)), + v = c(g) + c(y) + m < p + ? ((p = m), (n = d), (f = v < f ? v : f)) + : m === p && v < f && ((f = v), (n = d)) + } + return n || r - e + }), + (n.prototype._chooseSplitAxis = function (t, e, r) { + var n = t.leaf ? this.compareMinX : l, + i = t.leaf ? this.compareMinY : u + this._allDistMargin(t, e, r, n) < this._allDistMargin(t, e, r, i) && + t.children.sort(n) + }), + (n.prototype._allDistMargin = function (t, e, r, n) { + t.children.sort(n) + for ( + var i = this.toBBox, + o = a(t, 0, e, i), + l = a(t, r - e, r, i), + u = h(o) + h(l), + c = e; + c < r - e; + c++ + ) { + var p = t.children[c] + s(o, t.leaf ? i(p) : p), (u += h(o)) + } + for (var f = r - e - 1; f >= e; f--) { + var d = t.children[f] + s(l, t.leaf ? i(d) : d), (u += h(l)) + } + return u + }), + (n.prototype._adjustParentBBoxes = function (t, e, r) { + for (var n = r; n >= 0; n--) s(e[n], t) + }), + (n.prototype._condense = function (t) { + for (var e = t.length - 1, r = void 0; e >= 0; e--) + 0 === t[e].children.length + ? e > 0 + ? (r = t[e - 1].children).splice(r.indexOf(t[e]), 1) + : this.clear() + : o(t[e], this.toBBox) + }), + n + ) + })() + }, + function (t, e) { + var r = { + thin: 100, + hairline: 100, + 'ultra-light': 100, + 'extra-light': 100, + light: 200, + book: 300, + regular: 400, + normal: 400, + plain: 400, + roman: 400, + standard: 400, + medium: 500, + 'semi-bold': 600, + 'demi-bold': 600, + bold: 700, + heavy: 800, + black: 800, + 'extra-bold': 800, + 'ultra-black': 900, + 'extra-black': 900, + 'ultra-bold': 900, + 'heavy-black': 900, + fat: 900, + poster: 900, + }, + n = /(italic|oblique)$/i, + i = {} + t.exports = function (t, e, o) { + var a = i[t] + if (!a) { + Array.isArray(t) || (t = [t]) + for ( + var s = 400, l = 'normal', u = [], c = 0, h = t.length; + c < h; + ++c + ) { + var p = t[c].split(' '), + f = p[p.length - 1].toLowerCase() + for (var d in ('normal' == f || 'italic' == f || 'oblique' == f + ? ((l = f), p.pop(), (f = p[p.length - 1].toLowerCase())) + : n.test(f) && + ((f = f.replace(n, '')), (l = p[p.length - 1].replace(f, ''))), + r)) + if ( + f == d || + f == d.replace('-', '') || + f == d.replace('-', ' ') + ) { + ;(s = r[d]), p.pop() + break + } + 'number' == typeof f && (s = f) + var g = p.join(' ').replace('Klokantech Noto Sans', 'Noto Sans') + ;-1 !== g.indexOf(' ') && (g = '"' + g + '"'), u.push(g) + } + a = i[t] = [l, s, u] + } + return ( + a[0] + ' ' + a[1] + ' ' + e + 'px' + (o ? '/' + o : '') + ' ' + a[2] + ) + } + }, + function (t, e) { + ;(e.read = function (t, e, r, n, i) { + var o, + a, + s = 8 * i - n - 1, + l = (1 << s) - 1, + u = l >> 1, + c = -7, + h = r ? i - 1 : 0, + p = r ? -1 : 1, + f = t[e + h] + for ( + h += p, o = f & ((1 << -c) - 1), f >>= -c, c += s; + c > 0; + o = 256 * o + t[e + h], h += p, c -= 8 + ); + for ( + a = o & ((1 << -c) - 1), o >>= -c, c += n; + c > 0; + a = 256 * a + t[e + h], h += p, c -= 8 + ); + if (0 === o) o = 1 - u + else { + if (o === l) return a ? NaN : (1 / 0) * (f ? -1 : 1) + ;(a += Math.pow(2, n)), (o -= u) + } + return (f ? -1 : 1) * a * Math.pow(2, o - n) + }), + (e.write = function (t, e, r, n, i, o) { + var a, + s, + l, + u = 8 * o - i - 1, + c = (1 << u) - 1, + h = c >> 1, + p = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, + f = n ? 0 : o - 1, + d = n ? 1 : -1, + g = e < 0 || (0 === e && 1 / e < 0) ? 1 : 0 + for ( + e = Math.abs(e), + isNaN(e) || e === 1 / 0 + ? ((s = isNaN(e) ? 1 : 0), (a = c)) + : ((a = Math.floor(Math.log(e) / Math.LN2)), + e * (l = Math.pow(2, -a)) < 1 && (a--, (l *= 2)), + (e += a + h >= 1 ? p / l : p * Math.pow(2, 1 - h)) * l >= 2 && + (a++, (l /= 2)), + a + h >= c + ? ((s = 0), (a = c)) + : a + h >= 1 + ? ((s = (e * l - 1) * Math.pow(2, i)), (a += h)) + : ((s = e * Math.pow(2, h - 1) * Math.pow(2, i)), + (a = 0))); + i >= 8; + t[r + f] = 255 & s, f += d, s /= 256, i -= 8 + ); + for ( + a = (a << i) | s, u += i; + u > 0; + t[r + f] = 255 & a, f += d, a /= 256, u -= 8 + ); + t[r + f - d] |= 128 * g + }) + }, + function (t, e) { + var r + r = (function () { + return this + })() + try { + r = r || new Function('return this')() + } catch (t) { + 'object' == typeof window && (r = window) + } + t.exports = r + }, + function (t, e, r) { + 'use strict' + t.exports = i + var n = r(3) + function i(t) { + ;(this.buf = + ArrayBuffer.isView && ArrayBuffer.isView(t) + ? t + : new Uint8Array(t || 0)), + (this.pos = 0), + (this.type = 0), + (this.length = this.buf.length) + } + ;(i.Varint = 0), (i.Fixed64 = 1), (i.Bytes = 2), (i.Fixed32 = 5) + var o = 'undefined' == typeof TextDecoder ? null : new TextDecoder('utf8') + function a(t) { + return t.type === i.Bytes ? t.readVarint() + t.pos : t.pos + 1 + } + function s(t, e, r) { + return r + ? 4294967296 * e + (t >>> 0) + : 4294967296 * (e >>> 0) + (t >>> 0) + } + function l(t, e, r) { + var n = + e <= 16383 + ? 1 + : e <= 2097151 + ? 2 + : e <= 268435455 + ? 3 + : Math.floor(Math.log(e) / (7 * Math.LN2)) + r.realloc(n) + for (var i = r.pos - 1; i >= t; i--) r.buf[i + n] = r.buf[i] + } + function u(t, e) { + for (var r = 0; r < t.length; r++) e.writeVarint(t[r]) + } + function c(t, e) { + for (var r = 0; r < t.length; r++) e.writeSVarint(t[r]) + } + function h(t, e) { + for (var r = 0; r < t.length; r++) e.writeFloat(t[r]) + } + function p(t, e) { + for (var r = 0; r < t.length; r++) e.writeDouble(t[r]) + } + function f(t, e) { + for (var r = 0; r < t.length; r++) e.writeBoolean(t[r]) + } + function d(t, e) { + for (var r = 0; r < t.length; r++) e.writeFixed32(t[r]) + } + function g(t, e) { + for (var r = 0; r < t.length; r++) e.writeSFixed32(t[r]) + } + function y(t, e) { + for (var r = 0; r < t.length; r++) e.writeFixed64(t[r]) + } + function m(t, e) { + for (var r = 0; r < t.length; r++) e.writeSFixed64(t[r]) + } + function v(t, e) { + return (t[e] | (t[e + 1] << 8) | (t[e + 2] << 16)) + 16777216 * t[e + 3] + } + function _(t, e, r) { + ;(t[r] = e), + (t[r + 1] = e >>> 8), + (t[r + 2] = e >>> 16), + (t[r + 3] = e >>> 24) + } + function b(t, e) { + return (t[e] | (t[e + 1] << 8) | (t[e + 2] << 16)) + (t[e + 3] << 24) + } + i.prototype = { + destroy: function () { + this.buf = null + }, + readFields: function (t, e, r) { + for (r = r || this.length; this.pos < r; ) { + var n = this.readVarint(), + i = n >> 3, + o = this.pos + ;(this.type = 7 & n), t(i, e, this), this.pos === o && this.skip(n) + } + return e + }, + readMessage: function (t, e) { + return this.readFields(t, e, this.readVarint() + this.pos) + }, + readFixed32: function () { + var t = v(this.buf, this.pos) + return (this.pos += 4), t + }, + readSFixed32: function () { + var t = b(this.buf, this.pos) + return (this.pos += 4), t + }, + readFixed64: function () { + var t = v(this.buf, this.pos) + 4294967296 * v(this.buf, this.pos + 4) + return (this.pos += 8), t + }, + readSFixed64: function () { + var t = v(this.buf, this.pos) + 4294967296 * b(this.buf, this.pos + 4) + return (this.pos += 8), t + }, + readFloat: function () { + var t = n.read(this.buf, this.pos, !0, 23, 4) + return (this.pos += 4), t + }, + readDouble: function () { + var t = n.read(this.buf, this.pos, !0, 52, 8) + return (this.pos += 8), t + }, + readVarint: function (t) { + var e, + r, + n = this.buf + return ( + (e = 127 & (r = n[this.pos++])), + r < 128 + ? e + : ((e |= (127 & (r = n[this.pos++])) << 7), + r < 128 + ? e + : ((e |= (127 & (r = n[this.pos++])) << 14), + r < 128 + ? e + : ((e |= (127 & (r = n[this.pos++])) << 21), + r < 128 + ? e + : (function (t, e, r) { + var n, + i, + o = r.buf + if ( + ((i = o[r.pos++]), + (n = (112 & i) >> 4), + i < 128) + ) + return s(t, n, e) + if ( + ((i = o[r.pos++]), + (n |= (127 & i) << 3), + i < 128) + ) + return s(t, n, e) + if ( + ((i = o[r.pos++]), + (n |= (127 & i) << 10), + i < 128) + ) + return s(t, n, e) + if ( + ((i = o[r.pos++]), + (n |= (127 & i) << 17), + i < 128) + ) + return s(t, n, e) + if ( + ((i = o[r.pos++]), + (n |= (127 & i) << 24), + i < 128) + ) + return s(t, n, e) + if ( + ((i = o[r.pos++]), + (n |= (1 & i) << 31), + i < 128) + ) + return s(t, n, e) + throw new Error( + 'Expected varint not more than 10 bytes', + ) + })( + (e |= (15 & (r = n[this.pos])) << 28), + t, + this, + )))) + ) + }, + readVarint64: function () { + return this.readVarint(!0) + }, + readSVarint: function () { + var t = this.readVarint() + return t % 2 == 1 ? (t + 1) / -2 : t / 2 + }, + readBoolean: function () { + return Boolean(this.readVarint()) + }, + readString: function () { + var t = this.readVarint() + this.pos, + e = this.pos + return ( + (this.pos = t), + t - e >= 12 && o + ? (function (t, e, r) { + return o.decode(t.subarray(e, r)) + })(this.buf, e, t) + : (function (t, e, r) { + var n = '', + i = e + for (; i < r; ) { + var o, + a, + s, + l = t[i], + u = null, + c = l > 239 ? 4 : l > 223 ? 3 : l > 191 ? 2 : 1 + if (i + c > r) break + 1 === c + ? l < 128 && (u = l) + : 2 === c + ? 128 == (192 & (o = t[i + 1])) && + (u = ((31 & l) << 6) | (63 & o)) <= 127 && + (u = null) + : 3 === c + ? ((o = t[i + 1]), + (a = t[i + 2]), + 128 == (192 & o) && + 128 == (192 & a) && + ((u = + ((15 & l) << 12) | + ((63 & o) << 6) | + (63 & a)) <= 2047 || + (u >= 55296 && u <= 57343)) && + (u = null)) + : 4 === c && + ((o = t[i + 1]), + (a = t[i + 2]), + (s = t[i + 3]), + 128 == (192 & o) && + 128 == (192 & a) && + 128 == (192 & s) && + ((u = + ((15 & l) << 18) | + ((63 & o) << 12) | + ((63 & a) << 6) | + (63 & s)) <= 65535 || + u >= 1114112) && + (u = null)), + null === u + ? ((u = 65533), (c = 1)) + : u > 65535 && + ((u -= 65536), + (n += String.fromCharCode( + ((u >>> 10) & 1023) | 55296, + )), + (u = 56320 | (1023 & u))), + (n += String.fromCharCode(u)), + (i += c) + } + return n + })(this.buf, e, t) + ) + }, + readBytes: function () { + var t = this.readVarint() + this.pos, + e = this.buf.subarray(this.pos, t) + return (this.pos = t), e + }, + readPackedVarint: function (t, e) { + if (this.type !== i.Bytes) return t.push(this.readVarint(e)) + var r = a(this) + for (t = t || []; this.pos < r; ) t.push(this.readVarint(e)) + return t + }, + readPackedSVarint: function (t) { + if (this.type !== i.Bytes) return t.push(this.readSVarint()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readSVarint()) + return t + }, + readPackedBoolean: function (t) { + if (this.type !== i.Bytes) return t.push(this.readBoolean()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readBoolean()) + return t + }, + readPackedFloat: function (t) { + if (this.type !== i.Bytes) return t.push(this.readFloat()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readFloat()) + return t + }, + readPackedDouble: function (t) { + if (this.type !== i.Bytes) return t.push(this.readDouble()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readDouble()) + return t + }, + readPackedFixed32: function (t) { + if (this.type !== i.Bytes) return t.push(this.readFixed32()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readFixed32()) + return t + }, + readPackedSFixed32: function (t) { + if (this.type !== i.Bytes) return t.push(this.readSFixed32()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readSFixed32()) + return t + }, + readPackedFixed64: function (t) { + if (this.type !== i.Bytes) return t.push(this.readFixed64()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readFixed64()) + return t + }, + readPackedSFixed64: function (t) { + if (this.type !== i.Bytes) return t.push(this.readSFixed64()) + var e = a(this) + for (t = t || []; this.pos < e; ) t.push(this.readSFixed64()) + return t + }, + skip: function (t) { + var e = 7 & t + if (e === i.Varint) for (; this.buf[this.pos++] > 127; ); + else if (e === i.Bytes) this.pos = this.readVarint() + this.pos + else if (e === i.Fixed32) this.pos += 4 + else { + if (e !== i.Fixed64) throw new Error('Unimplemented type: ' + e) + this.pos += 8 + } + }, + writeTag: function (t, e) { + this.writeVarint((t << 3) | e) + }, + realloc: function (t) { + for (var e = this.length || 16; e < this.pos + t; ) e *= 2 + if (e !== this.length) { + var r = new Uint8Array(e) + r.set(this.buf), (this.buf = r), (this.length = e) + } + }, + finish: function () { + return ( + (this.length = this.pos), + (this.pos = 0), + this.buf.subarray(0, this.length) + ) + }, + writeFixed32: function (t) { + this.realloc(4), _(this.buf, t, this.pos), (this.pos += 4) + }, + writeSFixed32: function (t) { + this.realloc(4), _(this.buf, t, this.pos), (this.pos += 4) + }, + writeFixed64: function (t) { + this.realloc(8), + _(this.buf, -1 & t, this.pos), + _(this.buf, Math.floor(t * (1 / 4294967296)), this.pos + 4), + (this.pos += 8) + }, + writeSFixed64: function (t) { + this.realloc(8), + _(this.buf, -1 & t, this.pos), + _(this.buf, Math.floor(t * (1 / 4294967296)), this.pos + 4), + (this.pos += 8) + }, + writeVarint: function (t) { + ;(t = +t || 0) > 268435455 || t < 0 + ? (function (t, e) { + var r, n + t >= 0 + ? ((r = t % 4294967296 | 0), (n = (t / 4294967296) | 0)) + : ((n = ~(-t / 4294967296)), + 4294967295 ^ (r = ~(-t % 4294967296)) + ? (r = (r + 1) | 0) + : ((r = 0), (n = (n + 1) | 0))) + if (t >= 0x10000000000000000 || t < -0x10000000000000000) + throw new Error("Given varint doesn't fit into 10 bytes") + e.realloc(10), + (function (t, e, r) { + ;(r.buf[r.pos++] = (127 & t) | 128), + (t >>>= 7), + (r.buf[r.pos++] = (127 & t) | 128), + (t >>>= 7), + (r.buf[r.pos++] = (127 & t) | 128), + (t >>>= 7), + (r.buf[r.pos++] = (127 & t) | 128), + (t >>>= 7), + (r.buf[r.pos] = 127 & t) + })(r, 0, e), + (function (t, e) { + var r = (7 & t) << 4 + if (((e.buf[e.pos++] |= r | ((t >>>= 3) ? 128 : 0)), !t)) + return + if ( + ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), + !t) + ) + return + if ( + ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), + !t) + ) + return + if ( + ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), + !t) + ) + return + if ( + ((e.buf[e.pos++] = (127 & t) | ((t >>>= 7) ? 128 : 0)), + !t) + ) + return + e.buf[e.pos++] = 127 & t + })(n, e) + })(t, this) + : (this.realloc(4), + (this.buf[this.pos++] = (127 & t) | (t > 127 ? 128 : 0)), + t <= 127 || + ((this.buf[this.pos++] = + (127 & (t >>>= 7)) | (t > 127 ? 128 : 0)), + t <= 127 || + ((this.buf[this.pos++] = + (127 & (t >>>= 7)) | (t > 127 ? 128 : 0)), + t <= 127 || (this.buf[this.pos++] = (t >>> 7) & 127)))) + }, + writeSVarint: function (t) { + this.writeVarint(t < 0 ? 2 * -t - 1 : 2 * t) + }, + writeBoolean: function (t) { + this.writeVarint(Boolean(t)) + }, + writeString: function (t) { + ;(t = String(t)), this.realloc(4 * t.length), this.pos++ + var e = this.pos + this.pos = (function (t, e, r) { + for (var n, i, o = 0; o < e.length; o++) { + if ((n = e.charCodeAt(o)) > 55295 && n < 57344) { + if (!i) { + n > 56319 || o + 1 === e.length + ? ((t[r++] = 239), (t[r++] = 191), (t[r++] = 189)) + : (i = n) + continue + } + if (n < 56320) { + ;(t[r++] = 239), (t[r++] = 191), (t[r++] = 189), (i = n) + continue + } + ;(n = ((i - 55296) << 10) | (n - 56320) | 65536), (i = null) + } else + i && + ((t[r++] = 239), (t[r++] = 191), (t[r++] = 189), (i = null)) + n < 128 + ? (t[r++] = n) + : (n < 2048 + ? (t[r++] = (n >> 6) | 192) + : (n < 65536 + ? (t[r++] = (n >> 12) | 224) + : ((t[r++] = (n >> 18) | 240), + (t[r++] = ((n >> 12) & 63) | 128)), + (t[r++] = ((n >> 6) & 63) | 128)), + (t[r++] = (63 & n) | 128)) + } + return r + })(this.buf, t, this.pos) + var r = this.pos - e + r >= 128 && l(e, r, this), + (this.pos = e - 1), + this.writeVarint(r), + (this.pos += r) + }, + writeFloat: function (t) { + this.realloc(4), + n.write(this.buf, t, this.pos, !0, 23, 4), + (this.pos += 4) + }, + writeDouble: function (t) { + this.realloc(8), + n.write(this.buf, t, this.pos, !0, 52, 8), + (this.pos += 8) + }, + writeBytes: function (t) { + var e = t.length + this.writeVarint(e), this.realloc(e) + for (var r = 0; r < e; r++) this.buf[this.pos++] = t[r] + }, + writeRawMessage: function (t, e) { + this.pos++ + var r = this.pos + t(e, this) + var n = this.pos - r + n >= 128 && l(r, n, this), + (this.pos = r - 1), + this.writeVarint(n), + (this.pos += n) + }, + writeMessage: function (t, e, r) { + this.writeTag(t, i.Bytes), this.writeRawMessage(e, r) + }, + writePackedVarint: function (t, e) { + e.length && this.writeMessage(t, u, e) + }, + writePackedSVarint: function (t, e) { + e.length && this.writeMessage(t, c, e) + }, + writePackedBoolean: function (t, e) { + e.length && this.writeMessage(t, f, e) + }, + writePackedFloat: function (t, e) { + e.length && this.writeMessage(t, h, e) + }, + writePackedDouble: function (t, e) { + e.length && this.writeMessage(t, p, e) + }, + writePackedFixed32: function (t, e) { + e.length && this.writeMessage(t, d, e) + }, + writePackedSFixed32: function (t, e) { + e.length && this.writeMessage(t, g, e) + }, + writePackedFixed64: function (t, e) { + e.length && this.writeMessage(t, y, e) + }, + writePackedSFixed64: function (t, e) { + e.length && this.writeMessage(t, m, e) + }, + writeBytesField: function (t, e) { + this.writeTag(t, i.Bytes), this.writeBytes(e) + }, + writeFixed32Field: function (t, e) { + this.writeTag(t, i.Fixed32), this.writeFixed32(e) + }, + writeSFixed32Field: function (t, e) { + this.writeTag(t, i.Fixed32), this.writeSFixed32(e) + }, + writeFixed64Field: function (t, e) { + this.writeTag(t, i.Fixed64), this.writeFixed64(e) + }, + writeSFixed64Field: function (t, e) { + this.writeTag(t, i.Fixed64), this.writeSFixed64(e) + }, + writeVarintField: function (t, e) { + this.writeTag(t, i.Varint), this.writeVarint(e) + }, + writeSVarintField: function (t, e) { + this.writeTag(t, i.Varint), this.writeSVarint(e) + }, + writeStringField: function (t, e) { + this.writeTag(t, i.Bytes), this.writeString(e) + }, + writeFloatField: function (t, e) { + this.writeTag(t, i.Fixed32), this.writeFloat(e) + }, + writeDoubleField: function (t, e) { + this.writeTag(t, i.Fixed64), this.writeDouble(e) + }, + writeBooleanField: function (t, e) { + this.writeVarintField(t, Boolean(e)) + }, + } + }, + function (t, e) { + ;(function () { + var e + ;(t.exports = { + icon: 'icons/google.svg', + name: 'google', + title: 'Google Fonts', + link: 'google.com/fonts', + getNames: function () { + return e + }, + getLink: function (t) { + return 'https://fonts.google.com/specimen/' + t.replace(/( )/g, '+') + }, + normalizeName: function (t) { + return t + }, + }), + (e = [ + 'ABeeZee', + 'Abel', + 'Abril Fatface', + 'Aclonica', + 'Acme', + 'Actor', + 'Adamina', + 'Advent Pro', + 'Aguafina Script', + 'Akronim', + 'Aladin', + 'Aldrich', + 'Alef', + 'Alegreya', + 'Alegreya SC', + 'Alegreya Sans', + 'Alegreya Sans SC', + 'Alex Brush', + 'Alfa Slab One', + 'Alice', + 'Alike', + 'Alike Angular', + 'Allan', + 'Allerta', + 'Allerta Stencil', + 'Allura', + 'Almendra', + 'Almendra Display', + 'Almendra SC', + 'Amarante', + 'Amaranth', + 'Amatic SC', + 'Amethysta', + 'Amiri', + 'Amita', + 'Anaheim', + 'Andada', + 'Andika', + 'Angkor', + 'Annie Use Your Telescope', + 'Anonymous Pro', + 'Antic', + 'Antic Didone', + 'Antic Slab', + 'Anton', + 'Arapey', + 'Arbutus', + 'Arbutus Slab', + 'Architects Daughter', + 'Archivo Black', + 'Archivo Narrow', + 'Arimo', + 'Arizonia', + 'Armata', + 'Artifika', + 'Arvo', + 'Arya', + 'Asap', + 'Asar', + 'Asset', + 'Astloch', + 'Asul', + 'Atomic Age', + 'Aubrey', + 'Audiowide', + 'Autour One', + 'Average', + 'Average Sans', + 'Averia Gruesa Libre', + 'Averia Libre', + 'Averia Sans Libre', + 'Averia Serif Libre', + 'Bad Script', + 'Balthazar', + 'Bangers', + 'Basic', + 'Battambang', + 'Baumans', + 'Bayon', + 'Belgrano', + 'Belleza', + 'BenchNine', + 'Bentham', + 'Berkshire Swash', + 'Bevan', + 'Bigelow Rules', + 'Bigshot One', + 'Bilbo', + 'Bilbo Swash Caps', + 'Biryani', + 'Bitter', + 'Black Ops One', + 'Bokor', + 'Bonbon', + 'Boogaloo', + 'Bowlby One', + 'Bowlby One SC', + 'Brawler', + 'Bree Serif', + 'Bubblegum Sans', + 'Bubbler One', + 'Buda', + 'Buenard', + 'Butcherman', + 'Butterfly Kids', + 'Cabin', + 'Cabin Condensed', + 'Cabin Sketch', + 'Caesar Dressing', + 'Cagliostro', + 'Calligraffitti', + 'Cambay', + 'Cambo', + 'Candal', + 'Cantarell', + 'Cantata One', + 'Cantora One', + 'Capriola', + 'Cardo', + 'Carme', + 'Carrois Gothic', + 'Carrois Gothic SC', + 'Carter One', + 'Catamaran', + 'Caudex', + 'Caveat', + 'Caveat Brush', + 'Cedarville Cursive', + 'Ceviche One', + 'Changa One', + 'Chango', + 'Chau Philomene One', + 'Chela One', + 'Chelsea Market', + 'Chenla', + 'Cherry Cream Soda', + 'Cherry Swash', + 'Chewy', + 'Chicle', + 'Chivo', + 'Chonburi', + 'Cinzel', + 'Cinzel Decorative', + 'Clicker Script', + 'Coda', + 'Coda Caption', + 'Codystar', + 'Combo', + 'Comfortaa', + 'Coming Soon', + 'Concert One', + 'Condiment', + 'Content', + 'Contrail One', + 'Convergence', + 'Cookie', + 'Copse', + 'Corben', + 'Courgette', + 'Cousine', + 'Coustard', + 'Covered By Your Grace', + 'Crafty Girls', + 'Creepster', + 'Crete Round', + 'Crimson Text', + 'Croissant One', + 'Crushed', + 'Cuprum', + 'Cutive', + 'Cutive Mono', + 'Damion', + 'Dancing Script', + 'Dangrek', + 'Dawning of a New Day', + 'Days One', + 'Dekko', + 'Delius', + 'Delius Swash Caps', + 'Delius Unicase', + 'Della Respira', + 'Denk One', + 'Devonshire', + 'Dhurjati', + 'Didact Gothic', + 'Diplomata', + 'Diplomata SC', + 'Domine', + 'Donegal One', + 'Doppio One', + 'Dorsa', + 'Dosis', + 'Dr Sugiyama', + 'Droid Sans', + 'Droid Sans Mono', + 'Droid Serif', + 'Duru Sans', + 'Dynalight', + 'EB Garamond', + 'Eagle Lake', + 'Eater', + 'Economica', + 'Eczar', + 'Ek Mukta', + 'Electrolize', + 'Elsie', + 'Elsie Swash Caps', + 'Emblema One', + 'Emilys Candy', + 'Engagement', + 'Englebert', + 'Enriqueta', + 'Erica One', + 'Esteban', + 'Euphoria Script', + 'Ewert', + 'Exo', + 'Exo 2', + 'Expletus Sans', + 'Fanwood Text', + 'Fascinate', + 'Fascinate Inline', + 'Faster One', + 'Fasthand', + 'Fauna One', + 'Federant', + 'Federo', + 'Felipa', + 'Fenix', + 'Finger Paint', + 'Fira Mono', + 'Fira Sans', + 'Fjalla One', + 'Fjord One', + 'Flamenco', + 'Flavors', + 'Fondamento', + 'Fontdiner Swanky', + 'Forum', + 'Francois One', + 'Freckle Face', + 'Fredericka the Great', + 'Fredoka One', + 'Freehand', + 'Fresca', + 'Frijole', + 'Fruktur', + 'Fugaz One', + 'GFS Didot', + 'GFS Neohellenic', + 'Gabriela', + 'Gafata', + 'Galdeano', + 'Galindo', + 'Gentium Basic', + 'Gentium Book Basic', + 'Geo', + 'Geostar', + 'Geostar Fill', + 'Germania One', + 'Gidugu', + 'Gilda Display', + 'Give You Glory', + 'Glass Antiqua', + 'Glegoo', + 'Gloria Hallelujah', + 'Goblin One', + 'Gochi Hand', + 'Gorditas', + 'Goudy Bookletter 1911', + 'Graduate', + 'Grand Hotel', + 'Gravitas One', + 'Great Vibes', + 'Griffy', + 'Gruppo', + 'Gudea', + 'Gurajada', + 'Habibi', + 'Halant', + 'Hammersmith One', + 'Hanalei', + 'Hanalei Fill', + 'Handlee', + 'Hanuman', + 'Happy Monkey', + 'Headland One', + 'Henny Penny', + 'Herr Von Muellerhoff', + 'Hind', + 'Hind Siliguri', + 'Hind Vadodara', + 'Holtwood One SC', + 'Homemade Apple', + 'Homenaje', + 'IM Fell DW Pica', + 'IM Fell DW Pica SC', + 'IM Fell Double Pica', + 'IM Fell Double Pica SC', + 'IM Fell English', + 'IM Fell English SC', + 'IM Fell French Canon', + 'IM Fell French Canon SC', + 'IM Fell Great Primer', + 'IM Fell Great Primer SC', + 'Iceberg', + 'Iceland', + 'Imprima', + 'Inconsolata', + 'Inder', + 'Indie Flower', + 'Inika', + 'Inknut Antiqua', + 'Irish Grover', + 'Istok Web', + 'Italiana', + 'Italianno', + 'Itim', + 'Jacques Francois', + 'Jacques Francois Shadow', + 'Jaldi', + 'Jim Nightshade', + 'Jockey One', + 'Jolly Lodger', + 'Josefin Sans', + 'Josefin Slab', + 'Joti One', + 'Judson', + 'Julee', + 'Julius Sans One', + 'Junge', + 'Jura', + 'Just Another Hand', + 'Just Me Again Down Here', + 'Kadwa', + 'Kalam', + 'Kameron', + 'Kantumruy', + 'Karla', + 'Karma', + 'Kaushan Script', + 'Kavoon', + 'Kdam Thmor', + 'Keania One', + 'Kelly Slab', + 'Kenia', + 'Khand', + 'Khmer', + 'Khula', + 'Kite One', + 'Knewave', + 'Kotta One', + 'Koulen', + 'Kranky', + 'Kreon', + 'Kristi', + 'Krona One', + 'Kurale', + 'La Belle Aurore', + 'Laila', + 'Lakki Reddy', + 'Lancelot', + 'Lateef', + 'Lato', + 'League Script', + 'Leckerli One', + 'Ledger', + 'Lekton', + 'Lemon', + 'Libre Baskerville', + 'Life Savers', + 'Lilita One', + 'Lily Script One', + 'Limelight', + 'Linden Hill', + 'Lobster', + 'Lobster Two', + 'Londrina Outline', + 'Londrina Shadow', + 'Londrina Sketch', + 'Londrina Solid', + 'Lora', + 'Love Ya Like A Sister', + 'Loved by the King', + 'Lovers Quarrel', + 'Luckiest Guy', + 'Lusitana', + 'Lustria', + 'Macondo', + 'Macondo Swash Caps', + 'Magra', + 'Maiden Orange', + 'Mako', + 'Mallanna', + 'Mandali', + 'Marcellus', + 'Marcellus SC', + 'Marck Script', + 'Margarine', + 'Marko One', + 'Marmelad', + 'Martel', + 'Martel Sans', + 'Marvel', + 'Mate', + 'Mate SC', + 'Maven Pro', + 'McLaren', + 'Meddon', + 'MedievalSharp', + 'Medula One', + 'Megrim', + 'Meie Script', + 'Merienda', + 'Merienda One', + 'Merriweather', + 'Merriweather Sans', + 'Metal', + 'Metal Mania', + 'Metamorphous', + 'Metrophobic', + 'Michroma', + 'Milonga', + 'Miltonian', + 'Miltonian Tattoo', + 'Miniver', + 'Miss Fajardose', + 'Modak', + 'Modern Antiqua', + 'Molengo', + 'Molle', + 'Monda', + 'Monofett', + 'Monoton', + 'Monsieur La Doulaise', + 'Montaga', + 'Montez', + 'Montserrat', + 'Montserrat Alternates', + 'Montserrat Subrayada', + 'Moul', + 'Moulpali', + 'Mountains of Christmas', + 'Mouse Memoirs', + 'Mr Bedfort', + 'Mr Dafoe', + 'Mr De Haviland', + 'Mrs Saint Delafield', + 'Mrs Sheppards', + 'Muli', + 'Mystery Quest', + 'NTR', + 'Neucha', + 'Neuton', + 'New Rocker', + 'News Cycle', + 'Niconne', + 'Nixie One', + 'Nobile', + 'Nokora', + 'Norican', + 'Nosifer', + 'Nothing You Could Do', + 'Noticia Text', + 'Noto Sans', + 'Noto Serif', + 'Nova Cut', + 'Nova Flat', + 'Nova Mono', + 'Nova Oval', + 'Nova Round', + 'Nova Script', + 'Nova Slim', + 'Nova Square', + 'Numans', + 'Nunito', + 'Odor Mean Chey', + 'Offside', + 'Old Standard TT', + 'Oldenburg', + 'Oleo Script', + 'Oleo Script Swash Caps', + 'Open Sans', + 'Open Sans Condensed', + 'Oranienbaum', + 'Orbitron', + 'Oregano', + 'Orienta', + 'Original Surfer', + 'Oswald', + 'Over the Rainbow', + 'Overlock', + 'Overlock SC', + 'Ovo', + 'Oxygen', + 'Oxygen Mono', + 'PT Mono', + 'PT Sans', + 'PT Sans Caption', + 'PT Sans Narrow', + 'PT Serif', + 'PT Serif Caption', + 'Pacifico', + 'Palanquin', + 'Palanquin Dark', + 'Paprika', + 'Parisienne', + 'Passero One', + 'Passion One', + 'Pathway Gothic One', + 'Patrick Hand', + 'Patrick Hand SC', + 'Patua One', + 'Paytone One', + 'Peddana', + 'Peralta', + 'Permanent Marker', + 'Petit Formal Script', + 'Petrona', + 'Philosopher', + 'Piedra', + 'Pinyon Script', + 'Pirata One', + 'Plaster', + 'Play', + 'Playball', + 'Playfair Display', + 'Playfair Display SC', + 'Podkova', + 'Poiret One', + 'Poller One', + 'Poly', + 'Pompiere', + 'Pontano Sans', + 'Poppins', + 'Port Lligat Sans', + 'Port Lligat Slab', + 'Pragati Narrow', + 'Prata', + 'Preahvihear', + 'Press Start 2P', + 'Princess Sofia', + 'Prociono', + 'Prosto One', + 'Puritan', + 'Purple Purse', + 'Quando', + 'Quantico', + 'Quattrocento', + 'Quattrocento Sans', + 'Questrial', + 'Quicksand', + 'Quintessential', + 'Qwigley', + 'Racing Sans One', + 'Radley', + 'Rajdhani', + 'Raleway', + 'Raleway Dots', + 'Ramabhadra', + 'Ramaraja', + 'Rambla', + 'Rammetto One', + 'Ranchers', + 'Rancho', + 'Ranga', + 'Rationale', + 'Ravi Prakash', + 'Redressed', + 'Reenie Beanie', + 'Revalia', + 'Rhodium Libre', + 'Ribeye', + 'Ribeye Marrow', + 'Righteous', + 'Risque', + 'Roboto', + 'Roboto Condensed', + 'Roboto Mono', + 'Roboto Slab', + 'Rochester', + 'Rock Salt', + 'Rokkitt', + 'Romanesco', + 'Ropa Sans', + 'Rosario', + 'Rosarivo', + 'Rouge Script', + 'Rozha One', + 'Rubik', + 'Rubik Mono One', + 'Rubik One', + 'Ruda', + 'Rufina', + 'Ruge Boogie', + 'Ruluko', + 'Rum Raisin', + 'Ruslan Display', + 'Russo One', + 'Ruthie', + 'Rye', + 'Sacramento', + 'Sahitya', + 'Sail', + 'Salsa', + 'Sanchez', + 'Sancreek', + 'Sansita One', + 'Sarala', + 'Sarina', + 'Sarpanch', + 'Satisfy', + 'Scada', + 'Scheherazade', + 'Schoolbell', + 'Seaweed Script', + 'Sevillana', + 'Seymour One', + 'Shadows Into Light', + 'Shadows Into Light Two', + 'Shanti', + 'Share', + 'Share Tech', + 'Share Tech Mono', + 'Shojumaru', + 'Short Stack', + 'Siemreap', + 'Sigmar One', + 'Signika', + 'Signika Negative', + 'Simonetta', + 'Sintony', + 'Sirin Stencil', + 'Six Caps', + 'Skranji', + 'Slabo 13px', + 'Slabo 27px', + 'Slackey', + 'Smokum', + 'Smythe', + 'Sniglet', + 'Snippet', + 'Snowburst One', + 'Sofadi One', + 'Sofia', + 'Sonsie One', + 'Sorts Mill Goudy', + 'Source Code Pro', + 'Source Sans Pro', + 'Source Serif Pro', + 'Special Elite', + 'Spicy Rice', + 'Spinnaker', + 'Spirax', + 'Squada One', + 'Sree Krushnadevaraya', + 'Stalemate', + 'Stalinist One', + 'Stardos Stencil', + 'Stint Ultra Condensed', + 'Stint Ultra Expanded', + 'Stoke', + 'Strait', + 'Sue Ellen Francisco', + 'Sumana', + 'Sunshiney', + 'Supermercado One', + 'Sura', + 'Suranna', + 'Suravaram', + 'Suwannaphum', + 'Swanky and Moo Moo', + 'Syncopate', + 'Tangerine', + 'Taprom', + 'Tauri', + 'Teko', + 'Telex', + 'Tenali Ramakrishna', + 'Tenor Sans', + 'Text Me One', + 'The Girl Next Door', + 'Tienne', + 'Tillana', + 'Timmana', + 'Tinos', + 'Titan One', + 'Titillium Web', + 'Trade Winds', + 'Trocchi', + 'Trochut', + 'Trykker', + 'Tulpen One', + 'Ubuntu', + 'Ubuntu Condensed', + 'Ubuntu Mono', + 'Ultra', + 'Uncial Antiqua', + 'Underdog', + 'Unica One', + 'UnifrakturCook', + 'UnifrakturMaguntia', + 'Unkempt', + 'Unlock', + 'Unna', + 'VT323', + 'Vampiro One', + 'Varela', + 'Varela Round', + 'Vast Shadow', + 'Vesper Libre', + 'Vibur', + 'Vidaloka', + 'Viga', + 'Voces', + 'Volkhov', + 'Vollkorn', + 'Voltaire', + 'Waiting for the Sunrise', + 'Wallpoet', + 'Walter Turncoat', + 'Warnes', + 'Wellfleet', + 'Wendy One', + 'Wire One', + 'Work Sans', + 'Yanone Kaffeesatz', + 'Yantramanav', + 'Yellowtail', + 'Yeseva One', + 'Yesteryear', + 'Zeyada', + ]) + }).call(this) + }, + function (t, e, r) { + 'use strict' + ;(function (t) { + /*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + var n = r(8), + i = r(3), + o = r(9) + function a() { + return l.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 + } + function s(t, e) { + if (a() < e) throw new RangeError('Invalid typed array length') + return ( + l.TYPED_ARRAY_SUPPORT + ? ((t = new Uint8Array(e)).__proto__ = l.prototype) + : (null === t && (t = new l(e)), (t.length = e)), + t + ) + } + function l(t, e, r) { + if (!(l.TYPED_ARRAY_SUPPORT || this instanceof l)) + return new l(t, e, r) + if ('number' == typeof t) { + if ('string' == typeof e) + throw new Error( + 'If encoding is specified then the first argument must be a string', + ) + return h(this, t) + } + return u(this, t, e, r) + } + function u(t, e, r, n) { + if ('number' == typeof e) + throw new TypeError('"value" argument must not be a number') + return 'undefined' != typeof ArrayBuffer && e instanceof ArrayBuffer + ? (function (t, e, r, n) { + if ((e.byteLength, r < 0 || e.byteLength < r)) + throw new RangeError("'offset' is out of bounds") + if (e.byteLength < r + (n || 0)) + throw new RangeError("'length' is out of bounds") + e = + void 0 === r && void 0 === n + ? new Uint8Array(e) + : void 0 === n + ? new Uint8Array(e, r) + : new Uint8Array(e, r, n) + l.TYPED_ARRAY_SUPPORT + ? ((t = e).__proto__ = l.prototype) + : (t = p(t, e)) + return t + })(t, e, r, n) + : 'string' == typeof e + ? (function (t, e, r) { + ;('string' == typeof r && '' !== r) || (r = 'utf8') + if (!l.isEncoding(r)) + throw new TypeError( + '"encoding" must be a valid string encoding', + ) + var n = 0 | d(e, r), + i = (t = s(t, n)).write(e, r) + i !== n && (t = t.slice(0, i)) + return t + })(t, e, r) + : (function (t, e) { + if (l.isBuffer(e)) { + var r = 0 | f(e.length) + return 0 === (t = s(t, r)).length || e.copy(t, 0, 0, r), t + } + if (e) { + if ( + ('undefined' != typeof ArrayBuffer && + e.buffer instanceof ArrayBuffer) || + 'length' in e + ) + return 'number' != typeof e.length || (n = e.length) != n + ? s(t, 0) + : p(t, e) + if ('Buffer' === e.type && o(e.data)) return p(t, e.data) + } + var n + throw new TypeError( + 'First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.', + ) + })(t, e) + } + function c(t) { + if ('number' != typeof t) + throw new TypeError('"size" argument must be a number') + if (t < 0) + throw new RangeError('"size" argument must not be negative') + } + function h(t, e) { + if ((c(e), (t = s(t, e < 0 ? 0 : 0 | f(e))), !l.TYPED_ARRAY_SUPPORT)) + for (var r = 0; r < e; ++r) t[r] = 0 + return t + } + function p(t, e) { + var r = e.length < 0 ? 0 : 0 | f(e.length) + t = s(t, r) + for (var n = 0; n < r; n += 1) t[n] = 255 & e[n] + return t + } + function f(t) { + if (t >= a()) + throw new RangeError( + 'Attempt to allocate Buffer larger than maximum size: 0x' + + a().toString(16) + + ' bytes', + ) + return 0 | t + } + function d(t, e) { + if (l.isBuffer(t)) return t.length + if ( + 'undefined' != typeof ArrayBuffer && + 'function' == typeof ArrayBuffer.isView && + (ArrayBuffer.isView(t) || t instanceof ArrayBuffer) + ) + return t.byteLength + 'string' != typeof t && (t = '' + t) + var r = t.length + if (0 === r) return 0 + for (var n = !1; ; ) + switch (e) { + case 'ascii': + case 'latin1': + case 'binary': + return r + case 'utf8': + case 'utf-8': + case void 0: + return z(t).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 2 * r + case 'hex': + return r >>> 1 + case 'base64': + return U(t).length + default: + if (n) return z(t).length + ;(e = ('' + e).toLowerCase()), (n = !0) + } + } + function g(t, e, r) { + var n = !1 + if (((void 0 === e || e < 0) && (e = 0), e > this.length)) return '' + if (((void 0 === r || r > this.length) && (r = this.length), r <= 0)) + return '' + if ((r >>>= 0) <= (e >>>= 0)) return '' + for (t || (t = 'utf8'); ; ) + switch (t) { + case 'hex': + return R(this, e, r) + case 'utf8': + case 'utf-8': + return C(this, e, r) + case 'ascii': + return O(this, e, r) + case 'latin1': + case 'binary': + return P(this, e, r) + case 'base64': + return T(this, e, r) + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return I(this, e, r) + default: + if (n) throw new TypeError('Unknown encoding: ' + t) + ;(t = (t + '').toLowerCase()), (n = !0) + } + } + function y(t, e, r) { + var n = t[e] + ;(t[e] = t[r]), (t[r] = n) + } + function m(t, e, r, n, i) { + if (0 === t.length) return -1 + if ( + ('string' == typeof r + ? ((n = r), (r = 0)) + : r > 2147483647 + ? (r = 2147483647) + : r < -2147483648 && (r = -2147483648), + (r = +r), + isNaN(r) && (r = i ? 0 : t.length - 1), + r < 0 && (r = t.length + r), + r >= t.length) + ) { + if (i) return -1 + r = t.length - 1 + } else if (r < 0) { + if (!i) return -1 + r = 0 + } + if (('string' == typeof e && (e = l.from(e, n)), l.isBuffer(e))) + return 0 === e.length ? -1 : v(t, e, r, n, i) + if ('number' == typeof e) + return ( + (e &= 255), + l.TYPED_ARRAY_SUPPORT && + 'function' == typeof Uint8Array.prototype.indexOf + ? i + ? Uint8Array.prototype.indexOf.call(t, e, r) + : Uint8Array.prototype.lastIndexOf.call(t, e, r) + : v(t, [e], r, n, i) + ) + throw new TypeError('val must be string, number or Buffer') + } + function v(t, e, r, n, i) { + var o, + a = 1, + s = t.length, + l = e.length + if ( + void 0 !== n && + ('ucs2' === (n = String(n).toLowerCase()) || + 'ucs-2' === n || + 'utf16le' === n || + 'utf-16le' === n) + ) { + if (t.length < 2 || e.length < 2) return -1 + ;(a = 2), (s /= 2), (l /= 2), (r /= 2) + } + function u(t, e) { + return 1 === a ? t[e] : t.readUInt16BE(e * a) + } + if (i) { + var c = -1 + for (o = r; o < s; o++) + if (u(t, o) === u(e, -1 === c ? 0 : o - c)) { + if ((-1 === c && (c = o), o - c + 1 === l)) return c * a + } else -1 !== c && (o -= o - c), (c = -1) + } else + for (r + l > s && (r = s - l), o = r; o >= 0; o--) { + for (var h = !0, p = 0; p < l; p++) + if (u(t, o + p) !== u(e, p)) { + h = !1 + break + } + if (h) return o + } + return -1 + } + function _(t, e, r, n) { + r = Number(r) || 0 + var i = t.length - r + n ? (n = Number(n)) > i && (n = i) : (n = i) + var o = e.length + if (o % 2 != 0) throw new TypeError('Invalid hex string') + n > o / 2 && (n = o / 2) + for (var a = 0; a < n; ++a) { + var s = parseInt(e.substr(2 * a, 2), 16) + if (isNaN(s)) return a + t[r + a] = s + } + return a + } + function b(t, e, r, n) { + return B(z(e, t.length - r), t, r, n) + } + function x(t, e, r, n) { + return B( + (function (t) { + for (var e = [], r = 0; r < t.length; ++r) + e.push(255 & t.charCodeAt(r)) + return e + })(e), + t, + r, + n, + ) + } + function w(t, e, r, n) { + return x(t, e, r, n) + } + function S(t, e, r, n) { + return B(U(e), t, r, n) + } + function E(t, e, r, n) { + return B( + (function (t, e) { + for ( + var r, n, i, o = [], a = 0; + a < t.length && !((e -= 2) < 0); + ++a + ) + (r = t.charCodeAt(a)), + (n = r >> 8), + (i = r % 256), + o.push(i), + o.push(n) + return o + })(e, t.length - r), + t, + r, + n, + ) + } + function T(t, e, r) { + return 0 === e && r === t.length + ? n.fromByteArray(t) + : n.fromByteArray(t.slice(e, r)) + } + function C(t, e, r) { + r = Math.min(t.length, r) + for (var n = [], i = e; i < r; ) { + var o, + a, + s, + l, + u = t[i], + c = null, + h = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1 + if (i + h <= r) + switch (h) { + case 1: + u < 128 && (c = u) + break + case 2: + 128 == (192 & (o = t[i + 1])) && + (l = ((31 & u) << 6) | (63 & o)) > 127 && + (c = l) + break + case 3: + ;(o = t[i + 1]), + (a = t[i + 2]), + 128 == (192 & o) && + 128 == (192 & a) && + (l = ((15 & u) << 12) | ((63 & o) << 6) | (63 & a)) > + 2047 && + (l < 55296 || l > 57343) && + (c = l) + break + case 4: + ;(o = t[i + 1]), + (a = t[i + 2]), + (s = t[i + 3]), + 128 == (192 & o) && + 128 == (192 & a) && + 128 == (192 & s) && + (l = + ((15 & u) << 18) | + ((63 & o) << 12) | + ((63 & a) << 6) | + (63 & s)) > 65535 && + l < 1114112 && + (c = l) + } + null === c + ? ((c = 65533), (h = 1)) + : c > 65535 && + ((c -= 65536), + n.push(((c >>> 10) & 1023) | 55296), + (c = 56320 | (1023 & c))), + n.push(c), + (i += h) + } + return (function (t) { + var e = t.length + if (e <= 4096) return String.fromCharCode.apply(String, t) + var r = '', + n = 0 + for (; n < e; ) + r += String.fromCharCode.apply(String, t.slice(n, (n += 4096))) + return r + })(n) + } + ;(e.Buffer = l), + (e.SlowBuffer = function (t) { + ;+t != t && (t = 0) + return l.alloc(+t) + }), + (e.INSPECT_MAX_BYTES = 50), + (l.TYPED_ARRAY_SUPPORT = + void 0 !== t.TYPED_ARRAY_SUPPORT + ? t.TYPED_ARRAY_SUPPORT + : (function () { + try { + var t = new Uint8Array(1) + return ( + (t.__proto__ = { + __proto__: Uint8Array.prototype, + foo: function () { + return 42 + }, + }), + 42 === t.foo() && + 'function' == typeof t.subarray && + 0 === t.subarray(1, 1).byteLength + ) + } catch (t) { + return !1 + } + })()), + (e.kMaxLength = a()), + (l.poolSize = 8192), + (l._augment = function (t) { + return (t.__proto__ = l.prototype), t + }), + (l.from = function (t, e, r) { + return u(null, t, e, r) + }), + l.TYPED_ARRAY_SUPPORT && + ((l.prototype.__proto__ = Uint8Array.prototype), + (l.__proto__ = Uint8Array), + 'undefined' != typeof Symbol && + Symbol.species && + l[Symbol.species] === l && + Object.defineProperty(l, Symbol.species, { + value: null, + configurable: !0, + })), + (l.alloc = function (t, e, r) { + return (function (t, e, r, n) { + return ( + c(e), + e <= 0 + ? s(t, e) + : void 0 !== r + ? 'string' == typeof n + ? s(t, e).fill(r, n) + : s(t, e).fill(r) + : s(t, e) + ) + })(null, t, e, r) + }), + (l.allocUnsafe = function (t) { + return h(null, t) + }), + (l.allocUnsafeSlow = function (t) { + return h(null, t) + }), + (l.isBuffer = function (t) { + return !(null == t || !t._isBuffer) + }), + (l.compare = function (t, e) { + if (!l.isBuffer(t) || !l.isBuffer(e)) + throw new TypeError('Arguments must be Buffers') + if (t === e) return 0 + for ( + var r = t.length, n = e.length, i = 0, o = Math.min(r, n); + i < o; + ++i + ) + if (t[i] !== e[i]) { + ;(r = t[i]), (n = e[i]) + break + } + return r < n ? -1 : n < r ? 1 : 0 + }), + (l.isEncoding = function (t) { + switch (String(t).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return !0 + default: + return !1 + } + }), + (l.concat = function (t, e) { + if (!o(t)) + throw new TypeError('"list" argument must be an Array of Buffers') + if (0 === t.length) return l.alloc(0) + var r + if (void 0 === e) + for (e = 0, r = 0; r < t.length; ++r) e += t[r].length + var n = l.allocUnsafe(e), + i = 0 + for (r = 0; r < t.length; ++r) { + var a = t[r] + if (!l.isBuffer(a)) + throw new TypeError( + '"list" argument must be an Array of Buffers', + ) + a.copy(n, i), (i += a.length) + } + return n + }), + (l.byteLength = d), + (l.prototype._isBuffer = !0), + (l.prototype.swap16 = function () { + var t = this.length + if (t % 2 != 0) + throw new RangeError('Buffer size must be a multiple of 16-bits') + for (var e = 0; e < t; e += 2) y(this, e, e + 1) + return this + }), + (l.prototype.swap32 = function () { + var t = this.length + if (t % 4 != 0) + throw new RangeError('Buffer size must be a multiple of 32-bits') + for (var e = 0; e < t; e += 4) + y(this, e, e + 3), y(this, e + 1, e + 2) + return this + }), + (l.prototype.swap64 = function () { + var t = this.length + if (t % 8 != 0) + throw new RangeError('Buffer size must be a multiple of 64-bits') + for (var e = 0; e < t; e += 8) + y(this, e, e + 7), + y(this, e + 1, e + 6), + y(this, e + 2, e + 5), + y(this, e + 3, e + 4) + return this + }), + (l.prototype.toString = function () { + var t = 0 | this.length + return 0 === t + ? '' + : 0 === arguments.length + ? C(this, 0, t) + : g.apply(this, arguments) + }), + (l.prototype.equals = function (t) { + if (!l.isBuffer(t)) throw new TypeError('Argument must be a Buffer') + return this === t || 0 === l.compare(this, t) + }), + (l.prototype.inspect = function () { + var t = '', + r = e.INSPECT_MAX_BYTES + return ( + this.length > 0 && + ((t = this.toString('hex', 0, r).match(/.{2}/g).join(' ')), + this.length > r && (t += ' ... ')), + '' + ) + }), + (l.prototype.compare = function (t, e, r, n, i) { + if (!l.isBuffer(t)) throw new TypeError('Argument must be a Buffer') + if ( + (void 0 === e && (e = 0), + void 0 === r && (r = t ? t.length : 0), + void 0 === n && (n = 0), + void 0 === i && (i = this.length), + e < 0 || r > t.length || n < 0 || i > this.length) + ) + throw new RangeError('out of range index') + if (n >= i && e >= r) return 0 + if (n >= i) return -1 + if (e >= r) return 1 + if (this === t) return 0 + for ( + var o = (i >>>= 0) - (n >>>= 0), + a = (r >>>= 0) - (e >>>= 0), + s = Math.min(o, a), + u = this.slice(n, i), + c = t.slice(e, r), + h = 0; + h < s; + ++h + ) + if (u[h] !== c[h]) { + ;(o = u[h]), (a = c[h]) + break + } + return o < a ? -1 : a < o ? 1 : 0 + }), + (l.prototype.includes = function (t, e, r) { + return -1 !== this.indexOf(t, e, r) + }), + (l.prototype.indexOf = function (t, e, r) { + return m(this, t, e, r, !0) + }), + (l.prototype.lastIndexOf = function (t, e, r) { + return m(this, t, e, r, !1) + }), + (l.prototype.write = function (t, e, r, n) { + if (void 0 === e) (n = 'utf8'), (r = this.length), (e = 0) + else if (void 0 === r && 'string' == typeof e) + (n = e), (r = this.length), (e = 0) + else { + if (!isFinite(e)) + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported', + ) + ;(e |= 0), + isFinite(r) + ? ((r |= 0), void 0 === n && (n = 'utf8')) + : ((n = r), (r = void 0)) + } + var i = this.length - e + if ( + ((void 0 === r || r > i) && (r = i), + (t.length > 0 && (r < 0 || e < 0)) || e > this.length) + ) + throw new RangeError('Attempt to write outside buffer bounds') + n || (n = 'utf8') + for (var o = !1; ; ) + switch (n) { + case 'hex': + return _(this, t, e, r) + case 'utf8': + case 'utf-8': + return b(this, t, e, r) + case 'ascii': + return x(this, t, e, r) + case 'latin1': + case 'binary': + return w(this, t, e, r) + case 'base64': + return S(this, t, e, r) + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return E(this, t, e, r) + default: + if (o) throw new TypeError('Unknown encoding: ' + n) + ;(n = ('' + n).toLowerCase()), (o = !0) + } + }), + (l.prototype.toJSON = function () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0), + } + }) + function O(t, e, r) { + var n = '' + r = Math.min(t.length, r) + for (var i = e; i < r; ++i) n += String.fromCharCode(127 & t[i]) + return n + } + function P(t, e, r) { + var n = '' + r = Math.min(t.length, r) + for (var i = e; i < r; ++i) n += String.fromCharCode(t[i]) + return n + } + function R(t, e, r) { + var n = t.length + ;(!e || e < 0) && (e = 0), (!r || r < 0 || r > n) && (r = n) + for (var i = '', o = e; o < r; ++o) i += G(t[o]) + return i + } + function I(t, e, r) { + for (var n = t.slice(e, r), i = '', o = 0; o < n.length; o += 2) + i += String.fromCharCode(n[o] + 256 * n[o + 1]) + return i + } + function L(t, e, r) { + if (t % 1 != 0 || t < 0) throw new RangeError('offset is not uint') + if (t + e > r) + throw new RangeError('Trying to access beyond buffer length') + } + function M(t, e, r, n, i, o) { + if (!l.isBuffer(t)) + throw new TypeError('"buffer" argument must be a Buffer instance') + if (e > i || e < o) + throw new RangeError('"value" argument is out of bounds') + if (r + n > t.length) throw new RangeError('Index out of range') + } + function F(t, e, r, n) { + e < 0 && (e = 65535 + e + 1) + for (var i = 0, o = Math.min(t.length - r, 2); i < o; ++i) + t[r + i] = + (e & (255 << (8 * (n ? i : 1 - i)))) >>> (8 * (n ? i : 1 - i)) + } + function A(t, e, r, n) { + e < 0 && (e = 4294967295 + e + 1) + for (var i = 0, o = Math.min(t.length - r, 4); i < o; ++i) + t[r + i] = (e >>> (8 * (n ? i : 3 - i))) & 255 + } + function k(t, e, r, n, i, o) { + if (r + n > t.length) throw new RangeError('Index out of range') + if (r < 0) throw new RangeError('Index out of range') + } + function j(t, e, r, n, o) { + return o || k(t, 0, r, 4), i.write(t, e, r, n, 23, 4), r + 4 + } + function N(t, e, r, n, o) { + return o || k(t, 0, r, 8), i.write(t, e, r, n, 52, 8), r + 8 + } + ;(l.prototype.slice = function (t, e) { + var r, + n = this.length + if ( + ((t = ~~t) < 0 ? (t += n) < 0 && (t = 0) : t > n && (t = n), + (e = void 0 === e ? n : ~~e) < 0 + ? (e += n) < 0 && (e = 0) + : e > n && (e = n), + e < t && (e = t), + l.TYPED_ARRAY_SUPPORT) + ) + (r = this.subarray(t, e)).__proto__ = l.prototype + else { + var i = e - t + r = new l(i, void 0) + for (var o = 0; o < i; ++o) r[o] = this[o + t] + } + return r + }), + (l.prototype.readUIntLE = function (t, e, r) { + ;(t |= 0), (e |= 0), r || L(t, e, this.length) + for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256); ) + n += this[t + o] * i + return n + }), + (l.prototype.readUIntBE = function (t, e, r) { + ;(t |= 0), (e |= 0), r || L(t, e, this.length) + for (var n = this[t + --e], i = 1; e > 0 && (i *= 256); ) + n += this[t + --e] * i + return n + }), + (l.prototype.readUInt8 = function (t, e) { + return e || L(t, 1, this.length), this[t] + }), + (l.prototype.readUInt16LE = function (t, e) { + return e || L(t, 2, this.length), this[t] | (this[t + 1] << 8) + }), + (l.prototype.readUInt16BE = function (t, e) { + return e || L(t, 2, this.length), (this[t] << 8) | this[t + 1] + }), + (l.prototype.readUInt32LE = function (t, e) { + return ( + e || L(t, 4, this.length), + (this[t] | (this[t + 1] << 8) | (this[t + 2] << 16)) + + 16777216 * this[t + 3] + ) + }), + (l.prototype.readUInt32BE = function (t, e) { + return ( + e || L(t, 4, this.length), + 16777216 * this[t] + + ((this[t + 1] << 16) | (this[t + 2] << 8) | this[t + 3]) + ) + }), + (l.prototype.readIntLE = function (t, e, r) { + ;(t |= 0), (e |= 0), r || L(t, e, this.length) + for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256); ) + n += this[t + o] * i + return n >= (i *= 128) && (n -= Math.pow(2, 8 * e)), n + }), + (l.prototype.readIntBE = function (t, e, r) { + ;(t |= 0), (e |= 0), r || L(t, e, this.length) + for (var n = e, i = 1, o = this[t + --n]; n > 0 && (i *= 256); ) + o += this[t + --n] * i + return o >= (i *= 128) && (o -= Math.pow(2, 8 * e)), o + }), + (l.prototype.readInt8 = function (t, e) { + return ( + e || L(t, 1, this.length), + 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] + ) + }), + (l.prototype.readInt16LE = function (t, e) { + e || L(t, 2, this.length) + var r = this[t] | (this[t + 1] << 8) + return 32768 & r ? 4294901760 | r : r + }), + (l.prototype.readInt16BE = function (t, e) { + e || L(t, 2, this.length) + var r = this[t + 1] | (this[t] << 8) + return 32768 & r ? 4294901760 | r : r + }), + (l.prototype.readInt32LE = function (t, e) { + return ( + e || L(t, 4, this.length), + this[t] | + (this[t + 1] << 8) | + (this[t + 2] << 16) | + (this[t + 3] << 24) + ) + }), + (l.prototype.readInt32BE = function (t, e) { + return ( + e || L(t, 4, this.length), + (this[t] << 24) | + (this[t + 1] << 16) | + (this[t + 2] << 8) | + this[t + 3] + ) + }), + (l.prototype.readFloatLE = function (t, e) { + return e || L(t, 4, this.length), i.read(this, t, !0, 23, 4) + }), + (l.prototype.readFloatBE = function (t, e) { + return e || L(t, 4, this.length), i.read(this, t, !1, 23, 4) + }), + (l.prototype.readDoubleLE = function (t, e) { + return e || L(t, 8, this.length), i.read(this, t, !0, 52, 8) + }), + (l.prototype.readDoubleBE = function (t, e) { + return e || L(t, 8, this.length), i.read(this, t, !1, 52, 8) + }), + (l.prototype.writeUIntLE = function (t, e, r, n) { + ;((t = +t), (e |= 0), (r |= 0), n) || + M(this, t, e, r, Math.pow(2, 8 * r) - 1, 0) + var i = 1, + o = 0 + for (this[e] = 255 & t; ++o < r && (i *= 256); ) + this[e + o] = (t / i) & 255 + return e + r + }), + (l.prototype.writeUIntBE = function (t, e, r, n) { + ;((t = +t), (e |= 0), (r |= 0), n) || + M(this, t, e, r, Math.pow(2, 8 * r) - 1, 0) + var i = r - 1, + o = 1 + for (this[e + i] = 255 & t; --i >= 0 && (o *= 256); ) + this[e + i] = (t / o) & 255 + return e + r + }), + (l.prototype.writeUInt8 = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 1, 255, 0), + l.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), + (this[e] = 255 & t), + e + 1 + ) + }), + (l.prototype.writeUInt16LE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 2, 65535, 0), + l.TYPED_ARRAY_SUPPORT + ? ((this[e] = 255 & t), (this[e + 1] = t >>> 8)) + : F(this, t, e, !0), + e + 2 + ) + }), + (l.prototype.writeUInt16BE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 2, 65535, 0), + l.TYPED_ARRAY_SUPPORT + ? ((this[e] = t >>> 8), (this[e + 1] = 255 & t)) + : F(this, t, e, !1), + e + 2 + ) + }), + (l.prototype.writeUInt32LE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 4, 4294967295, 0), + l.TYPED_ARRAY_SUPPORT + ? ((this[e + 3] = t >>> 24), + (this[e + 2] = t >>> 16), + (this[e + 1] = t >>> 8), + (this[e] = 255 & t)) + : A(this, t, e, !0), + e + 4 + ) + }), + (l.prototype.writeUInt32BE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 4, 4294967295, 0), + l.TYPED_ARRAY_SUPPORT + ? ((this[e] = t >>> 24), + (this[e + 1] = t >>> 16), + (this[e + 2] = t >>> 8), + (this[e + 3] = 255 & t)) + : A(this, t, e, !1), + e + 4 + ) + }), + (l.prototype.writeIntLE = function (t, e, r, n) { + if (((t = +t), (e |= 0), !n)) { + var i = Math.pow(2, 8 * r - 1) + M(this, t, e, r, i - 1, -i) + } + var o = 0, + a = 1, + s = 0 + for (this[e] = 255 & t; ++o < r && (a *= 256); ) + t < 0 && 0 === s && 0 !== this[e + o - 1] && (s = 1), + (this[e + o] = (((t / a) >> 0) - s) & 255) + return e + r + }), + (l.prototype.writeIntBE = function (t, e, r, n) { + if (((t = +t), (e |= 0), !n)) { + var i = Math.pow(2, 8 * r - 1) + M(this, t, e, r, i - 1, -i) + } + var o = r - 1, + a = 1, + s = 0 + for (this[e + o] = 255 & t; --o >= 0 && (a *= 256); ) + t < 0 && 0 === s && 0 !== this[e + o + 1] && (s = 1), + (this[e + o] = (((t / a) >> 0) - s) & 255) + return e + r + }), + (l.prototype.writeInt8 = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 1, 127, -128), + l.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), + t < 0 && (t = 255 + t + 1), + (this[e] = 255 & t), + e + 1 + ) + }), + (l.prototype.writeInt16LE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 2, 32767, -32768), + l.TYPED_ARRAY_SUPPORT + ? ((this[e] = 255 & t), (this[e + 1] = t >>> 8)) + : F(this, t, e, !0), + e + 2 + ) + }), + (l.prototype.writeInt16BE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 2, 32767, -32768), + l.TYPED_ARRAY_SUPPORT + ? ((this[e] = t >>> 8), (this[e + 1] = 255 & t)) + : F(this, t, e, !1), + e + 2 + ) + }), + (l.prototype.writeInt32LE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 4, 2147483647, -2147483648), + l.TYPED_ARRAY_SUPPORT + ? ((this[e] = 255 & t), + (this[e + 1] = t >>> 8), + (this[e + 2] = t >>> 16), + (this[e + 3] = t >>> 24)) + : A(this, t, e, !0), + e + 4 + ) + }), + (l.prototype.writeInt32BE = function (t, e, r) { + return ( + (t = +t), + (e |= 0), + r || M(this, t, e, 4, 2147483647, -2147483648), + t < 0 && (t = 4294967295 + t + 1), + l.TYPED_ARRAY_SUPPORT + ? ((this[e] = t >>> 24), + (this[e + 1] = t >>> 16), + (this[e + 2] = t >>> 8), + (this[e + 3] = 255 & t)) + : A(this, t, e, !1), + e + 4 + ) + }), + (l.prototype.writeFloatLE = function (t, e, r) { + return j(this, t, e, !0, r) + }), + (l.prototype.writeFloatBE = function (t, e, r) { + return j(this, t, e, !1, r) + }), + (l.prototype.writeDoubleLE = function (t, e, r) { + return N(this, t, e, !0, r) + }), + (l.prototype.writeDoubleBE = function (t, e, r) { + return N(this, t, e, !1, r) + }), + (l.prototype.copy = function (t, e, r, n) { + if ( + (r || (r = 0), + n || 0 === n || (n = this.length), + e >= t.length && (e = t.length), + e || (e = 0), + n > 0 && n < r && (n = r), + n === r) + ) + return 0 + if (0 === t.length || 0 === this.length) return 0 + if (e < 0) throw new RangeError('targetStart out of bounds') + if (r < 0 || r >= this.length) + throw new RangeError('sourceStart out of bounds') + if (n < 0) throw new RangeError('sourceEnd out of bounds') + n > this.length && (n = this.length), + t.length - e < n - r && (n = t.length - e + r) + var i, + o = n - r + if (this === t && r < e && e < n) + for (i = o - 1; i >= 0; --i) t[i + e] = this[i + r] + else if (o < 1e3 || !l.TYPED_ARRAY_SUPPORT) + for (i = 0; i < o; ++i) t[i + e] = this[i + r] + else Uint8Array.prototype.set.call(t, this.subarray(r, r + o), e) + return o + }), + (l.prototype.fill = function (t, e, r, n) { + if ('string' == typeof t) { + if ( + ('string' == typeof e + ? ((n = e), (e = 0), (r = this.length)) + : 'string' == typeof r && ((n = r), (r = this.length)), + 1 === t.length) + ) { + var i = t.charCodeAt(0) + i < 256 && (t = i) + } + if (void 0 !== n && 'string' != typeof n) + throw new TypeError('encoding must be a string') + if ('string' == typeof n && !l.isEncoding(n)) + throw new TypeError('Unknown encoding: ' + n) + } else 'number' == typeof t && (t &= 255) + if (e < 0 || this.length < e || this.length < r) + throw new RangeError('Out of range index') + if (r <= e) return this + var o + if ( + ((e >>>= 0), + (r = void 0 === r ? this.length : r >>> 0), + t || (t = 0), + 'number' == typeof t) + ) + for (o = e; o < r; ++o) this[o] = t + else { + var a = l.isBuffer(t) ? t : z(new l(t, n).toString()), + s = a.length + for (o = 0; o < r - e; ++o) this[o + e] = a[o % s] + } + return this + }) + var D = /[^+\/0-9A-Za-z-_]/g + function G(t) { + return t < 16 ? '0' + t.toString(16) : t.toString(16) + } + function z(t, e) { + var r + e = e || 1 / 0 + for (var n = t.length, i = null, o = [], a = 0; a < n; ++a) { + if ((r = t.charCodeAt(a)) > 55295 && r < 57344) { + if (!i) { + if (r > 56319) { + ;(e -= 3) > -1 && o.push(239, 191, 189) + continue + } + if (a + 1 === n) { + ;(e -= 3) > -1 && o.push(239, 191, 189) + continue + } + i = r + continue + } + if (r < 56320) { + ;(e -= 3) > -1 && o.push(239, 191, 189), (i = r) + continue + } + r = 65536 + (((i - 55296) << 10) | (r - 56320)) + } else i && (e -= 3) > -1 && o.push(239, 191, 189) + if (((i = null), r < 128)) { + if ((e -= 1) < 0) break + o.push(r) + } else if (r < 2048) { + if ((e -= 2) < 0) break + o.push((r >> 6) | 192, (63 & r) | 128) + } else if (r < 65536) { + if ((e -= 3) < 0) break + o.push((r >> 12) | 224, ((r >> 6) & 63) | 128, (63 & r) | 128) + } else { + if (!(r < 1114112)) throw new Error('Invalid code point') + if ((e -= 4) < 0) break + o.push( + (r >> 18) | 240, + ((r >> 12) & 63) | 128, + ((r >> 6) & 63) | 128, + (63 & r) | 128, + ) + } + } + return o + } + function U(t) { + return n.toByteArray( + (function (t) { + if ( + (t = (function (t) { + return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, '') + })(t).replace(D, '')).length < 2 + ) + return '' + for (; t.length % 4 != 0; ) t += '=' + return t + })(t), + ) + } + function B(t, e, r, n) { + for (var i = 0; i < n && !(i + r >= e.length || i >= t.length); ++i) + e[i + r] = t[i] + return i + } + }).call(this, r(4)) + }, + function (t, e, r) { + 'use strict' + ;(e.byteLength = function (t) { + var e = u(t), + r = e[0], + n = e[1] + return (3 * (r + n)) / 4 - n + }), + (e.toByteArray = function (t) { + var e, + r, + n = u(t), + a = n[0], + s = n[1], + l = new o( + (function (t, e, r) { + return (3 * (e + r)) / 4 - r + })(0, a, s), + ), + c = 0, + h = s > 0 ? a - 4 : a + for (r = 0; r < h; r += 4) + (e = + (i[t.charCodeAt(r)] << 18) | + (i[t.charCodeAt(r + 1)] << 12) | + (i[t.charCodeAt(r + 2)] << 6) | + i[t.charCodeAt(r + 3)]), + (l[c++] = (e >> 16) & 255), + (l[c++] = (e >> 8) & 255), + (l[c++] = 255 & e) + 2 === s && + ((e = (i[t.charCodeAt(r)] << 2) | (i[t.charCodeAt(r + 1)] >> 4)), + (l[c++] = 255 & e)) + 1 === s && + ((e = + (i[t.charCodeAt(r)] << 10) | + (i[t.charCodeAt(r + 1)] << 4) | + (i[t.charCodeAt(r + 2)] >> 2)), + (l[c++] = (e >> 8) & 255), + (l[c++] = 255 & e)) + return l + }), + (e.fromByteArray = function (t) { + for ( + var e, r = t.length, i = r % 3, o = [], a = 0, s = r - i; + a < s; + a += 16383 + ) + o.push(c(t, a, a + 16383 > s ? s : a + 16383)) + 1 === i + ? ((e = t[r - 1]), o.push(n[e >> 2] + n[(e << 4) & 63] + '==')) + : 2 === i && + ((e = (t[r - 2] << 8) + t[r - 1]), + o.push(n[e >> 10] + n[(e >> 4) & 63] + n[(e << 2) & 63] + '=')) + return o.join('') + }) + for ( + var n = [], + i = [], + o = 'undefined' != typeof Uint8Array ? Uint8Array : Array, + a = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + s = 0, + l = a.length; + s < l; + ++s + ) + (n[s] = a[s]), (i[a.charCodeAt(s)] = s) + function u(t) { + var e = t.length + if (e % 4 > 0) + throw new Error('Invalid string. Length must be a multiple of 4') + var r = t.indexOf('=') + return -1 === r && (r = e), [r, r === e ? 0 : 4 - (r % 4)] + } + function c(t, e, r) { + for (var i, o, a = [], s = e; s < r; s += 3) + (i = + ((t[s] << 16) & 16711680) + + ((t[s + 1] << 8) & 65280) + + (255 & t[s + 2])), + a.push( + n[((o = i) >> 18) & 63] + + n[(o >> 12) & 63] + + n[(o >> 6) & 63] + + n[63 & o], + ) + return a.join('') + } + ;(i['-'.charCodeAt(0)] = 62), (i['_'.charCodeAt(0)] = 63) + }, + function (t, e) { + var r = {}.toString + t.exports = + Array.isArray || + function (t) { + return '[object Array]' == r.call(t) + } + }, + function (t, e, r) { + 'use strict' + function n() { + return (function () { + throw new Error('Unimplemented abstract method.') + })() + } + r.r(e) + var i = 0 + function o(t) { + return t.ol_uid || (t.ol_uid = String(++i)) + } + var a, + s = + ((a = function (t, e) { + return (a = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(t, e) + }), + function (t, e) { + function r() { + this.constructor = t + } + a(t, e), + (t.prototype = + null === e + ? Object.create(e) + : ((r.prototype = e.prototype), new r())) + }), + l = (function (t) { + function e(e) { + var r = this, + n = + 'Assertion failed. See https://openlayers.org/en/' + + ('v' + '6.5.0'.split('-')[0]) + + '/doc/errors/#' + + e + + ' for details.' + return ( + ((r = t.call(this, n) || this).code = e), + (r.name = 'AssertionError'), + (r.message = n), + r + ) + } + return s(e, t), e + })(Error) + function u(t) { + t.stopPropagation() + } + var c = (function () { + function t(t) { + this.propagationStopped, (this.type = t), (this.target = null) + } + return ( + (t.prototype.preventDefault = function () { + this.propagationStopped = !0 + }), + (t.prototype.stopPropagation = function () { + this.propagationStopped = !0 + }), + t + ) + })(), + h = 'propertychange', + p = (function () { + function t() { + this.disposed = !1 + } + return ( + (t.prototype.dispose = function () { + this.disposed || ((this.disposed = !0), this.disposeInternal()) + }), + (t.prototype.disposeInternal = function () {}), + t + ) + })() + function f(t, e, r) { + for (var n, i, o = r || d, a = 0, s = t.length, l = !1; a < s; ) + (i = +o(t[(n = a + ((s - a) >> 1))], e)) < 0 + ? (a = n + 1) + : ((s = n), (l = !i)) + return l ? a : ~a + } + function d(t, e) { + return t > e ? 1 : t < e ? -1 : 0 + } + function g(t, e) { + return t.indexOf(e) >= 0 + } + function y(t, e, r) { + var n = t.length + if (t[0] <= e) return 0 + if (e <= t[n - 1]) return n - 1 + var i = void 0 + if (r > 0) { + for (i = 1; i < n; ++i) if (t[i] < e) return i - 1 + } else if (r < 0) { + for (i = 1; i < n; ++i) if (t[i] <= e) return i + } else + for (i = 1; i < n; ++i) { + if (t[i] == e) return i + if (t[i] < e) return t[i - 1] - e < e - t[i] ? i - 1 : i + } + return n - 1 + } + function m(t, e, r) { + for (; e < r; ) { + var n = t[e] + ;(t[e] = t[r]), (t[r] = n), ++e, --r + } + } + function v(t, e) { + for ( + var r = Array.isArray(e) ? e : [e], n = r.length, i = 0; + i < n; + i++ + ) + t[t.length] = r[i] + } + function _(t, e) { + for (var r, n = t.length >>> 0, i = 0; i < n; i++) + if (e((r = t[i]), i, t)) return r + return null + } + function b(t, e) { + var r = t.length + if (r !== e.length) return !1 + for (var n = 0; n < r; n++) if (t[n] !== e[n]) return !1 + return !0 + } + function x(t, e) { + var r + return !t.every(function (n, i) { + return (r = i), !e(n, i, t) + }) + ? r + : -1 + } + function w(t, e, r) { + var n = e || d + return t.every(function (e, i) { + if (0 === i) return !0 + var o = n(t[i - 1], e) + return !(o > 0 || (r && 0 === o)) + }) + } + function S() { + return !0 + } + function E() { + return !1 + } + function T() {} + function C(t) { + var e, + r, + n, + i = !1 + return function () { + var o = Array.prototype.slice.call(arguments) + return ( + (i && this === n && b(o, r)) || + ((i = !0), (n = this), (r = o), (e = t.apply(this, arguments))), + e + ) + } + } + var O = + 'function' == typeof Object.assign + ? Object.assign + : function (t, e) { + if (null == t) + throw new TypeError( + 'Cannot convert undefined or null to object', + ) + for (var r = Object(t), n = 1, i = arguments.length; n < i; ++n) { + var o = arguments[n] + if (null != o) + for (var a in o) o.hasOwnProperty(a) && (r[a] = o[a]) + } + return r + } + function P(t) { + for (var e in t) delete t[e] + } + var R = + 'function' == typeof Object.values + ? Object.values + : function (t) { + var e = [] + for (var r in t) e.push(t[r]) + return e + } + function I(t) { + var e + for (e in t) return !1 + return !e + } + var L = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + M = (function (t) { + function e(e) { + var r = t.call(this) || this + return ( + (r.eventTarget_ = e), + (r.pendingRemovals_ = null), + (r.dispatching_ = null), + (r.listeners_ = null), + r + ) + } + return ( + L(e, t), + (e.prototype.addEventListener = function (t, e) { + if (t && e) { + var r = this.listeners_ || (this.listeners_ = {}), + n = r[t] || (r[t] = []) + ;-1 === n.indexOf(e) && n.push(e) + } + }), + (e.prototype.dispatchEvent = function (t) { + var e = 'string' == typeof t ? new c(t) : t, + r = e.type + e.target || (e.target = this.eventTarget_ || this) + var n, + i = this.listeners_ && this.listeners_[r] + if (i) { + var o = this.dispatching_ || (this.dispatching_ = {}), + a = this.pendingRemovals_ || (this.pendingRemovals_ = {}) + r in o || ((o[r] = 0), (a[r] = 0)), ++o[r] + for (var s = 0, l = i.length; s < l; ++s) + if ( + !1 === + (n = + 'handleEvent' in i[s] + ? i[s].handleEvent(e) + : i[s].call(this, e)) || + e.propagationStopped + ) { + n = !1 + break + } + if ((--o[r], 0 === o[r])) { + var u = a[r] + for (delete a[r]; u--; ) this.removeEventListener(r, T) + delete o[r] + } + return n + } + }), + (e.prototype.disposeInternal = function () { + this.listeners_ && P(this.listeners_) + }), + (e.prototype.getListeners = function (t) { + return (this.listeners_ && this.listeners_[t]) || void 0 + }), + (e.prototype.hasListener = function (t) { + return ( + !!this.listeners_ && + (t + ? t in this.listeners_ + : Object.keys(this.listeners_).length > 0) + ) + }), + (e.prototype.removeEventListener = function (t, e) { + var r = this.listeners_ && this.listeners_[t] + if (r) { + var n = r.indexOf(e) + ;-1 !== n && + (this.pendingRemovals_ && t in this.pendingRemovals_ + ? ((r[n] = T), ++this.pendingRemovals_[t]) + : (r.splice(n, 1), + 0 === r.length && delete this.listeners_[t])) + } + }), + e + ) + })(p), + F = 'change', + A = 'error', + k = 'clear', + j = 'contextmenu', + N = 'click', + D = 'dblclick', + G = 'dragenter', + z = 'dragover', + U = 'drop', + B = 'keydown', + V = 'keypress', + Y = 'load', + W = 'resize', + q = 'touchmove', + X = 'wheel' + function Z(t, e, r, n, i) { + if ((n && n !== t && (r = r.bind(n)), i)) { + var o = r + r = function () { + t.removeEventListener(e, r), o.apply(this, arguments) + } + } + var a = { target: t, type: e, listener: r } + return t.addEventListener(e, r), a + } + function K(t, e, r, n) { + return Z(t, e, r, n, !0) + } + function H(t) { + t && + t.target && + (t.target.removeEventListener(t.type, t.listener), P(t)) + } + var $ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function J(t) { + if (Array.isArray(t)) for (var e = 0, r = t.length; e < r; ++e) H(t[e]) + else H(t) + } + var Q = (function (t) { + function e() { + var e = t.call(this) || this + return (e.revision_ = 0), e + } + return ( + $(e, t), + (e.prototype.changed = function () { + ++this.revision_, this.dispatchEvent(F) + }), + (e.prototype.getRevision = function () { + return this.revision_ + }), + (e.prototype.on = function (t, e) { + if (Array.isArray(t)) { + for (var r = t.length, n = new Array(r), i = 0; i < r; ++i) + n[i] = Z(this, t[i], e) + return n + } + return Z(this, t, e) + }), + (e.prototype.once = function (t, e) { + var r + if (Array.isArray(t)) { + var n = t.length + r = new Array(n) + for (var i = 0; i < n; ++i) r[i] = K(this, t[i], e) + } else r = K(this, t, e) + return (e.ol_key = r), r + }), + (e.prototype.un = function (t, e) { + var r = e.ol_key + if (r) J(r) + else if (Array.isArray(t)) + for (var n = 0, i = t.length; n < i; ++n) + this.removeEventListener(t[n], e) + else this.removeEventListener(t, e) + }), + e + ) + })(M), + tt = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + et = (function (t) { + function e(e, r, n) { + var i = t.call(this, e) || this + return (i.key = r), (i.oldValue = n), i + } + return tt(e, t), e + })(c), + rt = (function (t) { + function e(e) { + var r = t.call(this) || this + return ( + o(r), (r.values_ = null), void 0 !== e && r.setProperties(e), r + ) + } + return ( + tt(e, t), + (e.prototype.get = function (t) { + var e + return ( + this.values_ && + this.values_.hasOwnProperty(t) && + (e = this.values_[t]), + e + ) + }), + (e.prototype.getKeys = function () { + return (this.values_ && Object.keys(this.values_)) || [] + }), + (e.prototype.getProperties = function () { + return (this.values_ && O({}, this.values_)) || {} + }), + (e.prototype.hasProperties = function () { + return !!this.values_ + }), + (e.prototype.notify = function (t, e) { + var r + ;(r = it(t)), + this.dispatchEvent(new et(r, t, e)), + (r = h), + this.dispatchEvent(new et(r, t, e)) + }), + (e.prototype.set = function (t, e, r) { + var n = this.values_ || (this.values_ = {}) + if (r) n[t] = e + else { + var i = n[t] + ;(n[t] = e), i !== e && this.notify(t, i) + } + }), + (e.prototype.setProperties = function (t, e) { + for (var r in t) this.set(r, t[r], e) + }), + (e.prototype.applyProperties = function (t) { + t.values_ && O(this.values_ || (this.values_ = {}), t.values_) + }), + (e.prototype.unset = function (t, e) { + if (this.values_ && t in this.values_) { + var r = this.values_[t] + delete this.values_[t], + I(this.values_) && (this.values_ = null), + e || this.notify(t, r) + } + }), + e + ) + })(Q), + nt = {} + function it(t) { + return nt.hasOwnProperty(t) ? nt[t] : (nt[t] = 'change:' + t) + } + var ot = rt, + at = 'add', + st = 'remove', + lt = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ut = 'length', + ct = (function (t) { + function e(e, r, n) { + var i = t.call(this, e) || this + return (i.element = r), (i.index = n), i + } + return lt(e, t), e + })(c), + ht = (function (t) { + function e(e, r) { + var n = t.call(this) || this, + i = r || {} + if (((n.unique_ = !!i.unique), (n.array_ = e || []), n.unique_)) + for (var o = 0, a = n.array_.length; o < a; ++o) + n.assertUnique_(n.array_[o], o) + return n.updateLength_(), n + } + return ( + lt(e, t), + (e.prototype.clear = function () { + for (; this.getLength() > 0; ) this.pop() + }), + (e.prototype.extend = function (t) { + for (var e = 0, r = t.length; e < r; ++e) this.push(t[e]) + return this + }), + (e.prototype.forEach = function (t) { + for (var e = this.array_, r = 0, n = e.length; r < n; ++r) + t(e[r], r, e) + }), + (e.prototype.getArray = function () { + return this.array_ + }), + (e.prototype.item = function (t) { + return this.array_[t] + }), + (e.prototype.getLength = function () { + return this.get(ut) + }), + (e.prototype.insertAt = function (t, e) { + this.unique_ && this.assertUnique_(e), + this.array_.splice(t, 0, e), + this.updateLength_(), + this.dispatchEvent(new ct(at, e, t)) + }), + (e.prototype.pop = function () { + return this.removeAt(this.getLength() - 1) + }), + (e.prototype.push = function (t) { + this.unique_ && this.assertUnique_(t) + var e = this.getLength() + return this.insertAt(e, t), this.getLength() + }), + (e.prototype.remove = function (t) { + for (var e = this.array_, r = 0, n = e.length; r < n; ++r) + if (e[r] === t) return this.removeAt(r) + }), + (e.prototype.removeAt = function (t) { + var e = this.array_[t] + return ( + this.array_.splice(t, 1), + this.updateLength_(), + this.dispatchEvent(new ct(st, e, t)), + e + ) + }), + (e.prototype.setAt = function (t, e) { + var r = this.getLength() + if (t < r) { + this.unique_ && this.assertUnique_(e, t) + var n = this.array_[t] + ;(this.array_[t] = e), + this.dispatchEvent(new ct(st, n, t)), + this.dispatchEvent(new ct(at, e, t)) + } else { + for (var i = r; i < t; ++i) this.insertAt(i, void 0) + this.insertAt(t, e) + } + }), + (e.prototype.updateLength_ = function () { + this.set(ut, this.array_.length) + }), + (e.prototype.assertUnique_ = function (t, e) { + for (var r = 0, n = this.array_.length; r < n; ++r) + if (this.array_[r] === t && r !== e) throw new l(58) + }), + e + ) + })(ot) + function pt(t, e) { + if (!t) throw new l(e) + } + var ft = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function dt(t) { + return 'function' == typeof t + ? t + : (Array.isArray(t) + ? (e = t) + : (pt('function' == typeof t.getZIndex, 41), (e = [t])), + function () { + return e + }) + var e + } + var gt = (function (t) { + function e(e) { + var r = t.call(this) || this + if ( + ((r.id_ = void 0), + (r.geometryName_ = 'geometry'), + (r.style_ = null), + (r.styleFunction_ = void 0), + (r.geometryChangeKey_ = null), + r.addEventListener(it(r.geometryName_), r.handleGeometryChanged_), + e) + ) + if ('function' == typeof e.getSimplifiedGeometry) { + var n = e + r.setGeometry(n) + } else { + var i = e + r.setProperties(i) + } + return r + } + return ( + ft(e, t), + (e.prototype.clone = function () { + var t = new e(this.hasProperties() ? this.getProperties() : null) + t.setGeometryName(this.getGeometryName()) + var r = this.getGeometry() + r && t.setGeometry(r.clone()) + var n = this.getStyle() + return n && t.setStyle(n), t + }), + (e.prototype.getGeometry = function () { + return this.get(this.geometryName_) + }), + (e.prototype.getId = function () { + return this.id_ + }), + (e.prototype.getGeometryName = function () { + return this.geometryName_ + }), + (e.prototype.getStyle = function () { + return this.style_ + }), + (e.prototype.getStyleFunction = function () { + return this.styleFunction_ + }), + (e.prototype.handleGeometryChange_ = function () { + this.changed() + }), + (e.prototype.handleGeometryChanged_ = function () { + this.geometryChangeKey_ && + (H(this.geometryChangeKey_), (this.geometryChangeKey_ = null)) + var t = this.getGeometry() + t && + (this.geometryChangeKey_ = Z( + t, + F, + this.handleGeometryChange_, + this, + )), + this.changed() + }), + (e.prototype.setGeometry = function (t) { + this.set(this.geometryName_, t) + }), + (e.prototype.setStyle = function (t) { + ;(this.style_ = t), + (this.styleFunction_ = t ? dt(t) : void 0), + this.changed() + }), + (e.prototype.setId = function (t) { + ;(this.id_ = t), this.changed() + }), + (e.prototype.setGeometryName = function (t) { + this.removeEventListener( + it(this.geometryName_), + this.handleGeometryChanged_, + ), + (this.geometryName_ = t), + this.addEventListener( + it(this.geometryName_), + this.handleGeometryChanged_, + ), + this.handleGeometryChanged_() + }), + e + ) + })(ot), + yt = 'XY', + mt = 'XYZ', + vt = 'XYM', + _t = 'XYZM', + bt = { + POINT: 'Point', + LINE_STRING: 'LineString', + LINEAR_RING: 'LinearRing', + POLYGON: 'Polygon', + MULTI_POINT: 'MultiPoint', + MULTI_LINE_STRING: 'MultiLineString', + MULTI_POLYGON: 'MultiPolygon', + GEOMETRY_COLLECTION: 'GeometryCollection', + CIRCLE: 'Circle', + }, + xt = { + DEGREES: 'degrees', + FEET: 'ft', + METERS: 'm', + PIXELS: 'pixels', + TILE_PIXELS: 'tile-pixels', + USFEET: 'us-ft', + }, + wt = {} + ;(wt[xt.DEGREES] = (2 * Math.PI * 6370997) / 360), + (wt[xt.FEET] = 0.3048), + (wt[xt.METERS] = 1), + (wt[xt.USFEET] = 1200 / 3937) + var St = xt, + Et = new Array(6) + function Tt() { + return [1, 0, 0, 1, 0, 0] + } + function Ct(t) { + return Pt(t, 1, 0, 0, 1, 0, 0) + } + function Ot(t, e) { + var r = t[0], + n = t[1], + i = t[2], + o = t[3], + a = t[4], + s = t[5], + l = e[0], + u = e[1], + c = e[2], + h = e[3], + p = e[4], + f = e[5] + return ( + (t[0] = r * l + i * u), + (t[1] = n * l + o * u), + (t[2] = r * c + i * h), + (t[3] = n * c + o * h), + (t[4] = r * p + i * f + a), + (t[5] = n * p + o * f + s), + t + ) + } + function Pt(t, e, r, n, i, o, a) { + return ( + (t[0] = e), + (t[1] = r), + (t[2] = n), + (t[3] = i), + (t[4] = o), + (t[5] = a), + t + ) + } + function Rt(t, e) { + return ( + (t[0] = e[0]), + (t[1] = e[1]), + (t[2] = e[2]), + (t[3] = e[3]), + (t[4] = e[4]), + (t[5] = e[5]), + t + ) + } + function It(t, e) { + var r = e[0], + n = e[1] + return ( + (e[0] = t[0] * r + t[2] * n + t[4]), + (e[1] = t[1] * r + t[3] * n + t[5]), + e + ) + } + function Lt(t, e) { + var r = Math.cos(e), + n = Math.sin(e) + return Ot(t, Pt(Et, r, n, -n, r, 0, 0)) + } + function Mt(t, e, r) { + return Ot(t, Pt(Et, e, 0, 0, r, 0, 0)) + } + function Ft(t, e, r) { + return Pt(t, e, 0, 0, r, 0, 0) + } + function At(t, e, r) { + return Ot(t, Pt(Et, 1, 0, 0, 1, e, r)) + } + function kt(t, e, r, n, i, o, a, s) { + var l = Math.sin(o), + u = Math.cos(o) + return ( + (t[0] = n * u), + (t[1] = i * l), + (t[2] = -n * l), + (t[3] = i * u), + (t[4] = a * n * u - s * n * l + e), + (t[5] = a * i * l + s * i * u + r), + t + ) + } + function jt(t, e) { + var r = Nt(e) + pt(0 !== r, 32) + var n = e[0], + i = e[1], + o = e[2], + a = e[3], + s = e[4], + l = e[5] + return ( + (t[0] = a / r), + (t[1] = -i / r), + (t[2] = -o / r), + (t[3] = n / r), + (t[4] = (o * l - a * s) / r), + (t[5] = -(n * l - i * s) / r), + t + ) + } + function Nt(t) { + return t[0] * t[3] - t[1] * t[2] + } + function Dt(t) { + return 'matrix(' + t.join(', ') + ')' + } + var Gt = 'bottom-left', + zt = 'bottom-right', + Ut = 'top-left', + Bt = 'top-right', + Vt = 0, + Yt = 1, + Wt = 2, + qt = 4, + Xt = 8, + Zt = 16 + function Kt(t) { + for (var e = ne(), r = 0, n = t.length; r < n; ++r) pe(e, t[r]) + return e + } + function Ht(t, e, r) { + return r + ? ((r[0] = t[0] - e), + (r[1] = t[1] - e), + (r[2] = t[2] + e), + (r[3] = t[3] + e), + r) + : [t[0] - e, t[1] - e, t[2] + e, t[3] + e] + } + function $t(t, e) { + return e + ? ((e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), (e[3] = t[3]), e) + : t.slice() + } + function Jt(t, e, r) { + var n, i + return ( + (n = e < t[0] ? t[0] - e : t[2] < e ? e - t[2] : 0) * n + + (i = r < t[1] ? t[1] - r : t[3] < r ? r - t[3] : 0) * i + ) + } + function Qt(t, e) { + return ee(t, e[0], e[1]) + } + function te(t, e) { + return t[0] <= e[0] && e[2] <= t[2] && t[1] <= e[1] && e[3] <= t[3] + } + function ee(t, e, r) { + return t[0] <= e && e <= t[2] && t[1] <= r && r <= t[3] + } + function re(t, e) { + var r = t[0], + n = t[1], + i = t[2], + o = t[3], + a = e[0], + s = e[1], + l = Vt + return ( + a < r ? (l |= Zt) : a > i && (l |= qt), + s < n ? (l |= Xt) : s > o && (l |= Wt), + l === Vt && (l = Yt), + l + ) + } + function ne() { + return [1 / 0, 1 / 0, -1 / 0, -1 / 0] + } + function ie(t, e, r, n, i) { + return i + ? ((i[0] = t), (i[1] = e), (i[2] = r), (i[3] = n), i) + : [t, e, r, n] + } + function oe(t) { + return ie(1 / 0, 1 / 0, -1 / 0, -1 / 0, t) + } + function ae(t, e) { + var r = t[0], + n = t[1] + return ie(r, n, r, n, e) + } + function se(t, e) { + return fe(oe(e), t) + } + function le(t, e, r, n, i) { + return de(oe(i), t, e, r, n) + } + function ue(t, e) { + return t[0] == e[0] && t[2] == e[2] && t[1] == e[1] && t[3] == e[3] + } + function ce(t, e, r) { + return ( + Math.abs(t[0] - e[0]) < r && + Math.abs(t[2] - e[2]) < r && + Math.abs(t[1] - e[1]) < r && + Math.abs(t[3] - e[3]) < r + ) + } + function he(t, e) { + return ( + e[0] < t[0] && (t[0] = e[0]), + e[2] > t[2] && (t[2] = e[2]), + e[1] < t[1] && (t[1] = e[1]), + e[3] > t[3] && (t[3] = e[3]), + t + ) + } + function pe(t, e) { + e[0] < t[0] && (t[0] = e[0]), + e[0] > t[2] && (t[2] = e[0]), + e[1] < t[1] && (t[1] = e[1]), + e[1] > t[3] && (t[3] = e[1]) + } + function fe(t, e) { + for (var r = 0, n = e.length; r < n; ++r) pe(t, e[r]) + return t + } + function de(t, e, r, n, i) { + for (; r < n; r += i) ye(t, e[r], e[r + 1]) + return t + } + function ge(t, e) { + for (var r = 0, n = e.length; r < n; ++r) fe(t, e[r]) + return t + } + function ye(t, e, r) { + ;(t[0] = Math.min(t[0], e)), + (t[1] = Math.min(t[1], r)), + (t[2] = Math.max(t[2], e)), + (t[3] = Math.max(t[3], r)) + } + function me(t, e) { + var r + return (r = e(_e(t))) || (r = e(be(t))) || (r = e(Oe(t))) + ? r + : (r = e(Ce(t))) || !1 + } + function ve(t) { + var e = 0 + return Ie(t) || (e = Pe(t) * Ee(t)), e + } + function _e(t) { + return [t[0], t[1]] + } + function be(t) { + return [t[2], t[1]] + } + function xe(t) { + return [(t[0] + t[2]) / 2, (t[1] + t[3]) / 2] + } + function we(t, e) { + var r + return ( + e === Gt + ? (r = _e(t)) + : e === zt + ? (r = be(t)) + : e === Ut + ? (r = Ce(t)) + : e === Bt + ? (r = Oe(t)) + : pt(!1, 13), + r + ) + } + function Se(t, e, r, n, i) { + var o = (e * n[0]) / 2, + a = (e * n[1]) / 2, + s = Math.cos(r), + l = Math.sin(r), + u = o * s, + c = o * l, + h = a * s, + p = a * l, + f = t[0], + d = t[1], + g = f - u + p, + y = f - u - p, + m = f + u - p, + v = f + u + p, + _ = d - c - h, + b = d - c + h, + x = d + c + h, + w = d + c - h + return ie( + Math.min(g, y, m, v), + Math.min(_, b, x, w), + Math.max(g, y, m, v), + Math.max(_, b, x, w), + i, + ) + } + function Ee(t) { + return t[3] - t[1] + } + function Te(t, e, r) { + var n = r || [1 / 0, 1 / 0, -1 / 0, -1 / 0] + return ( + Re(t, e) + ? (t[0] > e[0] ? (n[0] = t[0]) : (n[0] = e[0]), + t[1] > e[1] ? (n[1] = t[1]) : (n[1] = e[1]), + t[2] < e[2] ? (n[2] = t[2]) : (n[2] = e[2]), + t[3] < e[3] ? (n[3] = t[3]) : (n[3] = e[3])) + : oe(n), + n + ) + } + function Ce(t) { + return [t[0], t[3]] + } + function Oe(t) { + return [t[2], t[3]] + } + function Pe(t) { + return t[2] - t[0] + } + function Re(t, e) { + return t[0] <= e[2] && t[2] >= e[0] && t[1] <= e[3] && t[3] >= e[1] + } + function Ie(t) { + return t[2] < t[0] || t[3] < t[1] + } + function Le(t, e) { + return e + ? ((e[0] = t[0]), (e[1] = t[1]), (e[2] = t[2]), (e[3] = t[3]), e) + : t + } + function Me(t, e) { + var r = ((t[2] - t[0]) / 2) * (e - 1), + n = ((t[3] - t[1]) / 2) * (e - 1) + ;(t[0] -= r), (t[2] += r), (t[1] -= n), (t[3] += n) + } + function Fe(t, e, r) { + var n = !1, + i = re(t, e), + o = re(t, r) + if (i === Yt || o === Yt) n = !0 + else { + var a = t[0], + s = t[1], + l = t[2], + u = t[3], + c = e[0], + h = e[1], + p = r[0], + f = r[1], + d = (f - h) / (p - c), + g = void 0, + y = void 0 + o & Wt && !(i & Wt) && (n = (g = p - (f - u) / d) >= a && g <= l), + n || + !(o & qt) || + i & qt || + (n = (y = f - (p - l) * d) >= s && y <= u), + n || + !(o & Xt) || + i & Xt || + (n = (g = p - (f - s) / d) >= a && g <= l), + n || + !(o & Zt) || + i & Zt || + (n = (y = f - (p - a) * d) >= s && y <= u) + } + return n + } + function Ae(t, e, r, n) { + var i = [] + if (n > 1) + for (var o = t[2] - t[0], a = t[3] - t[1], s = 0; s < n; ++s) + i.push( + t[0] + (o * s) / n, + t[1], + t[2], + t[1] + (a * s) / n, + t[2] - (o * s) / n, + t[3], + t[0], + t[3] - (a * s) / n, + ) + else i = [t[0], t[1], t[2], t[1], t[2], t[3], t[0], t[3]] + e(i, i, 2) + for (var l = [], u = [], c = ((s = 0), i.length); s < c; s += 2) + l.push(i[s]), u.push(i[s + 1]) + return (function (t, e, r) { + return ie( + Math.min.apply(null, t), + Math.min.apply(null, e), + Math.max.apply(null, t), + Math.max.apply(null, e), + r, + ) + })(l, u, r) + } + function ke(t, e) { + var r = e.getExtent(), + n = xe(t) + if (e.canWrapX() && (n[0] < r[0] || n[0] >= r[2])) { + var i = Pe(r), + o = Math.floor((n[0] - r[0]) / i) * i + ;(t[0] -= o), (t[2] -= o) + } + return t + } + var je = (function () { + function t(t) { + ;(this.code_ = t.code), + (this.units_ = t.units), + (this.extent_ = void 0 !== t.extent ? t.extent : null), + (this.worldExtent_ = + void 0 !== t.worldExtent ? t.worldExtent : null), + (this.axisOrientation_ = + void 0 !== t.axisOrientation ? t.axisOrientation : 'enu'), + (this.global_ = void 0 !== t.global && t.global), + (this.canWrapX_ = !(!this.global_ || !this.extent_)), + (this.getPointResolutionFunc_ = t.getPointResolution), + (this.defaultTileGrid_ = null), + (this.metersPerUnit_ = t.metersPerUnit) + } + return ( + (t.prototype.canWrapX = function () { + return this.canWrapX_ + }), + (t.prototype.getCode = function () { + return this.code_ + }), + (t.prototype.getExtent = function () { + return this.extent_ + }), + (t.prototype.getUnits = function () { + return this.units_ + }), + (t.prototype.getMetersPerUnit = function () { + return this.metersPerUnit_ || wt[this.units_] + }), + (t.prototype.getWorldExtent = function () { + return this.worldExtent_ + }), + (t.prototype.getAxisOrientation = function () { + return this.axisOrientation_ + }), + (t.prototype.isGlobal = function () { + return this.global_ + }), + (t.prototype.setGlobal = function (t) { + ;(this.global_ = t), (this.canWrapX_ = !(!t || !this.extent_)) + }), + (t.prototype.getDefaultTileGrid = function () { + return this.defaultTileGrid_ + }), + (t.prototype.setDefaultTileGrid = function (t) { + this.defaultTileGrid_ = t + }), + (t.prototype.setExtent = function (t) { + ;(this.extent_ = t), (this.canWrapX_ = !(!this.global_ || !t)) + }), + (t.prototype.setWorldExtent = function (t) { + this.worldExtent_ = t + }), + (t.prototype.setGetPointResolution = function (t) { + this.getPointResolutionFunc_ = t + }), + (t.prototype.getPointResolutionFunc = function () { + return this.getPointResolutionFunc_ + }), + t + ) + })() + function Ne(t, e, r) { + return Math.min(Math.max(t, e), r) + } + var De = + 'cosh' in Math + ? Math.cosh + : function (t) { + var e = Math.exp(t) + return (e + 1 / e) / 2 + }, + Ge = + 'log2' in Math + ? Math.log2 + : function (t) { + return Math.log(t) * Math.LOG2E + } + function ze(t, e, r, n, i, o) { + var a = i - r, + s = o - n + if (0 !== a || 0 !== s) { + var l = ((t - r) * a + (e - n) * s) / (a * a + s * s) + l > 1 ? ((r = i), (n = o)) : l > 0 && ((r += a * l), (n += s * l)) + } + return Ue(t, e, r, n) + } + function Ue(t, e, r, n) { + var i = r - t, + o = n - e + return i * i + o * o + } + function Be(t) { + for (var e = t.length, r = 0; r < e; r++) { + for (var n = r, i = Math.abs(t[r][r]), o = r + 1; o < e; o++) { + var a = Math.abs(t[o][r]) + a > i && ((i = a), (n = o)) + } + if (0 === i) return null + var s = t[n] + ;(t[n] = t[r]), (t[r] = s) + for (var l = r + 1; l < e; l++) + for (var u = -t[l][r] / t[r][r], c = r; c < e + 1; c++) + r == c ? (t[l][c] = 0) : (t[l][c] += u * t[r][c]) + } + for (var h = new Array(e), p = e - 1; p >= 0; p--) { + h[p] = t[p][e] / t[p][p] + for (var f = p - 1; f >= 0; f--) t[f][e] -= t[f][p] * h[p] + } + return h + } + function Ve(t) { + return (180 * t) / Math.PI + } + function Ye(t) { + return (t * Math.PI) / 180 + } + function We(t, e) { + var r = t % e + return r * e < 0 ? r + e : r + } + function qe(t, e, r) { + return t + r * (e - t) + } + var Xe = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Ze = 6378137 * Math.PI, + Ke = [-Ze, -Ze, Ze, Ze], + He = [-180, -85, 180, 85], + $e = 6378137 * Math.log(Math.tan(Math.PI / 2)), + Je = (function (t) { + function e(e) { + return ( + t.call(this, { + code: e, + units: St.METERS, + extent: Ke, + global: !0, + worldExtent: He, + getPointResolution: function (t, e) { + return t / De(e[1] / 6378137) + }, + }) || this + ) + } + return Xe(e, t), e + })(je), + Qe = [ + new Je('EPSG:3857'), + new Je('EPSG:102100'), + new Je('EPSG:102113'), + new Je('EPSG:900913'), + new Je('http://www.opengis.net/gml/srs/epsg.xml#3857'), + ] + function tr(t, e, r) { + var n = t.length, + i = r > 1 ? r : 2, + o = e + void 0 === o && (o = i > 2 ? t.slice() : new Array(n)) + for (var a = 0; a < n; a += i) { + o[a] = (Ze * t[a]) / 180 + var s = + 6378137 * Math.log(Math.tan((Math.PI * (+t[a + 1] + 90)) / 360)) + s > $e ? (s = $e) : s < -$e && (s = -$e), (o[a + 1] = s) + } + return o + } + function er(t, e, r) { + var n = t.length, + i = r > 1 ? r : 2, + o = e + void 0 === o && (o = i > 2 ? t.slice() : new Array(n)) + for (var a = 0; a < n; a += i) + (o[a] = (180 * t[a]) / Ze), + (o[a + 1] = + (360 * Math.atan(Math.exp(t[a + 1] / 6378137))) / Math.PI - 90) + return o + } + var rr = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + nr = [-180, -90, 180, 90], + ir = (6378137 * Math.PI) / 180, + or = (function (t) { + function e(e, r) { + return ( + t.call(this, { + code: e, + units: St.DEGREES, + extent: nr, + axisOrientation: r, + global: !0, + metersPerUnit: ir, + worldExtent: nr, + }) || this + ) + } + return rr(e, t), e + })(je), + ar = [ + new or('CRS:84'), + new or('EPSG:4326', 'neu'), + new or('urn:ogc:def:crs:OGC:1.3:CRS84'), + new or('urn:ogc:def:crs:OGC:2:84'), + new or('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'), + ], + sr = {} + function lr() { + sr = {} + } + function ur(t) { + return ( + sr[t] || + sr[t.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\w+)$/, 'EPSG:$3')] || + null + ) + } + function cr(t, e) { + sr[t] = e + } + var hr = {} + function pr() { + hr = {} + } + function fr(t, e, r) { + var n = t.getCode(), + i = e.getCode() + n in hr || (hr[n] = {}), (hr[n][i] = r) + } + function dr(t, e) { + var r + return t in hr && e in hr[t] && (r = hr[t][e]), r + } + function gr(t, e, r) { + var n = r || 6371008.8, + i = Ye(t[1]), + o = Ye(e[1]), + a = (o - i) / 2, + s = Ye(e[0] - t[0]) / 2, + l = + Math.sin(a) * Math.sin(a) + + Math.sin(s) * Math.sin(s) * Math.cos(i) * Math.cos(o) + return 2 * n * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l)) + } + function yr(t, e) { + for (var r = 0, n = 0, i = t.length; n < i - 1; ++n) + r += gr(t[n], t[n + 1], e) + return r + } + function mr(t, e) { + for ( + var r = 0, n = t.length, i = t[n - 1][0], o = t[n - 1][1], a = 0; + a < n; + a++ + ) { + var s = t[a][0], + l = t[a][1] + ;(r += Ye(s - i) * (2 + Math.sin(Ye(o)) + Math.sin(Ye(l)))), + (i = s), + (o = l) + } + return (r * e * e) / 2 + } + function vr(t, e, r, n) { + var i = n || 6371008.8, + o = Ye(t[1]), + a = Ye(t[0]), + s = e / i, + l = Math.asin( + Math.sin(o) * Math.cos(s) + Math.cos(o) * Math.sin(s) * Math.cos(r), + ) + return [ + Ve( + a + + Math.atan2( + Math.sin(r) * Math.sin(s) * Math.cos(o), + Math.cos(s) - Math.sin(o) * Math.sin(l), + ), + ), + Ve(l), + ] + } + function _r(t, e, r) { + var n = void 0 !== r ? t.toFixed(r) : '' + t, + i = n.indexOf('.') + return (i = -1 === i ? n.length : i) > e + ? n + : new Array(1 + e - i).join('0') + n + } + function br(t, e) { + for ( + var r = ('' + t).split('.'), n = ('' + e).split('.'), i = 0; + i < Math.max(r.length, n.length); + i++ + ) { + var o = parseInt(r[i] || '0', 10), + a = parseInt(n[i] || '0', 10) + if (o > a) return 1 + if (a > o) return -1 + } + return 0 + } + function xr(t, e) { + return (t[0] += +e[0]), (t[1] += +e[1]), t + } + function wr(t, e) { + var r = e.getRadius(), + n = e.getCenter(), + i = n[0], + o = n[1], + a = t[0] - i, + s = t[1] - o + 0 === a && 0 === s && (a = 1) + var l = Math.sqrt(a * a + s * s) + return [i + (r * a) / l, o + (r * s) / l] + } + function Sr(t, e) { + var r, + n, + i = t[0], + o = t[1], + a = e[0], + s = e[1], + l = a[0], + u = a[1], + c = s[0], + h = s[1], + p = c - l, + f = h - u, + d = + 0 === p && 0 === f + ? 0 + : (p * (i - l) + f * (o - u)) / (p * p + f * f || 0) + return ( + d <= 0 + ? ((r = l), (n = u)) + : d >= 1 + ? ((r = c), (n = h)) + : ((r = l + d * p), (n = u + d * f)), + [r, n] + ) + } + function Er(t, e, r) { + var n = We(e + 180, 360) - 180, + i = Math.abs(3600 * n), + o = r || 0, + a = Math.pow(10, o), + s = Math.floor(i / 3600), + l = Math.floor((i - 3600 * s) / 60), + u = i - 3600 * s - 60 * l + return ( + (u = Math.ceil(u * a) / a) >= 60 && ((u = 0), (l += 1)), + l >= 60 && ((l = 0), (s += 1)), + s + + '° ' + + _r(l, 2) + + '′ ' + + _r(u, 2, o) + + '″' + + (0 == n ? '' : ' ' + t.charAt(n < 0 ? 1 : 0)) + ) + } + function Tr(t, e, r) { + return t + ? e.replace('{x}', t[0].toFixed(r)).replace('{y}', t[1].toFixed(r)) + : '' + } + function Cr(t, e) { + for (var r = !0, n = t.length - 1; n >= 0; --n) + if (t[n] != e[n]) { + r = !1 + break + } + return r + } + function Or(t, e) { + var r = Math.cos(e), + n = Math.sin(e), + i = t[0] * r - t[1] * n, + o = t[1] * r + t[0] * n + return (t[0] = i), (t[1] = o), t + } + function Pr(t, e) { + return (t[0] *= e), (t[1] *= e), t + } + function Rr(t, e) { + var r = t[0] - e[0], + n = t[1] - e[1] + return r * r + n * n + } + function Ir(t, e) { + return Math.sqrt(Rr(t, e)) + } + function Lr(t, e) { + return Rr(t, Sr(t, e)) + } + function Mr(t, e) { + return Tr(t, '{x}, {y}', e) + } + function Fr(t, e) { + if (e.canWrapX()) { + var r = Pe(e.getExtent()), + n = Ar(t, e, r) + n && (t[0] -= n * r) + } + return t + } + function Ar(t, e, r) { + var n = e.getExtent(), + i = 0 + if (e.canWrapX() && (t[0] < n[0] || t[0] > n[2])) { + var o = r || Pe(n) + i = Math.floor((t[0] - n[0]) / o) + } + return i + } + function kr(t, e, r) { + var n + if (void 0 !== e) { + for (var i = 0, o = t.length; i < o; ++i) e[i] = t[i] + n = e + } else n = t.slice() + return n + } + function jr(t, e, r) { + if (void 0 !== e && t !== e) { + for (var n = 0, i = t.length; n < i; ++n) e[n] = t[n] + t = e + } + return t + } + function Nr(t) { + cr(t.getCode(), t), fr(t, t, kr) + } + function Dr(t) { + t.forEach(Nr) + } + function Gr(t) { + return 'string' == typeof t ? ur(t) : t || null + } + function zr(t, e, r, n) { + var i, + o = (t = Gr(t)).getPointResolutionFunc() + if (o) { + if (((i = o(e, r)), n && n !== t.getUnits())) + (s = t.getMetersPerUnit()) && (i = (i * s) / wt[n]) + } else { + var a = t.getUnits() + if ((a == St.DEGREES && !n) || n == St.DEGREES) i = e + else { + var s, + l = Zr(t, Gr('EPSG:4326')) + if (l === jr && a !== St.DEGREES) i = e * t.getMetersPerUnit() + else { + var u = [ + r[0] - e / 2, + r[1], + r[0] + e / 2, + r[1], + r[0], + r[1] - e / 2, + r[0], + r[1] + e / 2, + ] + i = + (gr((u = l(u, u, 2)).slice(0, 2), u.slice(2, 4)) + + gr(u.slice(4, 6), u.slice(6, 8))) / + 2 + } + void 0 !== (s = n ? wt[n] : t.getMetersPerUnit()) && (i /= s) + } + } + return i + } + function Ur(t) { + Dr(t), + t.forEach(function (e) { + t.forEach(function (t) { + e !== t && fr(e, t, kr) + }) + }) + } + function Br(t, e, r, n) { + t.forEach(function (t) { + e.forEach(function (e) { + fr(t, e, r), fr(e, t, n) + }) + }) + } + function Vr(t, e) { + return t ? ('string' == typeof t ? Gr(t) : t) : Gr(e) + } + function Yr(t) { + return function (e, r, n) { + for ( + var i = e.length, + o = void 0 !== n ? n : 2, + a = void 0 !== r ? r : new Array(i), + s = 0; + s < i; + s += o + ) { + var l = t([e[s], e[s + 1]]) + ;(a[s] = l[0]), (a[s + 1] = l[1]) + for (var u = o - 1; u >= 2; --u) a[s + u] = e[s + u] + } + return a + } + } + function Wr(t, e, r, n) { + var i = Gr(t), + o = Gr(e) + fr(i, o, Yr(r)), fr(o, i, Yr(n)) + } + function qr(t, e) { + return Hr(t, 'EPSG:4326', void 0 !== e ? e : 'EPSG:3857') + } + function Xr(t, e) { + if (t === e) return !0 + var r = t.getUnits() === e.getUnits() + return (t.getCode() === e.getCode() || Zr(t, e) === kr) && r + } + function Zr(t, e) { + var r = dr(t.getCode(), e.getCode()) + return r || (r = jr), r + } + function Kr(t, e) { + return Zr(Gr(t), Gr(e)) + } + function Hr(t, e, r) { + return Kr(e, r)(t, void 0, t.length) + } + function $r(t, e, r, n) { + return Ae(t, Kr(e, r), void 0, n) + } + var Jr = null + function Qr(t) { + Jr = Gr(t) + } + function tn() { + return Jr + } + function en(t, e) { + return Jr ? Hr(t, e, Jr) : t + } + function rn(t, e) { + return Jr ? Hr(t, Jr, e) : t + } + function nn(t, e) { + return Jr ? $r(t, e, Jr) : t + } + function on(t, e) { + return Jr ? $r(t, Jr, e) : t + } + function an(t, e, r) { + return function (n) { + var i, + o, + a = n[0], + s = n[1] + if (t.canWrapX()) { + var l = t.getExtent(), + u = Pe(l) + ;(o = Ar(n, t, u)) && (a -= o * u), + (a = Ne(a, l[0], l[2])), + (s = Ne(s, l[1], l[3])), + (i = r([a, s])) + } else i = r(n) + return o && e.canWrapX() && (i[0] += o * Pe(e.getExtent())), i + } + } + function sn() { + Ur(Qe), Ur(ar), Br(ar, Qe, tr, er) + } + function ln(t, e, r, n, i, o) { + for (var a = o || [], s = 0, l = e; l < r; l += n) { + var u = t[l], + c = t[l + 1] + ;(a[s++] = i[0] * u + i[2] * c + i[4]), + (a[s++] = i[1] * u + i[3] * c + i[5]) + } + return o && a.length != s && (a.length = s), a + } + function un(t, e, r, n, i, o, a) { + for ( + var s = a || [], + l = Math.cos(i), + u = Math.sin(i), + c = o[0], + h = o[1], + p = 0, + f = e; + f < r; + f += n + ) { + var d = t[f] - c, + g = t[f + 1] - h + ;(s[p++] = c + d * l - g * u), (s[p++] = h + d * u + g * l) + for (var y = f + 2; y < f + n; ++y) s[p++] = t[y] + } + return a && s.length != p && (s.length = p), s + } + function cn(t, e, r, n, i, o, a, s) { + for (var l = s || [], u = a[0], c = a[1], h = 0, p = e; p < r; p += n) { + var f = t[p] - u, + d = t[p + 1] - c + ;(l[h++] = u + i * f), (l[h++] = c + o * d) + for (var g = p + 2; g < p + n; ++g) l[h++] = t[g] + } + return s && l.length != h && (l.length = h), l + } + function hn(t, e, r, n, i, o, a) { + for (var s = a || [], l = 0, u = e; u < r; u += n) { + ;(s[l++] = t[u] + i), (s[l++] = t[u + 1] + o) + for (var c = u + 2; c < u + n; ++c) s[l++] = t[c] + } + return a && s.length != l && (s.length = l), s + } + sn() + var pn = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + fn = [1, 0, 0, 1, 0, 0], + dn = (function (t) { + function e() { + var e = t.call(this) || this + return ( + (e.extent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), + (e.extentRevision_ = -1), + (e.simplifiedGeometryMaxMinSquaredTolerance = 0), + (e.simplifiedGeometryRevision = 0), + (e.simplifyTransformedInternal = C(function (t, e, r) { + if (!r) return this.getSimplifiedGeometry(e) + var n = this.clone() + return n.applyTransform(r), n.getSimplifiedGeometry(e) + })), + e + ) + } + return ( + pn(e, t), + (e.prototype.simplifyTransformed = function (t, e) { + return this.simplifyTransformedInternal(this.getRevision(), t, e) + }), + (e.prototype.clone = function () { + return n() + }), + (e.prototype.closestPointXY = function (t, e, r, i) { + return n() + }), + (e.prototype.containsXY = function (t, e) { + var r = this.getClosestPoint([t, e]) + return r[0] === t && r[1] === e + }), + (e.prototype.getClosestPoint = function (t, e) { + var r = e || [NaN, NaN] + return this.closestPointXY(t[0], t[1], r, 1 / 0), r + }), + (e.prototype.intersectsCoordinate = function (t) { + return this.containsXY(t[0], t[1]) + }), + (e.prototype.computeExtent = function (t) { + return n() + }), + (e.prototype.getExtent = function (t) { + if (this.extentRevision_ != this.getRevision()) { + var e = this.computeExtent(this.extent_) + ;(isNaN(e[0]) || isNaN(e[1])) && oe(e), + (this.extentRevision_ = this.getRevision()) + } + return Le(this.extent_, t) + }), + (e.prototype.rotate = function (t, e) { + n() + }), + (e.prototype.scale = function (t, e, r) { + n() + }), + (e.prototype.simplify = function (t) { + return this.getSimplifiedGeometry(t * t) + }), + (e.prototype.getSimplifiedGeometry = function (t) { + return n() + }), + (e.prototype.getType = function () { + return n() + }), + (e.prototype.applyTransform = function (t) { + n() + }), + (e.prototype.intersectsExtent = function (t) { + return n() + }), + (e.prototype.translate = function (t, e) { + n() + }), + (e.prototype.transform = function (t, e) { + var r = Gr(t), + n = + r.getUnits() == St.TILE_PIXELS + ? function (t, n, i) { + var o = r.getExtent(), + a = r.getWorldExtent(), + s = Ee(a) / Ee(o) + return ( + kt(fn, a[0], a[3], s, -s, 0, 0, 0), + ln(t, 0, t.length, i, fn, n), + Kr(r, e)(t, n, i) + ) + } + : Kr(r, e) + return this.applyTransform(n), this + }), + e + ) + })(ot), + gn = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function yn(t) { + var e + return ( + t == yt ? (e = 2) : t == mt || t == vt ? (e = 3) : t == _t && (e = 4), + e + ) + } + function mn(t, e, r) { + var n = t.getFlatCoordinates() + if (n) { + var i = t.getStride() + return ln(n, 0, n.length, i, e, r) + } + return null + } + var vn = (function (t) { + function e() { + var e = t.call(this) || this + return (e.layout = yt), (e.stride = 2), (e.flatCoordinates = null), e + } + return ( + gn(e, t), + (e.prototype.computeExtent = function (t) { + return le( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + t, + ) + }), + (e.prototype.getCoordinates = function () { + return n() + }), + (e.prototype.getFirstCoordinate = function () { + return this.flatCoordinates.slice(0, this.stride) + }), + (e.prototype.getFlatCoordinates = function () { + return this.flatCoordinates + }), + (e.prototype.getLastCoordinate = function () { + return this.flatCoordinates.slice( + this.flatCoordinates.length - this.stride, + ) + }), + (e.prototype.getLayout = function () { + return this.layout + }), + (e.prototype.getSimplifiedGeometry = function (t) { + if ( + (this.simplifiedGeometryRevision !== this.getRevision() && + ((this.simplifiedGeometryMaxMinSquaredTolerance = 0), + (this.simplifiedGeometryRevision = this.getRevision())), + t < 0 || + (0 !== this.simplifiedGeometryMaxMinSquaredTolerance && + t <= this.simplifiedGeometryMaxMinSquaredTolerance)) + ) + return this + var e = this.getSimplifiedGeometryInternal(t) + return e.getFlatCoordinates().length < this.flatCoordinates.length + ? e + : ((this.simplifiedGeometryMaxMinSquaredTolerance = t), this) + }), + (e.prototype.getSimplifiedGeometryInternal = function (t) { + return this + }), + (e.prototype.getStride = function () { + return this.stride + }), + (e.prototype.setFlatCoordinates = function (t, e) { + ;(this.stride = yn(t)), + (this.layout = t), + (this.flatCoordinates = e) + }), + (e.prototype.setCoordinates = function (t, e) { + n() + }), + (e.prototype.setLayout = function (t, e, r) { + var n + if (t) n = yn(t) + else { + for (var i = 0; i < r; ++i) { + if (0 === e.length) + return (this.layout = yt), void (this.stride = 2) + e = e[0] + } + t = (function (t) { + var e + 2 == t ? (e = yt) : 3 == t ? (e = mt) : 4 == t && (e = _t) + return e + })((n = e.length)) + } + ;(this.layout = t), (this.stride = n) + }), + (e.prototype.applyTransform = function (t) { + this.flatCoordinates && + (t(this.flatCoordinates, this.flatCoordinates, this.stride), + this.changed()) + }), + (e.prototype.rotate = function (t, e) { + var r = this.getFlatCoordinates() + if (r) { + var n = this.getStride() + un(r, 0, r.length, n, t, e, r), this.changed() + } + }), + (e.prototype.scale = function (t, e, r) { + var n = e + void 0 === n && (n = t) + var i = r + i || (i = xe(this.getExtent())) + var o = this.getFlatCoordinates() + if (o) { + var a = this.getStride() + cn(o, 0, o.length, a, t, n, i, o), this.changed() + } + }), + (e.prototype.translate = function (t, e) { + var r = this.getFlatCoordinates() + if (r) { + var n = this.getStride() + hn(r, 0, r.length, n, t, e, r), this.changed() + } + }), + e + ) + })(dn) + function _n(t, e, r, n, i, o, a) { + var s, + l = t[e], + u = t[e + 1], + c = t[r] - l, + h = t[r + 1] - u + if (0 === c && 0 === h) s = e + else { + var p = ((i - l) * c + (o - u) * h) / (c * c + h * h) + if (p > 1) s = r + else { + if (p > 0) { + for (var f = 0; f < n; ++f) a[f] = qe(t[e + f], t[r + f], p) + return void (a.length = n) + } + s = e + } + } + for (f = 0; f < n; ++f) a[f] = t[s + f] + a.length = n + } + function bn(t, e, r, n, i) { + var o = t[e], + a = t[e + 1] + for (e += n; e < r; e += n) { + var s = t[e], + l = t[e + 1], + u = Ue(o, a, s, l) + u > i && (i = u), (o = s), (a = l) + } + return i + } + function xn(t, e, r, n, i) { + for (var o = 0, a = r.length; o < a; ++o) { + var s = r[o] + ;(i = bn(t, e, s, n, i)), (e = s) + } + return i + } + function wn(t, e, r, n, i) { + for (var o = 0, a = r.length; o < a; ++o) { + var s = r[o] + ;(i = xn(t, e, s, n, i)), (e = s[s.length - 1]) + } + return i + } + function Sn(t, e, r, n, i, o, a, s, l, u, c) { + if (e == r) return u + var h, p + if (0 === i) { + if ((p = Ue(a, s, t[e], t[e + 1])) < u) { + for (h = 0; h < n; ++h) l[h] = t[e + h] + return (l.length = n), p + } + return u + } + for (var f = c || [NaN, NaN], d = e + n; d < r; ) + if ((_n(t, d - n, d, n, a, s, f), (p = Ue(a, s, f[0], f[1])) < u)) { + for (u = p, h = 0; h < n; ++h) l[h] = f[h] + ;(l.length = n), (d += n) + } else d += n * Math.max(((Math.sqrt(p) - Math.sqrt(u)) / i) | 0, 1) + if ( + o && + (_n(t, r - n, e, n, a, s, f), (p = Ue(a, s, f[0], f[1])) < u) + ) { + for (u = p, h = 0; h < n; ++h) l[h] = f[h] + l.length = n + } + return u + } + function En(t, e, r, n, i, o, a, s, l, u, c) { + for (var h = c || [NaN, NaN], p = 0, f = r.length; p < f; ++p) { + var d = r[p] + ;(u = Sn(t, e, d, n, i, o, a, s, l, u, h)), (e = d) + } + return u + } + function Tn(t, e, r, n, i, o, a, s, l, u, c) { + for (var h = c || [NaN, NaN], p = 0, f = r.length; p < f; ++p) { + var d = r[p] + ;(u = En(t, e, d, n, i, o, a, s, l, u, h)), (e = d[d.length - 1]) + } + return u + } + function Cn(t, e, r, n) { + for (var i = 0, o = r.length; i < o; ++i) t[e++] = r[i] + return e + } + function On(t, e, r, n) { + for (var i = 0, o = r.length; i < o; ++i) + for (var a = r[i], s = 0; s < n; ++s) t[e++] = a[s] + return e + } + function Pn(t, e, r, n, i) { + for (var o = i || [], a = 0, s = 0, l = r.length; s < l; ++s) { + var u = On(t, e, r[s], n) + ;(o[a++] = u), (e = u) + } + return (o.length = a), o + } + function Rn(t, e, r, n, i) { + for (var o = i || [], a = 0, s = 0, l = r.length; s < l; ++s) { + var u = Pn(t, e, r[s], n, o[a]) + ;(o[a++] = u), (e = u[u.length - 1]) + } + return (o.length = a), o + } + function In(t, e, r, n, i, o, a) { + var s = (r - e) / n + if (s < 3) { + for (; e < r; e += n) (o[a++] = t[e]), (o[a++] = t[e + 1]) + return a + } + var l = new Array(s) + ;(l[0] = 1), (l[s - 1] = 1) + for (var u = [e, r - n], c = 0; u.length > 0; ) { + for ( + var h = u.pop(), + p = u.pop(), + f = 0, + d = t[p], + g = t[p + 1], + y = t[h], + m = t[h + 1], + v = p + n; + v < h; + v += n + ) { + var _ = ze(t[v], t[v + 1], d, g, y, m) + _ > f && ((c = v), (f = _)) + } + f > i && + ((l[(c - e) / n] = 1), + p + n < c && u.push(p, c), + c + n < h && u.push(c, h)) + } + for (v = 0; v < s; ++v) + l[v] && ((o[a++] = t[e + v * n]), (o[a++] = t[e + v * n + 1])) + return a + } + function Ln(t, e, r, n, i, o, a, s) { + for (var l = 0, u = r.length; l < u; ++l) { + var c = r[l] + ;(a = In(t, e, c, n, i, o, a)), s.push(a), (e = c) + } + return a + } + function Mn(t, e, r, n, i, o, a) { + if (r <= e + n) { + for (; e < r; e += n) (o[a++] = t[e]), (o[a++] = t[e + 1]) + return a + } + var s = t[e], + l = t[e + 1] + ;(o[a++] = s), (o[a++] = l) + var u = s, + c = l + for (e += n; e < r; e += n) + Ue(s, l, (u = t[e]), (c = t[e + 1])) > i && + ((o[a++] = u), (o[a++] = c), (s = u), (l = c)) + return (u == s && c == l) || ((o[a++] = u), (o[a++] = c)), a + } + function Fn(t, e) { + return e * Math.round(t / e) + } + function An(t, e, r, n, i, o, a) { + if (e == r) return a + var s, + l, + u = Fn(t[e], i), + c = Fn(t[e + 1], i) + ;(e += n), (o[a++] = u), (o[a++] = c) + do { + if (((s = Fn(t[e], i)), (l = Fn(t[e + 1], i)), (e += n) == r)) + return (o[a++] = s), (o[a++] = l), a + } while (s == u && l == c) + for (; e < r; ) { + var h = Fn(t[e], i), + p = Fn(t[e + 1], i) + if (((e += n), h != s || p != l)) { + var f = s - u, + d = l - c, + g = h - u, + y = p - c + f * y == d * g && + ((f < 0 && g < f) || f == g || (f > 0 && g > f)) && + ((d < 0 && y < d) || d == y || (d > 0 && y > d)) + ? ((s = h), (l = p)) + : ((o[a++] = s), (o[a++] = l), (u = s), (c = l), (s = h), (l = p)) + } + } + return (o[a++] = s), (o[a++] = l), a + } + function kn(t, e, r, n, i, o, a, s) { + for (var l = 0, u = r.length; l < u; ++l) { + var c = r[l] + ;(a = An(t, e, c, n, i, o, a)), s.push(a), (e = c) + } + return a + } + function jn(t, e, r, n, i, o, a, s) { + for (var l = 0, u = r.length; l < u; ++l) { + var c = r[l], + h = [] + ;(a = kn(t, e, c, n, i, o, a, h)), s.push(h), (e = c[c.length - 1]) + } + return a + } + function Nn(t, e, r, n, i) { + for (var o = void 0 !== i ? i : [], a = 0, s = e; s < r; s += n) + o[a++] = t.slice(s, s + n) + return (o.length = a), o + } + function Dn(t, e, r, n, i) { + for ( + var o = void 0 !== i ? i : [], a = 0, s = 0, l = r.length; + s < l; + ++s + ) { + var u = r[s] + ;(o[a++] = Nn(t, e, u, n, o[a])), (e = u) + } + return (o.length = a), o + } + function Gn(t, e, r, n, i) { + for ( + var o = void 0 !== i ? i : [], a = 0, s = 0, l = r.length; + s < l; + ++s + ) { + var u = r[s] + ;(o[a++] = Dn(t, e, u, n, o[a])), (e = u[u.length - 1]) + } + return (o.length = a), o + } + function zn(t, e, r, n) { + for (var i = 0, o = t[r - n], a = t[r - n + 1]; e < r; e += n) { + var s = t[e], + l = t[e + 1] + ;(i += a * s - o * l), (o = s), (a = l) + } + return i / 2 + } + function Un(t, e, r, n) { + for (var i = 0, o = 0, a = r.length; o < a; ++o) { + var s = r[o] + ;(i += zn(t, e, s, n)), (e = s) + } + return i + } + function Bn(t, e, r, n) { + for (var i = 0, o = 0, a = r.length; o < a; ++o) { + var s = r[o] + ;(i += Un(t, e, s, n)), (e = s[s.length - 1]) + } + return i + } + var Vn = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Yn = (function (t) { + function e(e, r) { + var n = t.call(this) || this + return ( + (n.maxDelta_ = -1), + (n.maxDeltaRevision_ = -1), + void 0 === r || Array.isArray(e[0]) + ? n.setCoordinates(e, r) + : n.setFlatCoordinates(r, e), + n + ) + } + return ( + Vn(e, t), + (e.prototype.clone = function () { + return new e(this.flatCoordinates.slice(), this.layout) + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + return n < Jt(this.getExtent(), t, e) + ? n + : (this.maxDeltaRevision_ != this.getRevision() && + ((this.maxDelta_ = Math.sqrt( + bn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + 0, + ), + )), + (this.maxDeltaRevision_ = this.getRevision())), + Sn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + this.maxDelta_, + !0, + t, + e, + r, + n, + )) + }), + (e.prototype.getArea = function () { + return zn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + ) + }), + (e.prototype.getCoordinates = function () { + return Nn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + ) + }), + (e.prototype.getSimplifiedGeometryInternal = function (t) { + var r = [] + return ( + (r.length = In( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + t, + r, + 0, + )), + new e(r, yt) + ) + }), + (e.prototype.getType = function () { + return bt.LINEAR_RING + }), + (e.prototype.intersectsExtent = function (t) { + return !1 + }), + (e.prototype.setCoordinates = function (t, e) { + this.setLayout(e, t, 1), + this.flatCoordinates || (this.flatCoordinates = []), + (this.flatCoordinates.length = On( + this.flatCoordinates, + 0, + t, + this.stride, + )), + this.changed() + }), + e + ) + })(vn), + Wn = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + qn = (function (t) { + function e(e, r) { + var n = t.call(this) || this + return n.setCoordinates(e, r), n + } + return ( + Wn(e, t), + (e.prototype.clone = function () { + var t = new e(this.flatCoordinates.slice(), this.layout) + return t.applyProperties(this), t + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + var i = this.flatCoordinates, + o = Ue(t, e, i[0], i[1]) + if (o < n) { + for (var a = this.stride, s = 0; s < a; ++s) r[s] = i[s] + return (r.length = a), o + } + return n + }), + (e.prototype.getCoordinates = function () { + return this.flatCoordinates ? this.flatCoordinates.slice() : [] + }), + (e.prototype.computeExtent = function (t) { + return ae(this.flatCoordinates, t) + }), + (e.prototype.getType = function () { + return bt.POINT + }), + (e.prototype.intersectsExtent = function (t) { + return ee(t, this.flatCoordinates[0], this.flatCoordinates[1]) + }), + (e.prototype.setCoordinates = function (t, e) { + this.setLayout(e, t, 0), + this.flatCoordinates || (this.flatCoordinates = []), + (this.flatCoordinates.length = Cn( + this.flatCoordinates, + 0, + t, + this.stride, + )), + this.changed() + }), + e + ) + })(vn) + function Xn(t, e, r, n, i) { + return !me(i, function (i) { + return !Zn(t, e, r, n, i[0], i[1]) + }) + } + function Zn(t, e, r, n, i, o) { + for (var a = 0, s = t[r - n], l = t[r - n + 1]; e < r; e += n) { + var u = t[e], + c = t[e + 1] + l <= o + ? c > o && (u - s) * (o - l) - (i - s) * (c - l) > 0 && a++ + : c <= o && (u - s) * (o - l) - (i - s) * (c - l) < 0 && a--, + (s = u), + (l = c) + } + return 0 !== a + } + function Kn(t, e, r, n, i, o) { + if (0 === r.length) return !1 + if (!Zn(t, e, r[0], n, i, o)) return !1 + for (var a = 1, s = r.length; a < s; ++a) + if (Zn(t, r[a - 1], r[a], n, i, o)) return !1 + return !0 + } + function Hn(t, e, r, n, i, o) { + if (0 === r.length) return !1 + for (var a = 0, s = r.length; a < s; ++a) { + var l = r[a] + if (Kn(t, e, l, n, i, o)) return !0 + e = l[l.length - 1] + } + return !1 + } + function $n(t, e, r, n, i, o, a) { + for ( + var s, l, u, c, h, p, f, g = i[o + 1], y = [], m = 0, v = r.length; + m < v; + ++m + ) { + var _ = r[m] + for (c = t[_ - n], p = t[_ - n + 1], s = e; s < _; s += n) + (h = t[s]), + (f = t[s + 1]), + ((g <= p && f <= g) || (p <= g && g <= f)) && + ((u = ((g - p) / (f - p)) * (h - c) + c), y.push(u)), + (c = h), + (p = f) + } + var b = NaN, + x = -1 / 0 + for (y.sort(d), c = y[0], s = 1, l = y.length; s < l; ++s) { + h = y[s] + var w = Math.abs(h - c) + w > x && Kn(t, e, r, n, (u = (c + h) / 2), g) && ((b = u), (x = w)), + (c = h) + } + return isNaN(b) && (b = i[o]), a ? (a.push(b, g, x), a) : [b, g, x] + } + function Jn(t, e, r, n, i) { + for (var o = [], a = 0, s = r.length; a < s; ++a) { + var l = r[a] + ;(o = $n(t, e, l, n, i, 2 * a, o)), (e = l[l.length - 1]) + } + return o + } + function Qn(t, e, r, n, i) { + for (var o, a = [t[e], t[e + 1]], s = []; e + n < r; e += n) { + if (((s[0] = t[e + n]), (s[1] = t[e + n + 1]), (o = i(a, s)))) + return o + ;(a[0] = s[0]), (a[1] = s[1]) + } + return !1 + } + function ti(t, e, r, n, i) { + var o = de([1 / 0, 1 / 0, -1 / 0, -1 / 0], t, e, r, n) + return ( + !!Re(i, o) && + (!!te(i, o) || + (o[0] >= i[0] && o[2] <= i[2]) || + (o[1] >= i[1] && o[3] <= i[3]) || + Qn(t, e, r, n, function (t, e) { + return Fe(i, t, e) + })) + ) + } + function ei(t, e, r, n, i) { + for (var o = 0, a = r.length; o < a; ++o) { + if (ti(t, e, r[o], n, i)) return !0 + e = r[o] + } + return !1 + } + function ri(t, e, r, n, i) { + return ( + !!ti(t, e, r, n, i) || + !!Zn(t, e, r, n, i[0], i[1]) || + !!Zn(t, e, r, n, i[0], i[3]) || + !!Zn(t, e, r, n, i[2], i[1]) || + !!Zn(t, e, r, n, i[2], i[3]) + ) + } + function ni(t, e, r, n, i) { + if (!ri(t, e, r[0], n, i)) return !1 + if (1 === r.length) return !0 + for (var o = 1, a = r.length; o < a; ++o) + if (Xn(t, r[o - 1], r[o], n, i) && !ti(t, r[o - 1], r[o], n, i)) + return !1 + return !0 + } + function ii(t, e, r, n, i) { + for (var o = 0, a = r.length; o < a; ++o) { + var s = r[o] + if (ni(t, e, s, n, i)) return !0 + e = s[s.length - 1] + } + return !1 + } + function oi(t, e, r, n) { + for (; e < r - n; ) { + for (var i = 0; i < n; ++i) { + var o = t[e + i] + ;(t[e + i] = t[r - n + i]), (t[r - n + i] = o) + } + ;(e += n), (r -= n) + } + } + function ai(t, e, r, n) { + for (var i = 0, o = t[r - n], a = t[r - n + 1]; e < r; e += n) { + var s = t[e], + l = t[e + 1] + ;(i += (s - o) * (l + a)), (o = s), (a = l) + } + return 0 === i ? void 0 : i > 0 + } + function si(t, e, r, n, i) { + for (var o = void 0 !== i && i, a = 0, s = r.length; a < s; ++a) { + var l = r[a], + u = ai(t, e, l, n) + if (0 === a) { + if ((o && u) || (!o && !u)) return !1 + } else if ((o && !u) || (!o && u)) return !1 + e = l + } + return !0 + } + function li(t, e, r, n, i) { + for (var o = 0, a = r.length; o < a; ++o) { + var s = r[o] + if (!si(t, e, s, n, i)) return !1 + s.length && (e = s[s.length - 1]) + } + return !0 + } + function ui(t, e, r, n, i) { + for (var o = void 0 !== i && i, a = 0, s = r.length; a < s; ++a) { + var l = r[a], + u = ai(t, e, l, n) + ;(0 === a ? (o && u) || (!o && !u) : (o && !u) || (!o && u)) && + oi(t, e, l, n), + (e = l) + } + return e + } + function ci(t, e, r, n, i) { + for (var o = 0, a = r.length; o < a; ++o) e = ui(t, e, r[o], n, i) + return e + } + var hi = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + pi = (function (t) { + function e(e, r, n) { + var i = t.call(this) || this + return ( + (i.ends_ = []), + (i.flatInteriorPointRevision_ = -1), + (i.flatInteriorPoint_ = null), + (i.maxDelta_ = -1), + (i.maxDeltaRevision_ = -1), + (i.orientedRevision_ = -1), + (i.orientedFlatCoordinates_ = null), + void 0 !== r && n + ? (i.setFlatCoordinates(r, e), (i.ends_ = n)) + : i.setCoordinates(e, r), + i + ) + } + return ( + hi(e, t), + (e.prototype.appendLinearRing = function (t) { + this.flatCoordinates + ? v(this.flatCoordinates, t.getFlatCoordinates()) + : (this.flatCoordinates = t.getFlatCoordinates().slice()), + this.ends_.push(this.flatCoordinates.length), + this.changed() + }), + (e.prototype.clone = function () { + var t = new e( + this.flatCoordinates.slice(), + this.layout, + this.ends_.slice(), + ) + return t.applyProperties(this), t + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + return n < Jt(this.getExtent(), t, e) + ? n + : (this.maxDeltaRevision_ != this.getRevision() && + ((this.maxDelta_ = Math.sqrt( + xn(this.flatCoordinates, 0, this.ends_, this.stride, 0), + )), + (this.maxDeltaRevision_ = this.getRevision())), + En( + this.flatCoordinates, + 0, + this.ends_, + this.stride, + this.maxDelta_, + !0, + t, + e, + r, + n, + )) + }), + (e.prototype.containsXY = function (t, e) { + return Kn( + this.getOrientedFlatCoordinates(), + 0, + this.ends_, + this.stride, + t, + e, + ) + }), + (e.prototype.getArea = function () { + return Un( + this.getOrientedFlatCoordinates(), + 0, + this.ends_, + this.stride, + ) + }), + (e.prototype.getCoordinates = function (t) { + var e + return ( + void 0 !== t + ? ui( + (e = this.getOrientedFlatCoordinates().slice()), + 0, + this.ends_, + this.stride, + t, + ) + : (e = this.flatCoordinates), + Dn(e, 0, this.ends_, this.stride) + ) + }), + (e.prototype.getEnds = function () { + return this.ends_ + }), + (e.prototype.getFlatInteriorPoint = function () { + if (this.flatInteriorPointRevision_ != this.getRevision()) { + var t = xe(this.getExtent()) + ;(this.flatInteriorPoint_ = $n( + this.getOrientedFlatCoordinates(), + 0, + this.ends_, + this.stride, + t, + 0, + )), + (this.flatInteriorPointRevision_ = this.getRevision()) + } + return this.flatInteriorPoint_ + }), + (e.prototype.getInteriorPoint = function () { + return new qn(this.getFlatInteriorPoint(), vt) + }), + (e.prototype.getLinearRingCount = function () { + return this.ends_.length + }), + (e.prototype.getLinearRing = function (t) { + return t < 0 || this.ends_.length <= t + ? null + : new Yn( + this.flatCoordinates.slice( + 0 === t ? 0 : this.ends_[t - 1], + this.ends_[t], + ), + this.layout, + ) + }), + (e.prototype.getLinearRings = function () { + for ( + var t = this.layout, + e = this.flatCoordinates, + r = this.ends_, + n = [], + i = 0, + o = 0, + a = r.length; + o < a; + ++o + ) { + var s = r[o], + l = new Yn(e.slice(i, s), t) + n.push(l), (i = s) + } + return n + }), + (e.prototype.getOrientedFlatCoordinates = function () { + if (this.orientedRevision_ != this.getRevision()) { + var t = this.flatCoordinates + si(t, 0, this.ends_, this.stride) + ? (this.orientedFlatCoordinates_ = t) + : ((this.orientedFlatCoordinates_ = t.slice()), + (this.orientedFlatCoordinates_.length = ui( + this.orientedFlatCoordinates_, + 0, + this.ends_, + this.stride, + ))), + (this.orientedRevision_ = this.getRevision()) + } + return this.orientedFlatCoordinates_ + }), + (e.prototype.getSimplifiedGeometryInternal = function (t) { + var r = [], + n = [] + return ( + (r.length = kn( + this.flatCoordinates, + 0, + this.ends_, + this.stride, + Math.sqrt(t), + r, + 0, + n, + )), + new e(r, yt, n) + ) + }), + (e.prototype.getType = function () { + return bt.POLYGON + }), + (e.prototype.intersectsExtent = function (t) { + return ni( + this.getOrientedFlatCoordinates(), + 0, + this.ends_, + this.stride, + t, + ) + }), + (e.prototype.setCoordinates = function (t, e) { + this.setLayout(e, t, 2), + this.flatCoordinates || (this.flatCoordinates = []) + var r = Pn(this.flatCoordinates, 0, t, this.stride, this.ends_) + ;(this.flatCoordinates.length = + 0 === r.length ? 0 : r[r.length - 1]), + this.changed() + }), + e + ) + })(vn), + fi = pi + function di(t, e, r, n) { + for (var i = r || 32, o = [], a = 0; a < i; ++a) + v(o, vr(t, e, (2 * Math.PI * a) / i, n)) + return o.push(o[0], o[1]), new pi(o, yt, [o.length]) + } + function gi(t) { + var e = t[0], + r = t[1], + n = t[2], + i = t[3], + o = [e, r, e, i, n, i, n, r, e, r] + return new pi(o, yt, [o.length]) + } + function yi(t, e, r) { + for ( + var n = e || 32, + i = t.getStride(), + o = t.getLayout(), + a = t.getCenter(), + s = i * (n + 1), + l = new Array(s), + u = 0; + u < s; + u += i + ) { + ;(l[u] = 0), (l[u + 1] = 0) + for (var c = 2; c < i; c++) l[u + c] = a[c] + } + var h = [l.length], + p = new pi(l, o, h) + return mi(p, a, t.getRadius(), r), p + } + function mi(t, e, r, n) { + for ( + var i = t.getFlatCoordinates(), + o = t.getStride(), + a = i.length / o - 1, + s = n || 0, + l = 0; + l <= a; + ++l + ) { + var u = l * o, + c = s + (2 * We(l, a) * Math.PI) / a + ;(i[u] = e[0] + r * Math.cos(c)), (i[u + 1] = e[1] + r * Math.sin(c)) + } + t.changed() + } + var vi = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + _i = 'accuracy', + bi = 'accuracyGeometry', + xi = 'altitude', + wi = 'altitudeAccuracy', + Si = 'heading', + Ei = 'position', + Ti = 'projection', + Ci = 'speed', + Oi = 'tracking', + Pi = 'trackingOptions', + Ri = (function (t) { + function e(e) { + var r = t.call(this, A) || this + return (r.code = e.code), (r.message = e.message), r + } + return vi(e, t), e + })(c), + Ii = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.position_ = null), + (r.transform_ = jr), + (r.watchId_ = void 0), + r.addEventListener(it(Ti), r.handleProjectionChanged_), + r.addEventListener(it(Oi), r.handleTrackingChanged_), + void 0 !== n.projection && r.setProjection(n.projection), + void 0 !== n.trackingOptions && + r.setTrackingOptions(n.trackingOptions), + r.setTracking(void 0 !== n.tracking && n.tracking), + r + ) + } + return ( + vi(e, t), + (e.prototype.disposeInternal = function () { + this.setTracking(!1), t.prototype.disposeInternal.call(this) + }), + (e.prototype.handleProjectionChanged_ = function () { + var t = this.getProjection() + t && + ((this.transform_ = Zr(Gr('EPSG:4326'), t)), + this.position_ && this.set(Ei, this.transform_(this.position_))) + }), + (e.prototype.handleTrackingChanged_ = function () { + if ('geolocation' in navigator) { + var t = this.getTracking() + t && void 0 === this.watchId_ + ? (this.watchId_ = navigator.geolocation.watchPosition( + this.positionChange_.bind(this), + this.positionError_.bind(this), + this.getTrackingOptions(), + )) + : t || + void 0 === this.watchId_ || + (navigator.geolocation.clearWatch(this.watchId_), + (this.watchId_ = void 0)) + } + }), + (e.prototype.positionChange_ = function (t) { + var e = t.coords + this.set(_i, e.accuracy), + this.set(xi, null === e.altitude ? void 0 : e.altitude), + this.set( + wi, + null === e.altitudeAccuracy ? void 0 : e.altitudeAccuracy, + ), + this.set(Si, null === e.heading ? void 0 : Ye(e.heading)), + this.position_ + ? ((this.position_[0] = e.longitude), + (this.position_[1] = e.latitude)) + : (this.position_ = [e.longitude, e.latitude]) + var r = this.transform_(this.position_) + this.set(Ei, r), this.set(Ci, null === e.speed ? void 0 : e.speed) + var n = di(this.position_, e.accuracy) + n.applyTransform(this.transform_), this.set(bi, n), this.changed() + }), + (e.prototype.positionError_ = function (t) { + this.dispatchEvent(new Ri(t)) + }), + (e.prototype.getAccuracy = function () { + return this.get(_i) + }), + (e.prototype.getAccuracyGeometry = function () { + return this.get(bi) || null + }), + (e.prototype.getAltitude = function () { + return this.get(xi) + }), + (e.prototype.getAltitudeAccuracy = function () { + return this.get(wi) + }), + (e.prototype.getHeading = function () { + return this.get(Si) + }), + (e.prototype.getPosition = function () { + return this.get(Ei) + }), + (e.prototype.getProjection = function () { + return this.get(Ti) + }), + (e.prototype.getSpeed = function () { + return this.get(Ci) + }), + (e.prototype.getTracking = function () { + return this.get(Oi) + }), + (e.prototype.getTrackingOptions = function () { + return this.get(Pi) + }), + (e.prototype.setProjection = function (t) { + this.set(Ti, Gr(t)) + }), + (e.prototype.setTracking = function (t) { + this.set(Oi, t) + }), + (e.prototype.setTrackingOptions = function (t) { + this.set(Pi, t) + }), + e + ) + })(ot), + Li = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Mi = (function (t) { + function e(e, r, n, i) { + var o = t.call(this) || this + return ( + (o.extent = e), + (o.pixelRatio_ = n), + (o.resolution = r), + (o.state = i), + o + ) + } + return ( + Li(e, t), + (e.prototype.changed = function () { + this.dispatchEvent(F) + }), + (e.prototype.getExtent = function () { + return this.extent + }), + (e.prototype.getImage = function () { + return n() + }), + (e.prototype.getPixelRatio = function () { + return this.pixelRatio_ + }), + (e.prototype.getResolution = function () { + return this.resolution + }), + (e.prototype.getState = function () { + return this.state + }), + (e.prototype.load = function () { + n() + }), + e + ) + })(M), + Fi = 0, + Ai = 1, + ki = 2, + ji = 3, + Ni = 4, + Di = + 'undefined' != typeof navigator && void 0 !== navigator.userAgent + ? navigator.userAgent.toLowerCase() + : '', + Gi = -1 !== Di.indexOf('firefox'), + zi = -1 !== Di.indexOf('safari') && -1 == Di.indexOf('chrom'), + Ui = -1 !== Di.indexOf('webkit') && -1 == Di.indexOf('edge'), + Bi = -1 !== Di.indexOf('macintosh'), + Vi = 'undefined' != typeof devicePixelRatio ? devicePixelRatio : 1, + Yi = + 'undefined' != typeof WorkerGlobalScope && + 'undefined' != typeof OffscreenCanvas && + self instanceof WorkerGlobalScope, + Wi = 'undefined' != typeof Image && Image.prototype.decode, + qi = (function () { + var t = !1 + try { + var e = Object.defineProperty({}, 'passive', { + get: function () { + t = !0 + }, + }) + window.addEventListener('_', null, e), + window.removeEventListener('_', null, e) + } catch (t) {} + return t + })(), + Xi = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Zi(t, e, r) { + var n = t + if (n.src && Wi) { + var i = n.decode(), + o = !0 + return ( + i + .then(function () { + o && e() + }) + .catch(function (t) { + o && + ('EncodingError' === t.name && + 'Invalid image type.' === t.message + ? e() + : r()) + }), + function () { + o = !1 + } + ) + } + var a = [K(n, Y, e), K(n, A, r)] + return function () { + a.forEach(H) + } + } + var Ki = (function (t) { + function e(e, r, n, i, o, a) { + var s = t.call(this, e, r, n, Fi) || this + return ( + (s.src_ = i), + (s.image_ = new Image()), + null !== o && (s.image_.crossOrigin = o), + (s.unlisten_ = null), + (s.state = Fi), + (s.imageLoadFunction_ = a), + s + ) + } + return ( + Xi(e, t), + (e.prototype.getImage = function () { + return this.image_ + }), + (e.prototype.handleImageError_ = function () { + ;(this.state = ji), this.unlistenImage_(), this.changed() + }), + (e.prototype.handleImageLoad_ = function () { + void 0 === this.resolution && + (this.resolution = Ee(this.extent) / this.image_.height), + (this.state = ki), + this.unlistenImage_(), + this.changed() + }), + (e.prototype.load = function () { + ;(this.state != Fi && this.state != ji) || + ((this.state = Ai), + this.changed(), + this.imageLoadFunction_(this, this.src_), + (this.unlisten_ = Zi( + this.image_, + this.handleImageLoad_.bind(this), + this.handleImageError_.bind(this), + ))) + }), + (e.prototype.setImage = function (t) { + this.image_ = t + }), + (e.prototype.unlistenImage_ = function () { + this.unlisten_ && (this.unlisten_(), (this.unlisten_ = null)) + }), + e + ) + })(Mi), + Hi = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + $i = (function (t) { + function e(e, r, n, i, o) { + var a = this, + s = void 0 !== o ? Fi : ki + return ( + ((a = t.call(this, e, r, n, s) || this).loader_ = + void 0 !== o ? o : null), + (a.canvas_ = i), + (a.error_ = null), + a + ) + } + return ( + Hi(e, t), + (e.prototype.getError = function () { + return this.error_ + }), + (e.prototype.handleLoad_ = function (t) { + t ? ((this.error_ = t), (this.state = ji)) : (this.state = ki), + this.changed() + }), + (e.prototype.load = function () { + this.state == Fi && + ((this.state = Ai), + this.changed(), + this.loader_(this.handleLoad_.bind(this))) + }), + (e.prototype.getImage = function () { + return this.canvas_ + }), + e + ) + })(Mi), + Ji = 0, + Qi = 1, + to = 2, + eo = 3, + ro = 4 + function no(t) { + return Math.pow(t, 3) + } + function io(t) { + return 1 - no(1 - t) + } + function oo(t) { + return 3 * t * t - 2 * t * t * t + } + function ao(t) { + return t + } + var so = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + lo = (function (t) { + function e(e, r, n) { + var i = t.call(this) || this, + o = n || {} + return ( + (i.tileCoord = e), + (i.state = r), + (i.interimTile = null), + (i.hifi = !0), + (i.key = ''), + (i.transition_ = void 0 === o.transition ? 250 : o.transition), + (i.transitionStarts_ = {}), + i + ) + } + return ( + so(e, t), + (e.prototype.changed = function () { + this.dispatchEvent(F) + }), + (e.prototype.release = function () {}), + (e.prototype.getKey = function () { + return this.key + '/' + this.tileCoord + }), + (e.prototype.getInterimTile = function () { + if (!this.interimTile) return this + var t = this.interimTile + do { + if (t.getState() == to) return (this.transition_ = 0), t + t = t.interimTile + } while (t) + return this + }), + (e.prototype.refreshInterimChain = function () { + if (this.interimTile) { + var t = this.interimTile, + e = this + do { + if (t.getState() == to) { + t.interimTile = null + break + } + t.getState() == Qi + ? (e = t) + : t.getState() == Ji + ? (e.interimTile = t.interimTile) + : (e = t), + (t = e.interimTile) + } while (t) + } + }), + (e.prototype.getTileCoord = function () { + return this.tileCoord + }), + (e.prototype.getState = function () { + return this.state + }), + (e.prototype.setState = function (t) { + if (this.state !== eo && this.state > t) + throw new Error('Tile load sequence violation') + ;(this.state = t), this.changed() + }), + (e.prototype.load = function () { + n() + }), + (e.prototype.getAlpha = function (t, e) { + if (!this.transition_) return 1 + var r = this.transitionStarts_[t] + if (r) { + if (-1 === r) return 1 + } else (r = e), (this.transitionStarts_[t] = r) + var n = e - r + 1e3 / 60 + return n >= this.transition_ ? 1 : no(n / this.transition_) + }), + (e.prototype.inTransition = function (t) { + return !!this.transition_ && -1 !== this.transitionStarts_[t] + }), + (e.prototype.endTransition = function (t) { + this.transition_ && (this.transitionStarts_[t] = -1) + }), + e + ) + })(M) + function uo(t, e, r) { + var n = + r && r.length + ? r.shift() + : Yi + ? new OffscreenCanvas(t || 300, e || 300) + : document.createElement('canvas') + return t && (n.width = t), e && (n.height = e), n.getContext('2d') + } + function co(t) { + var e = t.offsetWidth, + r = getComputedStyle(t) + return (e += parseInt(r.marginLeft, 10) + parseInt(r.marginRight, 10)) + } + function ho(t) { + var e = t.offsetHeight, + r = getComputedStyle(t) + return (e += parseInt(r.marginTop, 10) + parseInt(r.marginBottom, 10)) + } + function po(t, e) { + var r = e.parentNode + r && r.replaceChild(t, e) + } + function fo(t) { + return t && t.parentNode ? t.parentNode.removeChild(t) : null + } + function go(t) { + for (; t.lastChild; ) t.removeChild(t.lastChild) + } + function yo(t, e) { + for (var r = t.childNodes, n = 0; ; ++n) { + var i = r[n], + o = e[n] + if (!i && !o) break + i !== o && + (i + ? o + ? t.insertBefore(o, i) + : (t.removeChild(i), --n) + : t.appendChild(o)) + } + } + var mo = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + var vo = (function (t) { + function e(e, r, n, i, o, a) { + var s = t.call(this, e, r, a) || this + return ( + (s.crossOrigin_ = i), + (s.src_ = n), + (s.key = n), + (s.image_ = new Image()), + null !== i && (s.image_.crossOrigin = i), + (s.unlisten_ = null), + (s.tileLoadFunction_ = o), + s + ) + } + return ( + mo(e, t), + (e.prototype.getImage = function () { + return this.image_ + }), + (e.prototype.handleImageError_ = function () { + var t + ;(this.state = eo), + this.unlistenImage_(), + (this.image_ = + (((t = uo(1, 1)).fillStyle = 'rgba(0,0,0,0)'), + t.fillRect(0, 0, 1, 1), + t.canvas)), + this.changed() + }), + (e.prototype.handleImageLoad_ = function () { + var t = this.image_ + t.naturalWidth && t.naturalHeight + ? (this.state = to) + : (this.state = ro), + this.unlistenImage_(), + this.changed() + }), + (e.prototype.load = function () { + this.state == eo && + ((this.state = Ji), + (this.image_ = new Image()), + null !== this.crossOrigin_ && + (this.image_.crossOrigin = this.crossOrigin_)), + this.state == Ji && + ((this.state = Qi), + this.changed(), + this.tileLoadFunction_(this, this.src_), + (this.unlisten_ = Zi( + this.image_, + this.handleImageLoad_.bind(this), + this.handleImageError_.bind(this), + ))) + }), + (e.prototype.unlistenImage_ = function () { + this.unlisten_ && (this.unlisten_(), (this.unlisten_ = null)) + }), + e + ) + })(lo), + _o = (function () { + function t(t, e, r) { + ;(this.decay_ = t), + (this.minVelocity_ = e), + (this.delay_ = r), + (this.points_ = []), + (this.angle_ = 0), + (this.initialVelocity_ = 0) + } + return ( + (t.prototype.begin = function () { + ;(this.points_.length = 0), + (this.angle_ = 0), + (this.initialVelocity_ = 0) + }), + (t.prototype.update = function (t, e) { + this.points_.push(t, e, Date.now()) + }), + (t.prototype.end = function () { + if (this.points_.length < 6) return !1 + var t = Date.now() - this.delay_, + e = this.points_.length - 3 + if (this.points_[e + 2] < t) return !1 + for (var r = e - 3; r > 0 && this.points_[r + 2] > t; ) r -= 3 + var n = this.points_[e + 2] - this.points_[r + 2] + if (n < 1e3 / 60) return !1 + var i = this.points_[e] - this.points_[r], + o = this.points_[e + 1] - this.points_[r + 1] + return ( + (this.angle_ = Math.atan2(o, i)), + (this.initialVelocity_ = Math.sqrt(i * i + o * o) / n), + this.initialVelocity_ > this.minVelocity_ + ) + }), + (t.prototype.getDistance = function () { + return (this.minVelocity_ - this.initialVelocity_) / this.decay_ + }), + (t.prototype.getAngle = function () { + return this.angle_ + }), + t + ) + })(), + bo = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i, + xo = /^([a-z]*)$|^hsla?\(.*\)$/i + function wo(t) { + return 'string' == typeof t ? t : Ro(t) + } + function So(t) { + var e = document.createElement('div') + if (((e.style.color = t), '' !== e.style.color)) { + document.body.appendChild(e) + var r = getComputedStyle(e).color + return document.body.removeChild(e), r + } + return '' + } + var Eo, + To, + Co = + ((Eo = {}), + (To = 0), + function (t) { + var e + if (Eo.hasOwnProperty(t)) e = Eo[t] + else { + if (To >= 1024) { + var r = 0 + for (var n in Eo) 0 == (3 & r++) && (delete Eo[n], --To) + } + ;(e = (function (t) { + var e, r, n, i, o + if ((xo.exec(t) && (t = So(t)), bo.exec(t))) { + var a = t.length - 1, + s = void 0 + s = a <= 4 ? 1 : 2 + var l = 4 === a || 8 === a + ;(e = parseInt(t.substr(1 + 0 * s, s), 16)), + (r = parseInt(t.substr(1 + 1 * s, s), 16)), + (n = parseInt(t.substr(1 + 2 * s, s), 16)), + (i = l ? parseInt(t.substr(1 + 3 * s, s), 16) : 255), + 1 == s && + ((e = (e << 4) + e), + (r = (r << 4) + r), + (n = (n << 4) + n), + l && (i = (i << 4) + i)), + (o = [e, r, n, i / 255]) + } else + 0 == t.indexOf('rgba(') + ? Po((o = t.slice(5, -1).split(',').map(Number))) + : 0 == t.indexOf('rgb(') + ? ((o = t.slice(4, -1).split(',').map(Number)).push(1), + Po(o)) + : pt(!1, 14) + return o + })(t)), + (Eo[t] = e), + ++To + } + return e + }) + function Oo(t) { + return Array.isArray(t) ? t : Co(t) + } + function Po(t) { + return ( + (t[0] = Ne((t[0] + 0.5) | 0, 0, 255)), + (t[1] = Ne((t[1] + 0.5) | 0, 0, 255)), + (t[2] = Ne((t[2] + 0.5) | 0, 0, 255)), + (t[3] = Ne(t[3], 0, 1)), + t + ) + } + function Ro(t) { + var e = t[0] + e != (0 | e) && (e = (e + 0.5) | 0) + var r = t[1] + r != (0 | r) && (r = (r + 0.5) | 0) + var n = t[2] + return ( + n != (0 | n) && (n = (n + 0.5) | 0), + 'rgba(' + + e + + ',' + + r + + ',' + + n + + ',' + + (void 0 === t[3] ? 1 : t[3]) + + ')' + ) + } + function Io(t) { + return ( + xo.test(t) && (t = So(t)), + bo.test(t) || 0 === t.indexOf('rgba(') || 0 === t.indexOf('rgb(') + ) + } + var Lo = (function () { + function t() { + ;(this.cache_ = {}), (this.cacheSize_ = 0), (this.maxCacheSize_ = 32) + } + return ( + (t.prototype.clear = function () { + ;(this.cache_ = {}), (this.cacheSize_ = 0) + }), + (t.prototype.canExpireCache = function () { + return this.cacheSize_ > this.maxCacheSize_ + }), + (t.prototype.expire = function () { + if (this.canExpireCache()) { + var t = 0 + for (var e in this.cache_) { + var r = this.cache_[e] + 0 != (3 & t++) || + r.hasListener() || + (delete this.cache_[e], --this.cacheSize_) + } + } + }), + (t.prototype.get = function (t, e, r) { + var n = Mo(t, e, r) + return n in this.cache_ ? this.cache_[n] : null + }), + (t.prototype.set = function (t, e, r, n) { + var i = Mo(t, e, r) + ;(this.cache_[i] = n), ++this.cacheSize_ + }), + (t.prototype.setSize = function (t) { + ;(this.maxCacheSize_ = t), this.expire() + }), + t + ) + })() + function Mo(t, e, r) { + return e + ':' + t + ':' + (r ? wo(r) : 'null') + } + var Fo = Lo, + Ao = new Lo(), + ko = 'opacity', + jo = 'visible', + No = 'extent', + Do = 'zIndex', + Go = 'maxResolution', + zo = 'minResolution', + Uo = 'maxZoom', + Bo = 'minZoom', + Vo = 'source', + Yo = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Wo = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = O({}, e) + return ( + (n[ko] = void 0 !== e.opacity ? e.opacity : 1), + pt('number' == typeof n[ko], 64), + (n[jo] = void 0 === e.visible || e.visible), + (n[Do] = e.zIndex), + (n[Go] = void 0 !== e.maxResolution ? e.maxResolution : 1 / 0), + (n[zo] = void 0 !== e.minResolution ? e.minResolution : 0), + (n[Bo] = void 0 !== e.minZoom ? e.minZoom : -1 / 0), + (n[Uo] = void 0 !== e.maxZoom ? e.maxZoom : 1 / 0), + (r.className_ = + void 0 !== n.className ? e.className : 'ol-layer'), + delete n.className, + r.setProperties(n), + (r.state_ = null), + r + ) + } + return ( + Yo(e, t), + (e.prototype.getClassName = function () { + return this.className_ + }), + (e.prototype.getLayerState = function (t) { + var e = this.state_ || { + layer: this, + managed: void 0 === t || t, + }, + r = this.getZIndex() + return ( + (e.opacity = Ne( + Math.round(100 * this.getOpacity()) / 100, + 0, + 1, + )), + (e.sourceState = this.getSourceState()), + (e.visible = this.getVisible()), + (e.extent = this.getExtent()), + (e.zIndex = void 0 !== r ? r : !1 === e.managed ? 1 / 0 : 0), + (e.maxResolution = this.getMaxResolution()), + (e.minResolution = Math.max(this.getMinResolution(), 0)), + (e.minZoom = this.getMinZoom()), + (e.maxZoom = this.getMaxZoom()), + (this.state_ = e), + e + ) + }), + (e.prototype.getLayersArray = function (t) { + return n() + }), + (e.prototype.getLayerStatesArray = function (t) { + return n() + }), + (e.prototype.getExtent = function () { + return this.get(No) + }), + (e.prototype.getMaxResolution = function () { + return this.get(Go) + }), + (e.prototype.getMinResolution = function () { + return this.get(zo) + }), + (e.prototype.getMinZoom = function () { + return this.get(Bo) + }), + (e.prototype.getMaxZoom = function () { + return this.get(Uo) + }), + (e.prototype.getOpacity = function () { + return this.get(ko) + }), + (e.prototype.getSourceState = function () { + return n() + }), + (e.prototype.getVisible = function () { + return this.get(jo) + }), + (e.prototype.getZIndex = function () { + return this.get(Do) + }), + (e.prototype.setExtent = function (t) { + this.set(No, t) + }), + (e.prototype.setMaxResolution = function (t) { + this.set(Go, t) + }), + (e.prototype.setMinResolution = function (t) { + this.set(zo, t) + }), + (e.prototype.setMaxZoom = function (t) { + this.set(Uo, t) + }), + (e.prototype.setMinZoom = function (t) { + this.set(Bo, t) + }), + (e.prototype.setOpacity = function (t) { + pt('number' == typeof t, 64), this.set(ko, t) + }), + (e.prototype.setVisible = function (t) { + this.set(jo, t) + }), + (e.prototype.setZIndex = function (t) { + this.set(Do, t) + }), + (e.prototype.disposeInternal = function () { + this.state_ && ((this.state_.layer = null), (this.state_ = null)), + t.prototype.disposeInternal.call(this) + }), + e + ) + })(ot), + qo = 'prerender', + Xo = 'postrender', + Zo = 'precompose', + Ko = 'postcompose', + Ho = 'rendercomplete', + $o = 'undefined', + Jo = 'loading', + Qo = 'ready', + ta = 'error', + ea = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function ra(t, e) { + if (!t.visible) return !1 + var r = e.resolution + if (r < t.minResolution || r >= t.maxResolution) return !1 + var n = e.zoom + return n > t.minZoom && n <= t.maxZoom + } + var na = (function (t) { + function e(e) { + var r = this, + n = O({}, e) + delete n.source, + ((r = t.call(this, n) || this).mapPrecomposeKey_ = null), + (r.mapRenderKey_ = null), + (r.sourceChangeKey_ = null), + (r.renderer_ = null), + e.render && (r.render = e.render), + e.map && r.setMap(e.map), + r.addEventListener(it(Vo), r.handleSourcePropertyChange_) + var i = e.source ? e.source : null + return r.setSource(i), r + } + return ( + ea(e, t), + (e.prototype.getLayersArray = function (t) { + var e = t || [] + return e.push(this), e + }), + (e.prototype.getLayerStatesArray = function (t) { + var e = t || [] + return e.push(this.getLayerState()), e + }), + (e.prototype.getSource = function () { + return this.get(Vo) || null + }), + (e.prototype.getSourceState = function () { + var t = this.getSource() + return t ? t.getState() : $o + }), + (e.prototype.handleSourceChange_ = function () { + this.changed() + }), + (e.prototype.handleSourcePropertyChange_ = function () { + this.sourceChangeKey_ && + (H(this.sourceChangeKey_), (this.sourceChangeKey_ = null)) + var t = this.getSource() + t && + (this.sourceChangeKey_ = Z( + t, + F, + this.handleSourceChange_, + this, + )), + this.changed() + }), + (e.prototype.getFeatures = function (t) { + return this.renderer_.getFeatures(t) + }), + (e.prototype.render = function (t, e) { + var r = this.getRenderer() + if (r.prepareFrame(t)) return r.renderFrame(t, e) + }), + (e.prototype.setMap = function (t) { + this.mapPrecomposeKey_ && + (H(this.mapPrecomposeKey_), (this.mapPrecomposeKey_ = null)), + t || this.changed(), + this.mapRenderKey_ && + (H(this.mapRenderKey_), (this.mapRenderKey_ = null)), + t && + ((this.mapPrecomposeKey_ = Z( + t, + Zo, + function (t) { + var e = t.frameState.layerStatesArray, + r = this.getLayerState(!1) + pt( + !e.some(function (t) { + return t.layer === r.layer + }), + 67, + ), + e.push(r) + }, + this, + )), + (this.mapRenderKey_ = Z(this, F, t.render, t)), + this.changed()) + }), + (e.prototype.setSource = function (t) { + this.set(Vo, t) + }), + (e.prototype.getRenderer = function () { + return ( + this.renderer_ || (this.renderer_ = this.createRenderer()), + this.renderer_ + ) + }), + (e.prototype.hasRenderer = function () { + return !!this.renderer_ + }), + (e.prototype.createRenderer = function () { + return null + }), + (e.prototype.disposeInternal = function () { + this.setSource(null), t.prototype.disposeInternal.call(this) + }), + e + ) + })(Wo), + ia = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function oa(t, e) { + Ao.expire() + } + var aa = (function (t) { + function e(e) { + var r = t.call(this) || this + return (r.map_ = e), r + } + return ( + ia(e, t), + (e.prototype.dispatchRenderEvent = function (t, e) { + n() + }), + (e.prototype.calculateMatrices2D = function (t) { + var e = t.viewState, + r = t.coordinateToPixelTransform, + n = t.pixelToCoordinateTransform + kt( + r, + t.size[0] / 2, + t.size[1] / 2, + 1 / e.resolution, + -1 / e.resolution, + -e.rotation, + -e.center[0], + -e.center[1], + ), + jt(n, r) + }), + (e.prototype.forEachFeatureAtCoordinate = function ( + t, + e, + r, + n, + i, + o, + a, + s, + ) { + var l, + u = e.viewState + function c(t, e, r, n) { + return i.call(o, e, t ? r : null, n) + } + var h = u.projection, + p = Fr(t.slice(), h), + f = [[0, 0]] + if (h.canWrapX() && n) { + var d = Pe(h.getExtent()) + f.push([-d, 0], [d, 0]) + } + for ( + var g = e.layerStatesArray, y = g.length, m = [], v = [], _ = 0; + _ < f.length; + _++ + ) + for (var b = y - 1; b >= 0; --b) { + var x = g[b], + w = x.layer + if (w.hasRenderer() && ra(x, u) && a.call(s, w)) { + var S = w.getRenderer(), + E = w.getSource() + if (S && E) { + var T = E.getWrapX() ? p : t, + C = c.bind(null, x.managed) + ;(v[0] = T[0] + f[_][0]), + (v[1] = T[1] + f[_][1]), + (l = S.forEachFeatureAtCoordinate(v, e, r, C, m)) + } + if (l) return l + } + } + if (0 !== m.length) { + var O = 1 / m.length + return ( + m.forEach(function (t, e) { + return (t.distanceSq += e * O) + }), + m.sort(function (t, e) { + return t.distanceSq - e.distanceSq + }), + m.some(function (t) { + return (l = t.callback(t.feature, t.layer, t.geometry)) + }), + l + ) + } + }), + (e.prototype.forEachLayerAtPixel = function (t, e, r, i, o) { + return n() + }), + (e.prototype.hasFeatureAtCoordinate = function (t, e, r, n, i, o) { + return ( + void 0 !== + this.forEachFeatureAtCoordinate(t, e, r, n, S, this, i, o) + ) + }), + (e.prototype.getMap = function () { + return this.map_ + }), + (e.prototype.renderFrame = function (t) { + n() + }), + (e.prototype.scheduleExpireIconCache = function (t) { + Ao.canExpireCache() && t.postRenderFunctions.push(oa) + }), + e + ) + })(p), + sa = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + la = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e) || this + return ( + (o.inversePixelTransform = r), + (o.frameState = n), + (o.context = i), + o + ) + } + return sa(e, t), e + })(c), + ua = new RegExp( + [ + '^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)', + '(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)', + '(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)', + '(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?', + '(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))', + '(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))', + '?\\s*([-,\\"\\\'\\sa-z]+?)\\s*$', + ].join(''), + 'i', + ), + ca = ['style', 'variant', 'weight', 'size', 'lineHeight', 'family'], + ha = function (t) { + var e = t.match(ua) + if (!e) return null + for ( + var r = { + lineHeight: 'normal', + size: '1.2em', + style: 'normal', + weight: 'normal', + variant: 'normal', + }, + n = 0, + i = ca.length; + n < i; + ++n + ) { + var o = e[n + 1] + void 0 !== o && (r[ca[n]] = o) + } + return (r.families = r.family.split(/,\s?/)), r + }, + pa = [], + fa = [0, 0, 0, 0], + da = new ot(), + ga = new M() + ga.setSize = function () { + console.warn('labelCache is deprecated.') + } + var ya, + ma, + va = null, + _a = {}, + ba = (function () { + var t, + e, + r = ['monospace', 'serif'], + n = r.length, + i = 'wmytzilWMYTZIL@#/&?$%10' + function o(t, o, a) { + for (var s = !0, l = 0; l < n; ++l) { + var u = r[l] + if (((e = Sa(t + ' ' + o + ' 32px ' + u, i)), a != u)) { + var c = Sa(t + ' ' + o + ' 32px ' + a + ',' + u, i) + s = s && c != e + } + } + return !!s + } + function a() { + for ( + var e = !0, r = da.getKeys(), n = 0, i = r.length; + n < i; + ++n + ) { + var a = r[n] + da.get(a) < 100 && + (o.apply(this, a.split('\n')) + ? (P(_a), (va = null), (ya = void 0), da.set(a, 100)) + : (da.set(a, da.get(a) + 1, !0), (e = !1))) + } + e && (clearInterval(t), (t = void 0)) + } + return function (e) { + var r = ha(e) + if (r) + for (var n = r.families, i = 0, s = n.length; i < s; ++i) { + var l = n[i], + u = r.style + '\n' + r.weight + '\n' + l + void 0 === da.get(u) && + (da.set(u, 100, !0), + o(r.style, r.weight, l) || + (da.set(u, 0, !0), + void 0 === t && (t = setInterval(a, 32)))) + } + } + })(), + xa = function (t) { + var e = _a[t] + if (null == e) { + if (Yi) { + var r = ha(t), + n = wa(t, 'Žg') + e = + (isNaN(Number(r.lineHeight)) ? 1.2 : Number(r.lineHeight)) * + (n.actualBoundingBoxAscent + n.actualBoundingBoxDescent) + } else + ma || + (((ma = document.createElement('div')).innerHTML = 'M'), + (ma.style.margin = '0 !important'), + (ma.style.padding = '0 !important'), + (ma.style.position = 'absolute !important'), + (ma.style.left = '-99999px !important')), + (ma.style.font = t), + document.body.appendChild(ma), + (e = ma.offsetHeight), + document.body.removeChild(ma) + _a[t] = e + } + return e + } + function wa(t, e) { + return ( + va || (va = uo(1, 1)), + t != ya && ((va.font = t), (ya = va.font)), + va.measureText(e) + ) + } + function Sa(t, e) { + return wa(t, e).width + } + function Ea(t, e, r) { + if (e in r) return r[e] + var n = Sa(t, e) + return (r[e] = n), n + } + function Ta(t, e, r) { + for (var n = e.length, i = 0, o = 0; o < n; ++o) { + var a = Sa(t, e[o]) + ;(i = Math.max(i, a)), r.push(a) + } + return i + } + function Ca(t, e, r, n) { + 0 !== e && (t.translate(r, n), t.rotate(e), t.translate(-r, -n)) + } + function Oa(t, e, r, n, i, o, a, s, l, u, c) { + t.save(), + 1 !== r && (t.globalAlpha *= r), + e && t.setTransform.apply(t, e), + n.contextInstructions + ? (t.translate(l, u), + t.scale(c[0], c[1]), + (function (t, e) { + for ( + var r = t.contextInstructions, n = 0, i = r.length; + n < i; + n += 2 + ) + Array.isArray(r[n + 1]) + ? e[r[n]].apply(e, r[n + 1]) + : (e[r[n]] = r[n + 1]) + })(n, t)) + : c[0] < 0 || c[1] < 0 + ? (t.translate(l, u), + t.scale(c[0], c[1]), + t.drawImage(n, i, o, a, s, 0, 0, a, s)) + : t.drawImage(n, i, o, a, s, l, u, a * c[0], s * c[1]), + t.restore() + } + var Pa = null + function Ra(t) { + return Yi + ? Dt(t) + : (Pa || (Pa = uo(1, 1).canvas), + (Pa.style.transform = Dt(t)), + Pa.style.transform) + } + var Ia = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + La = (function (t) { + function e(e) { + var r = t.call(this, e) || this + ;(r.fontChangeListenerKey_ = Z(da, h, e.redrawText.bind(e))), + (r.element_ = document.createElement('div')) + var n = r.element_.style + ;(n.position = 'absolute'), + (n.width = '100%'), + (n.height = '100%'), + (n.zIndex = '0'), + (r.element_.className = 'ol-unselectable ol-layers') + var i = e.getViewport() + return ( + i.insertBefore(r.element_, i.firstChild || null), + (r.children_ = []), + (r.renderedVisible_ = !0), + r + ) + } + return ( + Ia(e, t), + (e.prototype.dispatchRenderEvent = function (t, e) { + var r = this.getMap() + if (r.hasListener(t)) { + var n = new la(t, void 0, e) + r.dispatchEvent(n) + } + }), + (e.prototype.disposeInternal = function () { + H(this.fontChangeListenerKey_), + this.element_.parentNode.removeChild(this.element_), + t.prototype.disposeInternal.call(this) + }), + (e.prototype.renderFrame = function (t) { + if (t) { + this.calculateMatrices2D(t), this.dispatchRenderEvent(Zo, t) + var e = t.layerStatesArray.sort(function (t, e) { + return t.zIndex - e.zIndex + }), + r = t.viewState + this.children_.length = 0 + for (var n = [], i = null, o = 0, a = e.length; o < a; ++o) { + var s = e[o] + if ( + ((t.layerIndex = o), + ra(s, r) && (s.sourceState == Qo || s.sourceState == $o)) + ) { + var l = s.layer, + u = l.render(t, i) + u && + (u !== i && (this.children_.push(u), (i = u)), + 'getDeclutter' in l && n.push(l)) + } + } + for (o = n.length - 1; o >= 0; --o) n[o].renderDeclutter(t) + yo(this.element_, this.children_), + this.dispatchRenderEvent(Ko, t), + this.renderedVisible_ || + ((this.element_.style.display = ''), + (this.renderedVisible_ = !0)), + this.scheduleExpireIconCache(t) + } else + this.renderedVisible_ && + ((this.element_.style.display = 'none'), + (this.renderedVisible_ = !1)) + }), + (e.prototype.forEachLayerAtPixel = function (t, e, r, n, i) { + for ( + var o = e.viewState, a = e.layerStatesArray, s = a.length - 1; + s >= 0; + --s + ) { + var l = a[s], + u = l.layer + if (u.hasRenderer() && ra(l, o) && i(u)) { + var c = u.getRenderer().getDataAtPixel(t, e, r) + if (c) { + var h = n(u, c) + if (h) return h + } + } + } + }), + e + ) + })(aa), + Ma = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Fa = 'layers', + Aa = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = O({}, n) + delete i.layers + var o = n.layers + return ( + ((r = t.call(this, i) || this).layersListenerKeys_ = []), + (r.listenerKeys_ = {}), + r.addEventListener(it(Fa), r.handleLayersChanged_), + o + ? Array.isArray(o) + ? (o = new ht(o.slice(), { unique: !0 })) + : pt('function' == typeof o.getArray, 43) + : (o = new ht(void 0, { unique: !0 })), + r.setLayers(o), + r + ) + } + return ( + Ma(e, t), + (e.prototype.handleLayerChange_ = function () { + this.changed() + }), + (e.prototype.handleLayersChanged_ = function () { + this.layersListenerKeys_.forEach(H), + (this.layersListenerKeys_.length = 0) + var t = this.getLayers() + for (var e in (this.layersListenerKeys_.push( + Z(t, at, this.handleLayersAdd_, this), + Z(t, st, this.handleLayersRemove_, this), + ), + this.listenerKeys_)) + this.listenerKeys_[e].forEach(H) + P(this.listenerKeys_) + for (var r = t.getArray(), n = 0, i = r.length; n < i; n++) { + var a = r[n] + this.listenerKeys_[o(a)] = [ + Z(a, h, this.handleLayerChange_, this), + Z(a, F, this.handleLayerChange_, this), + ] + } + this.changed() + }), + (e.prototype.handleLayersAdd_ = function (t) { + var e = t.element + ;(this.listenerKeys_[o(e)] = [ + Z(e, h, this.handleLayerChange_, this), + Z(e, F, this.handleLayerChange_, this), + ]), + this.changed() + }), + (e.prototype.handleLayersRemove_ = function (t) { + var e = o(t.element) + this.listenerKeys_[e].forEach(H), + delete this.listenerKeys_[e], + this.changed() + }), + (e.prototype.getLayers = function () { + return this.get(Fa) + }), + (e.prototype.setLayers = function (t) { + this.set(Fa, t) + }), + (e.prototype.getLayersArray = function (t) { + var e = void 0 !== t ? t : [] + return ( + this.getLayers().forEach(function (t) { + t.getLayersArray(e) + }), + e + ) + }), + (e.prototype.getLayerStatesArray = function (t) { + var e = void 0 !== t ? t : [], + r = e.length + this.getLayers().forEach(function (t) { + t.getLayerStatesArray(e) + }) + for ( + var n = this.getLayerState(), i = r, o = e.length; + i < o; + i++ + ) { + var a = e[i] + ;(a.opacity *= n.opacity), + (a.visible = a.visible && n.visible), + (a.maxResolution = Math.min( + a.maxResolution, + n.maxResolution, + )), + (a.minResolution = Math.max( + a.minResolution, + n.minResolution, + )), + (a.minZoom = Math.max(a.minZoom, n.minZoom)), + (a.maxZoom = Math.min(a.maxZoom, n.maxZoom)), + void 0 !== n.extent && + (void 0 !== a.extent + ? (a.extent = Te(a.extent, n.extent)) + : (a.extent = n.extent)) + } + return e + }), + (e.prototype.getSourceState = function () { + return Qo + }), + e + ) + })(Wo), + ka = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ja = (function (t) { + function e(e, r, n) { + var i = t.call(this, e) || this + return (i.map = r), (i.frameState = void 0 !== n ? n : null), i + } + return ka(e, t), e + })(c), + Na = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Da = (function (t) { + function e(e, r, n, i, o) { + var a = t.call(this, e, r, o) || this + return ( + (a.originalEvent = n), + (a.pixel_ = null), + (a.coordinate_ = null), + (a.dragging = void 0 !== i && i), + a + ) + } + return ( + Na(e, t), + Object.defineProperty(e.prototype, 'pixel', { + get: function () { + return ( + this.pixel_ || + (this.pixel_ = this.map.getEventPixel(this.originalEvent)), + this.pixel_ + ) + }, + set: function (t) { + this.pixel_ = t + }, + enumerable: !1, + configurable: !0, + }), + Object.defineProperty(e.prototype, 'coordinate', { + get: function () { + return ( + this.coordinate_ || + (this.coordinate_ = this.map.getCoordinateFromPixel( + this.pixel, + )), + this.coordinate_ + ) + }, + set: function (t) { + this.coordinate_ = t + }, + enumerable: !1, + configurable: !0, + }), + (e.prototype.preventDefault = function () { + t.prototype.preventDefault.call(this), + this.originalEvent.preventDefault() + }), + (e.prototype.stopPropagation = function () { + t.prototype.stopPropagation.call(this), + this.originalEvent.stopPropagation() + }), + e + ) + })(ja), + Ga = { + SINGLECLICK: 'singleclick', + CLICK: N, + DBLCLICK: D, + POINTERDRAG: 'pointerdrag', + POINTERMOVE: 'pointermove', + POINTERDOWN: 'pointerdown', + POINTERUP: 'pointerup', + POINTEROVER: 'pointerover', + POINTEROUT: 'pointerout', + POINTERENTER: 'pointerenter', + POINTERLEAVE: 'pointerleave', + POINTERCANCEL: 'pointercancel', + }, + za = 'pointermove', + Ua = 'pointerdown', + Ba = 'pointerup', + Va = 'pointerout', + Ya = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Wa = (function (t) { + function e(e, r) { + var n = t.call(this, e) || this + ;(n.map_ = e), + n.clickTimeoutId_, + (n.emulateClicks_ = !1), + (n.dragging_ = !1), + (n.dragListenerKeys_ = []), + (n.moveTolerance_ = r ? r * Vi : Vi), + (n.down_ = null) + var i = n.map_.getViewport() + return ( + (n.activePointers_ = 0), + (n.trackedTouches_ = {}), + (n.element_ = i), + (n.pointerdownListenerKey_ = Z(i, Ua, n.handlePointerDown_, n)), + n.originalPointerMoveEvent_, + (n.relayedListenerKey_ = Z(i, za, n.relayEvent_, n)), + (n.boundHandleTouchMove_ = n.handleTouchMove_.bind(n)), + n.element_.addEventListener( + q, + n.boundHandleTouchMove_, + !!qi && { passive: !1 }, + ), + n + ) + } + return ( + Ya(e, t), + (e.prototype.emulateClick_ = function (t) { + var e = new Da(Ga.CLICK, this.map_, t) + this.dispatchEvent(e), + void 0 !== this.clickTimeoutId_ + ? (clearTimeout(this.clickTimeoutId_), + (this.clickTimeoutId_ = void 0), + (e = new Da(Ga.DBLCLICK, this.map_, t)), + this.dispatchEvent(e)) + : (this.clickTimeoutId_ = setTimeout( + function () { + this.clickTimeoutId_ = void 0 + var e = new Da(Ga.SINGLECLICK, this.map_, t) + this.dispatchEvent(e) + }.bind(this), + 250, + )) + }), + (e.prototype.updateActivePointers_ = function (t) { + var e = t + e.type == Ga.POINTERUP || e.type == Ga.POINTERCANCEL + ? delete this.trackedTouches_[e.pointerId] + : e.type == Ga.POINTERDOWN && + (this.trackedTouches_[e.pointerId] = !0), + (this.activePointers_ = Object.keys( + this.trackedTouches_, + ).length) + }), + (e.prototype.handlePointerUp_ = function (t) { + this.updateActivePointers_(t) + var e = new Da(Ga.POINTERUP, this.map_, t) + this.dispatchEvent(e), + this.emulateClicks_ && + !e.propagationStopped && + !this.dragging_ && + this.isMouseActionButton_(t) && + this.emulateClick_(this.down_), + 0 === this.activePointers_ && + (this.dragListenerKeys_.forEach(H), + (this.dragListenerKeys_.length = 0), + (this.dragging_ = !1), + (this.down_ = null)) + }), + (e.prototype.isMouseActionButton_ = function (t) { + return 0 === t.button + }), + (e.prototype.handlePointerDown_ = function (t) { + ;(this.emulateClicks_ = 0 === this.activePointers_), + this.updateActivePointers_(t) + var e = new Da(Ga.POINTERDOWN, this.map_, t) + if ( + (this.dispatchEvent(e), + (this.down_ = t), + 0 === this.dragListenerKeys_.length) + ) { + var r = this.map_.getOwnerDocument() + this.dragListenerKeys_.push( + Z(r, Ga.POINTERMOVE, this.handlePointerMove_, this), + Z(r, Ga.POINTERUP, this.handlePointerUp_, this), + Z( + this.element_, + Ga.POINTERCANCEL, + this.handlePointerUp_, + this, + ), + ), + this.element_.getRootNode && + this.element_.getRootNode() !== r && + this.dragListenerKeys_.push( + Z( + this.element_.getRootNode(), + Ga.POINTERUP, + this.handlePointerUp_, + this, + ), + ) + } + }), + (e.prototype.handlePointerMove_ = function (t) { + if (this.isMoving_(t)) { + this.dragging_ = !0 + var e = new Da(Ga.POINTERDRAG, this.map_, t, this.dragging_) + this.dispatchEvent(e) + } + }), + (e.prototype.relayEvent_ = function (t) { + this.originalPointerMoveEvent_ = t + var e = !(!this.down_ || !this.isMoving_(t)) + this.dispatchEvent(new Da(t.type, this.map_, t, e)) + }), + (e.prototype.handleTouchMove_ = function (t) { + ;(this.originalPointerMoveEvent_ && + !this.originalPointerMoveEvent_.defaultPrevented) || + t.preventDefault() + }), + (e.prototype.isMoving_ = function (t) { + return ( + this.dragging_ || + Math.abs(t.clientX - this.down_.clientX) > + this.moveTolerance_ || + Math.abs(t.clientY - this.down_.clientY) > this.moveTolerance_ + ) + }), + (e.prototype.disposeInternal = function () { + this.relayedListenerKey_ && + (H(this.relayedListenerKey_), + (this.relayedListenerKey_ = null)), + this.element_.removeEventListener( + q, + this.boundHandleTouchMove_, + ), + this.pointerdownListenerKey_ && + (H(this.pointerdownListenerKey_), + (this.pointerdownListenerKey_ = null)), + this.dragListenerKeys_.forEach(H), + (this.dragListenerKeys_.length = 0), + (this.element_ = null), + t.prototype.disposeInternal.call(this) + }), + e + ) + })(M), + qa = 'postrender', + Xa = 'movestart', + Za = 'moveend', + Ka = 'layergroup', + Ha = 'size', + $a = 'target', + Ja = 'view', + Qa = (function () { + function t(t, e) { + ;(this.priorityFunction_ = t), + (this.keyFunction_ = e), + (this.elements_ = []), + (this.priorities_ = []), + (this.queuedElements_ = {}) + } + return ( + (t.prototype.clear = function () { + ;(this.elements_.length = 0), + (this.priorities_.length = 0), + P(this.queuedElements_) + }), + (t.prototype.dequeue = function () { + var t = this.elements_, + e = this.priorities_, + r = t[0] + 1 == t.length + ? ((t.length = 0), (e.length = 0)) + : ((t[0] = t.pop()), (e[0] = e.pop()), this.siftUp_(0)) + var n = this.keyFunction_(r) + return delete this.queuedElements_[n], r + }), + (t.prototype.enqueue = function (t) { + pt(!(this.keyFunction_(t) in this.queuedElements_), 31) + var e = this.priorityFunction_(t) + return ( + e != 1 / 0 && + (this.elements_.push(t), + this.priorities_.push(e), + (this.queuedElements_[this.keyFunction_(t)] = !0), + this.siftDown_(0, this.elements_.length - 1), + !0) + ) + }), + (t.prototype.getCount = function () { + return this.elements_.length + }), + (t.prototype.getLeftChildIndex_ = function (t) { + return 2 * t + 1 + }), + (t.prototype.getRightChildIndex_ = function (t) { + return 2 * t + 2 + }), + (t.prototype.getParentIndex_ = function (t) { + return (t - 1) >> 1 + }), + (t.prototype.heapify_ = function () { + var t + for (t = (this.elements_.length >> 1) - 1; t >= 0; t--) + this.siftUp_(t) + }), + (t.prototype.isEmpty = function () { + return 0 === this.elements_.length + }), + (t.prototype.isKeyQueued = function (t) { + return t in this.queuedElements_ + }), + (t.prototype.isQueued = function (t) { + return this.isKeyQueued(this.keyFunction_(t)) + }), + (t.prototype.siftUp_ = function (t) { + for ( + var e = this.elements_, + r = this.priorities_, + n = e.length, + i = e[t], + o = r[t], + a = t; + t < n >> 1; + + ) { + var s = this.getLeftChildIndex_(t), + l = this.getRightChildIndex_(t), + u = l < n && r[l] < r[s] ? l : s + ;(e[t] = e[u]), (r[t] = r[u]), (t = u) + } + ;(e[t] = i), (r[t] = o), this.siftDown_(a, t) + }), + (t.prototype.siftDown_ = function (t, e) { + for ( + var r = this.elements_, + n = this.priorities_, + i = r[e], + o = n[e]; + e > t; + + ) { + var a = this.getParentIndex_(e) + if (!(n[a] > o)) break + ;(r[e] = r[a]), (n[e] = n[a]), (e = a) + } + ;(r[e] = i), (n[e] = o) + }), + (t.prototype.reprioritize = function () { + var t, + e, + r, + n = this.priorityFunction_, + i = this.elements_, + o = this.priorities_, + a = 0, + s = i.length + for (e = 0; e < s; ++e) + (r = n((t = i[e]))) == 1 / 0 + ? delete this.queuedElements_[this.keyFunction_(t)] + : ((o[a] = r), (i[a++] = t)) + ;(i.length = a), (o.length = a), this.heapify_() + }), + t + ) + })(), + ts = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + es = (function (t) { + function e(e, r) { + var n = + t.call( + this, + function (t) { + return e.apply(null, t) + }, + function (t) { + return t[0].getKey() + }, + ) || this + return ( + (n.boundHandleTileChange_ = n.handleTileChange.bind(n)), + (n.tileChangeCallback_ = r), + (n.tilesLoading_ = 0), + (n.tilesLoadingKeys_ = {}), + n + ) + } + return ( + ts(e, t), + (e.prototype.enqueue = function (e) { + var r = t.prototype.enqueue.call(this, e) + r && e[0].addEventListener(F, this.boundHandleTileChange_) + return r + }), + (e.prototype.getTilesLoading = function () { + return this.tilesLoading_ + }), + (e.prototype.handleTileChange = function (t) { + var e = t.target, + r = e.getState() + if ((e.hifi && r === to) || r === eo || r === ro) { + e.removeEventListener(F, this.boundHandleTileChange_) + var n = e.getKey() + n in this.tilesLoadingKeys_ && + (delete this.tilesLoadingKeys_[n], --this.tilesLoading_), + this.tileChangeCallback_() + } + }), + (e.prototype.loadMoreTiles = function (t, e) { + for ( + var r, n, i = 0; + this.tilesLoading_ < t && i < e && this.getCount() > 0; + + ) + (n = (r = this.dequeue()[0]).getKey()), + r.getState() !== Ji || + n in this.tilesLoadingKeys_ || + ((this.tilesLoadingKeys_[n] = !0), + ++this.tilesLoading_, + ++i, + r.load()) + }), + e + ) + })(Qa) + function rs(t, e, r, n, i) { + if (!t || !(r in t.wantedTiles)) return 1 / 0 + if (!t.wantedTiles[r][e.getKey()]) return 1 / 0 + var o = t.viewState.center, + a = n[0] - o[0], + s = n[1] - o[1] + return 65536 * Math.log(i) + Math.sqrt(a * a + s * s) / i + } + var ns = 0, + is = 1, + os = 'center', + as = 'resolution', + ss = 'rotation' + function ls(t, e, r) { + return function (n, i, o, a, s) { + if (n) { + var l = e ? 0 : o[0] * i, + u = e ? 0 : o[1] * i, + c = s ? s[0] : 0, + h = s ? s[1] : 0, + p = t[0] + l / 2 + c, + f = t[2] - l / 2 + c, + d = t[1] + u / 2 + h, + g = t[3] - u / 2 + h + p > f && (f = p = (f + p) / 2), d > g && (g = d = (g + d) / 2) + var y = Ne(n[0], p, f), + m = Ne(n[1], d, g), + v = 30 * i + return ( + a && + r && + ((y += + -v * Math.log(1 + Math.max(0, p - n[0]) / v) + + v * Math.log(1 + Math.max(0, n[0] - f) / v)), + (m += + -v * Math.log(1 + Math.max(0, d - n[1]) / v) + + v * Math.log(1 + Math.max(0, n[1] - g) / v))), + [y, m] + ) + } + } + } + function us(t) { + return t + } + function cs(t, e, r, n) { + var i = Pe(e) / r[0], + o = Ee(e) / r[1] + return n ? Math.min(t, Math.max(i, o)) : Math.min(t, Math.min(i, o)) + } + function hs(t, e, r) { + var n = Math.min(t, e) + return ( + (n *= Math.log(1 + 50 * Math.max(0, t / e - 1)) / 50 + 1), + r && + ((n = Math.max(n, r)), + (n /= Math.log(1 + 50 * Math.max(0, r / t - 1)) / 50 + 1)), + Ne(n, r / 2, 2 * e) + ) + } + function ps(t, e, r, n) { + return function (i, o, a, s) { + if (void 0 !== i) { + var l = t[0], + u = t[t.length - 1], + c = r ? cs(l, r, a, n) : l + if (s) return void 0 === e || e ? hs(i, c, u) : Ne(i, u, c) + var h = Math.min(c, i), + p = Math.floor(y(t, h, o)) + return t[p] > c && p < t.length - 1 ? t[p + 1] : t[p] + } + } + } + function fs(t, e, r, n, i, o) { + return function (a, s, l, u) { + if (void 0 !== a) { + var c = i ? cs(e, i, l, o) : e, + h = void 0 !== r ? r : 0 + if (u) return void 0 === n || n ? hs(a, c, h) : Ne(a, h, c) + var p = Math.ceil(Math.log(e / c) / Math.log(t) - 1e-9), + f = -s * (0.5 - 1e-9) + 0.5, + d = Math.min(c, a), + g = Math.floor(Math.log(e / d) / Math.log(t) + f), + y = Math.max(p, g) + return Ne(e / Math.pow(t, y), h, c) + } + } + } + function ds(t, e, r, n, i) { + return function (o, a, s, l) { + if (void 0 !== o) { + var u = n ? cs(t, n, s, i) : t + return (void 0 === r || r) && l ? hs(o, u, e) : Ne(o, e, u) + } + } + } + function gs(t) { + return void 0 !== t ? 0 : void 0 + } + function ys(t) { + return void 0 !== t ? t : void 0 + } + function ms(t) { + var e = (2 * Math.PI) / t + return function (t, r) { + return r + ? t + : void 0 !== t + ? (t = Math.floor(t / e + 0.5) * e) + : void 0 + } + } + function vs(t) { + var e = t || Ye(5) + return function (t, r) { + return r ? t : void 0 !== t ? (Math.abs(t) <= e ? 0 : t) : void 0 + } + } + var _s = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function bs(t, e) { + setTimeout(function () { + t(e) + }, 0) + } + function xs(t) { + if (void 0 !== t.extent) { + var e = + void 0 === t.smoothExtentConstraint || t.smoothExtentConstraint + return ls(t.extent, t.constrainOnlyCenter, e) + } + var r = Vr(t.projection, 'EPSG:3857') + if (!0 !== t.multiWorld && r.isGlobal()) { + var n = r.getExtent().slice() + return (n[0] = -1 / 0), (n[2] = 1 / 0), ls(n, !1, !1) + } + return us + } + function ws(t) { + var e, + r, + n, + i = void 0 !== t.minZoom ? t.minZoom : 0, + o = void 0 !== t.maxZoom ? t.maxZoom : 28, + a = void 0 !== t.zoomFactor ? t.zoomFactor : 2, + s = void 0 !== t.multiWorld && t.multiWorld, + l = + void 0 === t.smoothResolutionConstraint || + t.smoothResolutionConstraint, + u = void 0 !== t.showFullExtent && t.showFullExtent, + c = Vr(t.projection, 'EPSG:3857'), + h = c.getExtent(), + p = t.constrainOnlyCenter, + f = t.extent + if ( + (s || f || !c.isGlobal() || ((p = !1), (f = h)), + void 0 !== t.resolutions) + ) { + var d = t.resolutions + ;(r = d[i]), + (n = void 0 !== d[o] ? d[o] : d[d.length - 1]), + (e = t.constrainResolution + ? ps(d, l, !p && f, u) + : ds(r, n, l, !p && f, u)) + } else { + var g = + (h + ? Math.max(Pe(h), Ee(h)) + : (360 * wt[St.DEGREES]) / c.getMetersPerUnit()) / + 256 / + Math.pow(2, 0), + y = g / Math.pow(2, 28) + void 0 !== (r = t.maxResolution) ? (i = 0) : (r = g / Math.pow(a, i)), + void 0 === (n = t.minResolution) && + (n = + void 0 !== t.maxZoom + ? void 0 !== t.maxResolution + ? r / Math.pow(a, o) + : g / Math.pow(a, o) + : y), + (o = i + Math.floor(Math.log(r / n) / Math.log(a))), + (n = r / Math.pow(a, o - i)), + (e = t.constrainResolution + ? fs(a, r, n, l, !p && f, u) + : ds(r, n, l, !p && f, u)) + } + return { + constraint: e, + maxResolution: r, + minResolution: n, + minZoom: i, + zoomFactor: a, + } + } + function Ss(t) { + if (void 0 === t.enableRotation || t.enableRotation) { + var e = t.constrainRotation + return void 0 === e || !0 === e + ? vs() + : !1 === e + ? ys + : 'number' == typeof e + ? ms(e) + : ys + } + return gs + } + function Es(t) { + return ( + !( + t.sourceCenter && + t.targetCenter && + !Cr(t.sourceCenter, t.targetCenter) + ) && + t.sourceResolution === t.targetResolution && + t.sourceRotation === t.targetRotation + ) + } + function Ts(t, e, r, n, i) { + var o = Math.cos(-i), + a = Math.sin(-i), + s = t[0] * o - t[1] * a, + l = t[1] * o + t[0] * a + return [ + (s += (e[0] / 2 - r[0]) * n) * o - + (l += (r[1] - e[1] / 2) * n) * (a = -a), + l * o + s * a, + ] + } + var Cs = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = O({}, e) + return ( + (r.hints_ = [0, 0]), + (r.animations_ = []), + r.updateAnimationKey_, + (r.projection_ = Vr(n.projection, 'EPSG:3857')), + (r.viewportSize_ = [100, 100]), + (r.targetCenter_ = null), + r.targetResolution_, + r.targetRotation_, + (r.cancelAnchor_ = void 0), + n.center && (n.center = rn(n.center, r.projection_)), + n.extent && (n.extent = on(n.extent, r.projection_)), + r.applyOptions_(n), + r + ) + } + return ( + _s(e, t), + (e.prototype.applyOptions_ = function (t) { + var e = ws(t) + ;(this.maxResolution_ = e.maxResolution), + (this.minResolution_ = e.minResolution), + (this.zoomFactor_ = e.zoomFactor), + (this.resolutions_ = t.resolutions), + (this.padding = t.padding), + (this.minZoom_ = e.minZoom) + var r = xs(t), + n = e.constraint, + i = Ss(t) + ;(this.constraints_ = { center: r, resolution: n, rotation: i }), + this.setRotation(void 0 !== t.rotation ? t.rotation : 0), + this.setCenterInternal(void 0 !== t.center ? t.center : null), + void 0 !== t.resolution + ? this.setResolution(t.resolution) + : void 0 !== t.zoom && this.setZoom(t.zoom), + this.setProperties({}), + (this.options_ = t) + }), + (e.prototype.getUpdatedOptions_ = function (t) { + var e = O({}, this.options_) + return ( + void 0 !== e.resolution + ? (e.resolution = this.getResolution()) + : (e.zoom = this.getZoom()), + (e.center = this.getCenterInternal()), + (e.rotation = this.getRotation()), + O({}, e, t) + ) + }), + (e.prototype.animate = function (t) { + this.isDef() && !this.getAnimating() && this.resolveConstraints(0) + for ( + var e = new Array(arguments.length), r = 0; + r < e.length; + ++r + ) { + var n = arguments[r] + n.center && + ((n = O({}, n)).center = rn(n.center, this.getProjection())), + n.anchor && + ((n = O({}, n)).anchor = rn(n.anchor, this.getProjection())), + (e[r] = n) + } + this.animateInternal.apply(this, e) + }), + (e.prototype.animateInternal = function (t) { + var e, + r = arguments.length + if ( + (r > 1 && + 'function' == typeof arguments[r - 1] && + ((e = arguments[r - 1]), --r), + !this.isDef()) + ) { + var n = arguments[r - 1] + return ( + n.center && this.setCenterInternal(n.center), + void 0 !== n.zoom && this.setZoom(n.zoom), + void 0 !== n.rotation && this.setRotation(n.rotation), + void (e && bs(e, !0)) + ) + } + for ( + var i = Date.now(), + o = this.targetCenter_.slice(), + a = this.targetResolution_, + s = this.targetRotation_, + l = [], + u = 0; + u < r; + ++u + ) { + var c = arguments[u], + h = { + start: i, + complete: !1, + anchor: c.anchor, + duration: void 0 !== c.duration ? c.duration : 1e3, + easing: c.easing || oo, + callback: e, + } + if ( + (c.center && + ((h.sourceCenter = o), + (h.targetCenter = c.center.slice()), + (o = h.targetCenter)), + void 0 !== c.zoom + ? ((h.sourceResolution = a), + (h.targetResolution = this.getResolutionForZoom(c.zoom)), + (a = h.targetResolution)) + : c.resolution && + ((h.sourceResolution = a), + (h.targetResolution = c.resolution), + (a = h.targetResolution)), + void 0 !== c.rotation) + ) { + h.sourceRotation = s + var p = We(c.rotation - s + Math.PI, 2 * Math.PI) - Math.PI + ;(h.targetRotation = s + p), (s = h.targetRotation) + } + Es(h) ? (h.complete = !0) : (i += h.duration), l.push(h) + } + this.animations_.push(l), + this.setHint(ns, 1), + this.updateAnimations_() + }), + (e.prototype.getAnimating = function () { + return this.hints_[ns] > 0 + }), + (e.prototype.getInteracting = function () { + return this.hints_[is] > 0 + }), + (e.prototype.cancelAnimations = function () { + var t + this.setHint(ns, -this.hints_[ns]) + for (var e = 0, r = this.animations_.length; e < r; ++e) { + var n = this.animations_[e] + if ((n[0].callback && bs(n[0].callback, !1), !t)) + for (var i = 0, o = n.length; i < o; ++i) { + var a = n[i] + if (!a.complete) { + t = a.anchor + break + } + } + } + ;(this.animations_.length = 0), (this.cancelAnchor_ = t) + }), + (e.prototype.updateAnimations_ = function () { + if ( + (void 0 !== this.updateAnimationKey_ && + (cancelAnimationFrame(this.updateAnimationKey_), + (this.updateAnimationKey_ = void 0)), + this.getAnimating()) + ) { + for ( + var t = Date.now(), e = !1, r = this.animations_.length - 1; + r >= 0; + --r + ) { + for ( + var n = this.animations_[r], i = !0, o = 0, a = n.length; + o < a; + ++o + ) { + var s = n[o] + if (!s.complete) { + var l = t - s.start, + u = s.duration > 0 ? l / s.duration : 1 + u >= 1 ? ((s.complete = !0), (u = 1)) : (i = !1) + var c = s.easing(u) + if (s.sourceCenter) { + var h = s.sourceCenter[0], + p = s.sourceCenter[1], + f = h + c * (s.targetCenter[0] - h), + d = p + c * (s.targetCenter[1] - p) + this.targetCenter_ = [f, d] + } + if (s.sourceResolution && s.targetResolution) { + var g = + 1 === c + ? s.targetResolution + : s.sourceResolution + + c * (s.targetResolution - s.sourceResolution) + if (s.anchor) { + var y = this.getViewportSize_(this.getRotation()), + m = this.constraints_.resolution(g, 0, y, !0) + this.targetCenter_ = this.calculateCenterZoom( + m, + s.anchor, + ) + } + ;(this.targetResolution_ = g), this.applyTargetState_(!0) + } + if ( + void 0 !== s.sourceRotation && + void 0 !== s.targetRotation + ) { + var v = + 1 === c + ? We(s.targetRotation + Math.PI, 2 * Math.PI) - + Math.PI + : s.sourceRotation + + c * (s.targetRotation - s.sourceRotation) + if (s.anchor) { + var _ = this.constraints_.rotation(v, !0) + this.targetCenter_ = this.calculateCenterRotate( + _, + s.anchor, + ) + } + this.targetRotation_ = v + } + if ((this.applyTargetState_(!0), (e = !0), !s.complete)) + break + } + } + if (i) { + ;(this.animations_[r] = null), this.setHint(ns, -1) + var b = n[0].callback + b && bs(b, !0) + } + } + ;(this.animations_ = this.animations_.filter(Boolean)), + e && + void 0 === this.updateAnimationKey_ && + (this.updateAnimationKey_ = requestAnimationFrame( + this.updateAnimations_.bind(this), + )) + } + }), + (e.prototype.calculateCenterRotate = function (t, e) { + var r, + n = this.getCenterInternal() + return ( + void 0 !== n && + (Or((r = [n[0] - e[0], n[1] - e[1]]), t - this.getRotation()), + xr(r, e)), + r + ) + }), + (e.prototype.calculateCenterZoom = function (t, e) { + var r, + n = this.getCenterInternal(), + i = this.getResolution() + void 0 !== n && + void 0 !== i && + (r = [ + e[0] - (t * (e[0] - n[0])) / i, + e[1] - (t * (e[1] - n[1])) / i, + ]) + return r + }), + (e.prototype.getViewportSize_ = function (t) { + var e = this.viewportSize_ + if (t) { + var r = e[0], + n = e[1] + return [ + Math.abs(r * Math.cos(t)) + Math.abs(n * Math.sin(t)), + Math.abs(r * Math.sin(t)) + Math.abs(n * Math.cos(t)), + ] + } + return e + }), + (e.prototype.setViewportSize = function (t) { + ;(this.viewportSize_ = Array.isArray(t) ? t.slice() : [100, 100]), + this.getAnimating() || this.resolveConstraints(0) + }), + (e.prototype.getCenter = function () { + var t = this.getCenterInternal() + return t ? en(t, this.getProjection()) : t + }), + (e.prototype.getCenterInternal = function () { + return this.get(os) + }), + (e.prototype.getConstraints = function () { + return this.constraints_ + }), + (e.prototype.getConstrainResolution = function () { + return this.options_.constrainResolution + }), + (e.prototype.getHints = function (t) { + return void 0 !== t + ? ((t[0] = this.hints_[0]), (t[1] = this.hints_[1]), t) + : this.hints_.slice() + }), + (e.prototype.calculateExtent = function (t) { + return nn(this.calculateExtentInternal(t), this.getProjection()) + }), + (e.prototype.calculateExtentInternal = function (t) { + var e = t || this.getViewportSize_(), + r = this.getCenterInternal() + pt(r, 1) + var n = this.getResolution() + pt(void 0 !== n, 2) + var i = this.getRotation() + return pt(void 0 !== i, 3), Se(r, n, i, e) + }), + (e.prototype.getMaxResolution = function () { + return this.maxResolution_ + }), + (e.prototype.getMinResolution = function () { + return this.minResolution_ + }), + (e.prototype.getMaxZoom = function () { + return this.getZoomForResolution(this.minResolution_) + }), + (e.prototype.setMaxZoom = function (t) { + this.applyOptions_(this.getUpdatedOptions_({ maxZoom: t })) + }), + (e.prototype.getMinZoom = function () { + return this.getZoomForResolution(this.maxResolution_) + }), + (e.prototype.setMinZoom = function (t) { + this.applyOptions_(this.getUpdatedOptions_({ minZoom: t })) + }), + (e.prototype.setConstrainResolution = function (t) { + this.applyOptions_( + this.getUpdatedOptions_({ constrainResolution: t }), + ) + }), + (e.prototype.getProjection = function () { + return this.projection_ + }), + (e.prototype.getResolution = function () { + return this.get(as) + }), + (e.prototype.getResolutions = function () { + return this.resolutions_ + }), + (e.prototype.getResolutionForExtent = function (t, e) { + return this.getResolutionForExtentInternal( + on(t, this.getProjection()), + e, + ) + }), + (e.prototype.getResolutionForExtentInternal = function (t, e) { + var r = e || this.getViewportSize_(), + n = Pe(t) / r[0], + i = Ee(t) / r[1] + return Math.max(n, i) + }), + (e.prototype.getResolutionForValueFunction = function (t) { + var e = t || 2, + r = this.getConstrainedResolution(this.maxResolution_), + n = this.minResolution_, + i = Math.log(r / n) / Math.log(e) + return function (t) { + return r / Math.pow(e, t * i) + } + }), + (e.prototype.getRotation = function () { + return this.get(ss) + }), + (e.prototype.getValueForResolutionFunction = function (t) { + var e = Math.log(t || 2), + r = this.getConstrainedResolution(this.maxResolution_), + n = this.minResolution_, + i = Math.log(r / n) / e + return function (t) { + return Math.log(r / t) / e / i + } + }), + (e.prototype.getViewportSizeMinusPadding_ = function (t) { + var e = this.getViewportSize_(t), + r = this.padding + return r && (e = [e[0] - r[1] - r[3], e[1] - r[0] - r[2]]), e + }), + (e.prototype.getState = function () { + var t = this.getProjection(), + e = this.getResolution(), + r = this.getRotation(), + n = this.getCenterInternal(), + i = this.padding + if (i) { + var o = this.getViewportSizeMinusPadding_() + n = Ts( + n, + this.getViewportSize_(), + [o[0] / 2 + i[3], o[1] / 2 + i[0]], + e, + r, + ) + } + return { + center: n.slice(0), + projection: void 0 !== t ? t : null, + resolution: e, + rotation: r, + zoom: this.getZoom(), + } + }), + (e.prototype.getZoom = function () { + var t, + e = this.getResolution() + return void 0 !== e && (t = this.getZoomForResolution(e)), t + }), + (e.prototype.getZoomForResolution = function (t) { + var e, + r, + n = this.minZoom_ || 0 + if (this.resolutions_) { + var i = y(this.resolutions_, t, 1) + ;(n = i), + (e = this.resolutions_[i]), + (r = + i == this.resolutions_.length - 1 + ? 2 + : e / this.resolutions_[i + 1]) + } else (e = this.maxResolution_), (r = this.zoomFactor_) + return n + Math.log(e / t) / Math.log(r) + }), + (e.prototype.getResolutionForZoom = function (t) { + if (this.resolutions_) { + if (this.resolutions_.length <= 1) return 0 + var e = Ne(Math.floor(t), 0, this.resolutions_.length - 2), + r = this.resolutions_[e] / this.resolutions_[e + 1] + return this.resolutions_[e] / Math.pow(r, Ne(t - e, 0, 1)) + } + return ( + this.maxResolution_ / + Math.pow(this.zoomFactor_, t - this.minZoom_) + ) + }), + (e.prototype.fit = function (t, e) { + var r + if ( + (pt( + Array.isArray(t) || + 'function' == typeof t.getSimplifiedGeometry, + 24, + ), + Array.isArray(t)) + ) + pt(!Ie(t), 25), (r = gi((n = on(t, this.getProjection())))) + else if (t.getType() === bt.CIRCLE) { + var n + ;(r = gi((n = on(t.getExtent(), this.getProjection())))).rotate( + this.getRotation(), + xe(n), + ) + } else { + var i = tn() + r = i ? t.clone().transform(i, this.getProjection()) : t + } + this.fitInternal(r, e) + }), + (e.prototype.fitInternal = function (t, e) { + var r = e || {}, + n = r.size + n || (n = this.getViewportSizeMinusPadding_()) + var i, + o = void 0 !== r.padding ? r.padding : [0, 0, 0, 0], + a = void 0 !== r.nearest && r.nearest + i = + void 0 !== r.minResolution + ? r.minResolution + : void 0 !== r.maxZoom + ? this.getResolutionForZoom(r.maxZoom) + : 0 + for ( + var s = t.getFlatCoordinates(), + l = this.getRotation(), + u = Math.cos(-l), + c = Math.sin(-l), + h = 1 / 0, + p = 1 / 0, + f = -1 / 0, + d = -1 / 0, + g = t.getStride(), + y = 0, + m = s.length; + y < m; + y += g + ) { + var v = s[y] * u - s[y + 1] * c, + _ = s[y] * c + s[y + 1] * u + ;(h = Math.min(h, v)), + (p = Math.min(p, _)), + (f = Math.max(f, v)), + (d = Math.max(d, _)) + } + var b = this.getResolutionForExtentInternal( + [h, p, f, d], + [n[0] - o[1] - o[3], n[1] - o[0] - o[2]], + ) + ;(b = isNaN(b) ? i : Math.max(b, i)), + (b = this.getConstrainedResolution(b, a ? 0 : 1)), + (c = -c) + var x = (h + f) / 2, + w = (p + d) / 2, + S = + (x += ((o[1] - o[3]) / 2) * b) * u - + (w += ((o[0] - o[2]) / 2) * b) * c, + E = w * u + x * c, + C = this.getConstrainedCenter([S, E], b), + O = r.callback ? r.callback : T + void 0 !== r.duration + ? this.animateInternal( + { + resolution: b, + center: C, + duration: r.duration, + easing: r.easing, + }, + O, + ) + : ((this.targetResolution_ = b), + (this.targetCenter_ = C), + this.applyTargetState_(!1, !0), + bs(O, !0)) + }), + (e.prototype.centerOn = function (t, e, r) { + this.centerOnInternal(rn(t, this.getProjection()), e, r) + }), + (e.prototype.centerOnInternal = function (t, e, r) { + this.setCenterInternal( + Ts(t, e, r, this.getResolution(), this.getRotation()), + ) + }), + (e.prototype.calculateCenterShift = function (t, e, r, n) { + var i, + o = this.padding + if (o && t) { + var a = this.getViewportSizeMinusPadding_(-r), + s = Ts(t, n, [a[0] / 2 + o[3], a[1] / 2 + o[0]], e, r) + i = [t[0] - s[0], t[1] - s[1]] + } + return i + }), + (e.prototype.isDef = function () { + return !!this.getCenterInternal() && void 0 !== this.getResolution() + }), + (e.prototype.adjustCenter = function (t) { + var e = en(this.targetCenter_, this.getProjection()) + this.setCenter([e[0] + t[0], e[1] + t[1]]) + }), + (e.prototype.adjustCenterInternal = function (t) { + var e = this.targetCenter_ + this.setCenterInternal([e[0] + t[0], e[1] + t[1]]) + }), + (e.prototype.adjustResolution = function (t, e) { + var r = e && rn(e, this.getProjection()) + this.adjustResolutionInternal(t, r) + }), + (e.prototype.adjustResolutionInternal = function (t, e) { + var r = this.getAnimating() || this.getInteracting(), + n = this.getViewportSize_(this.getRotation()), + i = this.constraints_.resolution( + this.targetResolution_ * t, + 0, + n, + r, + ) + e && (this.targetCenter_ = this.calculateCenterZoom(i, e)), + (this.targetResolution_ *= t), + this.applyTargetState_() + }), + (e.prototype.adjustZoom = function (t, e) { + this.adjustResolution(Math.pow(this.zoomFactor_, -t), e) + }), + (e.prototype.adjustRotation = function (t, e) { + e && (e = rn(e, this.getProjection())), + this.adjustRotationInternal(t, e) + }), + (e.prototype.adjustRotationInternal = function (t, e) { + var r = this.getAnimating() || this.getInteracting(), + n = this.constraints_.rotation(this.targetRotation_ + t, r) + e && (this.targetCenter_ = this.calculateCenterRotate(n, e)), + (this.targetRotation_ += t), + this.applyTargetState_() + }), + (e.prototype.setCenter = function (t) { + this.setCenterInternal(rn(t, this.getProjection())) + }), + (e.prototype.setCenterInternal = function (t) { + ;(this.targetCenter_ = t), this.applyTargetState_() + }), + (e.prototype.setHint = function (t, e) { + return (this.hints_[t] += e), this.changed(), this.hints_[t] + }), + (e.prototype.setResolution = function (t) { + ;(this.targetResolution_ = t), this.applyTargetState_() + }), + (e.prototype.setRotation = function (t) { + ;(this.targetRotation_ = t), this.applyTargetState_() + }), + (e.prototype.setZoom = function (t) { + this.setResolution(this.getResolutionForZoom(t)) + }), + (e.prototype.applyTargetState_ = function (t, e) { + var r = this.getAnimating() || this.getInteracting() || e, + n = this.constraints_.rotation(this.targetRotation_, r), + i = this.getViewportSize_(n), + o = this.constraints_.resolution(this.targetResolution_, 0, i, r), + a = this.constraints_.center( + this.targetCenter_, + o, + i, + r, + this.calculateCenterShift(this.targetCenter_, o, n, i), + ) + this.get(ss) !== n && this.set(ss, n), + this.get(as) !== o && this.set(as, o), + (this.get(os) && Cr(this.get(os), a)) || this.set(os, a), + this.getAnimating() && !t && this.cancelAnimations(), + (this.cancelAnchor_ = void 0) + }), + (e.prototype.resolveConstraints = function (t, e, r) { + var n = void 0 !== t ? t : 200, + i = e || 0, + o = this.constraints_.rotation(this.targetRotation_), + a = this.getViewportSize_(o), + s = this.constraints_.resolution(this.targetResolution_, i, a), + l = this.constraints_.center( + this.targetCenter_, + s, + a, + !1, + this.calculateCenterShift(this.targetCenter_, s, o, a), + ) + if (0 === n && !this.cancelAnchor_) + return ( + (this.targetResolution_ = s), + (this.targetRotation_ = o), + (this.targetCenter_ = l), + void this.applyTargetState_() + ) + var u = r || (0 === n ? this.cancelAnchor_ : void 0) + ;(this.cancelAnchor_ = void 0), + (this.getResolution() === s && + this.getRotation() === o && + this.getCenterInternal() && + Cr(this.getCenterInternal(), l)) || + (this.getAnimating() && this.cancelAnimations(), + this.animateInternal({ + rotation: o, + center: l, + resolution: s, + duration: n, + easing: io, + anchor: u, + })) + }), + (e.prototype.beginInteraction = function () { + this.resolveConstraints(0), this.setHint(is, 1) + }), + (e.prototype.endInteraction = function (t, e, r) { + var n = r && rn(r, this.getProjection()) + this.endInteractionInternal(t, e, n) + }), + (e.prototype.endInteractionInternal = function (t, e, r) { + this.setHint(is, -1), this.resolveConstraints(t, e, r) + }), + (e.prototype.getConstrainedCenter = function (t, e) { + var r = this.getViewportSize_(this.getRotation()) + return this.constraints_.center(t, e || this.getResolution(), r) + }), + (e.prototype.getConstrainedZoom = function (t, e) { + var r = this.getResolutionForZoom(t) + return this.getZoomForResolution( + this.getConstrainedResolution(r, e), + ) + }), + (e.prototype.getConstrainedResolution = function (t, e) { + var r = e || 0, + n = this.getViewportSize_(this.getRotation()) + return this.constraints_.resolution(t, r, n) + }), + e + ) + })(ot) + function Os(t, e, r) { + return ( + void 0 === r && (r = [0, 0]), + (r[0] = t[0] + 2 * e), + (r[1] = t[1] + 2 * e), + r + ) + } + function Ps(t) { + return t[0] > 0 && t[1] > 0 + } + function Rs(t, e, r) { + return ( + void 0 === r && (r = [0, 0]), + (r[0] = (t[0] * e + 0.5) | 0), + (r[1] = (t[1] * e + 0.5) | 0), + r + ) + } + function Is(t, e) { + return Array.isArray(t) + ? t + : (void 0 === e ? (e = [t, t]) : ((e[0] = t), (e[1] = t)), e) + } + var Ls = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + var Ms = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = (function (t) { + var e = null + void 0 !== t.keyboardEventTarget && + (e = + 'string' == typeof t.keyboardEventTarget + ? document.getElementById(t.keyboardEventTarget) + : t.keyboardEventTarget) + var r, + n, + i, + o = {}, + a = + t.layers && 'function' == typeof t.layers.getLayers + ? t.layers + : new Aa({ layers: t.layers }) + ;(o[Ka] = a), + (o[$a] = t.target), + (o[Ja] = void 0 !== t.view ? t.view : new Cs()), + void 0 !== t.controls && + (Array.isArray(t.controls) + ? (r = new ht(t.controls.slice())) + : (pt('function' == typeof t.controls.getArray, 47), + (r = t.controls))) + void 0 !== t.interactions && + (Array.isArray(t.interactions) + ? (n = new ht(t.interactions.slice())) + : (pt('function' == typeof t.interactions.getArray, 48), + (n = t.interactions))) + void 0 !== t.overlays + ? Array.isArray(t.overlays) + ? (i = new ht(t.overlays.slice())) + : (pt('function' == typeof t.overlays.getArray, 49), + (i = t.overlays)) + : (i = new ht()) + return { + controls: r, + interactions: n, + keyboardEventTarget: e, + overlays: i, + values: o, + } + })(e) + return ( + (r.boundHandleBrowserEvent_ = r.handleBrowserEvent.bind(r)), + (r.maxTilesLoading_ = + void 0 !== e.maxTilesLoading ? e.maxTilesLoading : 16), + (r.pixelRatio_ = void 0 !== e.pixelRatio ? e.pixelRatio : Vi), + r.postRenderTimeoutHandle_, + r.animationDelayKey_, + (r.animationDelay_ = function () { + ;(this.animationDelayKey_ = void 0), + this.renderFrame_(Date.now()) + }.bind(r)), + (r.coordinateToPixelTransform_ = [1, 0, 0, 1, 0, 0]), + (r.pixelToCoordinateTransform_ = [1, 0, 0, 1, 0, 0]), + (r.frameIndex_ = 0), + (r.frameState_ = null), + (r.previousExtent_ = null), + (r.viewPropertyListenerKey_ = null), + (r.viewChangeListenerKey_ = null), + (r.layerGroupPropertyListenerKeys_ = null), + (r.viewport_ = document.createElement('div')), + (r.viewport_.className = + 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '')), + (r.viewport_.style.position = 'relative'), + (r.viewport_.style.overflow = 'hidden'), + (r.viewport_.style.width = '100%'), + (r.viewport_.style.height = '100%'), + (r.overlayContainer_ = document.createElement('div')), + (r.overlayContainer_.style.position = 'absolute'), + (r.overlayContainer_.style.zIndex = '0'), + (r.overlayContainer_.style.width = '100%'), + (r.overlayContainer_.style.height = '100%'), + (r.overlayContainer_.style.pointerEvents = 'none'), + (r.overlayContainer_.className = 'ol-overlaycontainer'), + r.viewport_.appendChild(r.overlayContainer_), + (r.overlayContainerStopEvent_ = document.createElement('div')), + (r.overlayContainerStopEvent_.style.position = 'absolute'), + (r.overlayContainerStopEvent_.style.zIndex = '0'), + (r.overlayContainerStopEvent_.style.width = '100%'), + (r.overlayContainerStopEvent_.style.height = '100%'), + (r.overlayContainerStopEvent_.style.pointerEvents = 'none'), + (r.overlayContainerStopEvent_.className = + 'ol-overlaycontainer-stopevent'), + r.viewport_.appendChild(r.overlayContainerStopEvent_), + (r.mapBrowserEventHandler_ = null), + (r.moveTolerance_ = e.moveTolerance), + (r.keyboardEventTarget_ = n.keyboardEventTarget), + (r.keyHandlerKeys_ = null), + (r.controls = n.controls || new ht()), + (r.interactions = n.interactions || new ht()), + (r.overlays_ = n.overlays), + (r.overlayIdIndex_ = {}), + (r.renderer_ = null), + r.handleResize_, + (r.postRenderFunctions_ = []), + (r.tileQueue_ = new es( + r.getTilePriority.bind(r), + r.handleTileChange_.bind(r), + )), + r.addEventListener(it(Ka), r.handleLayerGroupChanged_), + r.addEventListener(it(Ja), r.handleViewChanged_), + r.addEventListener(it(Ha), r.handleSizeChanged_), + r.addEventListener(it($a), r.handleTargetChanged_), + r.setProperties(n.values), + r.controls.forEach( + function (t) { + t.setMap(this) + }.bind(r), + ), + r.controls.addEventListener( + at, + function (t) { + t.element.setMap(this) + }.bind(r), + ), + r.controls.addEventListener( + st, + function (t) { + t.element.setMap(null) + }.bind(r), + ), + r.interactions.forEach( + function (t) { + t.setMap(this) + }.bind(r), + ), + r.interactions.addEventListener( + at, + function (t) { + t.element.setMap(this) + }.bind(r), + ), + r.interactions.addEventListener( + st, + function (t) { + t.element.setMap(null) + }.bind(r), + ), + r.overlays_.forEach(r.addOverlayInternal_.bind(r)), + r.overlays_.addEventListener( + at, + function (t) { + this.addOverlayInternal_(t.element) + }.bind(r), + ), + r.overlays_.addEventListener( + st, + function (t) { + var e = t.element.getId() + void 0 !== e && delete this.overlayIdIndex_[e.toString()], + t.element.setMap(null) + }.bind(r), + ), + r + ) + } + return ( + Ls(e, t), + (e.prototype.createRenderer = function () { + throw new Error('Use a map type that has a createRenderer method') + }), + (e.prototype.addControl = function (t) { + this.getControls().push(t) + }), + (e.prototype.addInteraction = function (t) { + this.getInteractions().push(t) + }), + (e.prototype.addLayer = function (t) { + this.getLayerGroup().getLayers().push(t) + }), + (e.prototype.addOverlay = function (t) { + this.getOverlays().push(t) + }), + (e.prototype.addOverlayInternal_ = function (t) { + var e = t.getId() + void 0 !== e && (this.overlayIdIndex_[e.toString()] = t), + t.setMap(this) + }), + (e.prototype.disposeInternal = function () { + this.setTarget(null), t.prototype.disposeInternal.call(this) + }), + (e.prototype.forEachFeatureAtPixel = function (t, e, r) { + if (this.frameState_) { + var n = this.getCoordinateFromPixelInternal(t), + i = + void 0 !== (r = void 0 !== r ? r : {}).hitTolerance + ? r.hitTolerance + : 0, + o = void 0 !== r.layerFilter ? r.layerFilter : S, + a = !1 !== r.checkWrapped + return this.renderer_.forEachFeatureAtCoordinate( + n, + this.frameState_, + i, + a, + e, + null, + o, + null, + ) + } + }), + (e.prototype.getFeaturesAtPixel = function (t, e) { + var r = [] + return ( + this.forEachFeatureAtPixel( + t, + function (t) { + r.push(t) + }, + e, + ), + r + ) + }), + (e.prototype.forEachLayerAtPixel = function (t, e, r) { + if (this.frameState_) { + var n = r || {}, + i = void 0 !== n.hitTolerance ? n.hitTolerance : 0, + o = n.layerFilter || S + return this.renderer_.forEachLayerAtPixel( + t, + this.frameState_, + i, + e, + o, + ) + } + }), + (e.prototype.hasFeatureAtPixel = function (t, e) { + if (!this.frameState_) return !1 + var r = this.getCoordinateFromPixelInternal(t), + n = + void 0 !== (e = void 0 !== e ? e : {}).layerFilter + ? e.layerFilter + : S, + i = void 0 !== e.hitTolerance ? e.hitTolerance : 0, + o = !1 !== e.checkWrapped + return this.renderer_.hasFeatureAtCoordinate( + r, + this.frameState_, + i, + o, + n, + null, + ) + }), + (e.prototype.getEventCoordinate = function (t) { + return this.getCoordinateFromPixel(this.getEventPixel(t)) + }), + (e.prototype.getEventCoordinateInternal = function (t) { + return this.getCoordinateFromPixelInternal(this.getEventPixel(t)) + }), + (e.prototype.getEventPixel = function (t) { + var e = this.viewport_.getBoundingClientRect(), + r = 'changedTouches' in t ? t.changedTouches[0] : t + return [r.clientX - e.left, r.clientY - e.top] + }), + (e.prototype.getTarget = function () { + return this.get($a) + }), + (e.prototype.getTargetElement = function () { + var t = this.getTarget() + return void 0 !== t + ? 'string' == typeof t + ? document.getElementById(t) + : t + : null + }), + (e.prototype.getCoordinateFromPixel = function (t) { + return en( + this.getCoordinateFromPixelInternal(t), + this.getView().getProjection(), + ) + }), + (e.prototype.getCoordinateFromPixelInternal = function (t) { + var e = this.frameState_ + return e ? It(e.pixelToCoordinateTransform, t.slice()) : null + }), + (e.prototype.getControls = function () { + return this.controls + }), + (e.prototype.getOverlays = function () { + return this.overlays_ + }), + (e.prototype.getOverlayById = function (t) { + var e = this.overlayIdIndex_[t.toString()] + return void 0 !== e ? e : null + }), + (e.prototype.getInteractions = function () { + return this.interactions + }), + (e.prototype.getLayerGroup = function () { + return this.get(Ka) + }), + (e.prototype.getLayers = function () { + return this.getLayerGroup().getLayers() + }), + (e.prototype.getLoading = function () { + for ( + var t = this.getLayerGroup().getLayerStatesArray(), + e = 0, + r = t.length; + e < r; + ++e + ) { + var n = t[e].layer.getSource() + if (n && n.loading) return !0 + } + return !1 + }), + (e.prototype.getPixelFromCoordinate = function (t) { + var e = rn(t, this.getView().getProjection()) + return this.getPixelFromCoordinateInternal(e) + }), + (e.prototype.getPixelFromCoordinateInternal = function (t) { + var e = this.frameState_ + return e ? It(e.coordinateToPixelTransform, t.slice(0, 2)) : null + }), + (e.prototype.getRenderer = function () { + return this.renderer_ + }), + (e.prototype.getSize = function () { + return this.get(Ha) + }), + (e.prototype.getView = function () { + return this.get(Ja) + }), + (e.prototype.getViewport = function () { + return this.viewport_ + }), + (e.prototype.getOverlayContainer = function () { + return this.overlayContainer_ + }), + (e.prototype.getOverlayContainerStopEvent = function () { + return this.overlayContainerStopEvent_ + }), + (e.prototype.getOwnerDocument = function () { + return this.getTargetElement() + ? this.getTargetElement().ownerDocument + : document + }), + (e.prototype.getTilePriority = function (t, e, r, n) { + return rs(this.frameState_, t, e, r, n) + }), + (e.prototype.handleBrowserEvent = function (t, e) { + var r = e || t.type, + n = new Da(r, this, t) + this.handleMapBrowserEvent(n) + }), + (e.prototype.handleMapBrowserEvent = function (t) { + if (this.frameState_) { + var e = t.originalEvent, + r = e.type + if (r === Ua || r === X || r === B) { + var n = this.getOwnerDocument(), + i = this.viewport_.getRootNode + ? this.viewport_.getRootNode() + : n, + o = + 'host' in i + ? i.elementFromPoint(e.clientX, e.clientY) + : e.target + if ( + this.overlayContainerStopEvent_.contains(o) || + !(i === n ? n.documentElement : i).contains(o) + ) + return + } + if ( + ((t.frameState = this.frameState_), + !1 !== this.dispatchEvent(t)) + ) + for ( + var a = this.getInteractions().getArray().slice(), + s = a.length - 1; + s >= 0; + s-- + ) { + var l = a[s] + if ( + l.getMap() === this && + l.getActive() && + this.getTargetElement() + ) + if (!l.handleEvent(t) || t.propagationStopped) break + } + } + }), + (e.prototype.handlePostRender = function () { + var t = this.frameState_, + e = this.tileQueue_ + if (!e.isEmpty()) { + var r = this.maxTilesLoading_, + n = r + if (t) { + var i = t.viewHints + if (i[ns] || i[is]) { + var o = !Wi && Date.now() - t.time > 8 + ;(r = o ? 0 : 8), (n = o ? 0 : 2) + } + } + e.getTilesLoading() < r && + (e.reprioritize(), e.loadMoreTiles(r, n)) + } + !t || + !this.hasListener(Ho) || + t.animate || + this.tileQueue_.getTilesLoading() || + this.getLoading() || + this.renderer_.dispatchRenderEvent(Ho, t) + for ( + var a = this.postRenderFunctions_, s = 0, l = a.length; + s < l; + ++s + ) + a[s](this, t) + a.length = 0 + }), + (e.prototype.handleSizeChanged_ = function () { + this.getView() && + !this.getView().getAnimating() && + this.getView().resolveConstraints(0), + this.render() + }), + (e.prototype.handleTargetChanged_ = function () { + var t + if ( + (this.getTarget() && (t = this.getTargetElement()), + this.mapBrowserEventHandler_) + ) { + for (var e = 0, r = this.keyHandlerKeys_.length; e < r; ++e) + H(this.keyHandlerKeys_[e]) + ;(this.keyHandlerKeys_ = null), + this.viewport_.removeEventListener( + j, + this.boundHandleBrowserEvent_, + ), + this.viewport_.removeEventListener( + X, + this.boundHandleBrowserEvent_, + ), + void 0 !== this.handleResize_ && + (removeEventListener(W, this.handleResize_, !1), + (this.handleResize_ = void 0)), + this.mapBrowserEventHandler_.dispose(), + (this.mapBrowserEventHandler_ = null), + fo(this.viewport_) + } + if (t) { + for (var n in (t.appendChild(this.viewport_), + this.renderer_ || (this.renderer_ = this.createRenderer()), + (this.mapBrowserEventHandler_ = new Wa( + this, + this.moveTolerance_, + )), + Ga)) + this.mapBrowserEventHandler_.addEventListener( + Ga[n], + this.handleMapBrowserEvent.bind(this), + ) + this.viewport_.addEventListener( + j, + this.boundHandleBrowserEvent_, + !1, + ), + this.viewport_.addEventListener( + X, + this.boundHandleBrowserEvent_, + !!qi && { passive: !1 }, + ) + var i = this.keyboardEventTarget_ + ? this.keyboardEventTarget_ + : t + ;(this.keyHandlerKeys_ = [ + Z(i, B, this.handleBrowserEvent, this), + Z(i, V, this.handleBrowserEvent, this), + ]), + this.handleResize_ || + ((this.handleResize_ = this.updateSize.bind(this)), + window.addEventListener(W, this.handleResize_, !1)) + } else + this.renderer_ && + (clearTimeout(this.postRenderTimeoutHandle_), + (this.postRenderTimeoutHandle_ = void 0), + (this.postRenderFunctions_.length = 0), + this.renderer_.dispose(), + (this.renderer_ = null)), + this.animationDelayKey_ && + (cancelAnimationFrame(this.animationDelayKey_), + (this.animationDelayKey_ = void 0)) + this.updateSize() + }), + (e.prototype.handleTileChange_ = function () { + this.render() + }), + (e.prototype.handleViewPropertyChanged_ = function () { + this.render() + }), + (e.prototype.handleViewChanged_ = function () { + this.viewPropertyListenerKey_ && + (H(this.viewPropertyListenerKey_), + (this.viewPropertyListenerKey_ = null)), + this.viewChangeListenerKey_ && + (H(this.viewChangeListenerKey_), + (this.viewChangeListenerKey_ = null)) + var t = this.getView() + t && + (this.updateViewportSize_(), + (this.viewPropertyListenerKey_ = Z( + t, + h, + this.handleViewPropertyChanged_, + this, + )), + (this.viewChangeListenerKey_ = Z( + t, + F, + this.handleViewPropertyChanged_, + this, + )), + t.resolveConstraints(0)), + this.render() + }), + (e.prototype.handleLayerGroupChanged_ = function () { + this.layerGroupPropertyListenerKeys_ && + (this.layerGroupPropertyListenerKeys_.forEach(H), + (this.layerGroupPropertyListenerKeys_ = null)) + var t = this.getLayerGroup() + t && + (this.layerGroupPropertyListenerKeys_ = [ + Z(t, h, this.render, this), + Z(t, F, this.render, this), + ]), + this.render() + }), + (e.prototype.isRendered = function () { + return !!this.frameState_ + }), + (e.prototype.renderSync = function () { + this.animationDelayKey_ && + cancelAnimationFrame(this.animationDelayKey_), + this.animationDelay_() + }), + (e.prototype.redrawText = function () { + for ( + var t = this.getLayerGroup().getLayerStatesArray(), + e = 0, + r = t.length; + e < r; + ++e + ) { + var n = t[e].layer + n.hasRenderer() && n.getRenderer().handleFontsChanged() + } + }), + (e.prototype.render = function () { + this.renderer_ && + void 0 === this.animationDelayKey_ && + (this.animationDelayKey_ = requestAnimationFrame( + this.animationDelay_, + )) + }), + (e.prototype.removeControl = function (t) { + return this.getControls().remove(t) + }), + (e.prototype.removeInteraction = function (t) { + return this.getInteractions().remove(t) + }), + (e.prototype.removeLayer = function (t) { + return this.getLayerGroup().getLayers().remove(t) + }), + (e.prototype.removeOverlay = function (t) { + return this.getOverlays().remove(t) + }), + (e.prototype.renderFrame_ = function (t) { + var e = this, + r = this.getSize(), + n = this.getView(), + i = this.frameState_, + o = null + if (void 0 !== r && Ps(r) && n && n.isDef()) { + var a = n.getHints( + this.frameState_ ? this.frameState_.viewHints : void 0, + ), + s = n.getState() + o = { + animate: !1, + coordinateToPixelTransform: this.coordinateToPixelTransform_, + declutterTree: null, + extent: Se(s.center, s.resolution, s.rotation, r), + index: this.frameIndex_++, + layerIndex: 0, + layerStatesArray: this.getLayerGroup().getLayerStatesArray(), + pixelRatio: this.pixelRatio_, + pixelToCoordinateTransform: this.pixelToCoordinateTransform_, + postRenderFunctions: [], + size: r, + tileQueue: this.tileQueue_, + time: t, + usedTiles: {}, + viewState: s, + viewHints: a, + wantedTiles: {}, + } + } + if (((this.frameState_ = o), this.renderer_.renderFrame(o), o)) { + if ( + (o.animate && this.render(), + Array.prototype.push.apply( + this.postRenderFunctions_, + o.postRenderFunctions, + ), + i) + ) + (!this.previousExtent_ || + (!Ie(this.previousExtent_) && + !ue(o.extent, this.previousExtent_))) && + (this.dispatchEvent(new ja(Xa, this, i)), + (this.previousExtent_ = oe(this.previousExtent_))) + this.previousExtent_ && + !o.viewHints[ns] && + !o.viewHints[is] && + !ue(o.extent, this.previousExtent_) && + (this.dispatchEvent(new ja(Za, this, o)), + $t(o.extent, this.previousExtent_)) + } + this.dispatchEvent(new ja(qa, this, o)), + this.postRenderTimeoutHandle_ || + (this.postRenderTimeoutHandle_ = setTimeout(function () { + ;(e.postRenderTimeoutHandle_ = void 0), e.handlePostRender() + }, 0)) + }), + (e.prototype.setLayerGroup = function (t) { + this.set(Ka, t) + }), + (e.prototype.setSize = function (t) { + this.set(Ha, t) + }), + (e.prototype.setTarget = function (t) { + this.set($a, t) + }), + (e.prototype.setView = function (t) { + this.set(Ja, t) + }), + (e.prototype.updateSize = function () { + var t = this.getTargetElement() + if (t) { + var e = getComputedStyle(t) + this.setSize([ + t.offsetWidth - + parseFloat(e.borderLeftWidth) - + parseFloat(e.paddingLeft) - + parseFloat(e.paddingRight) - + parseFloat(e.borderRightWidth), + t.offsetHeight - + parseFloat(e.borderTopWidth) - + parseFloat(e.paddingTop) - + parseFloat(e.paddingBottom) - + parseFloat(e.borderBottomWidth), + ]) + } else this.setSize(void 0) + this.updateViewportSize_() + }), + (e.prototype.updateViewportSize_ = function () { + var t = this.getView() + if (t) { + var e = void 0, + r = getComputedStyle(this.viewport_) + r.width && + r.height && + (e = [parseInt(r.width, 10), parseInt(r.height, 10)]), + t.setViewportSize(e) + } + }), + e + ) + })(ot), + Fs = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + As = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e.element + return ( + !n || + e.target || + n.style.pointerEvents || + (n.style.pointerEvents = 'auto'), + (r.element = n || null), + (r.target_ = null), + (r.map_ = null), + (r.listenerKeys = []), + e.render && (r.render = e.render), + e.target && r.setTarget(e.target), + r + ) + } + return ( + Fs(e, t), + (e.prototype.disposeInternal = function () { + fo(this.element), t.prototype.disposeInternal.call(this) + }), + (e.prototype.getMap = function () { + return this.map_ + }), + (e.prototype.setMap = function (t) { + this.map_ && fo(this.element) + for (var e = 0, r = this.listenerKeys.length; e < r; ++e) + H(this.listenerKeys[e]) + ;((this.listenerKeys.length = 0), (this.map_ = t), this.map_) && + ((this.target_ + ? this.target_ + : t.getOverlayContainerStopEvent() + ).appendChild(this.element), + this.render !== T && + this.listenerKeys.push(Z(t, qa, this.render, this)), + t.render()) + }), + (e.prototype.render = function (t) {}), + (e.prototype.setTarget = function (t) { + this.target_ = + 'string' == typeof t ? document.getElementById(t) : t + }), + e + ) + })(ot), + ks = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + js = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;((r = + t.call(this, { + element: document.createElement('div'), + render: n.render, + target: n.target, + }) || this).ulElement_ = document.createElement('ul')), + (r.collapsed_ = void 0 === n.collapsed || n.collapsed), + (r.userCollapsed_ = r.collapsed_), + (r.overrideCollapsible_ = void 0 !== n.collapsible), + (r.collapsible_ = void 0 === n.collapsible || n.collapsible), + r.collapsible_ || (r.collapsed_ = !1) + var i = void 0 !== n.className ? n.className : 'ol-attribution', + o = void 0 !== n.tipLabel ? n.tipLabel : 'Attributions', + a = + void 0 !== n.expandClassName + ? n.expandClassName + : i + '-expand', + s = void 0 !== n.collapseLabel ? n.collapseLabel : '»', + l = + void 0 !== n.collapseClassName + ? n.collapseClassName + : i + '-collpase' + 'string' == typeof s + ? ((r.collapseLabel_ = document.createElement('span')), + (r.collapseLabel_.textContent = s), + (r.collapseLabel_.className = l)) + : (r.collapseLabel_ = s) + var u = void 0 !== n.label ? n.label : 'i' + 'string' == typeof u + ? ((r.label_ = document.createElement('span')), + (r.label_.textContent = u), + (r.label_.className = a)) + : (r.label_ = u) + var c = + r.collapsible_ && !r.collapsed_ ? r.collapseLabel_ : r.label_, + h = document.createElement('button') + h.setAttribute('type', 'button'), + (h.title = o), + h.appendChild(c), + h.addEventListener(N, r.handleClick_.bind(r), !1) + var p = + i + + ' ol-unselectable ol-control' + + (r.collapsed_ && r.collapsible_ ? ' ol-collapsed' : '') + + (r.collapsible_ ? '' : ' ol-uncollapsible'), + f = r.element + return ( + (f.className = p), + f.appendChild(r.ulElement_), + f.appendChild(h), + (r.renderedAttributions_ = []), + (r.renderedVisible_ = !0), + r + ) + } + return ( + ks(e, t), + (e.prototype.collectSourceAttributions_ = function (t) { + for ( + var e = {}, + r = [], + n = !0, + i = t.layerStatesArray, + o = 0, + a = i.length; + o < a; + ++o + ) { + var s = i[o] + if (ra(s, t.viewState)) { + var l = s.layer.getSource() + if (l) { + var u = l.getAttributions() + if (u) { + var c = u(t) + if (c) + if ( + ((n = n && !1 !== l.getAttributionsCollapsible()), + Array.isArray(c)) + ) + for (var h = 0, p = c.length; h < p; ++h) + c[h] in e || (r.push(c[h]), (e[c[h]] = !0)) + else c in e || (r.push(c), (e[c] = !0)) + } + } + } + } + return this.overrideCollapsible_ || this.setCollapsible(n), r + }), + (e.prototype.updateElement_ = function (t) { + if (t) { + var e = this.collectSourceAttributions_(t), + r = e.length > 0 + if ( + (this.renderedVisible_ != r && + ((this.element.style.display = r ? '' : 'none'), + (this.renderedVisible_ = r)), + !b(e, this.renderedAttributions_)) + ) { + go(this.ulElement_) + for (var n = 0, i = e.length; n < i; ++n) { + var o = document.createElement('li') + ;(o.innerHTML = e[n]), this.ulElement_.appendChild(o) + } + this.renderedAttributions_ = e + } + } else + this.renderedVisible_ && + ((this.element.style.display = 'none'), + (this.renderedVisible_ = !1)) + }), + (e.prototype.handleClick_ = function (t) { + t.preventDefault(), + this.handleToggle_(), + (this.userCollapsed_ = this.collapsed_) + }), + (e.prototype.handleToggle_ = function () { + this.element.classList.toggle('ol-collapsed'), + this.collapsed_ + ? po(this.collapseLabel_, this.label_) + : po(this.label_, this.collapseLabel_), + (this.collapsed_ = !this.collapsed_) + }), + (e.prototype.getCollapsible = function () { + return this.collapsible_ + }), + (e.prototype.setCollapsible = function (t) { + this.collapsible_ !== t && + ((this.collapsible_ = t), + this.element.classList.toggle('ol-uncollapsible'), + this.userCollapsed_ && this.handleToggle_()) + }), + (e.prototype.setCollapsed = function (t) { + ;(this.userCollapsed_ = t), + this.collapsible_ && + this.collapsed_ !== t && + this.handleToggle_() + }), + (e.prototype.getCollapsed = function () { + return this.collapsed_ + }), + (e.prototype.render = function (t) { + this.updateElement_(t.frameState) + }), + e + ) + })(As), + Ns = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Ds = (function (t) { + function e(e) { + var r = this, + n = e || {} + r = + t.call(this, { + element: document.createElement('div'), + render: n.render, + target: n.target, + }) || this + var i = void 0 !== n.className ? n.className : 'ol-rotate', + o = void 0 !== n.label ? n.label : '⇧', + a = + void 0 !== n.compassClassName + ? n.compassClassName + : 'ol-compass' + ;(r.label_ = null), + 'string' == typeof o + ? ((r.label_ = document.createElement('span')), + (r.label_.className = a), + (r.label_.textContent = o)) + : ((r.label_ = o), r.label_.classList.add(a)) + var s = n.tipLabel ? n.tipLabel : 'Reset rotation', + l = document.createElement('button') + ;(l.className = i + '-reset'), + l.setAttribute('type', 'button'), + (l.title = s), + l.appendChild(r.label_), + l.addEventListener(N, r.handleClick_.bind(r), !1) + var u = i + ' ol-unselectable ol-control', + c = r.element + return ( + (c.className = u), + c.appendChild(l), + (r.callResetNorth_ = n.resetNorth ? n.resetNorth : void 0), + (r.duration_ = void 0 !== n.duration ? n.duration : 250), + (r.autoHide_ = void 0 === n.autoHide || n.autoHide), + (r.rotation_ = void 0), + r.autoHide_ && r.element.classList.add('ol-hidden'), + r + ) + } + return ( + Ns(e, t), + (e.prototype.handleClick_ = function (t) { + t.preventDefault(), + void 0 !== this.callResetNorth_ + ? this.callResetNorth_() + : this.resetNorth_() + }), + (e.prototype.resetNorth_ = function () { + var t = this.getMap().getView() + if (t) { + var e = t.getRotation() + void 0 !== e && + (this.duration_ > 0 && e % (2 * Math.PI) != 0 + ? t.animate({ + rotation: 0, + duration: this.duration_, + easing: io, + }) + : t.setRotation(0)) + } + }), + (e.prototype.render = function (t) { + var e = t.frameState + if (e) { + var r = e.viewState.rotation + if (r != this.rotation_) { + var n = 'rotate(' + r + 'rad)' + if (this.autoHide_) { + var i = this.element.classList.contains('ol-hidden') + i || 0 !== r + ? i && + 0 !== r && + this.element.classList.remove('ol-hidden') + : this.element.classList.add('ol-hidden') + } + this.label_.style.transform = n + } + this.rotation_ = r + } + }), + e + ) + })(As), + Gs = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + zs = (function (t) { + function e(e) { + var r = this, + n = e || {} + r = + t.call(this, { + element: document.createElement('div'), + target: n.target, + }) || this + var i = void 0 !== n.className ? n.className : 'ol-zoom', + o = void 0 !== n.delta ? n.delta : 1, + a = void 0 !== n.zoomInClassName ? n.zoomInClassName : i + '-in', + s = + void 0 !== n.zoomOutClassName ? n.zoomOutClassName : i + '-out', + l = void 0 !== n.zoomInLabel ? n.zoomInLabel : '+', + u = void 0 !== n.zoomOutLabel ? n.zoomOutLabel : '−', + c = void 0 !== n.zoomInTipLabel ? n.zoomInTipLabel : 'Zoom in', + h = void 0 !== n.zoomOutTipLabel ? n.zoomOutTipLabel : 'Zoom out', + p = document.createElement('button') + ;(p.className = a), + p.setAttribute('type', 'button'), + (p.title = c), + p.appendChild( + 'string' == typeof l ? document.createTextNode(l) : l, + ), + p.addEventListener(N, r.handleClick_.bind(r, o), !1) + var f = document.createElement('button') + ;(f.className = s), + f.setAttribute('type', 'button'), + (f.title = h), + f.appendChild( + 'string' == typeof u ? document.createTextNode(u) : u, + ), + f.addEventListener(N, r.handleClick_.bind(r, -o), !1) + var d = i + ' ol-unselectable ol-control', + g = r.element + return ( + (g.className = d), + g.appendChild(p), + g.appendChild(f), + (r.duration_ = void 0 !== n.duration ? n.duration : 250), + r + ) + } + return ( + Gs(e, t), + (e.prototype.handleClick_ = function (t, e) { + e.preventDefault(), this.zoomByDelta_(t) + }), + (e.prototype.zoomByDelta_ = function (t) { + var e = this.getMap().getView() + if (e) { + var r = e.getZoom() + if (void 0 !== r) { + var n = e.getConstrainedZoom(r + t) + this.duration_ > 0 + ? (e.getAnimating() && e.cancelAnimations(), + e.animate({ + zoom: n, + duration: this.duration_, + easing: io, + })) + : e.setZoom(n) + } + } + }), + e + ) + })(As) + function Us(t) { + var e = t || {}, + r = new ht() + return ( + (void 0 === e.zoom || e.zoom) && r.push(new zs(e.zoomOptions)), + (void 0 === e.rotate || e.rotate) && r.push(new Ds(e.rotateOptions)), + (void 0 === e.attribution || e.attribution) && + r.push(new js(e.attributionOptions)), + r + ) + } + var Bs = 'active', + Vs = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Ys(t, e, r) { + var n = t.getCenterInternal() + if (n) { + var i = [n[0] + e[0], n[1] + e[1]] + t.animateInternal({ + duration: void 0 !== r ? r : 250, + easing: ao, + center: t.getConstrainedCenter(i), + }) + } + } + function Ws(t, e, r, n) { + var i = t.getZoom() + if (void 0 !== i) { + var o = t.getConstrainedZoom(i + e), + a = t.getResolutionForZoom(o) + t.getAnimating() && t.cancelAnimations(), + t.animate({ + resolution: a, + anchor: r, + duration: void 0 !== n ? n : 250, + easing: io, + }) + } + } + var qs = (function (t) { + function e(e) { + var r = t.call(this) || this + return ( + e && e.handleEvent && (r.handleEvent = e.handleEvent), + (r.map_ = null), + r.setActive(!0), + r + ) + } + return ( + Vs(e, t), + (e.prototype.getActive = function () { + return this.get(Bs) + }), + (e.prototype.getMap = function () { + return this.map_ + }), + (e.prototype.handleEvent = function (t) { + return !0 + }), + (e.prototype.setActive = function (t) { + this.set(Bs, t) + }), + (e.prototype.setMap = function (t) { + this.map_ = t + }), + e + ) + })(ot), + Xs = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Zs = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.delta_ = n.delta ? n.delta : 1), + (r.duration_ = void 0 !== n.duration ? n.duration : 250), + r + ) + } + return ( + Xs(e, t), + (e.prototype.handleEvent = function (t) { + var e = !1 + if (t.type == Ga.DBLCLICK) { + var r = t.originalEvent, + n = t.map, + i = t.coordinate, + o = r.shiftKey ? -this.delta_ : this.delta_ + Ws(n.getView(), o, i, this.duration_), + r.preventDefault(), + (e = !0) + } + return !e + }), + e + ) + })(qs), + Ks = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Hs(t) { + for (var e = t.length, r = 0, n = 0, i = 0; i < e; i++) + (r += t[i].clientX), (n += t[i].clientY) + return [r / e, n / e] + } + var $s = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + (r = t.call(this, n) || this), + n.handleDownEvent && (r.handleDownEvent = n.handleDownEvent), + n.handleDragEvent && (r.handleDragEvent = n.handleDragEvent), + n.handleMoveEvent && (r.handleMoveEvent = n.handleMoveEvent), + n.handleUpEvent && (r.handleUpEvent = n.handleUpEvent), + n.stopDown && (r.stopDown = n.stopDown), + (r.handlingDownUpSequence = !1), + (r.trackedPointers_ = {}), + (r.targetPointers = []), + r + ) + } + return ( + Ks(e, t), + (e.prototype.getPointerCount = function () { + return this.targetPointers.length + }), + (e.prototype.handleDownEvent = function (t) { + return !1 + }), + (e.prototype.handleDragEvent = function (t) {}), + (e.prototype.handleEvent = function (t) { + if (!t.originalEvent) return !0 + var e = !1 + if ((this.updateTrackedPointers_(t), this.handlingDownUpSequence)) { + if (t.type == Ga.POINTERDRAG) + this.handleDragEvent(t), t.originalEvent.preventDefault() + else if (t.type == Ga.POINTERUP) { + var r = this.handleUpEvent(t) + this.handlingDownUpSequence = + r && this.targetPointers.length > 0 + } + } else if (t.type == Ga.POINTERDOWN) { + var n = this.handleDownEvent(t) + ;(this.handlingDownUpSequence = n), (e = this.stopDown(n)) + } else t.type == Ga.POINTERMOVE && this.handleMoveEvent(t) + return !e + }), + (e.prototype.handleMoveEvent = function (t) {}), + (e.prototype.handleUpEvent = function (t) { + return !1 + }), + (e.prototype.stopDown = function (t) { + return t + }), + (e.prototype.updateTrackedPointers_ = function (t) { + if ( + (function (t) { + var e = t.type + return ( + e === Ga.POINTERDOWN || + e === Ga.POINTERDRAG || + e === Ga.POINTERUP + ) + })(t) + ) { + var e = t.originalEvent, + r = e.pointerId.toString() + t.type == Ga.POINTERUP + ? delete this.trackedPointers_[r] + : (t.type == Ga.POINTERDOWN || r in this.trackedPointers_) && + (this.trackedPointers_[r] = e), + (this.targetPointers = R(this.trackedPointers_)) + } + }), + e + ) + })(qs) + function Js(t) { + var e = arguments + return function (t) { + for ( + var r = !0, n = 0, i = e.length; + n < i && (r = r && e[n](t)); + ++n + ); + return r + } + } + var Qs = function (t) { + var e = t.originalEvent + return e.altKey && !(e.metaKey || e.ctrlKey) && !e.shiftKey + }, + tl = function (t) { + var e = t.originalEvent + return e.altKey && !(e.metaKey || e.ctrlKey) && e.shiftKey + }, + el = function (t) { + return t.target.getTargetElement().contains(document.activeElement) + }, + rl = function (t) { + return !t.map.getTargetElement().hasAttribute('tabindex') || el(t) + }, + nl = S, + il = function (t) { + var e = t.originalEvent + return 0 == e.button && !(Ui && Bi && e.ctrlKey) + }, + ol = E, + al = function (t) { + return t.type == Ga.SINGLECLICK + }, + sl = function (t) { + var e = t.originalEvent + return !e.altKey && !(e.metaKey || e.ctrlKey) && !e.shiftKey + }, + ll = function (t) { + var e = t.originalEvent + return !e.altKey && !(e.metaKey || e.ctrlKey) && e.shiftKey + }, + ul = function (t) { + var e = t.originalEvent.target.tagName + return 'INPUT' !== e && 'SELECT' !== e && 'TEXTAREA' !== e + }, + cl = function (t) { + var e = t.originalEvent + return pt(void 0 !== e, 56), 'mouse' == e.pointerType + }, + hl = function (t) { + var e = t.originalEvent + return pt(void 0 !== e, 56), e.isPrimary && 0 === e.button + }, + pl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + fl = (function (t) { + function e(e) { + var r = t.call(this, { stopDown: E }) || this, + n = e || {} + ;(r.kinetic_ = n.kinetic), + (r.lastCentroid = null), + r.lastPointersCount_, + (r.panning_ = !1) + var i = n.condition ? n.condition : Js(sl, hl) + return ( + (r.condition_ = n.onFocusOnly ? Js(rl, i) : i), + (r.noKinetic_ = !1), + r + ) + } + return ( + pl(e, t), + (e.prototype.handleDragEvent = function (t) { + this.panning_ || + ((this.panning_ = !0), + this.getMap().getView().beginInteraction()) + var e = this.targetPointers, + r = Hs(e) + if (e.length == this.lastPointersCount_) { + if ( + (this.kinetic_ && this.kinetic_.update(r[0], r[1]), + this.lastCentroid) + ) { + var n = [ + this.lastCentroid[0] - r[0], + r[1] - this.lastCentroid[1], + ], + i = t.map.getView() + Pr(n, i.getResolution()), + Or(n, i.getRotation()), + i.adjustCenterInternal(n) + } + } else this.kinetic_ && this.kinetic_.begin() + ;(this.lastCentroid = r), + (this.lastPointersCount_ = e.length), + t.originalEvent.preventDefault() + }), + (e.prototype.handleUpEvent = function (t) { + var e = t.map, + r = e.getView() + if (0 === this.targetPointers.length) { + if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) { + var n = this.kinetic_.getDistance(), + i = this.kinetic_.getAngle(), + o = r.getCenterInternal(), + a = e.getPixelFromCoordinateInternal(o), + s = e.getCoordinateFromPixelInternal([ + a[0] - n * Math.cos(i), + a[1] - n * Math.sin(i), + ]) + r.animateInternal({ + center: r.getConstrainedCenter(s), + duration: 500, + easing: io, + }) + } + return ( + this.panning_ && ((this.panning_ = !1), r.endInteraction()), + !1 + ) + } + return ( + this.kinetic_ && this.kinetic_.begin(), + (this.lastCentroid = null), + !0 + ) + }), + (e.prototype.handleDownEvent = function (t) { + if (this.targetPointers.length > 0 && this.condition_(t)) { + var e = t.map.getView() + return ( + (this.lastCentroid = null), + e.getAnimating() && e.cancelAnimations(), + this.kinetic_ && this.kinetic_.begin(), + (this.noKinetic_ = this.targetPointers.length > 1), + !0 + ) + } + return !1 + }), + e + ) + })($s), + dl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + gl = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = t.call(this, { stopDown: E }) || this).condition_ = + n.condition ? n.condition : tl), + (r.lastAngle_ = void 0), + (r.duration_ = void 0 !== n.duration ? n.duration : 250), + r + ) + } + return ( + dl(e, t), + (e.prototype.handleDragEvent = function (t) { + if (cl(t)) { + var e = t.map, + r = e.getView() + if (r.getConstraints().rotation !== gs) { + var n = e.getSize(), + i = t.pixel, + o = Math.atan2(n[1] / 2 - i[1], i[0] - n[0] / 2) + if (void 0 !== this.lastAngle_) { + var a = o - this.lastAngle_ + r.adjustRotationInternal(-a) + } + this.lastAngle_ = o + } + } + }), + (e.prototype.handleUpEvent = function (t) { + return ( + !cl(t) || (t.map.getView().endInteraction(this.duration_), !1) + ) + }), + (e.prototype.handleDownEvent = function (t) { + return ( + !!cl(t) && + !(!il(t) || !this.condition_(t)) && + (t.map.getView().beginInteraction(), + (this.lastAngle_ = void 0), + !0) + ) + }), + e + ) + })($s), + yl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ml = (function (t) { + function e(e) { + var r = t.call(this) || this + return ( + (r.geometry_ = null), + (r.element_ = document.createElement('div')), + (r.element_.style.position = 'absolute'), + (r.element_.style.pointerEvents = 'auto'), + (r.element_.className = 'ol-box ' + e), + (r.map_ = null), + (r.startPixel_ = null), + (r.endPixel_ = null), + r + ) + } + return ( + yl(e, t), + (e.prototype.disposeInternal = function () { + this.setMap(null) + }), + (e.prototype.render_ = function () { + var t = this.startPixel_, + e = this.endPixel_, + r = this.element_.style + ;(r.left = Math.min(t[0], e[0]) + 'px'), + (r.top = Math.min(t[1], e[1]) + 'px'), + (r.width = Math.abs(e[0] - t[0]) + 'px'), + (r.height = Math.abs(e[1] - t[1]) + 'px') + }), + (e.prototype.setMap = function (t) { + if (this.map_) { + this.map_.getOverlayContainer().removeChild(this.element_) + var e = this.element_.style + ;(e.left = 'inherit'), + (e.top = 'inherit'), + (e.width = 'inherit'), + (e.height = 'inherit') + } + ;(this.map_ = t), + this.map_ && + this.map_.getOverlayContainer().appendChild(this.element_) + }), + (e.prototype.setPixels = function (t, e) { + ;(this.startPixel_ = t), + (this.endPixel_ = e), + this.createOrUpdateGeometry(), + this.render_() + }), + (e.prototype.createOrUpdateGeometry = function () { + var t = this.startPixel_, + e = this.endPixel_, + r = [t, [t[0], e[1]], e, [e[0], t[1]]].map( + this.map_.getCoordinateFromPixelInternal, + this.map_, + ) + ;(r[4] = r[0].slice()), + this.geometry_ + ? this.geometry_.setCoordinates([r]) + : (this.geometry_ = new fi([r])) + }), + (e.prototype.getGeometry = function () { + return this.geometry_ + }), + e + ) + })(p), + vl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + _l = 'boxstart', + bl = 'boxdrag', + xl = 'boxend', + wl = 'boxcancel', + Sl = (function (t) { + function e(e, r, n) { + var i = t.call(this, e) || this + return (i.coordinate = r), (i.mapBrowserEvent = n), i + } + return vl(e, t), e + })(c), + El = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.box_ = new ml(n.className || 'ol-dragbox')), + (r.minArea_ = void 0 !== n.minArea ? n.minArea : 64), + n.onBoxEnd && (r.onBoxEnd = n.onBoxEnd), + (r.startPixel_ = null), + (r.condition_ = n.condition ? n.condition : il), + (r.boxEndCondition_ = n.boxEndCondition + ? n.boxEndCondition + : r.defaultBoxEndCondition), + r + ) + } + return ( + vl(e, t), + (e.prototype.defaultBoxEndCondition = function (t, e, r) { + var n = r[0] - e[0], + i = r[1] - e[1] + return n * n + i * i >= this.minArea_ + }), + (e.prototype.getGeometry = function () { + return this.box_.getGeometry() + }), + (e.prototype.handleDragEvent = function (t) { + this.box_.setPixels(this.startPixel_, t.pixel), + this.dispatchEvent(new Sl(bl, t.coordinate, t)) + }), + (e.prototype.handleUpEvent = function (t) { + this.box_.setMap(null) + var e = this.boxEndCondition_(t, this.startPixel_, t.pixel) + return ( + e && this.onBoxEnd(t), + this.dispatchEvent(new Sl(e ? xl : wl, t.coordinate, t)), + !1 + ) + }), + (e.prototype.handleDownEvent = function (t) { + return ( + !!this.condition_(t) && + ((this.startPixel_ = t.pixel), + this.box_.setMap(t.map), + this.box_.setPixels(this.startPixel_, this.startPixel_), + this.dispatchEvent(new Sl(_l, t.coordinate, t)), + !0) + ) + }), + (e.prototype.onBoxEnd = function (t) {}), + e + ) + })($s), + Tl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Cl = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = n.condition ? n.condition : ll + return ( + ((r = + t.call(this, { + condition: i, + className: n.className || 'ol-dragzoom', + minArea: n.minArea, + }) || this).duration_ = + void 0 !== n.duration ? n.duration : 200), + (r.out_ = void 0 !== n.out && n.out), + r + ) + } + return ( + Tl(e, t), + (e.prototype.onBoxEnd = function (t) { + var e = this.getMap(), + r = e.getView(), + n = e.getSize(), + i = this.getGeometry().getExtent() + if (this.out_) { + var o = r.calculateExtentInternal(n), + a = se([ + e.getPixelFromCoordinateInternal(_e(i)), + e.getPixelFromCoordinateInternal(Oe(i)), + ]) + Me(o, 1 / r.getResolutionForExtentInternal(a, n)), (i = o) + } + var s = r.getConstrainedResolution( + r.getResolutionForExtentInternal(i, n), + ), + l = r.getConstrainedCenter(xe(i), s) + r.animateInternal({ + resolution: s, + center: l, + duration: this.duration_, + easing: io, + }) + }), + e + ) + })(El), + Ol = 37, + Pl = 38, + Rl = 39, + Il = 40, + Ll = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Ml = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.defaultCondition_ = function (t) { + return sl(t) && ul(t) + }), + (r.condition_ = + void 0 !== n.condition ? n.condition : r.defaultCondition_), + (r.duration_ = void 0 !== n.duration ? n.duration : 100), + (r.pixelDelta_ = void 0 !== n.pixelDelta ? n.pixelDelta : 128), + r + ) + } + return ( + Ll(e, t), + (e.prototype.handleEvent = function (t) { + var e = !1 + if (t.type == B) { + var r = t.originalEvent, + n = r.keyCode + if ( + this.condition_(t) && + (n == Il || n == Ol || n == Rl || n == Pl) + ) { + var i = t.map.getView(), + o = i.getResolution() * this.pixelDelta_, + a = 0, + s = 0 + n == Il + ? (s = -o) + : n == Ol + ? (a = -o) + : n == Rl + ? (a = o) + : (s = o) + var l = [a, s] + Or(l, i.getRotation()), + Ys(i, l, this.duration_), + r.preventDefault(), + (e = !0) + } + } + return !e + }), + e + ) + })(qs), + Fl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Al = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.condition_ = n.condition ? n.condition : ul), + (r.delta_ = n.delta ? n.delta : 1), + (r.duration_ = void 0 !== n.duration ? n.duration : 100), + r + ) + } + return ( + Fl(e, t), + (e.prototype.handleEvent = function (t) { + var e = !1 + if (t.type == B || t.type == V) { + var r = t.originalEvent, + n = r.charCode + if ( + this.condition_(t) && + (n == '+'.charCodeAt(0) || n == '-'.charCodeAt(0)) + ) { + var i = t.map, + o = n == '+'.charCodeAt(0) ? this.delta_ : -this.delta_ + Ws(i.getView(), o, void 0, this.duration_), + r.preventDefault(), + (e = !0) + } + } + return !e + }), + e + ) + })(qs), + kl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + jl = 'trackpad', + Nl = 'wheel', + Dl = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;((r = t.call(this, n) || this).totalDelta_ = 0), + (r.lastDelta_ = 0), + (r.maxDelta_ = void 0 !== n.maxDelta ? n.maxDelta : 1), + (r.duration_ = void 0 !== n.duration ? n.duration : 250), + (r.timeout_ = void 0 !== n.timeout ? n.timeout : 80), + (r.useAnchor_ = void 0 === n.useAnchor || n.useAnchor), + (r.constrainResolution_ = + void 0 !== n.constrainResolution && n.constrainResolution) + var i = n.condition ? n.condition : nl + return ( + (r.condition_ = n.onFocusOnly ? Js(rl, i) : i), + (r.lastAnchor_ = null), + (r.startTime_ = void 0), + r.timeoutId_, + (r.mode_ = void 0), + (r.trackpadEventGap_ = 400), + r.trackpadTimeoutId_, + (r.deltaPerZoom_ = 300), + r + ) + } + return ( + kl(e, t), + (e.prototype.endInteraction_ = function () { + ;(this.trackpadTimeoutId_ = void 0), + this.getMap() + .getView() + .endInteraction( + void 0, + this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0, + this.lastAnchor_, + ) + }), + (e.prototype.handleEvent = function (t) { + if (!this.condition_(t)) return !0 + if (t.type !== X) return !0 + var e, + r = t.map, + n = t.originalEvent + if ( + (n.preventDefault(), + this.useAnchor_ && (this.lastAnchor_ = t.coordinate), + t.type == X && + ((e = n.deltaY), + Gi && n.deltaMode === WheelEvent.DOM_DELTA_PIXEL && (e /= Vi), + n.deltaMode === WheelEvent.DOM_DELTA_LINE && (e *= 40)), + 0 === e) + ) + return !1 + this.lastDelta_ = e + var i = Date.now() + void 0 === this.startTime_ && (this.startTime_ = i), + (!this.mode_ || i - this.startTime_ > this.trackpadEventGap_) && + (this.mode_ = Math.abs(e) < 4 ? jl : Nl) + var o = r.getView() + if ( + this.mode_ === jl && + !o.getConstrainResolution() && + !this.constrainResolution_ + ) + return ( + this.trackpadTimeoutId_ + ? clearTimeout(this.trackpadTimeoutId_) + : (o.getAnimating() && o.cancelAnimations(), + o.beginInteraction()), + (this.trackpadTimeoutId_ = setTimeout( + this.endInteraction_.bind(this), + this.timeout_, + )), + o.adjustZoom(-e / this.deltaPerZoom_, this.lastAnchor_), + (this.startTime_ = i), + !1 + ) + this.totalDelta_ += e + var a = Math.max(this.timeout_ - (i - this.startTime_), 0) + return ( + clearTimeout(this.timeoutId_), + (this.timeoutId_ = setTimeout( + this.handleWheelZoom_.bind(this, r), + a, + )), + !1 + ) + }), + (e.prototype.handleWheelZoom_ = function (t) { + var e = t.getView() + e.getAnimating() && e.cancelAnimations() + var r = + -Ne( + this.totalDelta_, + -this.maxDelta_ * this.deltaPerZoom_, + this.maxDelta_ * this.deltaPerZoom_, + ) / this.deltaPerZoom_ + ;(e.getConstrainResolution() || this.constrainResolution_) && + (r = r ? (r > 0 ? 1 : -1) : 0), + Ws(e, r, this.lastAnchor_, this.duration_), + (this.mode_ = void 0), + (this.totalDelta_ = 0), + (this.lastAnchor_ = null), + (this.startTime_ = void 0), + (this.timeoutId_ = void 0) + }), + (e.prototype.setMouseAnchor = function (t) { + ;(this.useAnchor_ = t), t || (this.lastAnchor_ = null) + }), + e + ) + })(qs), + Gl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + zl = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = n + return ( + i.stopDown || (i.stopDown = E), + ((r = t.call(this, i) || this).anchor_ = null), + (r.lastAngle_ = void 0), + (r.rotating_ = !1), + (r.rotationDelta_ = 0), + (r.threshold_ = void 0 !== n.threshold ? n.threshold : 0.3), + (r.duration_ = void 0 !== n.duration ? n.duration : 250), + r + ) + } + return ( + Gl(e, t), + (e.prototype.handleDragEvent = function (t) { + var e = 0, + r = this.targetPointers[0], + n = this.targetPointers[1], + i = Math.atan2(n.clientY - r.clientY, n.clientX - r.clientX) + if (void 0 !== this.lastAngle_) { + var o = i - this.lastAngle_ + ;(this.rotationDelta_ += o), + !this.rotating_ && + Math.abs(this.rotationDelta_) > this.threshold_ && + (this.rotating_ = !0), + (e = o) + } + this.lastAngle_ = i + var a = t.map, + s = a.getView() + if (s.getConstraints().rotation !== gs) { + var l = a.getViewport().getBoundingClientRect(), + u = Hs(this.targetPointers) + ;(u[0] -= l.left), + (u[1] -= l.top), + (this.anchor_ = a.getCoordinateFromPixelInternal(u)), + this.rotating_ && + (a.render(), s.adjustRotationInternal(e, this.anchor_)) + } + }), + (e.prototype.handleUpEvent = function (t) { + return ( + !(this.targetPointers.length < 2) || + (t.map.getView().endInteraction(this.duration_), !1) + ) + }), + (e.prototype.handleDownEvent = function (t) { + if (this.targetPointers.length >= 2) { + var e = t.map + return ( + (this.anchor_ = null), + (this.lastAngle_ = void 0), + (this.rotating_ = !1), + (this.rotationDelta_ = 0), + this.handlingDownUpSequence || e.getView().beginInteraction(), + !0 + ) + } + return !1 + }), + e + ) + })($s), + Ul = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Bl = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = n + return ( + i.stopDown || (i.stopDown = E), + ((r = t.call(this, i) || this).anchor_ = null), + (r.duration_ = void 0 !== n.duration ? n.duration : 400), + (r.lastDistance_ = void 0), + (r.lastScaleDelta_ = 1), + r + ) + } + return ( + Ul(e, t), + (e.prototype.handleDragEvent = function (t) { + var e = 1, + r = this.targetPointers[0], + n = this.targetPointers[1], + i = r.clientX - n.clientX, + o = r.clientY - n.clientY, + a = Math.sqrt(i * i + o * o) + void 0 !== this.lastDistance_ && (e = this.lastDistance_ / a), + (this.lastDistance_ = a) + var s = t.map, + l = s.getView() + 1 != e && (this.lastScaleDelta_ = e) + var u = s.getViewport().getBoundingClientRect(), + c = Hs(this.targetPointers) + ;(c[0] -= u.left), + (c[1] -= u.top), + (this.anchor_ = s.getCoordinateFromPixelInternal(c)), + s.render(), + l.adjustResolutionInternal(e, this.anchor_) + }), + (e.prototype.handleUpEvent = function (t) { + if (this.targetPointers.length < 2) { + var e = t.map.getView(), + r = this.lastScaleDelta_ > 1 ? 1 : -1 + return e.endInteraction(this.duration_, r), !1 + } + return !0 + }), + (e.prototype.handleDownEvent = function (t) { + if (this.targetPointers.length >= 2) { + var e = t.map + return ( + (this.anchor_ = null), + (this.lastDistance_ = void 0), + (this.lastScaleDelta_ = 1), + this.handlingDownUpSequence || e.getView().beginInteraction(), + !0 + ) + } + return !1 + }), + e + ) + })($s) + function Vl(t) { + var e = t || {}, + r = new ht(), + n = new _o(-0.005, 0.05, 100) + return ( + (void 0 === e.altShiftDragRotate || e.altShiftDragRotate) && + r.push(new gl()), + (void 0 === e.doubleClickZoom || e.doubleClickZoom) && + r.push(new Zs({ delta: e.zoomDelta, duration: e.zoomDuration })), + (void 0 === e.dragPan || e.dragPan) && + r.push(new fl({ onFocusOnly: e.onFocusOnly, kinetic: n })), + (void 0 === e.pinchRotate || e.pinchRotate) && r.push(new zl()), + (void 0 === e.pinchZoom || e.pinchZoom) && + r.push(new Bl({ duration: e.zoomDuration })), + (void 0 === e.keyboard || e.keyboard) && + (r.push(new Ml()), + r.push(new Al({ delta: e.zoomDelta, duration: e.zoomDuration }))), + (void 0 === e.mouseWheelZoom || e.mouseWheelZoom) && + r.push( + new Dl({ onFocusOnly: e.onFocusOnly, duration: e.zoomDuration }), + ), + (void 0 === e.shiftDragZoom || e.shiftDragZoom) && + r.push(new Cl({ duration: e.zoomDuration })), + r + ) + } + var Yl = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Wl = (function (t) { + function e(e) { + return ( + (e = O({}, e)).controls || (e.controls = Us()), + e.interactions || (e.interactions = Vl({ onFocusOnly: !0 })), + t.call(this, e) || this + ) + } + return ( + Yl(e, t), + (e.prototype.createRenderer = function () { + return new La(this) + }), + e + ) + })(Ms), + ql = 'bottom-left', + Xl = 'bottom-center', + Zl = 'bottom-right', + Kl = 'center-left', + Hl = 'center-center', + $l = 'center-right', + Jl = 'top-left', + Ql = 'top-center', + tu = 'top-right', + eu = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ru = 'element', + nu = 'map', + iu = 'offset', + ou = 'position', + au = 'positioning', + su = (function (t) { + function e(e) { + var r = t.call(this) || this + ;(r.options = e), + (r.id = e.id), + (r.insertFirst = void 0 === e.insertFirst || e.insertFirst), + (r.stopEvent = void 0 === e.stopEvent || e.stopEvent), + (r.element = document.createElement('div')), + (r.element.className = + void 0 !== e.className + ? e.className + : 'ol-overlay-container ol-selectable'), + (r.element.style.position = 'absolute'), + (r.element.style.pointerEvents = 'auto') + var n = e.autoPan + return ( + n && + 'object' != typeof n && + (n = { + animation: e.autoPanAnimation, + margin: e.autoPanMargin, + }), + (r.autoPan = n || !1), + (r.rendered = { transform_: '', visible: !0 }), + (r.mapPostrenderListenerKey = null), + r.addEventListener(it(ru), r.handleElementChanged), + r.addEventListener(it(nu), r.handleMapChanged), + r.addEventListener(it(iu), r.handleOffsetChanged), + r.addEventListener(it(ou), r.handlePositionChanged), + r.addEventListener(it(au), r.handlePositioningChanged), + void 0 !== e.element && r.setElement(e.element), + r.setOffset(void 0 !== e.offset ? e.offset : [0, 0]), + r.setPositioning(void 0 !== e.positioning ? e.positioning : Jl), + void 0 !== e.position && r.setPosition(e.position), + r + ) + } + return ( + eu(e, t), + (e.prototype.getElement = function () { + return this.get(ru) + }), + (e.prototype.getId = function () { + return this.id + }), + (e.prototype.getMap = function () { + return this.get(nu) + }), + (e.prototype.getOffset = function () { + return this.get(iu) + }), + (e.prototype.getPosition = function () { + return this.get(ou) + }), + (e.prototype.getPositioning = function () { + return this.get(au) + }), + (e.prototype.handleElementChanged = function () { + go(this.element) + var t = this.getElement() + t && this.element.appendChild(t) + }), + (e.prototype.handleMapChanged = function () { + this.mapPostrenderListenerKey && + (fo(this.element), + H(this.mapPostrenderListenerKey), + (this.mapPostrenderListenerKey = null)) + var t = this.getMap() + if (t) { + ;(this.mapPostrenderListenerKey = Z(t, qa, this.render, this)), + this.updatePixelPosition() + var e = this.stopEvent + ? t.getOverlayContainerStopEvent() + : t.getOverlayContainer() + this.insertFirst + ? e.insertBefore(this.element, e.childNodes[0] || null) + : e.appendChild(this.element), + this.performAutoPan() + } + }), + (e.prototype.render = function () { + this.updatePixelPosition() + }), + (e.prototype.handleOffsetChanged = function () { + this.updatePixelPosition() + }), + (e.prototype.handlePositionChanged = function () { + this.updatePixelPosition(), this.performAutoPan() + }), + (e.prototype.handlePositioningChanged = function () { + this.updatePixelPosition() + }), + (e.prototype.setElement = function (t) { + this.set(ru, t) + }), + (e.prototype.setMap = function (t) { + this.set(nu, t) + }), + (e.prototype.setOffset = function (t) { + this.set(iu, t) + }), + (e.prototype.setPosition = function (t) { + this.set(ou, t) + }), + (e.prototype.performAutoPan = function () { + this.autoPan && this.panIntoView(this.autoPan) + }), + (e.prototype.panIntoView = function (t) { + var e = this.getMap() + if (e && e.getTargetElement() && this.get(ou)) { + var r = this.getRect(e.getTargetElement(), e.getSize()), + n = this.getElement(), + i = this.getRect(n, [co(n), ho(n)]), + o = t || {}, + a = void 0 === o.margin ? 20 : o.margin + if (!te(r, i)) { + var s = i[0] - r[0], + l = r[2] - i[2], + u = i[1] - r[1], + c = r[3] - i[3], + h = [0, 0] + if ( + (s < 0 ? (h[0] = s - a) : l < 0 && (h[0] = Math.abs(l) + a), + u < 0 ? (h[1] = u - a) : c < 0 && (h[1] = Math.abs(c) + a), + 0 !== h[0] || 0 !== h[1]) + ) { + var p = e.getView().getCenterInternal(), + f = e.getPixelFromCoordinateInternal(p) + if (!f) return + var d = [f[0] + h[0], f[1] + h[1]], + g = o.animation || {} + e.getView().animateInternal({ + center: e.getCoordinateFromPixelInternal(d), + duration: g.duration, + easing: g.easing, + }) + } + } + } + }), + (e.prototype.getRect = function (t, e) { + var r = t.getBoundingClientRect(), + n = r.left + window.pageXOffset, + i = r.top + window.pageYOffset + return [n, i, n + e[0], i + e[1]] + }), + (e.prototype.setPositioning = function (t) { + this.set(au, t) + }), + (e.prototype.setVisible = function (t) { + this.rendered.visible !== t && + ((this.element.style.display = t ? '' : 'none'), + (this.rendered.visible = t)) + }), + (e.prototype.updatePixelPosition = function () { + var t = this.getMap(), + e = this.getPosition() + if (t && t.isRendered() && e) { + var r = t.getPixelFromCoordinate(e), + n = t.getSize() + this.updateRenderedPosition(r, n) + } else this.setVisible(!1) + }), + (e.prototype.updateRenderedPosition = function (t, e) { + var r = this.element.style, + n = this.getOffset(), + i = this.getPositioning() + this.setVisible(!0) + var o = Math.round(t[0] + n[0]) + 'px', + a = Math.round(t[1] + n[1]) + 'px', + s = '0%', + l = '0%' + i == Zl || i == $l || i == tu + ? (s = '-100%') + : (i != Xl && i != Hl && i != Ql) || (s = '-50%'), + i == ql || i == Xl || i == Zl + ? (l = '-100%') + : (i != Kl && i != Hl && i != $l) || (l = '-50%') + var u = + 'translate(' + + s + + ', ' + + l + + ') translate(' + + o + + ', ' + + a + + ')' + this.rendered.transform_ != u && + ((this.rendered.transform_ = u), + (r.transform = u), + (r.msTransform = u)) + }), + (e.prototype.getOptions = function () { + return this.options + }), + e + ) + })(ot), + lu = (function () { + function t(t) { + ;(this.highWaterMark = void 0 !== t ? t : 2048), + (this.count_ = 0), + (this.entries_ = {}), + (this.oldest_ = null), + (this.newest_ = null) + } + return ( + (t.prototype.canExpireCache = function () { + return ( + this.highWaterMark > 0 && this.getCount() > this.highWaterMark + ) + }), + (t.prototype.clear = function () { + ;(this.count_ = 0), + (this.entries_ = {}), + (this.oldest_ = null), + (this.newest_ = null) + }), + (t.prototype.containsKey = function (t) { + return this.entries_.hasOwnProperty(t) + }), + (t.prototype.forEach = function (t) { + for (var e = this.oldest_; e; ) + t(e.value_, e.key_, this), (e = e.newer) + }), + (t.prototype.get = function (t, e) { + var r = this.entries_[t] + return ( + pt(void 0 !== r, 15), + r === this.newest_ || + (r === this.oldest_ + ? ((this.oldest_ = this.oldest_.newer), + (this.oldest_.older = null)) + : ((r.newer.older = r.older), (r.older.newer = r.newer)), + (r.newer = null), + (r.older = this.newest_), + (this.newest_.newer = r), + (this.newest_ = r)), + r.value_ + ) + }), + (t.prototype.remove = function (t) { + var e = this.entries_[t] + return ( + pt(void 0 !== e, 15), + e === this.newest_ + ? ((this.newest_ = e.older), + this.newest_ && (this.newest_.newer = null)) + : e === this.oldest_ + ? ((this.oldest_ = e.newer), + this.oldest_ && (this.oldest_.older = null)) + : ((e.newer.older = e.older), (e.older.newer = e.newer)), + delete this.entries_[t], + --this.count_, + e.value_ + ) + }), + (t.prototype.getCount = function () { + return this.count_ + }), + (t.prototype.getKeys = function () { + var t, + e = new Array(this.count_), + r = 0 + for (t = this.newest_; t; t = t.older) e[r++] = t.key_ + return e + }), + (t.prototype.getValues = function () { + var t, + e = new Array(this.count_), + r = 0 + for (t = this.newest_; t; t = t.older) e[r++] = t.value_ + return e + }), + (t.prototype.peekLast = function () { + return this.oldest_.value_ + }), + (t.prototype.peekLastKey = function () { + return this.oldest_.key_ + }), + (t.prototype.peekFirstKey = function () { + return this.newest_.key_ + }), + (t.prototype.pop = function () { + var t = this.oldest_ + return ( + delete this.entries_[t.key_], + t.newer && (t.newer.older = null), + (this.oldest_ = t.newer), + this.oldest_ || (this.newest_ = null), + --this.count_, + t.value_ + ) + }), + (t.prototype.replace = function (t, e) { + this.get(t), (this.entries_[t].value_ = e) + }), + (t.prototype.set = function (t, e) { + pt(!(t in this.entries_), 16) + var r = { key_: t, newer: null, older: this.newest_, value_: e } + this.newest_ ? (this.newest_.newer = r) : (this.oldest_ = r), + (this.newest_ = r), + (this.entries_[t] = r), + ++this.count_ + }), + (t.prototype.setSize = function (t) { + this.highWaterMark = t + }), + t + ) + })() + function uu(t, e, r, n) { + return void 0 !== n + ? ((n[0] = t), (n[1] = e), (n[2] = r), n) + : [t, e, r] + } + function cu(t, e, r) { + return t + '/' + e + '/' + r + } + function hu(t) { + return cu(t[0], t[1], t[2]) + } + function pu(t) { + return t.split('/').map(Number) + } + function fu(t) { + return (t[1] << t[0]) + t[2] + } + function du(t, e) { + var r = t[0], + n = t[1], + i = t[2] + if (e.getMinZoom() > r || r > e.getMaxZoom()) return !1 + var o = e.getFullTileRange(r) + return !o || o.containsXY(n, i) + } + var gu = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + yu = (function (t) { + function e() { + return (null !== t && t.apply(this, arguments)) || this + } + return ( + gu(e, t), + (e.prototype.expireCache = function (t) { + for (; this.canExpireCache(); ) { + if (this.peekLast().getKey() in t) break + this.pop().release() + } + }), + (e.prototype.pruneExceptNewestZ = function () { + if (0 !== this.getCount()) { + var t = pu(this.peekFirstKey())[0] + this.forEach( + function (e) { + e.tileCoord[0] !== t && + (this.remove(hu(e.tileCoord)), e.release()) + }.bind(this), + ) + } + }), + e + ) + })(lu), + mu = (function () { + function t(t, e, r, n) { + ;(this.minX = t), (this.maxX = e), (this.minY = r), (this.maxY = n) + } + return ( + (t.prototype.contains = function (t) { + return this.containsXY(t[1], t[2]) + }), + (t.prototype.containsTileRange = function (t) { + return ( + this.minX <= t.minX && + t.maxX <= this.maxX && + this.minY <= t.minY && + t.maxY <= this.maxY + ) + }), + (t.prototype.containsXY = function (t, e) { + return ( + this.minX <= t && + t <= this.maxX && + this.minY <= e && + e <= this.maxY + ) + }), + (t.prototype.equals = function (t) { + return ( + this.minX == t.minX && + this.minY == t.minY && + this.maxX == t.maxX && + this.maxY == t.maxY + ) + }), + (t.prototype.extend = function (t) { + t.minX < this.minX && (this.minX = t.minX), + t.maxX > this.maxX && (this.maxX = t.maxX), + t.minY < this.minY && (this.minY = t.minY), + t.maxY > this.maxY && (this.maxY = t.maxY) + }), + (t.prototype.getHeight = function () { + return this.maxY - this.minY + 1 + }), + (t.prototype.getSize = function () { + return [this.getWidth(), this.getHeight()] + }), + (t.prototype.getWidth = function () { + return this.maxX - this.minX + 1 + }), + (t.prototype.intersects = function (t) { + return ( + this.minX <= t.maxX && + this.maxX >= t.minX && + this.minY <= t.maxY && + this.maxY >= t.minY + ) + }), + t + ) + })() + function vu(t, e, r, n, i) { + return void 0 !== i + ? ((i.minX = t), (i.maxX = e), (i.minY = r), (i.maxY = n), i) + : new mu(t, e, r, n) + } + var _u = mu, + bu = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + xu = [], + wu = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e, r, { transition: 0 }) || this + return ( + (o.context_ = {}), + (o.executorGroups = {}), + (o.declutterExecutorGroups = {}), + (o.loadingSourceTiles = 0), + (o.errorSourceTileKeys = {}), + (o.hitDetectionImageData = {}), + (o.replayState_ = {}), + (o.sourceTiles = null), + o.wantedResolution, + (o.getSourceTiles = i.bind(void 0, o)), + (o.sourceZ = -1), + (o.hifi = !1), + (o.wrappedTileCoord = n), + o + ) + } + return ( + bu(e, t), + (e.prototype.getContext = function (t) { + var e = o(t) + return ( + e in this.context_ || (this.context_[e] = uo(1, 1, xu)), + this.context_[e] + ) + }), + (e.prototype.hasContext = function (t) { + return o(t) in this.context_ + }), + (e.prototype.getImage = function (t) { + return this.hasContext(t) ? this.getContext(t).canvas : null + }), + (e.prototype.getReplayState = function (t) { + var e = o(t) + return ( + e in this.replayState_ || + (this.replayState_[e] = { + dirty: !1, + renderedRenderOrder: null, + renderedResolution: NaN, + renderedRevision: -1, + renderedTileResolution: NaN, + renderedTileRevision: -1, + renderedZ: -1, + renderedTileZ: -1, + }), + this.replayState_[e] + ) + }), + (e.prototype.load = function () { + this.getSourceTiles() + }), + (e.prototype.release = function () { + for (var e in this.context_) + xu.push(this.context_[e].canvas), delete this.context_[e] + t.prototype.release.call(this) + }), + e + ) + })(lo), + Su = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Eu = (function (t) { + function e(e, r, n, i, o, a) { + var s = t.call(this, e, r, a) || this + return ( + (s.extent = null), + (s.format_ = i), + (s.features_ = null), + s.loader_, + (s.projection = null), + s.resolution, + (s.tileLoadFunction_ = o), + (s.url_ = n), + (s.key = n), + s + ) + } + return ( + Su(e, t), + (e.prototype.getFormat = function () { + return this.format_ + }), + (e.prototype.getFeatures = function () { + return this.features_ + }), + (e.prototype.load = function () { + this.state == Ji && + (this.setState(Qi), + this.tileLoadFunction_(this, this.url_), + this.loader_ && + this.loader_(this.extent, this.resolution, this.projection)) + }), + (e.prototype.onLoad = function (t, e) { + this.setFeatures(t) + }), + (e.prototype.onError = function () { + this.setState(eo) + }), + (e.prototype.setFeatures = function (t) { + ;(this.features_ = t), this.setState(to) + }), + (e.prototype.setLoader = function (t) { + this.loader_ = t + }), + e + ) + })(lo) + function Tu(t) { + return Array.isArray(t) ? Ro(t) : t + } + var Cu = 'arraybuffer', + Ou = 'json', + Pu = 'text', + Ru = 'xml', + Iu = !1 + function Lu(t, e, r, n, i, o, a) { + var s = new XMLHttpRequest() + s.open('GET', 'function' == typeof t ? t(r, n, i) : t, !0), + e.getType() == Cu && (s.responseType = 'arraybuffer'), + (s.withCredentials = Iu), + (s.onload = function (t) { + if (!s.status || (s.status >= 200 && s.status < 300)) { + var n = e.getType(), + l = void 0 + n == Ou || n == Pu + ? (l = s.responseText) + : n == Ru + ? (l = s.responseXML) || + (l = new DOMParser().parseFromString( + s.responseText, + 'application/xml', + )) + : n == Cu && (l = s.response), + l + ? o( + e.readFeatures(l, { extent: r, featureProjection: i }), + e.readProjection(l), + ) + : a() + } else a() + }), + (s.onerror = a), + s.send() + } + function Mu(t, e) { + return function (r, n, i, o, a) { + var s = this + Lu( + t, + e, + r, + n, + i, + function (t, e) { + void 0 !== o && o(t), s.addFeatures(t) + }, + a || T, + ) + } + } + function Fu(t, e) { + return [[-1 / 0, -1 / 0, 1 / 0, 1 / 0]] + } + function Au(t, e, r, n) { + var i = document.createElement('script'), + a = 'olc_' + o(e) + function s() { + delete window[a], i.parentNode.removeChild(i) + } + ;(i.async = !0), + (i.src = + t + + (-1 == t.indexOf('?') ? '?' : '&') + + (n || 'callback') + + '=' + + a) + var l = setTimeout(function () { + s(), r && r() + }, 1e4) + ;(window[a] = function (t) { + clearTimeout(l), s(), e(t) + }), + document.getElementsByTagName('head')[0].appendChild(i) + } + var ku = (function () { + function t() {} + return ( + (t.prototype.drawCustom = function (t, e, r) {}), + (t.prototype.drawGeometry = function (t) {}), + (t.prototype.setStyle = function (t) {}), + (t.prototype.drawCircle = function (t, e) {}), + (t.prototype.drawFeature = function (t, e) {}), + (t.prototype.drawGeometryCollection = function (t, e) {}), + (t.prototype.drawLineString = function (t, e) {}), + (t.prototype.drawMultiLineString = function (t, e) {}), + (t.prototype.drawMultiPoint = function (t, e) {}), + (t.prototype.drawMultiPolygon = function (t, e) {}), + (t.prototype.drawPoint = function (t, e) {}), + (t.prototype.drawPolygon = function (t, e) {}), + (t.prototype.drawText = function (t, e) {}), + (t.prototype.setFillStrokeStyle = function (t, e) {}), + (t.prototype.setImageStyle = function (t, e) {}), + (t.prototype.setTextStyle = function (t, e) {}), + t + ) + })(), + ju = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Nu = (function (t) { + function e(e, r, n, i, o, a, s) { + var l = t.call(this) || this + return ( + (l.context_ = e), + (l.pixelRatio_ = r), + (l.extent_ = n), + (l.transform_ = i), + (l.viewRotation_ = o), + (l.squaredTolerance_ = a), + (l.userTransform_ = s), + (l.contextFillState_ = null), + (l.contextStrokeState_ = null), + (l.contextTextState_ = null), + (l.fillState_ = null), + (l.strokeState_ = null), + (l.image_ = null), + (l.imageAnchorX_ = 0), + (l.imageAnchorY_ = 0), + (l.imageHeight_ = 0), + (l.imageOpacity_ = 0), + (l.imageOriginX_ = 0), + (l.imageOriginY_ = 0), + (l.imageRotateWithView_ = !1), + (l.imageRotation_ = 0), + (l.imageScale_ = [0, 0]), + (l.imageWidth_ = 0), + (l.text_ = ''), + (l.textOffsetX_ = 0), + (l.textOffsetY_ = 0), + (l.textRotateWithView_ = !1), + (l.textRotation_ = 0), + (l.textScale_ = [0, 0]), + (l.textFillState_ = null), + (l.textStrokeState_ = null), + (l.textState_ = null), + (l.pixelCoordinates_ = []), + (l.tmpLocalTransform_ = [1, 0, 0, 1, 0, 0]), + l + ) + } + return ( + ju(e, t), + (e.prototype.drawImages_ = function (t, e, r, n) { + if (this.image_) { + var i = ln(t, e, r, 2, this.transform_, this.pixelCoordinates_), + o = this.context_, + a = this.tmpLocalTransform_, + s = o.globalAlpha + 1 != this.imageOpacity_ && + (o.globalAlpha = s * this.imageOpacity_) + var l = this.imageRotation_ + this.imageRotateWithView_ && (l += this.viewRotation_) + for (var u = 0, c = i.length; u < c; u += 2) { + var h = i[u] - this.imageAnchorX_, + p = i[u + 1] - this.imageAnchorY_ + if ( + 0 !== l || + 1 != this.imageScale_[0] || + 1 != this.imageScale_[1] + ) { + var f = h + this.imageAnchorX_, + d = p + this.imageAnchorY_ + kt(a, f, d, 1, 1, l, -f, -d), + o.setTransform.apply(o, a), + o.translate(f, d), + o.scale(this.imageScale_[0], this.imageScale_[1]), + o.drawImage( + this.image_, + this.imageOriginX_, + this.imageOriginY_, + this.imageWidth_, + this.imageHeight_, + -this.imageAnchorX_, + -this.imageAnchorY_, + this.imageWidth_, + this.imageHeight_, + ), + o.setTransform(1, 0, 0, 1, 0, 0) + } else + o.drawImage( + this.image_, + this.imageOriginX_, + this.imageOriginY_, + this.imageWidth_, + this.imageHeight_, + h, + p, + this.imageWidth_, + this.imageHeight_, + ) + } + 1 != this.imageOpacity_ && (o.globalAlpha = s) + } + }), + (e.prototype.drawText_ = function (t, e, r, n) { + if (this.textState_ && '' !== this.text_) { + this.textFillState_ && + this.setContextFillState_(this.textFillState_), + this.textStrokeState_ && + this.setContextStrokeState_(this.textStrokeState_), + this.setContextTextState_(this.textState_) + var i = ln(t, e, r, n, this.transform_, this.pixelCoordinates_), + o = this.context_, + a = this.textRotation_ + for ( + this.textRotateWithView_ && (a += this.viewRotation_); + e < r; + e += n + ) { + var s = i[e] + this.textOffsetX_, + l = i[e + 1] + this.textOffsetY_ + if ( + 0 !== a || + 1 != this.textScale_[0] || + 1 != this.textScale_[1] + ) { + var u = kt(this.tmpLocalTransform_, s, l, 1, 1, a, -s, -l) + o.setTransform.apply(o, u), + o.translate(s, l), + o.scale(this.textScale_[0], this.textScale_[1]), + this.textStrokeState_ && o.strokeText(this.text_, 0, 0), + this.textFillState_ && o.fillText(this.text_, 0, 0), + o.setTransform(1, 0, 0, 1, 0, 0) + } else + this.textStrokeState_ && o.strokeText(this.text_, s, l), + this.textFillState_ && o.fillText(this.text_, s, l) + } + } + }), + (e.prototype.moveToLineTo_ = function (t, e, r, n, i) { + var o = this.context_, + a = ln(t, e, r, n, this.transform_, this.pixelCoordinates_) + o.moveTo(a[0], a[1]) + var s = a.length + i && (s -= 2) + for (var l = 2; l < s; l += 2) o.lineTo(a[l], a[l + 1]) + return i && o.closePath(), r + }), + (e.prototype.drawRings_ = function (t, e, r, n) { + for (var i = 0, o = r.length; i < o; ++i) + e = this.moveToLineTo_(t, e, r[i], n, !0) + return e + }), + (e.prototype.drawCircle = function (t) { + if (Re(this.extent_, t.getExtent())) { + if (this.fillState_ || this.strokeState_) { + this.fillState_ && this.setContextFillState_(this.fillState_), + this.strokeState_ && + this.setContextStrokeState_(this.strokeState_) + var e = mn(t, this.transform_, this.pixelCoordinates_), + r = e[2] - e[0], + n = e[3] - e[1], + i = Math.sqrt(r * r + n * n), + o = this.context_ + o.beginPath(), + o.arc(e[0], e[1], i, 0, 2 * Math.PI), + this.fillState_ && o.fill(), + this.strokeState_ && o.stroke() + } + '' !== this.text_ && this.drawText_(t.getCenter(), 0, 2, 2) + } + }), + (e.prototype.setStyle = function (t) { + this.setFillStrokeStyle(t.getFill(), t.getStroke()), + this.setImageStyle(t.getImage()), + this.setTextStyle(t.getText()) + }), + (e.prototype.setTransform = function (t) { + this.transform_ = t + }), + (e.prototype.drawGeometry = function (t) { + switch (t.getType()) { + case bt.POINT: + this.drawPoint(t) + break + case bt.LINE_STRING: + this.drawLineString(t) + break + case bt.POLYGON: + this.drawPolygon(t) + break + case bt.MULTI_POINT: + this.drawMultiPoint(t) + break + case bt.MULTI_LINE_STRING: + this.drawMultiLineString(t) + break + case bt.MULTI_POLYGON: + this.drawMultiPolygon(t) + break + case bt.GEOMETRY_COLLECTION: + this.drawGeometryCollection(t) + break + case bt.CIRCLE: + this.drawCircle(t) + } + }), + (e.prototype.drawFeature = function (t, e) { + var r = e.getGeometryFunction()(t) + r && + Re(this.extent_, r.getExtent()) && + (this.setStyle(e), this.drawGeometry(r)) + }), + (e.prototype.drawGeometryCollection = function (t) { + for ( + var e = t.getGeometriesArray(), r = 0, n = e.length; + r < n; + ++r + ) + this.drawGeometry(e[r]) + }), + (e.prototype.drawPoint = function (t) { + this.squaredTolerance_ && + (t = t.simplifyTransformed( + this.squaredTolerance_, + this.userTransform_, + )) + var e = t.getFlatCoordinates(), + r = t.getStride() + this.image_ && this.drawImages_(e, 0, e.length, r), + '' !== this.text_ && this.drawText_(e, 0, e.length, r) + }), + (e.prototype.drawMultiPoint = function (t) { + this.squaredTolerance_ && + (t = t.simplifyTransformed( + this.squaredTolerance_, + this.userTransform_, + )) + var e = t.getFlatCoordinates(), + r = t.getStride() + this.image_ && this.drawImages_(e, 0, e.length, r), + '' !== this.text_ && this.drawText_(e, 0, e.length, r) + }), + (e.prototype.drawLineString = function (t) { + if ( + (this.squaredTolerance_ && + (t = t.simplifyTransformed( + this.squaredTolerance_, + this.userTransform_, + )), + Re(this.extent_, t.getExtent())) + ) { + if (this.strokeState_) { + this.setContextStrokeState_(this.strokeState_) + var e = this.context_, + r = t.getFlatCoordinates() + e.beginPath(), + this.moveToLineTo_(r, 0, r.length, t.getStride(), !1), + e.stroke() + } + if ('' !== this.text_) { + var n = t.getFlatMidpoint() + this.drawText_(n, 0, 2, 2) + } + } + }), + (e.prototype.drawMultiLineString = function (t) { + this.squaredTolerance_ && + (t = t.simplifyTransformed( + this.squaredTolerance_, + this.userTransform_, + )) + var e = t.getExtent() + if (Re(this.extent_, e)) { + if (this.strokeState_) { + this.setContextStrokeState_(this.strokeState_) + var r = this.context_, + n = t.getFlatCoordinates(), + i = 0, + o = t.getEnds(), + a = t.getStride() + r.beginPath() + for (var s = 0, l = o.length; s < l; ++s) + i = this.moveToLineTo_(n, i, o[s], a, !1) + r.stroke() + } + if ('' !== this.text_) { + var u = t.getFlatMidpoints() + this.drawText_(u, 0, u.length, 2) + } + } + }), + (e.prototype.drawPolygon = function (t) { + if ( + (this.squaredTolerance_ && + (t = t.simplifyTransformed( + this.squaredTolerance_, + this.userTransform_, + )), + Re(this.extent_, t.getExtent())) + ) { + if (this.strokeState_ || this.fillState_) { + this.fillState_ && this.setContextFillState_(this.fillState_), + this.strokeState_ && + this.setContextStrokeState_(this.strokeState_) + var e = this.context_ + e.beginPath(), + this.drawRings_( + t.getOrientedFlatCoordinates(), + 0, + t.getEnds(), + t.getStride(), + ), + this.fillState_ && e.fill(), + this.strokeState_ && e.stroke() + } + if ('' !== this.text_) { + var r = t.getFlatInteriorPoint() + this.drawText_(r, 0, 2, 2) + } + } + }), + (e.prototype.drawMultiPolygon = function (t) { + if ( + (this.squaredTolerance_ && + (t = t.simplifyTransformed( + this.squaredTolerance_, + this.userTransform_, + )), + Re(this.extent_, t.getExtent())) + ) { + if (this.strokeState_ || this.fillState_) { + this.fillState_ && this.setContextFillState_(this.fillState_), + this.strokeState_ && + this.setContextStrokeState_(this.strokeState_) + var e = this.context_, + r = t.getOrientedFlatCoordinates(), + n = 0, + i = t.getEndss(), + o = t.getStride() + e.beginPath() + for (var a = 0, s = i.length; a < s; ++a) { + var l = i[a] + n = this.drawRings_(r, n, l, o) + } + this.fillState_ && e.fill(), this.strokeState_ && e.stroke() + } + if ('' !== this.text_) { + var u = t.getFlatInteriorPoints() + this.drawText_(u, 0, u.length, 2) + } + } + }), + (e.prototype.setContextFillState_ = function (t) { + var e = this.context_, + r = this.contextFillState_ + r + ? r.fillStyle != t.fillStyle && + ((r.fillStyle = t.fillStyle), (e.fillStyle = t.fillStyle)) + : ((e.fillStyle = t.fillStyle), + (this.contextFillState_ = { fillStyle: t.fillStyle })) + }), + (e.prototype.setContextStrokeState_ = function (t) { + var e = this.context_, + r = this.contextStrokeState_ + r + ? (r.lineCap != t.lineCap && + ((r.lineCap = t.lineCap), (e.lineCap = t.lineCap)), + e.setLineDash && + (b(r.lineDash, t.lineDash) || + e.setLineDash((r.lineDash = t.lineDash)), + r.lineDashOffset != t.lineDashOffset && + ((r.lineDashOffset = t.lineDashOffset), + (e.lineDashOffset = t.lineDashOffset))), + r.lineJoin != t.lineJoin && + ((r.lineJoin = t.lineJoin), (e.lineJoin = t.lineJoin)), + r.lineWidth != t.lineWidth && + ((r.lineWidth = t.lineWidth), (e.lineWidth = t.lineWidth)), + r.miterLimit != t.miterLimit && + ((r.miterLimit = t.miterLimit), + (e.miterLimit = t.miterLimit)), + r.strokeStyle != t.strokeStyle && + ((r.strokeStyle = t.strokeStyle), + (e.strokeStyle = t.strokeStyle))) + : ((e.lineCap = t.lineCap), + e.setLineDash && + (e.setLineDash(t.lineDash), + (e.lineDashOffset = t.lineDashOffset)), + (e.lineJoin = t.lineJoin), + (e.lineWidth = t.lineWidth), + (e.miterLimit = t.miterLimit), + (e.strokeStyle = t.strokeStyle), + (this.contextStrokeState_ = { + lineCap: t.lineCap, + lineDash: t.lineDash, + lineDashOffset: t.lineDashOffset, + lineJoin: t.lineJoin, + lineWidth: t.lineWidth, + miterLimit: t.miterLimit, + strokeStyle: t.strokeStyle, + })) + }), + (e.prototype.setContextTextState_ = function (t) { + var e = this.context_, + r = this.contextTextState_, + n = t.textAlign ? t.textAlign : 'center' + r + ? (r.font != t.font && ((r.font = t.font), (e.font = t.font)), + r.textAlign != n && ((r.textAlign = n), (e.textAlign = n)), + r.textBaseline != t.textBaseline && + ((r.textBaseline = t.textBaseline), + (e.textBaseline = t.textBaseline))) + : ((e.font = t.font), + (e.textAlign = n), + (e.textBaseline = t.textBaseline), + (this.contextTextState_ = { + font: t.font, + textAlign: n, + textBaseline: t.textBaseline, + })) + }), + (e.prototype.setFillStrokeStyle = function (t, e) { + if (t) { + var r = t.getColor() + this.fillState_ = { fillStyle: Tu(r || '#000') } + } else this.fillState_ = null + if (e) { + var n = e.getColor(), + i = e.getLineCap(), + o = e.getLineDash(), + a = e.getLineDashOffset(), + s = e.getLineJoin(), + l = e.getWidth(), + u = e.getMiterLimit() + this.strokeState_ = { + lineCap: void 0 !== i ? i : 'round', + lineDash: o || pa, + lineDashOffset: a || 0, + lineJoin: void 0 !== s ? s : 'round', + lineWidth: this.pixelRatio_ * (void 0 !== l ? l : 1), + miterLimit: void 0 !== u ? u : 10, + strokeStyle: Tu(n || '#000'), + } + } else this.strokeState_ = null + }), + (e.prototype.setImageStyle = function (t) { + if (t) { + var e = t.getSize() + if (e) { + var r = t.getAnchor(), + n = t.getImage(1), + i = t.getOrigin(), + o = t.getScaleArray() + ;(this.imageAnchorX_ = r[0]), + (this.imageAnchorY_ = r[1]), + (this.imageHeight_ = e[1]), + (this.image_ = n), + (this.imageOpacity_ = t.getOpacity()), + (this.imageOriginX_ = i[0]), + (this.imageOriginY_ = i[1]), + (this.imageRotateWithView_ = t.getRotateWithView()), + (this.imageRotation_ = t.getRotation()), + (this.imageScale_ = [ + this.pixelRatio_ * o[0], + this.pixelRatio_ * o[1], + ]), + (this.imageWidth_ = e[0]) + } else this.image_ = null + } else this.image_ = null + }), + (e.prototype.setTextStyle = function (t) { + if (t) { + var e = t.getFill() + if (e) { + var r = e.getColor() + this.textFillState_ = { fillStyle: Tu(r || '#000') } + } else this.textFillState_ = null + var n = t.getStroke() + if (n) { + var i = n.getColor(), + o = n.getLineCap(), + a = n.getLineDash(), + s = n.getLineDashOffset(), + l = n.getLineJoin(), + u = n.getWidth(), + c = n.getMiterLimit() + this.textStrokeState_ = { + lineCap: void 0 !== o ? o : 'round', + lineDash: a || pa, + lineDashOffset: s || 0, + lineJoin: void 0 !== l ? l : 'round', + lineWidth: void 0 !== u ? u : 1, + miterLimit: void 0 !== c ? c : 10, + strokeStyle: Tu(i || '#000'), + } + } else this.textStrokeState_ = null + var h = t.getFont(), + p = t.getOffsetX(), + f = t.getOffsetY(), + d = t.getRotateWithView(), + g = t.getRotation(), + y = t.getScaleArray(), + m = t.getText(), + v = t.getTextAlign(), + _ = t.getTextBaseline() + ;(this.textState_ = { + font: void 0 !== h ? h : '10px sans-serif', + textAlign: void 0 !== v ? v : 'center', + textBaseline: void 0 !== _ ? _ : 'middle', + }), + (this.text_ = void 0 !== m ? m : ''), + (this.textOffsetX_ = void 0 !== p ? this.pixelRatio_ * p : 0), + (this.textOffsetY_ = void 0 !== f ? this.pixelRatio_ * f : 0), + (this.textRotateWithView_ = void 0 !== d && d), + (this.textRotation_ = void 0 !== g ? g : 0), + (this.textScale_ = [ + this.pixelRatio_ * y[0], + this.pixelRatio_ * y[1], + ]) + } else this.text_ = '' + }), + e + ) + })(ku), + Du = 'Circle', + Gu = 'Default', + zu = 'Image', + Uu = 'LineString', + Bu = 'Polygon', + Vu = 'Text', + Yu = { + Point: function (t, e, r, n, i) { + var o, + a = r.getImage(), + s = r.getText() + i && ((t = i), (o = a && s && s.getText() ? {} : void 0)) + if (a) { + if (a.getImageState() != ki) return + var l = t.getBuilder(r.getZIndex(), zu) + l.setImageStyle(a, o), l.drawPoint(e, n) + } + if (s && s.getText()) { + var u = t.getBuilder(r.getZIndex(), Vu) + u.setTextStyle(s, o), u.drawText(e, n) + } + }, + LineString: function (t, e, r, n, i) { + var o = r.getStroke() + if (o) { + var a = t.getBuilder(r.getZIndex(), Uu) + a.setFillStrokeStyle(null, o), a.drawLineString(e, n) + } + var s = r.getText() + if (s && s.getText()) { + var l = (i || t).getBuilder(r.getZIndex(), Vu) + l.setTextStyle(s), l.drawText(e, n) + } + }, + Polygon: function (t, e, r, n, i) { + var o = r.getFill(), + a = r.getStroke() + if (o || a) { + var s = t.getBuilder(r.getZIndex(), Bu) + s.setFillStrokeStyle(o, a), s.drawPolygon(e, n) + } + var l = r.getText() + if (l && l.getText()) { + var u = (i || t).getBuilder(r.getZIndex(), Vu) + u.setTextStyle(l), u.drawText(e, n) + } + }, + MultiPoint: function (t, e, r, n, i) { + var o, + a = r.getImage(), + s = r.getText() + i && ((t = i), (o = a && s && s.getText() ? {} : void 0)) + if (a) { + if (a.getImageState() != ki) return + var l = t.getBuilder(r.getZIndex(), zu) + l.setImageStyle(a, o), l.drawMultiPoint(e, n) + } + if (s && s.getText()) { + var u = (i || t).getBuilder(r.getZIndex(), Vu) + u.setTextStyle(s, o), u.drawText(e, n) + } + }, + MultiLineString: function (t, e, r, n, i) { + var o = r.getStroke() + if (o) { + var a = t.getBuilder(r.getZIndex(), Uu) + a.setFillStrokeStyle(null, o), a.drawMultiLineString(e, n) + } + var s = r.getText() + if (s && s.getText()) { + var l = (i || t).getBuilder(r.getZIndex(), Vu) + l.setTextStyle(s), l.drawText(e, n) + } + }, + MultiPolygon: function (t, e, r, n, i) { + var o = r.getFill(), + a = r.getStroke() + if (a || o) { + var s = t.getBuilder(r.getZIndex(), Bu) + s.setFillStrokeStyle(o, a), s.drawMultiPolygon(e, n) + } + var l = r.getText() + if (l && l.getText()) { + var u = (i || t).getBuilder(r.getZIndex(), Vu) + u.setTextStyle(l), u.drawText(e, n) + } + }, + GeometryCollection: function (t, e, r, n, i) { + var o, + a, + s = e.getGeometriesArray() + for (o = 0, a = s.length; o < a; ++o) { + ;(0, Yu[s[o].getType()])(t, s[o], r, n, i) + } + }, + Circle: function (t, e, r, n, i) { + var o = r.getFill(), + a = r.getStroke() + if (o || a) { + var s = t.getBuilder(r.getZIndex(), Du) + s.setFillStrokeStyle(o, a), s.drawCircle(e, n) + } + var l = r.getText() + if (l && l.getText()) { + var u = (i || t).getBuilder(r.getZIndex(), Vu) + u.setTextStyle(l), u.drawText(e, n) + } + }, + } + function Wu(t, e) { + return parseInt(o(t), 10) - parseInt(o(e), 10) + } + function qu(t, e) { + var r = Xu(t, e) + return r * r + } + function Xu(t, e) { + return (0.5 * t) / e + } + function Zu(t, e, r, n, i, o, a) { + var s = !1, + l = r.getImage() + if (l) { + var u = l.getImageState() + u == ki || u == ji + ? l.unlistenImageChange(i) + : (u == Fi && l.load(), + (u = l.getImageState()), + l.listenImageChange(i), + (s = !0)) + } + return ( + (function (t, e, r, n, i, o) { + var a = r.getGeometryFunction()(e) + if (!a) return + var s = a.simplifyTransformed(n, i) + if (r.getRenderer()) + !(function t(e, r, n, i) { + if (r.getType() == bt.GEOMETRY_COLLECTION) { + for ( + var o = r.getGeometries(), a = 0, s = o.length; + a < s; + ++a + ) + t(e, o[a], n, i) + return + } + e.getBuilder(n.getZIndex(), Gu).drawCustom( + r, + i, + n.getRenderer(), + ) + })(t, s, r, e) + else { + ;(0, Yu[s.getType()])(t, s, r, e, o) + } + })(t, e, r, n, o, a), + s + ) + } + function Ku(t) { + var e, + r = t.frameState, + n = Ot(t.inversePixelTransform.slice(), r.coordinateToPixelTransform), + i = qu(r.viewState.resolution, r.pixelRatio), + o = tn() + return ( + o && (e = Zr(o, r.viewState.projection)), + new Nu( + t.context, + r.pixelRatio, + r.extent, + n, + r.viewState.rotation, + i, + e, + ) + ) + } + var Hu, + $u = { imageSmoothingEnabled: !1, msImageSmoothingEnabled: !1 } + function Ju(t, e, r, n, i) { + t.beginPath(), + t.moveTo(0, 0), + t.lineTo(e, r), + t.lineTo(n, i), + t.closePath(), + t.save(), + t.clip(), + t.fillRect(0, 0, Math.max(e, n) + 1, Math.max(r, i)), + t.restore() + } + function Qu(t, e) { + return ( + Math.abs(t[4 * e] - 210) > 2 || Math.abs(t[4 * e + 3] - 191.25) > 2 + ) + } + function tc(t, e, r, n) { + var i = Hr(r, e, t), + o = zr(e, n, r), + a = e.getMetersPerUnit() + void 0 !== a && (o *= a) + var s = t.getMetersPerUnit() + void 0 !== s && (o /= s) + var l = t.getExtent() + if (!l || Qt(l, i)) { + var u = zr(t, o, i) / o + isFinite(u) && u > 0 && (o /= u) + } + return o + } + function ec(t, e, r, n) { + var i = xe(r), + o = tc(t, e, i, n) + return ( + (!isFinite(o) || o <= 0) && + me(r, function (r) { + return (o = tc(t, e, r, n)), isFinite(o) && o > 0 + }), + o + ) + } + function rc(t, e, r, n, i, o, a, s, l, u, c, h) { + var p = uo(Math.round(r * t), Math.round(r * e)) + if ((O(p, h), 0 === l.length)) return p.canvas + function f(t) { + return Math.round(t * r) / r + } + p.scale(r, r), (p.globalCompositeOperation = 'lighter') + var d = [1 / 0, 1 / 0, -1 / 0, -1 / 0] + l.forEach(function (t, e, r) { + he(d, t.extent) + }) + var g = Pe(d), + y = Ee(d), + m = uo(Math.round((r * g) / n), Math.round((r * y) / n)) + O(m, h) + var v = r / n + l.forEach(function (t, e, r) { + var n = t.extent[0] - d[0], + i = -(t.extent[3] - d[3]), + o = Pe(t.extent), + a = Ee(t.extent) + t.image.width > 0 && + t.image.height > 0 && + m.drawImage( + t.image, + u, + u, + t.image.width - 2 * u, + t.image.height - 2 * u, + n * v, + i * v, + o * v, + a * v, + ) + }) + var _ = Ce(a) + return ( + s.getTriangles().forEach(function (t, e, i) { + var a = t.source, + s = t.target, + l = a[0][0], + u = a[0][1], + c = a[1][0], + g = a[1][1], + y = a[2][0], + v = a[2][1], + b = f((s[0][0] - _[0]) / o), + x = f(-(s[0][1] - _[1]) / o), + w = f((s[1][0] - _[0]) / o), + S = f(-(s[1][1] - _[1]) / o), + E = f((s[2][0] - _[0]) / o), + T = f(-(s[2][1] - _[1]) / o), + C = l, + O = u + ;(l = 0), (u = 0) + var P = Be([ + [(c -= C), (g -= O), 0, 0, w - b], + [(y -= C), (v -= O), 0, 0, E - b], + [0, 0, c, g, S - x], + [0, 0, y, v, T - x], + ]) + if (P) { + if ( + (p.save(), + p.beginPath(), + (function () { + if (void 0 === Hu) { + var t = document.createElement('canvas').getContext('2d') + ;(t.globalCompositeOperation = 'lighter'), + (t.fillStyle = 'rgba(210, 0, 0, 0.75)'), + Ju(t, 4, 5, 4, 0), + Ju(t, 4, 5, 0, 5) + var e = t.getImageData(0, 0, 3, 3).data + Hu = Qu(e, 0) || Qu(e, 4) || Qu(e, 8) + } + return Hu + })() || h === $u) + ) { + p.moveTo(w, S) + for (var R = b - w, I = x - S, L = 0; L < 4; L++) + p.lineTo(w + f(((L + 1) * R) / 4), S + f((L * I) / 3)), + 3 != L && + p.lineTo( + w + f(((L + 1) * R) / 4), + S + f(((L + 1) * I) / 3), + ) + p.lineTo(E, T) + } else p.moveTo(w, S), p.lineTo(b, x), p.lineTo(E, T) + p.clip(), + p.transform(P[0], P[2], P[1], P[3], b, x), + p.translate(d[0] - C, d[3] - O), + p.scale(n / r, -n / r), + p.drawImage(m.canvas, 0, 0), + p.restore() + } + }), + c && + (p.save(), + (p.globalCompositeOperation = 'source-over'), + (p.strokeStyle = 'black'), + (p.lineWidth = 1), + s.getTriangles().forEach(function (t, e, r) { + var n = t.target, + i = (n[0][0] - _[0]) / o, + a = -(n[0][1] - _[1]) / o, + s = (n[1][0] - _[0]) / o, + l = -(n[1][1] - _[1]) / o, + u = (n[2][0] - _[0]) / o, + c = -(n[2][1] - _[1]) / o + p.beginPath(), + p.moveTo(s, l), + p.lineTo(i, a), + p.lineTo(u, c), + p.closePath(), + p.stroke() + }), + p.restore()), + p.canvas + ) + } + var nc = [0, 0, 0], + ic = (function () { + function t(t) { + var e + if ( + ((this.minZoom = void 0 !== t.minZoom ? t.minZoom : 0), + (this.resolutions_ = t.resolutions), + pt( + w( + this.resolutions_, + function (t, e) { + return e - t + }, + !0, + ), + 17, + ), + !t.origins) + ) + for (var r = 0, n = this.resolutions_.length - 1; r < n; ++r) + if (e) { + if (this.resolutions_[r] / this.resolutions_[r + 1] !== e) { + e = void 0 + break + } + } else e = this.resolutions_[r] / this.resolutions_[r + 1] + ;(this.zoomFactor_ = e), + (this.maxZoom = this.resolutions_.length - 1), + (this.origin_ = void 0 !== t.origin ? t.origin : null), + (this.origins_ = null), + void 0 !== t.origins && + ((this.origins_ = t.origins), + pt(this.origins_.length == this.resolutions_.length, 20)) + var i = t.extent + void 0 === i || + this.origin_ || + this.origins_ || + (this.origin_ = Ce(i)), + pt( + (!this.origin_ && this.origins_) || + (this.origin_ && !this.origins_), + 18, + ), + (this.tileSizes_ = null), + void 0 !== t.tileSizes && + ((this.tileSizes_ = t.tileSizes), + pt(this.tileSizes_.length == this.resolutions_.length, 19)), + (this.tileSize_ = + void 0 !== t.tileSize + ? t.tileSize + : this.tileSizes_ + ? null + : 256), + pt( + (!this.tileSize_ && this.tileSizes_) || + (this.tileSize_ && !this.tileSizes_), + 22, + ), + (this.extent_ = void 0 !== i ? i : null), + (this.fullTileRanges_ = null), + (this.tmpSize_ = [0, 0]), + void 0 !== t.sizes + ? (this.fullTileRanges_ = t.sizes.map(function (t, e) { + var r = new _u( + Math.min(0, t[0]), + Math.max(t[0] - 1, -1), + Math.min(0, t[1]), + Math.max(t[1] - 1, -1), + ) + if (i) { + var n = this.getTileRangeForExtentAndZ(i, e) + ;(r.minX = Math.max(n.minX, r.minX)), + (r.maxX = Math.min(n.maxX, r.maxX)), + (r.minY = Math.max(n.minY, r.minY)), + (r.maxY = Math.min(n.maxY, r.maxY)) + } + return r + }, this)) + : i && this.calculateTileRanges_(i) + } + return ( + (t.prototype.forEachTileCoord = function (t, e, r) { + for ( + var n = this.getTileRangeForExtentAndZ(t, e), + i = n.minX, + o = n.maxX; + i <= o; + ++i + ) + for (var a = n.minY, s = n.maxY; a <= s; ++a) r([e, i, a]) + }), + (t.prototype.forEachTileCoordParentTileRange = function ( + t, + e, + r, + n, + ) { + var i, + o, + a = null, + s = t[0] - 1 + for ( + 2 === this.zoomFactor_ + ? ((i = t[1]), (o = t[2])) + : (a = this.getTileCoordExtent(t, n)); + s >= this.minZoom; + + ) { + if ( + e( + s, + 2 === this.zoomFactor_ + ? vu( + (i = Math.floor(i / 2)), + i, + (o = Math.floor(o / 2)), + o, + r, + ) + : this.getTileRangeForExtentAndZ(a, s, r), + ) + ) + return !0 + --s + } + return !1 + }), + (t.prototype.getExtent = function () { + return this.extent_ + }), + (t.prototype.getMaxZoom = function () { + return this.maxZoom + }), + (t.prototype.getMinZoom = function () { + return this.minZoom + }), + (t.prototype.getOrigin = function (t) { + return this.origin_ ? this.origin_ : this.origins_[t] + }), + (t.prototype.getResolution = function (t) { + return this.resolutions_[t] + }), + (t.prototype.getResolutions = function () { + return this.resolutions_ + }), + (t.prototype.getTileCoordChildTileRange = function (t, e, r) { + if (t[0] < this.maxZoom) { + if (2 === this.zoomFactor_) { + var n = 2 * t[1], + i = 2 * t[2] + return vu(n, n + 1, i, i + 1, e) + } + var o = this.getTileCoordExtent(t, r) + return this.getTileRangeForExtentAndZ(o, t[0] + 1, e) + } + return null + }), + (t.prototype.getTileRangeExtent = function (t, e, r) { + var n = this.getOrigin(t), + i = this.getResolution(t), + o = Is(this.getTileSize(t), this.tmpSize_), + a = n[0] + e.minX * o[0] * i, + s = n[0] + (e.maxX + 1) * o[0] * i + return ie( + a, + n[1] + e.minY * o[1] * i, + s, + n[1] + (e.maxY + 1) * o[1] * i, + r, + ) + }), + (t.prototype.getTileRangeForExtentAndZ = function (t, e, r) { + var n = nc + this.getTileCoordForXYAndZ_(t[0], t[3], e, !1, n) + var i = n[1], + o = n[2] + return ( + this.getTileCoordForXYAndZ_(t[2], t[1], e, !0, n), + vu(i, n[1], o, n[2], r) + ) + }), + (t.prototype.getTileCoordCenter = function (t) { + var e = this.getOrigin(t[0]), + r = this.getResolution(t[0]), + n = Is(this.getTileSize(t[0]), this.tmpSize_) + return [ + e[0] + (t[1] + 0.5) * n[0] * r, + e[1] - (t[2] + 0.5) * n[1] * r, + ] + }), + (t.prototype.getTileCoordExtent = function (t, e) { + var r = this.getOrigin(t[0]), + n = this.getResolution(t[0]), + i = Is(this.getTileSize(t[0]), this.tmpSize_), + o = r[0] + t[1] * i[0] * n, + a = r[1] - (t[2] + 1) * i[1] * n + return ie(o, a, o + i[0] * n, a + i[1] * n, e) + }), + (t.prototype.getTileCoordForCoordAndResolution = function ( + t, + e, + r, + ) { + return this.getTileCoordForXYAndResolution_(t[0], t[1], e, !1, r) + }), + (t.prototype.getTileCoordForXYAndResolution_ = function ( + t, + e, + r, + n, + i, + ) { + var o = this.getZForResolution(r), + a = r / this.getResolution(o), + s = this.getOrigin(o), + l = Is(this.getTileSize(o), this.tmpSize_), + u = n ? 0.5 : 0, + c = n ? 0.5 : 0, + h = Math.floor((t - s[0]) / r + u), + p = Math.floor((s[1] - e) / r + c), + f = (a * h) / l[0], + d = (a * p) / l[1] + return ( + n + ? ((f = Math.ceil(f) - 1), (d = Math.ceil(d) - 1)) + : ((f = Math.floor(f)), (d = Math.floor(d))), + uu(o, f, d, i) + ) + }), + (t.prototype.getTileCoordForXYAndZ_ = function (t, e, r, n, i) { + var o = this.getOrigin(r), + a = this.getResolution(r), + s = Is(this.getTileSize(r), this.tmpSize_), + l = n ? 0.5 : 0, + u = n ? 0.5 : 0, + c = Math.floor((t - o[0]) / a + l), + h = Math.floor((o[1] - e) / a + u), + p = c / s[0], + f = h / s[1] + return ( + n + ? ((p = Math.ceil(p) - 1), (f = Math.ceil(f) - 1)) + : ((p = Math.floor(p)), (f = Math.floor(f))), + uu(r, p, f, i) + ) + }), + (t.prototype.getTileCoordForCoordAndZ = function (t, e, r) { + return this.getTileCoordForXYAndZ_(t[0], t[1], e, !1, r) + }), + (t.prototype.getTileCoordResolution = function (t) { + return this.resolutions_[t[0]] + }), + (t.prototype.getTileSize = function (t) { + return this.tileSize_ ? this.tileSize_ : this.tileSizes_[t] + }), + (t.prototype.getFullTileRange = function (t) { + return this.fullTileRanges_ + ? this.fullTileRanges_[t] + : this.extent_ + ? this.getTileRangeForExtentAndZ(this.extent_, t) + : null + }), + (t.prototype.getZForResolution = function (t, e) { + return Ne( + y(this.resolutions_, t, e || 0), + this.minZoom, + this.maxZoom, + ) + }), + (t.prototype.calculateTileRanges_ = function (t) { + for ( + var e = this.resolutions_.length, + r = new Array(e), + n = this.minZoom; + n < e; + ++n + ) + r[n] = this.getTileRangeForExtentAndZ(t, n) + this.fullTileRanges_ = r + }), + t + ) + })() + function oc(t) { + var e = t.getDefaultTileGrid() + return e || ((e = cc(t)), t.setDefaultTileGrid(e)), e + } + function ac(t, e, r) { + var n = e[0], + i = t.getTileCoordCenter(e), + o = hc(r) + if (Qt(o, i)) return e + var a = Pe(o), + s = Math.ceil((o[0] - i[0]) / a) + return (i[0] += a * s), t.getTileCoordForCoordAndZ(i, n) + } + function sc(t, e, r, n) { + var i = void 0 !== n ? n : Ut, + o = uc(t, e, r) + return new ic({ + extent: t, + origin: we(t, i), + resolutions: o, + tileSize: r, + }) + } + function lc(t) { + var e = t || {}, + r = e.extent || Gr('EPSG:3857').getExtent(), + n = { + extent: r, + minZoom: e.minZoom, + tileSize: e.tileSize, + resolutions: uc(r, e.maxZoom, e.tileSize, e.maxResolution), + } + return new ic(n) + } + function uc(t, e, r, n) { + for ( + var i = void 0 !== e ? e : 42, + o = Ee(t), + a = Pe(t), + s = Is(void 0 !== r ? r : 256), + l = n > 0 ? n : Math.max(a / s[0], o / s[1]), + u = i + 1, + c = new Array(u), + h = 0; + h < u; + ++h + ) + c[h] = l / Math.pow(2, h) + return c + } + function cc(t, e, r, n) { + return sc(hc(t), e, r, n) + } + function hc(t) { + var e = (t = Gr(t)).getExtent() + if (!e) { + var r = (180 * wt[St.DEGREES]) / t.getMetersPerUnit() + e = ie(-r, -r, r, r) + } + return e + } + function pc(t, e) { + var r = /\{z\}/g, + n = /\{x\}/g, + i = /\{y\}/g, + o = /\{-y\}/g + return function (a, s, l) { + return a + ? t + .replace(r, a[0].toString()) + .replace(n, a[1].toString()) + .replace(i, a[2].toString()) + .replace(o, function () { + var t = a[0], + r = e.getFullTileRange(t) + return pt(r, 55), (r.getHeight() - a[2] - 1).toString() + }) + : void 0 + } + } + function fc(t, e) { + for (var r = t.length, n = new Array(r), i = 0; i < r; ++i) + n[i] = pc(t[i], e) + return dc(n) + } + function dc(t) { + return 1 === t.length + ? t[0] + : function (e, r, n) { + if (e) { + var i = We(fu(e), t.length) + return t[i](e, r, n) + } + } + } + function gc(t, e, r) {} + function yc(t) { + var e = [], + r = /\{([a-z])-([a-z])\}/.exec(t) + if (r) { + var n = r[1].charCodeAt(0), + i = r[2].charCodeAt(0), + o = void 0 + for (o = n; o <= i; ++o) + e.push(t.replace(r[0], String.fromCharCode(o))) + return e + } + if ((r = /\{(\d+)-(\d+)\}/.exec(t))) { + for (var a = parseInt(r[2], 10), s = parseInt(r[1], 10); s <= a; s++) + e.push(t.replace(r[0], s.toString())) + return e + } + return e.push(t), e + } + function mc(t, e) { + var r = [] + Object.keys(e).forEach(function (t) { + null !== e[t] && + void 0 !== e[t] && + r.push(t + '=' + encodeURIComponent(e[t])) + }) + var n = r.join('&') + return ( + (t = + -1 === (t = t.replace(/[?&]$/, '')).indexOf('?') + ? t + '?' + : t + '&') + n + ) + } + var vc, + _c = ['experimental-webgl', 'webgl', 'webkit-3d', 'moz-webgl'] + function bc(t, e) { + for (var r = _c.length, n = 0; n < r; ++n) + try { + var i = t.getContext(_c[n], e) + if (i) return i + } catch (t) {} + return null + } + function xc() { + if (!vc) { + var t = bc(document.createElement('canvas')) + t && (vc = t.getSupportedExtensions()) + } + return vc + } + var wc = 'http://www.w3.org/2001/XMLSchema-instance' + function Sc(t, e) { + return Xc().createElementNS(t, e) + } + function Ec(t, e) { + return Tc(t, e, []).join('') + } + function Tc(t, e, r) { + if ( + t.nodeType == Node.CDATA_SECTION_NODE || + t.nodeType == Node.TEXT_NODE + ) + e + ? r.push(String(t.nodeValue).replace(/(\r\n|\r|\n)/g, '')) + : r.push(t.nodeValue) + else { + var n = void 0 + for (n = t.firstChild; n; n = n.nextSibling) Tc(n, e, r) + } + return r + } + function Cc(t) { + return 'documentElement' in t + } + function Oc(t, e, r) { + return t.getAttributeNS(e, r) || '' + } + function Pc(t) { + return new DOMParser().parseFromString(t, 'application/xml') + } + function Rc(t, e) { + return function (r, n) { + var i = t.call(void 0 !== e ? e : this, r, n) + void 0 !== i && v(n[n.length - 1], i) + } + } + function Ic(t, e) { + return function (r, n) { + var i = t.call(void 0 !== e ? e : this, r, n) + void 0 !== i && n[n.length - 1].push(i) + } + } + function Lc(t, e) { + return function (r, n) { + var i = t.call(void 0 !== e ? e : this, r, n) + void 0 !== i && (n[n.length - 1] = i) + } + } + function Mc(t, e, r) { + return function (n, i) { + var o = t.call(void 0 !== r ? r : this, n, i) + if (void 0 !== o) { + var a = i[i.length - 1], + s = void 0 !== e ? e : n.localName, + l = void 0 + s in a ? (l = a[s]) : ((l = []), (a[s] = l)), l.push(o) + } + } + } + function Fc(t, e, r) { + return function (n, i) { + var o = t.call(void 0 !== r ? r : this, n, i) + void 0 !== o && (i[i.length - 1][void 0 !== e ? e : n.localName] = o) + } + } + function Ac(t, e) { + return function (r, n, i) { + t.call(void 0 !== e ? e : this, r, n, i), + i[i.length - 1].node.appendChild(r) + } + } + function kc(t, e) { + var r, n + return function (e, i, o) { + if (void 0 === r) { + r = {} + var a = {} + ;(a[e.localName] = t), + (r[e.namespaceURI] = a), + (n = jc(e.localName)) + } + Bc(r, n, i, o) + } + } + function jc(t, e) { + var r = t + return function (t, n, i) { + var o = n[n.length - 1].node, + a = r + return ( + void 0 === a && (a = i), Sc(void 0 !== e ? e : o.namespaceURI, a) + ) + } + } + var Nc = jc() + function Dc(t, e) { + for (var r = e.length, n = new Array(r), i = 0; i < r; ++i) + n[i] = t[e[i]] + return n + } + function Gc(t, e, r) { + var n, + i, + o = void 0 !== r ? r : {} + for (n = 0, i = t.length; n < i; ++n) o[t[n]] = e + return o + } + function zc(t, e, r, n) { + var i + for (i = e.firstElementChild; i; i = i.nextElementSibling) { + var o = t[i.namespaceURI] + if (void 0 !== o) { + var a = o[i.localName] + void 0 !== a && a.call(n, i, r) + } + } + } + function Uc(t, e, r, n, i) { + return n.push(t), zc(e, r, n, i), n.pop() + } + function Bc(t, e, r, n, i, o) { + for (var a, s, l = (void 0 !== i ? i : r).length, u = 0; u < l; ++u) + void 0 !== (a = r[u]) && + void 0 !== + (s = e.call( + void 0 !== o ? o : this, + a, + n, + void 0 !== i ? i[u] : void 0, + )) && + t[s.namespaceURI][s.localName].call(o, s, a, n) + } + function Vc(t, e, r, n, i, o, a) { + return i.push(t), Bc(e, r, n, i, o, a), i.pop() + } + var Yc = void 0 + function Wc() { + return ( + void 0 === Yc && + 'undefined' != typeof XMLSerializer && + (Yc = new XMLSerializer()), + Yc + ) + } + var qc = void 0 + function Xc() { + return ( + void 0 === qc && + 'undefined' != typeof document && + (qc = document.implementation.createDocument('', '', null)), + qc + ) + } + var Zc = new Blob( + [ + 'var e=self;e.onmessage=function(s){console.log("version worker received message:",s.data),e.postMessage("version: ".concat("latest"))};', + ], + { type: 'application/javascript' }, + ) + URL.createObjectURL(Zc) + var Kc = new Blob( + [ + 'var e="function"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1,o=arguments.length;r= 0; o--) + this.postProcessPasses_[o].init(t) + e.bindTexture(e.TEXTURE_2D, null), + e.clearColor(0, 0, 0, 0), + e.clear(e.COLOR_BUFFER_BIT), + e.enable(e.BLEND), + e.blendFunc(e.ONE, e.ONE_MINUS_SRC_ALPHA), + e.useProgram(this.currentProgram_), + this.applyFrameState(t), + this.applyUniforms(t) + }), + (e.prototype.prepareDrawToRenderTarget = function (t, e, r) { + var n = this.getGL(), + i = e.getSize() + n.bindFramebuffer(n.FRAMEBUFFER, e.getFramebuffer()), + n.viewport(0, 0, i[0], i[1]), + n.bindTexture(n.TEXTURE_2D, e.getTexture()), + n.clearColor(0, 0, 0, 0), + n.clear(n.COLOR_BUFFER_BIT), + n.enable(n.BLEND), + n.blendFunc(n.ONE, r ? n.ZERO : n.ONE_MINUS_SRC_ALPHA), + n.useProgram(this.currentProgram_), + this.applyFrameState(t), + this.applyUniforms(t) + }), + (e.prototype.drawElements = function (t, e) { + var r = this.getGL(), + n = r.UNSIGNED_INT, + i = e - t, + o = 4 * t + r.drawElements(r.TRIANGLES, i, n, o) + }), + (e.prototype.finalizeDraw = function (t) { + for (var e = 0; e < this.postProcessPasses_.length; e++) + this.postProcessPasses_[e].apply( + t, + this.postProcessPasses_[e + 1] || null, + ) + }), + (e.prototype.getCanvas = function () { + return this.canvas_ + }), + (e.prototype.getGL = function () { + return this.gl_ + }), + (e.prototype.applyFrameState = function (t) { + var e = t.size, + r = t.viewState.rotation, + n = Ct(this.offsetScaleMatrix_) + Mt(n, 2 / e[0], 2 / e[1]) + var i = Ct(this.offsetRotateMatrix_) + 0 !== r && Lt(i, -r), + this.setUniformMatrixValue(sh, ih(this.tmpMat4_, n)), + this.setUniformMatrixValue(lh, ih(this.tmpMat4_, i)), + this.setUniformFloatValue( + uh, + 0.001 * (Date.now() - this.startTime_), + ), + this.setUniformFloatValue(ch, t.viewState.zoom), + this.setUniformFloatValue(hh, t.viewState.resolution) + }), + (e.prototype.applyUniforms = function (t) { + var e, + r = this.getGL(), + n = 0 + this.uniforms_.forEach( + function (i) { + if ( + (e = + 'function' == typeof i.value + ? i.value(t) + : i.value) instanceof HTMLCanvasElement || + e instanceof HTMLImageElement || + e instanceof ImageData + ) + i.texture || + ((i.prevValue = void 0), (i.texture = r.createTexture())), + r.activeTexture(r['TEXTURE' + n]), + r.bindTexture(r.TEXTURE_2D, i.texture), + r.texParameteri( + r.TEXTURE_2D, + r.TEXTURE_MIN_FILTER, + r.LINEAR, + ), + r.texParameteri( + r.TEXTURE_2D, + r.TEXTURE_WRAP_S, + r.CLAMP_TO_EDGE, + ), + r.texParameteri( + r.TEXTURE_2D, + r.TEXTURE_WRAP_T, + r.CLAMP_TO_EDGE, + ), + (!(e instanceof HTMLImageElement) || e.complete) && + i.prevValue !== e && + ((i.prevValue = e), + r.texImage2D( + r.TEXTURE_2D, + 0, + r.RGBA, + r.RGBA, + r.UNSIGNED_BYTE, + e, + )), + r.uniform1i(this.getUniformLocation(i.name), n++) + else if (Array.isArray(e) && 6 === e.length) + this.setUniformMatrixValue(i.name, ih(this.tmpMat4_, e)) + else if (Array.isArray(e) && e.length <= 4) + switch (e.length) { + case 2: + return void r.uniform2f( + this.getUniformLocation(i.name), + e[0], + e[1], + ) + case 3: + return void r.uniform3f( + this.getUniformLocation(i.name), + e[0], + e[1], + e[2], + ) + case 4: + return void r.uniform4f( + this.getUniformLocation(i.name), + e[0], + e[1], + e[2], + e[3], + ) + default: + return + } + else + 'number' == typeof e && + r.uniform1f(this.getUniformLocation(i.name), e) + }.bind(this), + ) + }), + (e.prototype.useProgram = function (t) { + return ( + t != this.currentProgram_ && + (this.getGL().useProgram(t), + (this.currentProgram_ = t), + (this.uniformLocations_ = {}), + (this.attribLocations_ = {}), + !0) + ) + }), + (e.prototype.compileShader = function (t, e) { + var r = this.getGL(), + n = r.createShader(e) + return r.shaderSource(n, t), r.compileShader(n), n + }), + (e.prototype.getProgram = function (t, e) { + var r = this.getGL(), + n = this.compileShader(t, r.FRAGMENT_SHADER), + i = this.compileShader(e, r.VERTEX_SHADER) + ;(this.shaderCompileErrors_ = null), + r.getShaderInfoLog(n) && + (this.shaderCompileErrors_ = + 'Fragment shader compilation failed:\n' + + r.getShaderInfoLog(n)), + r.getShaderInfoLog(i) && + (this.shaderCompileErrors_ = + (this.shaderCompileErrors_ || '') + + 'Vertex shader compilation failed:\n' + + r.getShaderInfoLog(i)) + var o = r.createProgram() + return ( + r.attachShader(o, n), r.attachShader(o, i), r.linkProgram(o), o + ) + }), + (e.prototype.getShaderCompileErrors = function () { + return this.shaderCompileErrors_ + }), + (e.prototype.getUniformLocation = function (t) { + return ( + void 0 === this.uniformLocations_[t] && + (this.uniformLocations_[t] = this.getGL().getUniformLocation( + this.currentProgram_, + t, + )), + this.uniformLocations_[t] + ) + }), + (e.prototype.getAttributeLocation = function (t) { + return ( + void 0 === this.attribLocations_[t] && + (this.attribLocations_[t] = this.getGL().getAttribLocation( + this.currentProgram_, + t, + )), + this.attribLocations_[t] + ) + }), + (e.prototype.makeProjectionTransform = function (t, e) { + var r = t.size, + n = t.viewState.rotation, + i = t.viewState.resolution, + o = t.viewState.center + return ( + Ct(e), + kt(e, 0, 0, 2 / (i * r[0]), 2 / (i * r[1]), -n, -o[0], -o[1]), + e + ) + }), + (e.prototype.setUniformFloatValue = function (t, e) { + this.getGL().uniform1f(this.getUniformLocation(t), e) + }), + (e.prototype.setUniformMatrixValue = function (t, e) { + this.getGL().uniformMatrix4fv(this.getUniformLocation(t), !1, e) + }), + (e.prototype.enableAttributeArray_ = function (t, e, r, n, i) { + var o = this.getAttributeLocation(t) + o < 0 || + (this.getGL().enableVertexAttribArray(o), + this.getGL().vertexAttribPointer(o, e, r, !1, n, i)) + }), + (e.prototype.enableAttributes = function (t) { + for (var e = fh(t), r = 0, n = 0; n < t.length; n++) { + var i = t[n] + this.enableAttributeArray_( + i.name, + i.size, + i.type || 5126, + e, + r, + ), + (r += i.size * dh(i.type)) + } + }), + (e.prototype.handleWebGLContextLost = function () { + P(this.bufferCache_), (this.currentProgram_ = null) + }), + (e.prototype.handleWebGLContextRestored = function () {}), + (e.prototype.createTexture = function (t, e, r) { + var n = this.getGL(), + i = r || n.createTexture(), + o = n.RGBA, + a = n.RGBA, + s = n.UNSIGNED_BYTE + return ( + n.bindTexture(n.TEXTURE_2D, i), + e + ? n.texImage2D(n.TEXTURE_2D, 0, o, a, s, e) + : n.texImage2D(n.TEXTURE_2D, 0, o, t[0], t[1], 0, a, s, null), + n.texParameteri(n.TEXTURE_2D, n.TEXTURE_MIN_FILTER, n.LINEAR), + n.texParameteri( + n.TEXTURE_2D, + n.TEXTURE_WRAP_S, + n.CLAMP_TO_EDGE, + ), + n.texParameteri( + n.TEXTURE_2D, + n.TEXTURE_WRAP_T, + n.CLAMP_TO_EDGE, + ), + i + ) + }), + e + ) + })(p), + yh = new Uint8Array(4), + mh = (function () { + function t(t, e) { + this.helper_ = t + var r = t.getGL() + ;(this.texture_ = r.createTexture()), + (this.framebuffer_ = r.createFramebuffer()), + (this.size_ = e || [1, 1]), + (this.data_ = new Uint8Array(0)), + (this.dataCacheDirty_ = !0), + this.updateSize_() + } + return ( + (t.prototype.setSize = function (t) { + b(t, this.size_) || + ((this.size_[0] = t[0]), + (this.size_[1] = t[1]), + this.updateSize_()) + }), + (t.prototype.getSize = function () { + return this.size_ + }), + (t.prototype.clearCachedData = function () { + this.dataCacheDirty_ = !0 + }), + (t.prototype.readAll = function () { + if (this.dataCacheDirty_) { + var t = this.size_, + e = this.helper_.getGL() + e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer_), + e.readPixels( + 0, + 0, + t[0], + t[1], + e.RGBA, + e.UNSIGNED_BYTE, + this.data_, + ), + (this.dataCacheDirty_ = !1) + } + return this.data_ + }), + (t.prototype.readPixel = function (t, e) { + if (t < 0 || e < 0 || t > this.size_[0] || e >= this.size_[1]) + return (yh[0] = 0), (yh[1] = 0), (yh[2] = 0), (yh[3] = 0), yh + this.readAll() + var r = + Math.floor(t) + + (this.size_[1] - Math.floor(e) - 1) * this.size_[0] + return ( + (yh[0] = this.data_[4 * r]), + (yh[1] = this.data_[4 * r + 1]), + (yh[2] = this.data_[4 * r + 2]), + (yh[3] = this.data_[4 * r + 3]), + yh + ) + }), + (t.prototype.getTexture = function () { + return this.texture_ + }), + (t.prototype.getFramebuffer = function () { + return this.framebuffer_ + }), + (t.prototype.updateSize_ = function () { + var t = this.size_, + e = this.helper_.getGL() + ;(this.texture_ = this.helper_.createTexture( + t, + null, + this.texture_, + )), + e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer_), + e.viewport(0, 0, t[0], t[1]), + e.framebufferTexture2D( + e.FRAMEBUFFER, + e.COLOR_ATTACHMENT0, + e.TEXTURE_2D, + this.texture_, + 0, + ), + (this.data_ = new Uint8Array(t[0] * t[1] * 4)) + }), + t + ) + })(), + vh = 1, + _h = 2, + bh = 4, + xh = 8, + wh = 16, + Sh = 31, + Eh = {} + function Th(t) { + if ('number' == typeof t) return vh + if ('boolean' == typeof t) return xh + if ('string' == typeof t) return Io(t) ? bh | _h : _h + if (!Array.isArray(t)) + throw new Error('Unhandled value type: ' + JSON.stringify(t)) + var e = t + if ( + e.every(function (t) { + return 'number' == typeof t + }) + ) + return 3 === e.length || 4 === e.length ? bh | wh : wh + if ('string' != typeof e[0]) + throw new Error( + 'Expected an expression operator but received: ' + + JSON.stringify(e), + ) + var r = Eh[e[0]] + if (void 0 === r) + throw new Error( + 'Unrecognized expression operator: ' + JSON.stringify(e), + ) + return r.getReturnType(e.slice(1)) + } + function Ch(t) { + return Math.log2(t) % 1 == 0 + } + function Oh(t) { + var e = t.toString() + return -1 === e.indexOf('.') ? e + '.0' : e + } + function Ph(t) { + if (t.length < 2 || t.length > 4) + throw new Error( + '`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.', + ) + return 'vec' + t.length + '(' + t.map(Oh).join(', ') + ')' + } + function Rh(t) { + var e = Oo(t).slice() + return ( + e.length < 4 && e.push(1), + Ph( + e.map(function (t, e) { + return e < 3 ? t / 255 : t + }), + ) + ) + } + function Ih(t, e) { + return ( + void 0 === t.stringLiteralsMap[e] && + (t.stringLiteralsMap[e] = Object.keys(t.stringLiteralsMap).length), + t.stringLiteralsMap[e] + ) + } + function Lh(t, e) { + return Oh(Ih(t, e)) + } + function Mh(t, e, r) { + if (Array.isArray(e) && 'string' == typeof e[0]) { + var n = Eh[e[0]] + if (void 0 === n) + throw new Error( + 'Unrecognized expression operator: ' + JSON.stringify(e), + ) + return n.toGlsl(t, e.slice(1), r) + } + var i = Th(e) + return (i & vh) > 0 + ? Oh(e) + : (i & xh) > 0 + ? e.toString() + : (i & _h) > 0 && (void 0 === r || r == _h) + ? Lh(t, e.toString()) + : (i & bh) > 0 && (void 0 === r || r == bh) + ? Rh(e) + : (i & wh) > 0 + ? Ph(e) + : void 0 + } + function Fh(t) { + if (!(Th(t) & vh)) + throw new Error( + 'A numeric value was expected, got ' + + JSON.stringify(t) + + ' instead', + ) + } + function Ah(t) { + for (var e = 0; e < t.length; e++) Fh(t[e]) + } + function kh(t) { + if (!(Th(t) & _h)) + throw new Error( + 'A string value was expected, got ' + + JSON.stringify(t) + + ' instead', + ) + } + function jh(t) { + if (!(Th(t) & xh)) + throw new Error( + 'A boolean value was expected, got ' + + JSON.stringify(t) + + ' instead', + ) + } + function Nh(t, e) { + if (t.length !== e) + throw new Error( + 'Exactly ' + + e + + ' arguments were expected, got ' + + t.length + + ' instead', + ) + } + function Dh(t, e) { + if (t.length < e) + throw new Error( + 'At least ' + + e + + ' arguments were expected, got ' + + t.length + + ' instead', + ) + } + function Gh(t, e) { + if (t.length > e) + throw new Error( + 'At most ' + + e + + ' arguments were expected, got ' + + t.length + + ' instead', + ) + } + function zh(t) { + if (t.length % 2 != 0) + throw new Error( + 'An even amount of arguments was expected, got ' + t + ' instead', + ) + } + function Uh(t, e) { + if (!Ch(e)) + throw new Error( + 'Could not infer only one type from the following expression: ' + + JSON.stringify(t), + ) + } + function Bh(t) { + return { + getReturnType: function (t) { + return xh + }, + toGlsl: function (e, r) { + Nh(r, 2) + for (var n = Sh, i = 0; i < r.length; i++) n &= Th(r[i]) + if (0 === n) + throw new Error( + 'All arguments should be of compatible type, got ' + + JSON.stringify(r) + + ' instead', + ) + return '(' + Mh(e, r[0], n) + ' ' + t + ' ' + Mh(e, r[1], n) + ')' + }, + } + } + function Vh(t) { + return { + getReturnType: function (t) { + return xh + }, + toGlsl: function (e, r) { + Dh(r, 2) + for (var n = 0; n < r.length; n++) jh(r[n]) + return ( + '(' + + r + .map(function (t) { + return Mh(e, t) + }) + .join(' ' + t + ' ') + + ')' + ) + }, + } + } + ;(Eh.get = { + getReturnType: function (t) { + return Sh + }, + toGlsl: function (t, e) { + Nh(e, 1), kh(e[0]) + var r = e[0].toString() + return ( + -1 === t.attributes.indexOf(r) && t.attributes.push(r), + (t.inFragmentShader ? 'v_' : 'a_') + r + ) + }, + }), + (Eh.var = { + getReturnType: function (t) { + return Sh + }, + toGlsl: function (t, e) { + Nh(e, 1), kh(e[0]) + var r = e[0].toString() + return ( + -1 === t.variables.indexOf(r) && t.variables.push(r), 'u_' + r + ) + }, + }), + (Eh.time = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return Nh(e, 0), 'u_time' + }, + }), + (Eh.zoom = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return Nh(e, 0), 'u_zoom' + }, + }), + (Eh.resolution = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return Nh(e, 0), 'u_resolution' + }, + }), + (Eh['*'] = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' * ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['/'] = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' / ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['+'] = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' + ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['-'] = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' - ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh.clamp = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + Nh(e, 3), Ah(e) + var r = Mh(t, e[1]), + n = Mh(t, e[2]) + return 'clamp(' + Mh(t, e[0]) + ', ' + r + ', ' + n + ')' + }, + }), + (Eh['%'] = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), 'mod(' + Mh(t, e[0]) + ', ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['^'] = { + getReturnType: function (t) { + return vh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), 'pow(' + Mh(t, e[0]) + ', ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['>'] = { + getReturnType: function (t) { + return xh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' > ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['>='] = { + getReturnType: function (t) { + return xh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' >= ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['<'] = { + getReturnType: function (t) { + return xh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' < ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['<='] = { + getReturnType: function (t) { + return xh + }, + toGlsl: function (t, e) { + return ( + Nh(e, 2), Ah(e), '(' + Mh(t, e[0]) + ' <= ' + Mh(t, e[1]) + ')' + ) + }, + }), + (Eh['=='] = Bh('==')), + (Eh['!='] = Bh('!=')), + (Eh['!'] = { + getReturnType: function (t) { + return xh + }, + toGlsl: function (t, e) { + return Nh(e, 1), jh(e[0]), '(!' + Mh(t, e[0]) + ')' + }, + }), + (Eh.all = Vh('&&')), + (Eh.any = Vh('||')), + (Eh.between = { + getReturnType: function (t) { + return xh + }, + toGlsl: function (t, e) { + Nh(e, 3), Ah(e) + var r = Mh(t, e[1]), + n = Mh(t, e[2]), + i = Mh(t, e[0]) + return '(' + i + ' >= ' + r + ' && ' + i + ' <= ' + n + ')' + }, + }), + (Eh.array = { + getReturnType: function (t) { + return wh + }, + toGlsl: function (t, e) { + Dh(e, 2), Gh(e, 4), Ah(e) + var r = e.map(function (e) { + return Mh(t, e, vh) + }) + return 'vec' + e.length + '(' + r.join(', ') + ')' + }, + }), + (Eh.color = { + getReturnType: function (t) { + return bh + }, + toGlsl: function (t, e) { + Dh(e, 3), Gh(e, 4), Ah(e) + var r = e + 3 === e.length && r.push(1) + var n = e.map(function (e, r) { + return Mh(t, e, vh) + (r < 3 ? ' / 255.0' : '') + }) + return 'vec' + e.length + '(' + n.join(', ') + ')' + }, + }), + (Eh.interpolate = { + getReturnType: function (t) { + for (var e = bh | vh, r = 3; r < t.length; r += 2) e &= Th(t[r]) + return e + }, + toGlsl: function (t, e, r) { + zh(e), Dh(e, 6) + var n, + i = e[0] + switch (i[0]) { + case 'linear': + n = 1 + break + case 'exponential': + n = i[1] + break + default: + n = null + } + if (!n) + throw new Error( + 'Invalid interpolation type for "interpolate" operator, received: ' + + JSON.stringify(i), + ) + var o = void 0 !== r ? r : Sh, + a = Eh.interpolate.getReturnType(e) & o + Uh(e, a) + for ( + var s = Mh(t, e[1]), l = null, u = 2; + u < e.length - 2; + u += 2 + ) { + var c = Mh(t, e[u]), + h = Mh(t, e[u + 1], a), + p = Mh(t, e[u + 2]) + l = + 'mix(' + + (l || h) + + ', ' + + Mh(t, e[u + 3], a) + + ', pow(clamp((' + + s + + ' - ' + + c + + ') / (' + + p + + ' - ' + + c + + '), 0.0, 1.0), ' + + Oh(n) + + '))' + } + return l + }, + }), + (Eh.match = { + getReturnType: function (t) { + for (var e = Sh, r = 2; r < t.length; r += 2) e &= Th(t[r]) + return (e &= Th(t[t.length - 1])) + }, + toGlsl: function (t, e, r) { + zh(e), Dh(e, 4) + var n = void 0 !== r ? r : Sh, + i = Eh.match.getReturnType(e) & n + Uh(e, i) + for ( + var o = Mh(t, e[0]), + a = Mh(t, e[e.length - 1], i), + s = null, + l = e.length - 3; + l >= 1; + l -= 2 + ) { + s = + '(' + + o + + ' == ' + + Mh(t, e[l]) + + ' ? ' + + Mh(t, e[l + 1], i) + + ' : ' + + (s || a) + + ')' + } + return s + }, + }), + (Eh.case = { + getReturnType: function (t) { + for (var e = Sh, r = 1; r < t.length; r += 2) e &= Th(t[r]) + return (e &= Th(t[t.length - 1])) + }, + toGlsl: function (t, e, r) { + !(function (t) { + if (t.length % 2 == 0) + throw new Error( + 'An odd amount of arguments was expected, got ' + + t + + ' instead', + ) + })(e), + Dh(e, 3) + var n = void 0 !== r ? r : Sh, + i = Eh.case.getReturnType(e) & n + Uh(e, i) + for (var o = 0; o < e.length - 1; o += 2) jh(e[o]) + var a = Mh(t, e[e.length - 1], i), + s = null + for (o = e.length - 3; o >= 0; o -= 2) { + s = + '(' + + Mh(t, e[o]) + + ' ? ' + + Mh(t, e[o + 1], i) + + ' : ' + + (s || a) + + ')' + } + return s + }, + }) + var Yh = (function () { + function t() { + ;(this.uniforms = []), + (this.attributes = []), + (this.varyings = []), + (this.sizeExpression = 'vec2(1.0)'), + (this.rotationExpression = '0.0'), + (this.offsetExpression = 'vec2(0.0)'), + (this.colorExpression = 'vec4(1.0)'), + (this.texCoordExpression = 'vec4(0.0, 0.0, 1.0, 1.0)'), + (this.discardExpression = 'false'), + (this.rotateWithView = !1) + } + return ( + (t.prototype.addUniform = function (t) { + return this.uniforms.push(t), this + }), + (t.prototype.addAttribute = function (t) { + return this.attributes.push(t), this + }), + (t.prototype.addVarying = function (t, e, r) { + return this.varyings.push({ name: t, type: e, expression: r }), this + }), + (t.prototype.setSizeExpression = function (t) { + return (this.sizeExpression = t), this + }), + (t.prototype.setRotationExpression = function (t) { + return (this.rotationExpression = t), this + }), + (t.prototype.setSymbolOffsetExpression = function (t) { + return (this.offsetExpression = t), this + }), + (t.prototype.setColorExpression = function (t) { + return (this.colorExpression = t), this + }), + (t.prototype.setTextureCoordinateExpression = function (t) { + return (this.texCoordExpression = t), this + }), + (t.prototype.setFragmentDiscardExpression = function (t) { + return (this.discardExpression = t), this + }), + (t.prototype.setSymbolRotateWithView = function (t) { + return (this.rotateWithView = t), this + }), + (t.prototype.getSizeExpression = function () { + return this.sizeExpression + }), + (t.prototype.getOffsetExpression = function () { + return this.offsetExpression + }), + (t.prototype.getColorExpression = function () { + return this.colorExpression + }), + (t.prototype.getTextureCoordinateExpression = function () { + return this.texCoordExpression + }), + (t.prototype.getFragmentDiscardExpression = function () { + return this.discardExpression + }), + (t.prototype.getSymbolVertexShader = function (t) { + var e = this.rotateWithView + ? 'u_offsetScaleMatrix * u_offsetRotateMatrix' + : 'u_offsetScaleMatrix', + r = this.attributes, + n = this.varyings + return ( + t && + ((r = r.concat('vec4 a_hitColor')), + (n = n.concat({ + name: 'v_hitColor', + type: 'vec4', + expression: 'a_hitColor', + }))), + 'precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n' + + this.uniforms + .map(function (t) { + return 'uniform ' + t + ';' + }) + .join('\n') + + '\nattribute vec2 a_position;\nattribute float a_index;\n' + + r + .map(function (t) { + return 'attribute ' + t + ';' + }) + .join('\n') + + '\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n' + + n + .map(function (t) { + return 'varying ' + t.type + ' ' + t.name + ';' + }) + .join('\n') + + '\nvoid main(void) {\n mat4 offsetMatrix = ' + + e + + ';\n vec2 halfSize = ' + + this.sizeExpression + + ' * 0.5;\n vec2 offset = ' + + this.offsetExpression + + ';\n float angle = ' + + this.rotationExpression + + ';\n float offsetX;\n float offsetY;\n if (a_index == 0.0) {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n } else if (a_index == 1.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else if (a_index == 2.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n }\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n vec4 texCoord = ' + + this.texCoordExpression + + ';\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n v_quadCoord = vec2(u, v);\n' + + n + .map(function (t) { + return ' ' + t.name + ' = ' + t.expression + ';' + }) + .join('\n') + + '\n}' + ) + }), + (t.prototype.getSymbolFragmentShader = function (t) { + var e = t + ? ' if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;' + : '', + r = this.varyings + return ( + t && + (r = r.concat({ + name: 'v_hitColor', + type: 'vec4', + expression: 'a_hitColor', + })), + 'precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n' + + this.uniforms + .map(function (t) { + return 'uniform ' + t + ';' + }) + .join('\n') + + '\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n' + + r + .map(function (t) { + return 'varying ' + t.type + ' ' + t.name + ';' + }) + .join('\n') + + '\nvoid main(void) {\n if (' + + this.discardExpression + + ') { discard; }\n gl_FragColor = ' + + this.colorExpression + + ';\n gl_FragColor.rgb *= gl_FragColor.a;\n' + + e + + '\n}' + ) + }), + t + ) + })() + function Wh(t) { + var e = t.symbol, + r = void 0 !== e.size ? e.size : 1, + n = e.color || 'white', + i = e.textureCoord || [0, 0, 1, 1], + o = e.offset || [0, 0], + a = void 0 !== e.opacity ? e.opacity : 1, + s = void 0 !== e.rotation ? e.rotation : 0, + l = { + inFragmentShader: !1, + variables: [], + attributes: [], + stringLiteralsMap: {}, + }, + u = Mh(l, r, wh | vh), + c = Mh(l, o, wh), + h = Mh(l, i, wh), + p = Mh(l, s, vh), + f = { + inFragmentShader: !0, + variables: l.variables, + attributes: [], + stringLiteralsMap: l.stringLiteralsMap, + }, + d = Mh(f, n, bh), + g = Mh(f, a, vh), + y = '1.0', + m = 'vec2(' + Mh(f, r, wh | vh) + ').x' + switch (e.symbolType) { + case 'square': + case 'image': + break + case 'circle': + y = + '(1.0-smoothstep(1.-4./' + + m + + ',1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))' + break + case 'triangle': + var v = '(v_quadCoord*2.-1.)', + _ = '(atan(' + v + '.x,' + v + '.y))' + y = + '(1.0-smoothstep(.5-3./' + + m + + ',.5,cos(floor(.5+' + + _ + + '/2.094395102)*2.094395102-' + + _ + + ')*length(' + + v + + ')))' + break + default: + throw new Error('Unexpected symbol type: ' + e.symbolType) + } + var b = new Yh() + .setSizeExpression('vec2(' + u + ')') + .setRotationExpression(p) + .setSymbolOffsetExpression(c) + .setTextureCoordinateExpression(h) + .setSymbolRotateWithView(!!e.rotateWithView) + .setColorExpression( + 'vec4(' + d + '.rgb, ' + d + '.a * ' + g + ' * ' + y + ')', + ) + if (t.filter) { + var x = Mh(f, t.filter, xh) + b.setFragmentDiscardExpression('!' + x) + } + var w = {} + if ( + (f.variables.forEach(function (e) { + b.addUniform('float u_' + e), + (w['u_' + e] = function () { + if (!t.variables || void 0 === t.variables[e]) + throw new Error( + 'The following variable is missing from the style: ' + e, + ) + var r = t.variables[e] + return ( + 'string' == typeof r && (r = Ih(l, r)), + void 0 !== r ? r : -9999999 + ) + }) + }), + 'image' === e.symbolType && e.src) + ) { + var S = new Image() + ;(S.src = e.src), + b + .addUniform('sampler2D u_texture') + .setColorExpression( + b.getColorExpression() + ' * texture2D(u_texture, v_texCoord)', + ), + (w.u_texture = S) + } + return ( + f.attributes.forEach(function (t) { + ;-1 === l.attributes.indexOf(t) && l.attributes.push(t), + b.addVarying('v_' + t, 'float', 'a_' + t) + }), + l.attributes.forEach(function (t) { + b.addAttribute('float a_' + t) + }), + { + builder: b, + attributes: l.attributes.map(function (t) { + return { + name: t, + callback: function (e, r) { + var n = r[t] + return ( + 'string' == typeof n && (n = Ih(l, n)), + void 0 !== n ? n : -9999999 + ) + }, + } + }), + uniforms: w, + } + ) + } + var qh = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Xh = (function (t) { + function e(e) { + var r = + t.call(this, { + extent: e.extent, + origin: e.origin, + origins: e.origins, + resolutions: e.resolutions, + tileSize: e.tileSize, + tileSizes: e.tileSizes, + sizes: e.sizes, + }) || this + return (r.matrixIds_ = e.matrixIds), r + } + return ( + qh(e, t), + (e.prototype.getMatrixId = function (t) { + return this.matrixIds_[t] + }), + (e.prototype.getMatrixIds = function () { + return this.matrixIds_ + }), + e + ) + })(ic), + Zh = Xh + function Kh(t, e, r) { + var n = [], + i = [], + o = [], + a = [], + s = [], + l = void 0 !== r ? r : [], + u = Gr(t.SupportedCRS), + c = u.getMetersPerUnit(), + h = 'ne' == u.getAxisOrientation().substr(0, 2) + return ( + t.TileMatrix.sort(function (t, e) { + return e.ScaleDenominator - t.ScaleDenominator + }), + t.TileMatrix.forEach(function (e) { + if ( + !(l.length > 0) || + _(l, function (r) { + return ( + e.Identifier == r.TileMatrix || + (-1 === e.Identifier.indexOf(':') && + t.Identifier + ':' + e.Identifier === r.TileMatrix) + ) + }) + ) { + i.push(e.Identifier) + var r = (28e-5 * e.ScaleDenominator) / c, + u = e.TileWidth, + p = e.TileHeight + h + ? o.push([e.TopLeftCorner[1], e.TopLeftCorner[0]]) + : o.push(e.TopLeftCorner), + n.push(r), + a.push(u == p ? u : [u, p]), + s.push([e.MatrixWidth, e.MatrixHeight]) + } + }), + new Xh({ + extent: e, + origins: o, + resolutions: n, + matrixIds: i, + tileSizes: a, + sizes: s, + }) + ) + } + var Hh = (function () { + function t(t) { + ;(this.opacity_ = t.opacity), + (this.rotateWithView_ = t.rotateWithView), + (this.rotation_ = t.rotation), + (this.scale_ = t.scale), + (this.scaleArray_ = Is(t.scale)), + (this.displacement_ = t.displacement) + } + return ( + (t.prototype.clone = function () { + var e = this.getScale() + return new t({ + opacity: this.getOpacity(), + scale: Array.isArray(e) ? e.slice() : e, + rotation: this.getRotation(), + rotateWithView: this.getRotateWithView(), + displacement: this.getDisplacement().slice(), + }) + }), + (t.prototype.getOpacity = function () { + return this.opacity_ + }), + (t.prototype.getRotateWithView = function () { + return this.rotateWithView_ + }), + (t.prototype.getRotation = function () { + return this.rotation_ + }), + (t.prototype.getScale = function () { + return this.scale_ + }), + (t.prototype.getScaleArray = function () { + return this.scaleArray_ + }), + (t.prototype.getDisplacement = function () { + return this.displacement_ + }), + (t.prototype.getAnchor = function () { + return n() + }), + (t.prototype.getImage = function (t) { + return n() + }), + (t.prototype.getHitDetectionImage = function () { + return n() + }), + (t.prototype.getPixelRatio = function (t) { + return 1 + }), + (t.prototype.getImageState = function () { + return n() + }), + (t.prototype.getImageSize = function () { + return n() + }), + (t.prototype.getHitDetectionImageSize = function () { + return n() + }), + (t.prototype.getOrigin = function () { + return n() + }), + (t.prototype.getSize = function () { + return n() + }), + (t.prototype.setOpacity = function (t) { + this.opacity_ = t + }), + (t.prototype.setRotateWithView = function (t) { + this.rotateWithView_ = t + }), + (t.prototype.setRotation = function (t) { + this.rotation_ = t + }), + (t.prototype.setScale = function (t) { + ;(this.scale_ = t), (this.scaleArray_ = Is(t)) + }), + (t.prototype.listenImageChange = function (t) { + n() + }), + (t.prototype.load = function () { + n() + }), + (t.prototype.unlistenImageChange = function (t) { + n() + }), + t + ) + })(), + $h = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Jh = (function (t) { + function e(e) { + var r = this, + n = void 0 !== e.rotateWithView && e.rotateWithView + return ( + ((r = + t.call(this, { + opacity: 1, + rotateWithView: n, + rotation: void 0 !== e.rotation ? e.rotation : 0, + scale: void 0 !== e.scale ? e.scale : 1, + displacement: + void 0 !== e.displacement ? e.displacement : [0, 0], + }) || this).canvas_ = {}), + (r.hitDetectionCanvas_ = null), + (r.fill_ = void 0 !== e.fill ? e.fill : null), + (r.origin_ = [0, 0]), + (r.points_ = e.points), + (r.radius_ = void 0 !== e.radius ? e.radius : e.radius1), + (r.radius2_ = e.radius2), + (r.angle_ = void 0 !== e.angle ? e.angle : 0), + (r.stroke_ = void 0 !== e.stroke ? e.stroke : null), + (r.anchor_ = null), + (r.size_ = null), + (r.imageSize_ = null), + (r.hitDetectionImageSize_ = null), + r.render(), + r + ) + } + return ( + $h(e, t), + (e.prototype.clone = function () { + var t = this.getScale(), + r = new e({ + fill: this.getFill() ? this.getFill().clone() : void 0, + points: this.getPoints(), + radius: this.getRadius(), + radius2: this.getRadius2(), + angle: this.getAngle(), + stroke: this.getStroke() ? this.getStroke().clone() : void 0, + rotation: this.getRotation(), + rotateWithView: this.getRotateWithView(), + scale: Array.isArray(t) ? t.slice() : t, + displacement: this.getDisplacement().slice(), + }) + return r.setOpacity(this.getOpacity()), r + }), + (e.prototype.getAnchor = function () { + return this.anchor_ + }), + (e.prototype.getAngle = function () { + return this.angle_ + }), + (e.prototype.getFill = function () { + return this.fill_ + }), + (e.prototype.getHitDetectionImage = function () { + if (!this.hitDetectionCanvas_) { + var t = this.createRenderOptions() + this.createHitDetectionCanvas_(t) + } + return this.hitDetectionCanvas_ + }), + (e.prototype.getImage = function (t) { + if (!this.canvas_[t || 1]) { + var e = this.createRenderOptions(), + r = uo(e.size * t || 1, e.size * t || 1) + this.draw_(e, r, 0, 0, t || 1), + (this.canvas_[t || 1] = r.canvas) + } + return this.canvas_[t || 1] + }), + (e.prototype.getPixelRatio = function (t) { + return t + }), + (e.prototype.getImageSize = function () { + return this.imageSize_ + }), + (e.prototype.getHitDetectionImageSize = function () { + return this.hitDetectionImageSize_ + }), + (e.prototype.getImageState = function () { + return ki + }), + (e.prototype.getOrigin = function () { + return this.origin_ + }), + (e.prototype.getPoints = function () { + return this.points_ + }), + (e.prototype.getRadius = function () { + return this.radius_ + }), + (e.prototype.getRadius2 = function () { + return this.radius2_ + }), + (e.prototype.getSize = function () { + return this.size_ + }), + (e.prototype.getStroke = function () { + return this.stroke_ + }), + (e.prototype.listenImageChange = function (t) {}), + (e.prototype.load = function () {}), + (e.prototype.unlistenImageChange = function (t) {}), + (e.prototype.createRenderOptions = function () { + var t, + e = 'round', + r = 'round', + n = 0, + i = null, + o = 0, + a = 0 + return ( + this.stroke_ && + (null === (t = this.stroke_.getColor()) && (t = '#000'), + (t = Tu(t)), + void 0 === (a = this.stroke_.getWidth()) && (a = 1), + (i = this.stroke_.getLineDash()), + (o = this.stroke_.getLineDashOffset()), + void 0 === (r = this.stroke_.getLineJoin()) && (r = 'round'), + void 0 === (e = this.stroke_.getLineCap()) && (e = 'round'), + void 0 === (n = this.stroke_.getMiterLimit()) && (n = 10)), + { + strokeStyle: t, + strokeWidth: a, + size: 2 * (this.radius_ + a) + 1, + lineCap: e, + lineDash: i, + lineDashOffset: o, + lineJoin: r, + miterLimit: n, + } + ) + }), + (e.prototype.render = function () { + var t = this.createRenderOptions(), + e = uo(t.size, t.size) + this.draw_(t, e, 0, 0, 1), + (this.canvas_ = {}), + (this.canvas_[1] = e.canvas) + var r = e.canvas.width, + n = r, + i = this.getDisplacement() + ;(this.hitDetectionImageSize_ = [t.size, t.size]), + this.createHitDetectionCanvas_(t), + (this.anchor_ = [r / 2 - i[0], r / 2 + i[1]]), + (this.size_ = [r, r]), + (this.imageSize_ = [n, n]) + }), + (e.prototype.draw_ = function (t, e, r, n, i) { + var o, a, s + e.setTransform(i, 0, 0, i, 0, 0), e.translate(r, n), e.beginPath() + var l = this.points_ + if (l === 1 / 0) + e.arc(t.size / 2, t.size / 2, this.radius_, 0, 2 * Math.PI, !0) + else { + var u = void 0 !== this.radius2_ ? this.radius2_ : this.radius_ + for (u !== this.radius_ && (l *= 2), o = 0; o <= l; o++) + (a = (2 * o * Math.PI) / l - Math.PI / 2 + this.angle_), + (s = o % 2 == 0 ? this.radius_ : u), + e.lineTo( + t.size / 2 + s * Math.cos(a), + t.size / 2 + s * Math.sin(a), + ) + } + if (this.fill_) { + var c = this.fill_.getColor() + null === c && (c = '#000'), (e.fillStyle = Tu(c)), e.fill() + } + this.stroke_ && + ((e.strokeStyle = t.strokeStyle), + (e.lineWidth = t.strokeWidth), + e.setLineDash && + t.lineDash && + (e.setLineDash(t.lineDash), + (e.lineDashOffset = t.lineDashOffset)), + (e.lineCap = t.lineCap), + (e.lineJoin = t.lineJoin), + (e.miterLimit = t.miterLimit), + e.stroke()), + e.closePath() + }), + (e.prototype.createHitDetectionCanvas_ = function (t) { + if (((this.hitDetectionCanvas_ = this.getImage(1)), this.fill_)) { + var e = this.fill_.getColor(), + r = 0 + if ( + ('string' == typeof e && (e = Oo(e)), + null === e + ? (r = 1) + : Array.isArray(e) && (r = 4 === e.length ? e[3] : 1), + 0 === r) + ) { + var n = uo(t.size, t.size) + ;(this.hitDetectionCanvas_ = n.canvas), + this.drawHitDetectionCanvas_(t, n, 0, 0) + } + } + }), + (e.prototype.drawHitDetectionCanvas_ = function (t, e, r, n) { + e.translate(r, n), e.beginPath() + var i = this.points_ + if (i === 1 / 0) + e.arc(t.size / 2, t.size / 2, this.radius_, 0, 2 * Math.PI, !0) + else { + var o = void 0 !== this.radius2_ ? this.radius2_ : this.radius_ + o !== this.radius_ && (i *= 2) + var a = void 0, + s = void 0, + l = void 0 + for (a = 0; a <= i; a++) + (l = (2 * a * Math.PI) / i - Math.PI / 2 + this.angle_), + (s = a % 2 == 0 ? this.radius_ : o), + e.lineTo( + t.size / 2 + s * Math.cos(l), + t.size / 2 + s * Math.sin(l), + ) + } + ;(e.fillStyle = '#000'), + e.fill(), + this.stroke_ && + ((e.strokeStyle = t.strokeStyle), + (e.lineWidth = t.strokeWidth), + t.lineDash && + (e.setLineDash(t.lineDash), + (e.lineDashOffset = t.lineDashOffset)), + e.stroke()), + e.closePath() + }), + e + ) + })(Hh), + Qh = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + tp = (function (t) { + function e(e) { + var r = e || {} + return ( + t.call(this, { + points: 1 / 0, + fill: r.fill, + radius: r.radius, + stroke: r.stroke, + scale: void 0 !== r.scale ? r.scale : 1, + rotation: void 0 !== r.rotation ? r.rotation : 0, + rotateWithView: void 0 !== r.rotateWithView && r.rotateWithView, + displacement: + void 0 !== r.displacement ? r.displacement : [0, 0], + }) || this + ) + } + return ( + Qh(e, t), + (e.prototype.clone = function () { + var t = this.getScale(), + r = new e({ + fill: this.getFill() ? this.getFill().clone() : void 0, + stroke: this.getStroke() ? this.getStroke().clone() : void 0, + radius: this.getRadius(), + scale: Array.isArray(t) ? t.slice() : t, + rotation: this.getRotation(), + rotateWithView: this.getRotateWithView(), + displacement: this.getDisplacement().slice(), + }) + return r.setOpacity(this.getOpacity()), r + }), + (e.prototype.setRadius = function (t) { + ;(this.radius_ = t), this.render() + }), + e + ) + })(Jh), + ep = (function () { + function t(t) { + var e = t || {} + this.color_ = void 0 !== e.color ? e.color : null + } + return ( + (t.prototype.clone = function () { + var e = this.getColor() + return new t({ + color: Array.isArray(e) ? e.slice() : e || void 0, + }) + }), + (t.prototype.getColor = function () { + return this.color_ + }), + (t.prototype.setColor = function (t) { + this.color_ = t + }), + t + ) + })(), + rp = 'fraction', + np = 'pixels', + ip = 'bottom-left', + op = 'bottom-right', + ap = 'top-left', + sp = 'top-right', + lp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + up = null, + cp = (function (t) { + function e(e, r, n, i, o, a) { + var s = t.call(this) || this + return ( + (s.hitDetectionImage_ = null), + (s.image_ = e || new Image()), + null !== i && (s.image_.crossOrigin = i), + (s.canvas_ = {}), + (s.color_ = a), + (s.unlisten_ = null), + (s.imageState_ = o), + (s.size_ = n), + (s.src_ = r), + s.tainted_, + s + ) + } + return ( + lp(e, t), + (e.prototype.isTainted_ = function () { + if (void 0 === this.tainted_ && this.imageState_ === ki) { + up || (up = uo(1, 1)), up.drawImage(this.image_, 0, 0) + try { + up.getImageData(0, 0, 1, 1), (this.tainted_ = !1) + } catch (t) { + ;(up = null), (this.tainted_ = !0) + } + } + return !0 === this.tainted_ + }), + (e.prototype.dispatchChangeEvent_ = function () { + this.dispatchEvent(F) + }), + (e.prototype.handleImageError_ = function () { + ;(this.imageState_ = ji), + this.unlistenImage_(), + this.dispatchChangeEvent_() + }), + (e.prototype.handleImageLoad_ = function () { + ;(this.imageState_ = ki), + this.size_ + ? ((this.image_.width = this.size_[0]), + (this.image_.height = this.size_[1])) + : (this.size_ = [this.image_.width, this.image_.height]), + this.unlistenImage_(), + this.dispatchChangeEvent_() + }), + (e.prototype.getImage = function (t) { + return ( + this.replaceColor_(t), + this.canvas_[t] ? this.canvas_[t] : this.image_ + ) + }), + (e.prototype.getPixelRatio = function (t) { + return this.replaceColor_(t), this.canvas_[t] ? t : 1 + }), + (e.prototype.getImageState = function () { + return this.imageState_ + }), + (e.prototype.getHitDetectionImage = function () { + if (!this.hitDetectionImage_) + if (this.isTainted_()) { + var t = this.size_[0], + e = this.size_[1], + r = uo(t, e) + r.fillRect(0, 0, t, e), (this.hitDetectionImage_ = r.canvas) + } else this.hitDetectionImage_ = this.image_ + return this.hitDetectionImage_ + }), + (e.prototype.getSize = function () { + return this.size_ + }), + (e.prototype.getSrc = function () { + return this.src_ + }), + (e.prototype.load = function () { + if (this.imageState_ == Fi) { + this.imageState_ = Ai + try { + this.image_.src = this.src_ + } catch (t) { + this.handleImageError_() + } + this.unlisten_ = Zi( + this.image_, + this.handleImageLoad_.bind(this), + this.handleImageError_.bind(this), + ) + } + }), + (e.prototype.replaceColor_ = function (t) { + if (this.color_ && !this.canvas_[t]) { + var e = document.createElement('canvas') + ;(this.canvas_[t] = e), + (e.width = Math.ceil(this.image_.width * t)), + (e.height = Math.ceil(this.image_.height * t)) + var r = e.getContext('2d') + if ( + (r.scale(t, t), + r.drawImage(this.image_, 0, 0), + (r.globalCompositeOperation = 'multiply'), + 'multiply' === r.globalCompositeOperation || + this.isTainted_()) + ) + (r.fillStyle = wo(this.color_)), + r.fillRect(0, 0, e.width, e.height), + (r.globalCompositeOperation = 'destination-in'), + r.drawImage(this.image_, 0, 0) + else { + for ( + var n = r.getImageData(0, 0, e.width, e.height), + i = n.data, + o = this.color_[0] / 255, + a = this.color_[1] / 255, + s = this.color_[2] / 255, + l = this.color_[3], + u = 0, + c = i.length; + u < c; + u += 4 + ) + (i[u] *= o), + (i[u + 1] *= a), + (i[u + 2] *= s), + (i[u + 3] *= l) + r.putImageData(n, 0, 0) + } + } + }), + (e.prototype.unlistenImage_ = function () { + this.unlisten_ && (this.unlisten_(), (this.unlisten_ = null)) + }), + e + ) + })(M) + function hp(t, e, r, n, i, o) { + var a = Ao.get(e, n, o) + return a || ((a = new cp(t, e, r, n, i, o)), Ao.set(e, n, o, a)), a + } + var pp = cp, + fp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + dp = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = void 0 !== n.opacity ? n.opacity : 1, + a = void 0 !== n.rotation ? n.rotation : 0, + s = void 0 !== n.scale ? n.scale : 1, + l = void 0 !== n.rotateWithView && n.rotateWithView + ;((r = + t.call(this, { + opacity: i, + rotation: a, + scale: s, + displacement: + void 0 !== n.displacement ? n.displacement : [0, 0], + rotateWithView: l, + }) || this).anchor_ = + void 0 !== n.anchor ? n.anchor : [0.5, 0.5]), + (r.normalizedAnchor_ = null), + (r.anchorOrigin_ = + void 0 !== n.anchorOrigin ? n.anchorOrigin : ap), + (r.anchorXUnits_ = + void 0 !== n.anchorXUnits ? n.anchorXUnits : rp), + (r.anchorYUnits_ = + void 0 !== n.anchorYUnits ? n.anchorYUnits : rp), + (r.crossOrigin_ = void 0 !== n.crossOrigin ? n.crossOrigin : null) + var u = void 0 !== n.img ? n.img : null, + c = void 0 !== n.imgSize ? n.imgSize : null, + h = n.src + pt(!(void 0 !== h && u), 4), + pt(!u || (u && c), 5), + (void 0 !== h && 0 !== h.length) || !u || (h = u.src || o(u)), + pt(void 0 !== h && h.length > 0, 6) + var p = void 0 !== n.src ? Fi : ki + return ( + (r.color_ = void 0 !== n.color ? Oo(n.color) : null), + (r.iconImage_ = hp(u, h, c, r.crossOrigin_, p, r.color_)), + (r.offset_ = void 0 !== n.offset ? n.offset : [0, 0]), + (r.offsetOrigin_ = + void 0 !== n.offsetOrigin ? n.offsetOrigin : ap), + (r.origin_ = null), + (r.size_ = void 0 !== n.size ? n.size : null), + r + ) + } + return ( + fp(e, t), + (e.prototype.clone = function () { + var t = this.getScale() + return new e({ + anchor: this.anchor_.slice(), + anchorOrigin: this.anchorOrigin_, + anchorXUnits: this.anchorXUnits_, + anchorYUnits: this.anchorYUnits_, + crossOrigin: this.crossOrigin_, + color: + this.color_ && this.color_.slice + ? this.color_.slice() + : this.color_ || void 0, + src: this.getSrc(), + offset: this.offset_.slice(), + offsetOrigin: this.offsetOrigin_, + size: null !== this.size_ ? this.size_.slice() : void 0, + opacity: this.getOpacity(), + scale: Array.isArray(t) ? t.slice() : t, + rotation: this.getRotation(), + rotateWithView: this.getRotateWithView(), + }) + }), + (e.prototype.getAnchor = function () { + if (this.normalizedAnchor_) return this.normalizedAnchor_ + var t = this.anchor_, + e = this.getSize() + if (this.anchorXUnits_ == rp || this.anchorYUnits_ == rp) { + if (!e) return null + ;(t = this.anchor_.slice()), + this.anchorXUnits_ == rp && (t[0] *= e[0]), + this.anchorYUnits_ == rp && (t[1] *= e[1]) + } + if (this.anchorOrigin_ != ap) { + if (!e) return null + t === this.anchor_ && (t = this.anchor_.slice()), + (this.anchorOrigin_ != sp && this.anchorOrigin_ != op) || + (t[0] = -t[0] + e[0]), + (this.anchorOrigin_ != ip && this.anchorOrigin_ != op) || + (t[1] = -t[1] + e[1]) + } + return (this.normalizedAnchor_ = t), this.normalizedAnchor_ + }), + (e.prototype.setAnchor = function (t) { + ;(this.anchor_ = t), (this.normalizedAnchor_ = null) + }), + (e.prototype.getColor = function () { + return this.color_ + }), + (e.prototype.getImage = function (t) { + return this.iconImage_.getImage(t) + }), + (e.prototype.getPixelRatio = function (t) { + return this.iconImage_.getPixelRatio(t) + }), + (e.prototype.getImageSize = function () { + return this.iconImage_.getSize() + }), + (e.prototype.getHitDetectionImageSize = function () { + return this.getImageSize() + }), + (e.prototype.getImageState = function () { + return this.iconImage_.getImageState() + }), + (e.prototype.getHitDetectionImage = function () { + return this.iconImage_.getHitDetectionImage() + }), + (e.prototype.getOrigin = function () { + if (this.origin_) return this.origin_ + var t = this.offset_, + e = this.getDisplacement() + if (this.offsetOrigin_ != ap) { + var r = this.getSize(), + n = this.iconImage_.getSize() + if (!r || !n) return null + ;(t = t.slice()), + (this.offsetOrigin_ != sp && this.offsetOrigin_ != op) || + (t[0] = n[0] - r[0] - t[0]), + (this.offsetOrigin_ != ip && this.offsetOrigin_ != op) || + (t[1] = n[1] - r[1] - t[1]) + } + return ( + (t[0] += e[0]), (t[1] += e[1]), (this.origin_ = t), this.origin_ + ) + }), + (e.prototype.getSrc = function () { + return this.iconImage_.getSrc() + }), + (e.prototype.getSize = function () { + return this.size_ ? this.size_ : this.iconImage_.getSize() + }), + (e.prototype.listenImageChange = function (t) { + this.iconImage_.addEventListener(F, t) + }), + (e.prototype.load = function () { + this.iconImage_.load() + }), + (e.prototype.unlistenImageChange = function (t) { + this.iconImage_.removeEventListener(F, t) + }), + e + ) + })(Hh), + gp = (function () { + function t(t) { + var e = t || {} + ;(this.color_ = void 0 !== e.color ? e.color : null), + (this.lineCap_ = e.lineCap), + (this.lineDash_ = void 0 !== e.lineDash ? e.lineDash : null), + (this.lineDashOffset_ = e.lineDashOffset), + (this.lineJoin_ = e.lineJoin), + (this.miterLimit_ = e.miterLimit), + (this.width_ = e.width) + } + return ( + (t.prototype.clone = function () { + var e = this.getColor() + return new t({ + color: Array.isArray(e) ? e.slice() : e || void 0, + lineCap: this.getLineCap(), + lineDash: this.getLineDash() + ? this.getLineDash().slice() + : void 0, + lineDashOffset: this.getLineDashOffset(), + lineJoin: this.getLineJoin(), + miterLimit: this.getMiterLimit(), + width: this.getWidth(), + }) + }), + (t.prototype.getColor = function () { + return this.color_ + }), + (t.prototype.getLineCap = function () { + return this.lineCap_ + }), + (t.prototype.getLineDash = function () { + return this.lineDash_ + }), + (t.prototype.getLineDashOffset = function () { + return this.lineDashOffset_ + }), + (t.prototype.getLineJoin = function () { + return this.lineJoin_ + }), + (t.prototype.getMiterLimit = function () { + return this.miterLimit_ + }), + (t.prototype.getWidth = function () { + return this.width_ + }), + (t.prototype.setColor = function (t) { + this.color_ = t + }), + (t.prototype.setLineCap = function (t) { + this.lineCap_ = t + }), + (t.prototype.setLineDash = function (t) { + this.lineDash_ = t + }), + (t.prototype.setLineDashOffset = function (t) { + this.lineDashOffset_ = t + }), + (t.prototype.setLineJoin = function (t) { + this.lineJoin_ = t + }), + (t.prototype.setMiterLimit = function (t) { + this.miterLimit_ = t + }), + (t.prototype.setWidth = function (t) { + this.width_ = t + }), + t + ) + })(), + yp = (function () { + function t(t) { + var e = t || {} + ;(this.geometry_ = null), + (this.geometryFunction_ = xp), + void 0 !== e.geometry && this.setGeometry(e.geometry), + (this.fill_ = void 0 !== e.fill ? e.fill : null), + (this.image_ = void 0 !== e.image ? e.image : null), + (this.renderer_ = void 0 !== e.renderer ? e.renderer : null), + (this.stroke_ = void 0 !== e.stroke ? e.stroke : null), + (this.text_ = void 0 !== e.text ? e.text : null), + (this.zIndex_ = e.zIndex) + } + return ( + (t.prototype.clone = function () { + var e = this.getGeometry() + return ( + e && 'object' == typeof e && (e = e.clone()), + new t({ + geometry: e, + fill: this.getFill() ? this.getFill().clone() : void 0, + image: this.getImage() ? this.getImage().clone() : void 0, + stroke: this.getStroke() ? this.getStroke().clone() : void 0, + text: this.getText() ? this.getText().clone() : void 0, + zIndex: this.getZIndex(), + }) + ) + }), + (t.prototype.getRenderer = function () { + return this.renderer_ + }), + (t.prototype.setRenderer = function (t) { + this.renderer_ = t + }), + (t.prototype.getGeometry = function () { + return this.geometry_ + }), + (t.prototype.getGeometryFunction = function () { + return this.geometryFunction_ + }), + (t.prototype.getFill = function () { + return this.fill_ + }), + (t.prototype.setFill = function (t) { + this.fill_ = t + }), + (t.prototype.getImage = function () { + return this.image_ + }), + (t.prototype.setImage = function (t) { + this.image_ = t + }), + (t.prototype.getStroke = function () { + return this.stroke_ + }), + (t.prototype.setStroke = function (t) { + this.stroke_ = t + }), + (t.prototype.getText = function () { + return this.text_ + }), + (t.prototype.setText = function (t) { + this.text_ = t + }), + (t.prototype.getZIndex = function () { + return this.zIndex_ + }), + (t.prototype.setGeometry = function (t) { + 'function' == typeof t + ? (this.geometryFunction_ = t) + : 'string' == typeof t + ? (this.geometryFunction_ = function (e) { + return e.get(t) + }) + : t + ? void 0 !== t && + (this.geometryFunction_ = function () { + return t + }) + : (this.geometryFunction_ = xp), + (this.geometry_ = t) + }), + (t.prototype.setZIndex = function (t) { + this.zIndex_ = t + }), + t + ) + })() + function mp(t) { + var e + if ('function' == typeof t) e = t + else { + var r + if (Array.isArray(t)) r = t + else pt('function' == typeof t.getZIndex, 41), (r = [t]) + e = function () { + return r + } + } + return e + } + var vp = null + function _p(t, e) { + if (!vp) { + var r = new ep({ color: 'rgba(255,255,255,0.4)' }), + n = new gp({ color: '#3399CC', width: 1.25 }) + vp = [ + new yp({ + image: new tp({ fill: r, stroke: n, radius: 5 }), + fill: r, + stroke: n, + }), + ] + } + return vp + } + function bp() { + var t = {}, + e = [255, 255, 255, 1], + r = [0, 153, 255, 1] + return ( + (t[bt.POLYGON] = [ + new yp({ fill: new ep({ color: [255, 255, 255, 0.5] }) }), + ]), + (t[bt.MULTI_POLYGON] = t[bt.POLYGON]), + (t[bt.LINE_STRING] = [ + new yp({ stroke: new gp({ color: e, width: 5 }) }), + new yp({ stroke: new gp({ color: r, width: 3 }) }), + ]), + (t[bt.MULTI_LINE_STRING] = t[bt.LINE_STRING]), + (t[bt.CIRCLE] = t[bt.POLYGON].concat(t[bt.LINE_STRING])), + (t[bt.POINT] = [ + new yp({ + image: new tp({ + radius: 6, + fill: new ep({ color: r }), + stroke: new gp({ color: e, width: 1.5 }), + }), + zIndex: 1 / 0, + }), + ]), + (t[bt.MULTI_POINT] = t[bt.POINT]), + (t[bt.GEOMETRY_COLLECTION] = t[bt.POLYGON].concat( + t[bt.LINE_STRING], + t[bt.POINT], + )), + t + ) + } + function xp(t) { + return t.getGeometry() + } + var wp = yp, + Sp = 'point', + Ep = 'line', + Tp = (function () { + function t(t) { + var e = t || {} + ;(this.font_ = e.font), + (this.rotation_ = e.rotation), + (this.rotateWithView_ = e.rotateWithView), + (this.scale_ = e.scale), + (this.scaleArray_ = Is(void 0 !== e.scale ? e.scale : 1)), + (this.text_ = e.text), + (this.textAlign_ = e.textAlign), + (this.textBaseline_ = e.textBaseline), + (this.fill_ = + void 0 !== e.fill ? e.fill : new ep({ color: '#333' })), + (this.maxAngle_ = + void 0 !== e.maxAngle ? e.maxAngle : Math.PI / 4), + (this.placement_ = void 0 !== e.placement ? e.placement : Sp), + (this.overflow_ = !!e.overflow), + (this.stroke_ = void 0 !== e.stroke ? e.stroke : null), + (this.offsetX_ = void 0 !== e.offsetX ? e.offsetX : 0), + (this.offsetY_ = void 0 !== e.offsetY ? e.offsetY : 0), + (this.backgroundFill_ = e.backgroundFill + ? e.backgroundFill + : null), + (this.backgroundStroke_ = e.backgroundStroke + ? e.backgroundStroke + : null), + (this.padding_ = void 0 === e.padding ? null : e.padding) + } + return ( + (t.prototype.clone = function () { + var e = this.getScale() + return new t({ + font: this.getFont(), + placement: this.getPlacement(), + maxAngle: this.getMaxAngle(), + overflow: this.getOverflow(), + rotation: this.getRotation(), + rotateWithView: this.getRotateWithView(), + scale: Array.isArray(e) ? e.slice() : e, + text: this.getText(), + textAlign: this.getTextAlign(), + textBaseline: this.getTextBaseline(), + fill: this.getFill() ? this.getFill().clone() : void 0, + stroke: this.getStroke() ? this.getStroke().clone() : void 0, + offsetX: this.getOffsetX(), + offsetY: this.getOffsetY(), + backgroundFill: this.getBackgroundFill() + ? this.getBackgroundFill().clone() + : void 0, + backgroundStroke: this.getBackgroundStroke() + ? this.getBackgroundStroke().clone() + : void 0, + padding: this.getPadding(), + }) + }), + (t.prototype.getOverflow = function () { + return this.overflow_ + }), + (t.prototype.getFont = function () { + return this.font_ + }), + (t.prototype.getMaxAngle = function () { + return this.maxAngle_ + }), + (t.prototype.getPlacement = function () { + return this.placement_ + }), + (t.prototype.getOffsetX = function () { + return this.offsetX_ + }), + (t.prototype.getOffsetY = function () { + return this.offsetY_ + }), + (t.prototype.getFill = function () { + return this.fill_ + }), + (t.prototype.getRotateWithView = function () { + return this.rotateWithView_ + }), + (t.prototype.getRotation = function () { + return this.rotation_ + }), + (t.prototype.getScale = function () { + return this.scale_ + }), + (t.prototype.getScaleArray = function () { + return this.scaleArray_ + }), + (t.prototype.getStroke = function () { + return this.stroke_ + }), + (t.prototype.getText = function () { + return this.text_ + }), + (t.prototype.getTextAlign = function () { + return this.textAlign_ + }), + (t.prototype.getTextBaseline = function () { + return this.textBaseline_ + }), + (t.prototype.getBackgroundFill = function () { + return this.backgroundFill_ + }), + (t.prototype.getBackgroundStroke = function () { + return this.backgroundStroke_ + }), + (t.prototype.getPadding = function () { + return this.padding_ + }), + (t.prototype.setOverflow = function (t) { + this.overflow_ = t + }), + (t.prototype.setFont = function (t) { + this.font_ = t + }), + (t.prototype.setMaxAngle = function (t) { + this.maxAngle_ = t + }), + (t.prototype.setOffsetX = function (t) { + this.offsetX_ = t + }), + (t.prototype.setOffsetY = function (t) { + this.offsetY_ = t + }), + (t.prototype.setPlacement = function (t) { + this.placement_ = t + }), + (t.prototype.setRotateWithView = function (t) { + this.rotateWithView_ = t + }), + (t.prototype.setFill = function (t) { + this.fill_ = t + }), + (t.prototype.setRotation = function (t) { + this.rotation_ = t + }), + (t.prototype.setScale = function (t) { + ;(this.scale_ = t), (this.scaleArray_ = Is(void 0 !== t ? t : 1)) + }), + (t.prototype.setStroke = function (t) { + this.stroke_ = t + }), + (t.prototype.setText = function (t) { + this.text_ = t + }), + (t.prototype.setTextAlign = function (t) { + this.textAlign_ = t + }), + (t.prototype.setTextBaseline = function (t) { + this.textBaseline_ = t + }), + (t.prototype.setBackgroundFill = function (t) { + this.backgroundFill_ = t + }), + (t.prototype.setBackgroundStroke = function (t) { + this.backgroundStroke_ = t + }), + (t.prototype.setPadding = function (t) { + this.padding_ = t + }), + t + ) + })(), + Cp = (function () { + function t(t) { + this.first_, + this.last_, + this.head_, + (this.circular_ = void 0 === t || t), + (this.length_ = 0) + } + return ( + (t.prototype.insertItem = function (t) { + var e = { prev: void 0, next: void 0, data: t }, + r = this.head_ + if (r) { + var n = r.next + ;(e.prev = r), + (e.next = n), + (r.next = e), + n && (n.prev = e), + r === this.last_ && (this.last_ = e) + } else + (this.first_ = e), + (this.last_ = e), + this.circular_ && ((e.next = e), (e.prev = e)) + ;(this.head_ = e), this.length_++ + }), + (t.prototype.removeItem = function () { + var t = this.head_ + if (t) { + var e = t.next, + r = t.prev + e && (e.prev = r), + r && (r.next = e), + (this.head_ = e || r), + this.first_ === this.last_ + ? ((this.head_ = void 0), + (this.first_ = void 0), + (this.last_ = void 0)) + : this.first_ === t + ? (this.first_ = this.head_) + : this.last_ === t && + (this.last_ = r ? this.head_.prev : this.head_), + this.length_-- + } + }), + (t.prototype.firstItem = function () { + if (((this.head_ = this.first_), this.head_)) + return this.head_.data + }), + (t.prototype.lastItem = function () { + if (((this.head_ = this.last_), this.head_)) + return this.head_.data + }), + (t.prototype.nextItem = function () { + if (this.head_ && this.head_.next) + return (this.head_ = this.head_.next), this.head_.data + }), + (t.prototype.getNextItem = function () { + if (this.head_ && this.head_.next) return this.head_.next.data + }), + (t.prototype.prevItem = function () { + if (this.head_ && this.head_.prev) + return (this.head_ = this.head_.prev), this.head_.data + }), + (t.prototype.getPrevItem = function () { + if (this.head_ && this.head_.prev) return this.head_.prev.data + }), + (t.prototype.getCurrItem = function () { + if (this.head_) return this.head_.data + }), + (t.prototype.setFirstItem = function () { + this.circular_ && + this.head_ && + ((this.first_ = this.head_), (this.last_ = this.head_.prev)) + }), + (t.prototype.concat = function (t) { + if (t.head_) { + if (this.head_) { + var e = this.head_.next + ;(this.head_.next = t.first_), + (t.first_.prev = this.head_), + (e.prev = t.last_), + (t.last_.next = e), + (this.length_ += t.length_) + } else + (this.head_ = t.head_), + (this.first_ = t.first_), + (this.last_ = t.last_), + (this.length_ = t.length_) + ;(t.head_ = void 0), + (t.first_ = void 0), + (t.last_ = void 0), + (t.length_ = 0) + } + }), + (t.prototype.getLength = function () { + return this.length_ + }), + t + ) + })(), + Op = r(1), + Pp = r.n(Op), + Rp = (function () { + function t(t) { + ;(this.rbush_ = new Pp.a(t)), (this.items_ = {}) + } + return ( + (t.prototype.insert = function (t, e) { + var r = { + minX: t[0], + minY: t[1], + maxX: t[2], + maxY: t[3], + value: e, + } + this.rbush_.insert(r), (this.items_[o(e)] = r) + }), + (t.prototype.load = function (t, e) { + for ( + var r = new Array(e.length), n = 0, i = e.length; + n < i; + n++ + ) { + var a = t[n], + s = e[n], + l = { + minX: a[0], + minY: a[1], + maxX: a[2], + maxY: a[3], + value: s, + } + ;(r[n] = l), (this.items_[o(s)] = l) + } + this.rbush_.load(r) + }), + (t.prototype.remove = function (t) { + var e = o(t), + r = this.items_[e] + return delete this.items_[e], null !== this.rbush_.remove(r) + }), + (t.prototype.update = function (t, e) { + var r = this.items_[o(e)] + ue([r.minX, r.minY, r.maxX, r.maxY], t) || + (this.remove(e), this.insert(t, e)) + }), + (t.prototype.getAll = function () { + return this.rbush_.all().map(function (t) { + return t.value + }) + }), + (t.prototype.getInExtent = function (t) { + var e = { minX: t[0], minY: t[1], maxX: t[2], maxY: t[3] } + return this.rbush_.search(e).map(function (t) { + return t.value + }) + }), + (t.prototype.forEach = function (t) { + return this.forEach_(this.getAll(), t) + }), + (t.prototype.forEachInExtent = function (t, e) { + return this.forEach_(this.getInExtent(t), e) + }), + (t.prototype.forEach_ = function (t, e) { + for (var r, n = 0, i = t.length; n < i; n++) + if ((r = e(t[n]))) return r + return r + }), + (t.prototype.isEmpty = function () { + return I(this.items_) + }), + (t.prototype.clear = function () { + this.rbush_.clear(), (this.items_ = {}) + }), + (t.prototype.getExtent = function (t) { + var e = this.rbush_.toJSON() + return ie(e.minX, e.minY, e.maxX, e.maxY, t) + }), + (t.prototype.concat = function (t) { + for (var e in (this.rbush_.load(t.rbush_.all()), t.items_)) + this.items_[e] = t.items_[e] + }), + t + ) + })(), + Ip = (function () { + function t(t, e, r, n, i, o) { + ;(this.sourceProj_ = t), (this.targetProj_ = e) + var a = {}, + s = Kr(this.targetProj_, this.sourceProj_) + ;(this.transformInv_ = function (t) { + var e = t[0] + '/' + t[1] + return a[e] || (a[e] = s(t)), a[e] + }), + (this.maxSourceExtent_ = n), + (this.errorThresholdSquared_ = i * i), + (this.triangles_ = []), + (this.wrapsXInSource_ = !1), + (this.canWrapXInSource_ = + this.sourceProj_.canWrapX() && + !!n && + !!this.sourceProj_.getExtent() && + Pe(n) == Pe(this.sourceProj_.getExtent())), + (this.sourceWorldWidth_ = this.sourceProj_.getExtent() + ? Pe(this.sourceProj_.getExtent()) + : null), + (this.targetWorldWidth_ = this.targetProj_.getExtent() + ? Pe(this.targetProj_.getExtent()) + : null) + var l = Ce(r), + u = Oe(r), + c = be(r), + h = _e(r), + p = this.transformInv_(l), + f = this.transformInv_(u), + d = this.transformInv_(c), + g = this.transformInv_(h), + y = + 10 + + (o + ? Math.max(0, Math.ceil(Ge(ve(r) / (o * o * 256 * 256)))) + : 0) + if ( + (this.addQuad_(l, u, c, h, p, f, d, g, y), this.wrapsXInSource_) + ) { + var m = 1 / 0 + this.triangles_.forEach(function (t, e, r) { + m = Math.min(m, t.source[0][0], t.source[1][0], t.source[2][0]) + }), + this.triangles_.forEach( + function (t) { + if ( + Math.max(t.source[0][0], t.source[1][0], t.source[2][0]) - + m > + this.sourceWorldWidth_ / 2 + ) { + var e = [ + [t.source[0][0], t.source[0][1]], + [t.source[1][0], t.source[1][1]], + [t.source[2][0], t.source[2][1]], + ] + e[0][0] - m > this.sourceWorldWidth_ / 2 && + (e[0][0] -= this.sourceWorldWidth_), + e[1][0] - m > this.sourceWorldWidth_ / 2 && + (e[1][0] -= this.sourceWorldWidth_), + e[2][0] - m > this.sourceWorldWidth_ / 2 && + (e[2][0] -= this.sourceWorldWidth_) + var r = Math.min(e[0][0], e[1][0], e[2][0]) + Math.max(e[0][0], e[1][0], e[2][0]) - r < + this.sourceWorldWidth_ / 2 && (t.source = e) + } + }.bind(this), + ) + } + a = {} + } + return ( + (t.prototype.addTriangle_ = function (t, e, r, n, i, o) { + this.triangles_.push({ source: [n, i, o], target: [t, e, r] }) + }), + (t.prototype.addQuad_ = function (t, e, r, n, i, o, a, s, l) { + var u = Kt([i, o, a, s]), + c = this.sourceWorldWidth_ + ? Pe(u) / this.sourceWorldWidth_ + : null, + h = this.sourceWorldWidth_, + p = this.sourceProj_.canWrapX() && c > 0.5 && c < 1, + f = !1 + if (l > 0) { + if (this.targetProj_.isGlobal() && this.targetWorldWidth_) + f = Pe(Kt([t, e, r, n])) / this.targetWorldWidth_ > 0.25 || f + !p && this.sourceProj_.isGlobal() && c && (f = c > 0.25 || f) + } + if ( + !( + !f && + this.maxSourceExtent_ && + isFinite(u[0]) && + isFinite(u[1]) && + isFinite(u[2]) && + isFinite(u[3]) + ) || + Re(u, this.maxSourceExtent_) + ) { + var d = 0 + if ( + !( + f || + (isFinite(i[0]) && + isFinite(i[1]) && + isFinite(o[0]) && + isFinite(o[1]) && + isFinite(a[0]) && + isFinite(a[1]) && + isFinite(s[0]) && + isFinite(s[1])) + ) + ) + if (l > 0) f = !0 + else if ( + 1 != + (d = + (isFinite(i[0]) && isFinite(i[1]) ? 0 : 8) + + (isFinite(o[0]) && isFinite(o[1]) ? 0 : 4) + + (isFinite(a[0]) && isFinite(a[1]) ? 0 : 2) + + (isFinite(s[0]) && isFinite(s[1]) ? 0 : 1)) && + 2 != d && + 4 != d && + 8 != d + ) + return + if (l > 0) { + if (!f) { + var g = [(t[0] + r[0]) / 2, (t[1] + r[1]) / 2], + y = this.transformInv_(g), + m = void 0 + if (p) m = (We(i[0], h) + We(a[0], h)) / 2 - We(y[0], h) + else m = (i[0] + a[0]) / 2 - y[0] + var v = (i[1] + a[1]) / 2 - y[1] + f = m * m + v * v > this.errorThresholdSquared_ + } + if (f) { + if (Math.abs(t[0] - r[0]) <= Math.abs(t[1] - r[1])) { + var _ = [(e[0] + r[0]) / 2, (e[1] + r[1]) / 2], + b = this.transformInv_(_), + x = [(n[0] + t[0]) / 2, (n[1] + t[1]) / 2], + w = this.transformInv_(x) + this.addQuad_(t, e, _, x, i, o, b, w, l - 1), + this.addQuad_(x, _, r, n, w, b, a, s, l - 1) + } else { + var S = [(t[0] + e[0]) / 2, (t[1] + e[1]) / 2], + E = this.transformInv_(S), + T = [(r[0] + n[0]) / 2, (r[1] + n[1]) / 2], + C = this.transformInv_(T) + this.addQuad_(t, S, T, n, i, E, C, s, l - 1), + this.addQuad_(S, e, r, T, E, o, a, C, l - 1) + } + return + } + } + if (p) { + if (!this.canWrapXInSource_) return + this.wrapsXInSource_ = !0 + } + 0 == (11 & d) && this.addTriangle_(t, r, n, i, a, s), + 0 == (14 & d) && this.addTriangle_(t, r, e, i, a, o), + d && + (0 == (13 & d) && this.addTriangle_(e, n, t, o, s, i), + 0 == (7 & d) && this.addTriangle_(e, n, r, o, s, a)) + } + }), + (t.prototype.calculateSourceExtent = function () { + var t = [1 / 0, 1 / 0, -1 / 0, -1 / 0] + return ( + this.triangles_.forEach(function (e, r, n) { + var i = e.source + pe(t, i[0]), pe(t, i[1]), pe(t, i[2]) + }), + t + ) + }), + (t.prototype.getTriangles = function () { + return this.triangles_ + }), + t + ) + })(), + Lp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Mp = (function (t) { + function e(e, r, n, i, o, a, s, l, u, c, h, p) { + var f = t.call(this, o, Ji) || this + ;(f.renderEdges_ = void 0 !== h && h), + (f.contextOptions_ = p), + (f.pixelRatio_ = s), + (f.gutter_ = l), + (f.canvas_ = null), + (f.sourceTileGrid_ = r), + (f.targetTileGrid_ = i), + (f.wrappedTileCoord_ = a || o), + (f.sourceTiles_ = []), + (f.sourcesListenerKeys_ = null), + (f.sourceZ_ = 0) + var d = i.getTileCoordExtent(f.wrappedTileCoord_), + g = f.targetTileGrid_.getExtent(), + y = f.sourceTileGrid_.getExtent(), + m = g ? Te(d, g) : d + if (0 === ve(m)) return (f.state = ro), f + var v = e.getExtent() + v && (y = y ? Te(y, v) : v) + var _ = i.getResolution(f.wrappedTileCoord_[0]), + b = ec(e, n, m, _) + if (!isFinite(b) || b <= 0) return (f.state = ro), f + var x = void 0 !== c ? c : 0.5 + if ( + ((f.triangulation_ = new Ip(e, n, m, y, b * x, _)), + 0 === f.triangulation_.getTriangles().length) + ) + return (f.state = ro), f + f.sourceZ_ = r.getZForResolution(b) + var w = f.triangulation_.calculateSourceExtent() + if ( + (y && + (e.canWrapX() + ? ((w[1] = Ne(w[1], y[1], y[3])), + (w[3] = Ne(w[3], y[1], y[3]))) + : (w = Te(w, y))), + ve(w)) + ) { + for ( + var S = r.getTileRangeForExtentAndZ(w, f.sourceZ_), E = S.minX; + E <= S.maxX; + E++ + ) + for (var T = S.minY; T <= S.maxY; T++) { + var C = u(f.sourceZ_, E, T, s) + C && f.sourceTiles_.push(C) + } + 0 === f.sourceTiles_.length && (f.state = ro) + } else f.state = ro + return f + } + return ( + Lp(e, t), + (e.prototype.getImage = function () { + return this.canvas_ + }), + (e.prototype.reproject_ = function () { + var t = [] + if ( + (this.sourceTiles_.forEach( + function (e, r, n) { + e && + e.getState() == to && + t.push({ + extent: this.sourceTileGrid_.getTileCoordExtent( + e.tileCoord, + ), + image: e.getImage(), + }) + }.bind(this), + ), + (this.sourceTiles_.length = 0), + 0 === t.length) + ) + this.state = eo + else { + var e = this.wrappedTileCoord_[0], + r = this.targetTileGrid_.getTileSize(e), + n = 'number' == typeof r ? r : r[0], + i = 'number' == typeof r ? r : r[1], + o = this.targetTileGrid_.getResolution(e), + a = this.sourceTileGrid_.getResolution(this.sourceZ_), + s = this.targetTileGrid_.getTileCoordExtent( + this.wrappedTileCoord_, + ) + ;(this.canvas_ = rc( + n, + i, + this.pixelRatio_, + a, + this.sourceTileGrid_.getExtent(), + o, + s, + this.triangulation_, + t, + this.gutter_, + this.renderEdges_, + this.contextOptions_, + )), + (this.state = to) + } + this.changed() + }), + (e.prototype.load = function () { + if (this.state == Ji) { + ;(this.state = Qi), this.changed() + var t = 0 + ;(this.sourcesListenerKeys_ = []), + this.sourceTiles_.forEach( + function (e, r, n) { + var i = e.getState() + if (i == Ji || i == Qi) { + t++ + var o = Z( + e, + F, + function (r) { + var n = e.getState() + ;(n != to && n != eo && n != ro) || + (H(o), + 0 === --t && + (this.unlistenSources_(), this.reproject_())) + }, + this, + ) + this.sourcesListenerKeys_.push(o) + } + }.bind(this), + ), + this.sourceTiles_.forEach(function (t, e, r) { + t.getState() == Ji && t.load() + }), + 0 === t && setTimeout(this.reproject_.bind(this), 0) + } + }), + (e.prototype.unlistenSources_ = function () { + this.sourcesListenerKeys_.forEach(H), + (this.sourcesListenerKeys_ = null) + }), + e + ) + })(lo), + Fp = 'tileloadstart', + Ap = 'tileloadend', + kp = 'tileloaderror', + jp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Np(t) { + return t + ? Array.isArray(t) + ? function (e) { + return t + } + : 'function' == typeof t + ? t + : function (e) { + return [t] + } + : null + } + var Dp = (function (t) { + function e(e) { + var r = t.call(this) || this + return ( + (r.projection_ = Gr(e.projection)), + (r.attributions_ = Np(e.attributions)), + (r.attributionsCollapsible_ = + void 0 === e.attributionsCollapsible || + e.attributionsCollapsible), + (r.loading = !1), + (r.state_ = void 0 !== e.state ? e.state : Qo), + (r.wrapX_ = void 0 !== e.wrapX && e.wrapX), + r + ) + } + return ( + jp(e, t), + (e.prototype.getAttributions = function () { + return this.attributions_ + }), + (e.prototype.getAttributionsCollapsible = function () { + return this.attributionsCollapsible_ + }), + (e.prototype.getProjection = function () { + return this.projection_ + }), + (e.prototype.getResolutions = function () { + return n() + }), + (e.prototype.getState = function () { + return this.state_ + }), + (e.prototype.getWrapX = function () { + return this.wrapX_ + }), + (e.prototype.getContextOptions = function () {}), + (e.prototype.refresh = function () { + this.changed() + }), + (e.prototype.setAttributions = function (t) { + ;(this.attributions_ = Np(t)), this.changed() + }), + (e.prototype.setState = function (t) { + ;(this.state_ = t), this.changed() + }), + e + ) + })(ot), + Gp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + zp = (function (t) { + function e(e) { + var r = + t.call(this, { + attributions: e.attributions, + attributionsCollapsible: e.attributionsCollapsible, + projection: e.projection, + state: e.state, + wrapX: e.wrapX, + }) || this + ;(r.opaque_ = void 0 !== e.opaque && e.opaque), + (r.tilePixelRatio_ = + void 0 !== e.tilePixelRatio ? e.tilePixelRatio : 1), + (r.tileGrid = void 0 !== e.tileGrid ? e.tileGrid : null) + var n = e.tileGrid + return ( + n && Is(n.getTileSize(n.getMinZoom()), [256, 256]), + (r.tileCache = new yu(e.cacheSize || 0)), + (r.tmpSize = [0, 0]), + (r.key_ = e.key || ''), + (r.tileOptions = { transition: e.transition }), + (r.zDirection = e.zDirection ? e.zDirection : 0), + r + ) + } + return ( + Gp(e, t), + (e.prototype.canExpireCache = function () { + return this.tileCache.canExpireCache() + }), + (e.prototype.expireCache = function (t, e) { + var r = this.getTileCacheForProjection(t) + r && r.expireCache(e) + }), + (e.prototype.forEachLoadedTile = function (t, e, r, n) { + var i = this.getTileCacheForProjection(t) + if (!i) return !1 + for (var o, a, s, l = !0, u = r.minX; u <= r.maxX; ++u) + for (var c = r.minY; c <= r.maxY; ++c) + (a = cu(e, u, c)), + (s = !1), + i.containsKey(a) && + (s = (o = i.get(a)).getState() === to) && + (s = !1 !== n(o)), + s || (l = !1) + return l + }), + (e.prototype.getGutterForProjection = function (t) { + return 0 + }), + (e.prototype.getKey = function () { + return this.key_ + }), + (e.prototype.setKey = function (t) { + this.key_ !== t && ((this.key_ = t), this.changed()) + }), + (e.prototype.getOpaque = function (t) { + return this.opaque_ + }), + (e.prototype.getResolutions = function () { + return this.tileGrid.getResolutions() + }), + (e.prototype.getTile = function (t, e, r, i, o) { + return n() + }), + (e.prototype.getTileGrid = function () { + return this.tileGrid + }), + (e.prototype.getTileGridForProjection = function (t) { + return this.tileGrid ? this.tileGrid : oc(t) + }), + (e.prototype.getTileCacheForProjection = function (t) { + return pt(Xr(this.getProjection(), t), 68), this.tileCache + }), + (e.prototype.getTilePixelRatio = function (t) { + return this.tilePixelRatio_ + }), + (e.prototype.getTilePixelSize = function (t, e, r) { + var n = this.getTileGridForProjection(r), + i = this.getTilePixelRatio(e), + o = Is(n.getTileSize(t), this.tmpSize) + return 1 == i ? o : Rs(o, i, this.tmpSize) + }), + (e.prototype.getTileCoordForTileUrlFunction = function (t, e) { + var r = void 0 !== e ? e : this.getProjection(), + n = this.getTileGridForProjection(r) + return ( + this.getWrapX() && r.isGlobal() && (t = ac(n, t, r)), + du(t, n) ? t : null + ) + }), + (e.prototype.clear = function () { + this.tileCache.clear() + }), + (e.prototype.refresh = function () { + this.clear(), t.prototype.refresh.call(this) + }), + (e.prototype.updateCacheSize = function (t, e) { + var r = this.getTileCacheForProjection(e) + t > r.highWaterMark && (r.highWaterMark = t) + }), + (e.prototype.useTile = function (t, e, r, n) {}), + e + ) + })(Dp), + Up = (function (t) { + function e(e, r) { + var n = t.call(this, e) || this + return (n.tile = r), n + } + return Gp(e, t), e + })(c), + Bp = zp, + Vp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Yp = (function (t) { + function e(r) { + var n = + t.call(this, { + attributions: r.attributions, + cacheSize: r.cacheSize, + opaque: r.opaque, + projection: r.projection, + state: r.state, + tileGrid: r.tileGrid, + tilePixelRatio: r.tilePixelRatio, + wrapX: r.wrapX, + transition: r.transition, + key: r.key, + attributionsCollapsible: r.attributionsCollapsible, + zDirection: r.zDirection, + }) || this + return ( + (n.generateTileUrlFunction_ = + n.tileUrlFunction === e.prototype.tileUrlFunction), + (n.tileLoadFunction = r.tileLoadFunction), + r.tileUrlFunction && (n.tileUrlFunction = r.tileUrlFunction), + (n.urls = null), + r.urls ? n.setUrls(r.urls) : r.url && n.setUrl(r.url), + (n.tileLoadingKeys_ = {}), + n + ) + } + return ( + Vp(e, t), + (e.prototype.getTileLoadFunction = function () { + return this.tileLoadFunction + }), + (e.prototype.getTileUrlFunction = function () { + return Object.getPrototypeOf(this).tileUrlFunction === + this.tileUrlFunction + ? this.tileUrlFunction.bind(this) + : this.tileUrlFunction + }), + (e.prototype.getUrls = function () { + return this.urls + }), + (e.prototype.handleTileChange = function (t) { + var e, + r = t.target, + n = o(r), + i = r.getState() + i == Qi + ? ((this.tileLoadingKeys_[n] = !0), (e = Fp)) + : n in this.tileLoadingKeys_ && + (delete this.tileLoadingKeys_[n], + (e = i == eo ? kp : i == to ? Ap : void 0)), + null != e && this.dispatchEvent(new Up(e, r)) + }), + (e.prototype.setTileLoadFunction = function (t) { + this.tileCache.clear(), + (this.tileLoadFunction = t), + this.changed() + }), + (e.prototype.setTileUrlFunction = function (t, e) { + ;(this.tileUrlFunction = t), + this.tileCache.pruneExceptNewestZ(), + void 0 !== e ? this.setKey(e) : this.changed() + }), + (e.prototype.setUrl = function (t) { + var e = yc(t) + ;(this.urls = e), this.setUrls(e) + }), + (e.prototype.setUrls = function (t) { + this.urls = t + var e = t.join('\n') + this.generateTileUrlFunction_ + ? this.setTileUrlFunction(fc(t, this.tileGrid), e) + : this.setKey(e) + }), + (e.prototype.tileUrlFunction = function (t, e, r) {}), + (e.prototype.useTile = function (t, e, r) { + var n = cu(t, e, r) + this.tileCache.containsKey(n) && this.tileCache.get(n) + }), + e + ) + })(Bp), + Wp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function qp(t, e) { + t.getImage().src = e + } + var Xp = (function (t) { + function e(e) { + var r = + t.call(this, { + attributions: e.attributions, + cacheSize: e.cacheSize, + opaque: e.opaque, + projection: e.projection, + state: e.state, + tileGrid: e.tileGrid, + tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : qp, + tilePixelRatio: e.tilePixelRatio, + tileUrlFunction: e.tileUrlFunction, + url: e.url, + urls: e.urls, + wrapX: e.wrapX, + transition: e.transition, + key: e.key, + attributionsCollapsible: e.attributionsCollapsible, + zDirection: e.zDirection, + }) || this + return ( + (r.crossOrigin = void 0 !== e.crossOrigin ? e.crossOrigin : null), + (r.tileClass = void 0 !== e.tileClass ? e.tileClass : vo), + (r.tileCacheForProjection = {}), + (r.tileGridForProjection = {}), + (r.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold), + (r.contextOptions_ = !1 === e.imageSmoothing ? $u : void 0), + (r.renderReprojectionEdges_ = !1), + r + ) + } + return ( + Wp(e, t), + (e.prototype.canExpireCache = function () { + if (this.tileCache.canExpireCache()) return !0 + for (var t in this.tileCacheForProjection) + if (this.tileCacheForProjection[t].canExpireCache()) return !0 + return !1 + }), + (e.prototype.expireCache = function (t, e) { + var r = this.getTileCacheForProjection(t) + for (var n in (this.tileCache.expireCache( + this.tileCache == r ? e : {}, + ), + this.tileCacheForProjection)) { + var i = this.tileCacheForProjection[n] + i.expireCache(i == r ? e : {}) + } + }), + (e.prototype.getContextOptions = function () { + return this.contextOptions_ + }), + (e.prototype.getGutterForProjection = function (t) { + return this.getProjection() && t && !Xr(this.getProjection(), t) + ? 0 + : this.getGutter() + }), + (e.prototype.getGutter = function () { + return 0 + }), + (e.prototype.getKey = function () { + return ( + t.prototype.getKey.call(this) + + (this.contextOptions_ + ? '\n' + JSON.stringify(this.contextOptions_) + : '') + ) + }), + (e.prototype.getOpaque = function (e) { + return ( + !(this.getProjection() && e && !Xr(this.getProjection(), e)) && + t.prototype.getOpaque.call(this, e) + ) + }), + (e.prototype.getTileGridForProjection = function (t) { + var e = this.getProjection() + if (!this.tileGrid || (e && !Xr(e, t))) { + var r = o(t) + return ( + r in this.tileGridForProjection || + (this.tileGridForProjection[r] = oc(t)), + this.tileGridForProjection[r] + ) + } + return this.tileGrid + }), + (e.prototype.getTileCacheForProjection = function (t) { + var e = this.getProjection() + if (!e || Xr(e, t)) return this.tileCache + var r = o(t) + return ( + r in this.tileCacheForProjection || + (this.tileCacheForProjection[r] = new yu( + this.tileCache.highWaterMark, + )), + this.tileCacheForProjection[r] + ) + }), + (e.prototype.createTile_ = function (t, e, r, n, i, o) { + var a = [t, e, r], + s = this.getTileCoordForTileUrlFunction(a, i), + l = s ? this.tileUrlFunction(s, n, i) : void 0, + u = new this.tileClass( + a, + void 0 !== l ? Ji : ro, + void 0 !== l ? l : '', + this.crossOrigin, + this.tileLoadFunction, + this.tileOptions, + ) + return ( + (u.key = o), + u.addEventListener(F, this.handleTileChange.bind(this)), + u + ) + }), + (e.prototype.getTile = function (t, e, r, n, i) { + var o = this.getProjection() + if (o && i && !Xr(o, i)) { + var a = this.getTileCacheForProjection(i), + s = [t, e, r], + l = void 0, + u = hu(s) + a.containsKey(u) && (l = a.get(u)) + var c = this.getKey() + if (l && l.key == c) return l + var h = this.getTileGridForProjection(o), + p = this.getTileGridForProjection(i), + f = this.getTileCoordForTileUrlFunction(s, i), + d = new Mp( + o, + h, + i, + p, + s, + f, + this.getTilePixelRatio(n), + this.getGutter(), + function (t, e, r, n) { + return this.getTileInternal(t, e, r, n, o) + }.bind(this), + this.reprojectionErrorThreshold_, + this.renderReprojectionEdges_, + this.contextOptions_, + ) + return ( + (d.key = c), + l + ? ((d.interimTile = l), + d.refreshInterimChain(), + a.replace(u, d)) + : a.set(u, d), + d + ) + } + return this.getTileInternal(t, e, r, n, o || i) + }), + (e.prototype.getTileInternal = function (t, e, r, n, i) { + var o = null, + a = cu(t, e, r), + s = this.getKey() + if (this.tileCache.containsKey(a)) { + if ((o = this.tileCache.get(a)).key != s) { + var l = o + ;(o = this.createTile_(t, e, r, n, i, s)), + l.getState() == Ji + ? (o.interimTile = l.interimTile) + : (o.interimTile = l), + o.refreshInterimChain(), + this.tileCache.replace(a, o) + } + } else + (o = this.createTile_(t, e, r, n, i, s)), + this.tileCache.set(a, o) + return o + }), + (e.prototype.setRenderReprojectionEdges = function (t) { + if (this.renderReprojectionEdges_ != t) { + for (var e in ((this.renderReprojectionEdges_ = t), + this.tileCacheForProjection)) + this.tileCacheForProjection[e].clear() + this.changed() + } + }), + (e.prototype.setTileGridForProjection = function (t, e) { + var r = Gr(t) + if (r) { + var n = o(r) + n in this.tileGridForProjection || + (this.tileGridForProjection[n] = e) + } + }), + e + ) + })(Yp), + Zp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Kp(t) { + var e, + r, + n = t[0], + i = new Array(n), + o = 1 << (n - 1) + for (e = 0; e < n; ++e) + (r = 48), + t[1] & o && (r += 1), + t[2] & o && (r += 2), + (i[e] = String.fromCharCode(r)), + (o >>= 1) + return i.join('') + } + var Hp = (function (t) { + function e(e) { + var r = this, + n = void 0 !== e.hidpi && e.hidpi + return ( + ((r = + t.call(this, { + cacheSize: e.cacheSize, + crossOrigin: 'anonymous', + imageSmoothing: e.imageSmoothing, + opaque: !0, + projection: Gr('EPSG:3857'), + reprojectionErrorThreshold: e.reprojectionErrorThreshold, + state: Jo, + tileLoadFunction: e.tileLoadFunction, + tilePixelRatio: n ? 2 : 1, + wrapX: void 0 === e.wrapX || e.wrapX, + transition: e.transition, + }) || this).hidpi_ = n), + (r.culture_ = void 0 !== e.culture ? e.culture : 'en-us'), + (r.maxZoom_ = void 0 !== e.maxZoom ? e.maxZoom : -1), + (r.apiKey_ = e.key), + (r.imagerySet_ = e.imagerySet), + Au( + 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/' + + r.imagerySet_ + + '?uriScheme=https&include=ImageryProviders&key=' + + r.apiKey_ + + '&c=' + + r.culture_, + r.handleImageryMetadataResponse.bind(r), + void 0, + 'jsonp', + ), + r + ) + } + return ( + Zp(e, t), + (e.prototype.getApiKey = function () { + return this.apiKey_ + }), + (e.prototype.getImagerySet = function () { + return this.imagerySet_ + }), + (e.prototype.handleImageryMetadataResponse = function (t) { + if ( + 200 == t.statusCode && + 'OK' == t.statusDescription && + 'ValidCredentials' == t.authenticationResultCode && + 1 == t.resourceSets.length && + 1 == t.resourceSets[0].resources.length + ) { + var e = t.resourceSets[0].resources[0], + r = -1 == this.maxZoom_ ? e.zoomMax : this.maxZoom_, + n = hc(this.getProjection()), + i = this.hidpi_ ? 2 : 1, + o = + e.imageWidth == e.imageHeight + ? e.imageWidth / i + : [e.imageWidth / i, e.imageHeight / i], + a = lc({ + extent: n, + minZoom: e.zoomMin, + maxZoom: r, + tileSize: o, + }) + this.tileGrid = a + var s = this.culture_, + l = this.hidpi_ + if ( + ((this.tileUrlFunction = dc( + e.imageUrlSubdomains.map(function (t) { + var r = [0, 0, 0], + n = e.imageUrl + .replace('{subdomain}', t) + .replace('{culture}', s) + return function (t, e, i) { + if (t) { + uu(t[0], t[1], t[2], r) + var o = n + return ( + l && (o += '&dpi=d1&device=mobile'), + o.replace('{quadkey}', Kp(r)) + ) + } + } + }), + )), + e.imageryProviders) + ) { + var u = Zr(Gr('EPSG:4326'), this.getProjection()) + this.setAttributions( + function (t) { + var r = [], + n = t.viewState, + i = this.getTileGrid(), + o = i.getZForResolution(n.resolution, this.zDirection), + a = i.getTileCoordForCoordAndZ(n.center, o)[0] + return ( + e.imageryProviders.map(function (e) { + for ( + var n = !1, + i = e.coverageAreas, + o = 0, + s = i.length; + o < s; + ++o + ) { + var l = i[o] + if (a >= l.zoomMin && a <= l.zoomMax) { + var c = l.bbox + if ( + Re(Ae([c[1], c[0], c[3], c[2]], u), t.extent) + ) { + n = !0 + break + } + } + } + n && r.push(e.attribution) + }), + r.push( + 'Terms of Use', + ), + r + ) + }.bind(this), + ) + } + this.setState(Qo) + } else this.setState(ta) + }), + e + ) + })(Xp), + $p = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Jp = (function (t) { + function e(e) { + var r = e || {}, + n = void 0 !== r.projection ? r.projection : 'EPSG:3857', + i = + void 0 !== r.tileGrid + ? r.tileGrid + : lc({ + extent: hc(n), + maxResolution: r.maxResolution, + maxZoom: r.maxZoom, + minZoom: r.minZoom, + tileSize: r.tileSize, + }) + return ( + t.call(this, { + attributions: r.attributions, + cacheSize: r.cacheSize, + crossOrigin: r.crossOrigin, + imageSmoothing: r.imageSmoothing, + opaque: r.opaque, + projection: n, + reprojectionErrorThreshold: r.reprojectionErrorThreshold, + tileGrid: i, + tileLoadFunction: r.tileLoadFunction, + tilePixelRatio: r.tilePixelRatio, + tileUrlFunction: r.tileUrlFunction, + url: r.url, + urls: r.urls, + wrapX: void 0 === r.wrapX || r.wrapX, + transition: r.transition, + attributionsCollapsible: r.attributionsCollapsible, + zDirection: r.zDirection, + }) || this + ) + } + return $p(e, t), e + })(Xp), + Qp = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + tf = (function (t) { + function e(e) { + var r = + t.call(this, { + attributions: e.attributions, + cacheSize: e.cacheSize, + crossOrigin: e.crossOrigin, + maxZoom: void 0 !== e.maxZoom ? e.maxZoom : 18, + minZoom: e.minZoom, + projection: e.projection, + transition: e.transition, + wrapX: e.wrapX, + }) || this + return ( + (r.account_ = e.account), + (r.mapId_ = e.map || ''), + (r.config_ = e.config || {}), + (r.templateCache_ = {}), + r.initializeMap_(), + r + ) + } + return ( + Qp(e, t), + (e.prototype.getConfig = function () { + return this.config_ + }), + (e.prototype.updateConfig = function (t) { + O(this.config_, t), this.initializeMap_() + }), + (e.prototype.setConfig = function (t) { + ;(this.config_ = t || {}), this.initializeMap_() + }), + (e.prototype.initializeMap_ = function () { + var t = JSON.stringify(this.config_) + if (this.templateCache_[t]) + this.applyTemplate_(this.templateCache_[t]) + else { + var e = 'https://' + this.account_ + '.carto.com/api/v1/map' + this.mapId_ && (e += '/named/' + this.mapId_) + var r = new XMLHttpRequest() + r.addEventListener( + 'load', + this.handleInitResponse_.bind(this, t), + ), + r.addEventListener('error', this.handleInitError_.bind(this)), + r.open('POST', e), + r.setRequestHeader('Content-type', 'application/json'), + r.send(JSON.stringify(this.config_)) + } + }), + (e.prototype.handleInitResponse_ = function (t, e) { + var r = e.target + if (!r.status || (r.status >= 200 && r.status < 300)) { + var n = void 0 + try { + n = JSON.parse(r.responseText) + } catch (t) { + return void this.setState(ta) + } + this.applyTemplate_(n), + (this.templateCache_[t] = n), + this.setState(Qo) + } else this.setState(ta) + }), + (e.prototype.handleInitError_ = function (t) { + this.setState(ta) + }), + (e.prototype.applyTemplate_ = function (t) { + var e = + 'https://' + + t.cdn_url.https + + '/' + + this.account_ + + '/api/v1/map/' + + t.layergroupid + + '/{z}/{x}/{y}.png' + this.setUrl(e) + }), + e + ) + })(Jp), + ef = 'addfeature', + rf = 'changefeature', + nf = 'clear', + of = 'removefeature', + af = 'featuresloadstart', + sf = 'featuresloadend', + lf = 'featuresloaderror', + uf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + cf = (function (t) { + function e(e, r, n) { + var i = t.call(this, e) || this + return (i.feature = r), (i.features = n), i + } + return uf(e, t), e + })(c), + hf = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;((r = + t.call(this, { + attributions: n.attributions, + projection: void 0, + state: Qo, + wrapX: void 0 === n.wrapX || n.wrapX, + }) || this).loader_ = T), + (r.format_ = n.format), + (r.overlaps_ = void 0 === n.overlaps || n.overlaps), + (r.url_ = n.url), + void 0 !== n.loader + ? (r.loader_ = n.loader) + : void 0 !== r.url_ && + (pt(r.format_, 7), (r.loader_ = Mu(r.url_, r.format_))), + (r.strategy_ = void 0 !== n.strategy ? n.strategy : Fu) + var i, + o, + a = void 0 === n.useSpatialIndex || n.useSpatialIndex + return ( + (r.featuresRtree_ = a ? new Rp() : null), + (r.loadedExtentsRtree_ = new Rp()), + (r.nullGeometryFeatures_ = {}), + (r.idIndex_ = {}), + (r.uidIndex_ = {}), + (r.featureChangeKeys_ = {}), + (r.featuresCollection_ = null), + Array.isArray(n.features) + ? (o = n.features) + : n.features && (o = (i = n.features).getArray()), + a || void 0 !== i || (i = new ht(o)), + void 0 !== o && r.addFeaturesInternal(o), + void 0 !== i && r.bindFeaturesCollection_(i), + r + ) + } + return ( + uf(e, t), + (e.prototype.addFeature = function (t) { + this.addFeatureInternal(t), this.changed() + }), + (e.prototype.addFeatureInternal = function (t) { + var e = o(t) + if (this.addToIndex_(e, t)) { + this.setupChangeEvents_(e, t) + var r = t.getGeometry() + if (r) { + var n = r.getExtent() + this.featuresRtree_ && this.featuresRtree_.insert(n, t) + } else this.nullGeometryFeatures_[e] = t + this.dispatchEvent(new cf(ef, t)) + } else + this.featuresCollection_ && this.featuresCollection_.remove(t) + }), + (e.prototype.setupChangeEvents_ = function (t, e) { + this.featureChangeKeys_[t] = [ + Z(e, F, this.handleFeatureChange_, this), + Z(e, h, this.handleFeatureChange_, this), + ] + }), + (e.prototype.addToIndex_ = function (t, e) { + var r = !0, + n = e.getId() + return ( + void 0 !== n && + (n.toString() in this.idIndex_ + ? (r = !1) + : (this.idIndex_[n.toString()] = e)), + r && (pt(!(t in this.uidIndex_), 30), (this.uidIndex_[t] = e)), + r + ) + }), + (e.prototype.addFeatures = function (t) { + this.addFeaturesInternal(t), this.changed() + }), + (e.prototype.addFeaturesInternal = function (t) { + for ( + var e = [], r = [], n = [], i = 0, a = t.length; + i < a; + i++ + ) { + var s = o((u = t[i])) + this.addToIndex_(s, u) && r.push(u) + } + i = 0 + for (var l = r.length; i < l; i++) { + var u + s = o((u = r[i])) + this.setupChangeEvents_(s, u) + var c = u.getGeometry() + if (c) { + var h = c.getExtent() + e.push(h), n.push(u) + } else this.nullGeometryFeatures_[s] = u + } + this.featuresRtree_ && this.featuresRtree_.load(e, n) + i = 0 + for (var p = r.length; i < p; i++) + this.dispatchEvent(new cf(ef, r[i])) + }), + (e.prototype.bindFeaturesCollection_ = function (t) { + var e = !1 + this.addEventListener(ef, function (r) { + e || ((e = !0), t.push(r.feature), (e = !1)) + }), + this.addEventListener(of, function (r) { + e || ((e = !0), t.remove(r.feature), (e = !1)) + }), + t.addEventListener( + at, + function (t) { + e || ((e = !0), this.addFeature(t.element), (e = !1)) + }.bind(this), + ), + t.addEventListener( + st, + function (t) { + e || ((e = !0), this.removeFeature(t.element), (e = !1)) + }.bind(this), + ), + (this.featuresCollection_ = t) + }), + (e.prototype.clear = function (t) { + if (t) { + for (var e in this.featureChangeKeys_) { + this.featureChangeKeys_[e].forEach(H) + } + this.featuresCollection_ || + ((this.featureChangeKeys_ = {}), + (this.idIndex_ = {}), + (this.uidIndex_ = {})) + } else if (this.featuresRtree_) + for (var r in (this.featuresRtree_.forEach( + this.removeFeatureInternal.bind(this), + ), + this.nullGeometryFeatures_)) + this.removeFeatureInternal(this.nullGeometryFeatures_[r]) + this.featuresCollection_ && this.featuresCollection_.clear(), + this.featuresRtree_ && this.featuresRtree_.clear(), + (this.nullGeometryFeatures_ = {}) + var n = new cf(nf) + this.dispatchEvent(n), this.changed() + }), + (e.prototype.forEachFeature = function (t) { + if (this.featuresRtree_) return this.featuresRtree_.forEach(t) + this.featuresCollection_ && this.featuresCollection_.forEach(t) + }), + (e.prototype.forEachFeatureAtCoordinateDirect = function (t, e) { + var r = [t[0], t[1], t[0], t[1]] + return this.forEachFeatureInExtent(r, function (r) { + return r.getGeometry().intersectsCoordinate(t) ? e(r) : void 0 + }) + }), + (e.prototype.forEachFeatureInExtent = function (t, e) { + if (this.featuresRtree_) + return this.featuresRtree_.forEachInExtent(t, e) + this.featuresCollection_ && this.featuresCollection_.forEach(e) + }), + (e.prototype.forEachFeatureIntersectingExtent = function (t, e) { + return this.forEachFeatureInExtent(t, function (r) { + if (r.getGeometry().intersectsExtent(t)) { + var n = e(r) + if (n) return n + } + }) + }), + (e.prototype.getFeaturesCollection = function () { + return this.featuresCollection_ + }), + (e.prototype.getFeatures = function () { + var t + return ( + this.featuresCollection_ + ? (t = this.featuresCollection_.getArray()) + : this.featuresRtree_ && + ((t = this.featuresRtree_.getAll()), + I(this.nullGeometryFeatures_) || + v(t, R(this.nullGeometryFeatures_))), + t + ) + }), + (e.prototype.getFeaturesAtCoordinate = function (t) { + var e = [] + return ( + this.forEachFeatureAtCoordinateDirect(t, function (t) { + e.push(t) + }), + e + ) + }), + (e.prototype.getFeaturesInExtent = function (t) { + return this.featuresRtree_ + ? this.featuresRtree_.getInExtent(t) + : this.featuresCollection_ + ? this.featuresCollection_.getArray() + : [] + }), + (e.prototype.getClosestFeatureToCoordinate = function (t, e) { + var r = t[0], + n = t[1], + i = null, + o = [NaN, NaN], + a = 1 / 0, + s = [-1 / 0, -1 / 0, 1 / 0, 1 / 0], + l = e || S + return ( + this.featuresRtree_.forEachInExtent(s, function (t) { + if (l(t)) { + var e = t.getGeometry(), + u = a + if ((a = e.closestPointXY(r, n, o, a)) < u) { + i = t + var c = Math.sqrt(a) + ;(s[0] = r - c), + (s[1] = n - c), + (s[2] = r + c), + (s[3] = n + c) + } + } + }), + i + ) + }), + (e.prototype.getExtent = function (t) { + return this.featuresRtree_.getExtent(t) + }), + (e.prototype.getFeatureById = function (t) { + var e = this.idIndex_[t.toString()] + return void 0 !== e ? e : null + }), + (e.prototype.getFeatureByUid = function (t) { + var e = this.uidIndex_[t] + return void 0 !== e ? e : null + }), + (e.prototype.getFormat = function () { + return this.format_ + }), + (e.prototype.getOverlaps = function () { + return this.overlaps_ + }), + (e.prototype.getUrl = function () { + return this.url_ + }), + (e.prototype.handleFeatureChange_ = function (t) { + var e = t.target, + r = o(e), + n = e.getGeometry() + if (n) { + var i = n.getExtent() + r in this.nullGeometryFeatures_ + ? (delete this.nullGeometryFeatures_[r], + this.featuresRtree_ && this.featuresRtree_.insert(i, e)) + : this.featuresRtree_ && this.featuresRtree_.update(i, e) + } else + r in this.nullGeometryFeatures_ || + (this.featuresRtree_ && this.featuresRtree_.remove(e), + (this.nullGeometryFeatures_[r] = e)) + var a = e.getId() + if (void 0 !== a) { + var s = a.toString() + this.idIndex_[s] !== e && + (this.removeFromIdIndex_(e), (this.idIndex_[s] = e)) + } else this.removeFromIdIndex_(e), (this.uidIndex_[r] = e) + this.changed(), this.dispatchEvent(new cf(rf, e)) + }), + (e.prototype.hasFeature = function (t) { + var e = t.getId() + return void 0 !== e ? e in this.idIndex_ : o(t) in this.uidIndex_ + }), + (e.prototype.isEmpty = function () { + return ( + this.featuresRtree_.isEmpty() && I(this.nullGeometryFeatures_) + ) + }), + (e.prototype.loadFeatures = function (t, e, r) { + var n = this.loadedExtentsRtree_, + i = this.strategy_(t, e) + this.loading = !1 + for ( + var o = function (t, o) { + var s = i[t] + n.forEachInExtent(s, function (t) { + return te(t.extent, s) + }) || + (a.dispatchEvent(new cf(af)), + a.loader_.call( + a, + s, + e, + r, + function (t) { + this.dispatchEvent(new cf(sf, void 0, t)) + }.bind(a), + function () { + this.dispatchEvent(new cf(lf)) + }.bind(a), + ), + n.insert(s, { extent: s.slice() }), + (a.loading = a.loader_ !== T)) + }, + a = this, + s = 0, + l = i.length; + s < l; + ++s + ) + o(s) + }), + (e.prototype.refresh = function () { + this.clear(!0), + this.loadedExtentsRtree_.clear(), + t.prototype.refresh.call(this) + }), + (e.prototype.removeLoadedExtent = function (t) { + var e, + r = this.loadedExtentsRtree_ + r.forEachInExtent(t, function (r) { + if (ue(r.extent, t)) return (e = r), !0 + }), + e && r.remove(e) + }), + (e.prototype.removeFeature = function (t) { + var e = o(t) + e in this.nullGeometryFeatures_ + ? delete this.nullGeometryFeatures_[e] + : this.featuresRtree_ && this.featuresRtree_.remove(t), + this.removeFeatureInternal(t), + this.changed() + }), + (e.prototype.removeFeatureInternal = function (t) { + var e = o(t) + this.featureChangeKeys_[e].forEach(H), + delete this.featureChangeKeys_[e] + var r = t.getId() + void 0 !== r && delete this.idIndex_[r.toString()], + delete this.uidIndex_[e], + this.dispatchEvent(new cf(of, t)) + }), + (e.prototype.removeFromIdIndex_ = function (t) { + var e = !1 + for (var r in this.idIndex_) + if (this.idIndex_[r] === t) { + delete this.idIndex_[r], (e = !0) + break + } + return e + }), + (e.prototype.setLoader = function (t) { + this.loader_ = t + }), + (e.prototype.setUrl = function (t) { + pt(this.format_, 7), this.setLoader(Mu(t, this.format_)) + }), + e + ) + })(Dp), + pf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ff = (function (t) { + function e(e) { + var r = + t.call(this, { attributions: e.attributions, wrapX: e.wrapX }) || + this + return ( + (r.resolution = void 0), + (r.distance = void 0 !== e.distance ? e.distance : 20), + (r.features = []), + (r.geometryFunction = + e.geometryFunction || + function (t) { + var e = t.getGeometry() + return pt(e.getType() == bt.POINT, 10), e + }), + (r.boundRefresh_ = r.refresh.bind(r)), + r.setSource(e.source || null), + r + ) + } + return ( + pf(e, t), + (e.prototype.clear = function (e) { + ;(this.features.length = 0), t.prototype.clear.call(this, e) + }), + (e.prototype.getDistance = function () { + return this.distance + }), + (e.prototype.getSource = function () { + return this.source + }), + (e.prototype.loadFeatures = function (t, e, r) { + this.source.loadFeatures(t, e, r), + e !== this.resolution && + (this.clear(), + (this.resolution = e), + this.cluster(), + this.addFeatures(this.features)) + }), + (e.prototype.setDistance = function (t) { + ;(this.distance = t), this.refresh() + }), + (e.prototype.setSource = function (t) { + this.source && + this.source.removeEventListener(F, this.boundRefresh_), + (this.source = t), + t && t.addEventListener(F, this.boundRefresh_), + this.refresh() + }), + (e.prototype.refresh = function () { + this.clear(), this.cluster(), this.addFeatures(this.features) + }), + (e.prototype.cluster = function () { + if (void 0 !== this.resolution && this.source) + for ( + var t = [1 / 0, 1 / 0, -1 / 0, -1 / 0], + e = this.distance * this.resolution, + r = this.source.getFeatures(), + n = {}, + i = 0, + a = r.length; + i < a; + i++ + ) { + var s = r[i] + if (!(o(s) in n)) { + var l = this.geometryFunction(s) + if (l) { + ae(l.getCoordinates(), t), Ht(t, e, t) + var u = this.source.getFeaturesInExtent(t) + ;(u = u.filter(function (t) { + var e = o(t) + return !(e in n) && ((n[e] = !0), !0) + })), + this.features.push(this.createCluster(u)) + } + } + } + }), + (e.prototype.createCluster = function (t) { + for (var e = [0, 0], r = t.length - 1; r >= 0; --r) { + var n = this.geometryFunction(t[r]) + n ? xr(e, n.getCoordinates()) : t.splice(r, 1) + } + Pr(e, 1 / t.length) + var i = new gt(new qn(e)) + return i.set('features', t), i + }), + e + ) + })(hf), + df = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + gf = 'default', + yf = 'truncated', + mf = (function (t) { + function e(e, r, n, i, o, a, s) { + var l = t.call(this, r, n, i, o, a, s) || this + return (l.zoomifyImage_ = null), (l.tileSize_ = e), l + } + return ( + df(e, t), + (e.prototype.getImage = function () { + if (this.zoomifyImage_) return this.zoomifyImage_ + var e = t.prototype.getImage.call(this) + if (this.state == to) { + var r = this.tileSize_ + if (e.width == r[0] && e.height == r[1]) + return (this.zoomifyImage_ = e), e + var n = uo(r[0], r[1]) + return ( + n.drawImage(e, 0, 0), + (this.zoomifyImage_ = n.canvas), + n.canvas + ) + } + return e + }), + e + ) + })(vo), + vf = (function (t) { + function e(e) { + var r = this, + n = e, + i = n.size, + o = void 0 !== n.tierSizeCalculation ? n.tierSizeCalculation : gf, + a = n.tilePixelRatio || 1, + s = i[0], + l = i[1], + u = [], + c = n.tileSize || 256, + h = c * a + switch (o) { + case gf: + for (; s > h || l > h; ) + u.push([Math.ceil(s / h), Math.ceil(l / h)]), (h += h) + break + case yf: + for (var p = s, f = l; p > h || f > h; ) + u.push([Math.ceil(p / h), Math.ceil(f / h)]), + (p >>= 1), + (f >>= 1) + break + default: + pt(!1, 53) + } + u.push([1, 1]), u.reverse() + for (var d = [a], g = [0], y = 1, m = u.length; y < m; y++) + d.push(a << y), g.push(u[y - 1][0] * u[y - 1][1] + g[y - 1]) + d.reverse() + var v = new ic({ + tileSize: c, + extent: n.extent || [0, -l, s, 0], + resolutions: d, + }), + _ = n.url + _ && + -1 == _.indexOf('{TileGroup}') && + -1 == _.indexOf('{tileIndex}') && + (_ += '{TileGroup}/{z}-{x}-{y}.jpg') + var b = yc(_), + x = c * a + var w = dc( + b.map(function (t) { + return function (e, r, n) { + if (e) { + var i = e[0], + o = e[1], + a = e[2], + s = o + a * u[i][0], + l = { + z: i, + x: o, + y: a, + tileIndex: s, + TileGroup: 'TileGroup' + (((s + g[i]) / x) | 0), + } + return t.replace(/\{(\w+?)\}/g, function (t, e) { + return l[e] + }) + } + } + }), + ), + S = mf.bind(null, Is(c * a)) + ;(r = + t.call(this, { + attributions: n.attributions, + cacheSize: n.cacheSize, + crossOrigin: n.crossOrigin, + imageSmoothing: n.imageSmoothing, + projection: n.projection, + tilePixelRatio: a, + reprojectionErrorThreshold: n.reprojectionErrorThreshold, + tileClass: S, + tileGrid: v, + tileUrlFunction: w, + transition: n.transition, + }) || this).zDirection = n.zDirection + var E = w( + v.getTileCoordForCoordAndResolution( + xe(v.getExtent()), + d[d.length - 1], + ), + 1, + null, + ), + T = new Image() + return ( + T.addEventListener( + 'error', + function () { + ;(x = c), this.changed() + }.bind(r), + ), + (T.src = E), + r + ) + } + return df(e, t), e + })(Xp), + _f = function () { + for (var t = 0, e = 0, r = arguments.length; e < r; e++) + t += arguments[e].length + var n = Array(t), + i = 0 + for (e = 0; e < r; e++) + for (var o = arguments[e], a = 0, s = o.length; a < s; a++, i++) + n[i] = o[a] + return n + }, + bf = 'version1', + xf = 'version2', + wf = 'version3', + Sf = {} + ;(Sf[bf] = { + level0: { supports: [], formats: [], qualities: ['native'] }, + level1: { + supports: ['regionByPx', 'sizeByW', 'sizeByH', 'sizeByPct'], + formats: ['jpg'], + qualities: ['native'], + }, + level2: { + supports: [ + 'regionByPx', + 'regionByPct', + 'sizeByW', + 'sizeByH', + 'sizeByPct', + 'sizeByConfinedWh', + 'sizeByWh', + ], + formats: ['jpg', 'png'], + qualities: ['native', 'color', 'grey', 'bitonal'], + }, + }), + (Sf[xf] = { + level0: { supports: [], formats: ['jpg'], qualities: ['default'] }, + level1: { + supports: ['regionByPx', 'sizeByW', 'sizeByH', 'sizeByPct'], + formats: ['jpg'], + qualities: ['default'], + }, + level2: { + supports: [ + 'regionByPx', + 'regionByPct', + 'sizeByW', + 'sizeByH', + 'sizeByPct', + 'sizeByConfinedWh', + 'sizeByDistortedWh', + 'sizeByWh', + ], + formats: ['jpg', 'png'], + qualities: ['default', 'bitonal'], + }, + }), + (Sf[wf] = { + level0: { supports: [], formats: ['jpg'], qualities: ['default'] }, + level1: { + supports: [ + 'regionByPx', + 'regionSquare', + 'sizeByW', + 'sizeByH', + 'sizeByWh', + ], + formats: ['jpg'], + qualities: ['default'], + }, + level2: { + supports: [ + 'regionByPx', + 'regionSquare', + 'regionByPct', + 'sizeByW', + 'sizeByH', + 'sizeByPct', + 'sizeByConfinedWh', + 'sizeByWh', + ], + formats: ['jpg', 'png'], + qualities: ['default'], + }, + }), + (Sf.none = { none: { supports: [], formats: [], qualities: [] } }) + var Ef = + /^https?:\/\/library\.stanford\.edu\/iiif\/image-api\/(?:1\.1\/)?compliance\.html#level[0-2]$/, + Tf = /^https?:\/\/iiif\.io\/api\/image\/2\/level[0-2](?:\.json)?$/, + Cf = + /(^https?:\/\/iiif\.io\/api\/image\/3\/level[0-2](?:\.json)?$)|(^level[0-2]$)/ + var Of = {} + ;(Of[bf] = function (t) { + var e = t.getComplianceLevelSupportedFeatures() + return ( + void 0 === e && (e = Sf[bf].level0), + { + url: + void 0 === t.imageInfo['@id'] + ? void 0 + : t.imageInfo['@id'].replace(/\/?(?:info\.json)?$/g, ''), + supports: e.supports, + formats: _f(e.formats, [ + void 0 === t.imageInfo.formats ? [] : t.imageInfo.formats, + ]), + qualities: _f(e.qualities, [ + void 0 === t.imageInfo.qualities ? [] : t.imageInfo.qualities, + ]), + resolutions: t.imageInfo.scale_factors, + tileSize: + void 0 !== t.imageInfo.tile_width + ? void 0 !== t.imageInfo.tile_height + ? [t.imageInfo.tile_width, t.imageInfo.tile_height] + : [t.imageInfo.tile_width, t.imageInfo.tile_width] + : null != t.imageInfo.tile_height + ? [t.imageInfo.tile_height, t.imageInfo.tile_height] + : void 0, + } + ) + }), + (Of[xf] = function (t) { + var e = t.getComplianceLevelSupportedFeatures(), + r = + Array.isArray(t.imageInfo.profile) && + t.imageInfo.profile.length > 1, + n = + r && t.imageInfo.profile[1].supports + ? t.imageInfo.profile[1].supports + : [], + i = + r && t.imageInfo.profile[1].formats + ? t.imageInfo.profile[1].formats + : [], + o = + r && t.imageInfo.profile[1].qualities + ? t.imageInfo.profile[1].qualities + : [] + return { + url: t.imageInfo['@id'].replace(/\/?(?:info\.json)?$/g, ''), + sizes: + void 0 === t.imageInfo.sizes + ? void 0 + : t.imageInfo.sizes.map(function (t) { + return [t.width, t.height] + }), + tileSize: + void 0 === t.imageInfo.tiles + ? void 0 + : [ + t.imageInfo.tiles.map(function (t) { + return t.width + })[0], + t.imageInfo.tiles.map(function (t) { + return void 0 === t.height ? t.width : t.height + })[0], + ], + resolutions: + void 0 === t.imageInfo.tiles + ? void 0 + : t.imageInfo.tiles.map(function (t) { + return t.scaleFactors + })[0], + supports: _f(e.supports, n), + formats: _f(e.formats, i), + qualities: _f(e.qualities, o), + } + }), + (Of[wf] = function (t) { + var e = t.getComplianceLevelSupportedFeatures(), + r = + void 0 === t.imageInfo.extraFormats + ? e.formats + : _f(e.formats, t.imageInfo.extraFormats), + n = + void 0 !== t.imageInfo.preferredFormats && + Array.isArray(t.imageInfo.preferredFormats) && + t.imageInfo.preferredFormats.length > 0 + ? t.imageInfo.preferredFormats + .filter(function (t) { + return ['jpg', 'png', 'gif'].includes(t) + }) + .reduce( + function (t, e) { + return void 0 === t && r.includes(e) ? e : t + }, + void 0, + ) + : void 0 + return { + url: t.imageInfo.id, + sizes: + void 0 === t.imageInfo.sizes + ? void 0 + : t.imageInfo.sizes.map(function (t) { + return [t.width, t.height] + }), + tileSize: + void 0 === t.imageInfo.tiles + ? void 0 + : [ + t.imageInfo.tiles.map(function (t) { + return t.width + })[0], + t.imageInfo.tiles.map(function (t) { + return t.height + })[0], + ], + resolutions: + void 0 === t.imageInfo.tiles + ? void 0 + : t.imageInfo.tiles.map(function (t) { + return t.scaleFactors + })[0], + supports: + void 0 === t.imageInfo.extraFeatures + ? e.supports + : _f(e.supports, t.imageInfo.extraFeatures), + formats: r, + qualities: + void 0 === t.imageInfo.extraQualities + ? e.qualities + : _f(e.qualities, t.imageInfo.extraQualities), + preferredFormat: n, + } + }) + var Pf = (function () { + function t(t) { + this.setImageInfo(t) + } + return ( + (t.prototype.setImageInfo = function (t) { + this.imageInfo = 'string' == typeof t ? JSON.parse(t) : t + }), + (t.prototype.getImageApiVersion = function () { + if (void 0 !== this.imageInfo) { + var t = this.imageInfo['@context'] || 'ol-no-context' + 'string' == typeof t && (t = [t]) + for (var e = 0; e < t.length; e++) + switch (t[e]) { + case 'http://library.stanford.edu/iiif/image-api/1.1/context.json': + case 'http://iiif.io/api/image/1/context.json': + return bf + case 'http://iiif.io/api/image/2/context.json': + return xf + case 'http://iiif.io/api/image/3/context.json': + return wf + case 'ol-no-context': + if ( + this.getComplianceLevelEntryFromProfile(bf) && + this.imageInfo.identifier + ) + return bf + } + pt(!1, 61) + } + }), + (t.prototype.getComplianceLevelEntryFromProfile = function (t) { + if ( + void 0 !== this.imageInfo && + void 0 !== this.imageInfo.profile + ) + switch ((void 0 === t && (t = this.getImageApiVersion()), t)) { + case bf: + if (Ef.test(this.imageInfo.profile)) + return this.imageInfo.profile + break + case wf: + if (Cf.test(this.imageInfo.profile)) + return this.imageInfo.profile + break + case xf: + if ( + 'string' == typeof this.imageInfo.profile && + Tf.test(this.imageInfo.profile) + ) + return this.imageInfo.profile + if ( + Array.isArray(this.imageInfo.profile) && + this.imageInfo.profile.length > 0 && + 'string' == typeof this.imageInfo.profile[0] && + Tf.test(this.imageInfo.profile[0]) + ) + return this.imageInfo.profile[0] + } + }), + (t.prototype.getComplianceLevelFromProfile = function (t) { + var e = this.getComplianceLevelEntryFromProfile(t) + if (void 0 !== e) { + var r = e.match(/level[0-2](?:\.json)?$/g) + return Array.isArray(r) ? r[0].replace('.json', '') : void 0 + } + }), + (t.prototype.getComplianceLevelSupportedFeatures = function () { + if (void 0 !== this.imageInfo) { + var t = this.getImageApiVersion(), + e = this.getComplianceLevelFromProfile(t) + return void 0 === e ? Sf.none.none : Sf[t][e] + } + }), + (t.prototype.getTileSourceOptions = function (t) { + var e = t || {}, + r = this.getImageApiVersion() + if (void 0 !== r) { + var n = void 0 === r ? void 0 : Of[r](this) + if (void 0 !== n) + return { + url: n.url, + version: r, + size: [this.imageInfo.width, this.imageInfo.height], + sizes: n.sizes, + format: + void 0 !== e.format && n.formats.includes(e.format) + ? e.format + : void 0 !== n.preferredFormat + ? n.preferredFormat + : 'jpg', + supports: n.supports, + quality: + e.quality && n.qualities.includes(e.quality) + ? e.quality + : n.qualities.includes('native') + ? 'native' + : 'default', + resolutions: Array.isArray(n.resolutions) + ? n.resolutions.sort(function (t, e) { + return e - t + }) + : void 0, + tileSize: n.tileSize, + } + } + }), + t + ) + })(), + Rf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function If(t) { + return t.toLocaleString('en', { maximumFractionDigits: 10 }) + } + var Lf = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = n.url || '' + i += i.lastIndexOf('/') === i.length - 1 || '' === i ? '' : '/' + var o = n.version || xf, + a = n.sizes || [], + s = n.size + pt( + null != s && + Array.isArray(s) && + 2 == s.length && + !isNaN(s[0]) && + s[0] > 0 && + !isNaN(s[1]) && + s[1] > 0, + 60, + ) + var l, + u, + c, + h = s[0], + p = s[1], + f = n.tileSize, + d = n.tilePixelRatio || 1, + g = n.format || 'jpg', + y = n.quality || (n.version == bf ? 'native' : 'default'), + m = n.resolutions || [], + v = n.supports || [], + _ = n.extent || [0, -p, h, 0], + b = null != a && Array.isArray(a) && a.length > 0, + x = + void 0 !== f && + (('number' == typeof f && Number.isInteger(f) && f > 0) || + (Array.isArray(f) && f.length > 0)), + w = + null != v && + Array.isArray(v) && + (v.includes('regionByPx') || v.includes('regionByPct')) && + (v.includes('sizeByWh') || + v.includes('sizeByH') || + v.includes('sizeByW') || + v.includes('sizeByPct')) + if ( + (m.sort(function (t, e) { + return e - t + }), + x || w) + ) + if ( + (null != f && + ('number' == typeof f && Number.isInteger(f) && f > 0 + ? ((l = f), (u = f)) + : Array.isArray(f) && + f.length > 0 && + ((1 == f.length || + (null == f[1] && Number.isInteger(f[0]))) && + ((l = f[0]), (u = f[0])), + 2 == f.length && + (Number.isInteger(f[0]) && Number.isInteger(f[1]) + ? ((l = f[0]), (u = f[1])) + : null == f[0] && + Number.isInteger(f[1]) && + ((l = f[1]), (u = f[1]))))), + (void 0 !== l && void 0 !== u) || ((l = 256), (u = 256)), + 0 == m.length) + ) + for ( + var S = (c = Math.max( + Math.ceil(Math.log(h / l) / Math.LN2), + Math.ceil(Math.log(p / u) / Math.LN2), + )); + S >= 0; + S-- + ) + m.push(Math.pow(2, S)) + else { + var E = Math.max.apply(Math, m) + c = Math.round(Math.log(E) / Math.LN2) + } + else if (((l = h), (u = p), (m = []), b)) { + a.sort(function (t, e) { + return t[0] - e[0] + }), + (c = -1) + var T = [] + for (S = 0; S < a.length; S++) { + var C = h / a[S][0] + m.length > 0 && m[m.length - 1] == C + ? T.push(S) + : (m.push(C), c++) + } + if (T.length > 0) + for (S = 0; S < T.length; S++) a.splice(T[S] - S, 1) + } else m.push(1), a.push([h, p]), (c = 0) + var O = new ic({ + tileSize: [l, u], + extent: _, + origin: Ce(_), + resolutions: m, + }), + P = mf.bind( + null, + Is(f || 256).map(function (t) { + return t * d + }), + ) + return ( + ((r = + t.call(this, { + attributions: n.attributions, + attributionsCollapsible: n.attributionsCollapsible, + cacheSize: n.cacheSize, + crossOrigin: n.crossOrigin, + imageSmoothing: n.imageSmoothing, + projection: n.projection, + reprojectionErrorThreshold: n.reprojectionErrorThreshold, + state: n.state, + tileClass: P, + tileGrid: O, + tilePixelRatio: n.tilePixelRatio, + tileUrlFunction: function (t, e, r) { + var n, + s, + f = t[0] + if (!(f > c)) { + var d = t[1], + _ = t[2], + S = m[f] + if ( + !( + void 0 === d || + void 0 === _ || + void 0 === S || + d < 0 || + Math.ceil(h / S / l) <= d || + _ < 0 || + Math.ceil(p / S / u) <= _ + ) + ) { + if (w || x) { + var E = d * l * S, + T = _ * u * S, + C = l * S, + O = u * S, + P = l, + R = u + if ( + (E + C > h && (C = h - E), + T + O > p && (O = p - T), + E + l * S > h && + (P = Math.floor((h - E + S - 1) / S)), + T + u * S > p && + (R = Math.floor((p - T + S - 1) / S)), + 0 == E && C == h && 0 == T && O == p) + ) + n = 'full' + else if (!w || v.includes('regionByPx')) + n = E + ',' + T + ',' + C + ',' + O + else if (v.includes('regionByPct')) { + n = + 'pct:' + + If((E / h) * 100) + + ',' + + If((T / p) * 100) + + ',' + + If((C / h) * 100) + + ',' + + If((O / p) * 100) + } + o != wf || (w && !v.includes('sizeByWh')) + ? !w || v.includes('sizeByW') + ? (s = P + ',') + : v.includes('sizeByH') + ? (s = ',' + R) + : v.includes('sizeByWh') + ? (s = P + ',' + R) + : v.includes('sizeByPct') && + (s = 'pct:' + If(100 / S)) + : (s = P + ',' + R) + } else if (((n = 'full'), b)) { + var I = a[f][0], + L = a[f][1] + s = + o == wf + ? I == h && L == p + ? 'max' + : I + ',' + L + : I == h + ? 'full' + : I + ',' + } else s = o == wf ? 'max' : 'full' + return i + n + '/' + s + '/0/' + y + '.' + g + } + } + }, + transition: n.transition, + }) || this).zDirection = n.zDirection), + r + ) + } + return Rf(e, t), e + })(Xp), + Mf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Ff = (function (t) { + function e(e, r, n, i, o, a, s) { + var l = this, + u = e.getExtent(), + c = r.getExtent(), + h = c ? Te(n, c) : n, + p = tc(e, r, xe(h), i), + f = new Ip(e, r, h, u, 0.5 * p, i), + d = a(f.calculateSourceExtent(), p, o), + g = d ? Fi : Ni, + y = d ? d.getPixelRatio() : 1 + return ( + ((l = t.call(this, n, i, y, g) || this).targetProj_ = r), + (l.maxSourceExtent_ = u), + (l.triangulation_ = f), + (l.targetResolution_ = i), + (l.targetExtent_ = n), + (l.sourceImage_ = d), + (l.sourcePixelRatio_ = y), + (l.contextOptions_ = s), + (l.canvas_ = null), + (l.sourceListenerKey_ = null), + l + ) + } + return ( + Mf(e, t), + (e.prototype.disposeInternal = function () { + this.state == Ai && this.unlistenSource_(), + t.prototype.disposeInternal.call(this) + }), + (e.prototype.getImage = function () { + return this.canvas_ + }), + (e.prototype.getProjection = function () { + return this.targetProj_ + }), + (e.prototype.reproject_ = function () { + var t = this.sourceImage_.getState() + if (t == ki) { + var e = Pe(this.targetExtent_) / this.targetResolution_, + r = Ee(this.targetExtent_) / this.targetResolution_ + this.canvas_ = rc( + e, + r, + this.sourcePixelRatio_, + this.sourceImage_.getResolution(), + this.maxSourceExtent_, + this.targetResolution_, + this.targetExtent_, + this.triangulation_, + [ + { + extent: this.sourceImage_.getExtent(), + image: this.sourceImage_.getImage(), + }, + ], + 0, + void 0, + this.contextOptions_, + ) + } + ;(this.state = t), this.changed() + }), + (e.prototype.load = function () { + if (this.state == Fi) { + ;(this.state = Ai), this.changed() + var t = this.sourceImage_.getState() + t == ki || t == ji + ? this.reproject_() + : ((this.sourceListenerKey_ = Z( + this.sourceImage_, + F, + function (t) { + var e = this.sourceImage_.getState() + ;(e != ki && e != ji) || + (this.unlistenSource_(), this.reproject_()) + }, + this, + )), + this.sourceImage_.load()) + } + }), + (e.prototype.unlistenSource_ = function () { + H(this.sourceListenerKey_), (this.sourceListenerKey_ = null) + }), + e + ) + })(Mi), + Af = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + kf = 'imageloadstart', + jf = 'imageloadend', + Nf = 'imageloaderror', + Df = (function (t) { + function e(e, r) { + var n = t.call(this, e) || this + return (n.image = r), n + } + return Af(e, t), e + })(c) + function Gf(t, e) { + t.getImage().src = e + } + var zf = (function (t) { + function e(e) { + var r = + t.call(this, { + attributions: e.attributions, + projection: e.projection, + state: e.state, + }) || this + return ( + (r.resolutions_ = + void 0 !== e.resolutions ? e.resolutions : null), + (r.reprojectedImage_ = null), + (r.reprojectedRevision_ = 0), + (r.contextOptions_ = !1 === e.imageSmoothing ? $u : void 0), + r + ) + } + return ( + Af(e, t), + (e.prototype.getResolutions = function () { + return this.resolutions_ + }), + (e.prototype.getContextOptions = function () { + return this.contextOptions_ + }), + (e.prototype.findNearestResolution = function (t) { + if (this.resolutions_) { + var e = y(this.resolutions_, t, 0) + t = this.resolutions_[e] + } + return t + }), + (e.prototype.getImage = function (t, e, r, n) { + var i = this.getProjection() + if (i && n && !Xr(i, n)) { + if (this.reprojectedImage_) { + if ( + this.reprojectedRevision_ == this.getRevision() && + Xr(this.reprojectedImage_.getProjection(), n) && + this.reprojectedImage_.getResolution() == e && + ue(this.reprojectedImage_.getExtent(), t) + ) + return this.reprojectedImage_ + this.reprojectedImage_.dispose(), + (this.reprojectedImage_ = null) + } + return ( + (this.reprojectedImage_ = new Ff( + i, + n, + t, + e, + r, + function (t, e, r) { + return this.getImageInternal(t, e, r, i) + }.bind(this), + this.contextOptions_, + )), + (this.reprojectedRevision_ = this.getRevision()), + this.reprojectedImage_ + ) + } + return i && (n = i), this.getImageInternal(t, e, r, n) + }), + (e.prototype.getImageInternal = function (t, e, r, i) { + return n() + }), + (e.prototype.handleImageChange = function (t) { + var e = t.target + switch (e.getState()) { + case Ai: + ;(this.loading = !0), this.dispatchEvent(new Df(kf, e)) + break + case ki: + ;(this.loading = !1), this.dispatchEvent(new Df(jf, e)) + break + case ji: + ;(this.loading = !1), this.dispatchEvent(new Df(Nf, e)) + } + }), + e + ) + })(Dp), + Uf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Bf = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = + t.call(this, { + attributions: n.attributions, + imageSmoothing: n.imageSmoothing, + projection: n.projection, + resolutions: n.resolutions, + }) || this).crossOrigin_ = + void 0 !== n.crossOrigin ? n.crossOrigin : null), + (r.hidpi_ = void 0 === n.hidpi || n.hidpi), + (r.url_ = n.url), + (r.imageLoadFunction_ = + void 0 !== n.imageLoadFunction ? n.imageLoadFunction : Gf), + (r.params_ = n.params || {}), + (r.image_ = null), + (r.imageSize_ = [0, 0]), + (r.renderedRevision_ = 0), + (r.ratio_ = void 0 !== n.ratio ? n.ratio : 1.5), + r + ) + } + return ( + Uf(e, t), + (e.prototype.getParams = function () { + return this.params_ + }), + (e.prototype.getImageInternal = function (t, e, r, n) { + if (void 0 === this.url_) return null + ;(e = this.findNearestResolution(e)), (r = this.hidpi_ ? r : 1) + var i = this.image_ + if ( + i && + this.renderedRevision_ == this.getRevision() && + i.getResolution() == e && + i.getPixelRatio() == r && + te(i.getExtent(), t) + ) + return i + var o = { F: 'image', FORMAT: 'PNG32', TRANSPARENT: !0 } + O(o, this.params_) + var a = ((t = t.slice())[0] + t[2]) / 2, + s = (t[1] + t[3]) / 2 + if (1 != this.ratio_) { + var l = (this.ratio_ * Pe(t)) / 2, + u = (this.ratio_ * Ee(t)) / 2 + ;(t[0] = a - l), (t[1] = s - u), (t[2] = a + l), (t[3] = s + u) + } + var c = e / r, + h = Math.ceil(Pe(t) / c), + p = Math.ceil(Ee(t) / c) + ;(t[0] = a - (c * h) / 2), + (t[2] = a + (c * h) / 2), + (t[1] = s - (c * p) / 2), + (t[3] = s + (c * p) / 2), + (this.imageSize_[0] = h), + (this.imageSize_[1] = p) + var f = this.getRequestUrl_(t, this.imageSize_, r, n, o) + return ( + (this.image_ = new Ki( + t, + e, + r, + f, + this.crossOrigin_, + this.imageLoadFunction_, + )), + (this.renderedRevision_ = this.getRevision()), + this.image_.addEventListener( + F, + this.handleImageChange.bind(this), + ), + this.image_ + ) + }), + (e.prototype.getImageLoadFunction = function () { + return this.imageLoadFunction_ + }), + (e.prototype.getRequestUrl_ = function (t, e, r, n, i) { + var o = n.getCode().split(':').pop() + ;(i.SIZE = e[0] + ',' + e[1]), + (i.BBOX = t.join(',')), + (i.BBOXSR = o), + (i.IMAGESR = o), + (i.DPI = Math.round(90 * r)) + var a = this.url_, + s = a + .replace(/MapServer\/?$/, 'MapServer/export') + .replace(/ImageServer\/?$/, 'ImageServer/exportImage') + return s == a && pt(!1, 50), mc(s, i) + }), + (e.prototype.getUrl = function () { + return this.url_ + }), + (e.prototype.setImageLoadFunction = function (t) { + ;(this.image_ = null), + (this.imageLoadFunction_ = t), + this.changed() + }), + (e.prototype.setUrl = function (t) { + t != this.url_ && + ((this.url_ = t), (this.image_ = null), this.changed()) + }), + (e.prototype.updateParams = function (t) { + O(this.params_, t), (this.image_ = null), this.changed() + }), + e + ) + })(zf), + Vf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Yf = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = + t.call(this, { + attributions: n.attributions, + imageSmoothing: n.imageSmoothing, + projection: n.projection, + resolutions: n.resolutions, + state: n.state, + }) || this).canvasFunction_ = n.canvasFunction), + (r.canvas_ = null), + (r.renderedRevision_ = 0), + (r.ratio_ = void 0 !== n.ratio ? n.ratio : 1.5), + r + ) + } + return ( + Vf(e, t), + (e.prototype.getImageInternal = function (t, e, r, n) { + e = this.findNearestResolution(e) + var i = this.canvas_ + if ( + i && + this.renderedRevision_ == this.getRevision() && + i.getResolution() == e && + i.getPixelRatio() == r && + te(i.getExtent(), t) + ) + return i + Me((t = t.slice()), this.ratio_) + var o = [(Pe(t) / e) * r, (Ee(t) / e) * r], + a = this.canvasFunction_.call(this, t, e, r, o, n) + return ( + a && (i = new $i(t, e, r, a)), + (this.canvas_ = i), + (this.renderedRevision_ = this.getRevision()), + i + ) + }), + e + ) + })(zf), + Wf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + var qf = (function (t) { + function e(e) { + var r = + t.call(this, { + imageSmoothing: e.imageSmoothing, + projection: e.projection, + resolutions: e.resolutions, + }) || this + return ( + (r.crossOrigin_ = + void 0 !== e.crossOrigin ? e.crossOrigin : null), + (r.displayDpi_ = void 0 !== e.displayDpi ? e.displayDpi : 96), + (r.params_ = e.params || {}), + (r.url_ = e.url), + (r.imageLoadFunction_ = + void 0 !== e.imageLoadFunction ? e.imageLoadFunction : Gf), + (r.hidpi_ = void 0 === e.hidpi || e.hidpi), + (r.metersPerUnit_ = + void 0 !== e.metersPerUnit ? e.metersPerUnit : 1), + (r.ratio_ = void 0 !== e.ratio ? e.ratio : 1), + (r.useOverlay_ = void 0 !== e.useOverlay && e.useOverlay), + (r.image_ = null), + (r.renderedRevision_ = 0), + r + ) + } + return ( + Wf(e, t), + (e.prototype.getParams = function () { + return this.params_ + }), + (e.prototype.getImageInternal = function (t, e, r, n) { + ;(e = this.findNearestResolution(e)), (r = this.hidpi_ ? r : 1) + var i = this.image_ + if ( + i && + this.renderedRevision_ == this.getRevision() && + i.getResolution() == e && + i.getPixelRatio() == r && + te(i.getExtent(), t) + ) + return i + 1 != this.ratio_ && Me((t = t.slice()), this.ratio_) + var o = [(Pe(t) / e) * r, (Ee(t) / e) * r] + if (void 0 !== this.url_) { + var a = this.getUrl(this.url_, this.params_, t, o, n) + ;(i = new Ki( + t, + e, + r, + a, + this.crossOrigin_, + this.imageLoadFunction_, + )).addEventListener(F, this.handleImageChange.bind(this)) + } else i = null + return ( + (this.image_ = i), + (this.renderedRevision_ = this.getRevision()), + i + ) + }), + (e.prototype.getImageLoadFunction = function () { + return this.imageLoadFunction_ + }), + (e.prototype.updateParams = function (t) { + O(this.params_, t), this.changed() + }), + (e.prototype.getUrl = function (t, e, r, n, i) { + var o = (function (t, e, r, n) { + var i = Pe(t), + o = Ee(t), + a = e[0], + s = e[1], + l = 0.0254 / n + return s * i > a * o ? (i * r) / (a * l) : (o * r) / (s * l) + })(r, n, this.metersPerUnit_, this.displayDpi_), + a = xe(r), + s = { + OPERATION: this.useOverlay_ + ? 'GETDYNAMICMAPOVERLAYIMAGE' + : 'GETMAPIMAGE', + VERSION: '2.0.0', + LOCALE: 'en', + CLIENTAGENT: 'ol/source/ImageMapGuide source', + CLIP: '1', + SETDISPLAYDPI: this.displayDpi_, + SETDISPLAYWIDTH: Math.round(n[0]), + SETDISPLAYHEIGHT: Math.round(n[1]), + SETVIEWSCALE: o, + SETVIEWCENTERX: a[0], + SETVIEWCENTERY: a[1], + } + return O(s, e), mc(t, s) + }), + (e.prototype.setImageLoadFunction = function (t) { + ;(this.image_ = null), + (this.imageLoadFunction_ = t), + this.changed() + }), + e + ) + })(zf), + Xf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Zf = (function (t) { + function e(e) { + var r = this, + n = void 0 !== e.crossOrigin ? e.crossOrigin : null, + i = void 0 !== e.imageLoadFunction ? e.imageLoadFunction : Gf + return ( + ((r = + t.call(this, { + attributions: e.attributions, + imageSmoothing: e.imageSmoothing, + projection: Gr(e.projection), + }) || this).url_ = e.url), + (r.imageExtent_ = e.imageExtent), + (r.image_ = new Ki(r.imageExtent_, void 0, 1, r.url_, n, i)), + (r.imageSize_ = e.imageSize ? e.imageSize : null), + r.image_.addEventListener(F, r.handleImageChange.bind(r)), + r + ) + } + return ( + Xf(e, t), + (e.prototype.getImageExtent = function () { + return this.imageExtent_ + }), + (e.prototype.getImageInternal = function (t, e, r, n) { + return Re(t, this.image_.getExtent()) ? this.image_ : null + }), + (e.prototype.getUrl = function () { + return this.url_ + }), + (e.prototype.handleImageChange = function (e) { + if (this.image_.getState() == ki) { + var r = this.image_.getExtent(), + n = this.image_.getImage(), + i = void 0, + o = void 0 + this.imageSize_ + ? ((i = this.imageSize_[0]), (o = this.imageSize_[1])) + : ((i = n.width), (o = n.height)) + var a = Ee(r) / o, + s = Math.ceil(Pe(r) / a) + if (s != i) { + var l = uo(s, o) + O(l, this.getContextOptions()) + var u = l.canvas + l.drawImage(n, 0, 0, i, o, 0, 0, u.width, u.height), + this.image_.setImage(u) + } + } + t.prototype.handleImageChange.call(this, e) + }), + e + ) + })(zf), + Kf = 'carmentaserver', + Hf = 'geoserver', + $f = 'mapserver', + Jf = 'qgis', + Qf = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + td = [101, 101], + ed = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = + t.call(this, { + attributions: n.attributions, + imageSmoothing: n.imageSmoothing, + projection: n.projection, + resolutions: n.resolutions, + }) || this).crossOrigin_ = + void 0 !== n.crossOrigin ? n.crossOrigin : null), + (r.url_ = n.url), + (r.imageLoadFunction_ = + void 0 !== n.imageLoadFunction ? n.imageLoadFunction : Gf), + (r.params_ = n.params || {}), + (r.v13_ = !0), + r.updateV13_(), + (r.serverType_ = n.serverType), + (r.hidpi_ = void 0 === n.hidpi || n.hidpi), + (r.image_ = null), + (r.imageSize_ = [0, 0]), + (r.renderedRevision_ = 0), + (r.ratio_ = void 0 !== n.ratio ? n.ratio : 1.5), + r + ) + } + return ( + Qf(e, t), + (e.prototype.getFeatureInfoUrl = function (t, e, r, n) { + if (void 0 !== this.url_) { + var i = Gr(r), + o = this.getProjection() + o && o !== i && ((e = tc(o, i, t, e)), (t = Hr(t, i, o))) + var a = Se(t, e, 0, td), + s = { + SERVICE: 'WMS', + VERSION: '1.3.0', + REQUEST: 'GetFeatureInfo', + FORMAT: 'image/png', + TRANSPARENT: !0, + QUERY_LAYERS: this.params_.LAYERS, + } + O(s, this.params_, n) + var l = Math.floor((t[0] - a[0]) / e), + u = Math.floor((a[3] - t[1]) / e) + return ( + (s[this.v13_ ? 'I' : 'X'] = l), + (s[this.v13_ ? 'J' : 'Y'] = u), + this.getRequestUrl_(a, td, 1, o || i, s) + ) + } + }), + (e.prototype.getLegendUrl = function (t, e) { + if (void 0 !== this.url_) { + var r = { + SERVICE: 'WMS', + VERSION: '1.3.0', + REQUEST: 'GetLegendGraphic', + FORMAT: 'image/png', + } + if (void 0 === e || void 0 === e.LAYER) { + var n = this.params_.LAYERS + if (!(!Array.isArray(n) || 1 === n.length)) return + r.LAYER = n + } + if (void 0 !== t) { + var i = this.getProjection() + ? this.getProjection().getMetersPerUnit() + : 1 + r.SCALE = (t * i) / 28e-5 + } + return O(r, e), mc(this.url_, r) + } + }), + (e.prototype.getParams = function () { + return this.params_ + }), + (e.prototype.getImageInternal = function (t, e, r, n) { + if (void 0 === this.url_) return null + ;(e = this.findNearestResolution(e)), + 1 == r || + (this.hidpi_ && void 0 !== this.serverType_) || + (r = 1) + var i = e / r, + o = xe(t), + a = Se(o, i, 0, [Math.ceil(Pe(t) / i), Math.ceil(Ee(t) / i)]), + s = Se(o, i, 0, [ + Math.ceil((this.ratio_ * Pe(t)) / i), + Math.ceil((this.ratio_ * Ee(t)) / i), + ]), + l = this.image_ + if ( + l && + this.renderedRevision_ == this.getRevision() && + l.getResolution() == e && + l.getPixelRatio() == r && + te(l.getExtent(), a) + ) + return l + var u = { + SERVICE: 'WMS', + VERSION: '1.3.0', + REQUEST: 'GetMap', + FORMAT: 'image/png', + TRANSPARENT: !0, + } + O(u, this.params_), + (this.imageSize_[0] = Math.round(Pe(s) / i)), + (this.imageSize_[1] = Math.round(Ee(s) / i)) + var c = this.getRequestUrl_(s, this.imageSize_, r, n, u) + return ( + (this.image_ = new Ki( + s, + e, + r, + c, + this.crossOrigin_, + this.imageLoadFunction_, + )), + (this.renderedRevision_ = this.getRevision()), + this.image_.addEventListener( + F, + this.handleImageChange.bind(this), + ), + this.image_ + ) + }), + (e.prototype.getImageLoadFunction = function () { + return this.imageLoadFunction_ + }), + (e.prototype.getRequestUrl_ = function (t, e, r, n, i) { + if ( + (pt(void 0 !== this.url_, 9), + (i[this.v13_ ? 'CRS' : 'SRS'] = n.getCode()), + 'STYLES' in this.params_ || (i.STYLES = ''), + 1 != r) + ) + switch (this.serverType_) { + case Hf: + var o = (90 * r + 0.5) | 0 + 'FORMAT_OPTIONS' in i + ? (i.FORMAT_OPTIONS += ';dpi:' + o) + : (i.FORMAT_OPTIONS = 'dpi:' + o) + break + case $f: + i.MAP_RESOLUTION = 90 * r + break + case Kf: + case Jf: + i.DPI = 90 * r + break + default: + pt(!1, 8) + } + ;(i.WIDTH = e[0]), (i.HEIGHT = e[1]) + var a, + s = n.getAxisOrientation() + return ( + (a = + this.v13_ && 'ne' == s.substr(0, 2) + ? [t[1], t[0], t[3], t[2]] + : t), + (i.BBOX = a.join(',')), + mc(this.url_, i) + ) + }), + (e.prototype.getUrl = function () { + return this.url_ + }), + (e.prototype.setImageLoadFunction = function (t) { + ;(this.image_ = null), + (this.imageLoadFunction_ = t), + this.changed() + }), + (e.prototype.setUrl = function (t) { + t != this.url_ && + ((this.url_ = t), (this.image_ = null), this.changed()) + }), + (e.prototype.updateParams = function (t) { + O(this.params_, t), + this.updateV13_(), + (this.image_ = null), + this.changed() + }), + (e.prototype.updateV13_ = function () { + var t = this.params_.VERSION || '1.3.0' + this.v13_ = br(t, '1.3') >= 0 + }), + e + ) + })(zf), + rd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + nd = + '© OpenStreetMap contributors.', + id = (function (t) { + function e(e) { + var r, + n = e || {} + r = void 0 !== n.attributions ? n.attributions : [nd] + var i = void 0 !== n.crossOrigin ? n.crossOrigin : 'anonymous', + o = + void 0 !== n.url + ? n.url + : 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png' + return ( + t.call(this, { + attributions: r, + attributionsCollapsible: !1, + cacheSize: n.cacheSize, + crossOrigin: i, + imageSmoothing: n.imageSmoothing, + maxZoom: void 0 !== n.maxZoom ? n.maxZoom : 19, + opaque: void 0 === n.opaque || n.opaque, + reprojectionErrorThreshold: n.reprojectionErrorThreshold, + tileLoadFunction: n.tileLoadFunction, + transition: n.transition, + url: o, + wrapX: n.wrapX, + }) || this + ) + } + return rd(e, t), e + })(Jp), + od = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ad = (function (t) { + function e(e) { + var r = e || {} + return t.call(this, r) || this + } + return od(e, t), e + })(na), + sd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ld = (function (t) { + function e(e) { + var r = t.call(this) || this + return ( + (r.boundHandleImageChange_ = r.handleImageChange_.bind(r)), + (r.layer_ = e), + (r.declutterExecutorGroup = null), + r + ) + } + return ( + sd(e, t), + (e.prototype.getFeatures = function (t) { + return n() + }), + (e.prototype.prepareFrame = function (t) { + return n() + }), + (e.prototype.renderFrame = function (t, e) { + return n() + }), + (e.prototype.loadedTileCallback = function (t, e, r) { + t[e] || (t[e] = {}), (t[e][r.tileCoord.toString()] = r) + }), + (e.prototype.createLoadedTileFinder = function (t, e, r) { + return function (n, i) { + var o = this.loadedTileCallback.bind(this, r, n) + return t.forEachLoadedTile(e, n, i, o) + }.bind(this) + }), + (e.prototype.forEachFeatureAtCoordinate = function ( + t, + e, + r, + n, + i, + ) {}), + (e.prototype.getDataAtPixel = function (t, e, r) { + return n() + }), + (e.prototype.getLayer = function () { + return this.layer_ + }), + (e.prototype.handleFontsChanged = function () {}), + (e.prototype.handleImageChange_ = function (t) { + t.target.getState() === ki && this.renderIfReadyAndVisible() + }), + (e.prototype.loadImage = function (t) { + var e = t.getState() + return ( + e != ki && + e != ji && + t.addEventListener(F, this.boundHandleImageChange_), + e == Fi && (t.load(), (e = t.getState())), + e == ki + ) + }), + (e.prototype.renderIfReadyAndVisible = function () { + var t = this.getLayer() + t.getVisible() && t.getSourceState() == Qo && t.changed() + }), + e + ) + })(Q), + ud = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + cd = (function (t) { + function e(e) { + var r = t.call(this, e) || this + return ( + (r.container = null), + r.renderedResolution, + (r.tempTransform = [1, 0, 0, 1, 0, 0]), + (r.pixelTransform = [1, 0, 0, 1, 0, 0]), + (r.inversePixelTransform = [1, 0, 0, 1, 0, 0]), + (r.context = null), + (r.containerReused = !1), + r + ) + } + return ( + ud(e, t), + (e.prototype.useContainer = function (t, e, r) { + var n, + i, + o = this.getLayer().getClassName() + t && + '' === t.style.opacity && + t.className === o && + (s = t.firstElementChild) instanceof HTMLCanvasElement && + (i = s.getContext('2d')) + if ( + (!i || (0 !== i.canvas.width && i.canvas.style.transform !== e) + ? this.containerReused && + ((this.container = null), + (this.context = null), + (this.containerReused = !1)) + : ((this.container = t), + (this.context = i), + (this.containerReused = !0)), + !this.container) + ) { + ;(n = document.createElement('div')).className = o + var a = n.style + ;(a.position = 'absolute'), + (a.width = '100%'), + (a.height = '100%') + var s = (i = uo()).canvas + n.appendChild(s), + ((a = s.style).position = 'absolute'), + (a.left = '0'), + (a.transformOrigin = 'top left'), + (this.container = n), + (this.context = i) + } + }), + (e.prototype.clip = function (t, e, r) { + var n = e.pixelRatio, + i = (e.size[0] * n) / 2, + o = (e.size[1] * n) / 2, + a = e.viewState.rotation, + s = Ce(r), + l = Oe(r), + u = be(r), + c = _e(r) + It(e.coordinateToPixelTransform, s), + It(e.coordinateToPixelTransform, l), + It(e.coordinateToPixelTransform, u), + It(e.coordinateToPixelTransform, c), + t.save(), + Ca(t, -a, i, o), + t.beginPath(), + t.moveTo(s[0] * n, s[1] * n), + t.lineTo(l[0] * n, l[1] * n), + t.lineTo(u[0] * n, u[1] * n), + t.lineTo(c[0] * n, c[1] * n), + t.clip(), + Ca(t, a, i, o) + }), + (e.prototype.clipUnrotated = function (t, e, r) { + var n = Ce(r), + i = Oe(r), + o = be(r), + a = _e(r) + It(e.coordinateToPixelTransform, n), + It(e.coordinateToPixelTransform, i), + It(e.coordinateToPixelTransform, o), + It(e.coordinateToPixelTransform, a) + var s = this.inversePixelTransform + It(s, n), + It(s, i), + It(s, o), + It(s, a), + t.save(), + t.beginPath(), + t.moveTo(Math.round(n[0]), Math.round(n[1])), + t.lineTo(Math.round(i[0]), Math.round(i[1])), + t.lineTo(Math.round(o[0]), Math.round(o[1])), + t.lineTo(Math.round(a[0]), Math.round(a[1])), + t.clip() + }), + (e.prototype.dispatchRenderEvent_ = function (t, e, r) { + var n = this.getLayer() + if (n.hasListener(t)) { + var i = new la(t, this.inversePixelTransform, r, e) + n.dispatchEvent(i) + } + }), + (e.prototype.preRender = function (t, e) { + this.dispatchRenderEvent_(qo, t, e) + }), + (e.prototype.postRender = function (t, e) { + this.dispatchRenderEvent_(Xo, t, e) + }), + (e.prototype.getRenderTransform = function (t, e, r, n, i, o, a) { + var s = i / 2, + l = o / 2, + u = n / e, + c = -u, + h = -t[0] + a, + p = -t[1] + return kt(this.tempTransform, s, l, u, c, -r, h, p) + }), + (e.prototype.getDataAtPixel = function (t, e, r) { + var n, + i = It(this.inversePixelTransform, t.slice()), + o = this.context, + a = this.getLayer().getExtent() + if (a && !Qt(a, It(e.pixelToCoordinateTransform, t.slice()))) + return null + try { + var s = Math.round(i[0]), + l = Math.round(i[1]), + u = document.createElement('canvas'), + c = u.getContext('2d') + ;(u.width = 1), + (u.height = 1), + c.clearRect(0, 0, 1, 1), + c.drawImage(o.canvas, s, l, 1, 1, 0, 0, 1, 1), + (n = c.getImageData(0, 0, 1, 1).data) + } catch (t) { + return 'SecurityError' === t.name ? new Uint8Array() : n + } + return 0 === n[3] ? null : n + }), + e + ) + })(ld), + hd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + pd = (function (t) { + function e(e) { + var r = t.call(this, e) || this + return (r.image_ = null), r + } + return ( + hd(e, t), + (e.prototype.getImage = function () { + return this.image_ ? this.image_.getImage() : null + }), + (e.prototype.prepareFrame = function (t) { + var e = t.layerStatesArray[t.layerIndex], + r = t.pixelRatio, + n = t.viewState, + i = n.resolution, + o = this.getLayer().getSource(), + a = t.viewHints, + s = t.extent + if ( + (void 0 !== e.extent && (s = Te(s, on(e.extent, n.projection))), + !a[ns] && !a[is] && !Ie(s)) + ) + if (o) { + var l = n.projection, + u = o.getImage(s, i, r, l) + u && this.loadImage(u) && (this.image_ = u) + } else this.image_ = null + return !!this.image_ + }), + (e.prototype.renderFrame = function (t, e) { + var r = this.image_, + n = r.getExtent(), + i = r.getResolution(), + o = r.getPixelRatio(), + a = t.layerStatesArray[t.layerIndex], + s = t.pixelRatio, + l = t.viewState, + u = l.center, + c = l.resolution, + h = t.size, + p = (s * i) / (c * o), + f = Math.round(h[0] * s), + d = Math.round(h[1] * s), + g = l.rotation + if (g) { + var y = Math.round(Math.sqrt(f * f + d * d)) + ;(f = y), (d = y) + } + kt( + this.pixelTransform, + t.size[0] / 2, + t.size[1] / 2, + 1 / s, + 1 / s, + g, + -f / 2, + -d / 2, + ), + jt(this.inversePixelTransform, this.pixelTransform) + var m = Ra(this.pixelTransform) + this.useContainer(e, m, a.opacity) + var v = this.context, + _ = v.canvas + _.width != f || _.height != d + ? ((_.width = f), (_.height = d)) + : this.containerReused || v.clearRect(0, 0, f, d) + var b = !1 + if (a.extent) { + var x = on(a.extent, l.projection) + ;(b = !te(x, t.extent) && Re(x, t.extent)) && + this.clipUnrotated(v, t, x) + } + var w = r.getImage(), + S = kt( + this.tempTransform, + f / 2, + d / 2, + p, + p, + 0, + (o * (n[0] - u[0])) / i, + (o * (u[1] - n[3])) / i, + ) + this.renderedResolution = (i * s) / o + var E = S[4], + T = S[5], + C = w.width * S[0], + P = w.height * S[3] + if ( + (O(v, this.getLayer().getSource().getContextOptions()), + this.preRender(v, t), + C >= 0.5 && P >= 0.5) + ) { + var R = a.opacity, + I = void 0 + 1 !== R && + ((I = this.context.globalAlpha), + (this.context.globalAlpha = R)), + this.context.drawImage( + w, + 0, + 0, + +w.width, + +w.height, + Math.round(E), + Math.round(T), + Math.round(C), + Math.round(P), + ), + 1 !== R && (this.context.globalAlpha = I) + } + return ( + this.postRender(v, t), + b && v.restore(), + m !== _.style.transform && (_.style.transform = m), + this.container + ) + }), + e + ) + })(cd), + fd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + dd = (function (t) { + function e(e) { + return t.call(this, e) || this + } + return ( + fd(e, t), + (e.prototype.createRenderer = function () { + return new pd(this) + }), + e + ) + })(ad), + gd = 'preload', + yd = 'useInterimTilesOnError', + md = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + vd = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = O({}, n) + return ( + delete i.preload, + delete i.useInterimTilesOnError, + (r = t.call(this, i) || this).setPreload( + void 0 !== n.preload ? n.preload : 0, + ), + r.setUseInterimTilesOnError( + void 0 === n.useInterimTilesOnError || n.useInterimTilesOnError, + ), + r + ) + } + return ( + md(e, t), + (e.prototype.getPreload = function () { + return this.get(gd) + }), + (e.prototype.setPreload = function (t) { + this.set(gd, t) + }), + (e.prototype.getUseInterimTilesOnError = function () { + return this.get(yd) + }), + (e.prototype.setUseInterimTilesOnError = function (t) { + this.set(yd, t) + }), + e + ) + })(na), + _d = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + bd = (function (t) { + function e(e) { + var r = t.call(this, e) || this + return ( + (r.extentChanged = !0), + (r.renderedExtent_ = null), + r.renderedPixelRatio, + (r.renderedProjection = null), + r.renderedRevision, + (r.renderedTiles = []), + (r.newTiles_ = !1), + (r.tmpExtent = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), + (r.tmpTileRange_ = new _u(0, 0, 0, 0)), + r + ) + } + return ( + _d(e, t), + (e.prototype.isDrawableTile = function (t) { + var e = this.getLayer(), + r = t.getState(), + n = e.getUseInterimTilesOnError() + return r == to || r == ro || (r == eo && !n) + }), + (e.prototype.getTile = function (t, e, r, n) { + var i = n.pixelRatio, + o = n.viewState.projection, + a = this.getLayer(), + s = a.getSource().getTile(t, e, r, i, o) + return ( + s.getState() == eo && + (a.getUseInterimTilesOnError() + ? a.getPreload() > 0 && (this.newTiles_ = !0) + : s.setState(to)), + this.isDrawableTile(s) || (s = s.getInterimTile()), + s + ) + }), + (e.prototype.loadedTileCallback = function (e, r, n) { + return ( + !!this.isDrawableTile(n) && + t.prototype.loadedTileCallback.call(this, e, r, n) + ) + }), + (e.prototype.prepareFrame = function (t) { + return !!this.getLayer().getSource() + }), + (e.prototype.renderFrame = function (t, e) { + var r = t.layerStatesArray[t.layerIndex], + n = t.viewState, + i = n.projection, + a = n.resolution, + s = n.center, + l = n.rotation, + u = t.pixelRatio, + c = this.getLayer(), + h = c.getSource(), + p = h.getRevision(), + f = h.getTileGridForProjection(i), + g = f.getZForResolution(a, h.zDirection), + y = f.getResolution(g), + m = t.extent, + v = r.extent && on(r.extent, i) + v && (m = Te(m, on(r.extent, i))) + var _ = h.getTilePixelRatio(u), + b = Math.round(t.size[0] * _), + x = Math.round(t.size[1] * _) + if (l) { + var w = Math.round(Math.sqrt(b * b + x * x)) + ;(b = w), (x = w) + } + var S = (y * b) / 2 / _, + E = (y * x) / 2 / _, + T = [s[0] - S, s[1] - E, s[0] + S, s[1] + E], + C = f.getTileRangeForExtentAndZ(m, g), + P = {} + P[g] = {} + var R = this.createLoadedTileFinder(h, i, P), + I = this.tmpExtent, + L = this.tmpTileRange_ + this.newTiles_ = !1 + for (var M = C.minX; M <= C.maxX; ++M) + for (var F = C.minY; F <= C.maxY; ++F) { + var A = this.getTile(g, M, F, t) + if (this.isDrawableTile(A)) { + var k = o(this) + if (A.getState() == to) { + P[g][A.tileCoord.toString()] = A + var j = A.inTransition(k) + this.newTiles_ || + (!j && -1 !== this.renderedTiles.indexOf(A)) || + (this.newTiles_ = !0) + } + if (1 === A.getAlpha(k, t.time)) continue + } + var N = f.getTileCoordChildTileRange(A.tileCoord, L, I), + D = !1 + N && (D = R(g + 1, N)), + D || f.forEachTileCoordParentTileRange(A.tileCoord, R, L, I) + } + var G = y / a + kt( + this.pixelTransform, + t.size[0] / 2, + t.size[1] / 2, + 1 / _, + 1 / _, + l, + -b / 2, + -x / 2, + ) + var z = Ra(this.pixelTransform) + this.useContainer(e, z, r.opacity) + var U = this.context, + B = U.canvas + jt(this.inversePixelTransform, this.pixelTransform), + kt(this.tempTransform, b / 2, x / 2, G, G, 0, -b / 2, -x / 2), + B.width != b || B.height != x + ? ((B.width = b), (B.height = x)) + : this.containerReused || U.clearRect(0, 0, b, x), + v && this.clipUnrotated(U, t, v), + O(U, h.getContextOptions()), + this.preRender(U, t), + (this.renderedTiles.length = 0) + var V, + Y, + W, + q = Object.keys(P).map(Number) + q.sort(d), + 1 !== r.opacity || + (this.containerReused && !h.getOpaque(t.viewState.projection)) + ? ((V = []), (Y = [])) + : (q = q.reverse()) + for (var X = q.length - 1; X >= 0; --X) { + var Z = q[X], + K = h.getTilePixelSize(Z, u, i), + H = f.getResolution(Z) / y, + $ = K[0] * H * G, + J = K[1] * H * G, + Q = f.getTileCoordForCoordAndZ(Ce(T), Z), + tt = f.getTileCoordExtent(Q), + et = It(this.tempTransform, [ + (_ * (tt[0] - T[0])) / y, + (_ * (T[3] - tt[3])) / y, + ]), + rt = _ * h.getGutterForProjection(i), + nt = P[Z] + for (var it in nt) { + var ot = (A = nt[it]).tileCoord, + at = et[0] - (Q[1] - ot[1]) * $, + st = Math.round(at + $), + lt = et[1] - (Q[2] - ot[2]) * J, + ut = Math.round(lt + J), + ct = st - (M = Math.round(at)), + ht = ut - (F = Math.round(lt)), + pt = g === Z + if (!(j = pt && 1 !== A.getAlpha(o(this), t.time))) + if (V) { + U.save(), + (W = [M, F, M + ct, F, M + ct, F + ht, M, F + ht]) + for (var ft = 0, dt = V.length; ft < dt; ++ft) + if (g !== Z && Z < Y[ft]) { + var gt = V[ft] + U.beginPath(), + U.moveTo(W[0], W[1]), + U.lineTo(W[2], W[3]), + U.lineTo(W[4], W[5]), + U.lineTo(W[6], W[7]), + U.moveTo(gt[6], gt[7]), + U.lineTo(gt[4], gt[5]), + U.lineTo(gt[2], gt[3]), + U.lineTo(gt[0], gt[1]), + U.clip() + } + V.push(W), Y.push(Z) + } else U.clearRect(M, F, ct, ht) + this.drawTileImage(A, t, M, F, ct, ht, rt, pt, r.opacity), + V && !j && U.restore(), + this.renderedTiles.push(A), + this.updateUsedTiles(t.usedTiles, h, A) + } + } + return ( + (this.renderedRevision = p), + (this.renderedResolution = y), + (this.extentChanged = + !this.renderedExtent_ || !ue(this.renderedExtent_, T)), + (this.renderedExtent_ = T), + (this.renderedPixelRatio = u), + (this.renderedProjection = i), + this.manageTilePyramid(t, h, f, u, i, m, g, c.getPreload()), + this.scheduleExpireCache(t, h), + this.postRender(U, t), + r.extent && U.restore(), + z !== B.style.transform && (B.style.transform = z), + this.container + ) + }), + (e.prototype.drawTileImage = function (t, e, r, n, i, a, s, l, u) { + var c = this.getTileImage(t) + if (c) { + var h = o(this), + p = l ? t.getAlpha(h, e.time) : 1, + f = u * p, + d = f !== this.context.globalAlpha + d && (this.context.save(), (this.context.globalAlpha = f)), + this.context.drawImage( + c, + s, + s, + c.width - 2 * s, + c.height - 2 * s, + r, + n, + i, + a, + ), + d && this.context.restore(), + 1 !== p ? (e.animate = !0) : l && t.endTransition(h) + } + }), + (e.prototype.getImage = function () { + var t = this.context + return t ? t.canvas : null + }), + (e.prototype.getTileImage = function (t) { + return t.getImage() + }), + (e.prototype.scheduleExpireCache = function (t, e) { + if (e.canExpireCache()) { + var r = function (t, e, r) { + var n = o(t) + n in r.usedTiles && + t.expireCache(r.viewState.projection, r.usedTiles[n]) + }.bind(null, e) + t.postRenderFunctions.push(r) + } + }), + (e.prototype.updateUsedTiles = function (t, e, r) { + var n = o(e) + n in t || (t[n] = {}), (t[n][r.getKey()] = !0) + }), + (e.prototype.manageTilePyramid = function ( + t, + e, + r, + n, + i, + a, + s, + l, + u, + ) { + var c = o(e) + c in t.wantedTiles || (t.wantedTiles[c] = {}) + var h, + p, + f, + d, + g, + y, + m = t.wantedTiles[c], + v = t.tileQueue, + _ = 0 + for (y = r.getMinZoom(); y <= s; ++y) + for ( + p = r.getTileRangeForExtentAndZ(a, y, p), + f = r.getResolution(y), + d = p.minX; + d <= p.maxX; + ++d + ) + for (g = p.minY; g <= p.maxY; ++g) + s - y <= l + ? (++_, + (h = e.getTile(y, d, g, n, i)).getState() == Ji && + ((m[h.getKey()] = !0), + v.isKeyQueued(h.getKey()) || + v.enqueue([ + h, + c, + r.getTileCoordCenter(h.tileCoord), + f, + ])), + void 0 !== u && u(h)) + : e.useTile(y, d, g, i) + e.updateCacheSize(_, i) + }), + e + ) + })(cd) + bd.prototype.getLayer + var xd = bd, + wd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Sd = (function (t) { + function e(e) { + return t.call(this, e) || this + } + return ( + wd(e, t), + (e.prototype.createRenderer = function () { + return new xd(this) + }), + e + ) + })(vd), + Ed = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Td = !0 + try { + new ImageData(10, 10) + } catch (t) { + Td = !1 + } + var Cd = document.createElement('canvas').getContext('2d') + function Od(t, e, r) { + if (Td) return new ImageData(t, e, r) + var n = Cd.createImageData(e, r) + return n.data.set(t), n + } + function Pd(t) { + var e = !0 + try { + new ImageData(10, 10) + } catch (t) { + e = !1 + } + function r(t, r, n) { + return e ? new ImageData(t, r, n) : { data: t, width: r, height: n } + } + return function (e) { + var n, + i, + o = e.buffers, + a = e.meta, + s = e.imageOps, + l = e.width, + u = e.height, + c = o.length, + h = o[0].byteLength + if (s) { + var p = new Array(c) + for (i = 0; i < c; ++i) p[i] = r(new Uint8ClampedArray(o[i]), l, u) + n = t(p, a).data + } else { + n = new Uint8ClampedArray(h) + var f = new Array(c), + d = new Array(c) + for (i = 0; i < c; ++i) + (f[i] = new Uint8ClampedArray(o[i])), (d[i] = [0, 0, 0, 0]) + for (var g = 0; g < h; g += 4) { + for (var y = 0; y < c; ++y) { + var m = f[y] + ;(d[y][0] = m[g]), + (d[y][1] = m[g + 1]), + (d[y][2] = m[g + 2]), + (d[y][3] = m[g + 3]) + } + var v = t(d, a) + ;(n[g] = v[0]), + (n[g + 1] = v[1]), + (n[g + 2] = v[2]), + (n[g + 3] = v[3]) + } + } + return n.buffer + } + } + function Rd(t, e) { + var r = Object.keys(t.lib || {}) + .map(function (e) { + return 'var ' + e + ' = ' + t.lib[e].toString() + ';' + }) + .concat([ + 'var __minion__ = (' + Pd.toString() + ')(', + t.operation.toString(), + ');', + 'self.addEventListener("message", function(event) {', + ' var buffer = __minion__(event.data);', + ' self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);', + '});', + ]), + n = new Blob(r, { type: 'text/javascript' }), + i = URL.createObjectURL(n), + o = new Worker(i) + return o.addEventListener('message', e), o + } + var Id = (function (t) { + function e(e) { + var r, + n = t.call(this) || this + n._imageOps = !!e.imageOps + var i = [] + if ((r = 0 === e.threads ? 0 : n._imageOps ? 1 : e.threads || 1)) + for (var o = 0; o < r; ++o) + i[o] = Rd(e, n._onWorkerMessage.bind(n, o)) + else + i[0] = (function (t, e) { + var r = Pd(t.operation), + n = !1 + return { + postMessage: function (t) { + setTimeout(function () { + n || e({ data: { buffer: r(t), meta: t.meta } }) + }, 0) + }, + terminate: function () { + n = !0 + }, + } + })(e, n._onWorkerMessage.bind(n, 0)) + return ( + (n._workers = i), + (n._queue = []), + (n._maxQueueLength = e.queue || 1 / 0), + (n._running = 0), + (n._dataLookup = {}), + (n._job = null), + n + ) + } + return ( + Ed(e, t), + (e.prototype.process = function (t, e, r) { + this._enqueue({ inputs: t, meta: e, callback: r }), + this._dispatch() + }), + (e.prototype._enqueue = function (t) { + for ( + this._queue.push(t); + this._queue.length > this._maxQueueLength; + + ) + this._queue.shift().callback(null, null) + }), + (e.prototype._dispatch = function () { + if (0 === this._running && this._queue.length > 0) { + var t = this._queue.shift() + this._job = t + var e = t.inputs[0].width, + r = t.inputs[0].height, + n = t.inputs.map(function (t) { + return t.data.buffer + }), + i = this._workers.length + if (((this._running = i), 1 === i)) + this._workers[0].postMessage( + { + buffers: n, + meta: t.meta, + imageOps: this._imageOps, + width: e, + height: r, + }, + n, + ) + else + for ( + var o = t.inputs[0].data.length, + a = 4 * Math.ceil(o / 4 / i), + s = 0; + s < i; + ++s + ) { + for (var l = s * a, u = [], c = 0, h = n.length; c < h; ++c) + u.push(n[c].slice(l, l + a)) + this._workers[s].postMessage( + { + buffers: u, + meta: t.meta, + imageOps: this._imageOps, + width: e, + height: r, + }, + u, + ) + } + } + }), + (e.prototype._onWorkerMessage = function (t, e) { + this.disposed || + ((this._dataLookup[t] = e.data), + --this._running, + 0 === this._running && this._resolveJob()) + }), + (e.prototype._resolveJob = function () { + var t, + e, + r = this._job, + n = this._workers.length + if (1 === n) + (t = new Uint8ClampedArray(this._dataLookup[0].buffer)), + (e = this._dataLookup[0].meta) + else { + var i = r.inputs[0].data.length + ;(t = new Uint8ClampedArray(i)), (e = new Array(i)) + for (var o = 4 * Math.ceil(i / 4 / n), a = 0; a < n; ++a) { + var s = this._dataLookup[a].buffer, + l = a * o + t.set(new Uint8ClampedArray(s), l), + (e[a] = this._dataLookup[a].meta) + } + } + ;(this._job = null), + (this._dataLookup = {}), + r.callback( + null, + Od(t, r.inputs[0].width, r.inputs[0].height), + e, + ), + this._dispatch() + }), + (e.prototype.disposeInternal = function () { + for (var t = 0; t < this._workers.length; ++t) + this._workers[t].terminate() + this._workers.length = 0 + }), + e + ) + })(p), + Ld = 'beforeoperations', + Md = 'afteroperations', + Fd = 'pixel', + Ad = 'image', + kd = (function (t) { + function e(e, r, n) { + var i = t.call(this, e) || this + return ( + (i.extent = r.extent), + (i.resolution = r.viewState.resolution / r.pixelRatio), + (i.data = n), + i + ) + } + return Ed(e, t), e + })(c), + jd = (function (t) { + function e(e) { + var r = t.call(this, { projection: null }) || this + ;(r.processor_ = null), + (r.operationType_ = + void 0 !== e.operationType ? e.operationType : Fd), + (r.threads_ = void 0 !== e.threads ? e.threads : 1), + (r.layers_ = (function (t) { + for (var e = t.length, r = new Array(e), n = 0; n < e; ++n) + r[n] = Gd(t[n]) + return r + })(e.sources)) + for ( + var n, i = r.changed.bind(r), o = 0, a = r.layers_.length; + o < a; + ++o + ) + r.layers_[o].addEventListener(F, i) + return ( + (r.tileQueue_ = new es(function () { + return 1 + }, r.changed.bind(r))), + r.requestedFrameState_, + (r.renderedImageCanvas_ = null), + r.renderedRevision_, + (r.frameState_ = { + animate: !1, + coordinateToPixelTransform: [1, 0, 0, 1, 0, 0], + declutterTree: null, + extent: null, + index: 0, + layerIndex: 0, + layerStatesArray: + ((n = r.layers_), + n.map(function (t) { + return t.getLayerState() + })), + pixelRatio: 1, + pixelToCoordinateTransform: [1, 0, 0, 1, 0, 0], + postRenderFunctions: [], + size: [0, 0], + tileQueue: r.tileQueue_, + time: Date.now(), + usedTiles: {}, + viewState: { rotation: 0 }, + viewHints: [], + wantedTiles: {}, + }), + r.setAttributions(function (t) { + for (var r = [], n = 0, i = e.sources.length; n < i; ++n) { + var o = e.sources[n], + a = (o instanceof Dp ? o : o.getSource()).getAttributions() + if ('function' == typeof a) { + var s = a(t) + r.push.apply(r, s) + } + } + return 0 !== r.length ? r : null + }), + void 0 !== e.operation && r.setOperation(e.operation, e.lib), + r + ) + } + return ( + Ed(e, t), + (e.prototype.setOperation = function (t, e) { + this.processor_ && this.processor_.dispose(), + (this.processor_ = new Id({ + operation: t, + imageOps: this.operationType_ === Ad, + queue: 1, + lib: e, + threads: this.threads_, + })), + this.changed() + }), + (e.prototype.updateFrameState_ = function (t, e, r) { + var n = O({}, this.frameState_) + n.viewState = O({}, n.viewState) + var i = xe(t) + ;(n.extent = t.slice()), + (n.size[0] = Math.round(Pe(t) / e)), + (n.size[1] = Math.round(Ee(t) / e)), + (n.time = 1 / 0) + var o = n.viewState + return (o.center = i), (o.projection = r), (o.resolution = e), n + }), + (e.prototype.allSourcesReady_ = function () { + for (var t = !0, e = 0, r = this.layers_.length; e < r; ++e) + if (this.layers_[e].getSource().getState() !== Qo) { + t = !1 + break + } + return t + }), + (e.prototype.getImage = function (t, e, r, n) { + if (!this.allSourcesReady_()) return null + var i = this.updateFrameState_(t, e, n) + if ( + ((this.requestedFrameState_ = i), this.renderedImageCanvas_) + ) { + var o = this.renderedImageCanvas_.getResolution(), + a = this.renderedImageCanvas_.getExtent() + ;(e === o && ue(t, a)) || (this.renderedImageCanvas_ = null) + } + return ( + (this.renderedImageCanvas_ && + this.getRevision() === this.renderedRevision_) || + this.processSources_(), + i.tileQueue.loadMoreTiles(16, 16), + i.animate && requestAnimationFrame(this.changed.bind(this)), + this.renderedImageCanvas_ + ) + }), + (e.prototype.processSources_ = function () { + for ( + var t = this.requestedFrameState_, + e = this.layers_.length, + r = new Array(e), + n = 0; + n < e; + ++n + ) { + t.layerIndex = n + var i = Dd(this.layers_[n], t) + if (!i) return + r[n] = i + } + var o = {} + this.dispatchEvent(new kd(Ld, t, o)), + this.processor_.process( + r, + o, + this.onWorkerComplete_.bind(this, t), + ) + }), + (e.prototype.onWorkerComplete_ = function (t, e, r, n) { + if (!e && r) { + var i = t.extent, + o = t.viewState.resolution + if ( + o === this.requestedFrameState_.viewState.resolution && + ue(i, this.requestedFrameState_.extent) + ) { + var a + if (this.renderedImageCanvas_) + a = this.renderedImageCanvas_.getImage().getContext('2d') + else + (a = uo(Math.round(Pe(i) / o), Math.round(Ee(i) / o))), + (this.renderedImageCanvas_ = new $i(i, o, 1, a.canvas)) + a.putImageData(r, 0, 0), + this.changed(), + (this.renderedRevision_ = this.getRevision()), + this.dispatchEvent(new kd(Md, t, n)) + } + } + }), + (e.prototype.getImageInternal = function () { + return null + }), + (e.prototype.disposeInternal = function () { + this.processor_ && this.processor_.dispose(), + t.prototype.disposeInternal.call(this) + }), + e + ) + })(zf) + jd.prototype.dispose + var Nd = null + function Dd(t, e) { + var r = t.getRenderer() + if (!r) throw new Error('Unsupported layer type: ' + t) + if (!r.prepareFrame(e)) return null + var n = e.size[0], + i = e.size[1] + if (0 === n || 0 === i) return null + var o, + a = r.renderFrame(e, null) + if ((a && (o = a.firstElementChild), !(o instanceof HTMLCanvasElement))) + throw new Error('Unsupported rendered element: ' + o) + if (o.width === n && o.height === i) + return o.getContext('2d').getImageData(0, 0, n, i) + if (Nd) { + var s = Nd.canvas + s.width !== n || s.height !== i + ? (Nd = uo(n, i)) + : Nd.clearRect(0, 0, n, i) + } else Nd = uo(n, i) + return Nd.drawImage(o, 0, 0, n, i), Nd.getImageData(0, 0, n, i) + } + function Gd(t) { + var e + return ( + t instanceof Dp + ? t instanceof Bp + ? (e = new Sd({ source: t })) + : t instanceof zf && (e = new dd({ source: t })) + : (e = t), + e + ) + } + var zd = jd, + Ud = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Bd = [ + 'Map tiles by Stamen Design, under CC BY 3.0.', + nd, + ], + Vd = { + terrain: { extension: 'jpg', opaque: !0 }, + 'terrain-background': { extension: 'jpg', opaque: !0 }, + 'terrain-labels': { extension: 'png', opaque: !1 }, + 'terrain-lines': { extension: 'png', opaque: !1 }, + 'toner-background': { extension: 'png', opaque: !0 }, + toner: { extension: 'png', opaque: !0 }, + 'toner-hybrid': { extension: 'png', opaque: !1 }, + 'toner-labels': { extension: 'png', opaque: !1 }, + 'toner-lines': { extension: 'png', opaque: !1 }, + 'toner-lite': { extension: 'png', opaque: !0 }, + watercolor: { extension: 'jpg', opaque: !0 }, + }, + Yd = { + terrain: { minZoom: 0, maxZoom: 18 }, + toner: { minZoom: 0, maxZoom: 20 }, + watercolor: { minZoom: 0, maxZoom: 18 }, + }, + Wd = (function (t) { + function e(e) { + var r = e.layer.indexOf('-'), + n = -1 == r ? e.layer : e.layer.slice(0, r), + i = Yd[n], + o = Vd[e.layer], + a = + void 0 !== e.url + ? e.url + : 'https://stamen-tiles-{a-d}.a.ssl.fastly.net/' + + e.layer + + '/{z}/{x}/{y}.' + + o.extension + return ( + t.call(this, { + attributions: Bd, + cacheSize: e.cacheSize, + crossOrigin: 'anonymous', + imageSmoothing: e.imageSmoothing, + maxZoom: null != e.maxZoom ? e.maxZoom : i.maxZoom, + minZoom: null != e.minZoom ? e.minZoom : i.minZoom, + opaque: o.opaque, + reprojectionErrorThreshold: e.reprojectionErrorThreshold, + tileLoadFunction: e.tileLoadFunction, + transition: e.transition, + url: a, + wrapX: e.wrapX, + }) || this + ) + } + return Ud(e, t), e + })(Jp), + qd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Xd = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = + t.call(this, { + attributions: n.attributions, + cacheSize: n.cacheSize, + crossOrigin: n.crossOrigin, + imageSmoothing: n.imageSmoothing, + projection: n.projection, + reprojectionErrorThreshold: n.reprojectionErrorThreshold, + tileGrid: n.tileGrid, + tileLoadFunction: n.tileLoadFunction, + url: n.url, + urls: n.urls, + wrapX: void 0 === n.wrapX || n.wrapX, + transition: n.transition, + }) || this).params_ = n.params || {}), + (r.hidpi_ = void 0 === n.hidpi || n.hidpi), + (r.tmpExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), + r.setKey(r.getKeyForParams_()), + r + ) + } + return ( + qd(e, t), + (e.prototype.getKeyForParams_ = function () { + var t = 0, + e = [] + for (var r in this.params_) e[t++] = r + '-' + this.params_[r] + return e.join('/') + }), + (e.prototype.getParams = function () { + return this.params_ + }), + (e.prototype.getRequestUrl_ = function (t, e, r, n, i, o) { + var a = this.urls + if (a) { + var s, + l = i.getCode().split(':').pop() + if ( + ((o.SIZE = e[0] + ',' + e[1]), + (o.BBOX = r.join(',')), + (o.BBOXSR = l), + (o.IMAGESR = l), + (o.DPI = Math.round(o.DPI ? o.DPI * n : 90 * n)), + 1 == a.length) + ) + s = a[0] + else s = a[We(fu(t), a.length)] + return mc( + s + .replace(/MapServer\/?$/, 'MapServer/export') + .replace(/ImageServer\/?$/, 'ImageServer/exportImage'), + o, + ) + } + }), + (e.prototype.getTilePixelRatio = function (t) { + return this.hidpi_ ? t : 1 + }), + (e.prototype.updateParams = function (t) { + O(this.params_, t), this.setKey(this.getKeyForParams_()) + }), + (e.prototype.tileUrlFunction = function (t, e, r) { + var n = this.getTileGrid() + if ( + (n || (n = this.getTileGridForProjection(r)), + !(n.getResolutions().length <= t[0])) + ) { + 1 == e || this.hidpi_ || (e = 1) + var i = n.getTileCoordExtent(t, this.tmpExtent_), + o = Is(n.getTileSize(t[0]), this.tmpSize) + 1 != e && (o = Rs(o, e, this.tmpSize)) + var a = { F: 'image', FORMAT: 'PNG32', TRANSPARENT: !0 } + return O(a, this.params_), this.getRequestUrl_(t, o, i, e, r, a) + } + }), + e + ) + })(Xp), + Zd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Kd = (function (t) { + function e(e, r, n) { + var i = t.call(this, e, to) || this + return (i.tileSize_ = r), (i.text_ = n), (i.canvas_ = null), i + } + return ( + Zd(e, t), + (e.prototype.getImage = function () { + if (this.canvas_) return this.canvas_ + var t = this.tileSize_, + e = uo(t[0], t[1]) + return ( + (e.strokeStyle = 'grey'), + e.strokeRect(0.5, 0.5, t[0] + 0.5, t[1] + 0.5), + (e.fillStyle = 'grey'), + (e.strokeStyle = 'white'), + (e.textAlign = 'center'), + (e.textBaseline = 'middle'), + (e.font = '24px sans-serif'), + (e.lineWidth = 4), + e.strokeText(this.text_, t[0] / 2, t[1] / 2, t[0]), + e.fillText(this.text_, t[0] / 2, t[1] / 2, t[0]), + (this.canvas_ = e.canvas), + e.canvas + ) + }), + (e.prototype.load = function () {}), + e + ) + })(lo), + Hd = (function (t) { + function e(e) { + var r = e || {} + return ( + t.call(this, { + opaque: !1, + projection: r.projection, + tileGrid: r.tileGrid, + wrapX: void 0 === r.wrapX || r.wrapX, + zDirection: r.zDirection, + }) || this + ) + } + return ( + Zd(e, t), + (e.prototype.getTile = function (t, e, r) { + var n = cu(t, e, r) + if (this.tileCache.containsKey(n)) return this.tileCache.get(n) + var i = Is(this.tileGrid.getTileSize(t)), + o = [t, e, r], + a = this.getTileCoordForTileUrlFunction(o), + s = void 0 + s = a ? 'z:' + a[0] + ' x:' + a[1] + ' y:' + a[2] : 'none' + var l = new Kd(o, i, s) + return this.tileCache.set(n, l), l + }), + e + ) + })(Jp), + $d = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Jd = (function (t) { + function e(e) { + var r = + t.call(this, { + attributions: e.attributions, + cacheSize: e.cacheSize, + crossOrigin: e.crossOrigin, + imageSmoothing: e.imageSmoothing, + projection: Gr('EPSG:3857'), + reprojectionErrorThreshold: e.reprojectionErrorThreshold, + state: Jo, + tileLoadFunction: e.tileLoadFunction, + wrapX: void 0 === e.wrapX || e.wrapX, + transition: e.transition, + }) || this + if (((r.tileJSON_ = null), (r.tileSize_ = e.tileSize), e.url)) + if (e.jsonp) + Au( + e.url, + r.handleTileJSONResponse.bind(r), + r.handleTileJSONError.bind(r), + ) + else { + var n = new XMLHttpRequest() + n.addEventListener('load', r.onXHRLoad_.bind(r)), + n.addEventListener('error', r.onXHRError_.bind(r)), + n.open('GET', e.url), + n.send() + } + else e.tileJSON ? r.handleTileJSONResponse(e.tileJSON) : pt(!1, 51) + return r + } + return ( + $d(e, t), + (e.prototype.onXHRLoad_ = function (t) { + var e = t.target + if (!e.status || (e.status >= 200 && e.status < 300)) { + var r = void 0 + try { + r = JSON.parse(e.responseText) + } catch (t) { + return void this.handleTileJSONError() + } + this.handleTileJSONResponse(r) + } else this.handleTileJSONError() + }), + (e.prototype.onXHRError_ = function (t) { + this.handleTileJSONError() + }), + (e.prototype.getTileJSON = function () { + return this.tileJSON_ + }), + (e.prototype.handleTileJSONResponse = function (t) { + var e, + r = Gr('EPSG:4326'), + n = this.getProjection() + if (void 0 !== t.bounds) { + var i = Zr(r, n) + e = Ae(t.bounds, i) + } + var o = t.minzoom || 0, + a = t.maxzoom || 22, + s = lc({ + extent: hc(n), + maxZoom: a, + minZoom: o, + tileSize: this.tileSize_, + }) + if ( + ((this.tileGrid = s), + (this.tileUrlFunction = fc(t.tiles, s)), + void 0 !== t.attribution && !this.getAttributions()) + ) { + var l = void 0 !== e ? e : r.getExtent() + this.setAttributions(function (e) { + return Re(l, e.extent) ? [t.attribution] : null + }) + } + ;(this.tileJSON_ = t), this.setState(Qo) + }), + (e.prototype.handleTileJSONError = function () { + this.setState(ta) + }), + e + ) + })(Xp), + Qd = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + tg = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = n.params || {}, + o = !('TRANSPARENT' in i) || i.TRANSPARENT + return ( + ((r = + t.call(this, { + attributions: n.attributions, + cacheSize: n.cacheSize, + crossOrigin: n.crossOrigin, + imageSmoothing: n.imageSmoothing, + opaque: !o, + projection: n.projection, + reprojectionErrorThreshold: n.reprojectionErrorThreshold, + tileClass: n.tileClass, + tileGrid: n.tileGrid, + tileLoadFunction: n.tileLoadFunction, + url: n.url, + urls: n.urls, + wrapX: void 0 === n.wrapX || n.wrapX, + transition: n.transition, + }) || this).gutter_ = void 0 !== n.gutter ? n.gutter : 0), + (r.params_ = i), + (r.v13_ = !0), + (r.serverType_ = n.serverType), + (r.hidpi_ = void 0 === n.hidpi || n.hidpi), + (r.tmpExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), + r.updateV13_(), + r.setKey(r.getKeyForParams_()), + r + ) + } + return ( + Qd(e, t), + (e.prototype.getFeatureInfoUrl = function (t, e, r, n) { + var i = Gr(r), + o = this.getProjection(), + a = this.getTileGrid() + a || (a = this.getTileGridForProjection(i)) + var s = a.getZForResolution(e, this.zDirection), + l = a.getTileCoordForCoordAndZ(t, s) + if (!(a.getResolutions().length <= l[0])) { + var u = a.getResolution(l[0]), + c = a.getTileCoordExtent(l, this.tmpExtent_), + h = Is(a.getTileSize(l[0]), this.tmpSize), + p = this.gutter_ + 0 !== p && + ((h = Os(h, p, this.tmpSize)), (c = Ht(c, u * p, c))), + o && + o !== i && + ((u = tc(o, i, t, u)), (c = $r(c, i, o)), (t = Hr(t, i, o))) + var f = { + SERVICE: 'WMS', + VERSION: '1.3.0', + REQUEST: 'GetFeatureInfo', + FORMAT: 'image/png', + TRANSPARENT: !0, + QUERY_LAYERS: this.params_.LAYERS, + } + O(f, this.params_, n) + var d = Math.floor((t[0] - c[0]) / u), + g = Math.floor((c[3] - t[1]) / u) + return ( + (f[this.v13_ ? 'I' : 'X'] = d), + (f[this.v13_ ? 'J' : 'Y'] = g), + this.getRequestUrl_(l, h, c, 1, o || i, f) + ) + } + }), + (e.prototype.getLegendUrl = function (t, e) { + if (void 0 !== this.urls[0]) { + var r = { + SERVICE: 'WMS', + VERSION: '1.3.0', + REQUEST: 'GetLegendGraphic', + FORMAT: 'image/png', + } + if (void 0 === e || void 0 === e.LAYER) { + var n = this.params_.LAYERS + if (!(!Array.isArray(n) || 1 === n.length)) return + r.LAYER = n + } + if (void 0 !== t) { + var i = this.getProjection() + ? this.getProjection().getMetersPerUnit() + : 1 + r.SCALE = (t * i) / 28e-5 + } + return O(r, e), mc(this.urls[0], r) + } + }), + (e.prototype.getGutter = function () { + return this.gutter_ + }), + (e.prototype.getParams = function () { + return this.params_ + }), + (e.prototype.getRequestUrl_ = function (t, e, r, n, i, o) { + var a = this.urls + if (a) { + if ( + ((o.WIDTH = e[0]), + (o.HEIGHT = e[1]), + (o[this.v13_ ? 'CRS' : 'SRS'] = i.getCode()), + 'STYLES' in this.params_ || (o.STYLES = ''), + 1 != n) + ) + switch (this.serverType_) { + case Hf: + var s = (90 * n + 0.5) | 0 + 'FORMAT_OPTIONS' in o + ? (o.FORMAT_OPTIONS += ';dpi:' + s) + : (o.FORMAT_OPTIONS = 'dpi:' + s) + break + case $f: + o.MAP_RESOLUTION = 90 * n + break + case Kf: + case Jf: + o.DPI = 90 * n + break + default: + pt(!1, 52) + } + var l, + u = i.getAxisOrientation(), + c = r + if (this.v13_ && 'ne' == u.substr(0, 2)) { + var h = void 0 + ;(h = r[0]), + (c[0] = r[1]), + (c[1] = h), + (h = r[2]), + (c[2] = r[3]), + (c[3] = h) + } + if (((o.BBOX = c.join(',')), 1 == a.length)) l = a[0] + else l = a[We(fu(t), a.length)] + return mc(l, o) + } + }), + (e.prototype.getTilePixelRatio = function (t) { + return this.hidpi_ && void 0 !== this.serverType_ ? t : 1 + }), + (e.prototype.getKeyForParams_ = function () { + var t = 0, + e = [] + for (var r in this.params_) e[t++] = r + '-' + this.params_[r] + return e.join('/') + }), + (e.prototype.updateParams = function (t) { + O(this.params_, t), + this.updateV13_(), + this.setKey(this.getKeyForParams_()) + }), + (e.prototype.updateV13_ = function () { + var t = this.params_.VERSION || '1.3.0' + this.v13_ = br(t, '1.3') >= 0 + }), + (e.prototype.tileUrlFunction = function (t, e, r) { + var n = this.getTileGrid() + if ( + (n || (n = this.getTileGridForProjection(r)), + !(n.getResolutions().length <= t[0])) + ) { + 1 == e || + (this.hidpi_ && void 0 !== this.serverType_) || + (e = 1) + var i = n.getResolution(t[0]), + o = n.getTileCoordExtent(t, this.tmpExtent_), + a = Is(n.getTileSize(t[0]), this.tmpSize), + s = this.gutter_ + 0 !== s && + ((a = Os(a, s, this.tmpSize)), (o = Ht(o, i * s, o))), + 1 != e && (a = Rs(a, e, this.tmpSize)) + var l = { + SERVICE: 'WMS', + VERSION: '1.3.0', + REQUEST: 'GetMap', + FORMAT: 'image/png', + TRANSPARENT: !0, + } + return O(l, this.params_), this.getRequestUrl_(t, a, o, e, r, l) + } + }), + e + ) + })(Xp), + eg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + rg = (function (t) { + function e(e, r, n, i, o, a) { + var s = t.call(this, e, r) || this + return ( + (s.src_ = n), + (s.extent_ = i), + (s.preemptive_ = o), + (s.grid_ = null), + (s.keys_ = null), + (s.data_ = null), + (s.jsonp_ = a), + s + ) + } + return ( + eg(e, t), + (e.prototype.getImage = function () { + return null + }), + (e.prototype.getData = function (t) { + if (!this.grid_ || !this.keys_) return null + var e = + (t[0] - this.extent_[0]) / + (this.extent_[2] - this.extent_[0]), + r = + (t[1] - this.extent_[1]) / + (this.extent_[3] - this.extent_[1]), + n = this.grid_[Math.floor((1 - r) * this.grid_.length)] + if ('string' != typeof n) return null + var i = n.charCodeAt(Math.floor(e * n.length)) + i >= 93 && i--, i >= 35 && i-- + var o = null + if ((i -= 32) in this.keys_) { + var a = this.keys_[i] + o = this.data_ && a in this.data_ ? this.data_[a] : a + } + return o + }), + (e.prototype.forDataAtCoordinate = function (t, e, r) { + this.state == ro && !0 === r + ? ((this.state = Ji), + K( + this, + F, + function (r) { + e(this.getData(t)) + }, + this, + ), + this.loadInternal_()) + : !0 === r + ? setTimeout( + function () { + e(this.getData(t)) + }.bind(this), + 0, + ) + : e(this.getData(t)) + }), + (e.prototype.getKey = function () { + return this.src_ + }), + (e.prototype.handleError_ = function () { + ;(this.state = eo), this.changed() + }), + (e.prototype.handleLoad_ = function (t) { + ;(this.grid_ = t.grid), + (this.keys_ = t.keys), + (this.data_ = t.data), + (this.state = to), + this.changed() + }), + (e.prototype.loadInternal_ = function () { + if (this.state == Ji) + if (((this.state = Qi), this.jsonp_)) + Au( + this.src_, + this.handleLoad_.bind(this), + this.handleError_.bind(this), + ) + else { + var t = new XMLHttpRequest() + t.addEventListener('load', this.onXHRLoad_.bind(this)), + t.addEventListener('error', this.onXHRError_.bind(this)), + t.open('GET', this.src_), + t.send() + } + }), + (e.prototype.onXHRLoad_ = function (t) { + var e = t.target + if (!e.status || (e.status >= 200 && e.status < 300)) { + var r = void 0 + try { + r = JSON.parse(e.responseText) + } catch (t) { + return void this.handleError_() + } + this.handleLoad_(r) + } else this.handleError_() + }), + (e.prototype.onXHRError_ = function (t) { + this.handleError_() + }), + (e.prototype.load = function () { + this.preemptive_ ? this.loadInternal_() : this.setState(ro) + }), + e + ) + })(lo), + ng = (function (t) { + function e(e) { + var r = + t.call(this, { projection: Gr('EPSG:3857'), state: Jo }) || this + if ( + ((r.preemptive_ = void 0 === e.preemptive || e.preemptive), + (r.tileUrlFunction_ = gc), + (r.template_ = void 0), + (r.jsonp_ = e.jsonp || !1), + e.url) + ) + if (r.jsonp_) + Au( + e.url, + r.handleTileJSONResponse.bind(r), + r.handleTileJSONError.bind(r), + ) + else { + var n = new XMLHttpRequest() + n.addEventListener('load', r.onXHRLoad_.bind(r)), + n.addEventListener('error', r.onXHRError_.bind(r)), + n.open('GET', e.url), + n.send() + } + else e.tileJSON ? r.handleTileJSONResponse(e.tileJSON) : pt(!1, 51) + return r + } + return ( + eg(e, t), + (e.prototype.onXHRLoad_ = function (t) { + var e = t.target + if (!e.status || (e.status >= 200 && e.status < 300)) { + var r = void 0 + try { + r = JSON.parse(e.responseText) + } catch (t) { + return void this.handleTileJSONError() + } + this.handleTileJSONResponse(r) + } else this.handleTileJSONError() + }), + (e.prototype.onXHRError_ = function (t) { + this.handleTileJSONError() + }), + (e.prototype.getTemplate = function () { + return this.template_ + }), + (e.prototype.forDataAtCoordinateAndResolution = function ( + t, + e, + r, + n, + ) { + if (this.tileGrid) { + var i = this.tileGrid.getZForResolution(e, this.zDirection), + o = this.tileGrid.getTileCoordForCoordAndZ(t, i) + this.getTile( + o[0], + o[1], + o[2], + 1, + this.getProjection(), + ).forDataAtCoordinate(t, r, n) + } else + !0 === n + ? setTimeout(function () { + r(null) + }, 0) + : r(null) + }), + (e.prototype.handleTileJSONError = function () { + this.setState(ta) + }), + (e.prototype.handleTileJSONResponse = function (t) { + var e, + r = Gr('EPSG:4326'), + n = this.getProjection() + if (void 0 !== t.bounds) { + var i = Zr(r, n) + e = Ae(t.bounds, i) + } + var o = t.minzoom || 0, + a = t.maxzoom || 22, + s = lc({ extent: hc(n), maxZoom: a, minZoom: o }) + ;(this.tileGrid = s), (this.template_ = t.template) + var l = t.grids + if (l) { + if ( + ((this.tileUrlFunction_ = fc(l, s)), void 0 !== t.attribution) + ) { + var u = void 0 !== e ? e : r.getExtent() + this.setAttributions(function (e) { + return Re(u, e.extent) ? [t.attribution] : null + }) + } + this.setState(Qo) + } else this.setState(ta) + }), + (e.prototype.getTile = function (t, e, r, n, i) { + var o = cu(t, e, r) + if (this.tileCache.containsKey(o)) return this.tileCache.get(o) + var a = [t, e, r], + s = this.getTileCoordForTileUrlFunction(a, i), + l = this.tileUrlFunction_(s, n, i), + u = new rg( + a, + void 0 !== l ? Ji : ro, + void 0 !== l ? l : '', + this.tileGrid.getTileCoordExtent(a), + this.preemptive_, + this.jsonp_, + ) + return this.tileCache.set(o, u), u + }), + (e.prototype.useTile = function (t, e, r) { + var n = cu(t, e, r) + this.tileCache.containsKey(n) && this.tileCache.get(n) + }), + e + ) + })(Bp), + ig = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + og = (function (t) { + function e(e) { + var r = this, + n = e.projection || 'EPSG:3857', + i = e.extent || hc(n), + o = + e.tileGrid || + lc({ + extent: i, + maxResolution: e.maxResolution, + maxZoom: void 0 !== e.maxZoom ? e.maxZoom : 22, + minZoom: e.minZoom, + tileSize: e.tileSize || 512, + }) + return ( + ((r = + t.call(this, { + attributions: e.attributions, + attributionsCollapsible: e.attributionsCollapsible, + cacheSize: e.cacheSize, + opaque: !1, + projection: n, + state: e.state, + tileGrid: o, + tileLoadFunction: e.tileLoadFunction + ? e.tileLoadFunction + : ag, + tileUrlFunction: e.tileUrlFunction, + url: e.url, + urls: e.urls, + wrapX: void 0 === e.wrapX || e.wrapX, + transition: e.transition, + zDirection: void 0 === e.zDirection ? 1 : e.zDirection, + }) || this).format_ = e.format ? e.format : null), + (r.loadingTiles_ = {}), + (r.sourceTileCache = new yu(r.tileCache.highWaterMark)), + (r.overlaps_ = null == e.overlaps || e.overlaps), + (r.tileClass = e.tileClass ? e.tileClass : Eu), + (r.tileGrids_ = {}), + r + ) + } + return ( + ig(e, t), + (e.prototype.getFeaturesInExtent = function (t) { + var e = [], + r = this.tileCache + if (0 === r.getCount()) return e + var n = pu(r.peekFirstKey())[0], + i = this.tileGrid + return ( + r.forEach(function (r) { + if (r.tileCoord[0] === n && r.getState() === to) + for ( + var o = r.getSourceTiles(), a = 0, s = o.length; + a < s; + ++a + ) { + var l = o[a], + u = l.tileCoord + if (Re(t, i.getTileCoordExtent(u))) { + var c = l.getFeatures() + if (c) + for (var h = 0, p = c.length; h < p; ++h) { + var f = c[h], + d = f.getGeometry() + Re(t, d.getExtent()) && e.push(f) + } + } + } + }), + e + ) + }), + (e.prototype.getOverlaps = function () { + return this.overlaps_ + }), + (e.prototype.clear = function () { + this.tileCache.clear(), this.sourceTileCache.clear() + }), + (e.prototype.expireCache = function (e, r) { + t.prototype.expireCache.call(this, e, r), + this.sourceTileCache.expireCache({}) + }), + (e.prototype.getSourceTiles = function (t, e, r) { + var n = r.wrappedTileCoord, + i = this.getTileGridForProjection(e), + o = i.getTileCoordExtent(n), + a = n[0], + s = i.getResolution(a) + Ht(o, -s, o) + var l = this.tileGrid, + u = l.getExtent() + u && Te(o, u, o) + var c, + h, + p, + f = l.getZForResolution(s, 1), + d = l.getMinZoom(), + g = r.sourceTiles + if (g && g.length > 0 && g[0].tileCoord[0] === f) + (c = g), (h = !0), (p = f) + else { + ;(c = []), (p = f + 1) + do { + --p, + (h = !0), + l.forEachTileCoord( + o, + p, + function (n) { + var i, + o = this.tileUrlFunction(n, t, e) + if (void 0 !== o) + if (this.sourceTileCache.containsKey(o)) { + var a = (i = this.sourceTileCache.get(o)).getState() + if (a === to || a === eo || a === ro) + return void c.push(i) + } else + p === f && + (((i = new this.tileClass( + n, + Ji, + o, + this.format_, + this.tileLoadFunction, + )).extent = l.getTileCoordExtent(n)), + (i.projection = e), + (i.resolution = l.getResolution(n[0])), + this.sourceTileCache.set(o, i), + i.addEventListener( + F, + this.handleTileChange.bind(this), + ), + i.load()) + ;(h = h && i && i.getState() === to), + i && + i.getState() !== ro && + r.getState() === Ji && + (r.loadingSourceTiles++, + i.addEventListener(F, function t() { + var e = i.getState(), + n = i.getKey() + if (e === to || e === eo) { + e === to + ? (i.removeEventListener(F, t), + r.loadingSourceTiles--, + delete r.errorSourceTileKeys[n]) + : e === eo && (r.errorSourceTileKeys[n] = !0) + var o = Object.keys( + r.errorSourceTileKeys, + ).length + r.loadingSourceTiles - o == 0 && + ((r.hifi = 0 === o), + (r.sourceZ = f), + r.setState(to)) + } + })) + }.bind(this), + ), + h || (c.length = 0) + } while (!h && p > d) + } + return ( + r.getState() === Ji && r.setState(Qi), + h && + ((r.hifi = f === p), + (r.sourceZ = p), + r.getState() < to + ? r.setState(to) + : (g && b(c, g)) || (r.sourceTiles = c)), + c + ) + }), + (e.prototype.getTile = function (t, e, r, n, i) { + var o, + a = cu(t, e, r), + s = this.getKey() + if ( + this.tileCache.containsKey(a) && + (o = this.tileCache.get(a)).key === s + ) + return o + var l = [t, e, r], + u = this.getTileCoordForTileUrlFunction(l, i), + c = this.getTileGrid().getExtent(), + h = this.getTileGridForProjection(i) + if (u && c) { + var p = h.getTileCoordExtent(u) + Ht(p, -h.getResolution(t), p), Re(c, p) || (u = null) + } + var f = !0 + if (null !== u) { + var d = this.tileGrid, + g = h.getResolution(t), + y = d.getZForResolution(g, 1), + m = h.getTileCoordExtent(u) + Ht(m, -g, m), + d.forEachTileCoord( + m, + y, + function (t) { + f = f && !this.tileUrlFunction(t, n, i) + }.bind(this), + ) + } + var v = new wu( + l, + f ? ro : Ji, + u, + this.getSourceTiles.bind(this, n, i), + ) + return ( + (v.key = s), + o + ? ((v.interimTile = o), + v.refreshInterimChain(), + this.tileCache.replace(a, v)) + : this.tileCache.set(a, v), + v + ) + }), + (e.prototype.getTileGridForProjection = function (t) { + var e = t.getCode(), + r = this.tileGrids_[e] + if (!r) { + var n = this.tileGrid + ;(r = cc( + t, + void 0, + n ? n.getTileSize(n.getMinZoom()) : void 0, + )), + (this.tileGrids_[e] = r) + } + return r + }), + (e.prototype.getTilePixelRatio = function (t) { + return t + }), + (e.prototype.getTilePixelSize = function (t, e, r) { + var n = Is( + this.getTileGridForProjection(r).getTileSize(t), + this.tmpSize, + ) + return [Math.round(n[0] * e), Math.round(n[1] * e)] + }), + (e.prototype.updateCacheSize = function (e, r) { + t.prototype.updateCacheSize.call(this, 2 * e, r) + }), + e + ) + })(Yp) + function ag(t, e) { + t.setLoader(function (r, n, i) { + Lu(e, t.getFormat(), r, n, i, t.onLoad.bind(t), t.onError.bind(t)) + }) + } + var sg = 'KVP', + lg = 'REST', + ug = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + cg = (function (t) { + function e(e) { + var r = this, + n = void 0 !== e.requestEncoding ? e.requestEncoding : sg, + i = e.tileGrid, + o = e.urls + return ( + void 0 === o && void 0 !== e.url && (o = yc(e.url)), + ((r = + t.call(this, { + attributions: e.attributions, + cacheSize: e.cacheSize, + crossOrigin: e.crossOrigin, + imageSmoothing: e.imageSmoothing, + projection: e.projection, + reprojectionErrorThreshold: e.reprojectionErrorThreshold, + tileClass: e.tileClass, + tileGrid: i, + tileLoadFunction: e.tileLoadFunction, + tilePixelRatio: e.tilePixelRatio, + urls: o, + wrapX: void 0 !== e.wrapX && e.wrapX, + transition: e.transition, + }) || this).version_ = + void 0 !== e.version ? e.version : '1.0.0'), + (r.format_ = void 0 !== e.format ? e.format : 'image/jpeg'), + (r.dimensions_ = void 0 !== e.dimensions ? e.dimensions : {}), + (r.layer_ = e.layer), + (r.matrixSet_ = e.matrixSet), + (r.style_ = e.style), + (r.requestEncoding_ = n), + r.setKey(r.getKeyForDimensions_()), + o && + o.length > 0 && + (r.tileUrlFunction = dc( + o.map(r.createFromWMTSTemplate.bind(r)), + )), + r + ) + } + return ( + ug(e, t), + (e.prototype.setUrls = function (t) { + this.urls = t + var e = t.join('\n') + this.setTileUrlFunction( + dc(t.map(this.createFromWMTSTemplate.bind(this))), + e, + ) + }), + (e.prototype.getDimensions = function () { + return this.dimensions_ + }), + (e.prototype.getFormat = function () { + return this.format_ + }), + (e.prototype.getLayer = function () { + return this.layer_ + }), + (e.prototype.getMatrixSet = function () { + return this.matrixSet_ + }), + (e.prototype.getRequestEncoding = function () { + return this.requestEncoding_ + }), + (e.prototype.getStyle = function () { + return this.style_ + }), + (e.prototype.getVersion = function () { + return this.version_ + }), + (e.prototype.getKeyForDimensions_ = function () { + var t = 0, + e = [] + for (var r in this.dimensions_) + e[t++] = r + '-' + this.dimensions_[r] + return e.join('/') + }), + (e.prototype.updateDimensions = function (t) { + O(this.dimensions_, t), this.setKey(this.getKeyForDimensions_()) + }), + (e.prototype.createFromWMTSTemplate = function (t) { + var e = this.requestEncoding_, + r = { + layer: this.layer_, + style: this.style_, + tilematrixset: this.matrixSet_, + } + e == sg && + O(r, { + Service: 'WMTS', + Request: 'GetTile', + Version: this.version_, + Format: this.format_, + }), + (t = + e == sg + ? mc(t, r) + : t.replace(/\{(\w+?)\}/g, function (t, e) { + return e.toLowerCase() in r ? r[e.toLowerCase()] : t + })) + var n = this.tileGrid, + i = this.dimensions_ + return function (r, o, a) { + if (r) { + var s = { + TileMatrix: n.getMatrixId(r[0]), + TileCol: r[1], + TileRow: r[2], + } + O(s, i) + var l = t + return (l = + e == sg + ? mc(l, s) + : l.replace(/\{(\w+?)\}/g, function (t, e) { + return s[e] + })) + } + } + }), + e + ) + })(Xp) + var hg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + pg = 'GENERATE_BUFFERS', + fg = (function (t) { + function e(e, r) { + var n = t.call(this, e) || this, + i = r || {} + return ( + (n.helper = new gh({ + postProcesses: i.postProcesses, + uniforms: i.uniforms, + })), + void 0 !== i.className && + (n.helper.getCanvas().className = i.className), + n + ) + } + return ( + hg(e, t), + (e.prototype.disposeInternal = function () { + this.helper.dispose(), t.prototype.disposeInternal.call(this) + }), + (e.prototype.getShaderCompileErrors = function () { + return this.helper.getShaderCompileErrors() + }), + (e.prototype.dispatchRenderEvent_ = function (t, e) { + var r = this.getLayer() + if (r.hasListener(t)) { + var n = new la(t, null, e, null) + r.dispatchEvent(n) + } + }), + (e.prototype.preRender = function (t) { + this.dispatchRenderEvent_(qo, t) + }), + (e.prototype.postRender = function (t) { + this.dispatchRenderEvent_(Xo, t) + }), + e + ) + })(ld), + dg = [], + gg = { vertexPosition: 0, indexPosition: 0 } + function yg(t, e, r, n, i) { + ;(t[e + 0] = r), (t[e + 1] = n), (t[e + 2] = i) + } + function mg(t, e) { + var r = e || [] + return ( + (r[0] = Math.floor(t / 256 / 256 / 256) / 255), + (r[1] = (Math.floor(t / 256 / 256) % 256) / 255), + (r[2] = (Math.floor(t / 256) % 256) / 255), + (r[3] = (t % 256) / 255), + r + ) + } + function vg(t) { + var e = 0 + return ( + (e += Math.round(256 * t[0] * 256 * 256 * 255)), + (e += Math.round(256 * t[1] * 256 * 255)), + (e += Math.round(256 * t[2] * 255)), + (e += Math.round(255 * t[3])) + ) + } + var _g = fg, + bg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + xg = 'renderOrder', + wg = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = O({}, n) + return ( + delete i.style, + delete i.renderBuffer, + delete i.updateWhileAnimating, + delete i.updateWhileInteracting, + ((r = t.call(this, i) || this).declutter_ = + void 0 !== n.declutter && n.declutter), + (r.renderBuffer_ = + void 0 !== n.renderBuffer ? n.renderBuffer : 100), + (r.style_ = null), + (r.styleFunction_ = void 0), + r.setStyle(n.style), + (r.updateWhileAnimating_ = + void 0 !== n.updateWhileAnimating && n.updateWhileAnimating), + (r.updateWhileInteracting_ = + void 0 !== n.updateWhileInteracting && + n.updateWhileInteracting), + r + ) + } + return ( + bg(e, t), + (e.prototype.getDeclutter = function () { + return this.declutter_ + }), + (e.prototype.getFeatures = function (e) { + return t.prototype.getFeatures.call(this, e) + }), + (e.prototype.getRenderBuffer = function () { + return this.renderBuffer_ + }), + (e.prototype.getRenderOrder = function () { + return this.get(xg) + }), + (e.prototype.getStyle = function () { + return this.style_ + }), + (e.prototype.getStyleFunction = function () { + return this.styleFunction_ + }), + (e.prototype.getUpdateWhileAnimating = function () { + return this.updateWhileAnimating_ + }), + (e.prototype.getUpdateWhileInteracting = function () { + return this.updateWhileInteracting_ + }), + (e.prototype.renderDeclutter = function (t) { + t.declutterTree || (t.declutterTree = new Pp.a(9)), + this.getRenderer().renderDeclutter(t) + }), + (e.prototype.setRenderOrder = function (t) { + this.set(xg, t) + }), + (e.prototype.setStyle = function (t) { + ;(this.style_ = void 0 !== t ? t : _p), + (this.styleFunction_ = null === t ? void 0 : mp(this.style_)), + this.changed() + }), + e + ) + })(na), + Sg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Eg = (function (t) { + function e(e, r) { + var n = this, + i = r.uniforms || {}, + a = [1, 0, 0, 1, 0, 0] + ;(i[ah] = a), + ((n = + t.call(this, e, { + className: r.className, + uniforms: i, + postProcesses: r.postProcesses, + }) || this).sourceRevision_ = -1), + (n.verticesBuffer_ = new Qc(34962, 35048)), + (n.hitVerticesBuffer_ = new Qc(34962, 35048)), + (n.indicesBuffer_ = new Qc(34963, 35048)), + (n.program_ = n.helper.getProgram( + r.fragmentShader, + r.vertexShader, + )), + (n.hitDetectionEnabled_ = !( + !r.hitFragmentShader || !r.hitVertexShader + )), + (n.hitProgram_ = + n.hitDetectionEnabled_ && + n.helper.getProgram(r.hitFragmentShader, r.hitVertexShader)) + var s = r.attributes + ? r.attributes.map(function (t) { + return { name: 'a_' + t.name, size: 1, type: ph.FLOAT } + }) + : [] + ;(n.attributes = [ + { name: 'a_position', size: 2, type: ph.FLOAT }, + { name: 'a_index', size: 1, type: ph.FLOAT }, + ].concat(s)), + (n.hitDetectionAttributes = [ + { name: 'a_position', size: 2, type: ph.FLOAT }, + { name: 'a_index', size: 1, type: ph.FLOAT }, + { name: 'a_hitColor', size: 4, type: ph.FLOAT }, + { name: 'a_featureUid', size: 1, type: ph.FLOAT }, + ].concat(s)), + (n.customAttributes = r.attributes ? r.attributes : []), + (n.previousExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), + (n.currentTransform_ = a), + (n.renderTransform_ = [1, 0, 0, 1, 0, 0]), + (n.invertRenderTransform_ = [1, 0, 0, 1, 0, 0]), + (n.renderInstructions_ = new Float32Array(0)), + (n.hitRenderInstructions_ = new Float32Array(0)), + (n.hitRenderTarget_ = n.hitDetectionEnabled_ && new mh(n.helper)), + (n.worker_ = new Worker(Hc)), + n.worker_.addEventListener( + 'message', + function (t) { + var e = t.data + if (e.type === pg) { + var r = e.projectionTransform + e.hitDetection + ? (this.hitVerticesBuffer_.fromArrayBuffer( + e.vertexBuffer, + ), + this.helper.flushBufferData(this.hitVerticesBuffer_)) + : (this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer), + this.helper.flushBufferData(this.verticesBuffer_)), + this.indicesBuffer_.fromArrayBuffer(e.indexBuffer), + this.helper.flushBufferData(this.indicesBuffer_), + (this.renderTransform_ = r), + jt(this.invertRenderTransform_, this.renderTransform_), + e.hitDetection + ? (this.hitRenderInstructions_ = new Float32Array( + t.data.renderInstructions, + )) + : (this.renderInstructions_ = new Float32Array( + t.data.renderInstructions, + )), + this.getLayer().changed() + } + }.bind(n), + ), + (n.featureCache_ = {}), + (n.featureCount_ = 0) + var l = n.getLayer().getSource() + return ( + (n.sourceListenKeys_ = [ + Z(l, ef, n.handleSourceFeatureAdded_, n), + Z(l, rf, n.handleSourceFeatureChanged_, n), + Z(l, of, n.handleSourceFeatureDelete_, n), + Z(l, nf, n.handleSourceFeatureClear_, n), + ]), + l.forEachFeature( + function (t) { + ;(this.featureCache_[o(t)] = { + feature: t, + properties: t.getProperties(), + geometry: t.getGeometry(), + }), + this.featureCount_++ + }.bind(n), + ), + n + ) + } + return ( + Sg(e, t), + (e.prototype.handleSourceFeatureAdded_ = function (t) { + var e = t.feature + ;(this.featureCache_[o(e)] = { + feature: e, + properties: e.getProperties(), + geometry: e.getGeometry(), + }), + this.featureCount_++ + }), + (e.prototype.handleSourceFeatureChanged_ = function (t) { + var e = t.feature + this.featureCache_[o(e)] = { + feature: e, + properties: e.getProperties(), + geometry: e.getGeometry(), + } + }), + (e.prototype.handleSourceFeatureDelete_ = function (t) { + var e = t.feature + delete this.featureCache_[o(e)], this.featureCount_-- + }), + (e.prototype.handleSourceFeatureClear_ = function () { + ;(this.featureCache_ = {}), (this.featureCount_ = 0) + }), + (e.prototype.renderFrame = function (t) { + this.preRender(t) + var e = this.indicesBuffer_.getSize() + this.helper.drawElements(0, e), this.helper.finalizeDraw(t) + var r = this.helper.getCanvas(), + n = t.layerStatesArray[t.layerIndex].opacity + return ( + n !== parseFloat(r.style.opacity) && + (r.style.opacity = String(n)), + this.hitDetectionEnabled_ && + (this.renderHitDetection(t), + this.hitRenderTarget_.clearCachedData()), + this.postRender(t), + r + ) + }), + (e.prototype.prepareFrame = function (t) { + var e = this.getLayer(), + r = e.getSource(), + n = t.viewState, + i = !t.viewHints[ns] && !t.viewHints[is], + o = !ue(this.previousExtent_, t.extent), + a = this.sourceRevision_ < r.getRevision() + if ( + (a && (this.sourceRevision_ = r.getRevision()), i && (o || a)) + ) { + var s = n.projection, + l = n.resolution, + u = e instanceof wg ? e.getRenderBuffer() : 0, + c = Ht(t.extent, u * l) + r.loadFeatures(c, l, s), + this.rebuildBuffers_(t), + (this.previousExtent_ = t.extent.slice()) + } + return ( + this.helper.makeProjectionTransform(t, this.currentTransform_), + Ot(this.currentTransform_, this.invertRenderTransform_), + this.helper.useProgram(this.program_), + this.helper.prepareDraw(t), + this.helper.bindBuffer(this.verticesBuffer_), + this.helper.bindBuffer(this.indicesBuffer_), + this.helper.enableAttributes(this.attributes), + !0 + ) + }), + (e.prototype.rebuildBuffers_ = function (t) { + var e = [1, 0, 0, 1, 0, 0] + this.helper.makeProjectionTransform(t, e) + var r, + n, + i = (2 + this.customAttributes.length) * this.featureCount_ + if ( + ((this.renderInstructions_ && + this.renderInstructions_.length === i) || + (this.renderInstructions_ = new Float32Array(i)), + this.hitDetectionEnabled_) + ) { + var o = (7 + this.customAttributes.length) * this.featureCount_ + ;(this.hitRenderInstructions_ && + this.hitRenderInstructions_.length === o) || + (this.hitRenderInstructions_ = new Float32Array(o)) + } + var a, + s = [], + l = [], + u = 0, + c = 0 + for (var h in this.featureCache_) + if ( + (n = (r = this.featureCache_[h]).geometry) && + n.getType() === bt.POINT + ) { + ;(s[0] = n.getFlatCoordinates()[0]), + (s[1] = n.getFlatCoordinates()[1]), + It(e, s), + (a = mg(c + 6, l)), + (this.renderInstructions_[u++] = s[0]), + (this.renderInstructions_[u++] = s[1]), + this.hitDetectionEnabled_ && + ((this.hitRenderInstructions_[c++] = s[0]), + (this.hitRenderInstructions_[c++] = s[1]), + (this.hitRenderInstructions_[c++] = a[0]), + (this.hitRenderInstructions_[c++] = a[1]), + (this.hitRenderInstructions_[c++] = a[2]), + (this.hitRenderInstructions_[c++] = a[3]), + (this.hitRenderInstructions_[c++] = Number(h))) + for ( + var p = void 0, f = 0; + f < this.customAttributes.length; + f++ + ) + (p = this.customAttributes[f].callback( + r.feature, + r.properties, + )), + (this.renderInstructions_[u++] = p), + this.hitDetectionEnabled_ && + (this.hitRenderInstructions_[c++] = p) + } + var d = { + type: pg, + renderInstructions: this.renderInstructions_.buffer, + customAttributesCount: this.customAttributes.length, + } + if ( + ((d.projectionTransform = e), + this.worker_.postMessage(d, [this.renderInstructions_.buffer]), + (this.renderInstructions_ = null), + this.hitDetectionEnabled_) + ) { + var g = { + type: pg, + renderInstructions: this.hitRenderInstructions_.buffer, + customAttributesCount: 5 + this.customAttributes.length, + } + ;(g.projectionTransform = e), + (g.hitDetection = !0), + this.worker_.postMessage(g, [ + this.hitRenderInstructions_.buffer, + ]), + (this.hitRenderInstructions_ = null) + } + }), + (e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i) { + if ( + (pt(this.hitDetectionEnabled_, 66), this.hitRenderInstructions_) + ) { + var o = It(e.coordinateToPixelTransform, t.slice()), + a = this.hitRenderTarget_.readPixel(o[0] / 2, o[1] / 2), + s = vg([a[0] / 255, a[1] / 255, a[2] / 255, a[3] / 255]), + l = this.hitRenderInstructions_[s], + u = Math.floor(l).toString(), + c = this.getLayer().getSource().getFeatureByUid(u) + return c ? n(c, this.getLayer(), null) : void 0 + } + }), + (e.prototype.renderHitDetection = function (t) { + if (this.hitVerticesBuffer_.getSize()) { + this.hitRenderTarget_.setSize([ + Math.floor(t.size[0] / 2), + Math.floor(t.size[1] / 2), + ]), + this.helper.useProgram(this.hitProgram_), + this.helper.prepareDrawToRenderTarget( + t, + this.hitRenderTarget_, + !0, + ), + this.helper.bindBuffer(this.hitVerticesBuffer_), + this.helper.bindBuffer(this.indicesBuffer_), + this.helper.enableAttributes(this.hitDetectionAttributes) + var e = this.indicesBuffer_.getSize() + this.helper.drawElements(0, e) + } + }), + (e.prototype.disposeInternal = function () { + this.worker_.terminate(), + (this.layer_ = null), + this.sourceListenKeys_.forEach(function (t) { + H(t) + }), + (this.sourceListenKeys_ = null), + t.prototype.disposeInternal.call(this) + }), + e + ) + })(_g), + Tg = { + BEGIN_GEOMETRY: 0, + BEGIN_PATH: 1, + CIRCLE: 2, + CLOSE_PATH: 3, + CUSTOM: 4, + DRAW_CHARS: 5, + DRAW_IMAGE: 6, + END_GEOMETRY: 7, + FILL: 8, + MOVE_TO_LINE_TO: 9, + SET_FILL_STYLE: 10, + SET_STROKE_STYLE: 11, + STROKE: 12, + }, + Cg = [Tg.FILL], + Og = [Tg.STROKE], + Pg = [Tg.BEGIN_PATH], + Rg = [Tg.CLOSE_PATH], + Ig = Tg, + Lg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Mg = (function (t) { + function e(e, r, n, i) { + var o = t.call(this) || this + return ( + (o.tolerance = e), + (o.maxExtent = r), + (o.pixelRatio = i), + (o.maxLineWidth = 0), + (o.resolution = n), + (o.beginGeometryInstruction1_ = null), + (o.beginGeometryInstruction2_ = null), + (o.bufferedMaxExtent_ = null), + (o.instructions = []), + (o.coordinates = []), + (o.tmpCoordinate_ = []), + (o.hitDetectionInstructions = []), + (o.state = {}), + o + ) + } + return ( + Lg(e, t), + (e.prototype.applyPixelRatio = function (t) { + var e = this.pixelRatio + return 1 == e + ? t + : t.map(function (t) { + return t * e + }) + }), + (e.prototype.appendFlatPointCoordinates = function (t, e) { + for ( + var r = this.getBufferedMaxExtent(), + n = this.tmpCoordinate_, + i = this.coordinates, + o = i.length, + a = 0, + s = t.length; + a < s; + a += e + ) + (n[0] = t[a]), + (n[1] = t[a + 1]), + Qt(r, n) && ((i[o++] = n[0]), (i[o++] = n[1])) + return o + }), + (e.prototype.appendFlatLineCoordinates = function ( + t, + e, + r, + n, + i, + o, + ) { + var a = this.coordinates, + s = a.length, + l = this.getBufferedMaxExtent() + o && (e += n) + var u, + c, + h, + p = t[e], + f = t[e + 1], + d = this.tmpCoordinate_, + g = !0 + for (u = e + n; u < r; u += n) + (d[0] = t[u]), + (d[1] = t[u + 1]), + (h = re(l, d)) !== c + ? (g && ((a[s++] = p), (a[s++] = f), (g = !1)), + (a[s++] = d[0]), + (a[s++] = d[1])) + : h === Yt + ? ((a[s++] = d[0]), (a[s++] = d[1]), (g = !1)) + : (g = !0), + (p = d[0]), + (f = d[1]), + (c = h) + return ( + ((i && g) || u === e + n) && ((a[s++] = p), (a[s++] = f)), s + ) + }), + (e.prototype.drawCustomCoordinates_ = function (t, e, r, n, i) { + for (var o = 0, a = r.length; o < a; ++o) { + var s = r[o], + l = this.appendFlatLineCoordinates(t, e, s, n, !1, !1) + i.push(l), (e = s) + } + return e + }), + (e.prototype.drawCustom = function (t, e, r) { + this.beginGeometry(t, e) + var n, + i, + o, + a, + s, + l = t.getType(), + u = t.getStride(), + c = this.coordinates.length + if (l == bt.MULTI_POLYGON) { + ;(n = t.getOrientedFlatCoordinates()), (a = []) + var h = t.getEndss() + s = 0 + for (var p = 0, f = h.length; p < f; ++p) { + var d = [] + ;(s = this.drawCustomCoordinates_(n, s, h[p], u, d)), + a.push(d) + } + this.instructions.push([Ig.CUSTOM, c, a, t, r, Gn]) + } else + l == bt.POLYGON || l == bt.MULTI_LINE_STRING + ? ((o = []), + (n = + l == bt.POLYGON + ? t.getOrientedFlatCoordinates() + : t.getFlatCoordinates()), + (s = this.drawCustomCoordinates_(n, 0, t.getEnds(), u, o)), + this.instructions.push([Ig.CUSTOM, c, o, t, r, Dn])) + : l == bt.LINE_STRING || l == bt.CIRCLE + ? ((n = t.getFlatCoordinates()), + (i = this.appendFlatLineCoordinates( + n, + 0, + n.length, + u, + !1, + !1, + )), + this.instructions.push([Ig.CUSTOM, c, i, t, r, Nn])) + : l == bt.MULTI_POINT + ? ((n = t.getFlatCoordinates()), + (i = this.appendFlatPointCoordinates(n, u)) > c && + this.instructions.push([Ig.CUSTOM, c, i, t, r, Nn])) + : l == bt.POINT && + ((n = t.getFlatCoordinates()), + this.coordinates.push(n[0], n[1]), + (i = this.coordinates.length), + this.instructions.push([Ig.CUSTOM, c, i, t, r])) + this.endGeometry(e) + }), + (e.prototype.beginGeometry = function (t, e) { + ;(this.beginGeometryInstruction1_ = [Ig.BEGIN_GEOMETRY, e, 0, t]), + this.instructions.push(this.beginGeometryInstruction1_), + (this.beginGeometryInstruction2_ = [ + Ig.BEGIN_GEOMETRY, + e, + 0, + t, + ]), + this.hitDetectionInstructions.push( + this.beginGeometryInstruction2_, + ) + }), + (e.prototype.finish = function () { + return { + instructions: this.instructions, + hitDetectionInstructions: this.hitDetectionInstructions, + coordinates: this.coordinates, + } + }), + (e.prototype.reverseHitDetectionInstructions = function () { + var t, + e = this.hitDetectionInstructions + e.reverse() + var r, + n, + i = e.length, + o = -1 + for (t = 0; t < i; ++t) + (n = (r = e[t])[0]) == Ig.END_GEOMETRY + ? (o = t) + : n == Ig.BEGIN_GEOMETRY && + ((r[2] = t), + m(this.hitDetectionInstructions, o, t), + (o = -1)) + }), + (e.prototype.setFillStrokeStyle = function (t, e) { + var r = this.state + if (t) { + var n = t.getColor() + r.fillStyle = Tu(n || '#000') + } else r.fillStyle = void 0 + if (e) { + var i = e.getColor() + r.strokeStyle = Tu(i || '#000') + var o = e.getLineCap() + r.lineCap = void 0 !== o ? o : 'round' + var a = e.getLineDash() + r.lineDash = a ? a.slice() : pa + var s = e.getLineDashOffset() + r.lineDashOffset = s || 0 + var l = e.getLineJoin() + r.lineJoin = void 0 !== l ? l : 'round' + var u = e.getWidth() + r.lineWidth = void 0 !== u ? u : 1 + var c = e.getMiterLimit() + ;(r.miterLimit = void 0 !== c ? c : 10), + r.lineWidth > this.maxLineWidth && + ((this.maxLineWidth = r.lineWidth), + (this.bufferedMaxExtent_ = null)) + } else + (r.strokeStyle = void 0), + (r.lineCap = void 0), + (r.lineDash = null), + (r.lineDashOffset = void 0), + (r.lineJoin = void 0), + (r.lineWidth = void 0), + (r.miterLimit = void 0) + }), + (e.prototype.createFill = function (t) { + var e = t.fillStyle, + r = [Ig.SET_FILL_STYLE, e] + return 'string' != typeof e && r.push(!0), r + }), + (e.prototype.applyStroke = function (t) { + this.instructions.push(this.createStroke(t)) + }), + (e.prototype.createStroke = function (t) { + return [ + Ig.SET_STROKE_STYLE, + t.strokeStyle, + t.lineWidth * this.pixelRatio, + t.lineCap, + t.lineJoin, + t.miterLimit, + this.applyPixelRatio(t.lineDash), + t.lineDashOffset * this.pixelRatio, + ] + }), + (e.prototype.updateFillStyle = function (t, e) { + var r = t.fillStyle + ;('string' == typeof r && t.currentFillStyle == r) || + (void 0 !== r && this.instructions.push(e.call(this, t)), + (t.currentFillStyle = r)) + }), + (e.prototype.updateStrokeStyle = function (t, e) { + var r = t.strokeStyle, + n = t.lineCap, + i = t.lineDash, + o = t.lineDashOffset, + a = t.lineJoin, + s = t.lineWidth, + l = t.miterLimit + ;(t.currentStrokeStyle != r || + t.currentLineCap != n || + (i != t.currentLineDash && !b(t.currentLineDash, i)) || + t.currentLineDashOffset != o || + t.currentLineJoin != a || + t.currentLineWidth != s || + t.currentMiterLimit != l) && + (void 0 !== r && e.call(this, t), + (t.currentStrokeStyle = r), + (t.currentLineCap = n), + (t.currentLineDash = i), + (t.currentLineDashOffset = o), + (t.currentLineJoin = a), + (t.currentLineWidth = s), + (t.currentMiterLimit = l)) + }), + (e.prototype.endGeometry = function (t) { + ;(this.beginGeometryInstruction1_[2] = this.instructions.length), + (this.beginGeometryInstruction1_ = null), + (this.beginGeometryInstruction2_[2] = + this.hitDetectionInstructions.length), + (this.beginGeometryInstruction2_ = null) + var e = [Ig.END_GEOMETRY, t] + this.instructions.push(e), this.hitDetectionInstructions.push(e) + }), + (e.prototype.getBufferedMaxExtent = function () { + if ( + !this.bufferedMaxExtent_ && + ((this.bufferedMaxExtent_ = $t(this.maxExtent)), + this.maxLineWidth > 0) + ) { + var t = (this.resolution * (this.maxLineWidth + 1)) / 2 + Ht(this.bufferedMaxExtent_, t, this.bufferedMaxExtent_) + } + return this.bufferedMaxExtent_ + }), + e + ) + })(ku), + Fg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Ag = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e, r, n, i) || this + return ( + (o.hitDetectionImage_ = null), + (o.image_ = null), + (o.imagePixelRatio_ = void 0), + (o.anchorX_ = void 0), + (o.anchorY_ = void 0), + (o.height_ = void 0), + (o.opacity_ = void 0), + (o.originX_ = void 0), + (o.originY_ = void 0), + (o.rotateWithView_ = void 0), + (o.rotation_ = void 0), + (o.scale_ = void 0), + (o.width_ = void 0), + (o.declutterImageWithText_ = void 0), + o + ) + } + return ( + Fg(e, t), + (e.prototype.drawPoint = function (t, e) { + if (this.image_) { + this.beginGeometry(t, e) + var r = t.getFlatCoordinates(), + n = t.getStride(), + i = this.coordinates.length, + o = this.appendFlatPointCoordinates(r, n) + this.instructions.push([ + Ig.DRAW_IMAGE, + i, + o, + this.image_, + this.anchorX_ * this.imagePixelRatio_, + this.anchorY_ * this.imagePixelRatio_, + Math.ceil(this.height_ * this.imagePixelRatio_), + this.opacity_, + this.originX_, + this.originY_, + this.rotateWithView_, + this.rotation_, + [ + (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_, + (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_, + ], + Math.ceil(this.width_ * this.imagePixelRatio_), + this.declutterImageWithText_, + ]), + this.hitDetectionInstructions.push([ + Ig.DRAW_IMAGE, + i, + o, + this.hitDetectionImage_, + this.anchorX_, + this.anchorY_, + this.height_, + this.opacity_, + this.originX_, + this.originY_, + this.rotateWithView_, + this.rotation_, + this.scale_, + this.width_, + this.declutterImageWithText_, + ]), + this.endGeometry(e) + } + }), + (e.prototype.drawMultiPoint = function (t, e) { + if (this.image_) { + this.beginGeometry(t, e) + var r = t.getFlatCoordinates(), + n = t.getStride(), + i = this.coordinates.length, + o = this.appendFlatPointCoordinates(r, n) + this.instructions.push([ + Ig.DRAW_IMAGE, + i, + o, + this.image_, + this.anchorX_ * this.imagePixelRatio_, + this.anchorY_ * this.imagePixelRatio_, + Math.ceil(this.height_ * this.imagePixelRatio_), + this.opacity_, + this.originX_, + this.originY_, + this.rotateWithView_, + this.rotation_, + [ + (this.scale_[0] * this.pixelRatio) / this.imagePixelRatio_, + (this.scale_[1] * this.pixelRatio) / this.imagePixelRatio_, + ], + Math.ceil(this.width_ * this.imagePixelRatio_), + this.declutterImageWithText_, + ]), + this.hitDetectionInstructions.push([ + Ig.DRAW_IMAGE, + i, + o, + this.hitDetectionImage_, + this.anchorX_, + this.anchorY_, + this.height_, + this.opacity_, + this.originX_, + this.originY_, + this.rotateWithView_, + this.rotation_, + this.scale_, + this.width_, + this.declutterImageWithText_, + ]), + this.endGeometry(e) + } + }), + (e.prototype.finish = function () { + return ( + this.reverseHitDetectionInstructions(), + (this.anchorX_ = void 0), + (this.anchorY_ = void 0), + (this.hitDetectionImage_ = null), + (this.image_ = null), + (this.imagePixelRatio_ = void 0), + (this.height_ = void 0), + (this.scale_ = void 0), + (this.opacity_ = void 0), + (this.originX_ = void 0), + (this.originY_ = void 0), + (this.rotateWithView_ = void 0), + (this.rotation_ = void 0), + (this.width_ = void 0), + t.prototype.finish.call(this) + ) + }), + (e.prototype.setImageStyle = function (t, e) { + var r = t.getAnchor(), + n = t.getSize(), + i = t.getHitDetectionImage(), + o = t.getImage(this.pixelRatio), + a = t.getOrigin() + ;(this.imagePixelRatio_ = t.getPixelRatio(this.pixelRatio)), + (this.anchorX_ = r[0]), + (this.anchorY_ = r[1]), + (this.hitDetectionImage_ = i), + (this.image_ = o), + (this.height_ = n[1]), + (this.opacity_ = t.getOpacity()), + (this.originX_ = a[0]), + (this.originY_ = a[1]), + (this.rotateWithView_ = t.getRotateWithView()), + (this.rotation_ = t.getRotation()), + (this.scale_ = t.getScaleArray()), + (this.width_ = n[0]), + (this.declutterImageWithText_ = e) + }), + e + ) + })(Mg), + kg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + jg = (function (t) { + function e(e, r, n, i) { + return t.call(this, e, r, n, i) || this + } + return ( + kg(e, t), + (e.prototype.drawFlatCoordinates_ = function (t, e, r, n) { + var i = this.coordinates.length, + o = this.appendFlatLineCoordinates(t, e, r, n, !1, !1), + a = [Ig.MOVE_TO_LINE_TO, i, o] + return ( + this.instructions.push(a), + this.hitDetectionInstructions.push(a), + r + ) + }), + (e.prototype.drawLineString = function (t, e) { + var r = this.state, + n = r.strokeStyle, + i = r.lineWidth + if (void 0 !== n && void 0 !== i) { + this.updateStrokeStyle(r, this.applyStroke), + this.beginGeometry(t, e), + this.hitDetectionInstructions.push( + [ + Ig.SET_STROKE_STYLE, + r.strokeStyle, + r.lineWidth, + r.lineCap, + r.lineJoin, + r.miterLimit, + r.lineDash, + r.lineDashOffset, + ], + Pg, + ) + var o = t.getFlatCoordinates(), + a = t.getStride() + this.drawFlatCoordinates_(o, 0, o.length, a), + this.hitDetectionInstructions.push(Og), + this.endGeometry(e) + } + }), + (e.prototype.drawMultiLineString = function (t, e) { + var r = this.state, + n = r.strokeStyle, + i = r.lineWidth + if (void 0 !== n && void 0 !== i) { + this.updateStrokeStyle(r, this.applyStroke), + this.beginGeometry(t, e), + this.hitDetectionInstructions.push( + [ + Ig.SET_STROKE_STYLE, + r.strokeStyle, + r.lineWidth, + r.lineCap, + r.lineJoin, + r.miterLimit, + r.lineDash, + r.lineDashOffset, + ], + Pg, + ) + for ( + var o = t.getEnds(), + a = t.getFlatCoordinates(), + s = t.getStride(), + l = 0, + u = 0, + c = o.length; + u < c; + ++u + ) + l = this.drawFlatCoordinates_(a, l, o[u], s) + this.hitDetectionInstructions.push(Og), this.endGeometry(e) + } + }), + (e.prototype.finish = function () { + var e = this.state + return ( + null != e.lastStroke && + e.lastStroke != this.coordinates.length && + this.instructions.push(Og), + this.reverseHitDetectionInstructions(), + (this.state = null), + t.prototype.finish.call(this) + ) + }), + (e.prototype.applyStroke = function (e) { + null != e.lastStroke && + e.lastStroke != this.coordinates.length && + (this.instructions.push(Og), + (e.lastStroke = this.coordinates.length)), + (e.lastStroke = 0), + t.prototype.applyStroke.call(this, e), + this.instructions.push(Pg) + }), + e + ) + })(Mg), + Ng = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Dg = (function (t) { + function e(e, r, n, i) { + return t.call(this, e, r, n, i) || this + } + return ( + Ng(e, t), + (e.prototype.drawFlatCoordinatess_ = function (t, e, r, n) { + var i = this.state, + o = void 0 !== i.fillStyle, + a = void 0 !== i.strokeStyle, + s = r.length + this.instructions.push(Pg), this.hitDetectionInstructions.push(Pg) + for (var l = 0; l < s; ++l) { + var u = r[l], + c = this.coordinates.length, + h = this.appendFlatLineCoordinates(t, e, u, n, !0, !a), + p = [Ig.MOVE_TO_LINE_TO, c, h] + this.instructions.push(p), + this.hitDetectionInstructions.push(p), + a && + (this.instructions.push(Rg), + this.hitDetectionInstructions.push(Rg)), + (e = u) + } + return ( + o && + (this.instructions.push(Cg), + this.hitDetectionInstructions.push(Cg)), + a && + (this.instructions.push(Og), + this.hitDetectionInstructions.push(Og)), + e + ) + }), + (e.prototype.drawCircle = function (t, e) { + var r = this.state, + n = r.fillStyle, + i = r.strokeStyle + if (void 0 !== n || void 0 !== i) { + this.setFillStrokeStyles_(), + this.beginGeometry(t, e), + void 0 !== r.fillStyle && + this.hitDetectionInstructions.push([ + Ig.SET_FILL_STYLE, + '#000', + ]), + void 0 !== r.strokeStyle && + this.hitDetectionInstructions.push([ + Ig.SET_STROKE_STYLE, + r.strokeStyle, + r.lineWidth, + r.lineCap, + r.lineJoin, + r.miterLimit, + r.lineDash, + r.lineDashOffset, + ]) + var o = t.getFlatCoordinates(), + a = t.getStride(), + s = this.coordinates.length + this.appendFlatLineCoordinates(o, 0, o.length, a, !1, !1) + var l = [Ig.CIRCLE, s] + this.instructions.push(Pg, l), + this.hitDetectionInstructions.push(Pg, l), + void 0 !== r.fillStyle && + (this.instructions.push(Cg), + this.hitDetectionInstructions.push(Cg)), + void 0 !== r.strokeStyle && + (this.instructions.push(Og), + this.hitDetectionInstructions.push(Og)), + this.endGeometry(e) + } + }), + (e.prototype.drawPolygon = function (t, e) { + var r = this.state, + n = r.fillStyle, + i = r.strokeStyle + if (void 0 !== n || void 0 !== i) { + this.setFillStrokeStyles_(), + this.beginGeometry(t, e), + void 0 !== r.fillStyle && + this.hitDetectionInstructions.push([ + Ig.SET_FILL_STYLE, + '#000', + ]), + void 0 !== r.strokeStyle && + this.hitDetectionInstructions.push([ + Ig.SET_STROKE_STYLE, + r.strokeStyle, + r.lineWidth, + r.lineCap, + r.lineJoin, + r.miterLimit, + r.lineDash, + r.lineDashOffset, + ]) + var o = t.getEnds(), + a = t.getOrientedFlatCoordinates(), + s = t.getStride() + this.drawFlatCoordinatess_(a, 0, o, s), this.endGeometry(e) + } + }), + (e.prototype.drawMultiPolygon = function (t, e) { + var r = this.state, + n = r.fillStyle, + i = r.strokeStyle + if (void 0 !== n || void 0 !== i) { + this.setFillStrokeStyles_(), + this.beginGeometry(t, e), + void 0 !== r.fillStyle && + this.hitDetectionInstructions.push([ + Ig.SET_FILL_STYLE, + '#000', + ]), + void 0 !== r.strokeStyle && + this.hitDetectionInstructions.push([ + Ig.SET_STROKE_STYLE, + r.strokeStyle, + r.lineWidth, + r.lineCap, + r.lineJoin, + r.miterLimit, + r.lineDash, + r.lineDashOffset, + ]) + for ( + var o = t.getEndss(), + a = t.getOrientedFlatCoordinates(), + s = t.getStride(), + l = 0, + u = 0, + c = o.length; + u < c; + ++u + ) + l = this.drawFlatCoordinatess_(a, l, o[u], s) + this.endGeometry(e) + } + }), + (e.prototype.finish = function () { + this.reverseHitDetectionInstructions(), (this.state = null) + var e = this.tolerance + if (0 !== e) + for (var r = this.coordinates, n = 0, i = r.length; n < i; ++n) + r[n] = Fn(r[n], e) + return t.prototype.finish.call(this) + }), + (e.prototype.setFillStrokeStyles_ = function () { + var t = this.state + void 0 !== t.fillStyle && + this.updateFillStyle(t, this.createFill), + void 0 !== t.strokeStyle && + this.updateStrokeStyle(t, this.applyStroke) + }), + e + ) + })(Mg) + function Gg(t, e, r, n, i) { + var o, + a, + s, + l, + u, + c, + h, + p, + f, + d = r, + g = r, + y = 0, + m = 0, + v = r + for (o = r; o < n; o += i) { + var _ = e[o], + b = e[o + 1] + void 0 !== l && + ((p = _ - l), + (f = b - u), + (s = Math.sqrt(p * p + f * f)), + void 0 !== c && + ((m += a), + Math.acos((c * p + h * f) / (a * s)) > t && + (m > y && ((y = m), (d = v), (g = o)), (m = 0), (v = o - i))), + (a = s), + (c = p), + (h = f)), + (l = _), + (u = b) + } + return (m += s) > y ? [v, o] : [d, g] + } + var zg = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Ug = { + left: 0, + end: 0, + center: 0.5, + right: 1, + start: 1, + top: 0, + middle: 0.5, + hanging: 0.2, + alphabetic: 0.8, + ideographic: 0.8, + bottom: 1, + }, + Bg = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e, r, n, i) || this + return ( + (o.labels_ = null), + (o.text_ = ''), + (o.textOffsetX_ = 0), + (o.textOffsetY_ = 0), + (o.textRotateWithView_ = void 0), + (o.textRotation_ = 0), + (o.textFillState_ = null), + (o.fillStates = {}), + (o.textStrokeState_ = null), + (o.strokeStates = {}), + (o.textState_ = {}), + (o.textStates = {}), + (o.textKey_ = ''), + (o.fillKey_ = ''), + (o.strokeKey_ = ''), + (o.declutterImageWithText_ = void 0), + o + ) + } + return ( + zg(e, t), + (e.prototype.finish = function () { + var e = t.prototype.finish.call(this) + return ( + (e.textStates = this.textStates), + (e.fillStates = this.fillStates), + (e.strokeStates = this.strokeStates), + e + ) + }), + (e.prototype.drawText = function (t, e) { + var r = this.textFillState_, + n = this.textStrokeState_, + i = this.textState_ + if ('' !== this.text_ && i && (r || n)) { + var o = this.coordinates, + a = o.length, + s = t.getType(), + l = null, + u = t.getStride() + if ( + i.placement !== Ep || + (s != bt.LINE_STRING && + s != bt.MULTI_LINE_STRING && + s != bt.POLYGON && + s != bt.MULTI_POLYGON) + ) { + var c = i.overflow ? null : [] + switch (s) { + case bt.POINT: + case bt.MULTI_POINT: + l = t.getFlatCoordinates() + break + case bt.LINE_STRING: + l = t.getFlatMidpoint() + break + case bt.CIRCLE: + l = t.getCenter() + break + case bt.MULTI_LINE_STRING: + ;(l = t.getFlatMidpoints()), (u = 2) + break + case bt.POLYGON: + ;(l = t.getFlatInteriorPoint()), + i.overflow || c.push(l[2] / this.resolution), + (u = 3) + break + case bt.MULTI_POLYGON: + var h = t.getFlatInteriorPoints() + l = [] + for (x = 0, w = h.length; x < w; x += 3) + i.overflow || c.push(h[x + 2] / this.resolution), + l.push(h[x], h[x + 1]) + if (0 === l.length) return + u = 2 + } + if ((R = this.appendFlatPointCoordinates(l, u)) === a) return + this.saveTextStates_(), + (i.backgroundFill || i.backgroundStroke) && + (this.setFillStrokeStyle( + i.backgroundFill, + i.backgroundStroke, + ), + i.backgroundFill && + (this.updateFillStyle(this.state, this.createFill), + this.hitDetectionInstructions.push( + this.createFill(this.state), + )), + i.backgroundStroke && + (this.updateStrokeStyle(this.state, this.applyStroke), + this.hitDetectionInstructions.push( + this.createStroke(this.state), + ))), + this.beginGeometry(t, e) + var p = i.padding + if (p != fa && (i.scale[0] < 0 || i.scale[1] < 0)) { + var f = i.padding[0], + d = i.padding[1], + g = i.padding[2], + y = i.padding[3] + i.scale[0] < 0 && ((d = -d), (y = -y)), + i.scale[1] < 0 && ((f = -f), (g = -g)), + (p = [f, d, g, y]) + } + var m = this.pixelRatio + this.instructions.push([ + Ig.DRAW_IMAGE, + a, + R, + null, + NaN, + NaN, + NaN, + 1, + 0, + 0, + this.textRotateWithView_, + this.textRotation_, + [1, 1], + NaN, + this.declutterImageWithText_, + p == fa + ? fa + : p.map(function (t) { + return t * m + }), + !!i.backgroundFill, + !!i.backgroundStroke, + this.text_, + this.textKey_, + this.strokeKey_, + this.fillKey_, + this.textOffsetX_, + this.textOffsetY_, + c, + ]) + var v = 1 / m + this.hitDetectionInstructions.push([ + Ig.DRAW_IMAGE, + a, + R, + null, + NaN, + NaN, + NaN, + 1, + 0, + 0, + this.textRotateWithView_, + this.textRotation_, + [v, v], + NaN, + this.declutterImageWithText_, + p, + !!i.backgroundFill, + !!i.backgroundStroke, + this.text_, + this.textKey_, + this.strokeKey_, + this.fillKey_, + this.textOffsetX_, + this.textOffsetY_, + c, + ]), + this.endGeometry(e) + } else { + if (!Re(this.getBufferedMaxExtent(), t.getExtent())) return + var _ = void 0 + if (((l = t.getFlatCoordinates()), s == bt.LINE_STRING)) + _ = [l.length] + else if (s == bt.MULTI_LINE_STRING) _ = t.getEnds() + else if (s == bt.POLYGON) _ = t.getEnds().slice(0, 1) + else if (s == bt.MULTI_POLYGON) { + var b = t.getEndss() + _ = [] + for (var x = 0, w = b.length; x < w; ++x) _.push(b[x][0]) + } + this.beginGeometry(t, e) + for ( + var S = i.textAlign, E = 0, T = void 0, C = 0, O = _.length; + C < O; + ++C + ) { + if (null == S) { + var P = Gg(i.maxAngle, l, E, _[C], u) + ;(E = P[0]), (T = P[1]) + } else T = _[C] + for (var x = E; x < T; x += u) o.push(l[x], l[x + 1]) + var R = o.length + ;(E = _[C]), this.drawChars_(a, R), (a = R) + } + this.endGeometry(e) + } + } + }), + (e.prototype.saveTextStates_ = function () { + var t = this.textStrokeState_, + e = this.textState_, + r = this.textFillState_, + n = this.strokeKey_ + t && + (n in this.strokeStates || + (this.strokeStates[n] = { + strokeStyle: t.strokeStyle, + lineCap: t.lineCap, + lineDashOffset: t.lineDashOffset, + lineWidth: t.lineWidth, + lineJoin: t.lineJoin, + miterLimit: t.miterLimit, + lineDash: t.lineDash, + })) + var i = this.textKey_ + i in this.textStates || + (this.textStates[i] = { + font: e.font, + textAlign: e.textAlign || 'center', + textBaseline: e.textBaseline || 'middle', + scale: e.scale, + }) + var o = this.fillKey_ + r && + (o in this.fillStates || + (this.fillStates[o] = { fillStyle: r.fillStyle })) + }), + (e.prototype.drawChars_ = function (t, e) { + var r = this.textStrokeState_, + n = this.textState_, + i = this.strokeKey_, + o = this.textKey_, + a = this.fillKey_ + this.saveTextStates_() + var s = this.pixelRatio, + l = Ug[n.textBaseline], + u = this.textOffsetY_ * s, + c = this.text_, + h = r ? (r.lineWidth * Math.abs(n.scale[0])) / 2 : 0 + this.instructions.push([ + Ig.DRAW_CHARS, + t, + e, + l, + n.overflow, + a, + n.maxAngle, + s, + u, + i, + h * s, + c, + o, + 1, + ]), + this.hitDetectionInstructions.push([ + Ig.DRAW_CHARS, + t, + e, + l, + n.overflow, + a, + n.maxAngle, + 1, + u, + i, + h, + c, + o, + 1 / s, + ]) + }), + (e.prototype.setTextStyle = function (t, e) { + var r, n, i + if (t) { + var a = t.getFill() + a + ? ((n = this.textFillState_) || + ((n = {}), (this.textFillState_ = n)), + (n.fillStyle = Tu(a.getColor() || '#000'))) + : ((n = null), (this.textFillState_ = n)) + var s = t.getStroke() + if (s) { + ;(i = this.textStrokeState_) || + ((i = {}), (this.textStrokeState_ = i)) + var l = s.getLineDash(), + u = s.getLineDashOffset(), + c = s.getWidth(), + h = s.getMiterLimit() + ;(i.lineCap = s.getLineCap() || 'round'), + (i.lineDash = l ? l.slice() : pa), + (i.lineDashOffset = void 0 === u ? 0 : u), + (i.lineJoin = s.getLineJoin() || 'round'), + (i.lineWidth = void 0 === c ? 1 : c), + (i.miterLimit = void 0 === h ? 10 : h), + (i.strokeStyle = Tu(s.getColor() || '#000')) + } else (i = null), (this.textStrokeState_ = i) + r = this.textState_ + var p = t.getFont() || '10px sans-serif' + ba(p) + var f = t.getScaleArray() + ;(r.overflow = t.getOverflow()), + (r.font = p), + (r.maxAngle = t.getMaxAngle()), + (r.placement = t.getPlacement()), + (r.textAlign = t.getTextAlign()), + (r.textBaseline = t.getTextBaseline() || 'middle'), + (r.backgroundFill = t.getBackgroundFill()), + (r.backgroundStroke = t.getBackgroundStroke()), + (r.padding = t.getPadding() || fa), + (r.scale = void 0 === f ? [1, 1] : f) + var d = t.getOffsetX(), + g = t.getOffsetY(), + y = t.getRotateWithView(), + m = t.getRotation() + ;(this.text_ = t.getText() || ''), + (this.textOffsetX_ = void 0 === d ? 0 : d), + (this.textOffsetY_ = void 0 === g ? 0 : g), + (this.textRotateWithView_ = void 0 !== y && y), + (this.textRotation_ = void 0 === m ? 0 : m), + (this.strokeKey_ = i + ? ('string' == typeof i.strokeStyle + ? i.strokeStyle + : o(i.strokeStyle)) + + i.lineCap + + i.lineDashOffset + + '|' + + i.lineWidth + + i.lineJoin + + i.miterLimit + + '[' + + i.lineDash.join() + + ']' + : ''), + (this.textKey_ = + r.font + + r.scale + + (r.textAlign || '?') + + (r.textBaseline || '?')), + (this.fillKey_ = n + ? 'string' == typeof n.fillStyle + ? n.fillStyle + : '|' + o(n.fillStyle) + : '') + } else this.text_ = '' + this.declutterImageWithText_ = e + }), + e + ) + })(Mg), + Vg = { + Circle: Dg, + Default: Mg, + Image: Ag, + LineString: jg, + Polygon: Dg, + Text: Bg, + }, + Yg = (function () { + function t(t, e, r, n) { + ;(this.tolerance_ = t), + (this.maxExtent_ = e), + (this.pixelRatio_ = n), + (this.resolution_ = r), + (this.buildersByZIndex_ = {}) + } + return ( + (t.prototype.finish = function () { + var t = {} + for (var e in this.buildersByZIndex_) { + t[e] = t[e] || {} + var r = this.buildersByZIndex_[e] + for (var n in r) { + var i = r[n].finish() + t[e][n] = i + } + } + return t + }), + (t.prototype.getBuilder = function (t, e) { + var r = void 0 !== t ? t.toString() : '0', + n = this.buildersByZIndex_[r] + void 0 === n && ((n = {}), (this.buildersByZIndex_[r] = n)) + var i = n[e] + void 0 === i && + ((i = new (0, Vg[e])( + this.tolerance_, + this.maxExtent_, + this.resolution_, + this.pixelRatio_, + )), + (n[e] = i)) + return i + }), + t + ) + })() + function Wg(t, e, r, n, i, o, a, s, l, u, c, h) { + var p = t[e], + f = t[e + 1], + d = 0, + g = 0, + y = 0, + m = 0 + function v() { + ;(d = p), + (g = f), + (p = t[(e += n)]), + (f = t[e + 1]), + (m += y), + (y = Math.sqrt((p - d) * (p - d) + (f - g) * (f - g))) + } + do { + v() + } while (e < r - n && m + y < o) + for ( + var _ = (o - m) / y, + b = qe(d, p, _), + x = qe(g, f, _), + w = e - n, + S = m, + E = o + s * l(u, i, c); + e < r - n && m + y < E; + + ) + v() + var T, + C = qe(d, p, (_ = (E - m) / y)), + O = qe(g, f, _) + if (h) { + var P = [b, x, C, O] + un(P, 0, 4, 2, h, P, P), (T = P[0] > P[2]) + } else T = b > C + var R, + I = Math.PI, + L = [], + M = w + n === e + if (((y = 0), (m = S), (p = t[(e = w)]), (f = t[e + 1]), M)) { + v() + var F = Math.atan2(f - g, p - d) + T && (F += F > 0 ? -I : I) + var A = (C + b) / 2, + k = (O + x) / 2 + return (L[0] = [A, k, (E - o) / 2, F, i]), L + } + for (var j = 0, N = i.length; j < N; ) { + v() + var D = Math.atan2(f - g, p - d) + if ((T && (D += D > 0 ? -I : I), void 0 !== R)) { + var G = D - R + if (((G += G > I ? -2 * I : G < -I ? 2 * I : 0), Math.abs(G) > a)) + return null + } + R = D + for (var z = j, U = 0; j < N; ++j) { + var B = s * l(u, i[T ? N - j - 1 : j], c) + if (e + n < r && m + y < o + U + B / 2) break + U += B + } + if (j !== z) { + var V = T ? i.substring(N - z, N - j) : i.substring(z, j) + ;(A = qe(d, p, (_ = (o + U / 2 - m) / y))), (k = qe(g, f, _)) + L.push([A, k, U / 2, D, V]), (o += U) + } + } + return L + } + function qg(t, e, r, n) { + for (var i = t[e], o = t[e + 1], a = 0, s = e + n; s < r; s += n) { + var l = t[s], + u = t[s + 1] + ;(a += Math.sqrt((l - i) * (l - i) + (u - o) * (u - o))), + (i = l), + (o = u) + } + return a + } + var Xg = [1 / 0, 1 / 0, -1 / 0, -1 / 0], + Zg = [], + Kg = [], + Hg = [], + $g = [] + function Jg(t) { + return t[3].declutterBox + } + var Qg = new RegExp( + '[' + + String.fromCharCode(1425) + + '-' + + String.fromCharCode(2303) + + String.fromCharCode(64285) + + '-' + + String.fromCharCode(65023) + + String.fromCharCode(65136) + + '-' + + String.fromCharCode(65276) + + String.fromCharCode(67584) + + '-' + + String.fromCharCode(69631) + + String.fromCharCode(124928) + + '-' + + String.fromCharCode(126975) + + ']', + ) + function ty(t, e) { + return ( + ('start' !== e && 'end' !== e) || + Qg.test(t) || + (e = 'start' === e ? 'left' : 'right'), + Ug[e] + ) + } + var ey = (function () { + function t(t, e, r, n, i) { + ;(this.overlaps = r), + (this.pixelRatio = e), + (this.resolution = t), + this.alignFill_, + (this.instructions = n.instructions), + (this.coordinates = n.coordinates), + (this.coordinateCache_ = {}), + (this.renderBuffer_ = i), + (this.renderedTransform_ = [1, 0, 0, 1, 0, 0]), + (this.hitDetectionInstructions = n.hitDetectionInstructions), + (this.pixelCoordinates_ = null), + (this.viewRotation_ = 0), + (this.fillStates = n.fillStates || {}), + (this.strokeStates = n.strokeStates || {}), + (this.textStates = n.textStates || {}), + (this.widths_ = {}), + (this.labels_ = {}) + } + return ( + (t.prototype.createLabel = function (t, e, r, n) { + var i = t + e + r + n + if (this.labels_[i]) return this.labels_[i] + var o = n ? this.strokeStates[n] : null, + a = r ? this.fillStates[r] : null, + s = this.textStates[e], + l = this.pixelRatio, + u = [s.scale[0] * l, s.scale[1] * l], + c = ty(t, s.textAlign || 'center'), + h = n && o.lineWidth ? o.lineWidth : 0, + p = t.split('\n'), + f = p.length, + d = [], + g = Ta(s.font, p, d), + y = xa(s.font), + m = g + h, + v = [], + _ = (m + 2) * u[0], + b = (y * f + h) * u[1], + x = { + width: _ < 0 ? Math.floor(_) : Math.ceil(_), + height: b < 0 ? Math.floor(b) : Math.ceil(b), + contextInstructions: v, + } + ;((1 == u[0] && 1 == u[1]) || v.push('scale', u), + v.push('font', s.font), + n) && + (v.push('strokeStyle', o.strokeStyle), + v.push('lineWidth', h), + v.push('lineCap', o.lineCap), + v.push('lineJoin', o.lineJoin), + v.push('miterLimit', o.miterLimit), + (Yi + ? OffscreenCanvasRenderingContext2D + : CanvasRenderingContext2D + ).prototype.setLineDash && + (v.push('setLineDash', [o.lineDash]), + v.push('lineDashOffset', o.lineDashOffset))) + r && v.push('fillStyle', a.fillStyle), + v.push('textBaseline', 'middle'), + v.push('textAlign', 'center') + var w, + S = 0.5 - c, + E = c * m + S * h + if (n) + for (w = 0; w < f; ++w) + v.push('strokeText', [ + p[w], + E + S * d[w], + 0.5 * (h + y) + w * y, + ]) + if (r) + for (w = 0; w < f; ++w) + v.push('fillText', [ + p[w], + E + S * d[w], + 0.5 * (h + y) + w * y, + ]) + return (this.labels_[i] = x), x + }), + (t.prototype.replayTextBackground_ = function ( + t, + e, + r, + n, + i, + o, + a, + ) { + t.beginPath(), + t.moveTo.apply(t, e), + t.lineTo.apply(t, r), + t.lineTo.apply(t, n), + t.lineTo.apply(t, i), + t.lineTo.apply(t, e), + o && ((this.alignFill_ = o[2]), this.fill_(t)), + a && (this.setStrokeStyle_(t, a), t.stroke()) + }), + (t.prototype.calculateImageOrLabelDimensions_ = function ( + t, + e, + r, + n, + i, + o, + a, + s, + l, + u, + c, + h, + p, + f, + d, + g, + ) { + var y, + m = r - (a *= h[0]), + v = n - (s *= h[1]), + _ = i + l > t ? t - l : i, + b = o + u > e ? e - u : o, + x = f[3] + _ * h[0] + f[1], + w = f[0] + b * h[1] + f[2], + S = m - f[3], + E = v - f[0] + return ( + (d || 0 !== c) && + ((Zg[0] = S), + ($g[0] = S), + (Zg[1] = E), + (Kg[1] = E), + (Kg[0] = S + x), + (Hg[0] = Kg[0]), + (Hg[1] = E + w), + ($g[1] = Hg[1])), + 0 !== c + ? (It( + (y = kt([1, 0, 0, 1, 0, 0], r, n, 1, 1, c, -r, -n)), + Zg, + ), + It(y, Kg), + It(y, Hg), + It(y, $g), + ie( + Math.min(Zg[0], Kg[0], Hg[0], $g[0]), + Math.min(Zg[1], Kg[1], Hg[1], $g[1]), + Math.max(Zg[0], Kg[0], Hg[0], $g[0]), + Math.max(Zg[1], Kg[1], Hg[1], $g[1]), + Xg, + )) + : ie( + Math.min(S, S + x), + Math.min(E, E + w), + Math.max(S, S + x), + Math.max(E, E + w), + Xg, + ), + p && ((m = Math.round(m)), (v = Math.round(v))), + { + drawImageX: m, + drawImageY: v, + drawImageW: _, + drawImageH: b, + originX: l, + originY: u, + declutterBox: { + minX: Xg[0], + minY: Xg[1], + maxX: Xg[2], + maxY: Xg[3], + value: g, + }, + canvasTransform: y, + scale: h, + } + ) + }), + (t.prototype.replayImageOrLabel_ = function (t, e, r, n, i, o, a) { + var s = !(!o && !a), + l = n.declutterBox, + u = t.canvas, + c = a ? (a[2] * n.scale[0]) / 2 : 0 + return ( + l.minX - c <= u.width / e && + l.maxX + c >= 0 && + l.minY - c <= u.height / e && + l.maxY + c >= 0 && + (s && this.replayTextBackground_(t, Zg, Kg, Hg, $g, o, a), + Oa( + t, + n.canvasTransform, + i, + r, + n.originX, + n.originY, + n.drawImageW, + n.drawImageH, + n.drawImageX, + n.drawImageY, + n.scale, + )), + !0 + ) + }), + (t.prototype.fill_ = function (t) { + if (this.alignFill_) { + var e = It(this.renderedTransform_, [0, 0]), + r = 512 * this.pixelRatio + t.save(), + t.translate(e[0] % r, e[1] % r), + t.rotate(this.viewRotation_) + } + t.fill(), this.alignFill_ && t.restore() + }), + (t.prototype.setStrokeStyle_ = function (t, e) { + ;(t.strokeStyle = e[1]), + (t.lineWidth = e[2]), + (t.lineCap = e[3]), + (t.lineJoin = e[4]), + (t.miterLimit = e[5]), + t.setLineDash && + ((t.lineDashOffset = e[7]), t.setLineDash(e[6])) + }), + (t.prototype.drawLabelWithPointPlacement_ = function (t, e, r, n) { + var i = this.textStates[e], + o = this.createLabel(t, e, n, r), + a = this.strokeStates[r], + s = this.pixelRatio, + l = ty(t, i.textAlign || 'center'), + u = Ug[i.textBaseline || 'middle'], + c = a && a.lineWidth ? a.lineWidth : 0 + return { + label: o, + anchorX: l * (o.width / s - 2 * i.scale[0]) + 2 * (0.5 - l) * c, + anchorY: (u * o.height) / s + 2 * (0.5 - u) * c, + } + }), + (t.prototype.execute_ = function (t, e, r, n, i, o, a, s) { + var l + this.pixelCoordinates_ && b(r, this.renderedTransform_) + ? (l = this.pixelCoordinates_) + : (this.pixelCoordinates_ || (this.pixelCoordinates_ = []), + (l = ln( + this.coordinates, + 0, + this.coordinates.length, + 2, + r, + this.pixelCoordinates_, + )), + Rt(this.renderedTransform_, r)) + for ( + var u, + c, + h, + p, + f, + d, + g, + y, + m, + v, + _, + x, + w, + S, + E, + T, + C = 0, + O = n.length, + P = 0, + R = 0, + I = 0, + L = null, + M = null, + F = this.coordinateCache_, + A = this.viewRotation_, + k = Math.round(1e12 * Math.atan2(-r[1], r[0])) / 1e12, + j = { + context: t, + pixelRatio: this.pixelRatio, + resolution: this.resolution, + rotation: A, + }, + N = this.instructions != n || this.overlaps ? 0 : 200; + C < O; + + ) { + var D = n[C] + switch (D[0]) { + case Ig.BEGIN_GEOMETRY: + ;(w = D[1]), + (T = D[3]), + w.getGeometry() + ? void 0 === a || Re(a, T.getExtent()) + ? ++C + : (C = D[2] + 1) + : (C = D[2]) + break + case Ig.BEGIN_PATH: + R > N && (this.fill_(t), (R = 0)), + I > N && (t.stroke(), (I = 0)), + R || I || (t.beginPath(), (p = NaN), (f = NaN)), + ++C + break + case Ig.CIRCLE: + var G = l[(P = D[1])], + z = l[P + 1], + U = l[P + 2] - G, + B = l[P + 3] - z, + V = Math.sqrt(U * U + B * B) + t.moveTo(G + V, z), t.arc(G, z, V, 0, 2 * Math.PI, !0), ++C + break + case Ig.CLOSE_PATH: + t.closePath(), ++C + break + case Ig.CUSTOM: + ;(P = D[1]), (u = D[2]) + var Y = D[3], + W = D[4], + q = 6 == D.length ? D[5] : void 0 + ;(j.geometry = Y), (j.feature = w), C in F || (F[C] = []) + var X = F[C] + q + ? q(l, P, u, 2, X) + : ((X[0] = l[P]), (X[1] = l[P + 1]), (X.length = 2)), + W(X, j), + ++C + break + case Ig.DRAW_IMAGE: + ;(P = D[1]), (u = D[2]), (y = D[3]), (c = D[4]), (h = D[5]) + var Z = D[6], + K = D[7], + H = D[8], + $ = D[9], + J = D[10], + Q = D[11], + tt = D[12], + et = D[13], + rt = D[14] + if (!y && D.length >= 19) { + ;(m = D[18]), (v = D[19]), (_ = D[20]), (x = D[21]) + var nt = this.drawLabelWithPointPlacement_(m, v, _, x) + ;(y = nt.label), (D[3] = y) + var it = D[22] + ;(c = (nt.anchorX - it) * this.pixelRatio), (D[4] = c) + var ot = D[23] + ;(h = (nt.anchorY - ot) * this.pixelRatio), + (D[5] = h), + (Z = y.height), + (D[6] = Z), + (et = y.width), + (D[13] = et) + } + var at = void 0 + D.length > 24 && (at = D[24]) + var st = void 0, + lt = void 0, + ut = void 0 + D.length > 16 + ? ((st = D[15]), (lt = D[16]), (ut = D[17])) + : ((st = fa), (lt = !1), (ut = !1)), + J && k ? (Q += A) : J || k || (Q -= A) + for (var ct = 0; P < u; P += 2) + if (!(at && at[ct++] < et / this.pixelRatio)) { + var ht = [ + t, + e, + y, + (Dt = this.calculateImageOrLabelDimensions_( + y.width, + y.height, + l[P], + l[P + 1], + et, + Z, + c, + h, + H, + $, + Q, + tt, + i, + st, + lt || ut, + w, + )), + K, + lt ? L : null, + ut ? M : null, + ], + pt = void 0, + ft = void 0 + if (s && rt) { + if (!rt[P]) { + rt[P] = ht + continue + } + if ( + ((pt = rt[P]), + delete rt[P], + (ft = Jg(pt)), + s.collides(ft)) + ) + continue + } + ;(s && s.collides(Dt.declutterBox)) || + (pt && + (s && s.insert(ft), + this.replayImageOrLabel_.apply(this, pt)), + s && s.insert(Dt.declutterBox), + this.replayImageOrLabel_.apply(this, ht)) + } + ++C + break + case Ig.DRAW_CHARS: + var dt = D[1], + gt = D[2], + yt = D[3], + mt = D[4] + x = D[5] + var vt = D[6], + _t = D[7], + bt = D[8] + _ = D[9] + var xt = D[10] + ;(m = D[11]), (v = D[12]) + var wt = [D[13], D[13]], + St = this.textStates[v], + Et = St.font, + Tt = [St.scale[0] * _t, St.scale[1] * _t], + Ct = void 0 + Et in this.widths_ + ? (Ct = this.widths_[Et]) + : ((Ct = {}), (this.widths_[Et] = Ct)) + var Ot = qg(l, dt, gt, 2), + Pt = Math.abs(Tt[0]) * Ea(Et, m, Ct) + if (mt || Pt <= Ot) { + var It = this.textStates[v].textAlign, + Lt = Wg( + l, + dt, + gt, + 2, + m, + (Ot - Pt) * Ug[It], + vt, + Math.abs(Tt[0]), + Ea, + Et, + Ct, + k ? 0 : this.viewRotation_, + ) + t: if (Lt) { + var Mt = [], + Ft = void 0, + At = void 0, + kt = void 0, + jt = void 0, + Nt = void 0 + if (_) + for (Ft = 0, At = Lt.length; Ft < At; ++Ft) { + ;(kt = (Nt = Lt[Ft])[4]), + (jt = this.createLabel(kt, v, '', _)), + (c = Nt[2] + (Tt[0] < 0 ? -xt : xt)), + (h = + yt * jt.height + + (2 * (0.5 - yt) * xt * Tt[1]) / Tt[0] - + bt) + var Dt = this.calculateImageOrLabelDimensions_( + jt.width, + jt.height, + Nt[0], + Nt[1], + jt.width, + jt.height, + c, + h, + 0, + 0, + Nt[3], + wt, + !1, + fa, + !1, + w, + ) + if (s && s.collides(Dt.declutterBox)) break t + Mt.push([t, e, jt, Dt, 1, null, null]) + } + if (x) + for (Ft = 0, At = Lt.length; Ft < At; ++Ft) { + ;(kt = (Nt = Lt[Ft])[4]), + (jt = this.createLabel(kt, v, x, '')), + (c = Nt[2]), + (h = yt * jt.height - bt) + Dt = this.calculateImageOrLabelDimensions_( + jt.width, + jt.height, + Nt[0], + Nt[1], + jt.width, + jt.height, + c, + h, + 0, + 0, + Nt[3], + wt, + !1, + fa, + !1, + w, + ) + if (s && s.collides(Dt.declutterBox)) break t + Mt.push([t, e, jt, Dt, 1, null, null]) + } + s && s.load(Mt.map(Jg)) + for (var Gt = 0, zt = Mt.length; Gt < zt; ++Gt) + this.replayImageOrLabel_.apply(this, Mt[Gt]) + } + } + ++C + break + case Ig.END_GEOMETRY: + if (void 0 !== o) { + var Ut = o((w = D[1]), T) + if (Ut) return Ut + } + ++C + break + case Ig.FILL: + N ? R++ : this.fill_(t), ++C + break + case Ig.MOVE_TO_LINE_TO: + for ( + P = D[1], + u = D[2], + S = l[P], + g = ((E = l[P + 1]) + 0.5) | 0, + ((d = (S + 0.5) | 0) === p && g === f) || + (t.moveTo(S, E), (p = d), (f = g)), + P += 2; + P < u; + P += 2 + ) + (d = ((S = l[P]) + 0.5) | 0), + (g = ((E = l[P + 1]) + 0.5) | 0), + (P != u - 2 && d === p && g === f) || + (t.lineTo(S, E), (p = d), (f = g)) + ++C + break + case Ig.SET_FILL_STYLE: + ;(L = D), + (this.alignFill_ = D[2]), + R && (this.fill_(t), (R = 0), I && (t.stroke(), (I = 0))), + (t.fillStyle = D[1]), + ++C + break + case Ig.SET_STROKE_STYLE: + ;(M = D), + I && (t.stroke(), (I = 0)), + this.setStrokeStyle_(t, D), + ++C + break + case Ig.STROKE: + N ? I++ : t.stroke(), ++C + break + default: + ++C + } + } + R && this.fill_(t), I && t.stroke() + }), + (t.prototype.execute = function (t, e, r, n, i, o) { + ;(this.viewRotation_ = n), + this.execute_(t, e, r, this.instructions, i, void 0, void 0, o) + }), + (t.prototype.executeHitDetection = function (t, e, r, n, i) { + return ( + (this.viewRotation_ = r), + this.execute_(t, 1, e, this.hitDetectionInstructions, !0, n, i) + ) + }), + t + ) + })(), + ry = [Bu, Du, Uu, zu, Vu, Gu], + ny = (function () { + function t(t, e, r, n, i, o) { + ;(this.maxExtent_ = t), + (this.overlaps_ = n), + (this.pixelRatio_ = r), + (this.resolution_ = e), + (this.renderBuffer_ = o), + (this.executorsByZIndex_ = {}), + (this.hitDetectionContext_ = null), + (this.hitDetectionTransform_ = [1, 0, 0, 1, 0, 0]), + this.createExecutors_(i) + } + return ( + (t.prototype.clip = function (t, e) { + var r = this.getClipCoords(e) + t.beginPath(), + t.moveTo(r[0], r[1]), + t.lineTo(r[2], r[3]), + t.lineTo(r[4], r[5]), + t.lineTo(r[6], r[7]), + t.clip() + }), + (t.prototype.createExecutors_ = function (t) { + for (var e in t) { + var r = this.executorsByZIndex_[e] + void 0 === r && ((r = {}), (this.executorsByZIndex_[e] = r)) + var n = t[e], + i = [this.renderBuffer_ || 0, this.renderBuffer_ || 0] + for (var o in n) { + var a = n[o] + r[o] = new ey( + this.resolution_, + this.pixelRatio_, + this.overlaps_, + a, + i, + ) + } + } + }), + (t.prototype.hasExecutors = function (t) { + for (var e in this.executorsByZIndex_) + for ( + var r = this.executorsByZIndex_[e], n = 0, i = t.length; + n < i; + ++n + ) + if (t[n] in r) return !0 + return !1 + }), + (t.prototype.forEachFeatureAtCoordinate = function ( + t, + e, + r, + n, + i, + o, + ) { + var a = 2 * (n = Math.round(n)) + 1, + s = kt( + this.hitDetectionTransform_, + n + 0.5, + n + 0.5, + 1 / e, + -1 / e, + -r, + -t[0], + -t[1], + ), + l = !this.hitDetectionContext_ + l && (this.hitDetectionContext_ = uo(a, a)) + var u, + c = this.hitDetectionContext_ + c.canvas.width !== a || c.canvas.height !== a + ? ((c.canvas.width = a), (c.canvas.height = a)) + : l || c.clearRect(0, 0, a, a), + void 0 !== this.renderBuffer_ && + (pe((u = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), t), + Ht(u, e * (this.renderBuffer_ + n), u)) + var h, + p = oy(n) + function f(t, e) { + for ( + var r = c.getImageData(0, 0, a, a).data, s = 0, l = p.length; + s < l; + s++ + ) + if (r[p[s]] > 0) { + if (!o || (h !== zu && h !== Vu) || -1 !== o.indexOf(t)) { + var u = (p[s] - 3) / 4, + f = n - (u % a), + d = n - ((u / a) | 0), + g = i(t, e, f * f + d * d) + if (g) return g + } + c.clearRect(0, 0, a, a) + break + } + } + var g, + y, + m, + v, + _, + b = Object.keys(this.executorsByZIndex_).map(Number) + for (b.sort(d), g = b.length - 1; g >= 0; --g) { + var x = b[g].toString() + for ( + m = this.executorsByZIndex_[x], y = ry.length - 1; + y >= 0; + --y + ) + if ( + void 0 !== (v = m[(h = ry[y])]) && + (_ = v.executeHitDetection(c, s, r, f, u)) + ) + return _ + } + }), + (t.prototype.getClipCoords = function (t) { + var e = this.maxExtent_ + if (!e) return null + var r = e[0], + n = e[1], + i = e[2], + o = e[3], + a = [r, n, r, o, i, o, i, n] + return ln(a, 0, 8, 2, t, a), a + }), + (t.prototype.isEmpty = function () { + return I(this.executorsByZIndex_) + }), + (t.prototype.execute = function (t, e, r, n, i, o, a) { + var s = Object.keys(this.executorsByZIndex_).map(Number) + s.sort(d), this.maxExtent_ && (t.save(), this.clip(t, r)) + var l, + u, + c, + h, + p, + f, + g = o || ry + for (a && s.reverse(), l = 0, u = s.length; l < u; ++l) { + var y = s[l].toString() + for ( + p = this.executorsByZIndex_[y], c = 0, h = g.length; + c < h; + ++c + ) { + void 0 !== (f = p[g[c]]) && f.execute(t, e, r, n, i, a) + } + } + this.maxExtent_ && t.restore() + }), + t + ) + })(), + iy = {} + function oy(t) { + if (void 0 !== iy[t]) return iy[t] + for ( + var e = 2 * t + 1, r = t * t, n = new Array(r + 1), i = 0; + i <= t; + ++i + ) + for (var o = 0; o <= t; ++o) { + var a = i * i + o * o + if (a > r) break + var s = n[a] + s || ((s = []), (n[a] = s)), + s.push(4 * ((t + i) * e + (t + o)) + 3), + i > 0 && s.push(4 * ((t - i) * e + (t + o)) + 3), + o > 0 && + (s.push(4 * ((t + i) * e + (t - o)) + 3), + i > 0 && s.push(4 * ((t - i) * e + (t - o)) + 3)) + } + for (var l = [], u = ((i = 0), n.length); i < u; ++i) + n[i] && l.push.apply(l, n[i]) + return (iy[t] = l), l + } + var ay = ny + function sy(t, e, r, n, i, o, a) { + var s = uo(t[0] / 2, t[1] / 2) + s.imageSmoothingEnabled = !1 + for ( + var l = s.canvas, + u = new Nu(s, 0.5, i, null, a), + c = r.length, + h = Math.floor(16777215 / c), + p = {}, + f = 1; + f <= c; + ++f + ) { + var g = r[f - 1], + y = g.getStyleFunction() || n + if (n) { + var m = y(g, o) + if (m) { + Array.isArray(m) || (m = [m]) + for ( + var v = '#' + ('000000' + (f * h).toString(16)).slice(-6), + _ = 0, + b = m.length; + _ < b; + ++_ + ) { + var x = m[_], + w = x.clone(), + S = w.getFill() + S && S.setColor(v) + var E = w.getStroke() + E && E.setColor(v), w.setText(void 0) + var T = x.getImage() + if (T) { + var C = T.getImageSize() + if (!C) continue + var O = document.createElement('canvas') + ;(O.width = C[0]), (O.height = C[1]) + var P = O.getContext('2d', { alpha: !1 }) + P.fillStyle = v + var R = P.canvas + P.fillRect(0, 0, R.width, R.height), + uo(C ? C[0] : R.width, C ? C[1] : R.height).drawImage( + R, + 0, + 0, + ), + w.setImage( + new dp({ + img: R, + imgSize: C, + anchor: T.getAnchor(), + anchorXUnits: np, + anchorYUnits: np, + offset: T.getOrigin(), + size: T.getSize(), + opacity: T.getOpacity(), + scale: T.getScale(), + rotation: T.getRotation(), + rotateWithView: T.getRotateWithView(), + }), + ) + } + var I = Number(w.getZIndex()) + ;(A = p[I]) || + ((A = {}), + (p[I] = A), + (A[bt.POLYGON] = []), + (A[bt.CIRCLE] = []), + (A[bt.LINE_STRING] = []), + (A[bt.POINT] = [])) + var L = w.getGeometryFunction()(g) + L && + Re(i, L.getExtent()) && + A[L.getType().replace('Multi', '')].push(L, w) + } + } + } + } + for ( + var M = Object.keys(p).map(Number).sort(d), F = ((f = 0), M.length); + f < F; + ++f + ) { + var A = p[M[f]] + for (var k in A) { + var j = A[k] + for (_ = 0, b = j.length; _ < b; _ += 2) { + u.setStyle(j[_ + 1]) + for (var N = 0, D = e.length; N < D; ++N) + u.setTransform(e[N]), u.drawGeometry(j[_]) + } + } + } + return s.getImageData(0, 0, l.width, l.height) + } + function ly(t, e, r) { + var n = [] + if (r) { + var i = 4 * (Math.round(t[0] / 2) + Math.round(t[1] / 2) * r.width), + o = r.data[i], + a = r.data[i + 1], + s = r.data[i + 2] + 256 * (a + 256 * o), + l = Math.floor(16777215 / e.length) + s && s % l == 0 && n.push(e[s / l - 1]) + } + return n + } + var uy = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + cy = (function (t) { + function e(e) { + var r = t.call(this, e) || this + return ( + (r.boundHandleStyleImageChange_ = + r.handleStyleImageChange_.bind(r)), + r.animatingOrInteracting_, + (r.dirty_ = !1), + (r.hitDetectionImageData_ = null), + (r.renderedFeatures_ = null), + (r.renderedRevision_ = -1), + (r.renderedResolution_ = NaN), + (r.renderedExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0]), + r.renderedRotation_, + (r.renderedCenter_ = null), + (r.renderedProjection_ = null), + (r.renderedRenderOrder_ = null), + (r.replayGroup_ = null), + (r.replayGroupChanged = !0), + (r.declutterExecutorGroup = null), + (r.clipping = !0), + r + ) + } + return ( + uy(e, t), + (e.prototype.useContainer = function (e, r, n) { + n < 1 && (e = null), t.prototype.useContainer.call(this, e, r, n) + }), + (e.prototype.renderWorlds = function (t, e, r) { + var n = e.extent, + i = e.viewState, + o = i.center, + a = i.resolution, + s = i.projection, + l = i.rotation, + u = s.getExtent(), + c = this.getLayer().getSource(), + h = e.pixelRatio, + p = e.viewHints, + f = !(p[ns] || p[is]), + d = this.context, + g = Math.round(e.size[0] * h), + y = Math.round(e.size[1] * h), + m = c.getWrapX() && s.canWrapX(), + v = m ? Pe(u) : null, + _ = m ? Math.ceil((n[2] - u[2]) / v) + 1 : 1, + b = m ? Math.floor((n[0] - u[0]) / v) : 0 + do { + var x = this.getRenderTransform(o, a, l, h, g, y, b * v) + t.execute(d, 1, x, l, f, void 0, r) + } while (++b < _) + }), + (e.prototype.renderDeclutter = function (t) { + this.declutterExecutorGroup && + this.renderWorlds( + this.declutterExecutorGroup, + t, + t.declutterTree, + ) + }), + (e.prototype.renderFrame = function (t, e) { + var r = t.pixelRatio, + n = t.layerStatesArray[t.layerIndex] + Ft(this.pixelTransform, 1 / r, 1 / r), + jt(this.inversePixelTransform, this.pixelTransform) + var i = Dt(this.pixelTransform) + this.useContainer(e, i, n.opacity) + var o = this.context, + a = o.canvas, + s = this.replayGroup_, + l = this.declutterExecutorGroup + if ((!s || s.isEmpty()) && (!l || l.isEmpty())) + return ( + !this.containerReused && a.width > 0 && (a.width = 0), + this.container + ) + var u = Math.round(t.size[0] * r), + c = Math.round(t.size[1] * r) + a.width != u || a.height != c + ? ((a.width = u), + (a.height = c), + a.style.transform !== i && (a.style.transform = i)) + : this.containerReused || o.clearRect(0, 0, u, c), + this.preRender(o, t) + var h = t.viewState, + p = h.projection, + f = !1 + if (n.extent && this.clipping) { + var d = on(n.extent, p) + ;(f = !te(d, t.extent) && Re(d, t.extent)) && + this.clipUnrotated(o, t, d) + } + this.renderWorlds(s, t), f && o.restore(), this.postRender(o, t) + var g = n.opacity, + y = this.container + return ( + g !== parseFloat(y.style.opacity) && + (y.style.opacity = 1 === g ? '' : String(g)), + this.renderedRotation_ !== h.rotation && + ((this.renderedRotation_ = h.rotation), + (this.hitDetectionImageData_ = null)), + this.container + ) + }), + (e.prototype.getFeatures = function (t) { + return new Promise( + function (e) { + if ( + !this.hitDetectionImageData_ && + !this.animatingOrInteracting_ + ) { + var r = [ + this.context.canvas.width, + this.context.canvas.height, + ] + It(this.pixelTransform, r) + var n = this.renderedCenter_, + i = this.renderedResolution_, + o = this.renderedRotation_, + a = this.renderedProjection_, + s = this.renderedExtent_, + l = this.getLayer(), + u = [], + c = r[0] / 2, + h = r[1] / 2 + u.push( + this.getRenderTransform(n, i, o, 0.5, c, h, 0).slice(), + ) + var p = l.getSource(), + f = a.getExtent() + if (p.getWrapX() && a.canWrapX() && !te(f, s)) { + for ( + var d = s[0], g = Pe(f), y = 0, m = void 0; + d < f[0]; + + ) + (m = g * --y), + u.push( + this.getRenderTransform( + n, + i, + o, + 0.5, + c, + h, + m, + ).slice(), + ), + (d += g) + for (y = 0, d = s[2]; d > f[2]; ) + (m = g * ++y), + u.push( + this.getRenderTransform( + n, + i, + o, + 0.5, + c, + h, + m, + ).slice(), + ), + (d -= g) + } + this.hitDetectionImageData_ = sy( + r, + u, + this.renderedFeatures_, + l.getStyleFunction(), + s, + i, + o, + ) + } + e(ly(t, this.renderedFeatures_, this.hitDetectionImageData_)) + }.bind(this), + ) + }), + (e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i) { + var a = this + if (this.replayGroup_) { + var s, + l = e.viewState.resolution, + u = e.viewState.rotation, + c = this.getLayer(), + h = {}, + p = function (t, e, r) { + var a = o(t), + s = h[a] + if (s) { + if (!0 !== s && r < s.distanceSq) { + if (0 === r) + return ( + (h[a] = !0), + i.splice(i.lastIndexOf(s), 1), + n(t, c, e) + ) + ;(s.geometry = e), (s.distanceSq = r) + } + } else { + if (0 === r) return (h[a] = !0), n(t, c, e) + i.push( + (h[a] = { + feature: t, + layer: c, + geometry: e, + distanceSq: r, + callback: n, + }), + ) + } + }, + f = [this.replayGroup_] + return ( + this.declutterExecutorGroup && + f.push(this.declutterExecutorGroup), + f.some(function (n) { + return (s = n.forEachFeatureAtCoordinate( + t, + l, + u, + r, + p, + n === a.declutterExecutorGroup + ? e.declutterTree.all().map(function (t) { + return t.value + }) + : null, + )) + }), + s + ) + } + }), + (e.prototype.handleFontsChanged = function () { + var t = this.getLayer() + t.getVisible() && this.replayGroup_ && t.changed() + }), + (e.prototype.handleStyleImageChange_ = function (t) { + this.renderIfReadyAndVisible() + }), + (e.prototype.prepareFrame = function (t) { + var e = this.getLayer(), + r = e.getSource() + if (!r) return !1 + var n = t.viewHints[ns], + i = t.viewHints[is], + o = e.getUpdateWhileAnimating(), + a = e.getUpdateWhileInteracting() + if ((!this.dirty_ && !o && n) || (!a && i)) + return (this.animatingOrInteracting_ = !0), !0 + this.animatingOrInteracting_ = !1 + var s = t.extent, + l = t.viewState, + u = l.projection, + c = l.resolution, + h = t.pixelRatio, + p = e.getRevision(), + f = e.getRenderBuffer(), + d = e.getRenderOrder() + void 0 === d && (d = Wu) + var g = l.center.slice(), + y = Ht(s, f * c), + m = [y.slice()], + v = u.getExtent() + if (r.getWrapX() && u.canWrapX() && !te(v, t.extent)) { + var _ = Pe(v), + b = Math.max(Pe(y) / 2, _) + ;(y[0] = v[0] - b), (y[2] = v[2] + b), Fr(g, u) + var x = ke(m[0], u) + x[0] < v[0] && x[2] < v[2] + ? m.push([x[0] + _, x[1], x[2] + _, x[3]]) + : x[0] > v[0] && + x[2] > v[2] && + m.push([x[0] - _, x[1], x[2] - _, x[3]]) + } + if ( + !this.dirty_ && + this.renderedResolution_ == c && + this.renderedRevision_ == p && + this.renderedRenderOrder_ == d && + te(this.renderedExtent_, y) + ) + return (this.replayGroupChanged = !1), !0 + ;(this.replayGroup_ = null), (this.dirty_ = !1) + var w, + S = new Yg(Xu(c, h), y, c, h) + this.getLayer().getDeclutter() && (w = new Yg(Xu(c, h), y, c, h)) + var E, + T = tn() + if (T) { + for (var C = 0, O = m.length; C < O; ++C) + r.loadFeatures(nn(m[C], u), c, T) + E = Zr(T, u) + } else + for (C = 0, O = m.length; C < O; ++C) r.loadFeatures(m[C], c, u) + var P = qu(c, h), + R = function (t) { + var r, + n = t.getStyleFunction() || e.getStyleFunction() + if ((n && (r = n(t, c)), r)) { + var i = this.renderFeature(t, P, r, S, E, w) + this.dirty_ = this.dirty_ || i + } + }.bind(this), + I = nn(y, u), + L = r.getFeaturesInExtent(I) + d && L.sort(d) + for (C = 0, O = L.length; C < O; ++C) R(L[C]) + this.renderedFeatures_ = L + var M = S.finish(), + F = new ay(y, c, h, r.getOverlaps(), M, e.getRenderBuffer()) + return ( + w && + (this.declutterExecutorGroup = new ay( + y, + c, + h, + r.getOverlaps(), + w.finish(), + e.getRenderBuffer(), + )), + (this.renderedResolution_ = c), + (this.renderedRevision_ = p), + (this.renderedRenderOrder_ = d), + (this.renderedExtent_ = y), + (this.renderedCenter_ = g), + (this.renderedProjection_ = u), + (this.replayGroup_ = F), + (this.hitDetectionImageData_ = null), + (this.replayGroupChanged = !0), + !0 + ) + }), + (e.prototype.renderFeature = function (t, e, r, n, i, o) { + if (!r) return !1 + var a = !1 + if (Array.isArray(r)) + for (var s = 0, l = r.length; s < l; ++s) + a = + Zu( + n, + t, + r[s], + e, + this.boundHandleStyleImageChange_, + i, + o, + ) || a + else a = Zu(n, t, r, e, this.boundHandleStyleImageChange_, i, o) + return a + }), + e + ) + })(cd), + hy = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + py = (function (t) { + function e(e) { + var r = t.call(this, e) || this + return ( + (r.vectorRenderer_ = new cy(e)), + (r.layerImageRatio_ = e.getImageRatio()), + (r.coordinateToVectorPixelTransform_ = [1, 0, 0, 1, 0, 0]), + (r.renderedPixelToCoordinateTransform_ = null), + r + ) + } + return ( + hy(e, t), + (e.prototype.disposeInternal = function () { + this.vectorRenderer_.dispose(), + t.prototype.disposeInternal.call(this) + }), + (e.prototype.getFeatures = function (t) { + if (this.vectorRenderer_) { + var e = It( + this.coordinateToVectorPixelTransform_, + It(this.renderedPixelToCoordinateTransform_, t.slice()), + ) + return this.vectorRenderer_.getFeatures(e) + } + return new Promise(function (t, e) { + t([]) + }) + }), + (e.prototype.handleFontsChanged = function () { + this.vectorRenderer_.handleFontsChanged() + }), + (e.prototype.prepareFrame = function (t) { + var e = t.pixelRatio, + r = t.viewState, + n = r.resolution, + i = t.viewHints, + o = this.vectorRenderer_, + a = t.extent + 1 !== this.layerImageRatio_ && + Me((a = a.slice(0)), this.layerImageRatio_) + var s = Pe(a) / n, + l = Ee(a) / n + if (!i[ns] && !i[is] && !Ie(a)) { + o.useContainer(null, null, 1) + var u = o.context, + c = O({}, t, { + declutterTree: new Pp.a(9), + extent: a, + size: [s, l], + viewState: O({}, t.viewState, { rotation: 0 }), + }), + h = new $i(a, n, e, u.canvas, function (t) { + o.prepareFrame(c) && + o.replayGroupChanged && + ((o.clipping = !1), + o.renderFrame(c, null), + o.renderDeclutter(c), + t()) + }) + h.addEventListener( + F, + function () { + if (h.getState() === ki) { + this.image_ = h + var t = h.getResolution(), + n = h.getPixelRatio(), + i = (t * e) / n + ;(this.renderedResolution = i), + (this.coordinateToVectorPixelTransform_ = kt( + this.coordinateToVectorPixelTransform_, + s / 2, + l / 2, + 1 / i, + -1 / i, + 0, + -r.center[0], + -r.center[1], + )) + } + }.bind(this), + ), + h.load() + } + return ( + this.image_ && + (this.renderedPixelToCoordinateTransform_ = + t.pixelToCoordinateTransform.slice()), + !!this.image_ + ) + }), + (e.prototype.preRender = function () {}), + (e.prototype.postRender = function () {}), + (e.prototype.renderDeclutter = function () {}), + (e.prototype.forEachFeatureAtCoordinate = function (e, r, n, i, o) { + return this.vectorRenderer_ + ? this.vectorRenderer_.forEachFeatureAtCoordinate(e, r, n, i, o) + : t.prototype.forEachFeatureAtCoordinate.call( + this, + e, + r, + n, + i, + o, + ) + }), + e + ) + })(pd), + fy = 'image', + dy = 'hybrid', + gy = 'vector', + yy = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + my = { image: [Bu, Du, Uu, zu, Vu], hybrid: [Bu, Uu], vector: [] }, + vy = { + image: [Gu], + hybrid: [zu, Vu, Gu], + vector: [Bu, Du, Uu, zu, Vu, Gu], + }, + _y = (function (t) { + function e(e) { + var r = t.call(this, e) || this + return ( + (r.boundHandleStyleImageChange_ = + r.handleStyleImageChange_.bind(r)), + (r.dirty_ = !1), + r.renderedLayerRevision_, + (r.renderedPixelToCoordinateTransform_ = null), + r.renderedRotation_, + (r.renderTileImageQueue_ = {}), + (r.tileListenerKeys_ = {}), + (r.tmpTransform_ = [1, 0, 0, 1, 0, 0]), + r + ) + } + return ( + yy(e, t), + (e.prototype.prepareTile = function (t, e, r, n) { + var i, + a = o(t), + s = t.getState() + return ( + ((s === to && t.hifi) || s === eo) && + a in this.tileListenerKeys_ && + (H(this.tileListenerKeys_[a]), + delete this.tileListenerKeys_[a]), + (s !== to && s !== eo) || + (this.updateExecutorGroup_(t, e, r), + this.tileImageNeedsRender_(t, e, r) && + ((i = !0), n && (this.renderTileImageQueue_[a] = t))), + i + ) + }), + (e.prototype.getTile = function (e, r, n, i) { + var a = i.pixelRatio, + s = i.viewState, + l = s.resolution, + u = s.projection, + c = this.getLayer(), + h = c.getSource().getTile(e, r, n, a, u) + if (h.getState() < to) { + h.wantedResolution = l + var p = o(h) + if (!(p in this.tileListenerKeys_)) { + var f = Z(h, F, this.prepareTile.bind(this, h, a, u, !0)) + this.tileListenerKeys_[p] = f + } + } else { + var d = i.viewHints + ;(!!(d[ns] || d[is]) && h.wantedResolution) || + (h.wantedResolution = l), + this.prepareTile(h, a, u, !1) && + c.getRenderMode() !== gy && + this.renderTileImage_(h, i) + } + return t.prototype.getTile.call(this, e, r, n, i) + }), + (e.prototype.isDrawableTile = function (e) { + var r = this.getLayer() + return ( + t.prototype.isDrawableTile.call(this, e) && + (r.getRenderMode() === gy + ? o(r) in e.executorGroups + : e.hasContext(r)) + ) + }), + (e.prototype.getTileImage = function (t) { + return t.getImage(this.getLayer()) + }), + (e.prototype.prepareFrame = function (e) { + var r = this.getLayer().getRevision() + return ( + this.renderedLayerRevision_ != r && + (this.renderedTiles.length = 0), + (this.renderedLayerRevision_ = r), + t.prototype.prepareFrame.call(this, e) + ) + }), + (e.prototype.updateExecutorGroup_ = function (t, e, r) { + var n = this.getLayer(), + i = n.getRevision(), + a = n.getRenderOrder() || null, + s = t.wantedResolution, + l = t.getReplayState(n) + if ( + l.dirty || + l.renderedResolution !== s || + l.renderedRevision != i || + l.renderedRenderOrder != a || + l.renderedZ !== t.sourceZ + ) { + var u = n.getSource(), + c = n.getDeclutter(), + h = u.getTileGrid(), + p = u + .getTileGridForProjection(r) + .getTileCoordExtent(t.wrappedTileCoord), + f = u.getSourceTiles(e, r, t), + d = o(n) + delete t.hitDetectionImageData[d], + (t.executorGroups[d] = []), + c && (t.declutterExecutorGroups[d] = []) + for ( + var g = function (r, i) { + var o = f[r] + if (o.getState() != to) return 'continue' + var g = o.tileCoord, + m = h.getTileCoordExtent(g), + v = Te(p, m), + _ = ue(m, v) + ? null + : Ht(v, n.getRenderBuffer() * s, y.tmpExtent) + l.dirty = !1 + var b = new Yg(0, v, s, e), + x = c ? new Yg(0, v, s, e) : void 0, + w = qu(s, e), + S = function (t) { + var e, + r = t.getStyleFunction() || n.getStyleFunction() + if ((r && (e = r(t, s)), e)) { + var i = this.renderFeature(t, w, e, b, x) + ;(this.dirty_ = this.dirty_ || i), + (l.dirty = l.dirty || i) + } + }, + E = o.getFeatures() + a && a !== l.renderedRenderOrder && E.sort(a) + for (var T = 0, C = E.length; T < C; ++T) { + var O = E[T] + ;(_ && !Re(_, O.getGeometry().getExtent())) || + S.call(y, O) + } + var P = b.finish(), + R = + n.getRenderMode() !== gy && c && 1 === f.length + ? null + : v, + I = new ay( + R, + s, + e, + u.getOverlaps(), + P, + n.getRenderBuffer(), + ) + if ((t.executorGroups[d].push(I), x)) { + var L = new ay( + R, + s, + e, + u.getOverlaps(), + x.finish(), + n.getRenderBuffer(), + ) + t.declutterExecutorGroups[d].push(L) + } + }, + y = this, + m = 0, + v = f.length; + m < v; + ++m + ) + g(m) + ;(l.renderedRevision = i), + (l.renderedZ = t.sourceZ), + (l.renderedRenderOrder = a), + (l.renderedResolution = s) + } + }), + (e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i) { + var a = e.viewState.resolution, + s = e.viewState.rotation + r = null == r ? 0 : r + var l = this.getLayer(), + u = l + .getSource() + .getTileGridForProjection(e.viewState.projection), + c = Kt([t]) + Ht(c, a * r, c) + for ( + var h, + p = {}, + f = function (t, e, r) { + var a = t.getId() + void 0 === a && (a = o(t)) + var s = p[a] + if (s) { + if (!0 !== s && r < s.distanceSq) { + if (0 === r) + return ( + (p[a] = !0), + i.splice(i.lastIndexOf(s), 1), + n(t, l, e) + ) + ;(s.geometry = e), (s.distanceSq = r) + } + } else { + if (0 === r) return (p[a] = !0), n(t, l, e) + i.push( + (p[a] = { + feature: t, + layer: l, + geometry: e, + distanceSq: r, + callback: n, + }), + ) + } + }, + d = this.renderedTiles, + g = function (n, i) { + var p = d[n] + if (!Re(u.getTileCoordExtent(p.wrappedTileCoord), c)) + return 'continue' + var g = o(l), + y = [p.executorGroups[g]], + m = p.declutterExecutorGroups[g] + m && y.push(m), + y.some(function (n) { + for ( + var i = + n === m + ? e.declutterTree.all().map(function (t) { + return t.value + }) + : null, + o = 0, + l = n.length; + o < l; + ++o + ) { + var u = n[o] + if ( + (h = u.forEachFeatureAtCoordinate(t, a, s, r, f, i)) + ) + return !0 + } + }) + }, + y = 0, + m = d.length; + !h && y < m; + ++y + ) + g(y) + return h + }), + (e.prototype.getFeatures = function (t) { + return new Promise( + function (e, r) { + for ( + var n, + i = this.getLayer(), + a = o(i), + s = i.getSource(), + l = this.renderedProjection, + u = l.getExtent(), + c = this.renderedResolution, + h = s.getTileGridForProjection(l), + p = It( + this.renderedPixelToCoordinateTransform_, + t.slice(), + ), + f = h.getTileCoordForCoordAndResolution(p, c), + d = 0, + g = this.renderedTiles.length; + d < g; + ++d + ) + if ( + f.toString() === + this.renderedTiles[d].tileCoord.toString() + ) { + if ( + (n = this.renderedTiles[d]).getState() === to && + n.hifi + ) { + var y = h.getTileCoordExtent(n.tileCoord) + s.getWrapX() && l.canWrapX() && !te(u, y) && Fr(p, l) + break + } + n = void 0 + } + if (!n || n.loadingSourceTiles > 0) e([]) + else { + var m = Ce(h.getTileCoordExtent(n.wrappedTileCoord)), + v = [(p[0] - m[0]) / c, (m[1] - p[1]) / c], + _ = n.getSourceTiles().reduce(function (t, e) { + return t.concat(e.getFeatures()) + }, []), + b = n.hitDetectionImageData[a] + if (!b && !this.animatingOrInteracting_) { + var x = Is(h.getTileSize(h.getZForResolution(c))), + w = [x[0] / 2, x[1] / 2], + S = this.renderedRotation_ + ;(b = sy( + x, + [ + this.getRenderTransform( + h.getTileCoordCenter(n.wrappedTileCoord), + c, + 0, + 0.5, + w[0], + w[1], + 0, + ), + ], + _, + i.getStyleFunction(), + h.getTileCoordExtent(n.wrappedTileCoord), + n.getReplayState(i).renderedResolution, + S, + )), + (n.hitDetectionImageData[a] = b) + } + e(ly(v, _, b)) + } + }.bind(this), + ) + }), + (e.prototype.handleFontsChanged = function () { + P(this.renderTileImageQueue_) + var t = this.getLayer() + t.getVisible() && + void 0 !== this.renderedLayerRevision_ && + t.changed() + }), + (e.prototype.handleStyleImageChange_ = function (t) { + this.renderIfReadyAndVisible() + }), + (e.prototype.renderDeclutter = function (t) { + for ( + var e = t.viewHints, + r = !(e[ns] || e[is]), + n = this.renderedTiles, + i = 0, + a = n.length; + i < a; + ++i + ) { + var s = n[i], + l = s.declutterExecutorGroups[o(this.getLayer())] + if (l) + for (var u = l.length - 1; u >= 0; --u) + l[u].execute( + this.context, + 1, + this.getTileRenderTransform(s, t), + t.viewState.rotation, + r, + void 0, + t.declutterTree, + ) + } + }), + (e.prototype.getTileRenderTransform = function (t, e) { + var r = e.pixelRatio, + n = e.viewState, + i = n.center, + o = n.resolution, + a = n.rotation, + s = e.size, + l = Math.round(s[0] * r), + u = Math.round(s[1] * r), + c = this.getLayer() + .getSource() + .getTileGridForProjection(e.viewState.projection), + h = t.tileCoord, + p = c.getTileCoordExtent(t.wrappedTileCoord), + f = c.getTileCoordExtent(h, this.tmpExtent)[0] - p[0] + return Ot( + Mt(this.inversePixelTransform.slice(), 1 / r, 1 / r), + this.getRenderTransform(i, o, a, r, l, u, f), + ) + }), + (e.prototype.renderFrame = function (e, r) { + var n = e.viewHints, + i = !(n[ns] || n[is]) + this.renderQueuedTileImages_(i, e), + t.prototype.renderFrame.call(this, e, r), + (this.renderedPixelToCoordinateTransform_ = + e.pixelToCoordinateTransform.slice()), + (this.renderedRotation_ = e.viewState.rotation) + var a = this.getLayer(), + s = a.getRenderMode() + if (s === fy) return this.container + var l = a.getSource(), + u = e.usedTiles[o(l)] + for (var c in this.renderTileImageQueue_) + (u && c in u) || delete this.renderTileImageQueue_[c] + for ( + var h = this.context, + p = vy[s], + f = e.viewState.rotation, + d = this.renderedTiles, + g = [], + y = [], + m = d.length - 1; + m >= 0; + --m + ) + for ( + var v = d[m], + _ = this.getTileRenderTransform(v, e), + b = v.executorGroups[o(a)], + x = !1, + w = 0, + S = b.length; + w < S; + ++w + ) { + var E = b[w] + if (E.hasExecutors(p)) { + var T = v.tileCoord[0], + C = void 0 + if (!x && (C = E.getClipCoords(_))) { + h.save() + for (var O = 0, P = g.length; O < P; ++O) { + var R = g[O] + T < y[O] && + (h.beginPath(), + h.moveTo(C[0], C[1]), + h.lineTo(C[2], C[3]), + h.lineTo(C[4], C[5]), + h.lineTo(C[6], C[7]), + h.moveTo(R[6], R[7]), + h.lineTo(R[4], R[5]), + h.lineTo(R[2], R[3]), + h.lineTo(R[0], R[1]), + h.clip()) + } + } + E.execute(h, 1, _, f, i, p), + !x && C && (h.restore(), g.push(C), y.push(T), (x = !0)) + } + } + return this.container + }), + (e.prototype.renderQueuedTileImages_ = function (t, e) { + for (var r in this.renderTileImageQueue_) { + if (!t && Date.now() - e.time > 8) { + e.animate = !0 + break + } + var n = this.renderTileImageQueue_[r] + delete this.renderTileImageQueue_[r], + this.renderTileImage_(n, e) + } + }), + (e.prototype.renderFeature = function (t, e, r, n, i) { + if (!r) return !1 + var o = !1 + if (Array.isArray(r)) + for (var a = 0, s = r.length; a < s; ++a) + o = + Zu( + n, + t, + r[a], + e, + this.boundHandleStyleImageChange_, + void 0, + i, + ) || o + else + o = Zu(n, t, r, e, this.boundHandleStyleImageChange_, void 0, i) + return o + }), + (e.prototype.tileImageNeedsRender_ = function (t, e, r) { + var n = this.getLayer(), + i = t.getReplayState(n), + o = n.getRevision(), + a = t.sourceZ, + s = t.wantedResolution + return ( + i.renderedTileResolution !== s || + i.renderedTileRevision !== o || + i.renderedTileZ !== a + ) + }), + (e.prototype.renderTileImage_ = function (t, e) { + var r = this.getLayer(), + n = t.getReplayState(r), + i = r.getRevision(), + a = t.executorGroups[o(r)] + ;(n.renderedTileRevision = i), (n.renderedTileZ = t.sourceZ) + var s = t.wrappedTileCoord, + l = s[0], + u = r.getSource(), + c = e.pixelRatio, + h = e.viewState.projection, + p = u.getTileGridForProjection(h), + f = p.getResolution(t.tileCoord[0]), + d = (e.pixelRatio / t.wantedResolution) * f, + g = p.getResolution(l), + y = t.getContext(r) + c = Math.round(Math.max(c, d / c)) + var m = u.getTilePixelSize(l, c, h) + ;(y.canvas.width = m[0]), (y.canvas.height = m[1]) + var v = c / d + if (1 !== v) { + var _ = Ct(this.tmpTransform_) + Mt(_, v, v), y.setTransform.apply(y, _) + } + var b = p.getTileCoordExtent(s, this.tmpExtent), + x = d / g, + w = Ct(this.tmpTransform_) + Mt(w, x, -x), At(w, -b[0], -b[3]) + for (var S = 0, E = a.length; S < E; ++S) { + a[S].execute(y, v, w, 0, !0, my[r.getRenderMode()]) + } + n.renderedTileResolution = t.wantedResolution + }), + e + ) + })(xd) + function by(t, e, r, n, i, o, a) { + var s, + l, + u = (r - e) / n + if (1 === u) s = e + else if (2 === u) (s = e), (l = i) + else if (0 !== u) { + for ( + var c = t[e], h = t[e + 1], p = 0, d = [0], g = e + n; + g < r; + g += n + ) { + var y = t[g], + m = t[g + 1] + ;(p += Math.sqrt((y - c) * (y - c) + (m - h) * (m - h))), + d.push(p), + (c = y), + (h = m) + } + var v = i * p, + _ = f(d, v) + _ < 0 + ? ((l = (v - d[-_ - 2]) / (d[-_ - 1] - d[-_ - 2])), + (s = e + (-_ - 2) * n)) + : (s = e + _ * n) + } + var b = a > 1 ? a : 2, + x = o || new Array(b) + for (g = 0; g < b; ++g) + x[g] = + void 0 === s + ? NaN + : void 0 === l + ? t[s + g] + : qe(t[s + g], t[s + n + g], l) + return x + } + function xy(t, e, r, n, i, o) { + if (r == e) return null + var a + if (i < t[e + n - 1]) + return o ? (((a = t.slice(e, e + n))[n - 1] = i), a) : null + if (t[r - 1] < i) + return o ? (((a = t.slice(r - n, r))[n - 1] = i), a) : null + if (i == t[e + n - 1]) return t.slice(e, e + n) + for (var s = e / n, l = r / n; s < l; ) { + var u = (s + l) >> 1 + i < t[(u + 1) * n - 1] ? (l = u) : (s = u + 1) + } + var c = t[s * n - 1] + if (i == c) return t.slice((s - 1) * n, (s - 1) * n + n) + var h = (i - c) / (t[(s + 1) * n - 1] - c) + a = [] + for (var p = 0; p < n - 1; ++p) + a.push(qe(t[(s - 1) * n + p], t[s * n + p], h)) + return a.push(i), a + } + function wy(t, e, r, n, i, o, a) { + if (a) return xy(t, e, r[r.length - 1], n, i, o) + var s + if (i < t[n - 1]) + return o ? (((s = t.slice(0, n))[n - 1] = i), s) : null + if (t[t.length - 1] < i) + return o ? (((s = t.slice(t.length - n))[n - 1] = i), s) : null + for (var l = 0, u = r.length; l < u; ++l) { + var c = r[l] + if (e != c) { + if (i < t[e + n - 1]) return null + if (i <= t[c - 1]) return xy(t, e, c, n, i, !1) + e = c + } + } + return null + } + function Sy(t, e, r, n) { + for ( + var i = [], o = [1 / 0, 1 / 0, -1 / 0, -1 / 0], a = 0, s = r.length; + a < s; + ++a + ) { + var l = r[a] + ;(o = le(t, e, l[0], n)), + i.push((o[0] + o[2]) / 2, (o[1] + o[3]) / 2), + (e = l[l.length - 1]) + } + return i + } + var Ey = [1, 0, 0, 1, 0, 0], + Ty = (function () { + function t(t, e, r, n, i) { + this.extent_, + (this.id_ = i), + (this.type_ = t), + (this.flatCoordinates_ = e), + (this.flatInteriorPoints_ = null), + (this.flatMidpoints_ = null), + (this.ends_ = r), + (this.properties_ = n) + } + return ( + (t.prototype.get = function (t) { + return this.properties_[t] + }), + (t.prototype.getExtent = function () { + return ( + this.extent_ || + (this.extent_ = + this.type_ === bt.POINT + ? ae(this.flatCoordinates_) + : le( + this.flatCoordinates_, + 0, + this.flatCoordinates_.length, + 2, + )), + this.extent_ + ) + }), + (t.prototype.getFlatInteriorPoint = function () { + if (!this.flatInteriorPoints_) { + var t = xe(this.getExtent()) + this.flatInteriorPoints_ = $n( + this.flatCoordinates_, + 0, + this.ends_, + 2, + t, + 0, + ) + } + return this.flatInteriorPoints_ + }), + (t.prototype.getFlatInteriorPoints = function () { + if (!this.flatInteriorPoints_) { + var t = Sy(this.flatCoordinates_, 0, this.ends_, 2) + this.flatInteriorPoints_ = Jn( + this.flatCoordinates_, + 0, + this.ends_, + 2, + t, + ) + } + return this.flatInteriorPoints_ + }), + (t.prototype.getFlatMidpoint = function () { + return ( + this.flatMidpoints_ || + (this.flatMidpoints_ = by( + this.flatCoordinates_, + 0, + this.flatCoordinates_.length, + 2, + 0.5, + )), + this.flatMidpoints_ + ) + }), + (t.prototype.getFlatMidpoints = function () { + if (!this.flatMidpoints_) { + this.flatMidpoints_ = [] + for ( + var t = this.flatCoordinates_, + e = 0, + r = this.ends_, + n = 0, + i = r.length; + n < i; + ++n + ) { + var o = r[n], + a = by(t, e, o, 2, 0.5) + v(this.flatMidpoints_, a), (e = o) + } + } + return this.flatMidpoints_ + }), + (t.prototype.getId = function () { + return this.id_ + }), + (t.prototype.getOrientedFlatCoordinates = function () { + return this.flatCoordinates_ + }), + (t.prototype.getGeometry = function () { + return this + }), + (t.prototype.getSimplifiedGeometry = function (t) { + return this + }), + (t.prototype.simplifyTransformed = function (t, e) { + return this + }), + (t.prototype.getProperties = function () { + return this.properties_ + }), + (t.prototype.getStride = function () { + return 2 + }), + (t.prototype.getStyleFunction = function () {}), + (t.prototype.getType = function () { + return this.type_ + }), + (t.prototype.transform = function (t) { + var e = (t = Gr(t)).getExtent(), + r = t.getWorldExtent() + if (e && r) { + var n = Ee(r) / Ee(e) + kt(Ey, r[0], r[3], n, -n, 0, 0, 0), + ln( + this.flatCoordinates_, + 0, + this.flatCoordinates_.length, + 2, + Ey, + this.flatCoordinates_, + ) + } + }), + (t.prototype.getEnds = function () { + return this.ends_ + }), + t + ) + })() + ;(Ty.prototype.getEndss = Ty.prototype.getEnds), + (Ty.prototype.getFlatCoordinates = + Ty.prototype.getOrientedFlatCoordinates) + var Cy = Ty + var Oy = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Py = (function (t) { + function e(e, r) { + var n = t.call(this) || this + return ( + (n.flatMidpoint_ = null), + (n.flatMidpointRevision_ = -1), + (n.maxDelta_ = -1), + (n.maxDeltaRevision_ = -1), + void 0 === r || Array.isArray(e[0]) + ? n.setCoordinates(e, r) + : n.setFlatCoordinates(r, e), + n + ) + } + return ( + Oy(e, t), + (e.prototype.appendCoordinate = function (t) { + this.flatCoordinates + ? v(this.flatCoordinates, t) + : (this.flatCoordinates = t.slice()), + this.changed() + }), + (e.prototype.clone = function () { + var t = new e(this.flatCoordinates.slice(), this.layout) + return t.applyProperties(this), t + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + return n < Jt(this.getExtent(), t, e) + ? n + : (this.maxDeltaRevision_ != this.getRevision() && + ((this.maxDelta_ = Math.sqrt( + bn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + 0, + ), + )), + (this.maxDeltaRevision_ = this.getRevision())), + Sn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + this.maxDelta_, + !1, + t, + e, + r, + n, + )) + }), + (e.prototype.forEachSegment = function (t) { + return Qn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + t, + ) + }), + (e.prototype.getCoordinateAtM = function (t, e) { + if (this.layout != vt && this.layout != _t) return null + var r = void 0 !== e && e + return xy( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + t, + r, + ) + }), + (e.prototype.getCoordinates = function () { + return Nn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + ) + }), + (e.prototype.getCoordinateAt = function (t, e) { + return by( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + t, + e, + this.stride, + ) + }), + (e.prototype.getLength = function () { + return qg( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + ) + }), + (e.prototype.getFlatMidpoint = function () { + return ( + this.flatMidpointRevision_ != this.getRevision() && + ((this.flatMidpoint_ = this.getCoordinateAt( + 0.5, + this.flatMidpoint_, + )), + (this.flatMidpointRevision_ = this.getRevision())), + this.flatMidpoint_ + ) + }), + (e.prototype.getSimplifiedGeometryInternal = function (t) { + var r = [] + return ( + (r.length = In( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + t, + r, + 0, + )), + new e(r, yt) + ) + }), + (e.prototype.getType = function () { + return bt.LINE_STRING + }), + (e.prototype.intersectsExtent = function (t) { + return ti( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + t, + ) + }), + (e.prototype.setCoordinates = function (t, e) { + this.setLayout(e, t, 1), + this.flatCoordinates || (this.flatCoordinates = []), + (this.flatCoordinates.length = On( + this.flatCoordinates, + 0, + t, + this.stride, + )), + this.changed() + }), + e + ) + })(vn), + Ry = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Iy = (function (t) { + function e(e) { + return t.call(this, e) || this + } + return ( + Ry(e, t), + (e.prototype.createRenderer = function () { + return new cy(this) + }), + e + ) + })(wg) + function Ly(t, e, r) { + for ( + var n, + i, + o, + a, + s, + l, + u = [], + c = t(0), + h = t(1), + p = e(c), + f = e(h), + d = [h, c], + g = [f, p], + y = [1, 0], + m = {}, + v = 1e5; + --v > 0 && y.length > 0; + + ) + (o = y.pop()), + (c = d.pop()), + (p = g.pop()), + (l = o.toString()) in m || (u.push(p[0], p[1]), (m[l] = !0)), + (a = y.pop()), + (h = d.pop()), + (f = g.pop()), + ze( + (i = e((n = t((s = (o + a) / 2)))))[0], + i[1], + p[0], + p[1], + f[0], + f[1], + ) < r + ? (u.push(f[0], f[1]), (m[(l = a.toString())] = !0)) + : (y.push(a, s, s, o), g.push(f, i, i, p), d.push(h, n, n, c)) + return u + } + function My(t, e, r, n, i) { + return Ly( + function (n) { + return [t, e + (r - e) * n] + }, + Kr(Gr('EPSG:4326'), n), + i, + ) + } + function Fy(t, e, r, n, i) { + return Ly( + function (n) { + return [e + (r - e) * n, t] + }, + Kr(Gr('EPSG:4326'), n), + i, + ) + } + var Ay = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ky = new gp({ color: 'rgba(0,0,0,0.2)' }), + jy = [ + 90, 45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.01, 0.005, 0.002, + 0.001, + ], + Ny = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = O( + { + updateWhileAnimating: !0, + updateWhileInteracting: !0, + renderBuffer: 0, + }, + n, + ) + return ( + delete i.maxLines, + delete i.strokeStyle, + delete i.targetSize, + delete i.showLabels, + delete i.lonLabelFormatter, + delete i.latLabelFormatter, + delete i.lonLabelPosition, + delete i.latLabelPosition, + delete i.lonLabelStyle, + delete i.latLabelStyle, + delete i.intervals, + ((r = t.call(this, i) || this).projection_ = null), + (r.maxLat_ = 1 / 0), + (r.maxLon_ = 1 / 0), + (r.minLat_ = -1 / 0), + (r.minLon_ = -1 / 0), + (r.maxX_ = 1 / 0), + (r.maxY_ = 1 / 0), + (r.minX_ = -1 / 0), + (r.minY_ = -1 / 0), + (r.targetSize_ = void 0 !== n.targetSize ? n.targetSize : 100), + (r.maxLines_ = void 0 !== n.maxLines ? n.maxLines : 100), + (r.meridians_ = []), + (r.parallels_ = []), + (r.strokeStyle_ = void 0 !== n.strokeStyle ? n.strokeStyle : ky), + (r.fromLonLatTransform_ = void 0), + (r.toLonLatTransform_ = void 0), + (r.projectionCenterLonLat_ = null), + (r.bottomLeft_ = null), + (r.bottomRight_ = null), + (r.topLeft_ = null), + (r.topRight_ = null), + (r.meridiansLabels_ = null), + (r.parallelsLabels_ = null), + n.showLabels && + ((r.lonLabelFormatter_ = + null == n.lonLabelFormatter + ? Er.bind(r, 'EW') + : n.lonLabelFormatter), + (r.latLabelFormatter_ = + null == n.latLabelFormatter + ? Er.bind(r, 'NS') + : n.latLabelFormatter), + (r.lonLabelPosition_ = + null == n.lonLabelPosition ? 0 : n.lonLabelPosition), + (r.latLabelPosition_ = + null == n.latLabelPosition ? 1 : n.latLabelPosition), + (r.lonLabelStyleBase_ = new wp({ + text: + void 0 !== n.lonLabelStyle + ? n.lonLabelStyle.clone() + : new Tp({ + font: '12px Calibri,sans-serif', + textBaseline: 'bottom', + fill: new ep({ color: 'rgba(0,0,0,1)' }), + stroke: new gp({ + color: 'rgba(255,255,255,1)', + width: 3, + }), + }), + })), + (r.lonLabelStyle_ = function (t) { + var e = t.get('graticule_label') + return ( + this.lonLabelStyleBase_.getText().setText(e), + this.lonLabelStyleBase_ + ) + }.bind(r)), + (r.latLabelStyleBase_ = new wp({ + text: + void 0 !== n.latLabelStyle + ? n.latLabelStyle.clone() + : new Tp({ + font: '12px Calibri,sans-serif', + textAlign: 'right', + fill: new ep({ color: 'rgba(0,0,0,1)' }), + stroke: new gp({ + color: 'rgba(255,255,255,1)', + width: 3, + }), + }), + })), + (r.latLabelStyle_ = function (t) { + var e = t.get('graticule_label') + return ( + this.latLabelStyleBase_.getText().setText(e), + this.latLabelStyleBase_ + ) + }.bind(r)), + (r.meridiansLabels_ = []), + (r.parallelsLabels_ = []), + r.addEventListener(Xo, r.drawLabels_.bind(r))), + (r.intervals_ = void 0 !== n.intervals ? n.intervals : jy), + r.setSource( + new hf({ + loader: r.loaderFunction.bind(r), + strategy: r.strategyFunction.bind(r), + features: new ht(), + overlaps: !1, + useSpatialIndex: !1, + wrapX: n.wrapX, + }), + ), + (r.featurePool_ = []), + (r.lineStyle_ = new wp({ stroke: r.strokeStyle_ })), + (r.loadedExtent_ = null), + (r.renderedExtent_ = null), + r.setRenderOrder(null), + r + ) + } + return ( + Ay(e, t), + (e.prototype.strategyFunction = function (t, e) { + var r = t.slice() + return ( + this.projection_ && + this.getSource().getWrapX() && + ke(r, this.projection_), + this.loadedExtent_ && + (ce(this.loadedExtent_, r, e) + ? (r = this.loadedExtent_.slice()) + : this.getSource().removeLoadedExtent(this.loadedExtent_)), + [r] + ) + }), + (e.prototype.loaderFunction = function (t, e, r) { + this.loadedExtent_ = t + var n = this.getSource(), + i = Te(this.getExtent() || [-1 / 0, -1 / 0, 1 / 0, 1 / 0], t) + if ( + !( + (this.renderedExtent_ && ue(this.renderedExtent_, i)) || + ((this.renderedExtent_ = i), Ie(i)) + ) + ) { + var o = xe(i), + a = (e * e) / 4 + ;(!this.projection_ || !Xr(this.projection_, r)) && + this.updateProjectionInfo_(r), + this.createGraticule_(i, o, e, a) + var s, + l = this.meridians_.length + this.parallels_.length + for ( + this.meridiansLabels_ && (l += this.meridians_.length), + this.parallelsLabels_ && (l += this.parallels_.length); + l > this.featurePool_.length; + + ) + (s = new gt()), this.featurePool_.push(s) + var u = n.getFeaturesCollection() + u.clear() + var c, + h, + p = 0 + for (c = 0, h = this.meridians_.length; c < h; ++c) + (s = this.featurePool_[p++]).setGeometry(this.meridians_[c]), + s.setStyle(this.lineStyle_), + u.push(s) + for (c = 0, h = this.parallels_.length; c < h; ++c) + (s = this.featurePool_[p++]).setGeometry(this.parallels_[c]), + s.setStyle(this.lineStyle_), + u.push(s) + } + }), + (e.prototype.addMeridian_ = function (t, e, r, n, i, o) { + var a = this.getMeridian_(t, e, r, n, o) + if (Re(a.getExtent(), i)) { + if (this.meridiansLabels_) { + var s = this.lonLabelFormatter_(t) + o in this.meridiansLabels_ + ? (this.meridiansLabels_[o].text = s) + : (this.meridiansLabels_[o] = { geom: new qn([]), text: s }) + } + this.meridians_[o++] = a + } + return o + }), + (e.prototype.addParallel_ = function (t, e, r, n, i, o) { + var a = this.getParallel_(t, e, r, n, o) + if (Re(a.getExtent(), i)) { + if (this.parallelsLabels_) { + var s = this.latLabelFormatter_(t) + o in this.parallelsLabels_ + ? (this.parallelsLabels_[o].text = s) + : (this.parallelsLabels_[o] = { geom: new qn([]), text: s }) + } + this.parallels_[o++] = a + } + return o + }), + (e.prototype.drawLabels_ = function (t) { + var e = t.frameState.viewState.rotation, + r = t.frameState.extent, + n = xe(r), + i = r + if (e) { + var o = Pe(r), + a = Ee(r), + s = Math.abs(Math.cos(e)), + l = Math.abs(Math.sin(e)), + u = (l * a - s * o) / (l * l - s * s), + c = (l * o - s * a) / (l * l - s * s) + i = [n[0] - u / 2, n[1] - c / 2, n[0] + u / 2, n[1] + c / 2] + } + var h = 0, + p = 0, + f = this.latLabelPosition_ < 0.5, + d = this.projection_.getExtent(), + g = Pe(d) + this.getSource().getWrapX() && + this.projection_.canWrapX() && + !te(d, r) && + ((h = Math.floor((r[0] - d[0]) / g)), + (p = Math.ceil((r[2] - d[2]) / g)), + (f = f !== Math.abs(e) > Math.PI / 2)) + for (var y = Ku(t), m = h; m <= p; ++m) { + var v = this.meridians_.length + this.parallels_.length, + _ = void 0, + b = void 0, + x = void 0, + w = void 0 + if (this.meridiansLabels_) + for (b = 0, x = this.meridiansLabels_.length; b < x; ++b) { + var S = this.meridians_[b] + if (e || 0 !== m) + (E = S.clone()).translate(m * g, 0), + E.rotate(-e, n), + (w = this.getMeridianPoint_(E, i, b)).rotate(e, n) + else w = this.getMeridianPoint_(S, r, b) + ;(_ = this.featurePool_[v++]).setGeometry(w), + _.set('graticule_label', this.meridiansLabels_[b].text), + y.drawFeature(_, this.lonLabelStyle_(_)) + } + if ( + this.parallelsLabels_ && + ((m === h && f) || (m === p && !f)) + ) + for (b = 0, x = this.parallels_.length; b < x; ++b) { + var E + S = this.parallels_[b] + if (e || 0 !== m) + (E = S.clone()).translate(m * g, 0), + E.rotate(-e, n), + (w = this.getParallelPoint_(E, i, b)).rotate(e, n) + else w = this.getParallelPoint_(S, r, b) + ;(_ = this.featurePool_[v++]).setGeometry(w), + _.set('graticule_label', this.parallelsLabels_[b].text), + y.drawFeature(_, this.latLabelStyle_(_)) + } + } + }), + (e.prototype.createGraticule_ = function (t, e, r, n) { + var i = this.getInterval_(r) + if (-1 == i) + return ( + (this.meridians_.length = 0), + (this.parallels_.length = 0), + this.meridiansLabels_ && (this.meridiansLabels_.length = 0), + void ( + this.parallelsLabels_ && (this.parallelsLabels_.length = 0) + ) + ) + var o = !1, + a = this.projection_.getExtent(), + s = Pe(a) + this.getSource().getWrapX() && + this.projection_.canWrapX() && + !te(a, t) && + (Pe(t) >= s ? ((t[0] = a[0]), (t[2] = a[2])) : (o = !0)) + var l = [ + Ne(e[0], this.minX_, this.maxX_), + Ne(e[1], this.minY_, this.maxY_), + ], + u = this.toLonLatTransform_(l) + isNaN(u[1]) && + (u[1] = + Math.abs(this.maxLat_) >= Math.abs(this.minLat_) + ? this.maxLat_ + : this.minLat_) + var c, + h, + p, + f, + d = Ne(u[0], this.minLon_, this.maxLon_), + g = Ne(u[1], this.minLat_, this.maxLat_), + y = this.maxLines_, + m = t + o || + (m = [ + Ne(t[0], this.minX_, this.maxX_), + Ne(t[1], this.minY_, this.maxY_), + Ne(t[2], this.minX_, this.maxX_), + Ne(t[3], this.minY_, this.maxY_), + ]) + var v = Ae(m, this.toLonLatTransform_, void 0, 8), + _ = v[3], + b = v[2], + x = v[1], + w = v[0] + if ( + (o || + (Qt(m, this.bottomLeft_) && + ((w = this.minLon_), (x = this.minLat_)), + Qt(m, this.bottomRight_) && + ((b = this.maxLon_), (x = this.minLat_)), + Qt(m, this.topLeft_) && + ((w = this.minLon_), (_ = this.maxLat_)), + Qt(m, this.topRight_) && + ((b = this.maxLon_), (_ = this.maxLat_)), + (_ = Ne(_, g, this.maxLat_)), + (b = Ne(b, d, this.maxLon_)), + (x = Ne(x, this.minLat_, g)), + (w = Ne(w, this.minLon_, d))), + (f = Ne( + (d = Math.floor(d / i) * i), + this.minLon_, + this.maxLon_, + )), + (h = this.addMeridian_(f, x, _, n, t, 0)), + (c = 0), + o) + ) + for (; (f -= i) >= w && c++ < y; ) + h = this.addMeridian_(f, x, _, n, t, h) + else + for (; f != this.minLon_ && c++ < y; ) + (f = Math.max(f - i, this.minLon_)), + (h = this.addMeridian_(f, x, _, n, t, h)) + if (((f = Ne(d, this.minLon_, this.maxLon_)), (c = 0), o)) + for (; (f += i) <= b && c++ < y; ) + h = this.addMeridian_(f, x, _, n, t, h) + else + for (; f != this.maxLon_ && c++ < y; ) + (f = Math.min(f + i, this.maxLon_)), + (h = this.addMeridian_(f, x, _, n, t, h)) + for ( + this.meridians_.length = h, + this.meridiansLabels_ && (this.meridiansLabels_.length = h), + p = Ne( + (g = Math.floor(g / i) * i), + this.minLat_, + this.maxLat_, + ), + h = this.addParallel_(p, w, b, n, t, 0), + c = 0; + p != this.minLat_ && c++ < y; + + ) + (p = Math.max(p - i, this.minLat_)), + (h = this.addParallel_(p, w, b, n, t, h)) + for ( + p = Ne(g, this.minLat_, this.maxLat_), c = 0; + p != this.maxLat_ && c++ < y; + + ) + (p = Math.min(p + i, this.maxLat_)), + (h = this.addParallel_(p, w, b, n, t, h)) + ;(this.parallels_.length = h), + this.parallelsLabels_ && (this.parallelsLabels_.length = h) + }), + (e.prototype.getInterval_ = function (t) { + for ( + var e = this.projectionCenterLonLat_[0], + r = this.projectionCenterLonLat_[1], + n = -1, + i = Math.pow(this.targetSize_ * t, 2), + o = [], + a = [], + s = 0, + l = this.intervals_.length; + s < l; + ++s + ) { + var u = Ne(this.intervals_[s] / 2, 0, 90), + c = Ne(r, -90 + u, 90 - u) + if ( + ((o[0] = e - u), + (o[1] = c - u), + (a[0] = e + u), + (a[1] = c + u), + this.fromLonLatTransform_(o, o), + this.fromLonLatTransform_(a, a), + Math.pow(a[0] - o[0], 2) + Math.pow(a[1] - o[1], 2) <= i) + ) + break + n = this.intervals_[s] + } + return n + }), + (e.prototype.getMeridian_ = function (t, e, r, n, i) { + var o = My(t, e, r, this.projection_, n), + a = this.meridians_[i] + return ( + a + ? (a.setFlatCoordinates(yt, o), a.changed()) + : ((a = new Py(o, yt)), (this.meridians_[i] = a)), + a + ) + }), + (e.prototype.getMeridianPoint_ = function (t, e, r) { + var n = t.getFlatCoordinates(), + i = 1, + o = n.length - 1 + n[i] > n[o] && ((i = o), (o = 1)) + var a = Math.max(e[1], n[i]), + s = Math.min(e[3], n[o]), + l = Ne( + e[1] + Math.abs(e[1] - e[3]) * this.lonLabelPosition_, + a, + s, + ), + u = [ + n[i - 1] + + ((n[o - 1] - n[i - 1]) * (l - n[i])) / (n[o] - n[i]), + l, + ], + c = this.meridiansLabels_[r].geom + return c.setCoordinates(u), c + }), + (e.prototype.getMeridians = function () { + return this.meridians_ + }), + (e.prototype.getParallel_ = function (t, e, r, n, i) { + var o = Fy(t, e, r, this.projection_, n), + a = this.parallels_[i] + return ( + a + ? (a.setFlatCoordinates(yt, o), a.changed()) + : (a = new Py(o, yt)), + a + ) + }), + (e.prototype.getParallelPoint_ = function (t, e, r) { + var n = t.getFlatCoordinates(), + i = 0, + o = n.length - 2 + n[i] > n[o] && ((i = o), (o = 0)) + var a = Math.max(e[0], n[i]), + s = Math.min(e[2], n[o]), + l = Ne( + e[0] + Math.abs(e[0] - e[2]) * this.latLabelPosition_, + a, + s, + ), + u = [ + l, + n[i + 1] + + ((n[o + 1] - n[i + 1]) * (l - n[i])) / (n[o] - n[i]), + ], + c = this.parallelsLabels_[r].geom + return c.setCoordinates(u), c + }), + (e.prototype.getParallels = function () { + return this.parallels_ + }), + (e.prototype.updateProjectionInfo_ = function (t) { + var e = Gr('EPSG:4326'), + r = t.getWorldExtent() + ;(this.maxLat_ = r[3]), + (this.maxLon_ = r[2]), + (this.minLat_ = r[1]), + (this.minLon_ = r[0]) + var n = Kr(t, e) + if (this.minLon_ < this.maxLon_) this.toLonLatTransform_ = n + else { + var i = this.minLon_ + this.maxLon_ / 2 + ;(this.maxLon_ += 360), + (this.toLonLatTransform_ = function (t, e, r) { + for ( + var o = r || 2, a = n(t, e, o), s = 0, l = a.length; + s < l; + s += o + ) + a[s] < i && (a[s] += 360) + return a + }) + } + this.fromLonLatTransform_ = Kr(e, t) + var o = Ae( + [this.minLon_, this.minLat_, this.maxLon_, this.maxLat_], + this.fromLonLatTransform_, + void 0, + 8, + ) + ;(this.minX_ = o[0]), + (this.maxX_ = o[2]), + (this.minY_ = o[1]), + (this.maxY_ = o[3]), + (this.bottomLeft_ = this.fromLonLatTransform_([ + this.minLon_, + this.minLat_, + ])), + (this.bottomRight_ = this.fromLonLatTransform_([ + this.maxLon_, + this.minLat_, + ])), + (this.topLeft_ = this.fromLonLatTransform_([ + this.minLon_, + this.maxLat_, + ])), + (this.topRight_ = this.fromLonLatTransform_([ + this.maxLon_, + this.maxLat_, + ])), + (this.projectionCenterLonLat_ = this.toLonLatTransform_( + xe(t.getExtent()), + )), + isNaN(this.projectionCenterLonLat_[1]) && + (this.projectionCenterLonLat_[1] = + Math.abs(this.maxLat_) >= Math.abs(this.minLat_) + ? this.maxLat_ + : this.minLat_), + (this.projection_ = t) + }), + e + ) + })(Iy), + Dy = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Gy = 'blur', + zy = 'gradient', + Uy = 'radius', + By = ['#00f', '#0ff', '#0f0', '#ff0', '#f00'] + var Vy = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = O({}, n) + delete i.gradient, + delete i.radius, + delete i.blur, + delete i.weight, + ((r = t.call(this, i) || this).gradient_ = null), + r.addEventListener(it(zy), r.handleGradientChanged_), + r.setGradient(n.gradient ? n.gradient : By), + r.setBlur(void 0 !== n.blur ? n.blur : 15), + r.setRadius(void 0 !== n.radius ? n.radius : 8) + var o = n.weight ? n.weight : 'weight' + return ( + (r.weightFunction_ = + 'string' == typeof o + ? function (t) { + return t.get(o) + } + : o), + r.setRenderOrder(null), + r + ) + } + return ( + Dy(e, t), + (e.prototype.getBlur = function () { + return this.get(Gy) + }), + (e.prototype.getGradient = function () { + return this.get(zy) + }), + (e.prototype.getRadius = function () { + return this.get(Uy) + }), + (e.prototype.handleGradientChanged_ = function () { + this.gradient_ = (function (t) { + for ( + var e = uo(1, 256), + r = e.createLinearGradient(0, 0, 1, 256), + n = 1 / (t.length - 1), + i = 0, + o = t.length; + i < o; + ++i + ) + r.addColorStop(i * n, t[i]) + return (e.fillStyle = r), e.fillRect(0, 0, 1, 256), e.canvas + })(this.getGradient()) + }), + (e.prototype.setBlur = function (t) { + this.set(Gy, t) + }), + (e.prototype.setGradient = function (t) { + this.set(zy, t) + }), + (e.prototype.setRadius = function (t) { + this.set(Uy, t) + }), + (e.prototype.createRenderer = function () { + return new Eg(this, { + className: this.getClassName(), + attributes: [ + { + name: 'weight', + callback: function (t) { + var e = this.weightFunction_(t) + return void 0 !== e ? Ne(e, 0, 1) : 1 + }.bind(this), + }, + ], + vertexShader: + '\n precision mediump float;\n uniform mat4 u_projectionMatrix;\n uniform mat4 u_offsetScaleMatrix;\n uniform float u_size;\n attribute vec2 a_position;\n attribute float a_index;\n attribute float a_weight;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n\n void main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n v_texCoord = vec2(u, v);\n v_weight = a_weight;\n }', + fragmentShader: + '\n precision mediump float;\n uniform float u_blurSlope;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n\n void main(void) {\n vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n gl_FragColor = vec4(alpha, alpha, alpha, alpha);\n }', + hitVertexShader: + '\n precision mediump float;\n uniform mat4 u_projectionMatrix;\n uniform mat4 u_offsetScaleMatrix;\n uniform float u_size;\n attribute vec2 a_position;\n attribute float a_index;\n attribute float a_weight;\n attribute vec4 a_hitColor;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n varying vec4 v_hitColor;\n\n void main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n v_texCoord = vec2(u, v);\n v_hitColor = a_hitColor;\n v_weight = a_weight;\n }', + hitFragmentShader: + '\n precision mediump float;\n uniform float u_blurSlope;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n varying vec4 v_hitColor;\n\n void main(void) {\n vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n if (alpha < 0.05) {\n discard;\n }\n\n gl_FragColor = v_hitColor;\n }', + uniforms: { + u_size: function () { + return 2 * (this.get(Uy) + this.get(Gy)) + }.bind(this), + u_blurSlope: function () { + return this.get(Uy) / Math.max(1, this.get(Gy)) + }.bind(this), + }, + postProcesses: [ + { + fragmentShader: + '\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform sampler2D u_gradientTexture;\n\n varying vec2 v_texCoord;\n\n void main() {\n vec4 color = texture2D(u_image, v_texCoord);\n gl_FragColor.a = color.a;\n gl_FragColor.rgb = texture2D(u_gradientTexture, vec2(0.5, color.a)).rgb;\n gl_FragColor.rgb *= gl_FragColor.a;\n }', + uniforms: { + u_gradientTexture: function () { + return this.gradient_ + }.bind(this), + }, + }, + ], + }) + }), + (e.prototype.renderDeclutter = function () {}), + e + ) + })(Iy), + Yy = (function () { + function t() { + ;(this.dataProjection = null), + (this.defaultFeatureProjection = null) + } + return ( + (t.prototype.getReadOptions = function (t, e) { + var r + if (e) { + var n = e.dataProjection + ? Gr(e.dataProjection) + : this.readProjection(t) + e.extent && + n && + n.getUnits() === St.TILE_PIXELS && + (n = Gr(n)).setWorldExtent(e.extent), + (r = { + dataProjection: n, + featureProjection: e.featureProjection, + }) + } + return this.adaptOptions(r) + }), + (t.prototype.adaptOptions = function (t) { + return O( + { + dataProjection: this.dataProjection, + featureProjection: this.defaultFeatureProjection, + }, + t, + ) + }), + (t.prototype.getType = function () { + return n() + }), + (t.prototype.readFeature = function (t, e) { + return n() + }), + (t.prototype.readFeatures = function (t, e) { + return n() + }), + (t.prototype.readGeometry = function (t, e) { + return n() + }), + (t.prototype.readProjection = function (t) { + return n() + }), + (t.prototype.writeFeature = function (t, e) { + return n() + }), + (t.prototype.writeFeatures = function (t, e) { + return n() + }), + (t.prototype.writeGeometry = function (t, e) { + return n() + }), + t + ) + })() + function Wy(t, e, r) { + var n, + i = r ? Gr(r.featureProjection) : null, + o = r ? Gr(r.dataProjection) : null + if ( + ((n = + i && o && !Xr(i, o) + ? (e ? t.clone() : t).transform(e ? i : o, e ? o : i) + : t), + e && r && void 0 !== r.decimals) + ) { + var a = Math.pow(10, r.decimals) + n === t && (n = t.clone()), + n.applyTransform(function (t) { + for (var e = 0, r = t.length; e < r; ++e) + t[e] = Math.round(t[e] * a) / a + return t + }) + } + return n + } + function qy(t, e) { + var r = e ? Gr(e.featureProjection) : null, + n = e ? Gr(e.dataProjection) : null + return r && n && !Xr(r, n) ? $r(t, n, r) : t + } + var Xy = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Zy = (function (t) { + function e(e, r, n) { + var i = t.call(this) || this + if ( + ((i.ends_ = []), + (i.maxDelta_ = -1), + (i.maxDeltaRevision_ = -1), + Array.isArray(e[0])) + ) + i.setCoordinates(e, r) + else if (void 0 !== r && n) + i.setFlatCoordinates(r, e), (i.ends_ = n) + else { + for ( + var o = i.getLayout(), + a = e, + s = [], + l = [], + u = 0, + c = a.length; + u < c; + ++u + ) { + var h = a[u] + 0 === u && (o = h.getLayout()), + v(s, h.getFlatCoordinates()), + l.push(s.length) + } + i.setFlatCoordinates(o, s), (i.ends_ = l) + } + return i + } + return ( + Xy(e, t), + (e.prototype.appendLineString = function (t) { + this.flatCoordinates + ? v(this.flatCoordinates, t.getFlatCoordinates().slice()) + : (this.flatCoordinates = t.getFlatCoordinates().slice()), + this.ends_.push(this.flatCoordinates.length), + this.changed() + }), + (e.prototype.clone = function () { + var t = new e( + this.flatCoordinates.slice(), + this.layout, + this.ends_.slice(), + ) + return t.applyProperties(this), t + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + return n < Jt(this.getExtent(), t, e) + ? n + : (this.maxDeltaRevision_ != this.getRevision() && + ((this.maxDelta_ = Math.sqrt( + xn(this.flatCoordinates, 0, this.ends_, this.stride, 0), + )), + (this.maxDeltaRevision_ = this.getRevision())), + En( + this.flatCoordinates, + 0, + this.ends_, + this.stride, + this.maxDelta_, + !1, + t, + e, + r, + n, + )) + }), + (e.prototype.getCoordinateAtM = function (t, e, r) { + if ( + (this.layout != vt && this.layout != _t) || + 0 === this.flatCoordinates.length + ) + return null + var n = void 0 !== e && e, + i = void 0 !== r && r + return wy( + this.flatCoordinates, + 0, + this.ends_, + this.stride, + t, + n, + i, + ) + }), + (e.prototype.getCoordinates = function () { + return Dn(this.flatCoordinates, 0, this.ends_, this.stride) + }), + (e.prototype.getEnds = function () { + return this.ends_ + }), + (e.prototype.getLineString = function (t) { + return t < 0 || this.ends_.length <= t + ? null + : new Py( + this.flatCoordinates.slice( + 0 === t ? 0 : this.ends_[t - 1], + this.ends_[t], + ), + this.layout, + ) + }), + (e.prototype.getLineStrings = function () { + for ( + var t = this.flatCoordinates, + e = this.ends_, + r = this.layout, + n = [], + i = 0, + o = 0, + a = e.length; + o < a; + ++o + ) { + var s = e[o], + l = new Py(t.slice(i, s), r) + n.push(l), (i = s) + } + return n + }), + (e.prototype.getFlatMidpoints = function () { + for ( + var t = [], + e = this.flatCoordinates, + r = 0, + n = this.ends_, + i = this.stride, + o = 0, + a = n.length; + o < a; + ++o + ) { + var s = n[o] + v(t, by(e, r, s, i, 0.5)), (r = s) + } + return t + }), + (e.prototype.getSimplifiedGeometryInternal = function (t) { + var r = [], + n = [] + return ( + (r.length = Ln( + this.flatCoordinates, + 0, + this.ends_, + this.stride, + t, + r, + 0, + n, + )), + new e(r, yt, n) + ) + }), + (e.prototype.getType = function () { + return bt.MULTI_LINE_STRING + }), + (e.prototype.intersectsExtent = function (t) { + return ei(this.flatCoordinates, 0, this.ends_, this.stride, t) + }), + (e.prototype.setCoordinates = function (t, e) { + this.setLayout(e, t, 2), + this.flatCoordinates || (this.flatCoordinates = []) + var r = Pn(this.flatCoordinates, 0, t, this.stride, this.ends_) + ;(this.flatCoordinates.length = + 0 === r.length ? 0 : r[r.length - 1]), + this.changed() + }), + e + ) + })(vn), + Ky = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Hy = (function (t) { + function e(e, r) { + var n = t.call(this) || this + return ( + r && !Array.isArray(e[0]) + ? n.setFlatCoordinates(r, e) + : n.setCoordinates(e, r), + n + ) + } + return ( + Ky(e, t), + (e.prototype.appendPoint = function (t) { + this.flatCoordinates + ? v(this.flatCoordinates, t.getFlatCoordinates()) + : (this.flatCoordinates = t.getFlatCoordinates().slice()), + this.changed() + }), + (e.prototype.clone = function () { + var t = new e(this.flatCoordinates.slice(), this.layout) + return t.applyProperties(this), t + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + if (n < Jt(this.getExtent(), t, e)) return n + for ( + var i = this.flatCoordinates, + o = this.stride, + a = 0, + s = i.length; + a < s; + a += o + ) { + var l = Ue(t, e, i[a], i[a + 1]) + if (l < n) { + n = l + for (var u = 0; u < o; ++u) r[u] = i[a + u] + r.length = o + } + } + return n + }), + (e.prototype.getCoordinates = function () { + return Nn( + this.flatCoordinates, + 0, + this.flatCoordinates.length, + this.stride, + ) + }), + (e.prototype.getPoint = function (t) { + var e = this.flatCoordinates + ? this.flatCoordinates.length / this.stride + : 0 + return t < 0 || e <= t + ? null + : new qn( + this.flatCoordinates.slice( + t * this.stride, + (t + 1) * this.stride, + ), + this.layout, + ) + }), + (e.prototype.getPoints = function () { + for ( + var t = this.flatCoordinates, + e = this.layout, + r = this.stride, + n = [], + i = 0, + o = t.length; + i < o; + i += r + ) { + var a = new qn(t.slice(i, i + r), e) + n.push(a) + } + return n + }), + (e.prototype.getType = function () { + return bt.MULTI_POINT + }), + (e.prototype.intersectsExtent = function (t) { + for ( + var e = this.flatCoordinates, + r = this.stride, + n = 0, + i = e.length; + n < i; + n += r + ) { + if (ee(t, e[n], e[n + 1])) return !0 + } + return !1 + }), + (e.prototype.setCoordinates = function (t, e) { + this.setLayout(e, t, 1), + this.flatCoordinates || (this.flatCoordinates = []), + (this.flatCoordinates.length = On( + this.flatCoordinates, + 0, + t, + this.stride, + )), + this.changed() + }), + e + ) + })(vn), + $y = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Jy = (function (t) { + function e(e, r, n) { + var i = t.call(this) || this + if ( + ((i.endss_ = []), + (i.flatInteriorPointsRevision_ = -1), + (i.flatInteriorPoints_ = null), + (i.maxDelta_ = -1), + (i.maxDeltaRevision_ = -1), + (i.orientedRevision_ = -1), + (i.orientedFlatCoordinates_ = null), + !n && !Array.isArray(e[0])) + ) { + for ( + var o = i.getLayout(), + a = e, + s = [], + l = [], + u = 0, + c = a.length; + u < c; + ++u + ) { + var h = a[u] + 0 === u && (o = h.getLayout()) + for ( + var p = s.length, f = h.getEnds(), d = 0, g = f.length; + d < g; + ++d + ) + f[d] += p + v(s, h.getFlatCoordinates()), l.push(f) + } + ;(r = o), (e = s), (n = l) + } + return ( + void 0 !== r && n + ? (i.setFlatCoordinates(r, e), (i.endss_ = n)) + : i.setCoordinates(e, r), + i + ) + } + return ( + $y(e, t), + (e.prototype.appendPolygon = function (t) { + var e + if (this.flatCoordinates) { + var r = this.flatCoordinates.length + v(this.flatCoordinates, t.getFlatCoordinates()) + for ( + var n = 0, i = (e = t.getEnds().slice()).length; + n < i; + ++n + ) + e[n] += r + } else + (this.flatCoordinates = t.getFlatCoordinates().slice()), + (e = t.getEnds().slice()), + this.endss_.push() + this.endss_.push(e), this.changed() + }), + (e.prototype.clone = function () { + for ( + var t = this.endss_.length, r = new Array(t), n = 0; + n < t; + ++n + ) + r[n] = this.endss_[n].slice() + var i = new e(this.flatCoordinates.slice(), this.layout, r) + return i.applyProperties(this), i + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + return n < Jt(this.getExtent(), t, e) + ? n + : (this.maxDeltaRevision_ != this.getRevision() && + ((this.maxDelta_ = Math.sqrt( + wn(this.flatCoordinates, 0, this.endss_, this.stride, 0), + )), + (this.maxDeltaRevision_ = this.getRevision())), + Tn( + this.getOrientedFlatCoordinates(), + 0, + this.endss_, + this.stride, + this.maxDelta_, + !0, + t, + e, + r, + n, + )) + }), + (e.prototype.containsXY = function (t, e) { + return Hn( + this.getOrientedFlatCoordinates(), + 0, + this.endss_, + this.stride, + t, + e, + ) + }), + (e.prototype.getArea = function () { + return Bn( + this.getOrientedFlatCoordinates(), + 0, + this.endss_, + this.stride, + ) + }), + (e.prototype.getCoordinates = function (t) { + var e + return ( + void 0 !== t + ? ci( + (e = this.getOrientedFlatCoordinates().slice()), + 0, + this.endss_, + this.stride, + t, + ) + : (e = this.flatCoordinates), + Gn(e, 0, this.endss_, this.stride) + ) + }), + (e.prototype.getEndss = function () { + return this.endss_ + }), + (e.prototype.getFlatInteriorPoints = function () { + if (this.flatInteriorPointsRevision_ != this.getRevision()) { + var t = Sy(this.flatCoordinates, 0, this.endss_, this.stride) + ;(this.flatInteriorPoints_ = Jn( + this.getOrientedFlatCoordinates(), + 0, + this.endss_, + this.stride, + t, + )), + (this.flatInteriorPointsRevision_ = this.getRevision()) + } + return this.flatInteriorPoints_ + }), + (e.prototype.getInteriorPoints = function () { + return new Hy(this.getFlatInteriorPoints().slice(), vt) + }), + (e.prototype.getOrientedFlatCoordinates = function () { + if (this.orientedRevision_ != this.getRevision()) { + var t = this.flatCoordinates + li(t, 0, this.endss_, this.stride) + ? (this.orientedFlatCoordinates_ = t) + : ((this.orientedFlatCoordinates_ = t.slice()), + (this.orientedFlatCoordinates_.length = ci( + this.orientedFlatCoordinates_, + 0, + this.endss_, + this.stride, + ))), + (this.orientedRevision_ = this.getRevision()) + } + return this.orientedFlatCoordinates_ + }), + (e.prototype.getSimplifiedGeometryInternal = function (t) { + var r = [], + n = [] + return ( + (r.length = jn( + this.flatCoordinates, + 0, + this.endss_, + this.stride, + Math.sqrt(t), + r, + 0, + n, + )), + new e(r, yt, n) + ) + }), + (e.prototype.getPolygon = function (t) { + if (t < 0 || this.endss_.length <= t) return null + var e + if (0 === t) e = 0 + else { + var r = this.endss_[t - 1] + e = r[r.length - 1] + } + var n = this.endss_[t].slice(), + i = n[n.length - 1] + if (0 !== e) for (var o = 0, a = n.length; o < a; ++o) n[o] -= e + return new fi(this.flatCoordinates.slice(e, i), this.layout, n) + }), + (e.prototype.getPolygons = function () { + for ( + var t = this.layout, + e = this.flatCoordinates, + r = this.endss_, + n = [], + i = 0, + o = 0, + a = r.length; + o < a; + ++o + ) { + var s = r[o].slice(), + l = s[s.length - 1] + if (0 !== i) for (var u = 0, c = s.length; u < c; ++u) s[u] -= i + var h = new fi(e.slice(i, l), t, s) + n.push(h), (i = l) + } + return n + }), + (e.prototype.getType = function () { + return bt.MULTI_POLYGON + }), + (e.prototype.intersectsExtent = function (t) { + return ii( + this.getOrientedFlatCoordinates(), + 0, + this.endss_, + this.stride, + t, + ) + }), + (e.prototype.setCoordinates = function (t, e) { + this.setLayout(e, t, 3), + this.flatCoordinates || (this.flatCoordinates = []) + var r = Rn(this.flatCoordinates, 0, t, this.stride, this.endss_) + if (0 === r.length) this.flatCoordinates.length = 0 + else { + var n = r[r.length - 1] + this.flatCoordinates.length = + 0 === n.length ? 0 : n[n.length - 1] + } + this.changed() + }), + e + ) + })(vn), + Qy = r(5), + tm = r.n(Qy), + em = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function rm(t, e, r) { + if (3 === t) { + var n = { keys: [], values: [], features: [] }, + i = r.readVarint() + r.pos + r.readFields(nm, n, i), + (n.length = n.features.length), + n.length && (e[n.name] = n) + } + } + function nm(t, e, r) { + if (15 === t) e.version = r.readVarint() + else if (1 === t) e.name = r.readString() + else if (5 === t) e.extent = r.readVarint() + else if (2 === t) e.features.push(r.pos) + else if (3 === t) e.keys.push(r.readString()) + else if (4 === t) { + for (var n = null, i = r.readVarint() + r.pos; r.pos < i; ) + n = + 1 === (t = r.readVarint() >> 3) + ? r.readString() + : 2 === t + ? r.readFloat() + : 3 === t + ? r.readDouble() + : 4 === t + ? r.readVarint64() + : 5 === t + ? r.readVarint() + : 6 === t + ? r.readSVarint() + : 7 === t + ? r.readBoolean() + : null + e.values.push(n) + } + } + function im(t, e, r) { + if (1 == t) e.id = r.readVarint() + else if (2 == t) + for (var n = r.readVarint() + r.pos; r.pos < n; ) { + var i = e.layer.keys[r.readVarint()], + o = e.layer.values[r.readVarint()] + e.properties[i] = o + } + else 3 == t ? (e.type = r.readVarint()) : 4 == t && (e.geometry = r.pos) + } + function om(t, e, r) { + t.pos = e.features[r] + var n = t.readVarint() + t.pos, + i = { layer: e, type: 0, properties: {} } + return t.readFields(im, i, n), i + } + var am = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.dataProjection = new je({ code: '', units: St.TILE_PIXELS })), + (r.featureClass_ = n.featureClass ? n.featureClass : Cy), + (r.geometryName_ = n.geometryName), + (r.layerName_ = n.layerName ? n.layerName : 'layer'), + (r.layers_ = n.layers ? n.layers : null), + (r.idProperty_ = n.idProperty), + r + ) + } + return ( + em(e, t), + (e.prototype.readRawGeometry_ = function (t, e, r, n) { + t.pos = e.geometry + for ( + var i = t.readVarint() + t.pos, + o = 1, + a = 0, + s = 0, + l = 0, + u = 0, + c = 0; + t.pos < i; + + ) { + if (!a) { + var h = t.readVarint() + ;(o = 7 & h), (a = h >> 3) + } + a--, + 1 === o || 2 === o + ? ((s += t.readSVarint()), + (l += t.readSVarint()), + 1 === o && u > c && (n.push(u), (c = u)), + r.push(s, l), + (u += 2)) + : 7 === o + ? u > c && (r.push(r[c], r[c + 1]), (u += 2)) + : pt(!1, 59) + } + u > c && (n.push(u), (c = u)) + }), + (e.prototype.createFeature_ = function (t, e, r) { + var n, + i = e.type + if (0 === i) return null + var o, + a = e.properties + this.idProperty_ + ? ((o = a[this.idProperty_]), delete a[this.idProperty_]) + : (o = e.id), + (a[this.layerName_] = e.layer.name) + var s = [], + l = [] + this.readRawGeometry_(t, e, s, l) + var u = (function (t, e) { + var r + 1 === t + ? (r = 1 === e ? bt.POINT : bt.MULTI_POINT) + : 2 === t + ? (r = 1 === e ? bt.LINE_STRING : bt.MULTI_LINE_STRING) + : 3 === t && (r = bt.POLYGON) + return r + })(i, l.length) + if (this.featureClass_ === Cy) + (n = new this.featureClass_(u, s, l, a, o)).transform( + r.dataProjection, + ) + else { + var c = void 0 + if (u == bt.POLYGON) { + for ( + var h = [], p = 0, f = 0, d = 0, g = l.length; + d < g; + ++d + ) { + var y = l[d] + if (ai(s, p, y, 2)) { + if (0 === h.length) continue + h[h.length - 1].push(l[f]) + } else h.push(l.slice(f, d + 1)) + ;(f = d + 1), (p = y) + } + c = h.length > 1 ? new Jy(s, yt, h) : new fi(s, yt, l) + } else + c = + u === bt.POINT + ? new qn(s, yt) + : u === bt.LINE_STRING + ? new Py(s, yt) + : u === bt.POLYGON + ? new fi(s, yt, l) + : u === bt.MULTI_POINT + ? new Hy(s, yt) + : u === bt.MULTI_LINE_STRING + ? new Zy(s, yt, l) + : null + ;(n = new (0, this.featureClass_)()), + this.geometryName_ && n.setGeometryName(this.geometryName_) + var m = Wy(c, !1, r) + n.setGeometry(m), n.setId(o), n.setProperties(a, !0) + } + return n + }), + (e.prototype.getType = function () { + return Cu + }), + (e.prototype.readFeatures = function (t, e) { + var r = this.layers_, + n = this.adaptOptions(e), + i = Gr(n.dataProjection) + i.setWorldExtent(n.extent), (n.dataProjection = i) + var o = new tm.a(t), + a = o.readFields(rm, {}), + s = [] + for (var l in a) + if (!r || -1 != r.indexOf(l)) { + var u = a[l], + c = u ? [0, 0, u.extent, u.extent] : null + i.setExtent(c) + for (var h = 0, p = u.length; h < p; ++h) { + var f = om(o, u, h) + s.push(this.createFeature_(o, f, n)) + } + } + return s + }), + (e.prototype.readProjection = function (t) { + return this.dataProjection + }), + (e.prototype.setLayers = function (t) { + this.layers_ = t + }), + e + ) + })(Yy), + sm = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + lm = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = O({}, n) + delete i.preload, + delete i.useInterimTilesOnError, + (r = t.call(this, i) || this) + var o = n.renderMode || dy + return ( + pt(null == o || o == fy || o == dy || o == gy, 28), + (r.renderMode_ = o), + r.setPreload(n.preload ? n.preload : 0), + r.setUseInterimTilesOnError( + void 0 === n.useInterimTilesOnError || n.useInterimTilesOnError, + ), + r + ) + } + return ( + sm(e, t), + (e.prototype.createRenderer = function () { + return new _y(this) + }), + (e.prototype.getFeatures = function (e) { + return t.prototype.getFeatures.call(this, e) + }), + (e.prototype.getRenderMode = function () { + return this.renderMode_ + }), + (e.prototype.getPreload = function () { + return this.get(gd) + }), + (e.prototype.getUseInterimTilesOnError = function () { + return this.get(yd) + }), + (e.prototype.setPreload = function (t) { + this.set(gd, t) + }), + (e.prototype.setUseInterimTilesOnError = function (t) { + this.set(yd, t) + }), + e + ) + })(wg), + um = r(2), + cm = r.n(um), + hm = r(0) + 'function' == typeof Object.assign && Object.assign + function pm(t) { + return (t * Math.PI) / 180 + } + var fm = (function () { + for (var t = [], e = 78271.51696402048; t.length <= 24; e /= 2) + t.push(e) + return t + })() + function dm(t, e) { + if ( + 'undefined' != typeof WorkerGlobalScope && + self instanceof WorkerGlobalScope && + 'undefined' != typeof OffscreenCanvas + ) + return new OffscreenCanvas(t, e) + var r = document.createElement('canvas') + return (r.width = t), (r.height = e), r + } + var gm, + ym = Array(256).join(' ') + function mm(t, e) { + if (e >= 0.05) { + for ( + var r = '', + n = t.split('\n'), + i = ym.slice(0, Math.round(e / 0.1)), + o = 0, + a = n.length; + o < a; + ++o + ) + o > 0 && (r += '\n'), (r += n[o].split('').join(i)) + return r + } + return t + } + function vm() { + return gm || (gm = dm(1, 1).getContext('2d')), gm + } + function _m(t, e) { + return vm().measureText(t).width + (t.length - 1) * e + } + var bm = {} + ga && + Z(ga, k, function () { + bm = {} + }) + var xm, + wm, + Sm = hm.e.isFunction, + Em = hm.e.convertFunction, + Tm = hm.c.isExpression, + Cm = hm.c.createPropertyExpression, + Om = { + Point: 1, + MultiPoint: 1, + LineString: 2, + MultiLineString: 2, + Polygon: 3, + MultiPolygon: 3, + }, + Pm = { + center: [0.5, 0.5], + left: [0, 0.5], + right: [1, 0.5], + top: [0.5, 0], + bottom: [0.5, 1], + 'top-left': [0, 0], + 'top-right': [1, 0], + 'bottom-left': [0, 1], + 'bottom-right': [1, 1], + }, + Rm = {}, + Im = { zoom: 0 }, + Lm = {} + function Mm(t, e, r, n, i) { + var o = t.id + Lm[o] || (Lm[o] = {}) + var a = Lm[o] + if (!a[r]) { + var s = (t[e] || Rm)[r], + l = hm.f[e + '_' + t.type][r] + void 0 === s && (s = l.default) + var u = Tm(s) + if ((!u && Sm(s) && ((s = Em(s, l)), (u = !0)), u)) { + var c = (function (t, e) { + var r = Cm(t, e) + if ('error' === r.result) + throw new Error( + r.value + .map(function (t) { + return t.key + ': ' + t.message + }) + .join(', '), + ) + return r.value + })(s, l) + a[r] = c.evaluate.bind(c) + } else + 'color' == l.type && (s = hm.a.parse(s)), + (a[r] = function () { + return s + }) + } + return (Im.zoom = n), a[r](Im, i) + } + var Fm = {} + function Am(t, e) { + if (t) { + if (0 === t.a || 0 === e) return + var r = t.a + return ( + (e = void 0 === e ? 1 : e), + 'rgba(' + + Math.round((255 * t.r) / r) + + ',' + + Math.round((255 * t.g) / r) + + ',' + + Math.round((255 * t.b) / r) + + ',' + + r * e + + ')' + ) + } + return t + } + var km = /^([^]*)\{(.*)\}([^]*)$/ + function jm(t, e) { + var r + do { + if ((r = t.match(km))) { + var n = e[r[2]] || '' + t = r[1] + n + r[3] + } + } while (r) + return t + } + var Nm = !1 + var Dm = function (t, e, r, n, i, o, a) { + if ( + (void 0 === n && (n = fm), + 'string' == typeof e && (e = JSON.parse(e)), + 8 != e.version) + ) + throw new Error('glStyle version 8 required.') + var s, l + if (o) + if ('undefined' != typeof Image) { + var u = new Image() + ;(u.crossOrigin = 'anonymous'), + (u.onload = function () { + ;(s = u), + (l = [u.width, u.height]), + t.changed(), + (u.onload = null) + }), + (u.src = o) + } else if ( + 'undefined' != typeof WorkerGlobalScope && + self instanceof WorkerGlobalScope + ) { + var c = self + c.postMessage({ action: 'loadImage', src: o }), + c.addEventListener('message', function (t) { + 'imageLoaded' === t.data.action && + t.data.src === o && + ((s = t.data.image), (l = [s.width, s.height])) + }) + } + for ( + var h, + p = Object(hm.b)(e.layers), + f = {}, + d = [], + g = 0, + y = p.length; + g < y; + ++g + ) { + var m = p[g], + v = m.id + if ( + ('string' == typeof r && m.source == r) || + -1 !== r.indexOf(v) + ) { + var _ = m['source-layer'] + if (!h) { + h = m.source + var b = e.sources[h] + if (!b) throw new Error('Source "' + h + '" is not defined') + var x = b.type + if ('vector' !== x && 'geojson' !== x) + throw new Error( + 'Source "' + + h + + '" is not of type "vector" or "geojson", but "' + + x + + '"', + ) + } + var w = f[_] + w || (w = f[_] = []), w.push({ layer: m, index: g }), d.push(v) + } + delete Lm[v], delete Fm[v] + } + var S = new gp(), + E = new ep(), + T = {}, + C = {}, + O = [], + P = function (t, e) { + var r = t.getProperties(), + o = f[r.layer] + if (o) { + var u = n.indexOf(e) + ;-1 == u && + (u = (function (t, e) { + for (var r = 0, n = e.length; r < n; ++r) { + if (e[r] < t && r + 1 < n) { + var i = e[r] / e[r + 1] + return r + Math.log(e[r] / t) / Math.log(i) + } + } + return n - 1 + })(e, n)) + for ( + var c, + h = Om[t.getGeometry().getType()], + p = { properties: r, type: h }, + d = -1, + g = function (n, f) { + var g = o[n], + y = g.layer, + m = y.id, + v = y.layout || Rm, + _ = y.paint || Rm + if ( + 'none' === v.visibility || + (('minzoom' in y) && u < y.minzoom) || + (('maxzoom' in y) && u >= y.maxzoom) + ) + return 'continue' + var b = y.filter + if ( + !b || + (function (t, e, r, n) { + return ( + (t in Fm) || (Fm[t] = Object(hm.d)(e).filter), + (Im.zoom = n), + Fm[t](Im, r) + ) + })(m, b, p, u) + ) { + c = y + var x = void 0, + w = void 0, + P = void 0, + R = void 0, + I = void 0, + L = void 0, + M = g.index + if ( + 3 == h && + ('fill' == y.type || 'fill-extrusion' == y.type) + ) + if ( + ((w = Mm(y, 'paint', y.type + '-opacity', u, p)), + (y.type + '-pattern' in _)) + ) { + var F = Mm(y, 'paint', y.type + '-pattern', u, p) + if (F) { + var A = + 'string' == typeof F ? jm(F, r) : F.toString() + if (s && i && i[A]) { + ++d, + ((L = O[d]) && + L.getFill() && + !L.getStroke() && + !L.getText()) || + (L = O[d] = new wp({ fill: new ep() })), + (P = L.getFill()), + L.setZIndex(M) + var k = C[(ut = A + '.' + w)] + if (!k) + ((pt = (ht = dm( + (ct = i[A]).width, + ct.height, + )).getContext('2d')).globalAlpha = w), + pt.drawImage( + s, + ct.x, + ct.y, + ct.width, + ct.height, + 0, + 0, + ct.width, + ct.height, + ), + (k = pt.createPattern(ht, 'repeat')), + (C[ut] = k) + P.setColor(k) + } + } + } else + (x = Am( + Mm(y, 'paint', y.type + '-color', u, p), + w, + )) && + ((y.type + '-outline-color' in _) && + (I = Am( + Mm( + y, + 'paint', + y.type + '-outline-color', + u, + p, + ), + w, + )), + I || (I = x), + ++d, + ((L = O[d]) && + L.getFill() && + L.getStroke() && + !L.getText()) || + (L = O[d] = + new wp({ fill: new ep(), stroke: new gp() })), + (P = L.getFill()).setColor(x), + (R = L.getStroke()).setColor(I), + R.setWidth(1), + L.setZIndex(M)) + if (1 != h && 'line' == y.type) { + x = + !('line-pattern' in _) && ('line-color' in _) + ? Am( + Mm(y, 'paint', 'line-color', u, p), + Mm(y, 'paint', 'line-opacity', u, p), + ) + : void 0 + var j = Mm(y, 'paint', 'line-width', u, p) + x && + j > 0 && + (++d, + ((L = O[d]) && + L.getStroke() && + !L.getFill() && + !L.getText()) || + (L = O[d] = new wp({ stroke: new gp() })), + (R = L.getStroke()).setLineCap( + Mm(y, 'layout', 'line-cap', u, p), + ), + R.setLineJoin(Mm(y, 'layout', 'line-join', u, p)), + R.setMiterLimit( + Mm(y, 'layout', 'line-miter-limit', u, p), + ), + R.setColor(x), + R.setWidth(j), + R.setLineDash( + _['line-dasharray'] + ? Mm(y, 'paint', 'line-dasharray', u, p).map( + function (t) { + return t * j + }, + ) + : null, + ), + L.setZIndex(M)) + } + var N = !1, + D = null, + G = 0, + z = void 0, + U = void 0, + B = void 0 + if ((1 == h || 2 == h) && ('icon-image' in v)) { + var V = Mm(y, 'layout', 'icon-image', u, p) + if (V) { + z = 'string' == typeof V ? jm(V, r) : V.toString() + var Y = void 0 + if (s && i && i[z]) { + var W = Mm( + y, + 'layout', + 'icon-rotation-alignment', + u, + p, + ) + if (2 == h) { + var q = t.getGeometry() + if (q.getFlatMidpoint || q.getFlatMidpoints) { + var X = q.getExtent() + if ( + Math.sqrt( + Math.max( + Math.pow((X[2] - X[0]) / e, 2), + Math.pow((X[3] - X[1]) / e, 2), + ), + ) > 150 + ) { + var Z = + 'MultiLineString' === q.getType() + ? q.getFlatMidpoints() + : q.getFlatMidpoint() + if ( + (wm || + (wm = new Cy( + 'Point', + (xm = [NaN, NaN]), + [], + {}, + null, + )), + (Y = wm), + (xm[0] = Z[0]), + (xm[1] = Z[1]), + 'line' === + (Mt = Mm( + y, + 'layout', + 'symbol-placement', + u, + p, + )) && 'map' === W) + ) + for ( + var K = q.getStride(), + H = q.getFlatCoordinates(), + $ = 0, + J = H.length - K; + $ < J; + $ += K + ) { + var Q = H[$], + tt = H[$ + 1], + et = H[$ + K], + rt = H[$ + K + 1], + nt = Math.min(Q, et), + it = Math.min(tt, rt), + ot = Math.max(Q, et), + at = Math.max(tt, rt) + if ( + Z[0] >= nt && + Z[0] <= ot && + Z[1] >= it && + Z[1] <= at + ) { + G = Math.atan2(tt - rt, et - Q) + break + } + } + } + } + } + if (2 !== h || Y) { + ++d, + ((L = O[d]) && + L.getImage() && + !L.getFill() && + !L.getStroke()) || + (L = O[d] = new wp()), + L.setGeometry(Y) + var st = Mm(y, 'layout', 'icon-size', u, p), + lt = + void 0 !== _['icon-color'] + ? Mm(y, 'paint', 'icon-color', u, p) + : null, + ut = z + '.' + st + if ( + (null !== lt && (ut += '.' + lt), + !(U = T[ut])) + ) { + var ct = i[z] + if (null !== lt) { + var ht, pt + ;(pt = (ht = dm( + ct.width, + ct.height, + )).getContext('2d')).drawImage( + s, + ct.x, + ct.y, + ct.width, + ct.height, + 0, + 0, + ct.width, + ct.height, + ) + for ( + var ft = pt.getImageData( + 0, + 0, + ht.width, + ht.height, + ), + dt = 0, + gt = ft.data.length; + dt < gt; + dt += 4 + ) { + var yt = lt.a + 0 !== yt && + ((ft.data[dt] = (255 * lt.r) / yt), + (ft.data[dt + 1] = (255 * lt.g) / yt), + (ft.data[dt + 2] = (255 * lt.b) / yt)), + (ft.data[dt + 3] = yt) + } + pt.putImageData(ft, 0, 0), + (U = T[ut] = + new dp({ + img: ht, + imgSize: [ht.width, ht.height], + scale: st / ct.pixelRatio, + })) + } else + U = T[ut] = new dp({ + img: s, + imgSize: l, + size: [ct.width, ct.height], + offset: [ct.x, ct.y], + rotateWithView: 'map' === W, + scale: st / ct.pixelRatio, + }) + } + U.setRotation( + G + pm(Mm(y, 'layout', 'icon-rotate', u, p)), + ), + U.setOpacity( + Mm(y, 'paint', 'icon-opacity', u, p), + ), + U.setAnchor( + Pm[Mm(y, 'layout', 'icon-anchor', u, p)], + ), + L.setImage(U), + (D = L.getText()), + L.setText(void 0), + L.setZIndex(M), + (N = !0), + (B = !1) + } else B = !0 + } + } + } + if (1 == h && ('circle-radius' in _)) { + ++d, + ((L = O[d]) && + L.getImage() && + !L.getFill() && + !L.getStroke()) || + (L = O[d] = new wp()) + var mt = Mm(y, 'paint', 'circle-radius', u, p), + vt = Am( + Mm(y, 'paint', 'circle-stroke-color', u, p), + Mm(y, 'paint', 'circle-stroke-opacity', u, p), + ), + _t = Am( + Mm(y, 'paint', 'circle-color', u, p), + Mm(y, 'paint', 'circle-opacity', u, p), + ), + bt = Mm(y, 'paint', 'circle-stroke-width', u, p), + xt = mt + '.' + vt + '.' + _t + '.' + bt + ;(U = T[xt]) || + (U = T[xt] = + new tp({ + radius: mt, + stroke: + vt && bt > 0 + ? new gp({ width: bt, color: vt }) + : void 0, + fill: _t ? new ep({ color: _t }) : void 0, + })), + L.setImage(U), + (D = L.getText()), + L.setText(void 0), + L.setGeometry(void 0), + L.setZIndex(M), + (N = !0) + } + var wt = void 0 + if (('text-field' in v)) + (wt = jm( + Mm(y, 'layout', 'text-field', u, p).toString(), + r, + ).trim()), + (w = Mm(y, 'paint', 'text-opacity', u, p)) + if (wt && w && !B) { + N || + (++d, + ((L = O[d]) && + L.getText() && + !L.getFill() && + !L.getStroke()) || + (L = O[d] = new wp()), + L.setImage(void 0), + L.setGeometry(void 0)), + L.getText() || + L.setText(D || new Tp({ padding: [2, 2, 2, 2] })), + (D = L.getText()) + var St = Math.round( + Mm(y, 'layout', 'text-size', u, p), + ), + Et = Mm(y, 'layout', 'text-font', u, p), + Tt = Mm(y, 'layout', 'text-line-height', u, p), + Ct = cm()(a ? a(Et) : Et, St, Tt), + Ot = v['text-transform'] + 'uppercase' == Ot + ? (wt = wt.toUpperCase()) + : 'lowercase' == Ot && (wt = wt.toLowerCase()) + var Pt = Mm(y, 'layout', 'text-max-width', u, p), + Rt = Mm(y, 'layout', 'text-letter-spacing', u, p), + It = + 2 == h + ? mm(wt, Rt) + : (function t(e, r, n, i) { + if (-1 !== e.indexOf('\n')) { + for ( + var o = e.split('\n'), + a = [], + s = 0, + l = o.length; + s < l; + ++s + ) + a.push(t(o[s], r, n, i)) + return a.join('\n') + } + var u = n + ',' + r + ',' + e + ',' + i, + c = bm[u] + if (!c) { + var h = e.split(' ') + if (h.length > 1) { + var p = vm() + p.font = r + var f = p.measureText('M').width * n, + d = '' + for ( + a = [], s = 0, l = h.length; + s < l; + ++s + ) { + var g = h[s], + y = d + (d ? ' ' : '') + g + _m(y, i) <= f + ? (d = y) + : (d && a.push(d), (d = g)) + } + d && a.push(d) + for ( + s = 0, l = a.length; + s < l && l > 1; + ++s + ) { + var m = a[s] + if (_m(m, i) < 0.35 * f) { + var v = + s > 0 ? _m(a[s - 1], i) : 1 / 0, + _ = + s < l - 1 + ? _m(a[s + 1], i) + : 1 / 0 + a.splice(s, 1), + (l -= 1), + v < _ + ? ((a[s - 1] += ' ' + m), + (s -= 1)) + : (a[s] = m + ' ' + a[s]) + } + } + for ( + s = 0, l = a.length - 1; + s < l; + ++s + ) { + var b = a[s], + x = a[s + 1] + if ( + _m(b, i) > 0.7 * f && + _m(x, i) < 0.6 * f + ) { + var w = b.split(' '), + S = w.pop() + _m(S, i) < 0.2 * f && + ((a[s] = w.join(' ')), + (a[s + 1] = S + ' ' + x)), + (l -= 1) + } + } + c = a.join('\n') + } else c = e + ;(c = mm(c, i)), (bm[u] = c) + } + return c + })(wt, Ct, Pt, Rt) + D.setText(It), + D.setFont(Ct), + D.setRotation( + pm(Mm(y, 'layout', 'text-rotate', u, p)), + ) + var Lt = Mm(y, 'layout', 'text-anchor', u, p), + Mt = + N || 1 == h + ? 'point' + : Mm(y, 'layout', 'symbol-placement', u, p) + D.setPlacement(Mt) + var Ft = Mm(y, 'paint', 'text-halo-width', u, p), + At = Mm(y, 'layout', 'text-offset', u, p), + kt = Mm(y, 'paint', 'text-translate', u, p), + jt = 0, + Nt = 0 + if ('point' == Mt) { + var Dt = 'center' + ;-1 !== Lt.indexOf('left') + ? ((Dt = 'left'), (Nt = Ft)) + : -1 !== Lt.indexOf('right') && + ((Dt = 'right'), (Nt = -Ft)), + D.setTextAlign(Dt) + var Gt = Mm( + y, + 'layout', + 'text-rotation-alignment', + u, + p, + ) + D.setRotateWithView('map' == Gt) + } else + D.setMaxAngle( + (pm(Mm(y, 'layout', 'text-max-angle', u, p)) * + wt.length) / + It.length, + ), + D.setTextAlign(), + D.setRotateWithView(!1) + var zt = 'middle' + 0 == Lt.indexOf('bottom') + ? ((zt = 'bottom'), + (jt = -Ft - 0.5 * (Tt - 1) * St)) + : 0 == Lt.indexOf('top') && + ((zt = 'top'), (jt = Ft + 0.5 * (Tt - 1) * St)), + D.setTextBaseline(zt), + D.setOffsetX(At[0] * St + Nt + kt[0]), + D.setOffsetY(At[1] * St + jt + kt[1]), + E.setColor( + Am(Mm(y, 'paint', 'text-color', u, p), w), + ), + D.setFill(E) + var Ut = Am( + Mm(y, 'paint', 'text-halo-color', u, p), + w, + ) + if (Ut) { + S.setColor(Ut), (Ft *= 2) + var Bt = 0.5 * St + S.setWidth(Ft <= Bt ? Ft : Bt), D.setStroke(S) + } else D.setStroke(void 0) + var Vt = Mm(y, 'layout', 'text-padding', u, p), + Yt = D.getPadding() + Vt !== Yt[0] && (Yt[0] = Yt[1] = Yt[2] = Yt[3] = Vt), + L.setZIndex(M) + } + } + }, + y = 0, + m = o.length; + y < m; + ++y + ) + g(y) + return d > -1 + ? ((O.length = d + 1), + Nm && + ('function' == typeof t.set + ? t.set('mapbox-layer', c) + : (t.getProperties()['mapbox-layer'] = c)), + O) + : void 0 + } + } + return ( + t.setStyle(P), + t.set('mapbox-source', h), + t.set('mapbox-layers', d), + P + ) + }, + Gm = r(6), + zm = r.n(Gm), + Um = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Bm(t) { + for (var e = [], r = 0, n = t.length; r < n; ++r) e.push(t[r].clone()) + return e + } + var Vm = (function (t) { + function e(e) { + var r = t.call(this) || this + return ( + (r.geometries_ = e || null), + (r.changeEventsKeys_ = []), + r.listenGeometriesChange_(), + r + ) + } + return ( + Um(e, t), + (e.prototype.unlistenGeometriesChange_ = function () { + this.changeEventsKeys_.forEach(H), + (this.changeEventsKeys_.length = 0) + }), + (e.prototype.listenGeometriesChange_ = function () { + if (this.geometries_) + for (var t = 0, e = this.geometries_.length; t < e; ++t) + this.changeEventsKeys_.push( + Z(this.geometries_[t], F, this.changed, this), + ) + }), + (e.prototype.clone = function () { + var t = new e(null) + return ( + t.setGeometries(this.geometries_), t.applyProperties(this), t + ) + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + if (n < Jt(this.getExtent(), t, e)) return n + for (var i = this.geometries_, o = 0, a = i.length; o < a; ++o) + n = i[o].closestPointXY(t, e, r, n) + return n + }), + (e.prototype.containsXY = function (t, e) { + for (var r = this.geometries_, n = 0, i = r.length; n < i; ++n) + if (r[n].containsXY(t, e)) return !0 + return !1 + }), + (e.prototype.computeExtent = function (t) { + oe(t) + for (var e = this.geometries_, r = 0, n = e.length; r < n; ++r) + he(t, e[r].getExtent()) + return t + }), + (e.prototype.getGeometries = function () { + return Bm(this.geometries_) + }), + (e.prototype.getGeometriesArray = function () { + return this.geometries_ + }), + (e.prototype.getGeometriesArrayRecursive = function () { + for ( + var t = [], e = this.geometries_, r = 0, n = e.length; + r < n; + ++r + ) + e[r].getType() === this.getType() + ? (t = t.concat(e[r].getGeometriesArrayRecursive())) + : t.push(e[r]) + return t + }), + (e.prototype.getSimplifiedGeometry = function (t) { + if ( + (this.simplifiedGeometryRevision !== this.getRevision() && + ((this.simplifiedGeometryMaxMinSquaredTolerance = 0), + (this.simplifiedGeometryRevision = this.getRevision())), + t < 0 || + (0 !== this.simplifiedGeometryMaxMinSquaredTolerance && + t < this.simplifiedGeometryMaxMinSquaredTolerance)) + ) + return this + for ( + var r = [], n = this.geometries_, i = !1, o = 0, a = n.length; + o < a; + ++o + ) { + var s = n[o], + l = s.getSimplifiedGeometry(t) + r.push(l), l !== s && (i = !0) + } + if (i) { + var u = new e(null) + return u.setGeometriesArray(r), u + } + return (this.simplifiedGeometryMaxMinSquaredTolerance = t), this + }), + (e.prototype.getType = function () { + return bt.GEOMETRY_COLLECTION + }), + (e.prototype.intersectsExtent = function (t) { + for (var e = this.geometries_, r = 0, n = e.length; r < n; ++r) + if (e[r].intersectsExtent(t)) return !0 + return !1 + }), + (e.prototype.isEmpty = function () { + return 0 === this.geometries_.length + }), + (e.prototype.rotate = function (t, e) { + for (var r = this.geometries_, n = 0, i = r.length; n < i; ++n) + r[n].rotate(t, e) + this.changed() + }), + (e.prototype.scale = function (t, e, r) { + var n = r + n || (n = xe(this.getExtent())) + for (var i = this.geometries_, o = 0, a = i.length; o < a; ++o) + i[o].scale(t, e, n) + this.changed() + }), + (e.prototype.setGeometries = function (t) { + this.setGeometriesArray(Bm(t)) + }), + (e.prototype.setGeometriesArray = function (t) { + this.unlistenGeometriesChange_(), + (this.geometries_ = t), + this.listenGeometriesChange_(), + this.changed() + }), + (e.prototype.applyTransform = function (t) { + for (var e = this.geometries_, r = 0, n = e.length; r < n; ++r) + e[r].applyTransform(t) + this.changed() + }), + (e.prototype.translate = function (t, e) { + for (var r = this.geometries_, n = 0, i = r.length; n < i; ++n) + r[n].translate(t, e) + this.changed() + }), + (e.prototype.disposeInternal = function () { + this.unlistenGeometriesChange_(), + t.prototype.disposeInternal.call(this) + }), + e + ) + })(dn), + Ym = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Wm(t) { + if ('string' == typeof t) { + var e = JSON.parse(t) + return e || null + } + return null !== t ? t : null + } + var qm = (function (t) { + function e() { + return t.call(this) || this + } + return ( + Ym(e, t), + (e.prototype.getType = function () { + return Ou + }), + (e.prototype.readFeature = function (t, e) { + return this.readFeatureFromObject( + Wm(t), + this.getReadOptions(t, e), + ) + }), + (e.prototype.readFeatures = function (t, e) { + return this.readFeaturesFromObject( + Wm(t), + this.getReadOptions(t, e), + ) + }), + (e.prototype.readFeatureFromObject = function (t, e) { + return n() + }), + (e.prototype.readFeaturesFromObject = function (t, e) { + return n() + }), + (e.prototype.readGeometry = function (t, e) { + return this.readGeometryFromObject( + Wm(t), + this.getReadOptions(t, e), + ) + }), + (e.prototype.readGeometryFromObject = function (t, e) { + return n() + }), + (e.prototype.readProjection = function (t) { + return this.readProjectionFromObject(Wm(t)) + }), + (e.prototype.readProjectionFromObject = function (t) { + return n() + }), + (e.prototype.writeFeature = function (t, e) { + return JSON.stringify(this.writeFeatureObject(t, e)) + }), + (e.prototype.writeFeatureObject = function (t, e) { + return n() + }), + (e.prototype.writeFeatures = function (t, e) { + return JSON.stringify(this.writeFeaturesObject(t, e)) + }), + (e.prototype.writeFeaturesObject = function (t, e) { + return n() + }), + (e.prototype.writeGeometry = function (t, e) { + return JSON.stringify(this.writeGeometryObject(t, e)) + }), + (e.prototype.writeGeometryObject = function (t, e) { + return n() + }), + e + ) + })(Yy), + Xm = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Zm(t, e) { + if (!t) return null + var r + switch (t.type) { + case bt.POINT: + r = (function (t) { + return new qn(t.coordinates) + })(t) + break + case bt.LINE_STRING: + r = (function (t) { + return new Py(t.coordinates) + })(t) + break + case bt.POLYGON: + r = (function (t) { + return new fi(t.coordinates) + })(t) + break + case bt.MULTI_POINT: + r = (function (t) { + return new Hy(t.coordinates) + })(t) + break + case bt.MULTI_LINE_STRING: + r = (function (t) { + return new Zy(t.coordinates) + })(t) + break + case bt.MULTI_POLYGON: + r = (function (t) { + return new Jy(t.coordinates) + })(t) + break + case bt.GEOMETRY_COLLECTION: + r = (function (t, e) { + var r = t.geometries.map(function (t) { + return Zm(t, e) + }) + return new Vm(r) + })(t) + break + default: + throw new Error('Unsupported GeoJSON type: ' + t.type) + } + return Wy(r, !1, e) + } + function Km(t, e) { + var r, + n = (t = Wy(t, !0, e)).getType() + switch (n) { + case bt.POINT: + r = (function (t, e) { + return { type: 'Point', coordinates: t.getCoordinates() } + })(t) + break + case bt.LINE_STRING: + r = (function (t, e) { + return { type: 'LineString', coordinates: t.getCoordinates() } + })(t) + break + case bt.POLYGON: + r = (function (t, e) { + var r + e && (r = e.rightHanded) + return { type: 'Polygon', coordinates: t.getCoordinates(r) } + })(t, e) + break + case bt.MULTI_POINT: + r = (function (t, e) { + return { type: 'MultiPoint', coordinates: t.getCoordinates() } + })(t) + break + case bt.MULTI_LINE_STRING: + r = (function (t, e) { + return { + type: 'MultiLineString', + coordinates: t.getCoordinates(), + } + })(t) + break + case bt.MULTI_POLYGON: + r = (function (t, e) { + var r + e && (r = e.rightHanded) + return { type: 'MultiPolygon', coordinates: t.getCoordinates(r) } + })(t, e) + break + case bt.GEOMETRY_COLLECTION: + r = (function (t, e) { + return { + type: 'GeometryCollection', + geometries: t.getGeometriesArray().map(function (t) { + var r = O({}, e) + return delete r.featureProjection, Km(t, r) + }), + } + })(t, e) + break + case bt.CIRCLE: + r = { type: 'GeometryCollection', geometries: [] } + break + default: + throw new Error('Unsupported geometry type: ' + n) + } + return r + } + var Hm, + $m = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = t.call(this) || this).dataProjection = Gr( + n.dataProjection ? n.dataProjection : 'EPSG:4326', + )), + n.featureProjection && + (r.defaultFeatureProjection = Gr(n.featureProjection)), + (r.geometryName_ = n.geometryName), + (r.extractGeometryName_ = n.extractGeometryName), + r + ) + } + return ( + Xm(e, t), + (e.prototype.readFeatureFromObject = function (t, e) { + var r = null, + n = Zm( + (r = + 'Feature' === t.type + ? t + : { type: 'Feature', geometry: t, properties: null }) + .geometry, + e, + ), + i = new gt() + return ( + this.geometryName_ + ? i.setGeometryName(this.geometryName_) + : this.extractGeometryName_ && + 'geometry_name' in r !== void 0 && + i.setGeometryName(r.geometry_name), + i.setGeometry(n), + 'id' in r && i.setId(r.id), + r.properties && i.setProperties(r.properties, !0), + i + ) + }), + (e.prototype.readFeaturesFromObject = function (t, e) { + var r = null + if ('FeatureCollection' === t.type) { + r = [] + for (var n = t.features, i = 0, o = n.length; i < o; ++i) + r.push(this.readFeatureFromObject(n[i], e)) + } else r = [this.readFeatureFromObject(t, e)] + return r + }), + (e.prototype.readGeometryFromObject = function (t, e) { + return Zm(t, e) + }), + (e.prototype.readProjectionFromObject = function (t) { + var e, + r = t.crs + return ( + r + ? 'name' == r.type + ? (e = Gr(r.properties.name)) + : 'EPSG' === r.type + ? (e = Gr('EPSG:' + r.properties.code)) + : pt(!1, 36) + : (e = this.dataProjection), + e + ) + }), + (e.prototype.writeFeatureObject = function (t, e) { + e = this.adaptOptions(e) + var r = { type: 'Feature', geometry: null, properties: null }, + n = t.getId() + if ((void 0 !== n && (r.id = n), !t.hasProperties())) return r + var i = t.getProperties(), + o = t.getGeometry() + return ( + o && ((r.geometry = Km(o, e)), delete i[t.getGeometryName()]), + I(i) || (r.properties = i), + r + ) + }), + (e.prototype.writeFeaturesObject = function (t, e) { + e = this.adaptOptions(e) + for (var r = [], n = 0, i = t.length; n < i; ++n) + r.push(this.writeFeatureObject(t[n], e)) + return { type: 'FeatureCollection', features: r } + }), + (e.prototype.writeGeometryObject = function (t, e) { + return Km(t, this.adaptOptions(e)) + }), + e + ) + })(qm), + Jm = /font-family: ?([^;]*);/, + Qm = /("|')/g + function tv(t) { + if (!Hm) { + Hm = {} + for (var e = document.styleSheets, r = 0, n = e.length; r < n; ++r) { + var i = e[r] + try { + var o = i.rules || i.cssRules + if (o) + for (var a = 0, s = o.length; a < s; ++a) { + var l = o[a] + if (5 == l.type) { + var u = l.cssText.match(Jm) + Hm[u[1].replace(Qm, '')] = !0 + } + } + } catch (t) {} + } + } + return t in Hm + } + var ev = {}, + rv = zm.a.getNames() + function nv(t) { + var e = t.toString() + if (e in ev) return t + for ( + var r = t.map(function (t) { + var e = cm()(t, 1).split(' ') + return [e.slice(3).join(' ').replace(/"/g, ''), e[1] + e[0]] + }), + n = 0, + i = r.length; + n < i; + ++n + ) { + var o = r[n], + a = o[0] + if (!tv(a) && -1 !== rv.indexOf(a)) { + var s = + 'https://fonts.googleapis.com/css?family=' + + a.replace(/ /g, '+') + + ':' + + o[1] + if (!document.querySelector('link[href="' + s + '"]')) { + var l = document.createElement('link') + ;(l.href = s), + (l.rel = 'stylesheet'), + document.head.appendChild(l) + } + } + } + return (ev[e] = !0), t + } + var iv = /^(.*)(\?.*)$/ + function ov(t, e) { + return e && 0 === t.indexOf('.') && (t = e + t), t + } + function av(t, e, r) { + var n = (t = ov(t, e)).match(iv) + return n ? n[1] + r + (n.length > 2 ? n[2] : '') : t + r + } + function sv(t, e, r, n, i) { + return new Promise(function (o, a) { + if (('object' != typeof e && (e = JSON.parse(e)), 8 != e.version)) + return a(new Error('glStyle version 8 required.')) + if (!(t instanceof Iy || t instanceof lm)) + return a( + new Error('Can only apply to VectorLayer or VectorTileLayer'), + ) + var s, l, u + function c() { + u || (e.sprite && !s) + ? u + ? (t.setStyle(u), o()) + : a(new Error('Something went wrong trying to apply style.')) + : ((u = Dm(t, e, r, i, s, l, nv)), + t.getStyle() + ? o() + : a(new Error('Nothing to show for source [' + r + ']'))) + } + if (e.sprite) { + var h = + 0.5 == (window.devicePixelRatio >= 1.5 ? 0.5 : 1) ? '@2x' : '', + p = av(e.sprite, n, h + '.json') + fetch(p, { credentials: 'same-origin' }) + .then(function (t) { + return t.ok || '' === h + ? t + : ((p = av(e.sprite, n, '.json')), + fetch(p, { credentials: 'same-origin' })) + }) + .then(function (t) { + if (t.ok) return t.json() + a( + new Error( + 'Problem fetching sprite from ' + p + ': ' + t.statusText, + ), + ) + }) + .then(function (t) { + if (void 0 === t) return a(new Error('No sprites found.')) + ;(s = t), (l = av(e.sprite, n, h + '.png')), c() + }) + .catch(function (t) { + a( + new Error( + 'Sprites cannot be loaded: ' + p + ': ' + t.message, + ), + ) + }) + } else c() + }) + } + new $m() + var lv = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function uv(t) { + return 0 !== t.indexOf('mapbox://') ? '' : t.slice('mapbox://'.length) + } + function cv(t, e) { + var r = uv(t) + if (!r) return t + if (0 !== r.indexOf('sprites/')) + throw new Error('unexpected sprites url: ' + t) + return ( + 'https://api.mapbox.com/styles/v1/' + + r.slice('sprites/'.length) + + '/sprite?access_token=' + + e + ) + } + function hv(t, e) { + var r = uv(t) + if (!r) return t + if (0 !== r.indexOf('fonts/')) + throw new Error('unexpected fonts url: ' + t) + return ( + 'https://api.mapbox.com/fonts/v1/' + + r.slice('fonts/'.length) + + '/0-255.pbf?access_token=' + + e + ) + } + function pv(t, e) { + var r = uv(t) + if (!r) return t + if (0 !== r.indexOf('styles/')) + throw new Error('unexpected style url: ' + t) + return ( + 'https://api.mapbox.com/styles/v1/' + + r.slice('styles/'.length) + + '?&access_token=' + + e + ) + } + function fv(t, e) { + var r = uv(t) + return r + ? 'https://{a-d}.tiles.mapbox.com/v4/' + + r + + '/{z}/{x}/{y}.vector.pbf?access_token=' + + e + : t + } + var dv = (function (t) { + function e(e) { + var r = t.call(this, A) || this + return (r.error = e), r + } + return lv(e, t), e + })(c), + gv = 'vector', + yv = (function (t) { + function e(e) { + var r = this, + n = !('declutter' in e) || e.declutter, + i = new og({ state: Jo, format: new am() }) + return ( + ((r = + t.call(this, { + source: i, + declutter: n, + className: e.className, + opacity: e.opacity, + visible: e.visible, + zIndex: e.zIndex, + minResolution: e.minResolution, + maxResolution: e.maxResolution, + minZoom: e.minZoom, + maxZoom: e.maxZoom, + renderOrder: e.renderOrder, + renderBuffer: e.renderBuffer, + renderMode: e.renderMode, + map: e.map, + updateWhileAnimating: e.updateWhileAnimating, + updateWhileInteracting: e.updateWhileInteracting, + preload: e.preload, + useInterimTilesOnError: e.useInterimTilesOnError, + }) || this).sourceId = e.source), + (r.layers = e.layers), + (r.accessToken = e.accessToken), + r.fetchStyle(e.styleUrl), + r + ) + } + return ( + lv(e, t), + (e.prototype.fetchStyle = function (t) { + var e = this, + r = pv(t, this.accessToken) + fetch(r) + .then(function (t) { + if (!t.ok) + throw new Error( + 'unexpected response when fetching style: ' + t.status, + ) + return t.json() + }) + .then(function (t) { + e.onStyleLoad(t) + }) + .catch(function (t) { + e.handleError(t) + }) + }), + (e.prototype.onStyleLoad = function (t) { + var e, + r, + n = this + if (this.layers) { + for (var i = {}, o = 0; o < t.layers.length; ++o) { + var a = t.layers[o] + a.source && (i[a.id] = a.source) + } + var s = void 0 + for (o = 0; o < this.layers.length; ++o) { + var l = i[this.layers[o]] + if (!l) + return void this.handleError( + new Error('could not find source for ' + this.layers[o]), + ) + if (s) { + if (s !== l) + return void this.handleError( + new Error( + 'layers can only use a single source, found ' + + s + + ' and ' + + l, + ), + ) + } else s = l + } + ;(e = s), (r = this.layers) + } else r = e = this.sourceId + r || (r = e = Object.keys(t.sources)[0]), + t.sprite && (t.sprite = cv(t.sprite, this.accessToken)), + t.glyphs && (t.glyphs = hv(t.glyphs, this.accessToken)) + var u = t.sources[e] + if (u.type === gv) { + var c = this.getSource() + c.setUrl(fv(u.url, this.accessToken)), + sv(this, t, r) + .then(function () { + c.setState(Qo) + }) + .catch(function (t) { + n.handleError(t) + }) + } else + this.handleError( + new Error('only works for vector sources, found ' + u.type), + ) + }), + (e.prototype.handleError = function (t) { + this.dispatchEvent(new dv(t)), this.getSource().setState(ta) + }), + e + ) + })(lm), + mv = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + vv = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = O({}, n) + return ( + delete i.imageRatio, + ((r = t.call(this, i) || this).imageRatio_ = + void 0 !== n.imageRatio ? n.imageRatio : 1), + r + ) + } + return ( + mv(e, t), + (e.prototype.getImageRatio = function () { + return this.imageRatio_ + }), + (e.prototype.createRenderer = function () { + return new py(this) + }), + e + ) + })(wg), + _v = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + bv = (function (t) { + function e(e) { + var r = this, + n = O({}, e) + return ( + ((r = t.call(this, n) || this).parseResult_ = Wh(e.style)), + (r.hitDetectionDisabled_ = !!e.disableHitDetection), + r + ) + } + return ( + _v(e, t), + (e.prototype.createRenderer = function () { + return new Eg(this, { + className: this.getClassName(), + vertexShader: this.parseResult_.builder.getSymbolVertexShader(), + fragmentShader: + this.parseResult_.builder.getSymbolFragmentShader(), + hitVertexShader: + !this.hitDetectionDisabled_ && + this.parseResult_.builder.getSymbolVertexShader(!0), + hitFragmentShader: + !this.hitDetectionDisabled_ && + this.parseResult_.builder.getSymbolFragmentShader(!0), + uniforms: this.parseResult_.uniforms, + attributes: this.parseResult_.attributes, + }) + }), + (e.prototype.disposeInternal = function () { + this.getRenderer().disposeInternal(), + t.prototype.disposeInternal.call(this) + }), + e + ) + })(na), + xv = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + wv = 'addfeatures', + Sv = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e) || this + return (o.features = n), (o.file = r), (o.projection = i), o + } + return xv(e, t), e + })(c), + Ev = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;((r = t.call(this, { handleEvent: S }) || this).readAsBuffer_ = + !1), + (r.formats_ = []) + for ( + var i = n.formatConstructors ? n.formatConstructors : [], + o = 0, + a = i.length; + o < a; + ++o + ) { + var s = i[o] + 'function' == typeof s && (s = new s()), + r.formats_.push(s), + (r.readAsBuffer_ = r.readAsBuffer_ || s.getType() === Cu) + } + return ( + (r.projection_ = n.projection ? Gr(n.projection) : null), + (r.dropListenKeys_ = null), + (r.source_ = n.source || null), + (r.target = n.target ? n.target : null), + r + ) + } + return ( + xv(e, t), + (e.prototype.handleResult_ = function (t, e) { + var r, + n = e.target.result, + i = this.getMap(), + o = this.projection_ + o || (o = i.getView().getProjection()) + for (var a = this.formats_, s = 0, l = a.length; s < l; ++s) { + var u = a[s], + c = n + this.readAsBuffer_ && + u.getType() !== Cu && + (void 0 === r && (r = new TextDecoder().decode(n)), (c = r)) + var h = this.tryReadFeatures_(u, c, { featureProjection: o }) + if (h && h.length > 0) { + this.source_ && + (this.source_.clear(), this.source_.addFeatures(h)), + this.dispatchEvent(new Sv(wv, t, h, o)) + break + } + } + }), + (e.prototype.registerListeners_ = function () { + var t = this.getMap() + if (t) { + var e = this.target ? this.target : t.getViewport() + this.dropListenKeys_ = [ + Z(e, U, this.handleDrop, this), + Z(e, G, this.handleStop, this), + Z(e, z, this.handleStop, this), + Z(e, U, this.handleStop, this), + ] + } + }), + (e.prototype.setActive = function (e) { + !this.getActive() && e && this.registerListeners_(), + this.getActive() && !e && this.unregisterListeners_(), + t.prototype.setActive.call(this, e) + }), + (e.prototype.setMap = function (e) { + this.unregisterListeners_(), + t.prototype.setMap.call(this, e), + this.getActive() && this.registerListeners_() + }), + (e.prototype.tryReadFeatures_ = function (t, e, r) { + try { + return t.readFeatures(e, r) + } catch (t) { + return null + } + }), + (e.prototype.unregisterListeners_ = function () { + this.dropListenKeys_ && + (this.dropListenKeys_.forEach(H), (this.dropListenKeys_ = null)) + }), + (e.prototype.handleDrop = function (t) { + for ( + var e = t.dataTransfer.files, r = 0, n = e.length; + r < n; + ++r + ) { + var i = e.item(r), + o = new FileReader() + o.addEventListener(Y, this.handleResult_.bind(this, i)), + this.readAsBuffer_ ? o.readAsArrayBuffer(i) : o.readAsText(i) + } + }), + (e.prototype.handleStop = function (t) { + t.stopPropagation(), + t.preventDefault(), + (t.dataTransfer.dropEffect = 'copy') + }), + e + ) + })(qs), + Tv = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Cv = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = t.call(this, n) || this).condition_ = n.condition + ? n.condition + : ll), + (r.lastAngle_ = void 0), + (r.lastMagnitude_ = void 0), + (r.lastScaleDelta_ = 0), + (r.duration_ = void 0 !== n.duration ? n.duration : 400), + r + ) + } + return ( + Tv(e, t), + (e.prototype.handleDragEvent = function (t) { + if (cl(t)) { + var e = t.map, + r = e.getSize(), + n = t.pixel, + i = n[0] - r[0] / 2, + o = r[1] / 2 - n[1], + a = Math.atan2(o, i), + s = Math.sqrt(i * i + o * o), + l = e.getView() + if (void 0 !== this.lastAngle_) { + var u = this.lastAngle_ - a + l.adjustRotationInternal(u) + } + ;(this.lastAngle_ = a), + void 0 !== this.lastMagnitude_ && + l.adjustResolutionInternal(this.lastMagnitude_ / s), + void 0 !== this.lastMagnitude_ && + (this.lastScaleDelta_ = this.lastMagnitude_ / s), + (this.lastMagnitude_ = s) + } + }), + (e.prototype.handleUpEvent = function (t) { + if (!cl(t)) return !0 + var e = t.map.getView(), + r = this.lastScaleDelta_ > 1 ? 1 : -1 + return ( + e.endInteraction(this.duration_, r), + (this.lastScaleDelta_ = 0), + !1 + ) + }), + (e.prototype.handleDownEvent = function (t) { + return ( + !!cl(t) && + !!this.condition_(t) && + (t.map.getView().beginInteraction(), + (this.lastAngle_ = void 0), + (this.lastMagnitude_ = void 0), + !0) + ) + }), + e + ) + })($s), + Ov = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Pv = (function (t) { + function e(e, r, n) { + var i = t.call(this) || this + if (void 0 !== n && void 0 === r) i.setFlatCoordinates(n, e) + else { + var o = r || 0 + i.setCenterAndRadius(e, o, n) + } + return i + } + return ( + Ov(e, t), + (e.prototype.clone = function () { + var t = new e(this.flatCoordinates.slice(), void 0, this.layout) + return t.applyProperties(this), t + }), + (e.prototype.closestPointXY = function (t, e, r, n) { + var i = this.flatCoordinates, + o = t - i[0], + a = e - i[1], + s = o * o + a * a + if (s < n) { + if (0 === s) for (var l = 0; l < this.stride; ++l) r[l] = i[l] + else { + var u = this.getRadius() / Math.sqrt(s) + ;(r[0] = i[0] + u * o), (r[1] = i[1] + u * a) + for (l = 2; l < this.stride; ++l) r[l] = i[l] + } + return (r.length = this.stride), s + } + return n + }), + (e.prototype.containsXY = function (t, e) { + var r = this.flatCoordinates, + n = t - r[0], + i = e - r[1] + return n * n + i * i <= this.getRadiusSquared_() + }), + (e.prototype.getCenter = function () { + return this.flatCoordinates.slice(0, this.stride) + }), + (e.prototype.computeExtent = function (t) { + var e = this.flatCoordinates, + r = e[this.stride] - e[0] + return ie(e[0] - r, e[1] - r, e[0] + r, e[1] + r, t) + }), + (e.prototype.getRadius = function () { + return Math.sqrt(this.getRadiusSquared_()) + }), + (e.prototype.getRadiusSquared_ = function () { + var t = + this.flatCoordinates[this.stride] - this.flatCoordinates[0], + e = + this.flatCoordinates[this.stride + 1] - + this.flatCoordinates[1] + return t * t + e * e + }), + (e.prototype.getType = function () { + return bt.CIRCLE + }), + (e.prototype.intersectsExtent = function (t) { + if (Re(t, this.getExtent())) { + var e = this.getCenter() + return ( + (t[0] <= e[0] && t[2] >= e[0]) || + (t[1] <= e[1] && t[3] >= e[1]) || + me(t, this.intersectsCoordinate.bind(this)) + ) + } + return !1 + }), + (e.prototype.setCenter = function (t) { + var e = this.stride, + r = this.flatCoordinates[e] - this.flatCoordinates[0], + n = t.slice() + n[e] = n[0] + r + for (var i = 1; i < e; ++i) n[e + i] = t[i] + this.setFlatCoordinates(this.layout, n), this.changed() + }), + (e.prototype.setCenterAndRadius = function (t, e, r) { + this.setLayout(r, t, 0), + this.flatCoordinates || (this.flatCoordinates = []) + var n = this.flatCoordinates, + i = Cn(n, 0, t, this.stride) + n[i++] = n[0] + e + for (var o = 1, a = this.stride; o < a; ++o) n[i++] = n[o] + ;(n.length = i), this.changed() + }), + (e.prototype.getCoordinates = function () { + return null + }), + (e.prototype.setCoordinates = function (t, e) {}), + (e.prototype.setRadius = function (t) { + ;(this.flatCoordinates[this.stride] = + this.flatCoordinates[0] + t), + this.changed() + }), + (e.prototype.rotate = function (t, e) { + var r = this.getCenter(), + n = this.getStride() + this.setCenter(un(r, 0, r.length, n, t, e, r)), this.changed() + }), + (e.prototype.translate = function (t, e) { + var r = this.getCenter(), + n = this.getStride() + this.setCenter(hn(r, 0, r.length, n, t, e, r)), this.changed() + }), + e + ) + })(vn) + Pv.prototype.transform + var Rv = Pv, + Iv = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Lv = 'Point', + Mv = 'LineString', + Fv = 'Polygon', + Av = 'Circle', + kv = 'drawstart', + jv = 'drawend', + Nv = 'drawabort', + Dv = (function (t) { + function e(e, r) { + var n = t.call(this, e) || this + return (n.feature = r), n + } + return Iv(e, t), e + })(c) + var Gv = (function (t) { + function e(e) { + var r = this, + n = e + n.stopDown || (n.stopDown = E), + ((r = t.call(this, n) || this).shouldHandle_ = !1), + (r.downPx_ = null), + r.downTimeout_, + r.lastDragTime_, + r.pointerType_, + (r.freehand_ = !1), + (r.source_ = e.source ? e.source : null), + (r.features_ = e.features ? e.features : null), + (r.snapTolerance_ = e.snapTolerance ? e.snapTolerance : 12), + (r.type_ = e.type), + (r.mode_ = (function (t) { + var e + t === bt.POINT || t === bt.MULTI_POINT + ? (e = Lv) + : t === bt.LINE_STRING || t === bt.MULTI_LINE_STRING + ? (e = Mv) + : t === bt.POLYGON || t === bt.MULTI_POLYGON + ? (e = Fv) + : t === bt.CIRCLE && (e = Av) + return e + })(r.type_)), + (r.stopClick_ = !!e.stopClick), + (r.minPoints_ = e.minPoints + ? e.minPoints + : r.mode_ === Fv + ? 3 + : 2), + (r.maxPoints_ = + r.mode_ === Av ? 2 : e.maxPoints ? e.maxPoints : 1 / 0), + (r.finishCondition_ = e.finishCondition ? e.finishCondition : S) + var i, + o = e.geometryFunction + if (!o) { + var a, + s = r.mode_ + if (s === Av) + o = function (t, e, r) { + var n = e || new Rv([NaN, NaN]), + i = rn(t[0], r), + o = Rr(i, rn(t[t.length - 1], r)) + n.setCenterAndRadius(i, Math.sqrt(o)) + var a = tn() + return a && n.transform(r, a), n + } + else + s === Lv + ? (a = qn) + : s === Mv + ? (a = Py) + : s === Fv && (a = fi), + (o = function (t, e, r) { + return ( + e + ? s === Fv + ? t[0].length + ? e.setCoordinates([t[0].concat([t[0][0]])]) + : e.setCoordinates([]) + : e.setCoordinates(t) + : (e = new a(t)), + e + ) + }) + } + return ( + (r.geometryFunction_ = o), + (r.dragVertexDelay_ = + void 0 !== e.dragVertexDelay ? e.dragVertexDelay : 500), + (r.finishCoordinate_ = null), + (r.sketchFeature_ = null), + (r.sketchPoint_ = null), + (r.sketchCoords_ = null), + (r.sketchLine_ = null), + (r.sketchLineCoords_ = null), + (r.squaredClickTolerance_ = e.clickTolerance + ? e.clickTolerance * e.clickTolerance + : 36), + (r.overlay_ = new Iy({ + source: new hf({ + useSpatialIndex: !1, + wrapX: !!e.wrapX && e.wrapX, + }), + style: e.style + ? e.style + : ((i = bp()), + function (t, e) { + return i[t.getGeometry().getType()] + }), + updateWhileInteracting: !0, + })), + (r.geometryName_ = e.geometryName), + (r.condition_ = e.condition ? e.condition : sl), + r.freehandCondition_, + e.freehand + ? (r.freehandCondition_ = nl) + : (r.freehandCondition_ = e.freehandCondition + ? e.freehandCondition + : ll), + r.addEventListener(it(Bs), r.updateState_), + r + ) + } + return ( + Iv(e, t), + (e.prototype.setMap = function (e) { + t.prototype.setMap.call(this, e), this.updateState_() + }), + (e.prototype.getOverlay = function () { + return this.overlay_ + }), + (e.prototype.handleEvent = function (e) { + e.originalEvent.type === j && e.originalEvent.preventDefault(), + (this.freehand_ = + this.mode_ !== Lv && this.freehandCondition_(e)) + var r = e.type === Ga.POINTERMOVE, + n = !0 + !this.freehand_ && + this.lastDragTime_ && + e.type === Ga.POINTERDRAG && + (Date.now() - this.lastDragTime_ >= this.dragVertexDelay_ + ? ((this.downPx_ = e.pixel), + (this.shouldHandle_ = !this.freehand_), + (r = !0)) + : (this.lastDragTime_ = void 0), + this.shouldHandle_ && + void 0 !== this.downTimeout_ && + (clearTimeout(this.downTimeout_), + (this.downTimeout_ = void 0))) + return ( + this.freehand_ && + e.type === Ga.POINTERDRAG && + null !== this.sketchFeature_ + ? (this.addToDrawing_(e.coordinate), (n = !1)) + : this.freehand_ && e.type === Ga.POINTERDOWN + ? (n = !1) + : r && this.getPointerCount() < 2 + ? (n = e.type === Ga.POINTERMOVE) && this.freehand_ + ? (this.handlePointerMove_(e), + this.shouldHandle_ && + e.originalEvent.preventDefault()) + : ('mouse' === e.originalEvent.pointerType || + (e.type === Ga.POINTERDRAG && + void 0 === this.downTimeout_)) && + this.handlePointerMove_(e) + : e.type === Ga.DBLCLICK && (n = !1), + t.prototype.handleEvent.call(this, e) && n + ) + }), + (e.prototype.handleDownEvent = function (t) { + return ( + (this.shouldHandle_ = !this.freehand_), + this.freehand_ + ? ((this.downPx_ = t.pixel), + this.finishCoordinate_ || this.startDrawing_(t.coordinate), + !0) + : this.condition_(t) + ? ((this.lastDragTime_ = Date.now()), + (this.downTimeout_ = setTimeout( + function () { + this.handlePointerMove_( + new Da( + Ga.POINTERMOVE, + t.map, + t.originalEvent, + !1, + t.frameState, + ), + ) + }.bind(this), + this.dragVertexDelay_, + )), + (this.downPx_ = t.pixel), + !0) + : ((this.lastDragTime_ = void 0), !1) + ) + }), + (e.prototype.handleUpEvent = function (t) { + var e = !0 + if (0 === this.getPointerCount()) + if ( + (this.downTimeout_ && + (clearTimeout(this.downTimeout_), + (this.downTimeout_ = void 0)), + this.handlePointerMove_(t), + this.shouldHandle_) + ) { + switch (!0) { + case !this.finishCoordinate_: + if ((this.startDrawing_(t.coordinate), this.mode_ !== Lv)) + break + case this.freehand_ || + (this.atFinish_(t.pixel) && this.finishCondition_(t)): + this.finishDrawing() + break + case !this.freehand_: + this.addToDrawing_(t.coordinate) + } + e = !1 + } else this.freehand_ && this.abortDrawing() + return ( + !e && this.stopClick_ && t.originalEvent.stopPropagation(), e + ) + }), + (e.prototype.handlePointerMove_ = function (t) { + if ( + ((this.pointerType_ = t.originalEvent.pointerType), + this.downPx_ && + ((!this.freehand_ && this.shouldHandle_) || + (this.freehand_ && !this.shouldHandle_))) + ) { + var e = this.downPx_, + r = t.pixel, + n = e[0] - r[0], + i = e[1] - r[1], + o = n * n + i * i + if ( + ((this.shouldHandle_ = this.freehand_ + ? o > this.squaredClickTolerance_ + : o <= this.squaredClickTolerance_), + !this.shouldHandle_) + ) + return + } + this.finishCoordinate_ + ? this.modifyDrawing_(t.coordinate) + : this.createOrUpdateSketchPoint_(t) + }), + (e.prototype.atFinish_ = function (t) { + var e = !1 + if (this.sketchFeature_) { + var r = !1, + n = [this.finishCoordinate_], + i = this.mode_ + if (i === Lv) e = !0 + else if (i === Av) e = 2 === this.sketchCoords_.length + else if (i === Mv) + r = this.sketchCoords_.length > this.minPoints_ + else if (i === Fv) { + var o = this.sketchCoords_ + ;(r = o[0].length > this.minPoints_), + (n = [o[0][0], o[0][o[0].length - 2]]) + } + if (r) + for (var a = this.getMap(), s = 0, l = n.length; s < l; s++) { + var u = n[s], + c = a.getPixelFromCoordinate(u), + h = t[0] - c[0], + p = t[1] - c[1], + f = this.freehand_ ? 1 : this.snapTolerance_ + if ((e = Math.sqrt(h * h + p * p) <= f)) { + this.finishCoordinate_ = u + break + } + } + } + return e + }), + (e.prototype.createOrUpdateSketchPoint_ = function (t) { + var e = t.coordinate.slice() + this.sketchPoint_ + ? this.sketchPoint_.getGeometry().setCoordinates(e) + : ((this.sketchPoint_ = new gt(new qn(e))), + this.updateSketchFeatures_()) + }), + (e.prototype.createOrUpdateCustomSketchLine_ = function (t) { + this.sketchLine_ || (this.sketchLine_ = new gt()) + var e = t.getLinearRing(0), + r = this.sketchLine_.getGeometry() + r + ? (r.setFlatCoordinates(e.getLayout(), e.getFlatCoordinates()), + r.changed()) + : ((r = new Py(e.getFlatCoordinates(), e.getLayout())), + this.sketchLine_.setGeometry(r)) + }), + (e.prototype.startDrawing_ = function (t) { + var e = this.getMap().getView().getProjection() + ;(this.finishCoordinate_ = t), + this.mode_ === Lv + ? (this.sketchCoords_ = t.slice()) + : this.mode_ === Fv + ? ((this.sketchCoords_ = [[t.slice(), t.slice()]]), + (this.sketchLineCoords_ = this.sketchCoords_[0])) + : (this.sketchCoords_ = [t.slice(), t.slice()]), + this.sketchLineCoords_ && + (this.sketchLine_ = new gt(new Py(this.sketchLineCoords_))) + var r = this.geometryFunction_(this.sketchCoords_, void 0, e) + ;(this.sketchFeature_ = new gt()), + this.geometryName_ && + this.sketchFeature_.setGeometryName(this.geometryName_), + this.sketchFeature_.setGeometry(r), + this.updateSketchFeatures_(), + this.dispatchEvent(new Dv(kv, this.sketchFeature_)) + }), + (e.prototype.modifyDrawing_ = function (t) { + var e, + r, + n = this.getMap(), + i = this.sketchFeature_.getGeometry(), + o = n.getView().getProjection() + ;(this.mode_ === Lv + ? (r = this.sketchCoords_) + : this.mode_ === Fv + ? ((r = (e = this.sketchCoords_[0])[e.length - 1]), + this.atFinish_(n.getPixelFromCoordinate(t)) && + (t = this.finishCoordinate_.slice())) + : (r = (e = this.sketchCoords_)[e.length - 1]), + (r[0] = t[0]), + (r[1] = t[1]), + this.geometryFunction_(this.sketchCoords_, i, o), + this.sketchPoint_) && + this.sketchPoint_.getGeometry().setCoordinates(t) + if (i.getType() === bt.POLYGON && this.mode_ !== Fv) + this.createOrUpdateCustomSketchLine_(i) + else if (this.sketchLineCoords_) { + this.sketchLine_ + .getGeometry() + .setCoordinates(this.sketchLineCoords_) + } + this.updateSketchFeatures_() + }), + (e.prototype.addToDrawing_ = function (t) { + var e, + r, + n = this.sketchFeature_.getGeometry(), + i = this.getMap().getView().getProjection(), + o = this.mode_ + o === Mv || o === Av + ? ((this.finishCoordinate_ = t.slice()), + (r = this.sketchCoords_).length >= this.maxPoints_ && + (this.freehand_ ? r.pop() : (e = !0)), + r.push(t.slice()), + this.geometryFunction_(r, n, i)) + : o === Fv && + ((r = this.sketchCoords_[0]).length >= this.maxPoints_ && + (this.freehand_ ? r.pop() : (e = !0)), + r.push(t.slice()), + e && (this.finishCoordinate_ = r[0]), + this.geometryFunction_(this.sketchCoords_, n, i)), + this.updateSketchFeatures_(), + e && this.finishDrawing() + }), + (e.prototype.removeLastPoint = function () { + if (this.sketchFeature_) { + var t, + e = this.sketchFeature_.getGeometry(), + r = this.getMap().getView().getProjection(), + n = this.mode_ + if (n === Mv || n === Av) { + if (((t = this.sketchCoords_).splice(-2, 1), t.length >= 2)) { + this.finishCoordinate_ = t[t.length - 2].slice() + var i = this.finishCoordinate_.slice() + ;(t[t.length - 1] = i), + this.sketchPoint_.setGeometry(new qn(i)) + } + this.geometryFunction_(t, e, r), + e.getType() === bt.POLYGON && + this.sketchLine_ && + this.createOrUpdateCustomSketchLine_(e) + } else if (n === Fv) { + ;(t = this.sketchCoords_[0]).splice(-2, 1) + var o = this.sketchLine_.getGeometry() + if (t.length >= 2) { + i = t[t.length - 2].slice() + ;(t[t.length - 1] = i), + this.sketchPoint_.setGeometry(new qn(i)) + } + o.setCoordinates(t), + this.geometryFunction_(this.sketchCoords_, e, r) + } + 1 === t.length && this.abortDrawing(), + this.updateSketchFeatures_() + } + }), + (e.prototype.finishDrawing = function () { + var t = this.abortDrawing_() + if (t) { + var e = this.sketchCoords_, + r = t.getGeometry(), + n = this.getMap().getView().getProjection() + this.mode_ === Mv + ? (e.pop(), this.geometryFunction_(e, r, n)) + : this.mode_ === Fv && + (e[0].pop(), + this.geometryFunction_(e, r, n), + (e = r.getCoordinates())), + this.type_ === bt.MULTI_POINT + ? t.setGeometry(new Hy([e])) + : this.type_ === bt.MULTI_LINE_STRING + ? t.setGeometry(new Zy([e])) + : this.type_ === bt.MULTI_POLYGON && + t.setGeometry(new Jy([e])), + this.dispatchEvent(new Dv(jv, t)), + this.features_ && this.features_.push(t), + this.source_ && this.source_.addFeature(t) + } + }), + (e.prototype.abortDrawing_ = function () { + this.finishCoordinate_ = null + var t = this.sketchFeature_ + return ( + (this.sketchFeature_ = null), + (this.sketchPoint_ = null), + (this.sketchLine_ = null), + this.overlay_.getSource().clear(!0), + t + ) + }), + (e.prototype.abortDrawing = function () { + var t = this.abortDrawing_() + t && this.dispatchEvent(new Dv(Nv, t)) + }), + (e.prototype.appendCoordinates = function (t) { + var e, + r = this.mode_, + n = !this.sketchFeature_ + if ((n && this.startDrawing_(t[0]), r === Mv || r === Av)) + e = this.sketchCoords_ + else { + if (r !== Fv) return + e = + this.sketchCoords_ && this.sketchCoords_.length + ? this.sketchCoords_[0] + : [] + } + n && e.shift(), e.pop() + for (var i = 0; i < t.length; i++) this.addToDrawing_(t[i]) + var o = t[t.length - 1] + this.addToDrawing_(o), this.modifyDrawing_(o) + }), + (e.prototype.extend = function (t) { + var e = t.getGeometry() + ;(this.sketchFeature_ = t), + (this.sketchCoords_ = e.getCoordinates()) + var r = this.sketchCoords_[this.sketchCoords_.length - 1] + ;(this.finishCoordinate_ = r.slice()), + this.sketchCoords_.push(r.slice()), + (this.sketchPoint_ = new gt(new qn(r))), + this.updateSketchFeatures_(), + this.dispatchEvent(new Dv(kv, this.sketchFeature_)) + }), + (e.prototype.updateSketchFeatures_ = function () { + var t = [] + this.sketchFeature_ && t.push(this.sketchFeature_), + this.sketchLine_ && t.push(this.sketchLine_), + this.sketchPoint_ && t.push(this.sketchPoint_) + var e = this.overlay_.getSource() + e.clear(!0), e.addFeatures(t) + }), + (e.prototype.updateState_ = function () { + var t = this.getMap(), + e = this.getActive() + ;(t && e) || this.abortDrawing(), + this.overlay_.setMap(e ? t : null) + }), + e + ) + })($s), + zv = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Uv = 'extentchanged', + Bv = (function (t) { + function e(e) { + var r = t.call(this, Uv) || this + return (r.extent = e), r + } + return zv(e, t), e + })(c) + function Vv() { + var t = bp() + return function (e, r) { + return t[bt.POINT] + } + } + function Yv(t) { + return function (e) { + return Kt([t, e]) + } + } + function Wv(t, e) { + return t[0] == e[0] + ? function (r) { + return Kt([t, [r[0], e[1]]]) + } + : t[1] == e[1] + ? function (r) { + return Kt([t, [e[0], r[1]]]) + } + : null + } + var qv = (function (t) { + function e(e) { + var r, + n = this, + i = e || {} + return ( + ((n = t.call(this, i) || this).condition_ = i.condition + ? i.condition + : nl), + (n.extent_ = null), + (n.pointerHandler_ = null), + (n.pixelTolerance_ = + void 0 !== i.pixelTolerance ? i.pixelTolerance : 10), + (n.snappedToVertex_ = !1), + (n.extentFeature_ = null), + (n.vertexFeature_ = null), + e || (e = {}), + (n.extentOverlay_ = new Iy({ + source: new hf({ useSpatialIndex: !1, wrapX: !!e.wrapX }), + style: e.boxStyle + ? e.boxStyle + : ((r = bp()), + function (t, e) { + return r[bt.POLYGON] + }), + updateWhileAnimating: !0, + updateWhileInteracting: !0, + })), + (n.vertexOverlay_ = new Iy({ + source: new hf({ useSpatialIndex: !1, wrapX: !!e.wrapX }), + style: e.pointerStyle ? e.pointerStyle : Vv(), + updateWhileAnimating: !0, + updateWhileInteracting: !0, + })), + e.extent && n.setExtent(e.extent), + n + ) + } + return ( + zv(e, t), + (e.prototype.snapToVertex_ = function (t, e) { + var r = e.getCoordinateFromPixelInternal(t), + n = this.getExtentInternal() + if (n) { + var i = (function (t) { + return [ + [ + [t[0], t[1]], + [t[0], t[3]], + ], + [ + [t[0], t[3]], + [t[2], t[3]], + ], + [ + [t[2], t[3]], + [t[2], t[1]], + ], + [ + [t[2], t[1]], + [t[0], t[1]], + ], + ] + })(n) + i.sort(function (t, e) { + return Lr(r, t) - Lr(r, e) + }) + var o = i[0], + a = Sr(r, o), + s = e.getPixelFromCoordinateInternal(a) + if (Ir(t, s) <= this.pixelTolerance_) { + var l = e.getPixelFromCoordinateInternal(o[0]), + u = e.getPixelFromCoordinateInternal(o[1]), + c = Rr(s, l), + h = Rr(s, u), + p = Math.sqrt(Math.min(c, h)) + return ( + (this.snappedToVertex_ = p <= this.pixelTolerance_), + this.snappedToVertex_ && (a = c > h ? o[1] : o[0]), + a + ) + } + } + return null + }), + (e.prototype.handlePointerMove_ = function (t) { + var e = t.pixel, + r = t.map, + n = this.snapToVertex_(e, r) + n || (n = r.getCoordinateFromPixelInternal(e)), + this.createOrUpdatePointerFeature_(n) + }), + (e.prototype.createOrUpdateExtentFeature_ = function (t) { + var e = this.extentFeature_ + return ( + e + ? t + ? e.setGeometry(gi(t)) + : e.setGeometry(void 0) + : ((e = new gt(t ? gi(t) : {})), + (this.extentFeature_ = e), + this.extentOverlay_.getSource().addFeature(e)), + e + ) + }), + (e.prototype.createOrUpdatePointerFeature_ = function (t) { + var e = this.vertexFeature_ + e + ? e.getGeometry().setCoordinates(t) + : ((e = new gt(new qn(t))), + (this.vertexFeature_ = e), + this.vertexOverlay_.getSource().addFeature(e)) + return e + }), + (e.prototype.handleEvent = function (e) { + return ( + !e.originalEvent || + !this.condition_(e) || + (e.type != Ga.POINTERMOVE || + this.handlingDownUpSequence || + this.handlePointerMove_(e), + t.prototype.handleEvent.call(this, e), + !1) + ) + }), + (e.prototype.handleDownEvent = function (t) { + var e = t.pixel, + r = t.map, + n = this.getExtentInternal(), + i = this.snapToVertex_(e, r), + o = function (t) { + var e = null, + r = null + return ( + t[0] == n[0] ? (e = n[2]) : t[0] == n[2] && (e = n[0]), + t[1] == n[1] ? (r = n[3]) : t[1] == n[3] && (r = n[1]), + null !== e && null !== r ? [e, r] : null + ) + } + if (i && n) { + var a = i[0] == n[0] || i[0] == n[2] ? i[0] : null, + s = i[1] == n[1] || i[1] == n[3] ? i[1] : null + null !== a && null !== s + ? (this.pointerHandler_ = Yv(o(i))) + : null !== a + ? (this.pointerHandler_ = Wv(o([a, n[1]]), o([a, n[3]]))) + : null !== s && + (this.pointerHandler_ = Wv(o([n[0], s]), o([n[2], s]))) + } else + (i = r.getCoordinateFromPixelInternal(e)), + this.setExtent([i[0], i[1], i[0], i[1]]), + (this.pointerHandler_ = Yv(i)) + return !0 + }), + (e.prototype.handleDragEvent = function (t) { + if (this.pointerHandler_) { + var e = t.coordinate + this.setExtent(this.pointerHandler_(e)), + this.createOrUpdatePointerFeature_(e) + } + }), + (e.prototype.handleUpEvent = function (t) { + this.pointerHandler_ = null + var e = this.getExtentInternal() + return (e && 0 !== ve(e)) || this.setExtent(null), !1 + }), + (e.prototype.setMap = function (e) { + this.extentOverlay_.setMap(e), + this.vertexOverlay_.setMap(e), + t.prototype.setMap.call(this, e) + }), + (e.prototype.getExtent = function () { + return nn( + this.getExtentInternal(), + this.getMap().getView().getProjection(), + ) + }), + (e.prototype.getExtentInternal = function () { + return this.extent_ + }), + (e.prototype.setExtent = function (t) { + ;(this.extent_ = t || null), + this.createOrUpdateExtentFeature_(t), + this.dispatchEvent(new Bv(this.extent_)) + }), + e + ) + })($s), + Xv = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Zv = [0, 0, 0, 0], + Kv = [], + Hv = 'modifystart', + $v = 'modifyend', + Jv = (function (t) { + function e(e, r, n) { + var i = t.call(this, e) || this + return (i.features = r), (i.mapBrowserEvent = n), i + } + return Xv(e, t), e + })(c) + function Qv(t, e) { + return t.index - e.index + } + function t_(t, e, r) { + var n = e.geometry + if (n.getType() === bt.CIRCLE) { + var i = n + if (1 === e.index) { + var o = tn() + o && (i = i.clone().transform(o, r)) + var a = Rr(i.getCenter(), rn(t, r)), + s = Math.sqrt(a) - i.getRadius() + return s * s + } + } + var l = rn(t, r) + return ( + (Kv[0] = rn(e.segment[0], r)), + (Kv[1] = rn(e.segment[1], r)), + Lr(l, Kv) + ) + } + function e_(t, e, r) { + var n = e.geometry + if (n.getType() === bt.CIRCLE && 1 === e.index) { + var i = n, + o = tn() + return ( + o && (i = i.clone().transform(o, r)), + en(i.getClosestPoint(rn(t, r)), r) + ) + } + var a = rn(t, r) + return ( + (Kv[0] = rn(e.segment[0], r)), + (Kv[1] = rn(e.segment[1], r)), + en(Sr(a, Kv), r) + ) + } + var r_ = (function (t) { + function e(e) { + var r, + n, + i = t.call(this, e) || this + if ( + ((i.boundHandleFeatureChange_ = i.handleFeatureChange_.bind(i)), + (i.condition_ = e.condition ? e.condition : hl), + (i.defaultDeleteCondition_ = function (t) { + return Qs(t) && al(t) + }), + (i.deleteCondition_ = e.deleteCondition + ? e.deleteCondition + : i.defaultDeleteCondition_), + (i.insertVertexCondition_ = e.insertVertexCondition + ? e.insertVertexCondition + : nl), + (i.vertexFeature_ = null), + (i.vertexSegments_ = null), + (i.lastPixel_ = [0, 0]), + (i.ignoreNextSingleClick_ = !1), + (i.featuresBeingModified_ = null), + (i.rBush_ = new Rp()), + (i.pixelTolerance_ = + void 0 !== e.pixelTolerance ? e.pixelTolerance : 10), + (i.snappedToVertex_ = !1), + (i.changingFeature_ = !1), + (i.dragSegments_ = []), + (i.overlay_ = new Iy({ + source: new hf({ useSpatialIndex: !1, wrapX: !!e.wrapX }), + style: e.style + ? e.style + : ((r = bp()), + function (t, e) { + return r[bt.POINT] + }), + updateWhileAnimating: !0, + updateWhileInteracting: !0, + })), + (i.SEGMENT_WRITERS_ = { + Point: i.writePointGeometry_.bind(i), + LineString: i.writeLineStringGeometry_.bind(i), + LinearRing: i.writeLineStringGeometry_.bind(i), + Polygon: i.writePolygonGeometry_.bind(i), + MultiPoint: i.writeMultiPointGeometry_.bind(i), + MultiLineString: i.writeMultiLineStringGeometry_.bind(i), + MultiPolygon: i.writeMultiPolygonGeometry_.bind(i), + Circle: i.writeCircleGeometry_.bind(i), + GeometryCollection: i.writeGeometryCollectionGeometry_.bind(i), + }), + (i.source_ = null), + (i.hitDetection_ = null), + e.features + ? (n = e.features) + : e.source && + ((i.source_ = e.source), + (n = new ht(i.source_.getFeatures())), + i.source_.addEventListener(ef, i.handleSourceAdd_.bind(i)), + i.source_.addEventListener( + of, + i.handleSourceRemove_.bind(i), + )), + !n) + ) + throw new Error( + 'The modify interaction requires features, a source or a layer', + ) + return ( + e.hitDetection && (i.hitDetection_ = e.hitDetection), + (i.features_ = n), + i.features_.forEach(i.addFeature_.bind(i)), + i.features_.addEventListener(at, i.handleFeatureAdd_.bind(i)), + i.features_.addEventListener(st, i.handleFeatureRemove_.bind(i)), + (i.lastPointerEvent_ = null), + (i.delta_ = [0, 0]), + i + ) + } + return ( + Xv(e, t), + (e.prototype.addFeature_ = function (t) { + var e = t.getGeometry() + if (e) { + var r = this.SEGMENT_WRITERS_[e.getType()] + r && r(t, e) + } + var n = this.getMap() + n && + n.isRendered() && + this.getActive() && + this.handlePointerAtPixel_(this.lastPixel_, n), + t.addEventListener(F, this.boundHandleFeatureChange_) + }), + (e.prototype.willModifyFeatures_ = function (t, e) { + if (!this.featuresBeingModified_) { + this.featuresBeingModified_ = new ht() + for ( + var r = this.featuresBeingModified_.getArray(), + n = 0, + i = e.length; + n < i; + ++n + ) { + var o = e[n][0].feature + ;-1 === r.indexOf(o) && this.featuresBeingModified_.push(o) + } + this.dispatchEvent(new Jv(Hv, this.featuresBeingModified_, t)) + } + }), + (e.prototype.removeFeature_ = function (t) { + this.removeFeatureSegmentData_(t), + this.vertexFeature_ && + 0 === this.features_.getLength() && + (this.overlay_.getSource().removeFeature(this.vertexFeature_), + (this.vertexFeature_ = null)), + t.removeEventListener(F, this.boundHandleFeatureChange_) + }), + (e.prototype.removeFeatureSegmentData_ = function (t) { + var e = this.rBush_, + r = [] + e.forEach(function (e) { + t === e.feature && r.push(e) + }) + for (var n = r.length - 1; n >= 0; --n) { + for ( + var i = r[n], o = this.dragSegments_.length - 1; + o >= 0; + --o + ) + this.dragSegments_[o][0] === i && + this.dragSegments_.splice(o, 1) + e.remove(i) + } + }), + (e.prototype.setActive = function (e) { + this.vertexFeature_ && + !e && + (this.overlay_.getSource().removeFeature(this.vertexFeature_), + (this.vertexFeature_ = null)), + t.prototype.setActive.call(this, e) + }), + (e.prototype.setMap = function (e) { + this.overlay_.setMap(e), t.prototype.setMap.call(this, e) + }), + (e.prototype.getOverlay = function () { + return this.overlay_ + }), + (e.prototype.handleSourceAdd_ = function (t) { + t.feature && this.features_.push(t.feature) + }), + (e.prototype.handleSourceRemove_ = function (t) { + t.feature && this.features_.remove(t.feature) + }), + (e.prototype.handleFeatureAdd_ = function (t) { + this.addFeature_(t.element) + }), + (e.prototype.handleFeatureChange_ = function (t) { + if (!this.changingFeature_) { + var e = t.target + this.removeFeature_(e), this.addFeature_(e) + } + }), + (e.prototype.handleFeatureRemove_ = function (t) { + var e = t.element + this.removeFeature_(e) + }), + (e.prototype.writePointGeometry_ = function (t, e) { + var r = e.getCoordinates(), + n = { feature: t, geometry: e, segment: [r, r] } + this.rBush_.insert(e.getExtent(), n) + }), + (e.prototype.writeMultiPointGeometry_ = function (t, e) { + for ( + var r = e.getCoordinates(), n = 0, i = r.length; + n < i; + ++n + ) { + var o = r[n], + a = { + feature: t, + geometry: e, + depth: [n], + index: n, + segment: [o, o], + } + this.rBush_.insert(e.getExtent(), a) + } + }), + (e.prototype.writeLineStringGeometry_ = function (t, e) { + for ( + var r = e.getCoordinates(), n = 0, i = r.length - 1; + n < i; + ++n + ) { + var o = r.slice(n, n + 2), + a = { feature: t, geometry: e, index: n, segment: o } + this.rBush_.insert(Kt(o), a) + } + }), + (e.prototype.writeMultiLineStringGeometry_ = function (t, e) { + for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) + for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { + var l = o.slice(a, a + 2), + u = { + feature: t, + geometry: e, + depth: [n], + index: a, + segment: l, + } + this.rBush_.insert(Kt(l), u) + } + }), + (e.prototype.writePolygonGeometry_ = function (t, e) { + for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) + for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { + var l = o.slice(a, a + 2), + u = { + feature: t, + geometry: e, + depth: [n], + index: a, + segment: l, + } + this.rBush_.insert(Kt(l), u) + } + }), + (e.prototype.writeMultiPolygonGeometry_ = function (t, e) { + for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) + for (var o = r[n], a = 0, s = o.length; a < s; ++a) + for (var l = o[a], u = 0, c = l.length - 1; u < c; ++u) { + var h = l.slice(u, u + 2), + p = { + feature: t, + geometry: e, + depth: [a, n], + index: u, + segment: h, + } + this.rBush_.insert(Kt(h), p) + } + }), + (e.prototype.writeCircleGeometry_ = function (t, e) { + var r = e.getCenter(), + n = { feature: t, geometry: e, index: 0, segment: [r, r] }, + i = { feature: t, geometry: e, index: 1, segment: [r, r] }, + o = [n, i] + ;(n.featureSegments = o), + (i.featureSegments = o), + this.rBush_.insert(ae(r), n) + var a = e, + s = tn() + if (s && this.getMap()) { + var l = this.getMap().getView().getProjection() + a = yi((a = a.clone().transform(s, l))).transform(l, s) + } + this.rBush_.insert(a.getExtent(), i) + }), + (e.prototype.writeGeometryCollectionGeometry_ = function (t, e) { + for (var r = e.getGeometriesArray(), n = 0; n < r.length; ++n) { + var i = r[n] + ;(0, this.SEGMENT_WRITERS_[i.getType()])(t, i) + } + }), + (e.prototype.createOrUpdateVertexFeature_ = function (t, e, r) { + var n = this.vertexFeature_ + n + ? n.getGeometry().setCoordinates(t) + : ((n = new gt(new qn(t))), + (this.vertexFeature_ = n), + this.overlay_.getSource().addFeature(n)) + return n.set('features', e), n.set('geometries', r), n + }), + (e.prototype.handleEvent = function (e) { + return ( + !e.originalEvent || + ((this.lastPointerEvent_ = e), + e.map.getView().getInteracting() || + e.type != Ga.POINTERMOVE || + this.handlingDownUpSequence || + this.handlePointerMove_(e), + this.vertexFeature_ && + this.deleteCondition_(e) && + (r = + !( + e.type != Ga.SINGLECLICK || !this.ignoreNextSingleClick_ + ) || this.removePoint()), + e.type == Ga.SINGLECLICK && (this.ignoreNextSingleClick_ = !1), + t.prototype.handleEvent.call(this, e) && !r) + ) + var r + }), + (e.prototype.handleDragEvent = function (t) { + ;(this.ignoreNextSingleClick_ = !1), + this.willModifyFeatures_(t, this.dragSegments_) + for ( + var e = [ + t.coordinate[0] + this.delta_[0], + t.coordinate[1] + this.delta_[1], + ], + r = [], + n = [], + i = 0, + o = this.dragSegments_.length; + i < o; + ++i + ) { + var a = this.dragSegments_[i], + s = a[0], + l = s.feature + ;-1 === r.indexOf(l) && r.push(l) + var u = s.geometry + ;-1 === n.indexOf(u) && n.push(u) + for ( + var c = s.depth, h = void 0, p = s.segment, f = a[1]; + e.length < u.getStride(); + + ) + e.push(p[f][e.length]) + switch (u.getType()) { + case bt.POINT: + ;(h = e), (p[0] = e), (p[1] = e) + break + case bt.MULTI_POINT: + ;((h = u.getCoordinates())[s.index] = e), + (p[0] = e), + (p[1] = e) + break + case bt.LINE_STRING: + ;((h = u.getCoordinates())[s.index + f] = e), (p[f] = e) + break + case bt.MULTI_LINE_STRING: + case bt.POLYGON: + ;((h = u.getCoordinates())[c[0]][s.index + f] = e), + (p[f] = e) + break + case bt.MULTI_POLYGON: + ;((h = u.getCoordinates())[c[1]][c[0]][s.index + f] = e), + (p[f] = e) + break + case bt.CIRCLE: + if (((p[0] = e), (p[1] = e), 0 === s.index)) + (this.changingFeature_ = !0), + u.setCenter(e), + (this.changingFeature_ = !1) + else { + this.changingFeature_ = !0 + var d = t.map.getView().getProjection(), + g = Ir(rn(u.getCenter(), d), rn(e, d)), + y = tn() + if (y) { + var m = u.clone().transform(y, d) + m.setRadius(g), (g = m.transform(d, y).getRadius()) + } + u.setRadius(g), (this.changingFeature_ = !1) + } + } + h && this.setGeometryCoordinates_(u, h) + } + this.createOrUpdateVertexFeature_(e, r, n) + }), + (e.prototype.handleDownEvent = function (t) { + if (!this.condition_(t)) return !1 + var e = t.coordinate + this.handlePointerAtPixel_(t.pixel, t.map, e), + (this.dragSegments_.length = 0), + (this.featuresBeingModified_ = null) + var r = this.vertexFeature_ + if (r) { + var n = t.map.getView().getProjection(), + i = [], + a = r.getGeometry().getCoordinates(), + s = Kt([a]), + l = this.rBush_.getInExtent(s), + u = {} + l.sort(Qv) + for (var c = 0, h = l.length; c < h; ++c) { + var p = l[c], + f = p.segment, + d = o(p.geometry), + g = p.depth + if ( + (g && (d += '-' + g.join('-')), + u[d] || (u[d] = new Array(2)), + p.geometry.getType() !== bt.CIRCLE || 1 !== p.index) + ) + if (!Cr(f[0], a) || u[d][0]) + if (!Cr(f[1], a) || u[d][1]) + o(f) in this.vertexSegments_ && + !u[d][0] && + !u[d][1] && + this.insertVertexCondition_(t) && + i.push(p) + else { + if ( + (p.geometry.getType() === bt.LINE_STRING || + p.geometry.getType() === bt.MULTI_LINE_STRING) && + u[d][0] && + 0 === u[d][0].index + ) + continue + this.dragSegments_.push([p, 1]), (u[d][1] = p) + } + else this.dragSegments_.push([p, 0]), (u[d][0] = p) + else + Cr(e_(e, p, n), a) && + !u[d][0] && + (this.dragSegments_.push([p, 0]), (u[d][0] = p)) + } + i.length && this.willModifyFeatures_(t, [i]) + for (var y = i.length - 1; y >= 0; --y) + this.insertVertex_(i[y], a) + } + return !!this.vertexFeature_ + }), + (e.prototype.handleUpEvent = function (t) { + for (var e = this.dragSegments_.length - 1; e >= 0; --e) { + var r = this.dragSegments_[e][0], + n = r.geometry + if (n.getType() === bt.CIRCLE) { + var i = n.getCenter(), + o = r.featureSegments[0], + a = r.featureSegments[1] + ;(o.segment[0] = i), + (o.segment[1] = i), + (a.segment[0] = i), + (a.segment[1] = i), + this.rBush_.update(ae(i), o) + var s = n, + l = tn() + if (l) { + var u = t.map.getView().getProjection() + s = yi((s = s.clone().transform(l, u))).transform(u, l) + } + this.rBush_.update(s.getExtent(), a) + } else this.rBush_.update(Kt(r.segment), r) + } + return ( + this.featuresBeingModified_ && + (this.dispatchEvent( + new Jv($v, this.featuresBeingModified_, t), + ), + (this.featuresBeingModified_ = null)), + !1 + ) + }), + (e.prototype.handlePointerMove_ = function (t) { + ;(this.lastPixel_ = t.pixel), + this.handlePointerAtPixel_(t.pixel, t.map, t.coordinate) + }), + (e.prototype.handlePointerAtPixel_ = function (t, e, r) { + var n, + i, + a = this, + s = r || e.getCoordinateFromPixel(t), + l = e.getView().getProjection() + if (this.hitDetection_) { + var u = + 'object' == typeof this.hitDetection_ + ? function (t) { + return t === a.hitDetection_ + } + : void 0 + e.forEachFeatureAtPixel( + t, + function (t, e, r) { + if ((r = r || t.getGeometry()).getType() === bt.POINT) { + i = r + var o = r.getCoordinates() + n = [{ feature: t, geometry: r, segment: [o, o] }] + } + return !0 + }, + { layerFilter: u }, + ) + } + if (!n) { + var c = nn( + Ht( + on(ae(s, Zv), l), + e.getView().getResolution() * this.pixelTolerance_, + Zv, + ), + l, + ) + n = this.rBush_.getInExtent(c) + } + if (n && n.length > 0) { + var h = n.sort(function (t, e) { + return t_(s, t, l) - t_(s, e, l) + })[0], + p = h.segment, + f = e_(s, h, l), + d = e.getPixelFromCoordinate(f), + g = Ir(t, d) + if (i || g <= this.pixelTolerance_) { + var y = {} + if ( + ((y[o(p)] = !0), + (this.delta_[0] = f[0] - s[0]), + (this.delta_[1] = f[1] - s[1]), + h.geometry.getType() === bt.CIRCLE && 1 === h.index) + ) + (this.snappedToVertex_ = !0), + this.createOrUpdateVertexFeature_( + f, + [h.feature], + [h.geometry], + ) + else { + var m = e.getPixelFromCoordinate(p[0]), + v = e.getPixelFromCoordinate(p[1]), + _ = Rr(d, m), + b = Rr(d, v) + ;(g = Math.sqrt(Math.min(_, b))), + (this.snappedToVertex_ = g <= this.pixelTolerance_), + this.snappedToVertex_ && (f = _ > b ? p[1] : p[0]), + this.createOrUpdateVertexFeature_( + f, + [h.feature], + [h.geometry], + ) + var x = {} + x[o(h.geometry)] = !0 + for (var w = 1, S = n.length; w < S; ++w) { + var E = n[w].segment + if ( + !( + (Cr(p[0], E[0]) && Cr(p[1], E[1])) || + (Cr(p[0], E[1]) && Cr(p[1], E[0])) + ) + ) + break + var T = o(n[w].geometry) + T in x || ((x[T] = !0), (y[o(E)] = !0)) + } + } + return void (this.vertexSegments_ = y) + } + } + this.vertexFeature_ && + (this.overlay_.getSource().removeFeature(this.vertexFeature_), + (this.vertexFeature_ = null)) + }), + (e.prototype.insertVertex_ = function (t, e) { + for ( + var r, + n = t.segment, + i = t.feature, + o = t.geometry, + a = t.depth, + s = t.index; + e.length < o.getStride(); + + ) + e.push(0) + switch (o.getType()) { + case bt.MULTI_LINE_STRING: + case bt.POLYGON: + ;(r = o.getCoordinates())[a[0]].splice(s + 1, 0, e) + break + case bt.MULTI_POLYGON: + ;(r = o.getCoordinates())[a[1]][a[0]].splice(s + 1, 0, e) + break + case bt.LINE_STRING: + ;(r = o.getCoordinates()).splice(s + 1, 0, e) + break + default: + return + } + this.setGeometryCoordinates_(o, r) + var l = this.rBush_ + l.remove(t), this.updateSegmentIndices_(o, s, a, 1) + var u = { + segment: [n[0], e], + feature: i, + geometry: o, + depth: a, + index: s, + } + l.insert(Kt(u.segment), u), this.dragSegments_.push([u, 1]) + var c = { + segment: [e, n[1]], + feature: i, + geometry: o, + depth: a, + index: s + 1, + } + l.insert(Kt(c.segment), c), + this.dragSegments_.push([c, 0]), + (this.ignoreNextSingleClick_ = !0) + }), + (e.prototype.removePoint = function () { + if ( + this.lastPointerEvent_ && + this.lastPointerEvent_.type != Ga.POINTERDRAG + ) { + var t = this.lastPointerEvent_ + this.willModifyFeatures_(t, this.dragSegments_) + var e = this.removeVertex_() + return ( + this.dispatchEvent( + new Jv($v, this.featuresBeingModified_, t), + ), + (this.featuresBeingModified_ = null), + e + ) + } + return !1 + }), + (e.prototype.removeVertex_ = function () { + var t, + e, + r, + n, + i, + a, + s, + l, + u, + c, + h, + p = this.dragSegments_, + f = {}, + d = !1 + for (i = p.length - 1; i >= 0; --i) + (h = o((c = (r = p[i])[0]).feature)), + c.depth && (h += '-' + c.depth.join('-')), + h in f || (f[h] = {}), + 0 === r[1] + ? ((f[h].right = c), (f[h].index = c.index)) + : 1 == r[1] && ((f[h].left = c), (f[h].index = c.index + 1)) + for (h in f) { + switch ( + ((u = f[h].right), + (s = f[h].left), + (l = (a = f[h].index) - 1) < 0 && (l = 0), + (t = e = + (n = (c = void 0 !== s ? s : u).geometry).getCoordinates()), + (d = !1), + n.getType()) + ) { + case bt.MULTI_LINE_STRING: + e[c.depth[0]].length > 2 && + (e[c.depth[0]].splice(a, 1), (d = !0)) + break + case bt.LINE_STRING: + e.length > 2 && (e.splice(a, 1), (d = !0)) + break + case bt.MULTI_POLYGON: + t = t[c.depth[1]] + case bt.POLYGON: + ;(t = t[c.depth[0]]).length > 4 && + (a == t.length - 1 && (a = 0), + t.splice(a, 1), + (d = !0), + 0 === a && (t.pop(), t.push(t[0]), (l = t.length - 1))) + } + if (d) { + this.setGeometryCoordinates_(n, e) + var g = [] + if ( + (void 0 !== s && + (this.rBush_.remove(s), g.push(s.segment[0])), + void 0 !== u && + (this.rBush_.remove(u), g.push(u.segment[1])), + void 0 !== s && void 0 !== u) + ) { + var y = { + depth: c.depth, + feature: c.feature, + geometry: c.geometry, + index: l, + segment: g, + } + this.rBush_.insert(Kt(y.segment), y) + } + this.updateSegmentIndices_(n, a, c.depth, -1), + this.vertexFeature_ && + (this.overlay_ + .getSource() + .removeFeature(this.vertexFeature_), + (this.vertexFeature_ = null)), + (p.length = 0) + } + } + return d + }), + (e.prototype.setGeometryCoordinates_ = function (t, e) { + ;(this.changingFeature_ = !0), + t.setCoordinates(e), + (this.changingFeature_ = !1) + }), + (e.prototype.updateSegmentIndices_ = function (t, e, r, n) { + this.rBush_.forEachInExtent(t.getExtent(), function (i) { + i.geometry === t && + (void 0 === r || void 0 === i.depth || b(i.depth, r)) && + i.index > e && + (i.index += n) + }) + }), + e + ) + })($s), + n_ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + i_ = 'select', + o_ = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e) || this + return ( + (o.selected = r), (o.deselected = n), (o.mapBrowserEvent = i), o + ) + } + return n_(e, t), e + })(c), + a_ = {} + var s_ = (function (t) { + function e(e) { + var r, + n, + i = t.call(this) || this, + o = e || {} + if ( + ((i.boundAddFeature_ = i.addFeature_.bind(i)), + (i.boundRemoveFeature_ = i.removeFeature_.bind(i)), + (i.condition_ = o.condition ? o.condition : al), + (i.addCondition_ = o.addCondition ? o.addCondition : ol), + (i.removeCondition_ = o.removeCondition ? o.removeCondition : ol), + (i.toggleCondition_ = o.toggleCondition ? o.toggleCondition : ll), + (i.multi_ = !!o.multi && o.multi), + (i.filter_ = o.filter ? o.filter : S), + (i.hitTolerance_ = o.hitTolerance ? o.hitTolerance : 0), + (i.style_ = + void 0 !== o.style + ? o.style + : (v((r = bp())[bt.POLYGON], r[bt.LINE_STRING]), + v(r[bt.GEOMETRY_COLLECTION], r[bt.LINE_STRING]), + function (t) { + return t.getGeometry() + ? r[t.getGeometry().getType()] + : null + })), + (i.features_ = o.features || new ht()), + o.layers) + ) + if ('function' == typeof o.layers) n = o.layers + else { + var a = o.layers + n = function (t) { + return g(a, t) + } + } + else n = S + return (i.layerFilter_ = n), (i.featureLayerAssociation_ = {}), i + } + return ( + n_(e, t), + (e.prototype.addFeatureLayerAssociation_ = function (t, e) { + this.featureLayerAssociation_[o(t)] = e + }), + (e.prototype.getFeatures = function () { + return this.features_ + }), + (e.prototype.getHitTolerance = function () { + return this.hitTolerance_ + }), + (e.prototype.getLayer = function (t) { + return this.featureLayerAssociation_[o(t)] + }), + (e.prototype.setHitTolerance = function (t) { + this.hitTolerance_ = t + }), + (e.prototype.setMap = function (e) { + this.getMap() && + this.style_ && + this.features_.forEach(this.restorePreviousStyle_.bind(this)), + t.prototype.setMap.call(this, e), + e + ? (this.features_.addEventListener(at, this.boundAddFeature_), + this.features_.addEventListener( + st, + this.boundRemoveFeature_, + ), + this.style_ && + this.features_.forEach( + this.applySelectedStyle_.bind(this), + )) + : (this.features_.removeEventListener( + at, + this.boundAddFeature_, + ), + this.features_.removeEventListener( + st, + this.boundRemoveFeature_, + )) + }), + (e.prototype.addFeature_ = function (t) { + var e = t.element + this.style_ && this.applySelectedStyle_(e) + }), + (e.prototype.removeFeature_ = function (t) { + var e = t.element + this.style_ && this.restorePreviousStyle_(e) + }), + (e.prototype.getStyle = function () { + return this.style_ + }), + (e.prototype.applySelectedStyle_ = function (t) { + var e = o(t) + e in a_ || (a_[e] = t.getStyle()), t.setStyle(this.style_) + }), + (e.prototype.restorePreviousStyle_ = function (t) { + for ( + var r = this.getMap().getInteractions().getArray(), + n = r.length - 1; + n >= 0; + --n + ) { + var i = r[n] + if ( + i !== this && + i instanceof e && + i.getStyle() && + -1 !== i.getFeatures().getArray().lastIndexOf(t) + ) + return void t.setStyle(i.getStyle()) + } + var a = o(t) + t.setStyle(a_[a]), delete a_[a] + }), + (e.prototype.removeFeatureLayerAssociation_ = function (t) { + delete this.featureLayerAssociation_[o(t)] + }), + (e.prototype.handleEvent = function (t) { + if (!this.condition_(t)) return !0 + var e = this.addCondition_(t), + r = this.removeCondition_(t), + n = this.toggleCondition_(t), + i = !e && !r && !n, + o = t.map, + a = this.getFeatures(), + s = [], + l = [] + if (i) { + P(this.featureLayerAssociation_), + o.forEachFeatureAtPixel( + t.pixel, + function (t, e) { + if (this.filter_(t, e)) + return ( + l.push(t), + this.addFeatureLayerAssociation_(t, e), + !this.multi_ + ) + }.bind(this), + { + layerFilter: this.layerFilter_, + hitTolerance: this.hitTolerance_, + }, + ) + for (var u = a.getLength() - 1; u >= 0; --u) { + var c = a.item(u), + h = l.indexOf(c) + h > -1 ? l.splice(h, 1) : (a.remove(c), s.push(c)) + } + 0 !== l.length && a.extend(l) + } else { + o.forEachFeatureAtPixel( + t.pixel, + function (t, i) { + if (this.filter_(t, i)) + return ( + (!e && !n) || g(a.getArray(), t) + ? (r || n) && + g(a.getArray(), t) && + (s.push(t), this.removeFeatureLayerAssociation_(t)) + : (l.push(t), this.addFeatureLayerAssociation_(t, i)), + !this.multi_ + ) + }.bind(this), + { + layerFilter: this.layerFilter_, + hitTolerance: this.hitTolerance_, + }, + ) + for (var p = s.length - 1; p >= 0; --p) a.remove(s[p]) + a.extend(l) + } + return ( + (l.length > 0 || s.length > 0) && + this.dispatchEvent(new o_(i_, l, s, t)), + !0 + ) + }), + e + ) + })(qs), + l_ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function u_(t) { + return t.feature ? t.feature : t.element ? t.element : void 0 + } + var c_ = [], + h_ = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = n + return ( + i.handleDownEvent || (i.handleDownEvent = S), + i.stopDown || (i.stopDown = E), + ((r = t.call(this, i) || this).source_ = n.source + ? n.source + : null), + (r.vertex_ = void 0 === n.vertex || n.vertex), + (r.edge_ = void 0 === n.edge || n.edge), + (r.features_ = n.features ? n.features : null), + (r.featuresListenerKeys_ = []), + (r.featureChangeListenerKeys_ = {}), + (r.indexedFeaturesExtents_ = {}), + (r.pendingFeatures_ = {}), + (r.pixelTolerance_ = + void 0 !== n.pixelTolerance ? n.pixelTolerance : 10), + (r.rBush_ = new Rp()), + (r.SEGMENT_WRITERS_ = { + Point: r.writePointGeometry_.bind(r), + LineString: r.writeLineStringGeometry_.bind(r), + LinearRing: r.writeLineStringGeometry_.bind(r), + Polygon: r.writePolygonGeometry_.bind(r), + MultiPoint: r.writeMultiPointGeometry_.bind(r), + MultiLineString: r.writeMultiLineStringGeometry_.bind(r), + MultiPolygon: r.writeMultiPolygonGeometry_.bind(r), + GeometryCollection: r.writeGeometryCollectionGeometry_.bind(r), + Circle: r.writeCircleGeometry_.bind(r), + }), + r + ) + } + return ( + l_(e, t), + (e.prototype.addFeature = function (t, e) { + var r = void 0 === e || e, + n = o(t), + i = t.getGeometry() + if (i) { + var a = this.SEGMENT_WRITERS_[i.getType()] + a && + ((this.indexedFeaturesExtents_[n] = i.getExtent([ + 1 / 0, + 1 / 0, + -1 / 0, + -1 / 0, + ])), + a(t, i)) + } + r && + (this.featureChangeListenerKeys_[n] = Z( + t, + F, + this.handleFeatureChange_, + this, + )) + }), + (e.prototype.forEachFeatureAdd_ = function (t) { + this.addFeature(t) + }), + (e.prototype.forEachFeatureRemove_ = function (t) { + this.removeFeature(t) + }), + (e.prototype.getFeatures_ = function () { + var t + return ( + this.features_ + ? (t = this.features_) + : this.source_ && (t = this.source_.getFeatures()), + t + ) + }), + (e.prototype.handleEvent = function (e) { + var r = this.snapTo(e.pixel, e.coordinate, e.map) + return ( + r.snapped && + ((e.coordinate = r.vertex.slice(0, 2)), + (e.pixel = r.vertexPixel)), + t.prototype.handleEvent.call(this, e) + ) + }), + (e.prototype.handleFeatureAdd_ = function (t) { + var e = u_(t) + this.addFeature(e) + }), + (e.prototype.handleFeatureRemove_ = function (t) { + var e = u_(t) + this.removeFeature(e) + }), + (e.prototype.handleFeatureChange_ = function (t) { + var e = t.target + if (this.handlingDownUpSequence) { + var r = o(e) + r in this.pendingFeatures_ || (this.pendingFeatures_[r] = e) + } else this.updateFeature_(e) + }), + (e.prototype.handleUpEvent = function (t) { + var e = R(this.pendingFeatures_) + return ( + e.length && + (e.forEach(this.updateFeature_.bind(this)), + (this.pendingFeatures_ = {})), + !1 + ) + }), + (e.prototype.removeFeature = function (t, e) { + var r = void 0 === e || e, + n = o(t), + i = this.indexedFeaturesExtents_[n] + if (i) { + var a = this.rBush_, + s = [] + a.forEachInExtent(i, function (e) { + t === e.feature && s.push(e) + }) + for (var l = s.length - 1; l >= 0; --l) a.remove(s[l]) + } + r && + (H(this.featureChangeListenerKeys_[n]), + delete this.featureChangeListenerKeys_[n]) + }), + (e.prototype.setMap = function (e) { + var r = this.getMap(), + n = this.featuresListenerKeys_, + i = this.getFeatures_() + r && + (n.forEach(H), + (n.length = 0), + i.forEach(this.forEachFeatureRemove_.bind(this))), + t.prototype.setMap.call(this, e), + e && + (this.features_ + ? n.push( + Z(this.features_, at, this.handleFeatureAdd_, this), + Z(this.features_, st, this.handleFeatureRemove_, this), + ) + : this.source_ && + n.push( + Z(this.source_, ef, this.handleFeatureAdd_, this), + Z(this.source_, of, this.handleFeatureRemove_, this), + ), + i.forEach(this.forEachFeatureAdd_.bind(this))) + }), + (e.prototype.snapTo = function (t, e, r) { + var n = Kt([ + r.getCoordinateFromPixel([ + t[0] - this.pixelTolerance_, + t[1] + this.pixelTolerance_, + ]), + r.getCoordinateFromPixel([ + t[0] + this.pixelTolerance_, + t[1] - this.pixelTolerance_, + ]), + ]), + i = this.rBush_.getInExtent(n) + this.vertex_ && + !this.edge_ && + (i = i.filter(function (t) { + return t.feature.getGeometry().getType() !== bt.CIRCLE + })) + var o = !1, + a = null, + s = null + if (0 === i.length) + return { snapped: o, vertex: a, vertexPixel: s } + for ( + var l, + u = r.getView().getProjection(), + c = rn(e, u), + h = 1 / 0, + p = 0; + p < i.length; + ++p + ) { + var f = i[p] + ;(c_[0] = rn(f.segment[0], u)), (c_[1] = rn(f.segment[1], u)) + var d = Lr(c, c_) + d < h && ((l = f), (h = d)) + } + var g = l.segment + if (this.vertex_ && !this.edge_) { + var y = r.getPixelFromCoordinate(g[0]), + m = r.getPixelFromCoordinate(g[1]), + v = Rr(t, y), + _ = Rr(t, m) + Math.sqrt(Math.min(v, _)) <= this.pixelTolerance_ && + ((o = !0), + (a = v > _ ? g[1] : g[0]), + (s = r.getPixelFromCoordinate(a))) + } else if (this.edge_) { + var b = l.feature.getGeometry().getType() === bt.CIRCLE + if (b) { + var x = l.feature.getGeometry(), + w = tn() + w && (x = x.clone().transform(w, u)), (a = en(wr(c, x), u)) + } else + (c_[0] = rn(g[0], u)), + (c_[1] = rn(g[1], u)), + (a = en(Sr(c, c_), u)) + if ( + Ir(t, (s = r.getPixelFromCoordinate(a))) <= + this.pixelTolerance_ && + ((o = !0), this.vertex_ && !b) + ) { + ;(y = r.getPixelFromCoordinate(g[0])), + (m = r.getPixelFromCoordinate(g[1])), + (v = Rr(s, y)), + (_ = Rr(s, m)) + Math.sqrt(Math.min(v, _)) <= this.pixelTolerance_ && + ((a = v > _ ? g[1] : g[0]), + (s = r.getPixelFromCoordinate(a))) + } + } + return ( + o && (s = [Math.round(s[0]), Math.round(s[1])]), + { snapped: o, vertex: a, vertexPixel: s } + ) + }), + (e.prototype.updateFeature_ = function (t) { + this.removeFeature(t, !1), this.addFeature(t, !1) + }), + (e.prototype.writeCircleGeometry_ = function (t, e) { + var r = this.getMap().getView().getProjection(), + n = e, + i = tn() + i && (n = n.clone().transform(i, r)) + var o = yi(n) + i && o.transform(r, i) + for ( + var a = o.getCoordinates()[0], s = 0, l = a.length - 1; + s < l; + ++s + ) { + var u = a.slice(s, s + 2), + c = { feature: t, segment: u } + this.rBush_.insert(Kt(u), c) + } + }), + (e.prototype.writeGeometryCollectionGeometry_ = function (t, e) { + for (var r = e.getGeometriesArray(), n = 0; n < r.length; ++n) { + var i = this.SEGMENT_WRITERS_[r[n].getType()] + i && i(t, r[n]) + } + }), + (e.prototype.writeLineStringGeometry_ = function (t, e) { + for ( + var r = e.getCoordinates(), n = 0, i = r.length - 1; + n < i; + ++n + ) { + var o = r.slice(n, n + 2), + a = { feature: t, segment: o } + this.rBush_.insert(Kt(o), a) + } + }), + (e.prototype.writeMultiLineStringGeometry_ = function (t, e) { + for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) + for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { + var l = o.slice(a, a + 2), + u = { feature: t, segment: l } + this.rBush_.insert(Kt(l), u) + } + }), + (e.prototype.writeMultiPointGeometry_ = function (t, e) { + for ( + var r = e.getCoordinates(), n = 0, i = r.length; + n < i; + ++n + ) { + var o = r[n], + a = { feature: t, segment: [o, o] } + this.rBush_.insert(e.getExtent(), a) + } + }), + (e.prototype.writeMultiPolygonGeometry_ = function (t, e) { + for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) + for (var o = r[n], a = 0, s = o.length; a < s; ++a) + for (var l = o[a], u = 0, c = l.length - 1; u < c; ++u) { + var h = l.slice(u, u + 2), + p = { feature: t, segment: h } + this.rBush_.insert(Kt(h), p) + } + }), + (e.prototype.writePointGeometry_ = function (t, e) { + var r = e.getCoordinates(), + n = { feature: t, segment: [r, r] } + this.rBush_.insert(e.getExtent(), n) + }), + (e.prototype.writePolygonGeometry_ = function (t, e) { + for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) + for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { + var l = o.slice(a, a + 2), + u = { feature: t, segment: l } + this.rBush_.insert(Kt(l), u) + } + }), + e + ) + })($s), + p_ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + f_ = 'translatestart', + d_ = 'translating', + g_ = 'translateend', + y_ = (function (t) { + function e(e, r, n, i, o) { + var a = t.call(this, e) || this + return ( + (a.features = r), + (a.coordinate = n), + (a.startCoordinate = i), + (a.mapBrowserEvent = o), + a + ) + } + return p_(e, t), e + })(c), + m_ = (function (t) { + function e(e) { + var r, + n = this, + i = e || {} + if ( + (((n = t.call(this, i) || this).lastCoordinate_ = null), + (n.startCoordinate_ = null), + (n.features_ = void 0 !== i.features ? i.features : null), + i.layers) + ) + if ('function' == typeof i.layers) r = i.layers + else { + var o = i.layers + r = function (t) { + return g(o, t) + } + } + else r = S + return ( + (n.layerFilter_ = r), + (n.filter_ = i.filter ? i.filter : S), + (n.hitTolerance_ = i.hitTolerance ? i.hitTolerance : 0), + (n.lastFeature_ = null), + n.addEventListener(it(Bs), n.handleActiveChanged_), + n + ) + } + return ( + p_(e, t), + (e.prototype.handleDownEvent = function (t) { + if ( + ((this.lastFeature_ = this.featuresAtPixel_(t.pixel, t.map)), + !this.lastCoordinate_ && this.lastFeature_) + ) { + ;(this.startCoordinate_ = t.coordinate), + (this.lastCoordinate_ = t.coordinate), + this.handleMoveEvent(t) + var e = this.features_ || new ht([this.lastFeature_]) + return ( + this.dispatchEvent( + new y_(f_, e, t.coordinate, this.startCoordinate_, t), + ), + !0 + ) + } + return !1 + }), + (e.prototype.handleUpEvent = function (t) { + if (this.lastCoordinate_) { + ;(this.lastCoordinate_ = null), this.handleMoveEvent(t) + var e = this.features_ || new ht([this.lastFeature_]) + return ( + this.dispatchEvent( + new y_(g_, e, t.coordinate, this.startCoordinate_, t), + ), + (this.startCoordinate_ = null), + !0 + ) + } + return !1 + }), + (e.prototype.handleDragEvent = function (t) { + if (this.lastCoordinate_) { + var e = t.coordinate, + r = e[0] - this.lastCoordinate_[0], + n = e[1] - this.lastCoordinate_[1], + i = this.features_ || new ht([this.lastFeature_]) + i.forEach(function (t) { + var e = t.getGeometry() + e.translate(r, n), t.setGeometry(e) + }), + (this.lastCoordinate_ = e), + this.dispatchEvent(new y_(d_, i, e, this.startCoordinate_, t)) + } + }), + (e.prototype.handleMoveEvent = function (t) { + var e = t.map.getViewport() + this.featuresAtPixel_(t.pixel, t.map) + ? (e.classList.remove( + this.lastCoordinate_ ? 'ol-grab' : 'ol-grabbing', + ), + e.classList.add( + this.lastCoordinate_ ? 'ol-grabbing' : 'ol-grab', + )) + : e.classList.remove('ol-grab', 'ol-grabbing') + }), + (e.prototype.featuresAtPixel_ = function (t, e) { + return e.forEachFeatureAtPixel( + t, + function (t, e) { + if ( + this.filter_(t, e) && + (!this.features_ || g(this.features_.getArray(), t)) + ) + return t + }.bind(this), + { + layerFilter: this.layerFilter_, + hitTolerance: this.hitTolerance_, + }, + ) + }), + (e.prototype.getHitTolerance = function () { + return this.hitTolerance_ + }), + (e.prototype.setHitTolerance = function (t) { + this.hitTolerance_ = t + }), + (e.prototype.setMap = function (e) { + var r = this.getMap() + t.prototype.setMap.call(this, e), this.updateState_(r) + }), + (e.prototype.handleActiveChanged_ = function () { + this.updateState_(null) + }), + (e.prototype.updateState_ = function (t) { + var e = this.getMap(), + r = this.getActive() + ;(e && r) || + ((e = e || t) && + e.getViewport().classList.remove('ol-grab', 'ol-grabbing')) + }), + e + ) + })($s) + function v_(t, e, r, n, i, o) { + var a, s + void 0 !== i + ? ((a = i), (s = void 0 !== o ? o : 0)) + : ((a = []), (s = 0)) + for (var l = e; l < r; ) { + var u = t[l++] + ;(a[s++] = t[l++]), (a[s++] = u) + for (var c = 2; c < n; ++c) a[s++] = t[l++] + } + return (a.length = s), a + } + var __ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + b_ = {} + ;(b_[bt.POINT] = function (t) { + var e + e = + void 0 !== t.m && void 0 !== t.z + ? new qn([t.x, t.y, t.z, t.m], _t) + : void 0 !== t.z + ? new qn([t.x, t.y, t.z], mt) + : void 0 !== t.m + ? new qn([t.x, t.y, t.m], vt) + : new qn([t.x, t.y]) + return e + }), + (b_[bt.LINE_STRING] = function (t) { + var e = S_(t) + return new Py(t.paths[0], e) + }), + (b_[bt.POLYGON] = function (t) { + var e = S_(t) + return new fi(t.rings, e) + }), + (b_[bt.MULTI_POINT] = function (t) { + var e = S_(t) + return new Hy(t.points, e) + }), + (b_[bt.MULTI_LINE_STRING] = function (t) { + var e = S_(t) + return new Zy(t.paths, e) + }), + (b_[bt.MULTI_POLYGON] = function (t) { + var e = S_(t) + return new Jy(t.rings, e) + }) + var x_ = {} + function w_(t, e) { + var r, n, i + if (!t) return null + if ('number' == typeof t.x && 'number' == typeof t.y) i = bt.POINT + else if (t.points) i = bt.MULTI_POINT + else if (t.paths) { + i = 1 === t.paths.length ? bt.LINE_STRING : bt.MULTI_LINE_STRING + } else if (t.rings) { + var o = t, + a = S_(o), + s = (function (t, e) { + var r, + n, + i = [], + o = [], + a = [] + for (r = 0, n = t.length; r < n; ++r) { + ;(i.length = 0), + On(i, 0, t[r], e.length), + ai(i, 0, i.length, e.length) ? o.push([t[r]]) : a.push(t[r]) + } + for (; a.length; ) { + var s = a.shift(), + l = !1 + for (r = o.length - 1; r >= 0; r--) { + var u = o[r][0] + if (te(new Yn(u).getExtent(), new Yn(s).getExtent())) { + o[r].push(s), (l = !0) + break + } + } + l || o.push([s.reverse()]) + } + return o + })(o.rings, a) + 1 === s.length + ? ((i = bt.POLYGON), (t = O({}, t, (((r = {}).rings = s[0]), r)))) + : ((i = bt.MULTI_POLYGON), + (t = O({}, t, (((n = {}).rings = s), n)))) + } + return Wy((0, b_[i])(t), !1, e) + } + function S_(t) { + var e = yt + return ( + !0 === t.hasZ && !0 === t.hasM + ? (e = _t) + : !0 === t.hasZ + ? (e = mt) + : !0 === t.hasM && (e = vt), + e + ) + } + function E_(t) { + var e = t.getLayout() + return { hasZ: e === mt || e === _t, hasM: e === vt || e === _t } + } + function T_(t, e) { + return (0, x_[t.getType()])(Wy(t, !0, e), e) + } + ;(x_[bt.POINT] = function (t, e) { + var r, + n = t.getCoordinates(), + i = t.getLayout() + i === mt + ? (r = { x: n[0], y: n[1], z: n[2] }) + : i === vt + ? (r = { x: n[0], y: n[1], m: n[2] }) + : i === _t + ? (r = { x: n[0], y: n[1], z: n[2], m: n[3] }) + : i === yt + ? (r = { x: n[0], y: n[1] }) + : pt(!1, 34) + return r + }), + (x_[bt.LINE_STRING] = function (t, e) { + var r = E_(t) + return { hasZ: r.hasZ, hasM: r.hasM, paths: [t.getCoordinates()] } + }), + (x_[bt.POLYGON] = function (t, e) { + var r = E_(t) + return { hasZ: r.hasZ, hasM: r.hasM, rings: t.getCoordinates(!1) } + }), + (x_[bt.MULTI_POINT] = function (t, e) { + var r = E_(t) + return { hasZ: r.hasZ, hasM: r.hasM, points: t.getCoordinates() } + }), + (x_[bt.MULTI_LINE_STRING] = function (t, e) { + var r = E_(t) + return { hasZ: r.hasZ, hasM: r.hasM, paths: t.getCoordinates() } + }), + (x_[bt.MULTI_POLYGON] = function (t, e) { + for ( + var r = E_(t), n = t.getCoordinates(!1), i = [], o = 0; + o < n.length; + o++ + ) + for (var a = n[o].length - 1; a >= 0; a--) i.push(n[o][a]) + return { hasZ: r.hasZ, hasM: r.hasM, rings: i } + }) + var C_ = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = t.call(this) || this).geometryName_ = n.geometryName), r + ) + } + return ( + __(e, t), + (e.prototype.readFeatureFromObject = function (t, e, r) { + var n = t, + i = w_(n.geometry, e), + o = new gt() + if ( + (this.geometryName_ && o.setGeometryName(this.geometryName_), + o.setGeometry(i), + n.attributes) + ) { + o.setProperties(n.attributes, !0) + var a = n.attributes[r] + void 0 !== a && o.setId(a) + } + return o + }), + (e.prototype.readFeaturesFromObject = function (t, e) { + var r = e || {} + if (t.features) { + for ( + var n = [], i = t.features, o = 0, a = i.length; + o < a; + ++o + ) + n.push( + this.readFeatureFromObject(i[o], r, t.objectIdFieldName), + ) + return n + } + return [this.readFeatureFromObject(t, r)] + }), + (e.prototype.readGeometryFromObject = function (t, e) { + return w_(t, e) + }), + (e.prototype.readProjectionFromObject = function (t) { + return t.spatialReference && void 0 !== t.spatialReference.wkid + ? Gr('EPSG:' + t.spatialReference.wkid) + : null + }), + (e.prototype.writeGeometryObject = function (t, e) { + return T_(t, this.adaptOptions(e)) + }), + (e.prototype.writeFeatureObject = function (t, e) { + e = this.adaptOptions(e) + var r = {} + if (!t.hasProperties()) return (r.attributes = {}), r + var n = t.getProperties(), + i = t.getGeometry() + if (i) { + r.geometry = T_(i, e) + var o = e && (e.dataProjection || e.featureProjection) + o && + (r.geometry.spatialReference = { + wkid: Number(Gr(o).getCode().split(':').pop()), + }), + delete n[t.getGeometryName()] + } + return I(n) ? (r.attributes = {}) : (r.attributes = n), r + }), + (e.prototype.writeFeaturesObject = function (t, e) { + e = this.adaptOptions(e) + for (var r = [], n = 0, i = t.length; n < i; ++n) + r.push(this.writeFeatureObject(t[n], e)) + return { features: r } + }), + e + ) + })(qm), + O_ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + P_ = (function (t) { + function e() { + var e = t.call(this) || this + return (e.xmlSerializer_ = Wc()), e + } + return ( + O_(e, t), + (e.prototype.getType = function () { + return Ru + }), + (e.prototype.readFeature = function (t, e) { + if (t) { + if ('string' == typeof t) { + var r = Pc(t) + return this.readFeatureFromDocument(r, e) + } + return Cc(t) + ? this.readFeatureFromDocument(t, e) + : this.readFeatureFromNode(t, e) + } + return null + }), + (e.prototype.readFeatureFromDocument = function (t, e) { + var r = this.readFeaturesFromDocument(t, e) + return r.length > 0 ? r[0] : null + }), + (e.prototype.readFeatureFromNode = function (t, e) { + return null + }), + (e.prototype.readFeatures = function (t, e) { + if (t) { + if ('string' == typeof t) { + var r = Pc(t) + return this.readFeaturesFromDocument(r, e) + } + return Cc(t) + ? this.readFeaturesFromDocument(t, e) + : this.readFeaturesFromNode(t, e) + } + return [] + }), + (e.prototype.readFeaturesFromDocument = function (t, e) { + for (var r = [], n = t.firstChild; n; n = n.nextSibling) + n.nodeType == Node.ELEMENT_NODE && + v(r, this.readFeaturesFromNode(n, e)) + return r + }), + (e.prototype.readFeaturesFromNode = function (t, e) { + return n() + }), + (e.prototype.readGeometry = function (t, e) { + if (t) { + if ('string' == typeof t) { + var r = Pc(t) + return this.readGeometryFromDocument(r, e) + } + return Cc(t) + ? this.readGeometryFromDocument(t, e) + : this.readGeometryFromNode(t, e) + } + return null + }), + (e.prototype.readGeometryFromDocument = function (t, e) { + return null + }), + (e.prototype.readGeometryFromNode = function (t, e) { + return null + }), + (e.prototype.readProjection = function (t) { + if (t) { + if ('string' == typeof t) { + var e = Pc(t) + return this.readProjectionFromDocument(e) + } + return Cc(t) + ? this.readProjectionFromDocument(t) + : this.readProjectionFromNode(t) + } + return null + }), + (e.prototype.readProjectionFromDocument = function (t) { + return this.dataProjection + }), + (e.prototype.readProjectionFromNode = function (t) { + return this.dataProjection + }), + (e.prototype.writeFeature = function (t, e) { + var r = this.writeFeatureNode(t, e) + return this.xmlSerializer_.serializeToString(r) + }), + (e.prototype.writeFeatureNode = function (t, e) { + return null + }), + (e.prototype.writeFeatures = function (t, e) { + var r = this.writeFeaturesNode(t, e) + return this.xmlSerializer_.serializeToString(r) + }), + (e.prototype.writeFeaturesNode = function (t, e) { + return null + }), + (e.prototype.writeGeometry = function (t, e) { + var r = this.writeGeometryNode(t, e) + return this.xmlSerializer_.serializeToString(r) + }), + (e.prototype.writeGeometryNode = function (t, e) { + return null + }), + e + ) + })(Yy), + R_ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + I_ = 'http://www.opengis.net/gml', + L_ = /^[\s\xa0]*$/, + M_ = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.featureType = n.featureType), + (r.featureNS = n.featureNS), + (r.srsName = n.srsName), + (r.schemaLocation = ''), + (r.FEATURE_COLLECTION_PARSERS = {}), + (r.FEATURE_COLLECTION_PARSERS[r.namespace] = { + featureMember: Ic(r.readFeaturesInternal), + featureMembers: Lc(r.readFeaturesInternal), + }), + r + ) + } + return ( + R_(e, t), + (e.prototype.readFeaturesInternal = function (t, e) { + var r = t.localName, + n = null + if ('FeatureCollection' == r) + n = Uc([], this.FEATURE_COLLECTION_PARSERS, t, e, this) + else if ( + 'featureMembers' == r || + 'featureMember' == r || + 'member' == r + ) { + var i = e[0], + o = i.featureType, + a = i.featureNS + if (!o && t.childNodes) { + ;(o = []), (a = {}) + for (var s = 0, l = t.childNodes.length; s < l; ++s) { + var u = t.childNodes[s] + if (1 === u.nodeType) { + var c = u.nodeName.split(':').pop() + if (-1 === o.indexOf(c)) { + var h = '', + p = 0, + f = u.namespaceURI + for (var d in a) { + if (a[d] === f) { + h = d + break + } + ++p + } + h || (a[(h = 'p' + p)] = f), o.push(h + ':' + c) + } + } + } + 'featureMember' != r && + ((i.featureType = o), (i.featureNS = a)) + } + if ('string' == typeof a) { + var g = a + ;(a = {}).p0 = g + } + var y = {}, + m = Array.isArray(o) ? o : [o] + for (var v in a) { + var _ = {} + for (s = 0, l = m.length; s < l; ++s) { + ;(-1 === m[s].indexOf(':') ? 'p0' : m[s].split(':')[0]) === + v && + (_[m[s].split(':').pop()] = + 'featureMembers' == r + ? Ic(this.readFeatureElement, this) + : Lc(this.readFeatureElement, this)) + } + y[a[v]] = _ + } + n = Uc( + 'featureMember' == r || 'member' == r ? void 0 : [], + y, + t, + e, + ) + } + return null === n && (n = []), n + }), + (e.prototype.readGeometryElement = function (t, e) { + var r = e[0] + ;(r.srsName = t.firstElementChild.getAttribute('srsName')), + (r.srsDimension = + t.firstElementChild.getAttribute('srsDimension')) + var n = Uc(null, this.GEOMETRY_PARSERS, t, e, this) + return n ? (Array.isArray(n) ? qy(n, r) : Wy(n, !1, r)) : void 0 + }), + (e.prototype.readFeatureElementInternal = function (t, e, r) { + for ( + var n, i = {}, o = t.firstElementChild; + o; + o = o.nextElementSibling + ) { + var a = void 0, + s = o.localName + 0 === o.childNodes.length || + (1 === o.childNodes.length && + (3 === o.firstChild.nodeType || 4 === o.firstChild.nodeType)) + ? ((a = Ec(o, !1)), L_.test(a) && (a = void 0)) + : (r && (a = this.readGeometryElement(o, e)), + a + ? 'boundedBy' !== s && (n = s) + : (a = this.readFeatureElementInternal(o, e, !1))), + i[s] + ? (i[s] instanceof Array || (i[s] = [i[s]]), i[s].push(a)) + : (i[s] = a) + var l = o.attributes.length + if (l > 0) { + i[s] = { _content_: i[s] } + for (var u = 0; u < l; u++) { + var c = o.attributes[u].name + i[s][c] = o.attributes[u].value + } + } + } + if (r) { + var h = new gt(i) + n && h.setGeometryName(n) + var p = t.getAttribute('fid') || Oc(t, this.namespace, 'id') + return p && h.setId(p), h + } + return i + }), + (e.prototype.readFeatureElement = function (t, e) { + return this.readFeatureElementInternal(t, e, !0) + }), + (e.prototype.readPoint = function (t, e) { + var r = this.readFlatCoordinatesFromNode(t, e) + if (r) return new qn(r, mt) + }), + (e.prototype.readMultiPoint = function (t, e) { + var r = Uc([], this.MULTIPOINT_PARSERS, t, e, this) + return r ? new Hy(r) : void 0 + }), + (e.prototype.readMultiLineString = function (t, e) { + var r = Uc([], this.MULTILINESTRING_PARSERS, t, e, this) + if (r) return new Zy(r) + }), + (e.prototype.readMultiPolygon = function (t, e) { + var r = Uc([], this.MULTIPOLYGON_PARSERS, t, e, this) + if (r) return new Jy(r) + }), + (e.prototype.pointMemberParser = function (t, e) { + zc(this.POINTMEMBER_PARSERS, t, e, this) + }), + (e.prototype.lineStringMemberParser = function (t, e) { + zc(this.LINESTRINGMEMBER_PARSERS, t, e, this) + }), + (e.prototype.polygonMemberParser = function (t, e) { + zc(this.POLYGONMEMBER_PARSERS, t, e, this) + }), + (e.prototype.readLineString = function (t, e) { + var r = this.readFlatCoordinatesFromNode(t, e) + return r ? new Py(r, mt) : void 0 + }), + (e.prototype.readFlatLinearRing = function (t, e) { + var r = Uc( + null, + this.GEOMETRY_FLAT_COORDINATES_PARSERS, + t, + e, + this, + ) + return r || void 0 + }), + (e.prototype.readLinearRing = function (t, e) { + var r = this.readFlatCoordinatesFromNode(t, e) + if (r) return new Yn(r, mt) + }), + (e.prototype.readPolygon = function (t, e) { + var r = Uc([null], this.FLAT_LINEAR_RINGS_PARSERS, t, e, this) + if (r && r[0]) { + var n, + i = r[0], + o = [i.length], + a = void 0 + for (a = 1, n = r.length; a < n; ++a) + v(i, r[a]), o.push(i.length) + return new fi(i, mt, o) + } + }), + (e.prototype.readFlatCoordinatesFromNode = function (t, e) { + return Uc( + null, + this.GEOMETRY_FLAT_COORDINATES_PARSERS, + t, + e, + this, + ) + }), + (e.prototype.readGeometryFromNode = function (t, e) { + var r = this.readGeometryElement(t, [ + this.getReadOptions(t, e || {}), + ]) + return r || null + }), + (e.prototype.readFeaturesFromNode = function (t, e) { + var r = { + featureType: this.featureType, + featureNS: this.featureNS, + } + return ( + e && O(r, this.getReadOptions(t, e)), + this.readFeaturesInternal(t, [r]) || [] + ) + }), + (e.prototype.readProjectionFromNode = function (t) { + return Gr( + this.srsName + ? this.srsName + : t.firstElementChild.getAttribute('srsName'), + ) + }), + e + ) + })(P_) + ;(M_.prototype.namespace = I_), + (M_.prototype.FLAT_LINEAR_RINGS_PARSERS = { + 'http://www.opengis.net/gml': {}, + }), + (M_.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = { + 'http://www.opengis.net/gml': {}, + }), + (M_.prototype.GEOMETRY_PARSERS = { 'http://www.opengis.net/gml': {} }), + (M_.prototype.MULTIPOINT_PARSERS = { + 'http://www.opengis.net/gml': { + pointMember: Ic(M_.prototype.pointMemberParser), + pointMembers: Ic(M_.prototype.pointMemberParser), + }, + }), + (M_.prototype.MULTILINESTRING_PARSERS = { + 'http://www.opengis.net/gml': { + lineStringMember: Ic(M_.prototype.lineStringMemberParser), + lineStringMembers: Ic(M_.prototype.lineStringMemberParser), + }, + }), + (M_.prototype.MULTIPOLYGON_PARSERS = { + 'http://www.opengis.net/gml': { + polygonMember: Ic(M_.prototype.polygonMemberParser), + polygonMembers: Ic(M_.prototype.polygonMemberParser), + }, + }), + (M_.prototype.POINTMEMBER_PARSERS = { + 'http://www.opengis.net/gml': { + Point: Ic(M_.prototype.readFlatCoordinatesFromNode), + }, + }), + (M_.prototype.LINESTRINGMEMBER_PARSERS = { + 'http://www.opengis.net/gml': { + LineString: Ic(M_.prototype.readLineString), + }, + }), + (M_.prototype.POLYGONMEMBER_PARSERS = { + 'http://www.opengis.net/gml': { + Polygon: Ic(M_.prototype.readPolygon), + }, + }), + (M_.prototype.RING_PARSERS = { + 'http://www.opengis.net/gml': { + LinearRing: Lc(M_.prototype.readFlatLinearRing), + }, + }) + var F_ = M_ + function A_(t) { + return k_(Ec(t, !1)) + } + function k_(t) { + var e = /^\s*(true|1)|(false|0)\s*$/.exec(t) + return e ? void 0 !== e[1] || !1 : void 0 + } + function j_(t) { + var e = Ec(t, !1), + r = Date.parse(e) + return isNaN(r) ? void 0 : r / 1e3 + } + function N_(t) { + return D_(Ec(t, !1)) + } + function D_(t) { + var e = /^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(t) + return e ? parseFloat(e[1]) : void 0 + } + function G_(t) { + return z_(Ec(t, !1)) + } + function z_(t) { + var e = /^\s*(\d+)\s*$/.exec(t) + return e ? parseInt(e[1], 10) : void 0 + } + function U_(t) { + return Ec(t, !1).trim() + } + function B_(t, e) { + X_(t, e ? '1' : '0') + } + function V_(t, e) { + t.appendChild(Xc().createCDATASection(e)) + } + function Y_(t, e) { + var r = new Date(1e3 * e), + n = + r.getUTCFullYear() + + '-' + + _r(r.getUTCMonth() + 1, 2) + + '-' + + _r(r.getUTCDate(), 2) + + 'T' + + _r(r.getUTCHours(), 2) + + ':' + + _r(r.getUTCMinutes(), 2) + + ':' + + _r(r.getUTCSeconds(), 2) + + 'Z' + t.appendChild(Xc().createTextNode(n)) + } + function W_(t, e) { + var r = e.toPrecision() + t.appendChild(Xc().createTextNode(r)) + } + function q_(t, e) { + var r = e.toString() + t.appendChild(Xc().createTextNode(r)) + } + function X_(t, e) { + t.appendChild(Xc().createTextNode(e)) + } + var Z_ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + K_ = { + MultiLineString: 'lineStringMember', + MultiCurve: 'curveMember', + MultiPolygon: 'polygonMember', + MultiSurface: 'surfaceMember', + }, + H_ = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = t.call(this, n) || this).FEATURE_COLLECTION_PARSERS[ + I_ + ].featureMember = Ic(r.readFeaturesInternal)), + (r.schemaLocation = n.schemaLocation + ? n.schemaLocation + : 'http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd'), + r + ) + } + return ( + Z_(e, t), + (e.prototype.readFlatCoordinates = function (t, e) { + var r = Ec(t, !1).replace(/^\s*|\s*$/g, ''), + n = e[0].srsName, + i = 'enu' + if (n) { + var o = Gr(n) + o && (i = o.getAxisOrientation()) + } + for ( + var a = r.trim().split(/\s+/), s = [], l = 0, u = a.length; + l < u; + l++ + ) { + var c = a[l].split(/,+/), + h = parseFloat(c[0]), + p = parseFloat(c[1]), + f = 3 === c.length ? parseFloat(c[2]) : 0 + 'en' === i.substr(0, 2) ? s.push(h, p, f) : s.push(p, h, f) + } + return s + }), + (e.prototype.readBox = function (t, e) { + var r = Uc([null], this.BOX_PARSERS_, t, e, this) + return ie(r[1][0], r[1][1], r[1][3], r[1][4]) + }), + (e.prototype.innerBoundaryIsParser = function (t, e) { + var r = Uc(void 0, this.RING_PARSERS, t, e, this) + r && e[e.length - 1].push(r) + }), + (e.prototype.outerBoundaryIsParser = function (t, e) { + var r = Uc(void 0, this.RING_PARSERS, t, e, this) + r && (e[e.length - 1][0] = r) + }), + (e.prototype.GEOMETRY_NODE_FACTORY_ = function (t, e, r) { + var n, + i = e[e.length - 1], + o = i.multiSurface, + a = i.surface, + s = i.multiCurve + return ( + Array.isArray(t) + ? (n = 'Envelope') + : 'MultiPolygon' === (n = t.getType()) && !0 === o + ? (n = 'MultiSurface') + : 'Polygon' === n && !0 === a + ? (n = 'Surface') + : 'MultiLineString' === n && + !0 === s && + (n = 'MultiCurve'), + Sc('http://www.opengis.net/gml', n) + ) + }), + (e.prototype.writeFeatureElement = function (t, e, r) { + var n = e.getId() + n && t.setAttribute('fid', n) + var i = r[r.length - 1], + o = i.featureNS, + a = e.getGeometryName() + i.serializers || ((i.serializers = {}), (i.serializers[o] = {})) + var s = [], + l = [] + if (e.hasProperties()) { + var u = e.getProperties() + for (var c in u) { + var h = u[c] + null !== h && + (s.push(c), + l.push(h), + c == a || 'function' == typeof h.getSimplifiedGeometry + ? c in i.serializers[o] || + (i.serializers[o][c] = Ac( + this.writeGeometryElement, + this, + )) + : c in i.serializers[o] || (i.serializers[o][c] = Ac(X_))) + } + } + var p = O({}, i) + ;(p.node = t), Vc(p, i.serializers, jc(void 0, o), l, r, s) + }), + (e.prototype.writeCurveOrLineString = function (t, e, r) { + var n = r[r.length - 1].srsName + if ( + ('LineStringSegment' !== t.nodeName && + n && + t.setAttribute('srsName', n), + 'LineString' === t.nodeName || + 'LineStringSegment' === t.nodeName) + ) { + var i = this.createCoordinatesNode_(t.namespaceURI) + t.appendChild(i), this.writeCoordinates_(i, e, r) + } else if ('Curve' === t.nodeName) { + var o = Sc(t.namespaceURI, 'segments') + t.appendChild(o), this.writeCurveSegments_(o, e, r) + } + }), + (e.prototype.writeLineStringOrCurveMember = function (t, e, r) { + var n = this.GEOMETRY_NODE_FACTORY_(e, r) + n && (t.appendChild(n), this.writeCurveOrLineString(n, e, r)) + }), + (e.prototype.writeMultiCurveOrLineString = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName, + a = n.curve + o && t.setAttribute('srsName', o) + var s = e.getLineStrings() + Vc( + { node: t, hasZ: i, srsName: o, curve: a }, + this.LINESTRINGORCURVEMEMBER_SERIALIZERS, + this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, + s, + r, + void 0, + this, + ) + }), + (e.prototype.writeGeometryElement = function (t, e, r) { + var n, + i = r[r.length - 1], + o = O({}, i) + ;(o.node = t), + (n = Array.isArray(e) ? qy(e, i) : Wy(e, !0, i)), + Vc( + o, + this.GEOMETRY_SERIALIZERS, + this.GEOMETRY_NODE_FACTORY_, + [n], + r, + void 0, + this, + ) + }), + (e.prototype.createCoordinatesNode_ = function (t) { + var e = Sc(t, 'coordinates') + return ( + e.setAttribute('decimal', '.'), + e.setAttribute('cs', ','), + e.setAttribute('ts', ' '), + e + ) + }), + (e.prototype.writeCoordinates_ = function (t, e, r) { + for ( + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName, + a = e.getCoordinates(), + s = a.length, + l = new Array(s), + u = 0; + u < s; + ++u + ) { + var c = a[u] + l[u] = this.getCoords_(c, o, i) + } + X_(t, l.join(' ')) + }), + (e.prototype.writeCurveSegments_ = function (t, e, r) { + var n = Sc(t.namespaceURI, 'LineStringSegment') + t.appendChild(n), this.writeCurveOrLineString(n, e, r) + }), + (e.prototype.writeSurfaceOrPolygon = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName + if ( + ('PolygonPatch' !== t.nodeName && + o && + t.setAttribute('srsName', o), + 'Polygon' === t.nodeName || 'PolygonPatch' === t.nodeName) + ) { + var a = e.getLinearRings() + Vc( + { node: t, hasZ: i, srsName: o }, + this.RING_SERIALIZERS, + this.RING_NODE_FACTORY_, + a, + r, + void 0, + this, + ) + } else if ('Surface' === t.nodeName) { + var s = Sc(t.namespaceURI, 'patches') + t.appendChild(s), this.writeSurfacePatches_(s, e, r) + } + }), + (e.prototype.RING_NODE_FACTORY_ = function (t, e, r) { + var n = e[e.length - 1], + i = n.node, + o = n.exteriorWritten + return ( + void 0 === o && (n.exteriorWritten = !0), + Sc( + i.namespaceURI, + void 0 !== o ? 'innerBoundaryIs' : 'outerBoundaryIs', + ) + ) + }), + (e.prototype.writeSurfacePatches_ = function (t, e, r) { + var n = Sc(t.namespaceURI, 'PolygonPatch') + t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r) + }), + (e.prototype.writeRing = function (t, e, r) { + var n = Sc(t.namespaceURI, 'LinearRing') + t.appendChild(n), this.writeLinearRing(n, e, r) + }), + (e.prototype.getCoords_ = function (t, e, r) { + var n = 'enu' + e && (n = Gr(e).getAxisOrientation()) + var i = + 'en' === n.substr(0, 2) ? t[0] + ',' + t[1] : t[1] + ',' + t[0] + r && (i += ',' + (t[2] || 0)) + return i + }), + (e.prototype.writePoint = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName + o && t.setAttribute('srsName', o) + var a = this.createCoordinatesNode_(t.namespaceURI) + t.appendChild(a) + var s = e.getCoordinates() + X_(a, this.getCoords_(s, o, i)) + }), + (e.prototype.writeMultiPoint = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName + o && t.setAttribute('srsName', o) + var a = e.getPoints() + Vc( + { node: t, hasZ: i, srsName: o }, + this.POINTMEMBER_SERIALIZERS, + jc('pointMember'), + a, + r, + void 0, + this, + ) + }), + (e.prototype.writePointMember = function (t, e, r) { + var n = Sc(t.namespaceURI, 'Point') + t.appendChild(n), this.writePoint(n, e, r) + }), + (e.prototype.writeLinearRing = function (t, e, r) { + var n = r[r.length - 1].srsName + n && t.setAttribute('srsName', n) + var i = this.createCoordinatesNode_(t.namespaceURI) + t.appendChild(i), this.writeCoordinates_(i, e, r) + }), + (e.prototype.writeMultiSurfaceOrPolygon = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName, + a = n.surface + o && t.setAttribute('srsName', o) + var s = e.getPolygons() + Vc( + { node: t, hasZ: i, srsName: o, surface: a }, + this.SURFACEORPOLYGONMEMBER_SERIALIZERS, + this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, + s, + r, + void 0, + this, + ) + }), + (e.prototype.writeSurfaceOrPolygonMember = function (t, e, r) { + var n = this.GEOMETRY_NODE_FACTORY_(e, r) + n && (t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r)) + }), + (e.prototype.writeEnvelope = function (t, e, r) { + var n = r[r.length - 1].srsName + n && t.setAttribute('srsName', n) + var i = [e[0] + ' ' + e[1], e[2] + ' ' + e[3]] + Vc( + { node: t }, + this.ENVELOPE_SERIALIZERS, + Nc, + i, + r, + ['lowerCorner', 'upperCorner'], + this, + ) + }), + (e.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function ( + t, + e, + r, + ) { + var n = e[e.length - 1].node + return Sc('http://www.opengis.net/gml', K_[n.nodeName]) + }), + e + ) + })(F_) + ;(H_.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = { + 'http://www.opengis.net/gml': { + coordinates: Lc(H_.prototype.readFlatCoordinates), + }, + }), + (H_.prototype.FLAT_LINEAR_RINGS_PARSERS = { + 'http://www.opengis.net/gml': { + innerBoundaryIs: H_.prototype.innerBoundaryIsParser, + outerBoundaryIs: H_.prototype.outerBoundaryIsParser, + }, + }), + (H_.prototype.BOX_PARSERS_ = { + 'http://www.opengis.net/gml': { + coordinates: Ic(H_.prototype.readFlatCoordinates), + }, + }), + (H_.prototype.GEOMETRY_PARSERS = { + 'http://www.opengis.net/gml': { + Point: Lc(F_.prototype.readPoint), + MultiPoint: Lc(F_.prototype.readMultiPoint), + LineString: Lc(F_.prototype.readLineString), + MultiLineString: Lc(F_.prototype.readMultiLineString), + LinearRing: Lc(F_.prototype.readLinearRing), + Polygon: Lc(F_.prototype.readPolygon), + MultiPolygon: Lc(F_.prototype.readMultiPolygon), + Box: Lc(H_.prototype.readBox), + }, + }), + (H_.prototype.GEOMETRY_SERIALIZERS = { + 'http://www.opengis.net/gml': { + Curve: Ac(H_.prototype.writeCurveOrLineString), + MultiCurve: Ac(H_.prototype.writeMultiCurveOrLineString), + Point: Ac(H_.prototype.writePoint), + MultiPoint: Ac(H_.prototype.writeMultiPoint), + LineString: Ac(H_.prototype.writeCurveOrLineString), + MultiLineString: Ac(H_.prototype.writeMultiCurveOrLineString), + LinearRing: Ac(H_.prototype.writeLinearRing), + Polygon: Ac(H_.prototype.writeSurfaceOrPolygon), + MultiPolygon: Ac(H_.prototype.writeMultiSurfaceOrPolygon), + Surface: Ac(H_.prototype.writeSurfaceOrPolygon), + MultiSurface: Ac(H_.prototype.writeMultiSurfaceOrPolygon), + Envelope: Ac(H_.prototype.writeEnvelope), + }, + }), + (H_.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml': { + lineStringMember: Ac(H_.prototype.writeLineStringOrCurveMember), + curveMember: Ac(H_.prototype.writeLineStringOrCurveMember), + }, + }), + (H_.prototype.RING_SERIALIZERS = { + 'http://www.opengis.net/gml': { + outerBoundaryIs: Ac(H_.prototype.writeRing), + innerBoundaryIs: Ac(H_.prototype.writeRing), + }, + }), + (H_.prototype.POINTMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml': { + pointMember: Ac(H_.prototype.writePointMember), + }, + }), + (H_.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml': { + surfaceMember: Ac(H_.prototype.writeSurfaceOrPolygonMember), + polygonMember: Ac(H_.prototype.writeSurfaceOrPolygonMember), + }, + }), + (H_.prototype.ENVELOPE_SERIALIZERS = { + 'http://www.opengis.net/gml': { + lowerCorner: Ac(X_), + upperCorner: Ac(X_), + }, + }) + var $_ = H_, + J_ = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + Q_ = { + MultiLineString: 'lineStringMember', + MultiCurve: 'curveMember', + MultiPolygon: 'polygonMember', + MultiSurface: 'surfaceMember', + }, + tb = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = t.call(this, n) || this).surface_ = + void 0 !== n.surface && n.surface), + (r.curve_ = void 0 !== n.curve && n.curve), + (r.multiCurve_ = void 0 === n.multiCurve || n.multiCurve), + (r.multiSurface_ = void 0 === n.multiSurface || n.multiSurface), + (r.schemaLocation = n.schemaLocation + ? n.schemaLocation + : 'http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd'), + (r.hasZ = void 0 !== n.hasZ && n.hasZ), + r + ) + } + return ( + J_(e, t), + (e.prototype.readMultiCurve = function (t, e) { + var r = Uc([], this.MULTICURVE_PARSERS, t, e, this) + return r ? new Zy(r) : void 0 + }), + (e.prototype.readMultiSurface = function (t, e) { + var r = Uc([], this.MULTISURFACE_PARSERS, t, e, this) + if (r) return new Jy(r) + }), + (e.prototype.curveMemberParser = function (t, e) { + zc(this.CURVEMEMBER_PARSERS, t, e, this) + }), + (e.prototype.surfaceMemberParser = function (t, e) { + zc(this.SURFACEMEMBER_PARSERS, t, e, this) + }), + (e.prototype.readPatch = function (t, e) { + return Uc([null], this.PATCHES_PARSERS, t, e, this) + }), + (e.prototype.readSegment = function (t, e) { + return Uc([null], this.SEGMENTS_PARSERS, t, e, this) + }), + (e.prototype.readPolygonPatch = function (t, e) { + return Uc([null], this.FLAT_LINEAR_RINGS_PARSERS, t, e, this) + }), + (e.prototype.readLineStringSegment = function (t, e) { + return Uc( + [null], + this.GEOMETRY_FLAT_COORDINATES_PARSERS, + t, + e, + this, + ) + }), + (e.prototype.interiorParser = function (t, e) { + var r = Uc(void 0, this.RING_PARSERS, t, e, this) + r && e[e.length - 1].push(r) + }), + (e.prototype.exteriorParser = function (t, e) { + var r = Uc(void 0, this.RING_PARSERS, t, e, this) + r && (e[e.length - 1][0] = r) + }), + (e.prototype.readSurface = function (t, e) { + var r = Uc([null], this.SURFACE_PARSERS, t, e, this) + if (r && r[0]) { + var n, + i = r[0], + o = [i.length], + a = void 0 + for (a = 1, n = r.length; a < n; ++a) + v(i, r[a]), o.push(i.length) + return new fi(i, mt, o) + } + }), + (e.prototype.readCurve = function (t, e) { + var r = Uc([null], this.CURVE_PARSERS, t, e, this) + return r ? new Py(r, mt) : void 0 + }), + (e.prototype.readEnvelope = function (t, e) { + var r = Uc([null], this.ENVELOPE_PARSERS, t, e, this) + return ie(r[1][0], r[1][1], r[2][0], r[2][1]) + }), + (e.prototype.readFlatPos = function (t, e) { + for ( + var r, + n = Ec(t, !1), + i = /^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/, + o = []; + (r = i.exec(n)); + + ) + o.push(parseFloat(r[1])), (n = n.substr(r[0].length)) + if ('' === n) { + var a = e[0].srsName, + s = 'enu' + if (a) s = Gr(a).getAxisOrientation() + if ('neu' === s) { + var l, + u = void 0 + for (u = 0, l = o.length; u < l; u += 3) { + var c = o[u], + h = o[u + 1] + ;(o[u] = h), (o[u + 1] = c) + } + } + var p = o.length + if ((2 == p && o.push(0), 0 !== p)) return o + } + }), + (e.prototype.readFlatPosList = function (t, e) { + var r = Ec(t, !1).replace(/^\s*|\s*$/g, ''), + n = e[0], + i = n.srsName, + o = n.srsDimension, + a = 'enu' + i && (a = Gr(i).getAxisOrientation()) + var s, + l, + u, + c = r.split(/\s+/), + h = 2 + t.getAttribute('srsDimension') + ? (h = z_(t.getAttribute('srsDimension'))) + : t.getAttribute('dimension') + ? (h = z_(t.getAttribute('dimension'))) + : t.parentNode.getAttribute('srsDimension') + ? (h = z_(t.parentNode.getAttribute('srsDimension'))) + : o && (h = z_(o)) + for (var p = [], f = 0, d = c.length; f < d; f += h) + (s = parseFloat(c[f])), + (l = parseFloat(c[f + 1])), + (u = 3 === h ? parseFloat(c[f + 2]) : 0), + 'en' === a.substr(0, 2) ? p.push(s, l, u) : p.push(l, s, u) + return p + }), + (e.prototype.writePos_ = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = i ? '3' : '2' + t.setAttribute('srsDimension', o) + var a = n.srsName, + s = 'enu' + a && (s = Gr(a).getAxisOrientation()) + var l, + u = e.getCoordinates() + ;((l = + 'en' === s.substr(0, 2) + ? u[0] + ' ' + u[1] + : u[1] + ' ' + u[0]), + i) && (l += ' ' + (u[2] || 0)) + X_(t, l) + }), + (e.prototype.getCoords_ = function (t, e, r) { + var n = 'enu' + e && (n = Gr(e).getAxisOrientation()) + var i = + 'en' === n.substr(0, 2) ? t[0] + ' ' + t[1] : t[1] + ' ' + t[0] + r && (i += ' ' + (t[2] || 0)) + return i + }), + (e.prototype.writePosList_ = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = i ? '3' : '2' + t.setAttribute('srsDimension', o) + for ( + var a, + s = n.srsName, + l = e.getCoordinates(), + u = l.length, + c = new Array(u), + h = 0; + h < u; + ++h + ) + (a = l[h]), (c[h] = this.getCoords_(a, s, i)) + X_(t, c.join(' ')) + }), + (e.prototype.writePoint = function (t, e, r) { + var n = r[r.length - 1].srsName + n && t.setAttribute('srsName', n) + var i = Sc(t.namespaceURI, 'pos') + t.appendChild(i), this.writePos_(i, e, r) + }), + (e.prototype.writeEnvelope = function (t, e, r) { + var n = r[r.length - 1].srsName + n && t.setAttribute('srsName', n) + var i = [e[0] + ' ' + e[1], e[2] + ' ' + e[3]] + Vc( + { node: t }, + this.ENVELOPE_SERIALIZERS, + Nc, + i, + r, + ['lowerCorner', 'upperCorner'], + this, + ) + }), + (e.prototype.writeLinearRing = function (t, e, r) { + var n = r[r.length - 1].srsName + n && t.setAttribute('srsName', n) + var i = Sc(t.namespaceURI, 'posList') + t.appendChild(i), this.writePosList_(i, e, r) + }), + (e.prototype.RING_NODE_FACTORY_ = function (t, e, r) { + var n = e[e.length - 1], + i = n.node, + o = n.exteriorWritten + return ( + void 0 === o && (n.exteriorWritten = !0), + Sc(i.namespaceURI, void 0 !== o ? 'interior' : 'exterior') + ) + }), + (e.prototype.writeSurfaceOrPolygon = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName + if ( + ('PolygonPatch' !== t.nodeName && + o && + t.setAttribute('srsName', o), + 'Polygon' === t.nodeName || 'PolygonPatch' === t.nodeName) + ) { + var a = e.getLinearRings() + Vc( + { node: t, hasZ: i, srsName: o }, + this.RING_SERIALIZERS, + this.RING_NODE_FACTORY_, + a, + r, + void 0, + this, + ) + } else if ('Surface' === t.nodeName) { + var s = Sc(t.namespaceURI, 'patches') + t.appendChild(s), this.writeSurfacePatches_(s, e, r) + } + }), + (e.prototype.writeCurveOrLineString = function (t, e, r) { + var n = r[r.length - 1].srsName + if ( + ('LineStringSegment' !== t.nodeName && + n && + t.setAttribute('srsName', n), + 'LineString' === t.nodeName || + 'LineStringSegment' === t.nodeName) + ) { + var i = Sc(t.namespaceURI, 'posList') + t.appendChild(i), this.writePosList_(i, e, r) + } else if ('Curve' === t.nodeName) { + var o = Sc(t.namespaceURI, 'segments') + t.appendChild(o), this.writeCurveSegments_(o, e, r) + } + }), + (e.prototype.writeMultiSurfaceOrPolygon = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName, + a = n.surface + o && t.setAttribute('srsName', o) + var s = e.getPolygons() + Vc( + { node: t, hasZ: i, srsName: o, surface: a }, + this.SURFACEORPOLYGONMEMBER_SERIALIZERS, + this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, + s, + r, + void 0, + this, + ) + }), + (e.prototype.writeMultiPoint = function (t, e, r) { + var n = r[r.length - 1], + i = n.srsName, + o = n.hasZ + i && t.setAttribute('srsName', i) + var a = e.getPoints() + Vc( + { node: t, hasZ: o, srsName: i }, + this.POINTMEMBER_SERIALIZERS, + jc('pointMember'), + a, + r, + void 0, + this, + ) + }), + (e.prototype.writeMultiCurveOrLineString = function (t, e, r) { + var n = r[r.length - 1], + i = n.hasZ, + o = n.srsName, + a = n.curve + o && t.setAttribute('srsName', o) + var s = e.getLineStrings() + Vc( + { node: t, hasZ: i, srsName: o, curve: a }, + this.LINESTRINGORCURVEMEMBER_SERIALIZERS, + this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, + s, + r, + void 0, + this, + ) + }), + (e.prototype.writeRing = function (t, e, r) { + var n = Sc(t.namespaceURI, 'LinearRing') + t.appendChild(n), this.writeLinearRing(n, e, r) + }), + (e.prototype.writeSurfaceOrPolygonMember = function (t, e, r) { + var n = this.GEOMETRY_NODE_FACTORY_(e, r) + n && (t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r)) + }), + (e.prototype.writePointMember = function (t, e, r) { + var n = Sc(t.namespaceURI, 'Point') + t.appendChild(n), this.writePoint(n, e, r) + }), + (e.prototype.writeLineStringOrCurveMember = function (t, e, r) { + var n = this.GEOMETRY_NODE_FACTORY_(e, r) + n && (t.appendChild(n), this.writeCurveOrLineString(n, e, r)) + }), + (e.prototype.writeSurfacePatches_ = function (t, e, r) { + var n = Sc(t.namespaceURI, 'PolygonPatch') + t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r) + }), + (e.prototype.writeCurveSegments_ = function (t, e, r) { + var n = Sc(t.namespaceURI, 'LineStringSegment') + t.appendChild(n), this.writeCurveOrLineString(n, e, r) + }), + (e.prototype.writeGeometryElement = function (t, e, r) { + var n, + i = r[r.length - 1], + o = O({}, i) + ;(o.node = t), + (n = Array.isArray(e) ? qy(e, i) : Wy(e, !0, i)), + Vc( + o, + this.GEOMETRY_SERIALIZERS, + this.GEOMETRY_NODE_FACTORY_, + [n], + r, + void 0, + this, + ) + }), + (e.prototype.writeFeatureElement = function (t, e, r) { + var n = e.getId() + n && t.setAttribute('fid', n) + var i = r[r.length - 1], + o = i.featureNS, + a = e.getGeometryName() + i.serializers || ((i.serializers = {}), (i.serializers[o] = {})) + var s = [], + l = [] + if (e.hasProperties()) { + var u = e.getProperties() + for (var c in u) { + var h = u[c] + null !== h && + (s.push(c), + l.push(h), + c == a || 'function' == typeof h.getSimplifiedGeometry + ? c in i.serializers[o] || + (i.serializers[o][c] = Ac( + this.writeGeometryElement, + this, + )) + : c in i.serializers[o] || (i.serializers[o][c] = Ac(X_))) + } + } + var p = O({}, i) + ;(p.node = t), Vc(p, i.serializers, jc(void 0, o), l, r, s) + }), + (e.prototype.writeFeatureMembers_ = function (t, e, r) { + var n = r[r.length - 1], + i = n.featureType, + o = n.featureNS, + a = {} + ;(a[o] = {}), (a[o][i] = Ac(this.writeFeatureElement, this)) + var s = O({}, n) + ;(s.node = t), Vc(s, a, jc(i, o), e, r) + }), + (e.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function ( + t, + e, + r, + ) { + var n = e[e.length - 1].node + return Sc(this.namespace, Q_[n.nodeName]) + }), + (e.prototype.GEOMETRY_NODE_FACTORY_ = function (t, e, r) { + var n, + i = e[e.length - 1], + o = i.multiSurface, + a = i.surface, + s = i.curve, + l = i.multiCurve + return ( + Array.isArray(t) + ? (n = 'Envelope') + : 'MultiPolygon' === (n = t.getType()) && !0 === o + ? (n = 'MultiSurface') + : 'Polygon' === n && !0 === a + ? (n = 'Surface') + : 'LineString' === n && !0 === s + ? (n = 'Curve') + : 'MultiLineString' === n && + !0 === l && + (n = 'MultiCurve'), + Sc(this.namespace, n) + ) + }), + (e.prototype.writeGeometryNode = function (t, e) { + e = this.adaptOptions(e) + var r = Sc(this.namespace, 'geom'), + n = { + node: r, + hasZ: this.hasZ, + srsName: this.srsName, + curve: this.curve_, + surface: this.surface_, + multiSurface: this.multiSurface_, + multiCurve: this.multiCurve_, + } + return e && O(n, e), this.writeGeometryElement(r, t, [n]), r + }), + (e.prototype.writeFeaturesNode = function (t, e) { + e = this.adaptOptions(e) + var r = Sc(this.namespace, 'featureMembers') + r.setAttributeNS(wc, 'xsi:schemaLocation', this.schemaLocation) + var n = { + srsName: this.srsName, + hasZ: this.hasZ, + curve: this.curve_, + surface: this.surface_, + multiSurface: this.multiSurface_, + multiCurve: this.multiCurve_, + featureNS: this.featureNS, + featureType: this.featureType, + } + return e && O(n, e), this.writeFeatureMembers_(r, t, [n]), r + }), + e + ) + })(F_) + ;(tb.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = { + 'http://www.opengis.net/gml': { + pos: Lc(tb.prototype.readFlatPos), + posList: Lc(tb.prototype.readFlatPosList), + coordinates: Lc($_.prototype.readFlatCoordinates), + }, + }), + (tb.prototype.FLAT_LINEAR_RINGS_PARSERS = { + 'http://www.opengis.net/gml': { + interior: tb.prototype.interiorParser, + exterior: tb.prototype.exteriorParser, + }, + }), + (tb.prototype.GEOMETRY_PARSERS = { + 'http://www.opengis.net/gml': { + Point: Lc(F_.prototype.readPoint), + MultiPoint: Lc(F_.prototype.readMultiPoint), + LineString: Lc(F_.prototype.readLineString), + MultiLineString: Lc(F_.prototype.readMultiLineString), + LinearRing: Lc(F_.prototype.readLinearRing), + Polygon: Lc(F_.prototype.readPolygon), + MultiPolygon: Lc(F_.prototype.readMultiPolygon), + Surface: Lc(tb.prototype.readSurface), + MultiSurface: Lc(tb.prototype.readMultiSurface), + Curve: Lc(tb.prototype.readCurve), + MultiCurve: Lc(tb.prototype.readMultiCurve), + Envelope: Lc(tb.prototype.readEnvelope), + }, + }), + (tb.prototype.MULTICURVE_PARSERS = { + 'http://www.opengis.net/gml': { + curveMember: Ic(tb.prototype.curveMemberParser), + curveMembers: Ic(tb.prototype.curveMemberParser), + }, + }), + (tb.prototype.MULTISURFACE_PARSERS = { + 'http://www.opengis.net/gml': { + surfaceMember: Ic(tb.prototype.surfaceMemberParser), + surfaceMembers: Ic(tb.prototype.surfaceMemberParser), + }, + }), + (tb.prototype.CURVEMEMBER_PARSERS = { + 'http://www.opengis.net/gml': { + LineString: Ic(F_.prototype.readLineString), + Curve: Ic(tb.prototype.readCurve), + }, + }), + (tb.prototype.SURFACEMEMBER_PARSERS = { + 'http://www.opengis.net/gml': { + Polygon: Ic(F_.prototype.readPolygon), + Surface: Ic(tb.prototype.readSurface), + }, + }), + (tb.prototype.SURFACE_PARSERS = { + 'http://www.opengis.net/gml': { patches: Lc(tb.prototype.readPatch) }, + }), + (tb.prototype.CURVE_PARSERS = { + 'http://www.opengis.net/gml': { + segments: Lc(tb.prototype.readSegment), + }, + }), + (tb.prototype.ENVELOPE_PARSERS = { + 'http://www.opengis.net/gml': { + lowerCorner: Ic(tb.prototype.readFlatPosList), + upperCorner: Ic(tb.prototype.readFlatPosList), + }, + }), + (tb.prototype.PATCHES_PARSERS = { + 'http://www.opengis.net/gml': { + PolygonPatch: Lc(tb.prototype.readPolygonPatch), + }, + }), + (tb.prototype.SEGMENTS_PARSERS = { + 'http://www.opengis.net/gml': { + LineStringSegment: Lc(tb.prototype.readLineStringSegment), + }, + }), + tb.prototype.writeFeatures, + (tb.prototype.RING_SERIALIZERS = { + 'http://www.opengis.net/gml': { + exterior: Ac(tb.prototype.writeRing), + interior: Ac(tb.prototype.writeRing), + }, + }), + (tb.prototype.ENVELOPE_SERIALIZERS = { + 'http://www.opengis.net/gml': { + lowerCorner: Ac(X_), + upperCorner: Ac(X_), + }, + }), + (tb.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml': { + surfaceMember: Ac(tb.prototype.writeSurfaceOrPolygonMember), + polygonMember: Ac(tb.prototype.writeSurfaceOrPolygonMember), + }, + }), + (tb.prototype.POINTMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml': { + pointMember: Ac(tb.prototype.writePointMember), + }, + }), + (tb.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml': { + lineStringMember: Ac(tb.prototype.writeLineStringOrCurveMember), + curveMember: Ac(tb.prototype.writeLineStringOrCurveMember), + }, + }), + (tb.prototype.GEOMETRY_SERIALIZERS = { + 'http://www.opengis.net/gml': { + Curve: Ac(tb.prototype.writeCurveOrLineString), + MultiCurve: Ac(tb.prototype.writeMultiCurveOrLineString), + Point: Ac(tb.prototype.writePoint), + MultiPoint: Ac(tb.prototype.writeMultiPoint), + LineString: Ac(tb.prototype.writeCurveOrLineString), + MultiLineString: Ac(tb.prototype.writeMultiCurveOrLineString), + LinearRing: Ac(tb.prototype.writeLinearRing), + Polygon: Ac(tb.prototype.writeSurfaceOrPolygon), + MultiPolygon: Ac(tb.prototype.writeMultiSurfaceOrPolygon), + Surface: Ac(tb.prototype.writeSurfaceOrPolygon), + MultiSurface: Ac(tb.prototype.writeMultiSurfaceOrPolygon), + Envelope: Ac(tb.prototype.writeEnvelope), + }, + }) + var eb = tb, + rb = eb + rb.prototype.writeFeatures, rb.prototype.writeFeaturesNode + var nb = rb, + ib = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ob = (function (t) { + function e(e) { + var r = this, + n = e || {} + return ( + ((r = t.call(this, n) || this).schemaLocation = n.schemaLocation + ? n.schemaLocation + : r.namespace + + ' http://schemas.opengis.net/gml/3.2.1/gml.xsd'), + r + ) + } + return ib(e, t), e + })(eb) + ;(ob.prototype.namespace = 'http://www.opengis.net/gml/3.2'), + (ob.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + pos: Lc(eb.prototype.readFlatPos), + posList: Lc(eb.prototype.readFlatPosList), + coordinates: Lc($_.prototype.readFlatCoordinates), + }, + }), + (ob.prototype.FLAT_LINEAR_RINGS_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + interior: eb.prototype.interiorParser, + exterior: eb.prototype.exteriorParser, + }, + }), + (ob.prototype.GEOMETRY_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + Point: Lc(F_.prototype.readPoint), + MultiPoint: Lc(F_.prototype.readMultiPoint), + LineString: Lc(F_.prototype.readLineString), + MultiLineString: Lc(F_.prototype.readMultiLineString), + LinearRing: Lc(F_.prototype.readLinearRing), + Polygon: Lc(F_.prototype.readPolygon), + MultiPolygon: Lc(F_.prototype.readMultiPolygon), + Surface: Lc(ob.prototype.readSurface), + MultiSurface: Lc(eb.prototype.readMultiSurface), + Curve: Lc(ob.prototype.readCurve), + MultiCurve: Lc(eb.prototype.readMultiCurve), + Envelope: Lc(ob.prototype.readEnvelope), + }, + }), + (ob.prototype.MULTICURVE_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + curveMember: Ic(eb.prototype.curveMemberParser), + curveMembers: Ic(eb.prototype.curveMemberParser), + }, + }), + (ob.prototype.MULTISURFACE_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + surfaceMember: Ic(eb.prototype.surfaceMemberParser), + surfaceMembers: Ic(eb.prototype.surfaceMemberParser), + }, + }), + (ob.prototype.CURVEMEMBER_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + LineString: Ic(F_.prototype.readLineString), + Curve: Ic(eb.prototype.readCurve), + }, + }), + (ob.prototype.SURFACEMEMBER_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + Polygon: Ic(F_.prototype.readPolygon), + Surface: Ic(eb.prototype.readSurface), + }, + }), + (ob.prototype.SURFACE_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + patches: Lc(eb.prototype.readPatch), + }, + }), + (ob.prototype.CURVE_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + segments: Lc(eb.prototype.readSegment), + }, + }), + (ob.prototype.ENVELOPE_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + lowerCorner: Ic(eb.prototype.readFlatPosList), + upperCorner: Ic(eb.prototype.readFlatPosList), + }, + }), + (ob.prototype.PATCHES_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + PolygonPatch: Lc(eb.prototype.readPolygonPatch), + }, + }), + (ob.prototype.SEGMENTS_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + LineStringSegment: Lc(eb.prototype.readLineStringSegment), + }, + }), + (ob.prototype.MULTIPOINT_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + pointMember: Ic(F_.prototype.pointMemberParser), + pointMembers: Ic(F_.prototype.pointMemberParser), + }, + }), + (ob.prototype.MULTILINESTRING_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + lineStringMember: Ic(F_.prototype.lineStringMemberParser), + lineStringMembers: Ic(F_.prototype.lineStringMemberParser), + }, + }), + (ob.prototype.MULTIPOLYGON_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + polygonMember: Ic(F_.prototype.polygonMemberParser), + polygonMembers: Ic(F_.prototype.polygonMemberParser), + }, + }), + (ob.prototype.POINTMEMBER_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + Point: Ic(F_.prototype.readFlatCoordinatesFromNode), + }, + }), + (ob.prototype.LINESTRINGMEMBER_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + LineString: Ic(F_.prototype.readLineString), + }, + }), + (ob.prototype.POLYGONMEMBER_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + Polygon: Ic(F_.prototype.readPolygon), + }, + }), + (ob.prototype.RING_PARSERS = { + 'http://www.opengis.net/gml/3.2': { + LinearRing: Lc(F_.prototype.readFlatLinearRing), + }, + }), + (ob.prototype.RING_SERIALIZERS = { + 'http://www.opengis.net/gml/3.2': { + exterior: Ac(eb.prototype.writeRing), + interior: Ac(eb.prototype.writeRing), + }, + }), + (ob.prototype.ENVELOPE_SERIALIZERS = { + 'http://www.opengis.net/gml/3.2': { + lowerCorner: Ac(X_), + upperCorner: Ac(X_), + }, + }), + (ob.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml/3.2': { + surfaceMember: Ac(eb.prototype.writeSurfaceOrPolygonMember), + polygonMember: Ac(eb.prototype.writeSurfaceOrPolygonMember), + }, + }), + (ob.prototype.POINTMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml/3.2': { + pointMember: Ac(eb.prototype.writePointMember), + }, + }), + (ob.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = { + 'http://www.opengis.net/gml/3.2': { + lineStringMember: Ac(eb.prototype.writeLineStringOrCurveMember), + curveMember: Ac(eb.prototype.writeLineStringOrCurveMember), + }, + }), + (ob.prototype.GEOMETRY_SERIALIZERS = { + 'http://www.opengis.net/gml/3.2': { + Curve: Ac(eb.prototype.writeCurveOrLineString), + MultiCurve: Ac(eb.prototype.writeMultiCurveOrLineString), + Point: Ac(ob.prototype.writePoint), + MultiPoint: Ac(eb.prototype.writeMultiPoint), + LineString: Ac(eb.prototype.writeCurveOrLineString), + MultiLineString: Ac(eb.prototype.writeMultiCurveOrLineString), + LinearRing: Ac(eb.prototype.writeLinearRing), + Polygon: Ac(eb.prototype.writeSurfaceOrPolygon), + MultiPolygon: Ac(eb.prototype.writeMultiSurfaceOrPolygon), + Surface: Ac(eb.prototype.writeSurfaceOrPolygon), + MultiSurface: Ac(eb.prototype.writeMultiSurfaceOrPolygon), + Envelope: Ac(eb.prototype.writeEnvelope), + }, + }) + var ab = ob, + sb = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + lb = [ + null, + 'http://www.topografix.com/GPX/1/0', + 'http://www.topografix.com/GPX/1/1', + ], + ub = { rte: Nb, trk: Db, wpt: Gb }, + cb = Gc(lb, { rte: Ic(Nb), trk: Ic(Db), wpt: Ic(Gb) }), + hb = Gc(lb, { text: Fc(U_, 'linkText'), type: Fc(U_, 'linkType') }), + pb = Gc(lb, { + rte: Ac(function (t, e, r) { + var n = r[0], + i = e.getProperties(), + o = { node: t } + o.properties = i + var a = e.getGeometry() + if (a.getType() == bt.LINE_STRING) { + var s = Wy(a, !0, n) + ;(o.geometryLayout = s.getLayout()), + (i.rtept = s.getCoordinates()) + } + var l = r[r.length - 1].node, + u = wb[l.namespaceURI], + c = Dc(i, u) + Vc(o, Sb, Nc, c, r, u) + }), + trk: Ac(function (t, e, r) { + var n = r[0], + i = e.getProperties(), + o = { node: t } + o.properties = i + var a = e.getGeometry() + if (a.getType() == bt.MULTI_LINE_STRING) { + var s = Wy(a, !0, n) + i.trkseg = s.getLineStrings() + } + var l = r[r.length - 1].node, + u = Tb[l.namespaceURI], + c = Dc(i, u) + Vc(o, Cb, Nc, c, r, u) + }), + wpt: Ac(function (t, e, r) { + var n = r[0], + i = r[r.length - 1] + i.properties = e.getProperties() + var o = e.getGeometry() + if (o.getType() == bt.POINT) { + var a = Wy(o, !0, n) + ;(i.geometryLayout = a.getLayout()), Ub(t, a.getCoordinates(), r) + } + }), + }), + fb = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.dataProjection = Gr('EPSG:4326')), + (r.readExtensions_ = n.readExtensions), + r + ) + } + return ( + sb(e, t), + (e.prototype.handleReadExtensions_ = function (t) { + t || (t = []) + for (var e = 0, r = t.length; e < r; ++e) { + var n = t[e] + if (this.readExtensions_) { + var i = n.get('extensionsNode_') || null + this.readExtensions_(n, i) + } + n.set('extensionsNode_', void 0) + } + }), + (e.prototype.readFeatureFromNode = function (t, e) { + if (!g(lb, t.namespaceURI)) return null + var r = ub[t.localName] + if (!r) return null + var n = r(t, [this.getReadOptions(t, e)]) + return n ? (this.handleReadExtensions_([n]), n) : null + }), + (e.prototype.readFeaturesFromNode = function (t, e) { + if (!g(lb, t.namespaceURI)) return [] + if ('gpx' == t.localName) { + var r = Uc([], cb, t, [this.getReadOptions(t, e)]) + return r ? (this.handleReadExtensions_(r), r) : [] + } + return [] + }), + (e.prototype.writeFeaturesNode = function (t, e) { + e = this.adaptOptions(e) + var r = Sc('http://www.topografix.com/GPX/1/1', 'gpx') + return ( + r.setAttributeNS( + 'http://www.w3.org/2000/xmlns/', + 'xmlns:xsi', + wc, + ), + r.setAttributeNS( + wc, + 'xsi:schemaLocation', + 'http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd', + ), + r.setAttribute('version', '1.1'), + r.setAttribute('creator', 'OpenLayers'), + Vc({ node: r }, pb, Mb, t, [e]), + r + ) + }), + e + ) + })(P_), + db = Gc(lb, { + name: Fc(U_), + cmt: Fc(U_), + desc: Fc(U_), + src: Fc(U_), + link: kb, + number: Fc(G_), + extensions: jb, + type: Fc(U_), + rtept: function (t, e) { + var r = Uc({}, gb, t, e) + if (r) { + var n = e[e.length - 1], + i = n.flatCoordinates, + o = n.layoutOptions + Fb(i, o, t, r) + } + }, + }), + gb = Gc(lb, { ele: Fc(N_), time: Fc(j_) }), + yb = Gc(lb, { + name: Fc(U_), + cmt: Fc(U_), + desc: Fc(U_), + src: Fc(U_), + link: kb, + number: Fc(G_), + type: Fc(U_), + extensions: jb, + trkseg: function (t, e) { + var r = e[e.length - 1] + zc(mb, t, e) + var n = r.flatCoordinates + r.ends.push(n.length) + }, + }), + mb = Gc(lb, { + trkpt: function (t, e) { + var r = Uc({}, vb, t, e) + if (r) { + var n = e[e.length - 1], + i = n.flatCoordinates, + o = n.layoutOptions + Fb(i, o, t, r) + } + }, + }), + vb = Gc(lb, { ele: Fc(N_), time: Fc(j_) }), + _b = Gc(lb, { + ele: Fc(N_), + time: Fc(j_), + magvar: Fc(N_), + geoidheight: Fc(N_), + name: Fc(U_), + cmt: Fc(U_), + desc: Fc(U_), + src: Fc(U_), + link: kb, + sym: Fc(U_), + type: Fc(U_), + fix: Fc(U_), + sat: Fc(G_), + hdop: Fc(N_), + vdop: Fc(N_), + pdop: Fc(N_), + ageofdgpsdata: Fc(N_), + dgpsid: Fc(G_), + extensions: jb, + }), + bb = ['text', 'type'], + xb = Gc(lb, { text: Ac(X_), type: Ac(X_) }), + wb = Gc(lb, [ + 'name', + 'cmt', + 'desc', + 'src', + 'link', + 'number', + 'type', + 'rtept', + ]), + Sb = Gc(lb, { + name: Ac(X_), + cmt: Ac(X_), + desc: Ac(X_), + src: Ac(X_), + link: Ac(zb), + number: Ac(q_), + type: Ac(X_), + rtept: kc(Ac(Ub)), + }), + Eb = Gc(lb, ['ele', 'time']), + Tb = Gc(lb, [ + 'name', + 'cmt', + 'desc', + 'src', + 'link', + 'number', + 'type', + 'trkseg', + ]), + Cb = Gc(lb, { + name: Ac(X_), + cmt: Ac(X_), + desc: Ac(X_), + src: Ac(X_), + link: Ac(zb), + number: Ac(q_), + type: Ac(X_), + trkseg: kc( + Ac(function (t, e, r) { + var n = { node: t } + ;(n.geometryLayout = e.getLayout()), + (n.properties = {}), + Vc(n, Pb, Ob, e.getCoordinates(), r) + }), + ), + }), + Ob = jc('trkpt'), + Pb = Gc(lb, { trkpt: Ac(Ub) }), + Rb = Gc(lb, [ + 'ele', + 'time', + 'magvar', + 'geoidheight', + 'name', + 'cmt', + 'desc', + 'src', + 'link', + 'sym', + 'type', + 'fix', + 'sat', + 'hdop', + 'vdop', + 'pdop', + 'ageofdgpsdata', + 'dgpsid', + ]), + Ib = Gc(lb, { + ele: Ac(W_), + time: Ac(Y_), + magvar: Ac(W_), + geoidheight: Ac(W_), + name: Ac(X_), + cmt: Ac(X_), + desc: Ac(X_), + src: Ac(X_), + link: Ac(zb), + sym: Ac(X_), + type: Ac(X_), + fix: Ac(X_), + sat: Ac(q_), + hdop: Ac(W_), + vdop: Ac(W_), + pdop: Ac(W_), + ageofdgpsdata: Ac(W_), + dgpsid: Ac(q_), + }), + Lb = { Point: 'wpt', LineString: 'rte', MultiLineString: 'trk' } + function Mb(t, e, r) { + var n = t.getGeometry() + if (n) { + var i = Lb[n.getType()] + if (i) return Sc(e[e.length - 1].node.namespaceURI, i) + } + } + function Fb(t, e, r, n) { + return ( + t.push( + parseFloat(r.getAttribute('lon')), + parseFloat(r.getAttribute('lat')), + ), + 'ele' in n ? (t.push(n.ele), delete n.ele, (e.hasZ = !0)) : t.push(0), + 'time' in n + ? (t.push(n.time), delete n.time, (e.hasM = !0)) + : t.push(0), + t + ) + } + function Ab(t, e, r) { + var n = yt, + i = 2 + if ( + (t.hasZ && t.hasM + ? ((n = _t), (i = 4)) + : t.hasZ + ? ((n = mt), (i = 3)) + : t.hasM && ((n = vt), (i = 3)), + 4 !== i) + ) { + for (var o = 0, a = e.length / 4; o < a; o++) + (e[o * i] = e[4 * o]), + (e[o * i + 1] = e[4 * o + 1]), + t.hasZ && (e[o * i + 2] = e[4 * o + 2]), + t.hasM && (e[o * i + 2] = e[4 * o + 3]) + if (((e.length = (e.length / 4) * i), r)) + for (o = 0, a = r.length; o < a; o++) r[o] = (r[o] / 4) * i + } + return n + } + function kb(t, e) { + var r = e[e.length - 1], + n = t.getAttribute('href') + null !== n && (r.link = n), zc(hb, t, e) + } + function jb(t, e) { + e[e.length - 1].extensionsNode_ = t + } + function Nb(t, e) { + var r = e[0], + n = Uc({ flatCoordinates: [], layoutOptions: {} }, db, t, e) + if (n) { + var i = n.flatCoordinates + delete n.flatCoordinates + var o = n.layoutOptions + delete n.layoutOptions + var a = Ab(o, i), + s = new Py(i, a) + Wy(s, !1, r) + var l = new gt(s) + return l.setProperties(n, !0), l + } + } + function Db(t, e) { + var r = e[0], + n = Uc({ flatCoordinates: [], ends: [], layoutOptions: {} }, yb, t, e) + if (n) { + var i = n.flatCoordinates + delete n.flatCoordinates + var o = n.ends + delete n.ends + var a = n.layoutOptions + delete n.layoutOptions + var s = Ab(a, i, o), + l = new Zy(i, s, o) + Wy(l, !1, r) + var u = new gt(l) + return u.setProperties(n, !0), u + } + } + function Gb(t, e) { + var r = e[0], + n = Uc({}, _b, t, e) + if (n) { + var i = {}, + o = Fb([], i, t, n), + a = Ab(i, o), + s = new qn(o, a) + Wy(s, !1, r) + var l = new gt(s) + return l.setProperties(n, !0), l + } + } + function zb(t, e, r) { + t.setAttribute('href', e) + var n = r[r.length - 1].properties, + i = [n.linkText, n.linkType] + Vc({ node: t }, xb, Nc, i, r, bb) + } + function Ub(t, e, r) { + var n = r[r.length - 1], + i = n.node.namespaceURI, + o = n.properties + switch ( + (t.setAttributeNS(null, 'lat', String(e[1])), + t.setAttributeNS(null, 'lon', String(e[0])), + n.geometryLayout) + ) { + case _t: + 0 !== e[3] && (o.time = e[3]) + case mt: + 0 !== e[2] && (o.ele = e[2]) + break + case vt: + 0 !== e[2] && (o.time = e[2]) + } + var a = 'rtept' == t.nodeName ? Eb[i] : Rb[i], + s = Dc(o, a) + Vc({ node: t, properties: o }, Ib, Nc, s, r, a) + } + var Bb = fb, + Vb = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function Yb(t) { + return 'string' == typeof t ? t : '' + } + var Wb, + qb, + Xb, + Zb, + Kb, + Hb, + $b, + Jb = (function (t) { + function e() { + return t.call(this) || this + } + return ( + Vb(e, t), + (e.prototype.getType = function () { + return Pu + }), + (e.prototype.readFeature = function (t, e) { + return this.readFeatureFromText(Yb(t), this.adaptOptions(e)) + }), + (e.prototype.readFeatureFromText = function (t, e) { + return n() + }), + (e.prototype.readFeatures = function (t, e) { + return this.readFeaturesFromText(Yb(t), this.adaptOptions(e)) + }), + (e.prototype.readFeaturesFromText = function (t, e) { + return n() + }), + (e.prototype.readGeometry = function (t, e) { + return this.readGeometryFromText(Yb(t), this.adaptOptions(e)) + }), + (e.prototype.readGeometryFromText = function (t, e) { + return n() + }), + (e.prototype.readProjection = function (t) { + return this.readProjectionFromText(Yb(t)) + }), + (e.prototype.readProjectionFromText = function (t) { + return this.dataProjection + }), + (e.prototype.writeFeature = function (t, e) { + return this.writeFeatureText(t, this.adaptOptions(e)) + }), + (e.prototype.writeFeatureText = function (t, e) { + return n() + }), + (e.prototype.writeFeatures = function (t, e) { + return this.writeFeaturesText(t, this.adaptOptions(e)) + }), + (e.prototype.writeFeaturesText = function (t, e) { + return n() + }), + (e.prototype.writeGeometry = function (t, e) { + return this.writeGeometryText(t, this.adaptOptions(e)) + }), + (e.prototype.writeGeometryText = function (t, e) { + return n() + }), + e + ) + })(Yy), + Qb = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + tx = 'barometric', + ex = 'gps', + rx = 'none', + nx = + /^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])([AV])(\d{5})(\d{5})/, + ix = /^H.([A-Z]{3}).*?:(.*)/, + ox = /^HFDTE(\d{2})(\d{2})(\d{2})/, + ax = /\r\n|\r|\n/, + sx = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.dataProjection = Gr('EPSG:4326')), + (r.altitudeMode_ = n.altitudeMode ? n.altitudeMode : rx), + r + ) + } + return ( + Qb(e, t), + (e.prototype.readFeatureFromText = function (t, e) { + var r, + n, + i = this.altitudeMode_, + o = t.split(ax), + a = {}, + s = [], + l = 2e3, + u = 0, + c = 1, + h = -1 + for (r = 0, n = o.length; r < n; ++r) { + var p = o[r], + f = void 0 + if ('B' == p.charAt(0)) { + if ((f = nx.exec(p))) { + var d = parseInt(f[1], 10), + g = parseInt(f[2], 10), + y = parseInt(f[3], 10), + m = parseInt(f[4], 10) + parseInt(f[5], 10) / 6e4 + 'S' == f[6] && (m = -m) + var v = parseInt(f[7], 10) + parseInt(f[8], 10) / 6e4 + if (('W' == f[9] && (v = -v), s.push(v, m), i != rx)) { + var _ = void 0 + ;(_ = + i == ex + ? parseInt(f[11], 10) + : i == tx + ? parseInt(f[12], 10) + : 0), + s.push(_) + } + var b = Date.UTC(l, u, c, d, g, y) + b < h && (b = Date.UTC(l, u, c + 1, d, g, y)), + s.push(b / 1e3), + (h = b) + } + } else + 'H' == p.charAt(0) && + ((f = ox.exec(p)) + ? ((c = parseInt(f[1], 10)), + (u = parseInt(f[2], 10) - 1), + (l = 2e3 + parseInt(f[3], 10))) + : (f = ix.exec(p)) && (a[f[1]] = f[2].trim())) + } + if (0 === s.length) return null + var x = new Py(s, i == rx ? vt : _t), + w = new gt(Wy(x, !1, e)) + return w.setProperties(a, !0), w + }), + (e.prototype.readFeaturesFromText = function (t, e) { + var r = this.readFeatureFromText(t, e) + return r ? [r] : [] + }), + e + ) + })(Jb), + lx = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ux = ['http://www.google.com/kml/ext/2.2'], + cx = [ + null, + 'http://earth.google.com/kml/2.0', + 'http://earth.google.com/kml/2.1', + 'http://earth.google.com/kml/2.2', + 'http://www.opengis.net/kml/2.2', + ], + hx = { fraction: rp, pixels: np, insetPixels: np }, + px = Gc( + cx, + { + ExtendedData: sw, + Region: lw, + MultiGeometry: Fc(Jx, 'geometry'), + LineString: Fc(Kx, 'geometry'), + LinearRing: Fc(Hx, 'geometry'), + Point: Fc(Qx, 'geometry'), + Polygon: Fc(ew, 'geometry'), + Style: Fc(nw), + StyleMap: function (t, e) { + var r = kx.call(this, t, e) + if (!r) return + var n = e[e.length - 1] + Array.isArray(r) + ? (n.Style = r) + : 'string' == typeof r + ? (n.styleUrl = r) + : pt(!1, 38) + }, + address: Fc(U_), + description: Fc(U_), + name: Fc(U_), + open: Fc(A_), + phoneNumber: Fc(U_), + styleUrl: Fc(Mx), + visibility: Fc(A_), + }, + Gc(ux, { + MultiTrack: Fc(function (t, e) { + var r = Uc([], Bx, t, e) + if (!r) return + return new Zy(r) + }, 'geometry'), + Track: Fc(Yx, 'geometry'), + }), + ), + fx = Gc(cx, { + ExtendedData: sw, + Region: lw, + Link: function (t, e) { + zc(dx, t, e) + }, + address: Fc(U_), + description: Fc(U_), + name: Fc(U_), + open: Fc(A_), + phoneNumber: Fc(U_), + visibility: Fc(A_), + }), + dx = Gc(cx, { href: Fc(Lx) }), + gx = Gc(cx, { + LatLonAltBox: function (t, e) { + var r = Uc({}, hw, t, e) + if (!r) return + var n = e[e.length - 1], + i = [ + parseFloat(r.west), + parseFloat(r.south), + parseFloat(r.east), + parseFloat(r.north), + ] + ;(n.extent = i), + (n.altitudeMode = r.altitudeMode), + (n.minAltitude = parseFloat(r.minAltitude)), + (n.maxAltitude = parseFloat(r.maxAltitude)) + }, + Lod: function (t, e) { + var r = Uc({}, pw, t, e) + if (!r) return + var n = e[e.length - 1] + ;(n.minLodPixels = parseFloat(r.minLodPixels)), + (n.maxLodPixels = parseFloat(r.maxLodPixels)), + (n.minFadeExtent = parseFloat(r.minFadeExtent)), + (n.maxFadeExtent = parseFloat(r.maxFadeExtent)) + }, + }), + yx = Gc(cx, ['Document', 'Placemark']), + mx = Gc(cx, { + Document: Ac(function (t, e, r) { + Vc({ node: t }, mw, vw, e, r, void 0, this) + }), + Placemark: Ac(Bw), + }), + vx = null + var _x, + bx = null + var xx, + wx = null + var Sx = null + var Ex = null + var Tx, + Cx = null + function Ox(t) { + return t + } + var Px = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + Cx || + ((vx = new ep({ color: (Wb = [255, 255, 255, 1]) })), + (bx = new dp({ + anchor: (qb = [20, 2]), + anchorOrigin: ip, + anchorXUnits: (Xb = np), + anchorYUnits: (Zb = np), + crossOrigin: 'anonymous', + rotation: 0, + scale: ($b = 0.5), + size: (Kb = [64, 64]), + src: (Hb = + 'https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png'), + })), + (_x = 'NO_IMAGE'), + (wx = new gp({ color: Wb, width: 1 })), + (xx = new gp({ color: [51, 51, 51, 1], width: 2 })), + (Sx = new Tp({ + font: 'bold 16px Helvetica', + fill: vx, + stroke: xx, + scale: 0.8, + })), + (Ex = new wp({ + fill: vx, + image: bx, + text: Sx, + stroke: wx, + zIndex: 0, + })), + (Cx = [Ex])), + (r.dataProjection = Gr('EPSG:4326')), + (r.defaultStyle_ = n.defaultStyle ? n.defaultStyle : Cx), + (r.extractStyles_ = void 0 === n.extractStyles || n.extractStyles), + (r.writeStyles_ = void 0 === n.writeStyles || n.writeStyles), + (r.sharedStyles_ = {}), + (r.showPointNames_ = + void 0 === n.showPointNames || n.showPointNames), + (r.crossOrigin_ = + void 0 !== n.crossOrigin ? n.crossOrigin : 'anonymous'), + (r.iconUrlFunction_ = n.iconUrlFunction ? n.iconUrlFunction : Ox), + r + ) + } + return ( + lx(e, t), + (e.prototype.readDocumentOrFolder_ = function (t, e) { + var r = Uc( + [], + Gc(cx, { + Document: Rc(this.readDocumentOrFolder_, this), + Folder: Rc(this.readDocumentOrFolder_, this), + Placemark: Ic(this.readPlacemark_, this), + Style: this.readSharedStyle_.bind(this), + StyleMap: this.readSharedStyleMap_.bind(this), + }), + t, + e, + this, + ) + return r || void 0 + }), + (e.prototype.readPlacemark_ = function (t, e) { + var r = Uc({ geometry: null }, px, t, e, this) + if (r) { + var n = new gt(), + i = t.getAttribute('id') + null !== i && n.setId(i) + var o = e[0], + a = r.geometry + if ( + (a && Wy(a, !1, o), + n.setGeometry(a), + delete r.geometry, + this.extractStyles_) + ) { + var s = (function (t, e, r, n, i) { + return function (o, a) { + var s = i, + l = '', + u = [] + if (s) { + var c = o.getGeometry() + if (c) { + var h = c.getType() + s = + h === bt.GEOMETRY_COLLECTION + ? (u = c + .getGeometriesArrayRecursive() + .filter(function (t) { + var e = t.getType() + return e === bt.POINT || e === bt.MULTI_POINT + })).length > 0 + : h === bt.POINT || h === bt.MULTI_POINT + } + } + s && + ((l = o.get('name')), + (s = s && !!l) && + l.search(/&[^&]+;/) > -1 && + (Tx || (Tx = document.createElement('textarea')), + (Tx.innerHTML = l), + (l = Tx.value))) + var p = r + if ( + (t + ? (p = t) + : e && + (p = (function t(e, r, n) { + return Array.isArray(e) + ? e + : 'string' == typeof e + ? t(n[e], r, n) + : r + })(e, r, n)), + s) + ) { + var f = (function (t, e) { + var r = [0, 0], + n = 'start', + i = t.getImage() + if (i) { + var o = i.getImageSize() + if ((null === o && (o = Kb), 2 == o.length)) { + var a = i.getScaleArray() + ;(r[0] = (a[0] * o[0]) / 2), + (r[1] = (-a[1] * o[1]) / 2), + (n = 'left') + } + } + var s = t.getText() + s + ? ((s = s.clone()).setFont( + s.getFont() || Sx.getFont(), + ), + s.setScale(s.getScale() || Sx.getScale()), + s.setFill(s.getFill() || Sx.getFill()), + s.setStroke(s.getStroke() || xx)) + : (s = Sx.clone()) + return ( + s.setText(e), + s.setOffsetX(r[0]), + s.setOffsetY(r[1]), + s.setTextAlign(n), + new wp({ image: i, text: s }) + ) + })(p[0], l) + return u.length > 0 + ? (f.setGeometry(new Vm(u)), + [ + f, + new wp({ + geometry: p[0].getGeometry(), + image: null, + fill: p[0].getFill(), + stroke: p[0].getStroke(), + text: null, + }), + ].concat(p.slice(1))) + : f + } + return p + } + })( + r.Style, + r.styleUrl, + this.defaultStyle_, + this.sharedStyles_, + this.showPointNames_, + ) + n.setStyle(s) + } + return delete r.Style, n.setProperties(r, !0), n + } + }), + (e.prototype.readSharedStyle_ = function (t, e) { + var r = t.getAttribute('id') + if (null !== r) { + var n = nw.call(this, t, e) + if (n) { + var i = void 0, + o = t.baseURI + if ( + ((o && 'about:blank' != o) || (o = window.location.href), o) + ) + i = new URL('#' + r, o).href + else i = '#' + r + this.sharedStyles_[i] = n + } + } + }), + (e.prototype.readSharedStyleMap_ = function (t, e) { + var r = t.getAttribute('id') + if (null !== r) { + var n = kx.call(this, t, e) + if (n) { + var i, + o = t.baseURI + if ( + ((o && 'about:blank' != o) || (o = window.location.href), o) + ) + i = new URL('#' + r, o).href + else i = '#' + r + this.sharedStyles_[i] = n + } + } + }), + (e.prototype.readFeatureFromNode = function (t, e) { + if (!g(cx, t.namespaceURI)) return null + var r = this.readPlacemark_(t, [this.getReadOptions(t, e)]) + return r || null + }), + (e.prototype.readFeaturesFromNode = function (t, e) { + if (!g(cx, t.namespaceURI)) return [] + var r, + n = t.localName + if ('Document' == n || 'Folder' == n) + return ( + (r = this.readDocumentOrFolder_(t, [ + this.getReadOptions(t, e), + ])) || [] + ) + if ('Placemark' == n) { + var i = this.readPlacemark_(t, [this.getReadOptions(t, e)]) + return i ? [i] : [] + } + if ('kml' == n) { + r = [] + for (var o = t.firstElementChild; o; o = o.nextElementSibling) { + var a = this.readFeaturesFromNode(o, e) + a && v(r, a) + } + return r + } + return [] + }), + (e.prototype.readName = function (t) { + if (t) { + if ('string' == typeof t) { + var e = Pc(t) + return this.readNameFromDocument(e) + } + return Cc(t) + ? this.readNameFromDocument(t) + : this.readNameFromNode(t) + } + }), + (e.prototype.readNameFromDocument = function (t) { + for (var e = t.firstChild; e; e = e.nextSibling) + if (e.nodeType == Node.ELEMENT_NODE) { + var r = this.readNameFromNode(e) + if (r) return r + } + }), + (e.prototype.readNameFromNode = function (t) { + for (var e = t.firstElementChild; e; e = e.nextElementSibling) + if (g(cx, e.namespaceURI) && 'name' == e.localName) return U_(e) + for (e = t.firstElementChild; e; e = e.nextElementSibling) { + var r = e.localName + if ( + g(cx, e.namespaceURI) && + ('Document' == r || + 'Folder' == r || + 'Placemark' == r || + 'kml' == r) + ) { + var n = this.readNameFromNode(e) + if (n) return n + } + } + }), + (e.prototype.readNetworkLinks = function (t) { + var e = [] + if ('string' == typeof t) { + var r = Pc(t) + v(e, this.readNetworkLinksFromDocument(r)) + } else + Cc(t) + ? v(e, this.readNetworkLinksFromDocument(t)) + : v(e, this.readNetworkLinksFromNode(t)) + return e + }), + (e.prototype.readNetworkLinksFromDocument = function (t) { + for (var e = [], r = t.firstChild; r; r = r.nextSibling) + r.nodeType == Node.ELEMENT_NODE && + v(e, this.readNetworkLinksFromNode(r)) + return e + }), + (e.prototype.readNetworkLinksFromNode = function (t) { + for ( + var e = [], r = t.firstElementChild; + r; + r = r.nextElementSibling + ) + if (g(cx, r.namespaceURI) && 'NetworkLink' == r.localName) { + var n = Uc({}, fx, r, []) + e.push(n) + } + for (r = t.firstElementChild; r; r = r.nextElementSibling) { + var i = r.localName + !g(cx, r.namespaceURI) || + ('Document' != i && 'Folder' != i && 'kml' != i) || + v(e, this.readNetworkLinksFromNode(r)) + } + return e + }), + (e.prototype.readRegion = function (t) { + var e = [] + if ('string' == typeof t) { + var r = Pc(t) + v(e, this.readRegionFromDocument(r)) + } else + Cc(t) + ? v(e, this.readRegionFromDocument(t)) + : v(e, this.readRegionFromNode(t)) + return e + }), + (e.prototype.readRegionFromDocument = function (t) { + for (var e = [], r = t.firstChild; r; r = r.nextSibling) + r.nodeType == Node.ELEMENT_NODE && + v(e, this.readRegionFromNode(r)) + return e + }), + (e.prototype.readRegionFromNode = function (t) { + for ( + var e = [], r = t.firstElementChild; + r; + r = r.nextElementSibling + ) + if (g(cx, r.namespaceURI) && 'Region' == r.localName) { + var n = Uc({}, gx, r, []) + e.push(n) + } + for (r = t.firstElementChild; r; r = r.nextElementSibling) { + var i = r.localName + !g(cx, r.namespaceURI) || + ('Document' != i && 'Folder' != i && 'kml' != i) || + v(e, this.readRegionFromNode(r)) + } + return e + }), + (e.prototype.writeFeaturesNode = function (t, e) { + e = this.adaptOptions(e) + var r = Sc(cx[4], 'kml'), + n = 'http://www.w3.org/2000/xmlns/' + r.setAttributeNS(n, 'xmlns:gx', ux[0]), + r.setAttributeNS(n, 'xmlns:xsi', wc), + r.setAttributeNS( + wc, + 'xsi:schemaLocation', + 'http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd', + ) + var i = { node: r }, + o = {} + t.length > 1 + ? (o.Document = t) + : 1 == t.length && (o.Placemark = t[0]) + var a = yx[r.namespaceURI], + s = Dc(o, a) + return Vc(i, mx, Nc, s, [e], a, this), r + }), + e + ) + })(P_) + function Rx(t) { + var e = Ec(t, !1), + r = /^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e) + if (r) { + var n = r[1] + return [ + parseInt(n.substr(6, 2), 16), + parseInt(n.substr(4, 2), 16), + parseInt(n.substr(2, 2), 16), + parseInt(n.substr(0, 2), 16) / 255, + ] + } + } + function Ix(t) { + var e = Ec(t, !1), + r = [] + e = e.replace(/\s*,\s*/g, ',') + for ( + var n, + i = + /^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i; + (n = i.exec(e)); + + ) { + var o = parseFloat(n[1]), + a = parseFloat(n[2]), + s = n[3] ? parseFloat(n[3]) : 0 + r.push(o, a, s), (e = e.substr(n[0].length)) + } + if ('' === e) return r + } + function Lx(t) { + var e = Ec(t, !1).trim(), + r = t.baseURI + return ( + (r && 'about:blank' != r) || (r = window.location.href), + r ? new URL(e, r).href : e + ) + } + function Mx(t) { + var e = Ec(t, !1) + .trim() + .replace(/^(?!.*#)/, '#'), + r = t.baseURI + return ( + (r && 'about:blank' != r) || (r = window.location.href), + r ? new URL(e, r).href : e + ) + } + function Fx(t) { + return N_(t) + } + var Ax = Gc(cx, { + Pair: function (t, e) { + var r = Uc({}, uw, t, e, this) + if (!r) return + var n = r.key + if (n && 'normal' == n) { + var i = r.styleUrl + i && (e[e.length - 1] = i) + var o = r.Style + o && (e[e.length - 1] = o) + } + }, + }) + function kx(t, e) { + return Uc(void 0, Ax, t, e, this) + } + var jx = Gc(cx, { + Icon: Fc(function (t, e) { + var r = Uc({}, Wx, t, e) + return r || null + }), + color: Fc(Rx), + heading: Fc(N_), + hotSpot: Fc(function (t) { + var e, + r = t.getAttribute('xunits'), + n = t.getAttribute('yunits') + return ( + (e = + 'insetPixels' !== r + ? 'insetPixels' !== n + ? ip + : ap + : 'insetPixels' !== n + ? op + : sp), + { + x: parseFloat(t.getAttribute('x')), + xunits: hx[r], + y: parseFloat(t.getAttribute('y')), + yunits: hx[n], + origin: e, + } + ) + }), + scale: Fc(Fx), + }) + var Nx = Gc(cx, { color: Fc(Rx), scale: Fc(Fx) }) + var Dx = Gc(cx, { color: Fc(Rx), width: Fc(N_) }) + var Gx = Gc(cx, { color: Fc(Rx), fill: Fc(A_), outline: Fc(A_) }) + var zx = Gc(cx, { coordinates: Lc(Ix) }) + function Ux(t, e) { + return Uc(null, zx, t, e) + } + var Bx = Gc(ux, { Track: Ic(Yx) }) + var Vx = Gc( + cx, + { + when: function (t, e) { + var r = e[e.length - 1].whens, + n = Ec(t, !1), + i = Date.parse(n) + r.push(isNaN(i) ? 0 : i) + }, + }, + Gc(ux, { + coord: function (t, e) { + var r = e[e.length - 1].flatCoordinates, + n = Ec(t, !1), + i = + /^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec( + n, + ) + if (i) { + var o = parseFloat(i[1]), + a = parseFloat(i[2]), + s = parseFloat(i[3]) + r.push(o, a, s, 0) + } else r.push(0, 0, 0, 0) + }, + }), + ) + function Yx(t, e) { + var r = Uc({ flatCoordinates: [], whens: [] }, Vx, t, e) + if (r) { + for ( + var n = r.flatCoordinates, + i = r.whens, + o = 0, + a = Math.min(n.length, i.length); + o < a; + ++o + ) + n[4 * o + 3] = i[o] + return new Py(n, _t) + } + } + var Wx = Gc( + cx, + { href: Fc(Lx) }, + Gc(ux, { x: Fc(N_), y: Fc(N_), w: Fc(N_), h: Fc(N_) }), + ) + var qx = Gc(cx, { coordinates: Lc(Ix) }) + function Xx(t, e) { + return Uc(null, qx, t, e) + } + var Zx = Gc(cx, { + extrude: Fc(A_), + tessellate: Fc(A_), + altitudeMode: Fc(U_), + }) + function Kx(t, e) { + var r = Uc({}, Zx, t, e), + n = Xx(t, e) + if (n) { + var i = new Py(n, mt) + return i.setProperties(r, !0), i + } + } + function Hx(t, e) { + var r = Uc({}, Zx, t, e), + n = Xx(t, e) + if (n) { + var i = new fi(n, mt, [n.length]) + return i.setProperties(r, !0), i + } + } + var $x = Gc(cx, { + LineString: Ic(Kx), + LinearRing: Ic(Hx), + MultiGeometry: Ic(Jx), + Point: Ic(Qx), + Polygon: Ic(ew), + }) + function Jx(t, e) { + var r, + n = Uc([], $x, t, e) + if (!n) return null + if (0 === n.length) return new Vm(n) + for (var i = !0, o = n[0].getType(), a = 1, s = n.length; a < s; ++a) + if (n[a].getType() != o) { + i = !1 + break + } + if (i) { + var l = void 0, + u = void 0 + if (o == bt.POINT) { + var c = n[0] + ;(l = c.getLayout()), (u = c.getFlatCoordinates()) + for (a = 1, s = n.length; a < s; ++a) + v(u, n[a].getFlatCoordinates()) + iw((r = new Hy(u, l)), n) + } else + o == bt.LINE_STRING + ? iw((r = new Zy(n)), n) + : o == bt.POLYGON + ? iw((r = new Jy(n)), n) + : o == bt.GEOMETRY_COLLECTION + ? (r = new Vm(n)) + : pt(!1, 37) + } else r = new Vm(n) + return r + } + function Qx(t, e) { + var r = Uc({}, Zx, t, e), + n = Xx(t, e) + if (n) { + var i = new qn(n, mt) + return i.setProperties(r, !0), i + } + } + var tw = Gc(cx, { + innerBoundaryIs: function (t, e) { + var r = Uc(void 0, fw, t, e) + if (r) { + e[e.length - 1].push(r) + } + }, + outerBoundaryIs: function (t, e) { + var r = Uc(void 0, dw, t, e) + if (r) { + e[e.length - 1][0] = r + } + }, + }) + function ew(t, e) { + var r = Uc({}, Zx, t, e), + n = Uc([null], tw, t, e) + if (n && n[0]) { + for (var i = n[0], o = [i.length], a = 1, s = n.length; a < s; ++a) + v(i, n[a]), o.push(i.length) + var l = new fi(i, mt, o) + return l.setProperties(r, !0), l + } + } + var rw = Gc(cx, { + IconStyle: function (t, e) { + var r = Uc({}, jx, t, e) + if (r) { + var n, + i, + o, + a, + s = e[e.length - 1], + l = 'Icon' in r ? r.Icon : {}, + u = !('Icon' in r) || Object.keys(l).length > 0, + c = l.href + c ? (n = c) : u && (n = Hb) + var h, + p = ip, + f = r.hotSpot + f + ? ((i = [f.x, f.y]), + (o = f.xunits), + (a = f.yunits), + (p = f.origin)) + : n === Hb + ? ((i = qb), (o = Xb), (a = Zb)) + : /^http:\/\/maps\.(?:google|gstatic)\.com\//.test(n) && + ((i = [0.5, 0]), (o = rp), (a = rp)) + var d, + g = l.x, + y = l.y + void 0 !== g && void 0 !== y && (h = [g, y]) + var m, + v = l.w, + _ = l.h + void 0 !== v && void 0 !== _ && (d = [v, _]) + var b = r.heading + void 0 !== b && (m = Ye(b)) + var x = r.scale, + w = r.color + if (u) { + n == Hb && ((d = Kb), void 0 === x && (x = $b)) + var S = new dp({ + anchor: i, + anchorOrigin: p, + anchorXUnits: o, + anchorYUnits: a, + crossOrigin: this.crossOrigin_, + offset: h, + offsetOrigin: ip, + rotation: m, + scale: x, + size: d, + src: this.iconUrlFunction_(n), + color: w, + }) + s.imageStyle = S + } else s.imageStyle = _x + } + }, + LabelStyle: function (t, e) { + var r = Uc({}, Nx, t, e) + if (r) { + var n = e[e.length - 1], + i = new Tp({ + fill: new ep({ color: 'color' in r ? r.color : Wb }), + scale: r.scale, + }) + n.textStyle = i + } + }, + LineStyle: function (t, e) { + var r = Uc({}, Dx, t, e) + if (r) { + var n = e[e.length - 1], + i = new gp({ + color: 'color' in r ? r.color : Wb, + width: 'width' in r ? r.width : 1, + }) + n.strokeStyle = i + } + }, + PolyStyle: function (t, e) { + var r = Uc({}, Gx, t, e) + if (r) { + var n = e[e.length - 1], + i = new ep({ color: 'color' in r ? r.color : Wb }) + n.fillStyle = i + var o = r.fill + void 0 !== o && (n.fill = o) + var a = r.outline + void 0 !== a && (n.outline = a) + } + }, + }) + function nw(t, e) { + var r = Uc({}, rw, t, e, this) + if (!r) return null + var n, + i = 'fillStyle' in r ? r.fillStyle : vx, + o = r.fill + void 0 === o || o || (i = null), + 'imageStyle' in r + ? r.imageStyle != _x && (n = r.imageStyle) + : (n = bx) + var a = 'textStyle' in r ? r.textStyle : Sx, + s = 'strokeStyle' in r ? r.strokeStyle : wx, + l = r.outline + return void 0 === l || l + ? [new wp({ fill: i, image: n, stroke: s, text: a, zIndex: void 0 })] + : [ + new wp({ + geometry: function (t) { + var e = t.getGeometry(), + r = e.getType() + return r === bt.GEOMETRY_COLLECTION + ? new Vm( + e.getGeometriesArrayRecursive().filter(function (t) { + var e = t.getType() + return e !== bt.POLYGON && e !== bt.MULTI_POLYGON + }), + ) + : r !== bt.POLYGON && r !== bt.MULTI_POLYGON + ? e + : void 0 + }, + fill: i, + image: n, + stroke: s, + text: a, + zIndex: void 0, + }), + new wp({ + geometry: function (t) { + var e = t.getGeometry(), + r = e.getType() + return r === bt.GEOMETRY_COLLECTION + ? new Vm( + e.getGeometriesArrayRecursive().filter(function (t) { + var e = t.getType() + return e === bt.POLYGON || e === bt.MULTI_POLYGON + }), + ) + : r === bt.POLYGON || r === bt.MULTI_POLYGON + ? e + : void 0 + }, + fill: i, + stroke: null, + zIndex: void 0, + }), + ] + } + function iw(t, e) { + var r, + n, + i, + o = e.length, + a = new Array(e.length), + s = new Array(e.length), + l = new Array(e.length) + ;(r = !1), (n = !1), (i = !1) + for (var u = 0; u < o; ++u) { + var c = e[u] + ;(a[u] = c.get('extrude')), + (s[u] = c.get('tessellate')), + (l[u] = c.get('altitudeMode')), + (r = r || void 0 !== a[u]), + (n = n || void 0 !== s[u]), + (i = i || l[u]) + } + r && t.set('extrude', a), + n && t.set('tessellate', s), + i && t.set('altitudeMode', l) + } + var ow = Gc(cx, { displayName: Fc(U_), value: Fc(U_) }) + var aw = Gc(cx, { + Data: function (t, e) { + var r = t.getAttribute('name') + zc(ow, t, e) + var n = e[e.length - 1] + r && n.displayName + ? (n[r] = { + value: n.value, + displayName: n.displayName, + toString: function () { + return n.value + }, + }) + : null !== r + ? (n[r] = n.value) + : null !== n.displayName && (n[n.displayName] = n.value), + delete n.value + }, + SchemaData: function (t, e) { + zc(cw, t, e) + }, + }) + function sw(t, e) { + zc(aw, t, e) + } + function lw(t, e) { + zc(gx, t, e) + } + var uw = Gc(cx, { Style: Fc(nw), key: Fc(U_), styleUrl: Fc(Mx) }) + var cw = Gc(cx, { + SimpleData: function (t, e) { + var r = t.getAttribute('name') + if (null !== r) { + var n = U_(t) + e[e.length - 1][r] = n + } + }, + }) + var hw = Gc(cx, { + altitudeMode: Fc(U_), + minAltitude: Fc(N_), + maxAltitude: Fc(N_), + north: Fc(N_), + south: Fc(N_), + east: Fc(N_), + west: Fc(N_), + }) + var pw = Gc(cx, { + minLodPixels: Fc(N_), + maxLodPixels: Fc(N_), + minFadeExtent: Fc(N_), + maxFadeExtent: Fc(N_), + }) + var fw = Gc(cx, { LinearRing: Lc(Ux) }) + var dw = Gc(cx, { LinearRing: Lc(Ux) }) + function gw(t, e) { + for ( + var r = Oo(e), + n = [255 * (4 == r.length ? r[3] : 1), r[2], r[1], r[0]], + i = 0; + i < 4; + ++i + ) { + var o = Math.floor(n[i]).toString(16) + n[i] = 1 == o.length ? '0' + o : o + } + X_(t, n.join('')) + } + var yw = Gc(cx, { + Data: Ac(function (t, e, r) { + t.setAttribute('name', e.name) + var n = { node: t }, + i = e.value + 'object' == typeof i + ? (null !== i && + i.displayName && + Vc(n, yw, Nc, [i.displayName], r, ['displayName']), + null !== i && i.value && Vc(n, yw, Nc, [i.value], r, ['value'])) + : Vc(n, yw, Nc, [i], r, ['value']) + }), + value: Ac(function (t, e) { + X_(t, e) + }), + displayName: Ac(function (t, e) { + V_(t, e) + }), + }) + var mw = Gc(cx, { Placemark: Ac(Bw) }), + vw = function (t, e, r) { + return Sc(e[e.length - 1].node.namespaceURI, 'Placemark') + } + var _w = jc('Data') + var bw = Gc(cx, ['href'], Gc(ux, ['x', 'y', 'w', 'h'])), + xw = Gc( + cx, + { href: Ac(X_) }, + Gc(ux, { x: Ac(W_), y: Ac(W_), w: Ac(W_), h: Ac(W_) }), + ), + ww = function (t, e, r) { + return Sc(ux[0], 'gx:' + r) + } + var Sw = Gc(cx, ['scale', 'heading', 'Icon', 'color', 'hotSpot']), + Ew = Gc(cx, { + Icon: Ac(function (t, e, r) { + var n = { node: t }, + i = r[r.length - 1].node, + o = bw[i.namespaceURI], + a = Dc(e, o) + Vc(n, xw, Nc, a, r, o), + (a = Dc(e, (o = bw[ux[0]]))), + Vc(n, xw, ww, a, r, o) + }), + color: Ac(gw), + heading: Ac(W_), + hotSpot: Ac(function (t, e) { + t.setAttribute('x', String(e.x)), + t.setAttribute('y', String(e.y)), + t.setAttribute('xunits', e.xunits), + t.setAttribute('yunits', e.yunits) + }), + scale: Ac(Jw), + }) + var Tw = Gc(cx, ['color', 'scale']), + Cw = Gc(cx, { color: Ac(gw), scale: Ac(Jw) }) + var Ow = Gc(cx, ['color', 'width']), + Pw = Gc(cx, { color: Ac(gw), width: Ac(W_) }) + var Rw = { + Point: 'Point', + LineString: 'LineString', + LinearRing: 'LinearRing', + Polygon: 'Polygon', + MultiPoint: 'MultiGeometry', + MultiLineString: 'MultiGeometry', + MultiPolygon: 'MultiGeometry', + GeometryCollection: 'MultiGeometry', + }, + Iw = function (t, e, r) { + if (t) return Sc(e[e.length - 1].node.namespaceURI, Rw[t.getType()]) + }, + Lw = jc('Point'), + Mw = jc('LineString'), + Fw = jc('LinearRing'), + Aw = jc('Polygon'), + kw = Gc(cx, { + LineString: Ac(Ww), + Point: Ac(Ww), + Polygon: Ac(Hw), + GeometryCollection: Ac(jw), + }) + function jw(t, e, r) { + var n, + i = { node: t }, + o = e.getType(), + a = [] + o === bt.GEOMETRY_COLLECTION + ? (e.getGeometriesArrayRecursive().forEach(function (t) { + var e = t.getType() + e === bt.MULTI_POINT + ? (a = a.concat(t.getPoints())) + : e === bt.MULTI_LINE_STRING + ? (a = a.concat(t.getLineStrings())) + : e === bt.MULTI_POLYGON + ? (a = a.concat(t.getPolygons())) + : e === bt.POINT || e === bt.LINE_STRING || e === bt.POLYGON + ? a.push(t) + : pt(!1, 39) + }), + (n = Iw)) + : o === bt.MULTI_POINT + ? ((a = e.getPoints()), (n = Lw)) + : o === bt.MULTI_LINE_STRING + ? ((a = e.getLineStrings()), (n = Mw)) + : o === bt.MULTI_POLYGON + ? ((a = e.getPolygons()), (n = Aw)) + : pt(!1, 39), + Vc(i, kw, n, a, r) + } + var Nw = Gc(cx, { LinearRing: Ac(Ww) }) + function Dw(t, e, r) { + Vc({ node: t }, Nw, Fw, [e], r) + } + var Gw = Gc(cx, { + ExtendedData: Ac(function (t, e, r) { + for ( + var n = { node: t }, + i = e.names, + o = e.values, + a = i.length, + s = 0; + s < a; + s++ + ) + Vc(n, yw, _w, [{ name: i[s], value: o[s] }], r) + }), + MultiGeometry: Ac(jw), + LineString: Ac(Ww), + LinearRing: Ac(Ww), + Point: Ac(Ww), + Polygon: Ac(Hw), + Style: Ac(function (t, e, r) { + var n = { node: t }, + i = {} + if (e.pointStyles.length) { + var o = e.pointStyles[0].getText() + o && (i.LabelStyle = o) + var a = e.pointStyles[0].getImage() + a && 'function' == typeof a.getSrc && (i.IconStyle = a) + } + if (e.lineStyles.length) { + ;(s = e.lineStyles[0].getStroke()) && (i.LineStyle = s) + } + if (e.polyStyles.length) { + var s + ;(s = e.polyStyles[0].getStroke()) && + !i.LineStyle && + (i.LineStyle = s), + (i.PolyStyle = e.polyStyles[0]) + } + var l = r[r.length - 1].node, + u = Qw[l.namespaceURI], + c = Dc(i, u) + Vc(n, tS, Nc, c, r, u) + }), + address: Ac(X_), + description: Ac(X_), + name: Ac(X_), + open: Ac(B_), + phoneNumber: Ac(X_), + styleUrl: Ac(X_), + visibility: Ac(B_), + }), + zw = Gc(cx, [ + 'name', + 'open', + 'visibility', + 'address', + 'phoneNumber', + 'description', + 'styleUrl', + 'Style', + ]), + Uw = jc('ExtendedData') + function Bw(t, e, r) { + var n = { node: t } + e.getId() && t.setAttribute('id', e.getId()) + var i = e.getProperties(), + o = { + address: 1, + description: 1, + name: 1, + open: 1, + phoneNumber: 1, + styleUrl: 1, + visibility: 1, + } + o[e.getGeometryName()] = 1 + var a = Object.keys(i || {}) + .sort() + .filter(function (t) { + return !o[t] + }), + s = e.getStyleFunction() + if (s) { + var l = s(e, 0) + if (l) { + var u = Array.isArray(l) ? l : [l], + c = u + if ( + (e.getGeometry() && + (c = u.filter(function (t) { + var r = t.getGeometryFunction()(e) + if (r) { + var n = r.getType() + return n === bt.GEOMETRY_COLLECTION + ? r.getGeometriesArrayRecursive().filter(function (t) { + var e = t.getType() + return e === bt.POINT || e === bt.MULTI_POINT + }).length + : n === bt.POINT || n === bt.MULTI_POINT + } + })), + this.writeStyles_) + ) { + var h = u, + p = u + e.getGeometry() && + ((h = u.filter(function (t) { + var r = t.getGeometryFunction()(e) + if (r) { + var n = r.getType() + return n === bt.GEOMETRY_COLLECTION + ? r.getGeometriesArrayRecursive().filter(function (t) { + var e = t.getType() + return ( + e === bt.LINE_STRING || e === bt.MULTI_LINE_STRING + ) + }).length + : n === bt.LINE_STRING || n === bt.MULTI_LINE_STRING + } + })), + (p = u.filter(function (t) { + var r = t.getGeometryFunction()(e) + if (r) { + var n = r.getType() + return n === bt.GEOMETRY_COLLECTION + ? r.getGeometriesArrayRecursive().filter(function (t) { + var e = t.getType() + return e === bt.POLYGON || e === bt.MULTI_POLYGON + }).length + : n === bt.POLYGON || n === bt.MULTI_POLYGON + } + }))), + (i.Style = { pointStyles: c, lineStyles: h, polyStyles: p }) + } + if (c.length && void 0 === i.name) { + var f = c[0].getText() + f && (i.name = f.getText()) + } + } + } + var d = r[r.length - 1].node, + g = zw[d.namespaceURI], + y = Dc(i, g) + if ((Vc(n, Gw, Nc, y, r, g), a.length > 0)) { + var m = Dc(i, a) + Vc(n, Gw, Uw, [{ names: a, values: m }], r) + } + var v = r[0], + _ = e.getGeometry() + _ && (_ = Wy(_, !0, v)), Vc(n, Gw, Iw, [_], r) + } + var Vw = Gc(cx, ['extrude', 'tessellate', 'altitudeMode', 'coordinates']), + Yw = Gc(cx, { + extrude: Ac(B_), + tessellate: Ac(B_), + altitudeMode: Ac(X_), + coordinates: Ac(function (t, e, r) { + var n, + i = r[r.length - 1], + o = i.layout, + a = i.stride + o == yt || o == vt + ? (n = 2) + : o == mt || o == _t + ? (n = 3) + : pt(!1, 34) + var s = e.length, + l = '' + if (s > 0) { + l += e[0] + for (var u = 1; u < n; ++u) l += ',' + e[u] + for (var c = a; c < s; c += a) { + l += ' ' + e[c] + for (u = 1; u < n; ++u) l += ',' + e[c + u] + } + } + X_(t, l) + }), + }) + function Ww(t, e, r) { + var n = e.getFlatCoordinates(), + i = { node: t } + ;(i.layout = e.getLayout()), (i.stride = e.getStride()) + var o = e.getProperties() + o.coordinates = n + var a = r[r.length - 1].node, + s = Vw[a.namespaceURI], + l = Dc(o, s) + Vc(i, Yw, Nc, l, r, s) + } + var qw = Gc(cx, ['color', 'fill', 'outline']), + Xw = Gc(cx, { outerBoundaryIs: Ac(Dw), innerBoundaryIs: Ac(Dw) }), + Zw = jc('innerBoundaryIs'), + Kw = jc('outerBoundaryIs') + function Hw(t, e, r) { + var n = e.getLinearRings(), + i = n.shift(), + o = { node: t } + Vc(o, Xw, Zw, n, r), Vc(o, Xw, Kw, [i], r) + } + var $w = Gc(cx, { color: Ac(gw), fill: Ac(B_), outline: Ac(B_) }) + function Jw(t, e) { + W_(t, Math.round(1e6 * e) / 1e6) + } + var Qw = Gc(cx, ['IconStyle', 'LabelStyle', 'LineStyle', 'PolyStyle']), + tS = Gc(cx, { + IconStyle: Ac(function (t, e, r) { + var n = { node: t }, + i = {}, + o = e.getSrc(), + a = e.getSize(), + s = e.getImageSize(), + l = { href: o } + if (a) { + ;(l.w = a[0]), (l.h = a[1]) + var u = e.getAnchor(), + c = e.getOrigin() + if ( + (c && + s && + 0 !== c[0] && + c[1] !== a[1] && + ((l.x = c[0]), (l.y = s[1] - (c[1] + a[1]))), + u && (u[0] !== a[0] / 2 || u[1] !== a[1] / 2)) + ) { + var h = { x: u[0], xunits: np, y: a[1] - u[1], yunits: np } + i.hotSpot = h + } + } + i.Icon = l + var p = e.getScale() + 1 !== p && (i.scale = p) + var f = e.getRotation() + 0 !== f && (i.heading = f) + var d = e.getColor() + d && (i.color = d) + var g = r[r.length - 1].node, + y = Sw[g.namespaceURI], + m = Dc(i, y) + Vc(n, Ew, Nc, m, r, y) + }), + LabelStyle: Ac(function (t, e, r) { + var n = { node: t }, + i = {}, + o = e.getFill() + o && (i.color = o.getColor()) + var a = e.getScale() + a && 1 !== a && (i.scale = a) + var s = r[r.length - 1].node, + l = Tw[s.namespaceURI], + u = Dc(i, l) + Vc(n, Cw, Nc, u, r, l) + }), + LineStyle: Ac(function (t, e, r) { + var n = { node: t }, + i = { color: e.getColor(), width: Number(e.getWidth()) || 1 }, + o = r[r.length - 1].node, + a = Ow[o.namespaceURI], + s = Dc(i, a) + Vc(n, Pw, Nc, s, r, a) + }), + PolyStyle: Ac(function (t, e, r) { + var n = { node: t }, + i = e.getFill(), + o = e.getStroke(), + a = { + color: i ? i.getColor() : void 0, + fill: !!i && void 0, + outline: !!o && void 0, + }, + s = r[r.length - 1].node, + l = qw[s.namespaceURI], + u = Dc(a, l) + Vc(n, $w, Nc, u, r, l) + }), + }) + var eS = Px, + rS = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + nS = [null], + iS = Gc(nS, { + nd: function (t, e) { + e[e.length - 1].ndrefs.push(t.getAttribute('ref')) + }, + tag: lS, + }), + oS = Gc(nS, { + node: function (t, e) { + var r = e[0], + n = e[e.length - 1], + i = t.getAttribute('id'), + o = [ + parseFloat(t.getAttribute('lon')), + parseFloat(t.getAttribute('lat')), + ] + n.nodes[i] = o + var a = Uc({ tags: {} }, sS, t, e) + if (!I(a.tags)) { + var s = new qn(o) + Wy(s, !1, r) + var l = new gt(s) + l.setId(i), l.setProperties(a.tags, !0), n.features.push(l) + } + }, + way: function (t, e) { + var r = Uc( + { id: t.getAttribute('id'), ndrefs: [], tags: {} }, + iS, + t, + e, + ) + e[e.length - 1].ways.push(r) + }, + }), + aS = (function (t) { + function e() { + var e = t.call(this) || this + return (e.dataProjection = Gr('EPSG:4326')), e + } + return ( + rS(e, t), + (e.prototype.readFeaturesFromNode = function (t, e) { + var r = this.getReadOptions(t, e) + if ('osm' == t.localName) { + for ( + var n = Uc({ nodes: {}, ways: [], features: [] }, oS, t, [r]), + i = 0; + i < n.ways.length; + i++ + ) { + for ( + var o = n.ways[i], a = [], s = 0, l = o.ndrefs.length; + s < l; + s++ + ) { + v(a, n.nodes[o.ndrefs[s]]) + } + var u = void 0 + Wy( + (u = + o.ndrefs[0] == o.ndrefs[o.ndrefs.length - 1] + ? new fi(a, yt, [a.length]) + : new Py(a, yt)), + !1, + r, + ) + var c = new gt(u) + c.setId(o.id), c.setProperties(o.tags, !0), n.features.push(c) + } + if (n.features) return n.features + } + return [] + }), + e + ) + })(P_), + sS = Gc(nS, { tag: lS }) + function lS(t, e) { + e[e.length - 1].tags[t.getAttribute('k')] = t.getAttribute('v') + } + var uS = aS, + cS = (function () { + function t() {} + return ( + (t.prototype.read = function (t) { + if (t) { + if ('string' == typeof t) { + var e = Pc(t) + return this.readFromDocument(e) + } + return Cc(t) ? this.readFromDocument(t) : this.readFromNode(t) + } + return null + }), + (t.prototype.readFromDocument = function (t) { + for (var e = t.firstChild; e; e = e.nextSibling) + if (e.nodeType == Node.ELEMENT_NODE) return this.readFromNode(e) + return null + }), + (t.prototype.readFromNode = function (t) {}), + t + ) + })() + function hS(t) { + return t.getAttributeNS('http://www.w3.org/1999/xlink', 'href') + } + var pS = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + fS = [null, 'http://www.opengis.net/ows/1.1'], + dS = Gc(fS, { + ServiceIdentification: Fc(function (t, e) { + return Uc({}, OS, t, e) + }), + ServiceProvider: Fc(function (t, e) { + return Uc({}, PS, t, e) + }), + OperationsMetadata: Fc(function (t, e) { + return Uc({}, SS, t, e) + }), + }), + gS = (function (t) { + function e() { + return t.call(this) || this + } + return ( + pS(e, t), + (e.prototype.readFromNode = function (t) { + var e = Uc({}, dS, t, []) + return e || null + }), + e + ) + })(cS), + yS = Gc(fS, { + DeliveryPoint: Fc(U_), + City: Fc(U_), + AdministrativeArea: Fc(U_), + PostalCode: Fc(U_), + Country: Fc(U_), + ElectronicMailAddress: Fc(U_), + }), + mS = Gc(fS, { + Value: Mc(function (t, e) { + return U_(t) + }), + }), + vS = Gc(fS, { + AllowedValues: Fc(function (t, e) { + return Uc({}, mS, t, e) + }), + }), + _S = Gc(fS, { + Phone: Fc(function (t, e) { + return Uc({}, ES, t, e) + }), + Address: Fc(function (t, e) { + return Uc({}, yS, t, e) + }), + }), + bS = Gc(fS, { + HTTP: Fc(function (t, e) { + return Uc({}, xS, t, e) + }), + }), + xS = Gc(fS, { + Get: Mc(function (t, e) { + var r = hS(t) + if (!r) return + return Uc({ href: r }, TS, t, e) + }), + Post: void 0, + }), + wS = Gc(fS, { + DCP: Fc(function (t, e) { + return Uc({}, bS, t, e) + }), + }), + SS = Gc(fS, { + Operation: function (t, e) { + var r = t.getAttribute('name'), + n = Uc({}, wS, t, e) + if (!n) return + e[e.length - 1][r] = n + }, + }), + ES = Gc(fS, { Voice: Fc(U_), Facsimile: Fc(U_) }), + TS = Gc(fS, { + Constraint: Mc(function (t, e) { + var r = t.getAttribute('name') + if (!r) return + return Uc({ name: r }, vS, t, e) + }), + }), + CS = Gc(fS, { + IndividualName: Fc(U_), + PositionName: Fc(U_), + ContactInfo: Fc(function (t, e) { + return Uc({}, _S, t, e) + }), + }), + OS = Gc(fS, { + Abstract: Fc(U_), + AccessConstraints: Fc(U_), + Fees: Fc(U_), + Title: Fc(U_), + ServiceTypeVersion: Fc(U_), + ServiceType: Fc(U_), + }), + PS = Gc(fS, { + ProviderName: Fc(U_), + ProviderSite: Fc(hS), + ServiceContact: Fc(function (t, e) { + return Uc({}, CS, t, e) + }), + }) + var RS = gS, + IS = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })() + function LS(t, e, r) { + var n, + i = r || 1e5, + o = new Array(e) + for (n = 0; n < e; ++n) o[n] = 0 + for (var a = 0, s = t.length; a < s; ) + for (n = 0; n < e; ++n, ++a) { + var l = t[a], + u = l - o[n] + ;(o[n] = l), (t[a] = u) + } + return FS(t, i) + } + function MS(t, e, r) { + var n, + i = r || 1e5, + o = new Array(e) + for (n = 0; n < e; ++n) o[n] = 0 + for (var a = AS(t, i), s = 0, l = a.length; s < l; ) + for (n = 0; n < e; ++n, ++s) (o[n] += a[s]), (a[s] = o[n]) + return a + } + function FS(t, e) { + for (var r = e || 1e5, n = 0, i = t.length; n < i; ++n) + t[n] = Math.round(t[n] * r) + return kS(t) + } + function AS(t, e) { + for (var r = e || 1e5, n = jS(t), i = 0, o = n.length; i < o; ++i) + n[i] /= r + return n + } + function kS(t) { + for (var e = 0, r = t.length; e < r; ++e) { + var n = t[e] + t[e] = n < 0 ? ~(n << 1) : n << 1 + } + return NS(t) + } + function jS(t) { + for (var e = DS(t), r = 0, n = e.length; r < n; ++r) { + var i = e[r] + e[r] = 1 & i ? ~(i >> 1) : i >> 1 + } + return e + } + function NS(t) { + for (var e = '', r = 0, n = t.length; r < n; ++r) e += GS(t[r]) + return e + } + function DS(t) { + for (var e = [], r = 0, n = 0, i = 0, o = t.length; i < o; ++i) { + var a = t.charCodeAt(i) - 63 + ;(r |= (31 & a) << n), + a < 32 ? (e.push(r), (r = 0), (n = 0)) : (n += 5) + } + return e + } + function GS(t) { + for (var e, r = ''; t >= 32; ) + (e = 63 + (32 | (31 & t))), (r += String.fromCharCode(e)), (t >>= 5) + return (e = t + 63), (r += String.fromCharCode(e)) + } + var zS = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.dataProjection = Gr('EPSG:4326')), + (r.factor_ = n.factor ? n.factor : 1e5), + (r.geometryLayout_ = n.geometryLayout ? n.geometryLayout : yt), + r + ) + } + return ( + IS(e, t), + (e.prototype.readFeatureFromText = function (t, e) { + var r = this.readGeometryFromText(t, e) + return new gt(r) + }), + (e.prototype.readFeaturesFromText = function (t, e) { + return [this.readFeatureFromText(t, e)] + }), + (e.prototype.readGeometryFromText = function (t, e) { + var r = yn(this.geometryLayout_), + n = MS(t, r, this.factor_) + v_(n, 0, n.length, r, n) + var i = Nn(n, 0, n.length, r) + return Wy( + new Py(i, this.geometryLayout_), + !1, + this.adaptOptions(e), + ) + }), + (e.prototype.writeFeatureText = function (t, e) { + var r = t.getGeometry() + return r ? this.writeGeometryText(r, e) : (pt(!1, 40), '') + }), + (e.prototype.writeFeaturesText = function (t, e) { + return this.writeFeatureText(t[0], e) + }), + (e.prototype.writeGeometryText = function (t, e) { + var r = (t = Wy( + t, + !0, + this.adaptOptions(e), + )).getFlatCoordinates(), + n = t.getStride() + return v_(r, 0, r.length, n, r), LS(r, n, this.factor_) + }), + e + ) + })(Jb), + US = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + BS = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.layerName_ = n.layerName), + (r.layers_ = n.layers ? n.layers : null), + (r.dataProjection = Gr( + n.dataProjection ? n.dataProjection : 'EPSG:4326', + )), + r + ) + } + return ( + US(e, t), + (e.prototype.readFeaturesFromObject = function (t, e) { + if ('Topology' == t.type) { + var r = t, + n = void 0, + i = null, + o = null + r.transform && + ((i = (n = r.transform).scale), (o = n.translate)) + var a = r.arcs + n && + (function (t, e, r) { + for (var n = 0, i = t.length; n < i; ++n) XS(t[n], e, r) + })(a, i, o) + var s = [], + l = r.objects, + u = this.layerName_, + c = void 0 + for (var h in l) + (this.layers_ && -1 == this.layers_.indexOf(h)) || + ('GeometryCollection' === l[h].type + ? ((c = l[h]), s.push.apply(s, WS(c, a, i, o, u, h, e))) + : ((c = l[h]), s.push(qS(c, a, i, o, u, h, e)))) + return s + } + return [] + }), + (e.prototype.readProjectionFromObject = function (t) { + return this.dataProjection + }), + e + ) + })(qm), + VS = { + Point: function (t, e, r) { + var n = t.coordinates + e && r && ZS(n, e, r) + return new qn(n) + }, + LineString: function (t, e) { + var r = YS(t.arcs, e) + return new Py(r) + }, + Polygon: function (t, e) { + for (var r = [], n = 0, i = t.arcs.length; n < i; ++n) + r[n] = YS(t.arcs[n], e) + return new fi(r) + }, + MultiPoint: function (t, e, r) { + var n = t.coordinates + if (e && r) for (var i = 0, o = n.length; i < o; ++i) ZS(n[i], e, r) + return new Hy(n) + }, + MultiLineString: function (t, e) { + for (var r = [], n = 0, i = t.arcs.length; n < i; ++n) + r[n] = YS(t.arcs[n], e) + return new Zy(r) + }, + MultiPolygon: function (t, e) { + for (var r = [], n = 0, i = t.arcs.length; n < i; ++n) { + for (var o = t.arcs[n], a = [], s = 0, l = o.length; s < l; ++s) + a[s] = YS(o[s], e) + r[n] = a + } + return new Jy(r) + }, + } + function YS(t, e) { + for (var r, n, i = [], o = 0, a = t.length; o < a; ++o) + (r = t[o]), + o > 0 && i.pop(), + (n = r >= 0 ? e[r] : e[~r].slice().reverse()), + i.push.apply(i, n) + for (var s = 0, l = i.length; s < l; ++s) i[s] = i[s].slice() + return i + } + function WS(t, e, r, n, i, o, a) { + for (var s = t.geometries, l = [], u = 0, c = s.length; u < c; ++u) + l[u] = qS(s[u], e, r, n, i, o, a) + return l + } + function qS(t, e, r, n, i, o, a) { + var s, + l = t.type, + u = VS[l] + s = 'Point' === l || 'MultiPoint' === l ? u(t, r, n) : u(t, e) + var c = new gt() + c.setGeometry(Wy(s, !1, a)), void 0 !== t.id && c.setId(t.id) + var h = t.properties + return i && (h || (h = {}), (h[i] = o)), h && c.setProperties(h, !0), c + } + function XS(t, e, r) { + for (var n = 0, i = 0, o = 0, a = t.length; o < a; ++o) { + var s = t[o] + ;(n += s[0]), (i += s[1]), (s[0] = n), (s[1] = i), ZS(s, e, r) + } + } + function ZS(t, e, r) { + ;(t[0] = t[0] * e[0] + r[0]), (t[1] = t[1] * e[1] + r[1]) + } + var KS = BS, + HS = (function () { + function t(t) { + this.tagName_ = t + } + return ( + (t.prototype.getTagName = function () { + return this.tagName_ + }), + t + ) + })(), + $S = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + JS = (function (t) { + function e(e, r) { + var n = t.call(this, e) || this + return (n.conditions = r), pt(n.conditions.length >= 2, 57), n + } + return $S(e, t), e + })(HS), + QS = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + tE = (function (t) { + function e(e) { + return ( + t.call(this, 'And', Array.prototype.slice.call(arguments)) || this + ) + } + return QS(e, t), e + })(JS), + eE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + rE = (function (t) { + function e(e, r, n) { + var i = t.call(this, 'BBOX') || this + if (((i.geometryName = e), (i.extent = r), 4 !== r.length)) + throw new Error( + 'Expected an extent with four values ([minX, minY, maxX, maxY])', + ) + return (i.srsName = n), i + } + return eE(e, t), e + })(HS), + nE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + iE = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e) || this + return ( + (o.geometryName = r || 'the_geom'), + (o.geometry = n), + (o.srsName = i), + o + ) + } + return nE(e, t), e + })(HS), + oE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + aE = (function (t) { + function e(e, r, n) { + return t.call(this, 'Contains', e, r, n) || this + } + return oE(e, t), e + })(iE), + sE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + lE = (function (t) { + function e(e, r, n, i, o) { + var a = t.call(this, 'DWithin', e, r, o) || this + return (a.distance = n), (a.unit = i), a + } + return sE(e, t), e + })(iE), + uE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + cE = (function (t) { + function e(e, r, n) { + return t.call(this, 'Disjoint', e, r, n) || this + } + return uE(e, t), e + })(iE), + hE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + pE = (function (t) { + function e(e, r) { + var n = t.call(this, e) || this + return (n.propertyName = r), n + } + return hE(e, t), e + })(HS), + fE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + dE = (function (t) { + function e(e, r, n) { + var i = t.call(this, 'During', e) || this + return (i.begin = r), (i.end = n), i + } + return fE(e, t), e + })(pE), + gE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + yE = (function (t) { + function e(e, r, n, i) { + var o = t.call(this, e, r) || this + return (o.expression = n), (o.matchCase = i), o + } + return gE(e, t), e + })(pE), + mE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + vE = (function (t) { + function e(e, r, n) { + return t.call(this, 'PropertyIsEqualTo', e, r, n) || this + } + return mE(e, t), e + })(yE), + _E = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + bE = (function (t) { + function e(e, r) { + return t.call(this, 'PropertyIsGreaterThan', e, r) || this + } + return _E(e, t), e + })(yE), + xE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + wE = (function (t) { + function e(e, r) { + return t.call(this, 'PropertyIsGreaterThanOrEqualTo', e, r) || this + } + return xE(e, t), e + })(yE), + SE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + EE = (function (t) { + function e(e, r, n) { + return t.call(this, 'Intersects', e, r, n) || this + } + return SE(e, t), e + })(iE), + TE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + CE = (function (t) { + function e(e, r, n) { + var i = t.call(this, 'PropertyIsBetween', e) || this + return (i.lowerBoundary = r), (i.upperBoundary = n), i + } + return TE(e, t), e + })(pE), + OE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + PE = (function (t) { + function e(e, r, n, i, o, a) { + var s = t.call(this, 'PropertyIsLike', e) || this + return ( + (s.pattern = r), + (s.wildCard = void 0 !== n ? n : '*'), + (s.singleChar = void 0 !== i ? i : '.'), + (s.escapeChar = void 0 !== o ? o : '!'), + (s.matchCase = a), + s + ) + } + return OE(e, t), e + })(pE), + RE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + IE = (function (t) { + function e(e) { + return t.call(this, 'PropertyIsNull', e) || this + } + return RE(e, t), e + })(pE), + LE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ME = (function (t) { + function e(e, r) { + return t.call(this, 'PropertyIsLessThan', e, r) || this + } + return LE(e, t), e + })(yE), + FE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + AE = (function (t) { + function e(e, r) { + return t.call(this, 'PropertyIsLessThanOrEqualTo', e, r) || this + } + return FE(e, t), e + })(yE), + kE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + jE = (function (t) { + function e(e) { + var r = t.call(this, 'Not') || this + return (r.condition = e), r + } + return kE(e, t), e + })(HS), + NE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + DE = (function (t) { + function e(e, r, n) { + return t.call(this, 'PropertyIsNotEqualTo', e, r, n) || this + } + return NE(e, t), e + })(yE), + GE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + zE = (function (t) { + function e(e) { + return ( + t.call(this, 'Or', Array.prototype.slice.call(arguments)) || this + ) + } + return GE(e, t), e + })(JS), + UE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + BE = (function (t) { + function e(e) { + var r = t.call(this, 'ResourceId') || this + return (r.rid = e), r + } + return UE(e, t), e + })(HS), + VE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + YE = (function (t) { + function e(e, r, n) { + return t.call(this, 'Within', e, r, n) || this + } + return VE(e, t), e + })(iE) + function WE(t) { + var e = [null].concat(Array.prototype.slice.call(arguments)) + return new (Function.prototype.bind.apply(tE, e))() + } + function qE(t, e, r) { + return new rE(t, e, r) + } + var XE = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + ZE = { + 'http://www.opengis.net/gml': { + boundedBy: Fc(F_.prototype.readGeometryElement, 'bounds'), + }, + 'http://www.opengis.net/wfs/2.0': { + member: Ic(F_.prototype.readFeaturesInternal), + }, + }, + KE = { + 'http://www.opengis.net/wfs': { + totalInserted: Fc(G_), + totalUpdated: Fc(G_), + totalDeleted: Fc(G_), + }, + 'http://www.opengis.net/wfs/2.0': { + totalInserted: Fc(G_), + totalUpdated: Fc(G_), + totalDeleted: Fc(G_), + }, + }, + HE = { + 'http://www.opengis.net/wfs': { + TransactionSummary: Fc(sT, 'transactionSummary'), + InsertResults: Fc(hT, 'insertIds'), + }, + 'http://www.opengis.net/wfs/2.0': { + TransactionSummary: Fc(sT, 'transactionSummary'), + InsertResults: Fc(hT, 'insertIds'), + }, + }, + $E = { + 'http://www.opengis.net/wfs': { PropertyName: Ac(X_) }, + 'http://www.opengis.net/wfs/2.0': { PropertyName: Ac(X_) }, + }, + JE = { + 'http://www.opengis.net/wfs': { + Insert: Ac(pT), + Update: Ac(yT), + Delete: Ac(gT), + Property: Ac(mT), + Native: Ac(vT), + }, + 'http://www.opengis.net/wfs/2.0': { + Insert: Ac(pT), + Update: Ac(yT), + Delete: Ac(gT), + Property: Ac(mT), + Native: Ac(vT), + }, + }, + QE = 'http://www.w3.org/2000/xmlns/', + tT = { + '2.0.0': 'http://www.opengis.net/ogc/1.1', + '1.1.0': 'http://www.opengis.net/ogc', + '1.0.0': 'http://www.opengis.net/ogc', + }, + eT = { + '2.0.0': 'http://www.opengis.net/wfs/2.0', + '1.1.0': 'http://www.opengis.net/wfs', + '1.0.0': 'http://www.opengis.net/wfs', + }, + rT = { + '2.0.0': 'http://www.opengis.net/fes/2.0', + '1.1.0': 'http://www.opengis.net/fes', + '1.0.0': 'http://www.opengis.net/fes', + }, + nT = { + '2.0.0': + 'http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd', + '1.1.0': + 'http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd', + '1.0.0': + 'http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd', + }, + iT = { '2.0.0': ab, '1.1.0': eb, '1.0.0': $_ }, + oT = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.version_ = n.version ? n.version : '1.1.0'), + (r.featureType_ = n.featureType), + (r.featureNS_ = n.featureNS), + (r.gmlFormat_ = n.gmlFormat ? n.gmlFormat : new iT[r.version_]()), + (r.schemaLocation_ = n.schemaLocation + ? n.schemaLocation + : nT[r.version_]), + r + ) + } + return ( + XE(e, t), + (e.prototype.getFeatureType = function () { + return this.featureType_ + }), + (e.prototype.setFeatureType = function (t) { + this.featureType_ = t + }), + (e.prototype.readFeaturesFromNode = function (t, e) { + var r = { node: t } + O(r, { + featureType: this.featureType_, + featureNS: this.featureNS_, + }), + O(r, this.getReadOptions(t, e || {})) + var n = [r], + i = Uc( + [], + '2.0.0' === this.version_ + ? ZE + : this.gmlFormat_.FEATURE_COLLECTION_PARSERS, + t, + n, + this.gmlFormat_, + ) + return i || (i = []), i + }), + (e.prototype.readTransactionResponse = function (t) { + if (t) { + if ('string' == typeof t) { + var e = Pc(t) + return this.readTransactionResponseFromDocument(e) + } + return Cc(t) + ? this.readTransactionResponseFromDocument(t) + : this.readTransactionResponseFromNode(t) + } + }), + (e.prototype.readFeatureCollectionMetadata = function (t) { + if (t) { + if ('string' == typeof t) { + var e = Pc(t) + return this.readFeatureCollectionMetadataFromDocument(e) + } + return Cc(t) + ? this.readFeatureCollectionMetadataFromDocument(t) + : this.readFeatureCollectionMetadataFromNode(t) + } + }), + (e.prototype.readFeatureCollectionMetadataFromDocument = function ( + t, + ) { + for (var e = t.firstChild; e; e = e.nextSibling) + if (e.nodeType == Node.ELEMENT_NODE) + return this.readFeatureCollectionMetadataFromNode(e) + }), + (e.prototype.readFeatureCollectionMetadataFromNode = function (t) { + var e = {}, + r = z_(t.getAttribute('numberOfFeatures')) + return (e.numberOfFeatures = r), Uc(e, ZE, t, [], this.gmlFormat_) + }), + (e.prototype.readTransactionResponseFromDocument = function (t) { + for (var e = t.firstChild; e; e = e.nextSibling) + if (e.nodeType == Node.ELEMENT_NODE) + return this.readTransactionResponseFromNode(e) + }), + (e.prototype.readTransactionResponseFromNode = function (t) { + return Uc({}, HE, t, []) + }), + (e.prototype.writeGetFeature = function (t) { + var e = this, + r = Sc(eT[this.version_], 'GetFeature') + r.setAttribute('service', 'WFS'), + r.setAttribute('version', this.version_), + t.handle && r.setAttribute('handle', t.handle), + t.outputFormat && + r.setAttribute('outputFormat', t.outputFormat), + void 0 !== t.maxFeatures && + r.setAttribute('maxFeatures', String(t.maxFeatures)), + t.resultType && r.setAttribute('resultType', t.resultType), + void 0 !== t.startIndex && + r.setAttribute('startIndex', String(t.startIndex)), + void 0 !== t.count && r.setAttribute('count', String(t.count)), + void 0 !== t.viewParams && + r.setAttribute('viewParams', t.viewParams), + r.setAttributeNS(wc, 'xsi:schemaLocation', this.schemaLocation_) + var n = { node: r } + if ( + (O(n, { + version: this.version_, + srsName: t.srsName, + featureNS: t.featureNS ? t.featureNS : this.featureNS_, + featurePrefix: t.featurePrefix, + propertyNames: t.propertyNames ? t.propertyNames : [], + }), + pt(Array.isArray(t.featureTypes), 11), + 'string' == typeof t.featureTypes[0]) + ) { + var i = t.filter + t.bbox && + (pt(t.geometryName, 12), + (i = this.combineBboxAndFilter( + t.geometryName, + t.bbox, + t.srsName, + i, + ))), + O(n, { geometryName: t.geometryName, filter: i }), + jT(r, t.featureTypes, [n]) + } else + t.featureTypes.forEach(function (i) { + var o = e.combineBboxAndFilter( + i.geometryName, + i.bbox, + t.srsName, + t.filter, + ) + O(n, { geometryName: i.geometryName, filter: o }), + jT(r, [i.name], [n]) + }) + return r + }), + (e.prototype.combineBboxAndFilter = function (t, e, r, n) { + var i = qE(t, e, r) + return n ? WE(n, i) : i + }), + (e.prototype.writeTransaction = function (t, e, r, n) { + var i, + o = [], + a = n.version ? n.version : this.version_, + s = Sc(eT[a], 'Transaction') + s.setAttribute('service', 'WFS'), + s.setAttribute('version', a), + n && + ((i = n.gmlOptions ? n.gmlOptions : {}), + n.handle && s.setAttribute('handle', n.handle)), + s.setAttributeNS(wc, 'xsi:schemaLocation', nT[a]) + var l = (function (t, e, r, n) { + var i, + o = n.featurePrefix ? n.featurePrefix : 'feature' + '1.0.0' === r + ? (i = 2) + : '1.1.0' === r + ? (i = 3) + : '2.0.0' === r && (i = 3.2) + return O( + { node: t }, + { + version: r, + featureNS: n.featureNS, + featureType: n.featureType, + featurePrefix: o, + gmlVersion: i, + hasZ: n.hasZ, + srsName: n.srsName, + }, + e, + ) + })(s, i, a, n) + return ( + t && aT('Insert', t, o, l), + e && aT('Update', e, o, l), + r && aT('Delete', r, o, l), + n.nativeElements && aT('Native', n.nativeElements, o, l), + s + ) + }), + (e.prototype.readProjectionFromDocument = function (t) { + for (var e = t.firstChild; e; e = e.nextSibling) + if (e.nodeType == Node.ELEMENT_NODE) + return this.readProjectionFromNode(e) + return null + }), + (e.prototype.readProjectionFromNode = function (t) { + if (t.firstElementChild && t.firstElementChild.firstElementChild) + for ( + var e = (t = t.firstElementChild.firstElementChild) + .firstElementChild; + e; + e = e.nextElementSibling + ) + if ( + 0 !== e.childNodes.length && + (1 !== e.childNodes.length || 3 !== e.firstChild.nodeType) + ) { + var r = [{}] + return ( + this.gmlFormat_.readGeometryElement(e, r), + Gr(r.pop().srsName) + ) + } + return null + }), + e + ) + })(P_) + function aT(t, e, r, n) { + Vc(n, JE, jc(t), e, r) + } + function sT(t, e) { + return Uc({}, KE, t, e) + } + var lT = { + 'http://www.opengis.net/ogc': { + FeatureId: Ic(function (t, e) { + return t.getAttribute('fid') + }), + }, + 'http://www.opengis.net/ogc/1.1': { + FeatureId: Ic(function (t, e) { + return t.getAttribute('fid') + }), + }, + } + function uT(t, e) { + zc(lT, t, e) + } + var cT = { + 'http://www.opengis.net/wfs': { Feature: uT }, + 'http://www.opengis.net/wfs/2.0': { Feature: uT }, + } + function hT(t, e) { + return Uc([], cT, t, e) + } + function pT(t, e, r) { + var n = r[r.length - 1], + i = n.featureType, + o = n.featureNS, + a = n.gmlVersion, + s = Sc(o, i) + t.appendChild(s), + 2 === a + ? $_.prototype.writeFeatureElement(s, e, r) + : 3 === a + ? eb.prototype.writeFeatureElement(s, e, r) + : ab.prototype.writeFeatureElement(s, e, r) + } + function fT(t, e, r) { + var n = r[r.length - 1].version, + i = tT[n], + o = Sc(i, 'Filter'), + a = Sc(i, 'FeatureId') + o.appendChild(a), a.setAttribute('fid', e), t.appendChild(o) + } + function dT(t, e) { + var r = (t = t || 'feature') + ':' + return 0 === e.indexOf(r) ? e : r + e + } + function gT(t, e, r) { + var n = r[r.length - 1] + pt(void 0 !== e.getId(), 26) + var i = n.featureType, + o = n.featurePrefix, + a = n.featureNS, + s = dT(o, i) + t.setAttribute('typeName', s), t.setAttributeNS(QE, 'xmlns:' + o, a) + var l = e.getId() + void 0 !== l && fT(t, l, r) + } + function yT(t, e, r) { + var n = r[r.length - 1] + pt(void 0 !== e.getId(), 27) + var i = n.version, + o = n.featureType, + a = n.featurePrefix, + s = n.featureNS, + l = dT(a, o), + u = e.getGeometryName() + t.setAttribute('typeName', l), t.setAttributeNS(QE, 'xmlns:' + a, s) + var c = e.getId() + if (void 0 !== c) { + for (var h = e.getKeys(), p = [], f = 0, d = h.length; f < d; f++) { + var g = e.get(h[f]) + if (void 0 !== g) { + var y = h[f] + g && 'function' == typeof g.getSimplifiedGeometry && (y = u), + p.push({ name: y, value: g }) + } + } + Vc( + { + version: i, + gmlVersion: n.gmlVersion, + node: t, + hasZ: n.hasZ, + srsName: n.srsName, + }, + JE, + jc('Property'), + p, + r, + ), + fT(t, c, r) + } + } + function mT(t, e, r) { + var n = r[r.length - 1], + i = n.version, + o = eT[i], + a = Sc(o, 'Name'), + s = n.gmlVersion + if ( + (t.appendChild(a), + X_(a, e.name), + void 0 !== e.value && null !== e.value) + ) { + var l = Sc(o, 'Value') + t.appendChild(l), + e.value && 'function' == typeof e.value.getSimplifiedGeometry + ? 2 === s + ? $_.prototype.writeGeometryElement(l, e.value, r) + : 3 === s + ? eb.prototype.writeGeometryElement(l, e.value, r) + : ab.prototype.writeGeometryElement(l, e.value, r) + : X_(l, e.value) + } + } + function vT(t, e, r) { + e.vendorId && t.setAttribute('vendorId', e.vendorId), + void 0 !== e.safeToIgnore && + t.setAttribute('safeToIgnore', String(e.safeToIgnore)), + void 0 !== e.value && X_(t, e.value) + } + var _T = { + 'http://www.opengis.net/wfs': { Query: Ac(bT) }, + 'http://www.opengis.net/wfs/2.0': { Query: Ac(bT) }, + 'http://www.opengis.net/ogc': { + During: Ac(TT), + And: Ac(CT), + Or: Ac(CT), + Not: Ac(OT), + BBOX: Ac(wT), + Contains: Ac(ST), + Intersects: Ac(ST), + Within: Ac(ST), + DWithin: Ac(ET), + PropertyIsEqualTo: Ac(PT), + PropertyIsNotEqualTo: Ac(PT), + PropertyIsLessThan: Ac(PT), + PropertyIsLessThanOrEqualTo: Ac(PT), + PropertyIsGreaterThan: Ac(PT), + PropertyIsGreaterThanOrEqualTo: Ac(PT), + PropertyIsNull: Ac(RT), + PropertyIsBetween: Ac(IT), + PropertyIsLike: Ac(LT), + }, + 'http://www.opengis.net/fes/2.0': { + During: Ac(TT), + And: Ac(CT), + Or: Ac(CT), + Not: Ac(OT), + BBOX: Ac(wT), + Contains: Ac(ST), + Disjoint: Ac(ST), + Intersects: Ac(ST), + ResourceId: Ac(function (t, e, r) { + t.setAttribute('rid', e.rid) + }), + Within: Ac(ST), + DWithin: Ac(ET), + PropertyIsEqualTo: Ac(PT), + PropertyIsNotEqualTo: Ac(PT), + PropertyIsLessThan: Ac(PT), + PropertyIsLessThanOrEqualTo: Ac(PT), + PropertyIsGreaterThan: Ac(PT), + PropertyIsGreaterThanOrEqualTo: Ac(PT), + PropertyIsNull: Ac(RT), + PropertyIsBetween: Ac(IT), + PropertyIsLike: Ac(LT), + }, + } + function bT(t, e, r) { + var n, + i, + o = r[r.length - 1], + a = o.version, + s = o.featurePrefix, + l = o.featureNS, + u = o.propertyNames, + c = o.srsName + ;(n = s ? dT(s, e) : e), + (i = '2.0.0' === a ? 'typeNames' : 'typeName'), + t.setAttribute(i, n), + c && t.setAttribute('srsName', c), + l && t.setAttributeNS(QE, 'xmlns:' + s, l) + var h = O({}, o) + ;(h.node = t), Vc(h, $E, jc('PropertyName'), u, r) + var p = o.filter + if (p) { + var f = Sc(NT(a), 'Filter') + t.appendChild(f), xT(f, p, r) + } + } + function xT(t, e, r) { + var n = r[r.length - 1], + i = { node: t } + O(i, { context: n }), Vc(i, _T, jc(e.getTagName()), [e], r) + } + function wT(t, e, r) { + var n = r[r.length - 1], + i = n.context.version + n.srsName = e.srsName + var o = iT[i] + AT(i, t, e.geometryName), + o.prototype.writeGeometryElement(t, e.extent, r) + } + function ST(t, e, r) { + var n = r[r.length - 1], + i = n.context.version + n.srsName = e.srsName + var o = iT[i] + AT(i, t, e.geometryName), + o.prototype.writeGeometryElement(t, e.geometry, r) + } + function ET(t, e, r) { + var n = r[r.length - 1].context.version + ST(t, e, r) + var i = Sc(NT(n), 'Distance') + X_(i, e.distance.toString()), + '2.0.0' === n + ? i.setAttribute('uom', e.unit) + : i.setAttribute('units', e.unit), + t.appendChild(i) + } + function TT(t, e, r) { + var n = r[r.length - 1].context.version + MT(rT[n], 'ValueReference', t, e.propertyName) + var i = Sc(I_, 'TimePeriod') + t.appendChild(i) + var o = Sc(I_, 'begin') + i.appendChild(o), kT(o, e.begin) + var a = Sc(I_, 'end') + i.appendChild(a), kT(a, e.end) + } + function CT(t, e, r) { + var n = r[r.length - 1].context, + i = { node: t } + O(i, { context: n }) + for (var o = e.conditions, a = 0, s = o.length; a < s; ++a) { + var l = o[a] + Vc(i, _T, jc(l.getTagName()), [l], r) + } + } + function OT(t, e, r) { + var n = r[r.length - 1].context, + i = { node: t } + O(i, { context: n }) + var o = e.condition + Vc(i, _T, jc(o.getTagName()), [o], r) + } + function PT(t, e, r) { + var n = r[r.length - 1].context.version + void 0 !== e.matchCase && + t.setAttribute('matchCase', e.matchCase.toString()), + AT(n, t, e.propertyName), + FT(n, t, '' + e.expression) + } + function RT(t, e, r) { + AT(r[r.length - 1].context.version, t, e.propertyName) + } + function IT(t, e, r) { + var n = r[r.length - 1].context.version, + i = NT(n) + AT(n, t, e.propertyName) + var o = Sc(i, 'LowerBoundary') + t.appendChild(o), FT(n, o, '' + e.lowerBoundary) + var a = Sc(i, 'UpperBoundary') + t.appendChild(a), FT(n, a, '' + e.upperBoundary) + } + function LT(t, e, r) { + var n = r[r.length - 1].context.version + t.setAttribute('wildCard', e.wildCard), + t.setAttribute('singleChar', e.singleChar), + t.setAttribute('escapeChar', e.escapeChar), + void 0 !== e.matchCase && + t.setAttribute('matchCase', e.matchCase.toString()), + AT(n, t, e.propertyName), + FT(n, t, '' + e.pattern) + } + function MT(t, e, r, n) { + var i = Sc(t, e) + X_(i, n), r.appendChild(i) + } + function FT(t, e, r) { + MT(NT(t), 'Literal', e, r) + } + function AT(t, e, r) { + '2.0.0' === t + ? MT(rT[t], 'ValueReference', e, r) + : MT(tT[t], 'PropertyName', e, r) + } + function kT(t, e) { + var r = Sc(I_, 'TimeInstant') + t.appendChild(r) + var n = Sc(I_, 'timePosition') + r.appendChild(n), X_(n, e) + } + function jT(t, e, r) { + var n = r[r.length - 1], + i = O({}, n) + ;(i.node = t), Vc(i, _T, jc('Query'), e, r) + } + function NT(t) { + return '2.0.0' === t ? rT[t] : tT[t] + } + var DT = oT, + GT = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + zT = { + POINT: qn, + LINESTRING: Py, + POLYGON: fi, + MULTIPOINT: Hy, + MULTILINESTRING: Zy, + MULTIPOLYGON: Jy, + }, + UT = 1, + BT = 2, + VT = 3, + YT = 4, + WT = 5, + qT = 6, + XT = {} + for (var ZT in bt) XT[ZT] = bt[ZT].toUpperCase() + var KT = (function () { + function t(t) { + ;(this.wkt = t), (this.index_ = -1) + } + return ( + (t.prototype.isAlpha_ = function (t) { + return (t >= 'a' && t <= 'z') || (t >= 'A' && t <= 'Z') + }), + (t.prototype.isNumeric_ = function (t, e) { + return ( + (t >= '0' && t <= '9') || ('.' == t && !(void 0 !== e && e)) + ) + }), + (t.prototype.isWhiteSpace_ = function (t) { + return ' ' == t || '\t' == t || '\r' == t || '\n' == t + }), + (t.prototype.nextChar_ = function () { + return this.wkt.charAt(++this.index_) + }), + (t.prototype.nextToken = function () { + var t, + e = this.nextChar_(), + r = this.index_, + n = e + if ('(' == e) t = BT + else if (',' == e) t = WT + else if (')' == e) t = VT + else if (this.isNumeric_(e) || '-' == e) + (t = YT), (n = this.readNumber_()) + else if (this.isAlpha_(e)) (t = UT), (n = this.readText_()) + else { + if (this.isWhiteSpace_(e)) return this.nextToken() + if ('' !== e) throw new Error('Unexpected character: ' + e) + t = qT + } + return { position: r, value: n, type: t } + }), + (t.prototype.readNumber_ = function () { + var t, + e = this.index_, + r = !1, + n = !1 + do { + '.' == t ? (r = !0) : ('e' != t && 'E' != t) || (n = !0), + (t = this.nextChar_()) + } while ( + this.isNumeric_(t, r) || + (!n && ('e' == t || 'E' == t)) || + (n && ('-' == t || '+' == t)) + ) + return parseFloat(this.wkt.substring(e, this.index_--)) + }), + (t.prototype.readText_ = function () { + var t, + e = this.index_ + do { + t = this.nextChar_() + } while (this.isAlpha_(t)) + return this.wkt.substring(e, this.index_--).toUpperCase() + }), + t + ) + })(), + HT = (function () { + function t(t) { + ;(this.lexer_ = t), this.token_, (this.layout_ = yt) + } + return ( + (t.prototype.consume_ = function () { + this.token_ = this.lexer_.nextToken() + }), + (t.prototype.isTokenType = function (t) { + return this.token_.type == t + }), + (t.prototype.match = function (t) { + var e = this.isTokenType(t) + return e && this.consume_(), e + }), + (t.prototype.parse = function () { + return this.consume_(), this.parseGeometry_() + }), + (t.prototype.parseGeometryLayout_ = function () { + var t = yt, + e = this.token_ + if (this.isTokenType(UT)) { + var r = e.value + 'Z' === r + ? (t = mt) + : 'M' === r + ? (t = vt) + : 'ZM' === r && (t = _t), + t !== yt && this.consume_() + } + return t + }), + (t.prototype.parseGeometryCollectionText_ = function () { + if (this.match(BT)) { + var t = [] + do { + t.push(this.parseGeometry_()) + } while (this.match(WT)) + if (this.match(VT)) return t + } else if (this.isEmptyGeometry_()) return [] + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parsePointText_ = function () { + if (this.match(BT)) { + var t = this.parsePoint_() + if (this.match(VT)) return t + } else if (this.isEmptyGeometry_()) return null + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parseLineStringText_ = function () { + if (this.match(BT)) { + var t = this.parsePointList_() + if (this.match(VT)) return t + } else if (this.isEmptyGeometry_()) return [] + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parsePolygonText_ = function () { + if (this.match(BT)) { + var t = this.parseLineStringTextList_() + if (this.match(VT)) return t + } else if (this.isEmptyGeometry_()) return [] + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parseMultiPointText_ = function () { + if (this.match(BT)) { + var t = void 0 + if ( + ((t = + this.token_.type == BT + ? this.parsePointTextList_() + : this.parsePointList_()), + this.match(VT)) + ) + return t + } else if (this.isEmptyGeometry_()) return [] + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parseMultiLineStringText_ = function () { + if (this.match(BT)) { + var t = this.parseLineStringTextList_() + if (this.match(VT)) return t + } else if (this.isEmptyGeometry_()) return [] + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parseMultiPolygonText_ = function () { + if (this.match(BT)) { + var t = this.parsePolygonTextList_() + if (this.match(VT)) return t + } else if (this.isEmptyGeometry_()) return [] + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parsePoint_ = function () { + for (var t = [], e = this.layout_.length, r = 0; r < e; ++r) { + var n = this.token_ + if (!this.match(YT)) break + t.push(n.value) + } + if (t.length == e) return t + throw new Error(this.formatErrorMessage_()) + }), + (t.prototype.parsePointList_ = function () { + for (var t = [this.parsePoint_()]; this.match(WT); ) + t.push(this.parsePoint_()) + return t + }), + (t.prototype.parsePointTextList_ = function () { + for (var t = [this.parsePointText_()]; this.match(WT); ) + t.push(this.parsePointText_()) + return t + }), + (t.prototype.parseLineStringTextList_ = function () { + for (var t = [this.parseLineStringText_()]; this.match(WT); ) + t.push(this.parseLineStringText_()) + return t + }), + (t.prototype.parsePolygonTextList_ = function () { + for (var t = [this.parsePolygonText_()]; this.match(WT); ) + t.push(this.parsePolygonText_()) + return t + }), + (t.prototype.isEmptyGeometry_ = function () { + var t = this.isTokenType(UT) && 'EMPTY' == this.token_.value + return t && this.consume_(), t + }), + (t.prototype.formatErrorMessage_ = function () { + return ( + 'Unexpected `' + + this.token_.value + + '` at position ' + + this.token_.position + + ' in `' + + this.lexer_.wkt + + '`' + ) + }), + (t.prototype.parseGeometry_ = function () { + var t = this.token_ + if (this.match(UT)) { + var e = t.value + if ( + ((this.layout_ = this.parseGeometryLayout_()), + 'GEOMETRYCOLLECTION' == e) + ) { + var r = this.parseGeometryCollectionText_() + return new Vm(r) + } + var n = zT[e] + if (!n) throw new Error('Invalid geometry type: ' + e) + var i = void 0 + switch (e) { + case 'POINT': + i = this.parsePointText_() + break + case 'LINESTRING': + i = this.parseLineStringText_() + break + case 'POLYGON': + i = this.parsePolygonText_() + break + case 'MULTIPOINT': + i = this.parseMultiPointText_() + break + case 'MULTILINESTRING': + i = this.parseMultiLineStringText_() + break + case 'MULTIPOLYGON': + i = this.parseMultiPolygonText_() + break + default: + throw new Error('Invalid geometry type: ' + e) + } + return ( + i || (i = n === zT.POINT ? [NaN, NaN] : []), + new n(i, this.layout_) + ) + } + throw new Error(this.formatErrorMessage_()) + }), + t + ) + })(), + $T = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.splitCollection_ = + void 0 !== n.splitCollection && n.splitCollection), + r + ) + } + return ( + GT(e, t), + (e.prototype.parse_ = function (t) { + var e = new KT(t) + return new HT(e).parse() + }), + (e.prototype.readFeatureFromText = function (t, e) { + var r = this.readGeometryFromText(t, e) + if (r) { + var n = new gt() + return n.setGeometry(r), n + } + return null + }), + (e.prototype.readFeaturesFromText = function (t, e) { + for ( + var r = [], + n = this.readGeometryFromText(t, e), + i = [], + o = 0, + a = (r = + this.splitCollection_ && + n.getType() == bt.GEOMETRY_COLLECTION + ? n.getGeometriesArray() + : [n]).length; + o < a; + ++o + ) { + var s = new gt() + s.setGeometry(r[o]), i.push(s) + } + return i + }), + (e.prototype.readGeometryFromText = function (t, e) { + var r = this.parse_(t) + return r ? Wy(r, !1, e) : null + }), + (e.prototype.writeFeatureText = function (t, e) { + var r = t.getGeometry() + return r ? this.writeGeometryText(r, e) : '' + }), + (e.prototype.writeFeaturesText = function (t, e) { + if (1 == t.length) return this.writeFeatureText(t[0], e) + for (var r = [], n = 0, i = t.length; n < i; ++n) + r.push(t[n].getGeometry()) + var o = new Vm(r) + return this.writeGeometryText(o, e) + }), + (e.prototype.writeGeometryText = function (t, e) { + return rC(Wy(t, !0, e)) + }), + e + ) + })(Jb) + function JT(t) { + var e = t.getCoordinates() + return 0 === e.length ? '' : e.join(' ') + } + function QT(t) { + for ( + var e = t.getCoordinates(), r = [], n = 0, i = e.length; + n < i; + ++n + ) + r.push(e[n].join(' ')) + return r.join(',') + } + function tC(t) { + for ( + var e = [], r = t.getLinearRings(), n = 0, i = r.length; + n < i; + ++n + ) + e.push('(' + QT(r[n]) + ')') + return e.join(',') + } + var eC = { + Point: JT, + LineString: QT, + Polygon: tC, + MultiPoint: function (t) { + for (var e = [], r = t.getPoints(), n = 0, i = r.length; n < i; ++n) + e.push('(' + JT(r[n]) + ')') + return e.join(',') + }, + MultiLineString: function (t) { + for ( + var e = [], r = t.getLineStrings(), n = 0, i = r.length; + n < i; + ++n + ) + e.push('(' + QT(r[n]) + ')') + return e.join(',') + }, + MultiPolygon: function (t) { + for (var e = [], r = t.getPolygons(), n = 0, i = r.length; n < i; ++n) + e.push('(' + tC(r[n]) + ')') + return e.join(',') + }, + GeometryCollection: function (t) { + for ( + var e = [], r = t.getGeometries(), n = 0, i = r.length; + n < i; + ++n + ) + e.push(rC(r[n])) + return e.join(',') + }, + } + function rC(t) { + var e = t.getType(), + r = (0, eC[e])(t) + if ( + ((e = e.toUpperCase()), 'function' == typeof t.getFlatCoordinates) + ) { + var n = (function (t) { + var e = t.getLayout(), + r = '' + return ( + (e !== mt && e !== _t) || (r += 'Z'), + (e !== vt && e !== _t) || (r += 'M'), + r + ) + })(t) + n.length > 0 && (e += ' ' + n) + } + return 0 === r.length ? e + ' EMPTY' : e + '(' + r + ')' + } + var nC = $T, + iC = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + oC = [null, 'http://www.opengis.net/wms'], + aC = Gc(oC, { + Service: Fc(function (t, e) { + return Uc({}, uC, t, e) + }), + Capability: Fc(function (t, e) { + return Uc({}, sC, t, e) + }), + }), + sC = Gc(oC, { + Request: Fc(function (t, e) { + return Uc({}, mC, t, e) + }), + Exception: Fc(function (t, e) { + return Uc([], fC, t, e) + }), + Layer: Fc(function (t, e) { + var r = Uc({}, dC, t, e) + if (void 0 === r.Layer) return Object.assign(r, EC(t, e)) + return r + }), + }), + lC = (function (t) { + function e() { + var e = t.call(this) || this + return (e.version = void 0), e + } + return ( + iC(e, t), + (e.prototype.readFromNode = function (t) { + this.version = t.getAttribute('version').trim() + var e = Uc({ version: this.version }, aC, t, []) + return e || null + }), + e + ) + })(cS), + uC = Gc(oC, { + Name: Fc(U_), + Title: Fc(U_), + Abstract: Fc(U_), + KeywordList: Fc(PC), + OnlineResource: Fc(hS), + ContactInformation: Fc(function (t, e) { + return Uc({}, cC, t, e) + }), + Fees: Fc(U_), + AccessConstraints: Fc(U_), + LayerLimit: Fc(G_), + MaxWidth: Fc(G_), + MaxHeight: Fc(G_), + }), + cC = Gc(oC, { + ContactPersonPrimary: Fc(function (t, e) { + return Uc({}, hC, t, e) + }), + ContactPosition: Fc(U_), + ContactAddress: Fc(function (t, e) { + return Uc({}, pC, t, e) + }), + ContactVoiceTelephone: Fc(U_), + ContactFacsimileTelephone: Fc(U_), + ContactElectronicMailAddress: Fc(U_), + }), + hC = Gc(oC, { ContactPerson: Fc(U_), ContactOrganization: Fc(U_) }), + pC = Gc(oC, { + AddressType: Fc(U_), + Address: Fc(U_), + City: Fc(U_), + StateOrProvince: Fc(U_), + PostCode: Fc(U_), + Country: Fc(U_), + }), + fC = Gc(oC, { Format: Ic(U_) }), + dC = Gc(oC, { + Name: Fc(U_), + Title: Fc(U_), + Abstract: Fc(U_), + KeywordList: Fc(PC), + CRS: Mc(U_), + EX_GeographicBoundingBox: Fc(function (t, e) { + var r = Uc({}, yC, t, e) + if (!r) return + var n = r.westBoundLongitude, + i = r.southBoundLatitude, + o = r.eastBoundLongitude, + a = r.northBoundLatitude + if (void 0 === n || void 0 === i || void 0 === o || void 0 === a) + return + return [n, i, o, a] + }), + BoundingBox: Mc(function (t, e) { + var r = [ + D_(t.getAttribute('minx')), + D_(t.getAttribute('miny')), + D_(t.getAttribute('maxx')), + D_(t.getAttribute('maxy')), + ], + n = [D_(t.getAttribute('resx')), D_(t.getAttribute('resy'))] + return { crs: t.getAttribute('CRS'), extent: r, res: n } + }), + Dimension: Mc(function (t, e) { + return { + name: t.getAttribute('name'), + units: t.getAttribute('units'), + unitSymbol: t.getAttribute('unitSymbol'), + default: t.getAttribute('default'), + multipleValues: k_(t.getAttribute('multipleValues')), + nearestValue: k_(t.getAttribute('nearestValue')), + current: k_(t.getAttribute('current')), + values: U_(t), + } + }), + Attribution: Fc(function (t, e) { + return Uc({}, gC, t, e) + }), + AuthorityURL: Mc(function (t, e) { + var r = TC(t, e) + if (r) return (r.name = t.getAttribute('name')), r + return + }), + Identifier: Mc(U_), + MetadataURL: Mc(function (t, e) { + var r = TC(t, e) + if (r) return (r.type = t.getAttribute('type')), r + return + }), + DataURL: Mc(TC), + FeatureListURL: Mc(TC), + Style: Mc(function (t, e) { + return Uc({}, xC, t, e) + }), + MinScaleDenominator: Fc(N_), + MaxScaleDenominator: Fc(N_), + Layer: Mc(EC), + }), + gC = Gc(oC, { Title: Fc(U_), OnlineResource: Fc(hS), LogoURL: Fc(OC) }), + yC = Gc(oC, { + westBoundLongitude: Fc(N_), + eastBoundLongitude: Fc(N_), + southBoundLatitude: Fc(N_), + northBoundLatitude: Fc(N_), + }), + mC = Gc(oC, { + GetCapabilities: Fc(CC), + GetMap: Fc(CC), + GetFeatureInfo: Fc(CC), + }), + vC = Gc(oC, { + Format: Mc(U_), + DCPType: Mc(function (t, e) { + return Uc({}, _C, t, e) + }), + }), + _C = Gc(oC, { + HTTP: Fc(function (t, e) { + return Uc({}, bC, t, e) + }), + }), + bC = Gc(oC, { Get: Fc(TC), Post: Fc(TC) }), + xC = Gc(oC, { + Name: Fc(U_), + Title: Fc(U_), + Abstract: Fc(U_), + LegendURL: Mc(OC), + StyleSheetURL: Fc(TC), + StyleURL: Fc(TC), + }), + wC = Gc(oC, { Format: Fc(U_), OnlineResource: Fc(hS) }), + SC = Gc(oC, { Keyword: Ic(U_) }) + function EC(t, e) { + var r = e[e.length - 1], + n = Uc({}, dC, t, e) + if (n) { + var i = k_(t.getAttribute('queryable')) + void 0 === i && (i = r.queryable), (n.queryable = void 0 !== i && i) + var o = z_(t.getAttribute('cascaded')) + void 0 === o && (o = r.cascaded), (n.cascaded = o) + var a = k_(t.getAttribute('opaque')) + void 0 === a && (a = r.opaque), (n.opaque = void 0 !== a && a) + var s = k_(t.getAttribute('noSubsets')) + void 0 === s && (s = r.noSubsets), (n.noSubsets = void 0 !== s && s) + var l = D_(t.getAttribute('fixedWidth')) + l || (l = r.fixedWidth), (n.fixedWidth = l) + var u = D_(t.getAttribute('fixedHeight')) + u || (u = r.fixedHeight), (n.fixedHeight = u) + ;['Style', 'CRS', 'AuthorityURL'].forEach(function (t) { + if (t in r) { + var e = n[t] || [] + n[t] = e.concat(r[t]) + } + }) + return ( + [ + 'EX_GeographicBoundingBox', + 'BoundingBox', + 'Dimension', + 'Attribution', + 'MinScaleDenominator', + 'MaxScaleDenominator', + ].forEach(function (t) { + if (!(t in n)) { + var e = r[t] + n[t] = e + } + }), + n + ) + } + } + function TC(t, e) { + return Uc({}, wC, t, e) + } + function CC(t, e) { + return Uc({}, vC, t, e) + } + function OC(t, e) { + var r = TC(t, e) + if (r) { + var n = [z_(t.getAttribute('width')), z_(t.getAttribute('height'))] + return (r.size = n), r + } + } + function PC(t, e) { + return Uc([], SC, t, e) + } + var RC = lC, + IC = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + LC = (function (t) { + function e(e) { + var r = t.call(this) || this, + n = e || {} + return ( + (r.featureNS_ = 'http://mapserver.gis.umn.edu/mapserver'), + (r.gmlFormat_ = new $_()), + (r.layers_ = n.layers ? n.layers : null), + r + ) + } + return ( + IC(e, t), + (e.prototype.getLayers = function () { + return this.layers_ + }), + (e.prototype.setLayers = function (t) { + this.layers_ = t + }), + (e.prototype.readFeatures_ = function (t, e) { + t.setAttribute('namespaceURI', this.featureNS_) + var r = t.localName, + n = [] + if (0 === t.childNodes.length) return n + if ('msGMLOutput' == r) + for (var i = 0, o = t.childNodes.length; i < o; i++) { + var a = t.childNodes[i] + if (a.nodeType === Node.ELEMENT_NODE) { + var s = a, + l = e[0], + u = s.localName.replace('_layer', '') + if (!this.layers_ || g(this.layers_, u)) { + var c = u + '_feature' + ;(l.featureType = c), (l.featureNS = this.featureNS_) + var h = {} + h[c] = Ic( + this.gmlFormat_.readFeatureElement, + this.gmlFormat_, + ) + var p = Gc([l.featureNS, null], h) + s.setAttribute('namespaceURI', this.featureNS_) + var f = Uc([], p, s, e, this.gmlFormat_) + f && v(n, f) + } + } + } + if ('FeatureCollection' == r) { + var d = Uc( + [], + this.gmlFormat_.FEATURE_COLLECTION_PARSERS, + t, + [{}], + this.gmlFormat_, + ) + d && (n = d) + } + return n + }), + (e.prototype.readFeaturesFromNode = function (t, e) { + var r = {} + return ( + e && O(r, this.getReadOptions(t, e)), this.readFeatures_(t, [r]) + ) + }), + e + ) + })(P_), + MC = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + FC = [null, 'http://www.opengis.net/wmts/1.0'], + AC = [null, 'http://www.opengis.net/ows/1.1'], + kC = Gc(FC, { + Contents: Fc(function (t, e) { + return Uc({}, NC, t, e) + }), + }), + jC = (function (t) { + function e() { + var e = t.call(this) || this + return (e.owsParser_ = new RS()), e + } + return ( + MC(e, t), + (e.prototype.readFromNode = function (t) { + var e = t.getAttribute('version') + e && (e = e.trim()) + var r = this.owsParser_.readFromNode(t) + return r + ? ((r.version = e), (r = Uc(r, kC, t, [])) || null) + : null + }), + e + ) + })(cS), + NC = Gc(FC, { + Layer: Mc(function (t, e) { + return Uc({}, DC, t, e) + }), + TileMatrixSet: Mc(function (t, e) { + return Uc({}, WC, t, e) + }), + }), + DC = Gc( + FC, + { + Style: Mc(function (t, e) { + var r = Uc({}, GC, t, e) + if (!r) return + var n = 'true' === t.getAttribute('isDefault') + return (r.isDefault = n), r + }), + Format: Mc(U_), + TileMatrixSetLink: Mc(function (t, e) { + return Uc({}, zC, t, e) + }), + Dimension: Mc(function (t, e) { + return Uc({}, VC, t, e) + }), + ResourceURL: Mc(function (t, e) { + var r = t.getAttribute('format'), + n = t.getAttribute('template'), + i = t.getAttribute('resourceType'), + o = {} + r && (o.format = r) + n && (o.template = n) + i && (o.resourceType = i) + return o + }), + }, + Gc(AC, { + Title: Fc(U_), + Abstract: Fc(U_), + WGS84BoundingBox: Fc(function (t, e) { + var r = Uc([], YC, t, e) + if (2 != r.length) return + return Kt(r) + }), + Identifier: Fc(U_), + }), + ), + GC = Gc( + FC, + { + LegendURL: Mc(function (t, e) { + var r = {} + return (r.format = t.getAttribute('format')), (r.href = hS(t)), r + }), + }, + Gc(AC, { Title: Fc(U_), Identifier: Fc(U_) }), + ), + zC = Gc(FC, { + TileMatrixSet: Fc(U_), + TileMatrixSetLimits: Fc(function (t, e) { + return Uc([], UC, t, e) + }), + }), + UC = Gc(FC, { + TileMatrixLimits: Ic(function (t, e) { + return Uc({}, BC, t, e) + }), + }), + BC = Gc(FC, { + TileMatrix: Fc(U_), + MinTileRow: Fc(G_), + MaxTileRow: Fc(G_), + MinTileCol: Fc(G_), + MaxTileCol: Fc(G_), + }), + VC = Gc( + FC, + { Default: Fc(U_), Value: Mc(U_) }, + Gc(AC, { Identifier: Fc(U_) }), + ), + YC = Gc(AC, { LowerCorner: Ic(XC), UpperCorner: Ic(XC) }), + WC = Gc( + FC, + { + WellKnownScaleSet: Fc(U_), + TileMatrix: Mc(function (t, e) { + return Uc({}, qC, t, e) + }), + }, + Gc(AC, { SupportedCRS: Fc(U_), Identifier: Fc(U_) }), + ), + qC = Gc( + FC, + { + TopLeftCorner: Fc(XC), + ScaleDenominator: Fc(N_), + TileWidth: Fc(G_), + TileHeight: Fc(G_), + MatrixWidth: Fc(G_), + MatrixHeight: Fc(G_), + }, + Gc(AC, { Identifier: Fc(U_) }), + ) + function XC(t, e) { + var r = U_(t).split(/\s+/) + if (r && 2 == r.length) { + var n = +r[0], + i = +r[1] + if (!isNaN(n) && !isNaN(i)) return [n, i] + } + } + var ZC = jC, + KC = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + HC = [ + 'fullscreenchange', + 'webkitfullscreenchange', + 'MSFullscreenChange', + ], + $C = 'enterfullscreen', + JC = 'leavefullscreen' + function QC() { + var t = document.body + return !!( + t.webkitRequestFullscreen || + (t.msRequestFullscreen && document.msFullscreenEnabled) || + (t.requestFullscreen && document.fullscreenEnabled) + ) + } + function tO() { + return !!( + document.webkitIsFullScreen || + document.msFullscreenElement || + document.fullscreenElement + ) + } + function eO(t) { + t.requestFullscreen + ? t.requestFullscreen() + : t.msRequestFullscreen + ? t.msRequestFullscreen() + : t.webkitRequestFullscreen && t.webkitRequestFullscreen() + } + var rO = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;((r = + t.call(this, { + element: document.createElement('div'), + target: n.target, + }) || this).cssClassName_ = + void 0 !== n.className ? n.className : 'ol-full-screen'), + (r.activeClassName_ = + void 0 !== n.activeClassName + ? n.activeClassName.split(' ') + : [r.cssClassName_ + '-true']), + (r.inactiveClassName_ = + void 0 !== n.inactiveClassName + ? n.inactiveClassName.split(' ') + : [r.cssClassName_ + '-false']) + var i = void 0 !== n.label ? n.label : '⤢' + r.labelNode_ = 'string' == typeof i ? document.createTextNode(i) : i + var o = void 0 !== n.labelActive ? n.labelActive : '×' + ;(r.labelActiveNode_ = + 'string' == typeof o ? document.createTextNode(o) : o), + (r.button_ = document.createElement('button')) + var a = n.tipLabel ? n.tipLabel : 'Toggle full-screen' + r.setClassName_(r.button_, tO()), + r.button_.setAttribute('type', 'button'), + (r.button_.title = a), + r.button_.appendChild(r.labelNode_), + r.button_.addEventListener(N, r.handleClick_.bind(r), !1) + var s = + r.cssClassName_ + + ' ol-unselectable ol-control ' + + (QC() ? '' : 'ol-unsupported'), + l = r.element + return ( + (l.className = s), + l.appendChild(r.button_), + (r.keys_ = void 0 !== n.keys && n.keys), + (r.source_ = n.source), + r + ) + } + return ( + KC(e, t), + (e.prototype.handleClick_ = function (t) { + t.preventDefault(), this.handleFullScreen_() + }), + (e.prototype.handleFullScreen_ = function () { + if (QC()) { + var t = this.getMap() + if (t) + if (tO()) + document.exitFullscreen + ? document.exitFullscreen() + : document.msExitFullscreen + ? document.msExitFullscreen() + : document.webkitExitFullscreen && + document.webkitExitFullscreen() + else { + var e = void 0 + ;(e = this.source_ + ? 'string' == typeof this.source_ + ? document.getElementById(this.source_) + : this.source_ + : t.getTargetElement()), + this.keys_ + ? (function (t) { + t.webkitRequestFullscreen + ? t.webkitRequestFullscreen() + : eO(t) + })(e) + : eO(e) + } + } + }), + (e.prototype.handleFullScreenChange_ = function () { + var t = this.getMap() + tO() + ? (this.setClassName_(this.button_, !0), + po(this.labelActiveNode_, this.labelNode_), + this.dispatchEvent($C)) + : (this.setClassName_(this.button_, !1), + po(this.labelNode_, this.labelActiveNode_), + this.dispatchEvent(JC)), + t && t.updateSize() + }), + (e.prototype.setClassName_ = function (t, e) { + var r, + n, + i, + o = this.activeClassName_, + a = this.inactiveClassName_, + s = e ? o : a + ;(r = t.classList).remove.apply(r, o), + (n = t.classList).remove.apply(n, a), + (i = t.classList).add.apply(i, s) + }), + (e.prototype.setMap = function (e) { + if ((t.prototype.setMap.call(this, e), e)) + for (var r = 0, n = HC.length; r < n; ++r) + this.listenerKeys.push( + Z(document, HC[r], this.handleFullScreenChange_, this), + ) + }), + e + ) + })(As), + nO = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + iO = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = document.createElement('div') + return ( + (i.className = + void 0 !== n.className ? n.className : 'ol-mouse-position'), + (r = + t.call(this, { + element: i, + render: n.render, + target: n.target, + }) || this).addEventListener( + it('projection'), + r.handleProjectionChanged_, + ), + n.coordinateFormat && r.setCoordinateFormat(n.coordinateFormat), + n.projection && r.setProjection(n.projection), + (r.undefinedHTML_ = + void 0 !== n.undefinedHTML ? n.undefinedHTML : ' '), + (r.renderOnMouseOut_ = !!r.undefinedHTML_), + (r.renderedHTML_ = i.innerHTML), + (r.mapProjection_ = null), + (r.transform_ = null), + r + ) + } + return ( + nO(e, t), + (e.prototype.handleProjectionChanged_ = function () { + this.transform_ = null + }), + (e.prototype.getCoordinateFormat = function () { + return this.get('coordinateFormat') + }), + (e.prototype.getProjection = function () { + return this.get('projection') + }), + (e.prototype.handleMouseMove = function (t) { + var e = this.getMap() + this.updateHTML_(e.getEventPixel(t)) + }), + (e.prototype.handleMouseOut = function (t) { + this.updateHTML_(null) + }), + (e.prototype.setMap = function (e) { + if ((t.prototype.setMap.call(this, e), e)) { + var r = e.getViewport() + this.listenerKeys.push(Z(r, za, this.handleMouseMove, this)), + this.renderOnMouseOut_ && + this.listenerKeys.push(Z(r, Va, this.handleMouseOut, this)) + } + }), + (e.prototype.setCoordinateFormat = function (t) { + this.set('coordinateFormat', t) + }), + (e.prototype.setProjection = function (t) { + this.set('projection', Gr(t)) + }), + (e.prototype.updateHTML_ = function (t) { + var e = this.undefinedHTML_ + if (t && this.mapProjection_) { + if (!this.transform_) { + var r = this.getProjection() + this.transform_ = r ? Zr(this.mapProjection_, r) : jr + } + var n = this.getMap().getCoordinateFromPixelInternal(t) + if (n) { + var i = tn() + i && (this.transform_ = Zr(this.mapProjection_, i)), + this.transform_(n, n) + var o = this.getCoordinateFormat() + e = o ? o(n) : n.toString() + } + } + ;(this.renderedHTML_ && e === this.renderedHTML_) || + ((this.element.innerHTML = e), (this.renderedHTML_ = e)) + }), + (e.prototype.render = function (t) { + var e = t.frameState + e + ? this.mapProjection_ != e.viewState.projection && + ((this.mapProjection_ = e.viewState.projection), + (this.transform_ = null)) + : (this.mapProjection_ = null) + }), + e + ) + })(As), + oO = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + aO = (function (t) { + function e() { + return (null !== t && t.apply(this, arguments)) || this + } + return ( + oO(e, t), + (e.prototype.createRenderer = function () { + return new La(this) + }), + e + ) + })(Ms), + sO = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;((r = + t.call(this, { + element: document.createElement('div'), + render: n.render, + target: n.target, + }) || this).boundHandleRotationChanged_ = + r.handleRotationChanged_.bind(r)), + (r.collapsed_ = void 0 === n.collapsed || n.collapsed), + (r.collapsible_ = void 0 === n.collapsible || n.collapsible), + r.collapsible_ || (r.collapsed_ = !1), + (r.rotateWithView_ = + void 0 !== n.rotateWithView && n.rotateWithView), + (r.viewExtent_ = void 0) + var i = void 0 !== n.className ? n.className : 'ol-overviewmap', + o = void 0 !== n.tipLabel ? n.tipLabel : 'Overview map', + a = void 0 !== n.collapseLabel ? n.collapseLabel : '«' + 'string' == typeof a + ? ((r.collapseLabel_ = document.createElement('span')), + (r.collapseLabel_.textContent = a)) + : (r.collapseLabel_ = a) + var s = void 0 !== n.label ? n.label : '»' + 'string' == typeof s + ? ((r.label_ = document.createElement('span')), + (r.label_.textContent = s)) + : (r.label_ = s) + var l = + r.collapsible_ && !r.collapsed_ ? r.collapseLabel_ : r.label_, + u = document.createElement('button') + u.setAttribute('type', 'button'), + (u.title = o), + u.appendChild(l), + u.addEventListener(N, r.handleClick_.bind(r), !1), + (r.ovmapDiv_ = document.createElement('div')), + (r.ovmapDiv_.className = 'ol-overviewmap-map'), + (r.view_ = n.view), + (r.ovmap_ = new aO({ view: n.view })) + var c = r.ovmap_ + n.layers && + n.layers.forEach(function (t) { + c.addLayer(t) + }) + var h = document.createElement('div') + ;(h.className = 'ol-overviewmap-box'), + (h.style.boxSizing = 'border-box'), + (r.boxOverlay_ = new su({ + position: [0, 0], + positioning: Hl, + element: h, + })), + r.ovmap_.addOverlay(r.boxOverlay_) + var p = + i + + ' ol-unselectable ol-control' + + (r.collapsed_ && r.collapsible_ ? ' ol-collapsed' : '') + + (r.collapsible_ ? '' : ' ol-uncollapsible'), + f = r.element + ;(f.className = p), f.appendChild(r.ovmapDiv_), f.appendChild(u) + var d = r, + g = r.boxOverlay_, + y = r.boxOverlay_.getElement(), + m = function (t) { + var e, + r = { clientX: (e = t).clientX, clientY: e.clientY }, + n = c.getEventCoordinateInternal(r) + g.setPosition(n) + }, + v = function (t) { + var e = c.getEventCoordinateInternal(t) + d.getMap().getView().setCenterInternal(e), + window.removeEventListener('mousemove', m), + window.removeEventListener('mouseup', v) + } + return ( + y.addEventListener('mousedown', function () { + window.addEventListener('mousemove', m), + window.addEventListener('mouseup', v) + }), + r + ) + } + return ( + oO(e, t), + (e.prototype.setMap = function (e) { + var r = this.getMap() + if (e !== r) { + if (r) { + var n = r.getView() + n && this.unbindView_(n), this.ovmap_.setTarget(null) + } + if ((t.prototype.setMap.call(this, e), e)) { + this.ovmap_.setTarget(this.ovmapDiv_), + this.listenerKeys.push( + Z(e, h, this.handleMapPropertyChange_, this), + ) + var i = e.getView() + i && + (this.bindView_(i), + i.isDef() && + (this.ovmap_.updateSize(), this.resetExtent_())) + } + } + }), + (e.prototype.handleMapPropertyChange_ = function (t) { + if (t.key === Ja) { + var e = t.oldValue + e && this.unbindView_(e) + var r = this.getMap().getView() + this.bindView_(r) + } + }), + (e.prototype.bindView_ = function (t) { + if (!this.view_) { + var e = new Cs({ projection: t.getProjection() }) + this.ovmap_.setView(e) + } + t.addEventListener(it(ss), this.boundHandleRotationChanged_), + this.handleRotationChanged_() + }), + (e.prototype.unbindView_ = function (t) { + t.removeEventListener(it(ss), this.boundHandleRotationChanged_) + }), + (e.prototype.handleRotationChanged_ = function () { + this.rotateWithView_ && + this.ovmap_ + .getView() + .setRotation(this.getMap().getView().getRotation()) + }), + (e.prototype.validateExtent_ = function () { + var t = this.getMap(), + e = this.ovmap_ + if (t.isRendered() && e.isRendered()) { + var r = t.getSize(), + n = t.getView().calculateExtentInternal(r) + if (!this.viewExtent_ || !ue(n, this.viewExtent_)) { + this.viewExtent_ = n + var i = e.getSize(), + o = e.getView().calculateExtentInternal(i), + a = e.getPixelFromCoordinateInternal(Ce(n)), + s = e.getPixelFromCoordinateInternal(be(n)), + l = Math.abs(a[0] - s[0]), + u = Math.abs(a[1] - s[1]), + c = i[0], + h = i[1] + l < 0.1 * c || u < 0.1 * h || l > 0.75 * c || u > 0.75 * h + ? this.resetExtent_() + : te(o, n) || this.recenter_() + } + } + }), + (e.prototype.resetExtent_ = function () { + var t = this.getMap(), + e = this.ovmap_, + r = t.getSize(), + n = t.getView().calculateExtentInternal(r), + i = e.getView(), + o = Math.log(7.5) / Math.LN2 + Me(n, 1 / (0.1 * Math.pow(2, o / 2))), i.fitInternal(gi(n)) + }), + (e.prototype.recenter_ = function () { + var t = this.getMap(), + e = this.ovmap_, + r = t.getView() + e.getView().setCenterInternal(r.getCenterInternal()) + }), + (e.prototype.updateBox_ = function () { + var t = this.getMap(), + e = this.ovmap_ + if (t.isRendered() && e.isRendered()) { + var r = t.getSize(), + n = t.getView(), + i = e.getView(), + o = this.rotateWithView_ ? 0 : -n.getRotation(), + a = this.boxOverlay_, + s = this.boxOverlay_.getElement(), + l = n.getCenterInternal(), + u = n.getResolution(), + c = i.getResolution(), + h = (r[0] * u) / c, + p = (r[1] * u) / c + if ((a.setPosition(l), s)) { + ;(s.style.width = h + 'px'), (s.style.height = p + 'px') + var f = 'rotate(' + o + 'rad)' + s.style.transform = f + } + } + }), + (e.prototype.handleClick_ = function (t) { + t.preventDefault(), this.handleToggle_() + }), + (e.prototype.handleToggle_ = function () { + this.element.classList.toggle('ol-collapsed'), + this.collapsed_ + ? po(this.collapseLabel_, this.label_) + : po(this.label_, this.collapseLabel_), + (this.collapsed_ = !this.collapsed_) + var t = this.ovmap_ + if (!this.collapsed_) { + if (t.isRendered()) + return (this.viewExtent_ = void 0), void t.render() + t.updateSize(), + this.resetExtent_(), + K( + t, + qa, + function (t) { + this.updateBox_() + }, + this, + ) + } + }), + (e.prototype.getCollapsible = function () { + return this.collapsible_ + }), + (e.prototype.setCollapsible = function (t) { + this.collapsible_ !== t && + ((this.collapsible_ = t), + this.element.classList.toggle('ol-uncollapsible'), + !t && this.collapsed_ && this.handleToggle_()) + }), + (e.prototype.setCollapsed = function (t) { + this.collapsible_ && this.collapsed_ !== t && this.handleToggle_() + }), + (e.prototype.getCollapsed = function () { + return this.collapsed_ + }), + (e.prototype.getRotateWithView = function () { + return this.rotateWithView_ + }), + (e.prototype.setRotateWithView = function (t) { + this.rotateWithView_ !== t && + ((this.rotateWithView_ = t), + 0 !== this.getMap().getView().getRotation() && + (this.rotateWithView_ + ? this.handleRotationChanged_() + : this.ovmap_.getView().setRotation(0), + (this.viewExtent_ = void 0), + this.validateExtent_(), + this.updateBox_())) + }), + (e.prototype.getOverviewMap = function () { + return this.ovmap_ + }), + (e.prototype.render = function (t) { + this.validateExtent_(), this.updateBox_() + }), + e + ) + })(As), + lO = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + uO = 'degrees', + cO = 'imperial', + hO = 'nautical', + pO = 'metric', + fO = 'us', + dO = [1, 2, 5], + gO = (function (t) { + function e(e) { + var r = this, + n = e || {}, + i = + void 0 !== n.className + ? n.className + : n.bar + ? 'ol-scale-bar' + : 'ol-scale-line' + return ( + ((r = + t.call(this, { + element: document.createElement('div'), + render: n.render, + target: n.target, + }) || this).innerElement_ = document.createElement('div')), + (r.innerElement_.className = i + '-inner'), + (r.element.className = i + ' ol-unselectable'), + r.element.appendChild(r.innerElement_), + (r.viewState_ = null), + (r.minWidth_ = void 0 !== n.minWidth ? n.minWidth : 64), + (r.renderedVisible_ = !1), + (r.renderedWidth_ = void 0), + (r.renderedHTML_ = ''), + r.addEventListener(it('units'), r.handleUnitsChanged_), + r.setUnits(n.units || pO), + (r.scaleBar_ = n.bar || !1), + (r.scaleBarSteps_ = n.steps || 4), + (r.scaleBarText_ = n.text || !1), + (r.dpi_ = n.dpi || void 0), + r + ) + } + return ( + lO(e, t), + (e.prototype.getUnits = function () { + return this.get('units') + }), + (e.prototype.handleUnitsChanged_ = function () { + this.updateElement_() + }), + (e.prototype.setUnits = function (t) { + this.set('units', t) + }), + (e.prototype.setDpi = function (t) { + this.dpi_ = t + }), + (e.prototype.updateElement_ = function () { + var t = this.viewState_ + if (t) { + var e = t.center, + r = t.projection, + n = this.getUnits(), + i = n == uO ? St.DEGREES : St.METERS, + o = zr(r, t.resolution, e, i), + a = + (this.minWidth_ * (this.dpi_ || 25.4 / 0.28)) / + (25.4 / 0.28), + s = a * o, + l = '' + if (n == uO) { + var u = wt[St.DEGREES] + ;(s *= u) < u / 60 + ? ((l = '″'), (o *= 3600)) + : s < u + ? ((l = '′'), (o *= 60)) + : (l = '°') + } else + n == cO + ? s < 0.9144 + ? ((l = 'in'), (o /= 0.0254)) + : s < 1609.344 + ? ((l = 'ft'), (o /= 0.3048)) + : ((l = 'mi'), (o /= 1609.344)) + : n == hO + ? ((o /= 1852), (l = 'nm')) + : n == pO + ? s < 0.001 + ? ((l = 'μm'), (o *= 1e6)) + : s < 1 + ? ((l = 'mm'), (o *= 1e3)) + : s < 1e3 + ? (l = 'm') + : ((l = 'km'), (o /= 1e3)) + : n == fO + ? s < 0.9144 + ? ((l = 'in'), (o *= 39.37)) + : s < 1609.344 + ? ((l = 'ft'), (o /= 0.30480061)) + : ((l = 'mi'), (o /= 1609.3472)) + : pt(!1, 33) + for ( + var c, + h, + p, + f, + d = 3 * Math.floor(Math.log(a * o) / Math.log(10)); + ; + + ) { + p = Math.floor(d / 3) + var g = Math.pow(10, p) + if ( + ((c = dO[((d % 3) + 3) % 3] * g), + (h = Math.round(c / o)), + isNaN(h)) + ) + return ( + (this.element.style.display = 'none'), + void (this.renderedVisible_ = !1) + ) + if (h >= a) break + ++d + } + ;(f = this.scaleBar_ + ? this.createScaleBar(h, c, l) + : c.toFixed(p < 0 ? -p : 0) + ' ' + l), + this.renderedHTML_ != f && + ((this.innerElement_.innerHTML = f), + (this.renderedHTML_ = f)), + this.renderedWidth_ != h && + ((this.innerElement_.style.width = h + 'px'), + (this.renderedWidth_ = h)), + this.renderedVisible_ || + ((this.element.style.display = ''), + (this.renderedVisible_ = !0)) + } else + this.renderedVisible_ && + ((this.element.style.display = 'none'), + (this.renderedVisible_ = !1)) + }), + (e.prototype.createScaleBar = function (t, e, r) { + for ( + var n = + '1 : ' + + Math.round(this.getScaleForResolution()).toLocaleString(), + i = [], + o = t / this.scaleBarSteps_, + a = '#ffffff', + s = 0; + s < this.scaleBarSteps_; + s++ + ) + 0 === s && i.push(this.createMarker('absolute', s)), + i.push( + '
' + + this.createMarker('relative', s) + + (s % 2 == 0 || 2 === this.scaleBarSteps_ + ? this.createStepText(s, t, !1, e, r) + : '') + + '
', + ), + s === this.scaleBarSteps_ - 1 && + i.push(this.createStepText(s + 1, t, !0, e, r)), + (a = '#ffffff' === a ? '#000000' : '#ffffff') + return ( + '
' + + (this.scaleBarText_ + ? '
' + + n + + '
' + : '') + + i.join('') + + '
' + ) + }), + (e.prototype.createMarker = function (t, e) { + return ( + '
' + ) + }), + (e.prototype.createStepText = function (t, e, r, n, i) { + var o = + (0 === t + ? 0 + : Math.round((n / this.scaleBarSteps_) * t * 100) / 100) + + (0 === t ? '' : ' ' + i) + return ( + '
' + + o + + '
' + ) + }), + (e.prototype.getScaleForResolution = function () { + var t = zr( + this.viewState_.projection, + this.viewState_.resolution, + this.viewState_.center, + ), + e = this.dpi_ || 25.4 / 0.28, + r = this.viewState_.projection.getMetersPerUnit() + return parseFloat(t.toString()) * r * (1e3 / 25.4) * e + }), + (e.prototype.render = function (t) { + var e = t.frameState + ;(this.viewState_ = e ? e.viewState : null), this.updateElement_() + }), + e + ) + })(As), + yO = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + mO = 0, + vO = 1, + _O = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;((r = + t.call(this, { + element: document.createElement('div'), + render: n.render, + }) || this).dragListenerKeys_ = []), + (r.currentResolution_ = void 0), + (r.direction_ = mO), + r.dragging_, + (r.heightLimit_ = 0), + (r.widthLimit_ = 0), + r.startX_, + r.startY_, + (r.thumbSize_ = null), + (r.sliderInitialized_ = !1), + (r.duration_ = void 0 !== n.duration ? n.duration : 200) + var i = void 0 !== n.className ? n.className : 'ol-zoomslider', + o = document.createElement('button') + o.setAttribute('type', 'button'), + (o.className = i + '-thumb ol-unselectable') + var a = r.element + return ( + (a.className = i + ' ol-unselectable ol-control'), + a.appendChild(o), + a.addEventListener(Ua, r.handleDraggerStart_.bind(r), !1), + a.addEventListener(za, r.handleDraggerDrag_.bind(r), !1), + a.addEventListener(Ba, r.handleDraggerEnd_.bind(r), !1), + a.addEventListener(N, r.handleContainerClick_.bind(r), !1), + o.addEventListener(N, u, !1), + r + ) + } + return ( + yO(e, t), + (e.prototype.setMap = function (e) { + t.prototype.setMap.call(this, e), e && e.render() + }), + (e.prototype.initSlider_ = function () { + var t = this.element, + e = t.offsetWidth, + r = t.offsetHeight + if (0 === e && 0 === r) return (this.sliderInitialized_ = !1) + var n = t.firstElementChild, + i = getComputedStyle(n), + o = + n.offsetWidth + + parseFloat(i.marginRight) + + parseFloat(i.marginLeft), + a = + n.offsetHeight + + parseFloat(i.marginTop) + + parseFloat(i.marginBottom) + return ( + (this.thumbSize_ = [o, a]), + e > r + ? ((this.direction_ = vO), (this.widthLimit_ = e - o)) + : ((this.direction_ = mO), (this.heightLimit_ = r - a)), + (this.sliderInitialized_ = !0) + ) + }), + (e.prototype.handleContainerClick_ = function (t) { + var e = this.getMap().getView(), + r = this.getRelativePosition_( + t.offsetX - this.thumbSize_[0] / 2, + t.offsetY - this.thumbSize_[1] / 2, + ), + n = this.getResolutionForPosition_(r), + i = e.getConstrainedZoom(e.getZoomForResolution(n)) + e.animateInternal({ + zoom: i, + duration: this.duration_, + easing: io, + }) + }), + (e.prototype.handleDraggerStart_ = function (t) { + if ( + !this.dragging_ && + t.target === this.element.firstElementChild + ) { + var e = this.element.firstElementChild + if ( + (this.getMap().getView().beginInteraction(), + (this.startX_ = t.clientX - parseFloat(e.style.left)), + (this.startY_ = t.clientY - parseFloat(e.style.top)), + (this.dragging_ = !0), + 0 === this.dragListenerKeys_.length) + ) { + var r = this.handleDraggerDrag_, + n = this.handleDraggerEnd_, + i = this.getMap().getOwnerDocument() + this.dragListenerKeys_.push( + Z(i, za, r, this), + Z(i, Ba, n, this), + ) + } + } + }), + (e.prototype.handleDraggerDrag_ = function (t) { + if (this.dragging_) { + var e = t.clientX - this.startX_, + r = t.clientY - this.startY_, + n = this.getRelativePosition_(e, r) + ;(this.currentResolution_ = this.getResolutionForPosition_(n)), + this.getMap().getView().setResolution(this.currentResolution_) + } + }), + (e.prototype.handleDraggerEnd_ = function (t) { + this.dragging_ && + (this.getMap().getView().endInteraction(), + (this.dragging_ = !1), + (this.startX_ = void 0), + (this.startY_ = void 0), + this.dragListenerKeys_.forEach(H), + (this.dragListenerKeys_.length = 0)) + }), + (e.prototype.setThumbPosition_ = function (t) { + var e = this.getPositionForResolution_(t), + r = this.element.firstElementChild + this.direction_ == vO + ? (r.style.left = this.widthLimit_ * e + 'px') + : (r.style.top = this.heightLimit_ * e + 'px') + }), + (e.prototype.getRelativePosition_ = function (t, e) { + return Ne( + this.direction_ === vO + ? t / this.widthLimit_ + : e / this.heightLimit_, + 0, + 1, + ) + }), + (e.prototype.getResolutionForPosition_ = function (t) { + return this.getMap().getView().getResolutionForValueFunction()( + 1 - t, + ) + }), + (e.prototype.getPositionForResolution_ = function (t) { + return Ne( + 1 - this.getMap().getView().getValueForResolutionFunction()(t), + 0, + 1, + ) + }), + (e.prototype.render = function (t) { + if ( + t.frameState && + (this.sliderInitialized_ || this.initSlider_()) + ) { + var e = t.frameState.viewState.resolution + ;(this.currentResolution_ = e), this.setThumbPosition_(e) + } + }), + e + ) + })(As), + bO = (function () { + var t = function (e, r) { + return (t = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (t, e) { + t.__proto__ = e + }) || + function (t, e) { + for (var r in e) + Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) + })(e, r) + } + return function (e, r) { + function n() { + this.constructor = e + } + t(e, r), + (e.prototype = + null === r + ? Object.create(r) + : ((n.prototype = r.prototype), new n())) + } + })(), + xO = (function (t) { + function e(e) { + var r = this, + n = e || {} + ;(r = + t.call(this, { + element: document.createElement('div'), + target: n.target, + }) || this).extent = n.extent ? n.extent : null + var i = void 0 !== n.className ? n.className : 'ol-zoom-extent', + o = void 0 !== n.label ? n.label : 'E', + a = void 0 !== n.tipLabel ? n.tipLabel : 'Fit to extent', + s = document.createElement('button') + s.setAttribute('type', 'button'), + (s.title = a), + s.appendChild( + 'string' == typeof o ? document.createTextNode(o) : o, + ), + s.addEventListener(N, r.handleClick_.bind(r), !1) + var l = i + ' ol-unselectable ol-control', + u = r.element + return (u.className = l), u.appendChild(s), r + } + return ( + bO(e, t), + (e.prototype.handleClick_ = function (t) { + t.preventDefault(), this.handleZoomToExtent() + }), + (e.prototype.handleZoomToExtent = function () { + var t = this.getMap().getView(), + e = this.extent ? this.extent : t.getProjection().getExtent() + t.fitInternal(gi(e)) + }), + e + ) + })(As), + wO = {} + ;(wO.AssertionError = l || {}), + (wO.Collection = ht || {}), + (wO.Collection.CollectionEvent = ct || {}), + (wO.Disposable = p || {}), + (wO.Feature = gt || {}), + (wO.Feature.createStyleFunction = dt || {}), + (wO.Geolocation = Ii || {}), + (wO.Image = Ki || {}), + (wO.Image.listenImage = Zi || {}), + (wO.ImageBase = Mi || {}), + (wO.ImageCanvas = $i || {}), + (wO.ImageTile = vo || {}), + (wO.Kinetic = _o || {}), + (wO.Map = Wl || {}), + (wO.MapBrowserEvent = Da || {}), + (wO.MapBrowserEventHandler = Wa || {}), + (wO.MapEvent = ja || {}), + (wO.Object = ot || {}), + (wO.Object.ObjectEvent = et || {}), + (wO.Object.getChangeEventType = it || {}), + (wO.Observable = Q || {}), + (wO.Observable.unByKey = J || {}), + (wO.Overlay = su || {}), + (wO.PluggableMap = Ms || {}), + (wO.Tile = lo || {}), + (wO.TileCache = yu || {}), + (wO.TileQueue = es || {}), + (wO.TileQueue.getTilePriority = rs || {}), + (wO.TileRange = _u || {}), + (wO.TileRange.createOrUpdate = vu || {}), + (wO.VectorRenderTile = wu || {}), + (wO.VectorTile = Eu || {}), + (wO.View = Cs || {}), + (wO.View.createCenterConstraint = xs || {}), + (wO.View.createResolutionConstraint = ws || {}), + (wO.View.createRotationConstraint = Ss || {}), + (wO.View.isNoopAnimation = Es || {}), + (wO.array = {}), + (wO.array.binarySearch = f || {}), + (wO.array.equals = b || {}), + (wO.array.extend = v || {}), + (wO.array.find = _ || {}), + (wO.array.findIndex = x || {}), + (wO.array.includes = g || {}), + (wO.array.isSorted = w || {}), + (wO.array.linearFindNearest = y || {}), + (wO.array.numberSafeCompareFunction = d || {}), + (wO.array.remove = + function (t, e) { + var r = t.indexOf(e), + n = r > -1 + return n && t.splice(r, 1), n + } || {}), + (wO.array.reverseSubArray = m || {}), + (wO.array.stableSort = + function (t, e) { + var r, + n = t.length, + i = Array(t.length) + for (r = 0; r < n; r++) i[r] = { index: r, value: t[r] } + for ( + i.sort(function (t, r) { + return e(t.value, r.value) || t.index - r.index + }), + r = 0; + r < t.length; + r++ + ) + t[r] = i[r].value + } || {}), + (wO.asserts = {}), + (wO.asserts.assert = pt || {}), + (wO.centerconstraint = {}), + (wO.centerconstraint.createExtent = ls || {}), + (wO.centerconstraint.none = us || {}), + (wO.color = {}), + (wO.color.asArray = Oo || {}), + (wO.color.asString = wo || {}), + (wO.color.fromString = Co || {}), + (wO.color.isStringColor = Io || {}), + (wO.color.normalize = Po || {}), + (wO.color.toString = Ro || {}), + (wO.colorlike = {}), + (wO.colorlike.asColorLike = Tu || {}), + (wO.control = {}), + (wO.control.Attribution = js || {}), + (wO.control.Control = As || {}), + (wO.control.FullScreen = rO || {}), + (wO.control.MousePosition = iO || {}), + (wO.control.OverviewMap = sO || {}), + (wO.control.Rotate = Ds || {}), + (wO.control.ScaleLine = gO || {}), + (wO.control.Zoom = zs || {}), + (wO.control.ZoomSlider = _O || {}), + (wO.control.ZoomToExtent = xO || {}), + (wO.control.defaults = Us || {}), + (wO.coordinate = {}), + (wO.coordinate.add = xr || {}), + (wO.coordinate.closestOnCircle = wr || {}), + (wO.coordinate.closestOnSegment = Sr || {}), + (wO.coordinate.createStringXY = + function (t) { + return function (e) { + return Mr(e, t) + } + } || {}), + (wO.coordinate.degreesToStringHDMS = Er || {}), + (wO.coordinate.distance = Ir || {}), + (wO.coordinate.equals = Cr || {}), + (wO.coordinate.format = Tr || {}), + (wO.coordinate.getWorldsAway = Ar || {}), + (wO.coordinate.rotate = Or || {}), + (wO.coordinate.scale = Pr || {}), + (wO.coordinate.squaredDistance = Rr || {}), + (wO.coordinate.squaredDistanceToSegment = Lr || {}), + (wO.coordinate.toStringHDMS = + function (t, e) { + return t ? Er('NS', t[1], e) + ' ' + Er('EW', t[0], e) : '' + } || {}), + (wO.coordinate.toStringXY = Mr || {}), + (wO.coordinate.wrapX = Fr || {}), + (wO.css = {}), + (wO.css.CLASS_COLLAPSED = 'ol-collapsed'), + (wO.css.CLASS_CONTROL = 'ol-control'), + (wO.css.CLASS_HIDDEN = 'ol-hidden'), + (wO.css.CLASS_SELECTABLE = 'ol-selectable'), + (wO.css.CLASS_UNSELECTABLE = 'ol-unselectable'), + (wO.css.CLASS_UNSUPPORTED = 'ol-unsupported'), + (wO.css.getFontParameters = ha || {}), + (wO.dom = {}), + (wO.dom.createCanvasContext2D = uo || {}), + (wO.dom.outerHeight = ho || {}), + (wO.dom.outerWidth = co || {}), + (wO.dom.removeChildren = go || {}), + (wO.dom.removeNode = fo || {}), + (wO.dom.replaceChildren = yo || {}), + (wO.dom.replaceNode = po || {}), + (wO.easing = {}), + (wO.easing.easeIn = no || {}), + (wO.easing.easeOut = io || {}), + (wO.easing.inAndOut = oo || {}), + (wO.easing.linear = ao || {}), + (wO.easing.upAndDown = + function (t) { + return t < 0.5 ? oo(2 * t) : 1 - oo(2 * (t - 0.5)) + } || {}), + (wO.events = {}), + (wO.events.Event = c || {}), + (wO.events.Event.preventDefault = + function (t) { + t.preventDefault() + } || {}), + (wO.events.Event.stopPropagation = u || {}), + (wO.events.Target = M || {}), + (wO.events.condition = {}), + (wO.events.condition.all = Js || {}), + (wO.events.condition.altKeyOnly = Qs || {}), + (wO.events.condition.altShiftKeysOnly = tl || {}), + (wO.events.condition.always = nl || {}), + (wO.events.condition.click = + function (t) { + return t.type == Ga.CLICK + } || {}), + (wO.events.condition.doubleClick = + function (t) { + return t.type == Ga.DBLCLICK + } || {}), + (wO.events.condition.focus = el || {}), + (wO.events.condition.focusWithTabindex = rl || {}), + (wO.events.condition.mouseActionButton = il || {}), + (wO.events.condition.mouseOnly = cl || {}), + (wO.events.condition.never = ol || {}), + (wO.events.condition.noModifierKeys = sl || {}), + (wO.events.condition.penOnly = + function (t) { + var e = t.originalEvent + return pt(void 0 !== e, 56), 'pen' === e.pointerType + } || {}), + (wO.events.condition.platformModifierKeyOnly = + function (t) { + var e = t.originalEvent + return !e.altKey && (Bi ? e.metaKey : e.ctrlKey) && !e.shiftKey + } || {}), + (wO.events.condition.pointerMove = + function (t) { + return 'pointermove' == t.type + } || {}), + (wO.events.condition.primaryAction = hl || {}), + (wO.events.condition.shiftKeyOnly = ll || {}), + (wO.events.condition.singleClick = al || {}), + (wO.events.condition.targetNotEditable = ul || {}), + (wO.events.condition.touchOnly = + function (t) { + var e = t.originalEvent + return pt(void 0 !== e, 56), 'touch' === e.pointerType + } || {}), + (wO.events.listen = Z || {}), + (wO.events.listenOnce = K || {}), + (wO.events.unlistenByKey = H || {}), + (wO.extent = {}), + (wO.extent.applyTransform = Ae || {}), + (wO.extent.approximatelyEquals = ce || {}), + (wO.extent.boundingExtent = Kt || {}), + (wO.extent.buffer = Ht || {}), + (wO.extent.clone = $t || {}), + (wO.extent.closestSquaredDistanceXY = Jt || {}), + (wO.extent.containsCoordinate = Qt || {}), + (wO.extent.containsExtent = te || {}), + (wO.extent.containsXY = ee || {}), + (wO.extent.coordinateRelationship = re || {}), + (wO.extent.createEmpty = ne || {}), + (wO.extent.createOrUpdate = ie || {}), + (wO.extent.createOrUpdateEmpty = oe || {}), + (wO.extent.createOrUpdateFromCoordinate = ae || {}), + (wO.extent.createOrUpdateFromCoordinates = se || {}), + (wO.extent.createOrUpdateFromFlatCoordinates = le || {}), + (wO.extent.createOrUpdateFromRings = + function (t, e) { + return ge(oe(e), t) + } || {}), + (wO.extent.equals = ue || {}), + (wO.extent.extend = he || {}), + (wO.extent.extendCoordinate = pe || {}), + (wO.extent.extendCoordinates = fe || {}), + (wO.extent.extendFlatCoordinates = de || {}), + (wO.extent.extendRings = ge || {}), + (wO.extent.extendXY = ye || {}), + (wO.extent.forEachCorner = me || {}), + (wO.extent.getArea = ve || {}), + (wO.extent.getBottomLeft = _e || {}), + (wO.extent.getBottomRight = be || {}), + (wO.extent.getCenter = xe || {}), + (wO.extent.getCorner = we || {}), + (wO.extent.getEnlargedArea = + function (t, e) { + var r = Math.min(t[0], e[0]), + n = Math.min(t[1], e[1]) + return (Math.max(t[2], e[2]) - r) * (Math.max(t[3], e[3]) - n) + } || {}), + (wO.extent.getForViewAndSize = Se || {}), + (wO.extent.getHeight = Ee || {}), + (wO.extent.getIntersection = Te || {}), + (wO.extent.getIntersectionArea = + function (t, e) { + return ve(Te(t, e)) + } || {}), + (wO.extent.getMargin = + function (t) { + return Pe(t) + Ee(t) + } || {}), + (wO.extent.getSize = + function (t) { + return [t[2] - t[0], t[3] - t[1]] + } || {}), + (wO.extent.getTopLeft = Ce || {}), + (wO.extent.getTopRight = Oe || {}), + (wO.extent.getWidth = Pe || {}), + (wO.extent.intersects = Re || {}), + (wO.extent.intersectsSegment = Fe || {}), + (wO.extent.isEmpty = Ie || {}), + (wO.extent.returnOrUpdate = Le || {}), + (wO.extent.scaleFromCenter = Me || {}), + (wO.extent.wrapX = ke || {}), + (wO.featureloader = {}), + (wO.featureloader.loadFeaturesXhr = Lu || {}), + (wO.featureloader.setWithCredentials = + function (t) { + Iu = t + } || {}), + (wO.featureloader.xhr = Mu || {}), + (wO.format = {}), + (wO.format.EsriJSON = C_ || {}), + (wO.format.Feature = Yy || {}), + (wO.format.Feature.transformExtentWithOptions = qy || {}), + (wO.format.Feature.transformGeometryWithOptions = Wy || {}), + (wO.format.GML = nb || {}), + (wO.format.GML2 = $_ || {}), + (wO.format.GML3 = eb || {}), + (wO.format.GML32 = ab || {}), + (wO.format.GMLBase = F_ || {}), + (wO.format.GMLBase.GMLNS = I_), + (wO.format.GPX = Bb || {}), + (wO.format.GeoJSON = $m || {}), + (wO.format.IGC = sx || {}), + (wO.format.IIIFInfo = Pf || {}), + (wO.format.JSONFeature = qm || {}), + (wO.format.KML = eS || {}), + (wO.format.KML.getDefaultFillStyle = + function () { + return vx + } || {}), + (wO.format.KML.getDefaultImageStyle = + function () { + return bx + } || {}), + (wO.format.KML.getDefaultStrokeStyle = + function () { + return wx + } || {}), + (wO.format.KML.getDefaultStyle = + function () { + return Ex + } || {}), + (wO.format.KML.getDefaultStyleArray = + function () { + return Cx + } || {}), + (wO.format.KML.getDefaultTextStyle = + function () { + return Sx + } || {}), + (wO.format.KML.readFlatCoordinates = Ix || {}), + (wO.format.MVT = am || {}), + (wO.format.OSMXML = uS || {}), + (wO.format.OWS = RS || {}), + (wO.format.Polyline = zS || {}), + (wO.format.Polyline.decodeDeltas = MS || {}), + (wO.format.Polyline.decodeFloats = AS || {}), + (wO.format.Polyline.decodeSignedIntegers = jS || {}), + (wO.format.Polyline.decodeUnsignedIntegers = DS || {}), + (wO.format.Polyline.encodeDeltas = LS || {}), + (wO.format.Polyline.encodeFloats = FS || {}), + (wO.format.Polyline.encodeSignedIntegers = kS || {}), + (wO.format.Polyline.encodeUnsignedInteger = GS || {}), + (wO.format.Polyline.encodeUnsignedIntegers = NS || {}), + (wO.format.TextFeature = Jb || {}), + (wO.format.TopoJSON = KS || {}), + (wO.format.WFS = DT || {}), + (wO.format.WFS.writeFilter = + function (t, e) { + var r = Sc(tT[e], 'Filter'), + n = { node: r } + return O(n, { version: e, filter: t }), xT(r, t, [n]), r + } || {}), + (wO.format.WKT = nC || {}), + (wO.format.WMSCapabilities = RC || {}), + (wO.format.WMSGetFeatureInfo = LC || {}), + (wO.format.WMTSCapabilities = ZC || {}), + (wO.format.XLink = {}), + (wO.format.XLink.readHref = hS || {}), + (wO.format.XML = cS || {}), + (wO.format.XMLFeature = P_ || {}), + (wO.format.filter = {}), + (wO.format.filter.And = tE || {}), + (wO.format.filter.Bbox = rE || {}), + (wO.format.filter.Comparison = pE || {}), + (wO.format.filter.ComparisonBinary = yE || {}), + (wO.format.filter.Contains = aE || {}), + (wO.format.filter.DWithin = lE || {}), + (wO.format.filter.Disjoint = cE || {}), + (wO.format.filter.During = dE || {}), + (wO.format.filter.EqualTo = vE || {}), + (wO.format.filter.Filter = HS || {}), + (wO.format.filter.GreaterThan = bE || {}), + (wO.format.filter.GreaterThanOrEqualTo = wE || {}), + (wO.format.filter.Intersects = EE || {}), + (wO.format.filter.IsBetween = CE || {}), + (wO.format.filter.IsLike = PE || {}), + (wO.format.filter.IsNull = IE || {}), + (wO.format.filter.LessThan = ME || {}), + (wO.format.filter.LessThanOrEqualTo = AE || {}), + (wO.format.filter.LogicalNary = JS || {}), + (wO.format.filter.Not = jE || {}), + (wO.format.filter.NotEqualTo = DE || {}), + (wO.format.filter.Or = zE || {}), + (wO.format.filter.ResourceId = BE || {}), + (wO.format.filter.Spatial = iE || {}), + (wO.format.filter.Within = YE || {}), + (wO.format.filter.and = WE || {}), + (wO.format.filter.bbox = qE || {}), + (wO.format.filter.between = + function (t, e, r) { + return new CE(t, e, r) + } || {}), + (wO.format.filter.contains = + function (t, e, r) { + return new aE(t, e, r) + } || {}), + (wO.format.filter.disjoint = + function (t, e, r) { + return new cE(t, e, r) + } || {}), + (wO.format.filter.during = + function (t, e, r) { + return new dE(t, e, r) + } || {}), + (wO.format.filter.dwithin = + function (t, e, r, n, i) { + return new lE(t, e, r, n, i) + } || {}), + (wO.format.filter.equalTo = + function (t, e, r) { + return new vE(t, e, r) + } || {}), + (wO.format.filter.greaterThan = + function (t, e) { + return new bE(t, e) + } || {}), + (wO.format.filter.greaterThanOrEqualTo = + function (t, e) { + return new wE(t, e) + } || {}), + (wO.format.filter.intersects = + function (t, e, r) { + return new EE(t, e, r) + } || {}), + (wO.format.filter.isNull = + function (t) { + return new IE(t) + } || {}), + (wO.format.filter.lessThan = + function (t, e) { + return new ME(t, e) + } || {}), + (wO.format.filter.lessThanOrEqualTo = + function (t, e) { + return new AE(t, e) + } || {}), + (wO.format.filter.like = + function (t, e, r, n, i, o) { + return new PE(t, e, r, n, i, o) + } || {}), + (wO.format.filter.not = + function (t) { + return new jE(t) + } || {}), + (wO.format.filter.notEqualTo = + function (t, e, r) { + return new DE(t, e, r) + } || {}), + (wO.format.filter.or = + function (t) { + var e = [null].concat(Array.prototype.slice.call(arguments)) + return new (Function.prototype.bind.apply(zE, e))() + } || {}), + (wO.format.filter.resourceId = + function (t) { + return new BE(t) + } || {}), + (wO.format.filter.within = + function (t, e, r) { + return new YE(t, e, r) + } || {}), + (wO.format.xsd = {}), + (wO.format.xsd.readBoolean = A_ || {}), + (wO.format.xsd.readBooleanString = k_ || {}), + (wO.format.xsd.readDateTime = j_ || {}), + (wO.format.xsd.readDecimal = N_ || {}), + (wO.format.xsd.readDecimalString = D_ || {}), + (wO.format.xsd.readNonNegativeInteger = G_ || {}), + (wO.format.xsd.readNonNegativeIntegerString = z_ || {}), + (wO.format.xsd.readString = U_ || {}), + (wO.format.xsd.writeBooleanTextNode = B_ || {}), + (wO.format.xsd.writeCDATASection = V_ || {}), + (wO.format.xsd.writeDateTimeTextNode = Y_ || {}), + (wO.format.xsd.writeDecimalTextNode = W_ || {}), + (wO.format.xsd.writeNonNegativeIntegerTextNode = q_ || {}), + (wO.format.xsd.writeStringTextNode = X_ || {}), + (wO.functions = {}), + (wO.functions.FALSE = E || {}), + (wO.functions.TRUE = S || {}), + (wO.functions.VOID = T || {}), + (wO.functions.memoizeOne = C || {}), + (wO.geom = {}), + (wO.geom.Circle = Rv || {}), + (wO.geom.Geometry = dn || {}), + (wO.geom.GeometryCollection = Vm || {}), + (wO.geom.LineString = Py || {}), + (wO.geom.LinearRing = Yn || {}), + (wO.geom.MultiLineString = Zy || {}), + (wO.geom.MultiPoint = Hy || {}), + (wO.geom.MultiPolygon = Jy || {}), + (wO.geom.Point = qn || {}), + (wO.geom.Polygon = fi || {}), + (wO.geom.Polygon.circular = di || {}), + (wO.geom.Polygon.fromCircle = yi || {}), + (wO.geom.Polygon.fromExtent = gi || {}), + (wO.geom.Polygon.makeRegular = mi || {}), + (wO.geom.SimpleGeometry = vn || {}), + (wO.geom.SimpleGeometry.getStrideForLayout = yn || {}), + (wO.geom.SimpleGeometry.transformGeom2D = mn || {}), + (wO.geom.flat = {}), + (wO.geom.flat.area = {}), + (wO.geom.flat.area.linearRing = zn || {}), + (wO.geom.flat.area.linearRings = Un || {}), + (wO.geom.flat.area.linearRingss = Bn || {}), + (wO.geom.flat.center = {}), + (wO.geom.flat.center.linearRingss = Sy || {}), + (wO.geom.flat.closest = {}), + (wO.geom.flat.closest.arrayMaxSquaredDelta = xn || {}), + (wO.geom.flat.closest.assignClosestArrayPoint = En || {}), + (wO.geom.flat.closest.assignClosestMultiArrayPoint = Tn || {}), + (wO.geom.flat.closest.assignClosestPoint = Sn || {}), + (wO.geom.flat.closest.maxSquaredDelta = bn || {}), + (wO.geom.flat.closest.multiArrayMaxSquaredDelta = wn || {}), + (wO.geom.flat.contains = {}), + (wO.geom.flat.contains.linearRingContainsExtent = Xn || {}), + (wO.geom.flat.contains.linearRingContainsXY = Zn || {}), + (wO.geom.flat.contains.linearRingsContainsXY = Kn || {}), + (wO.geom.flat.contains.linearRingssContainsXY = Hn || {}), + (wO.geom.flat.deflate = {}), + (wO.geom.flat.deflate.deflateCoordinate = Cn || {}), + (wO.geom.flat.deflate.deflateCoordinates = On || {}), + (wO.geom.flat.deflate.deflateCoordinatesArray = Pn || {}), + (wO.geom.flat.deflate.deflateMultiCoordinatesArray = Rn || {}), + (wO.geom.flat.flip = {}), + (wO.geom.flat.flip.flipXY = v_ || {}), + (wO.geom.flat.geodesic = {}), + (wO.geom.flat.geodesic.greatCircleArc = + function (t, e, r, n, i, o) { + var a = Gr('EPSG:4326'), + s = Math.cos(Ye(e)), + l = Math.sin(Ye(e)), + u = Math.cos(Ye(n)), + c = Math.sin(Ye(n)), + h = Math.cos(Ye(r - t)), + p = Math.sin(Ye(r - t)), + f = l * c + s * u * h + return Ly( + function (e) { + if (1 <= f) return [r, n] + var i = e * Math.acos(f), + o = Math.cos(i), + a = Math.sin(i), + d = p * u, + g = s * c - l * u * h, + y = Math.atan2(d, g), + m = Math.asin(l * o + s * a * Math.cos(y)) + return [ + Ve( + Ye(t) + + Math.atan2(Math.sin(y) * a * s, o - l * Math.sin(m)), + ), + Ve(m), + ] + }, + Kr(a, i), + o, + ) + } || {}), + (wO.geom.flat.geodesic.meridian = My || {}), + (wO.geom.flat.geodesic.parallel = Fy || {}), + (wO.geom.flat.inflate = {}), + (wO.geom.flat.inflate.inflateCoordinates = Nn || {}), + (wO.geom.flat.inflate.inflateCoordinatesArray = Dn || {}), + (wO.geom.flat.inflate.inflateMultiCoordinatesArray = Gn || {}), + (wO.geom.flat.interiorpoint = {}), + (wO.geom.flat.interiorpoint.getInteriorPointOfArray = $n || {}), + (wO.geom.flat.interiorpoint.getInteriorPointsOfMultiArray = Jn || {}), + (wO.geom.flat.interpolate = {}), + (wO.geom.flat.interpolate.interpolatePoint = by || {}), + (wO.geom.flat.interpolate.lineStringCoordinateAtM = xy || {}), + (wO.geom.flat.interpolate.lineStringsCoordinateAtM = wy || {}), + (wO.geom.flat.intersectsextent = {}), + (wO.geom.flat.intersectsextent.intersectsLineString = ti || {}), + (wO.geom.flat.intersectsextent.intersectsLineStringArray = ei || {}), + (wO.geom.flat.intersectsextent.intersectsLinearRing = ri || {}), + (wO.geom.flat.intersectsextent.intersectsLinearRingArray = ni || {}), + (wO.geom.flat.intersectsextent.intersectsLinearRingMultiArray = + ii || {}), + (wO.geom.flat.length = {}), + (wO.geom.flat.length.lineStringLength = qg || {}), + (wO.geom.flat.length.linearRingLength = + function (t, e, r, n) { + var i = qg(t, e, r, n), + o = t[r - n] - t[e], + a = t[r - n + 1] - t[e + 1] + return (i += Math.sqrt(o * o + a * a)) + } || {}), + (wO.geom.flat.orient = {}), + (wO.geom.flat.orient.linearRingIsClockwise = ai || {}), + (wO.geom.flat.orient.linearRingsAreOriented = si || {}), + (wO.geom.flat.orient.linearRingssAreOriented = li || {}), + (wO.geom.flat.orient.orientLinearRings = ui || {}), + (wO.geom.flat.orient.orientLinearRingsArray = ci || {}), + (wO.geom.flat.reverse = {}), + (wO.geom.flat.reverse.coordinates = oi || {}), + (wO.geom.flat.segments = {}), + (wO.geom.flat.segments.forEach = Qn || {}), + (wO.geom.flat.simplify = {}), + (wO.geom.flat.simplify.douglasPeucker = In || {}), + (wO.geom.flat.simplify.douglasPeuckerArray = Ln || {}), + (wO.geom.flat.simplify.douglasPeuckerMultiArray = + function (t, e, r, n, i, o, a, s) { + for (var l = 0, u = r.length; l < u; ++l) { + var c = r[l], + h = [] + ;(a = Ln(t, e, c, n, i, o, a, h)), + s.push(h), + (e = c[c.length - 1]) + } + return a + } || {}), + (wO.geom.flat.simplify.quantize = An || {}), + (wO.geom.flat.simplify.quantizeArray = kn || {}), + (wO.geom.flat.simplify.quantizeMultiArray = jn || {}), + (wO.geom.flat.simplify.radialDistance = Mn || {}), + (wO.geom.flat.simplify.simplifyLineString = + function (t, e, r, n, i, o, a) { + var s = void 0 !== a ? a : [] + return ( + o || ((r = Mn(t, e, r, n, i, s, 0)), (t = s), (e = 0), (n = 2)), + (s.length = In(t, e, r, n, i, s, 0)), + s + ) + } || {}), + (wO.geom.flat.simplify.snap = Fn || {}), + (wO.geom.flat.straightchunk = {}), + (wO.geom.flat.straightchunk.matchingChunk = Gg || {}), + (wO.geom.flat.textpath = {}), + (wO.geom.flat.textpath.drawTextOnPath = Wg || {}), + (wO.geom.flat.topology = {}), + (wO.geom.flat.topology.lineStringIsClosed = + function (t, e, r, n) { + var i = r - n + return ( + t[e] === t[i] && + t[e + 1] === t[i + 1] && + (r - e) / n > 3 && + !!zn(t, e, r, n) + ) + } || {}), + (wO.geom.flat.transform = {}), + (wO.geom.flat.transform.rotate = un || {}), + (wO.geom.flat.transform.scale = cn || {}), + (wO.geom.flat.transform.transform2D = ln || {}), + (wO.geom.flat.transform.translate = hn || {}), + (wO.has = {}), + (wO.has.DEVICE_PIXEL_RATIO = Vi || {}), + (wO.has.FIREFOX = Gi || {}), + (wO.has.IMAGE_DECODE = Wi || {}), + (wO.has.MAC = Bi || {}), + (wO.has.PASSIVE_EVENT_LISTENERS = qi || {}), + (wO.has.SAFARI = zi || {}), + (wO.has.WEBKIT = Ui || {}), + (wO.has.WORKER_OFFSCREEN_CANVAS = Yi || {}), + (wO.interaction = {}), + (wO.interaction.DoubleClickZoom = Zs || {}), + (wO.interaction.DragAndDrop = Ev || {}), + (wO.interaction.DragAndDrop.DragAndDropEvent = Sv || {}), + (wO.interaction.DragBox = El || {}), + (wO.interaction.DragBox.DragBoxEvent = Sl || {}), + (wO.interaction.DragPan = fl || {}), + (wO.interaction.DragRotate = gl || {}), + (wO.interaction.DragRotateAndZoom = Cv || {}), + (wO.interaction.DragZoom = Cl || {}), + (wO.interaction.Draw = Gv || {}), + (wO.interaction.Draw.DrawEvent = Dv || {}), + (wO.interaction.Draw.createBox = + function () { + return function (t, e, r) { + var n = Kt( + [t[0], t[t.length - 1]].map(function (t) { + return rn(t, r) + }), + ), + i = [[_e(n), be(n), Oe(n), Ce(n), _e(n)]], + o = e + o ? o.setCoordinates(i) : (o = new fi(i)) + var a = tn() + return a && o.transform(r, a), o + } + } || {}), + (wO.interaction.Draw.createRegularPolygon = + function (t, e) { + return function (r, n, i) { + var o = rn(r[0], i), + a = rn(r[r.length - 1], i), + s = Math.sqrt(Rr(o, a)), + l = n || yi(new Rv(o), t), + u = e + if (!e && 0 !== e) { + var c = a[0] - o[0], + h = a[1] - o[1] + u = Math.atan2(h, c) + } + mi(l, o, s, u) + var p = tn() + return p && l.transform(i, p), l + } + } || {}), + (wO.interaction.Extent = qv || {}), + (wO.interaction.Extent.ExtentEvent = Bv || {}), + (wO.interaction.Interaction = qs || {}), + (wO.interaction.Interaction.pan = Ys || {}), + (wO.interaction.Interaction.zoomByDelta = Ws || {}), + (wO.interaction.KeyboardPan = Ml || {}), + (wO.interaction.KeyboardZoom = Al || {}), + (wO.interaction.Modify = r_ || {}), + (wO.interaction.Modify.ModifyEvent = Jv || {}), + (wO.interaction.MouseWheelZoom = Dl || {}), + (wO.interaction.PinchRotate = zl || {}), + (wO.interaction.PinchZoom = Bl || {}), + (wO.interaction.Pointer = $s || {}), + (wO.interaction.Pointer.centroid = Hs || {}), + (wO.interaction.Select = s_ || {}), + (wO.interaction.Select.SelectEvent = o_ || {}), + (wO.interaction.Snap = h_ || {}), + (wO.interaction.Translate = m_ || {}), + (wO.interaction.Translate.TranslateEvent = y_ || {}), + (wO.interaction.defaults = Vl || {}), + (wO.layer = {}), + (wO.layer.Base = Wo || {}), + (wO.layer.BaseImage = ad || {}), + (wO.layer.BaseTile = vd || {}), + (wO.layer.BaseVector = wg || {}), + (wO.layer.Graticule = Ny || {}), + (wO.layer.Group = Aa || {}), + (wO.layer.Heatmap = Vy || {}), + (wO.layer.Image = dd || {}), + (wO.layer.Layer = na || {}), + (wO.layer.Layer.inView = ra || {}), + (wO.layer.MapboxVector = yv || {}), + (wO.layer.MapboxVector.getMapboxPath = uv || {}), + (wO.layer.MapboxVector.normalizeGlyphsUrl = hv || {}), + (wO.layer.MapboxVector.normalizeSourceUrl = fv || {}), + (wO.layer.MapboxVector.normalizeSpriteUrl = cv || {}), + (wO.layer.MapboxVector.normalizeStyleUrl = pv || {}), + (wO.layer.Tile = Sd || {}), + (wO.layer.Vector = Iy || {}), + (wO.layer.VectorImage = vv || {}), + (wO.layer.VectorTile = lm || {}), + (wO.layer.WebGLPoints = bv || {}), + (wO.loadingstrategy = {}), + (wO.loadingstrategy.all = Fu || {}), + (wO.loadingstrategy.bbox = + function (t, e) { + return [t] + } || {}), + (wO.loadingstrategy.tile = + function (t) { + return function (e, r) { + var n = t.getZForResolution(r), + i = t.getTileRangeForExtentAndZ(e, n), + o = [], + a = [n, 0, 0] + for (a[1] = i.minX; a[1] <= i.maxX; ++a[1]) + for (a[2] = i.minY; a[2] <= i.maxY; ++a[2]) + o.push(t.getTileCoordExtent(a)) + return o + } + } || {}), + (wO.math = {}), + (wO.math.clamp = Ne || {}), + (wO.math.cosh = De || {}), + (wO.math.lerp = qe || {}), + (wO.math.log2 = Ge || {}), + (wO.math.modulo = We || {}), + (wO.math.solveLinearSystem = Be || {}), + (wO.math.squaredDistance = Ue || {}), + (wO.math.squaredSegmentDistance = ze || {}), + (wO.math.toDegrees = Ve || {}), + (wO.math.toRadians = Ye || {}), + (wO.net = {}), + (wO.net.jsonp = Au || {}), + (wO.obj = {}), + (wO.obj.assign = O || {}), + (wO.obj.clear = P || {}), + (wO.obj.getValues = R || {}), + (wO.obj.isEmpty = I || {}), + (wO.proj = {}), + (wO.proj.Projection = je || {}), + (wO.proj.Units = St || {}), + (wO.proj.Units.METERS_PER_UNIT = wt || {}), + (wO.proj.addCommon = sn || {}), + (wO.proj.addCoordinateTransforms = Wr || {}), + (wO.proj.addEquivalentProjections = Ur || {}), + (wO.proj.addEquivalentTransforms = Br || {}), + (wO.proj.addProjection = Nr || {}), + (wO.proj.addProjections = Dr || {}), + (wO.proj.clearAllProjections = + function () { + lr(), pr() + } || {}), + (wO.proj.clearUserProjection = + function () { + Jr = null + } || {}), + (wO.proj.cloneTransform = kr || {}), + (wO.proj.createProjection = Vr || {}), + (wO.proj.createSafeCoordinateTransform = an || {}), + (wO.proj.createTransformFromCoordinateTransform = Yr || {}), + (wO.proj.epsg3857 = {}), + (wO.proj.epsg3857.EXTENT = Ke || {}), + (wO.proj.epsg3857.HALF_SIZE = Ze || {}), + (wO.proj.epsg3857.MAX_SAFE_Y = $e || {}), + (wO.proj.epsg3857.PROJECTIONS = Qe || {}), + (wO.proj.epsg3857.RADIUS = 6378137), + (wO.proj.epsg3857.WORLD_EXTENT = He || {}), + (wO.proj.epsg3857.fromEPSG4326 = tr || {}), + (wO.proj.epsg3857.toEPSG4326 = er || {}), + (wO.proj.epsg4326 = {}), + (wO.proj.epsg4326.EXTENT = nr || {}), + (wO.proj.epsg4326.METERS_PER_UNIT = ir || {}), + (wO.proj.epsg4326.PROJECTIONS = ar || {}), + (wO.proj.epsg4326.RADIUS = 6378137), + (wO.proj.equivalent = Xr || {}), + (wO.proj.fromLonLat = qr || {}), + (wO.proj.fromUserCoordinate = rn || {}), + (wO.proj.fromUserExtent = on || {}), + (wO.proj.get = Gr || {}), + (wO.proj.getPointResolution = zr || {}), + (wO.proj.getTransform = Kr || {}), + (wO.proj.getTransformFromProjections = Zr || {}), + (wO.proj.getUserProjection = tn || {}), + (wO.proj.identityTransform = jr || {}), + (wO.proj.proj4 = {}), + (wO.proj.proj4.register = + function (t) { + var e, + r, + n = Object.keys(t.defs), + i = n.length + for (e = 0; e < i; ++e) { + var o = n[e] + if (!Gr(o)) { + var a = t.defs(o), + s = a.units + s || 'longlat' !== a.projName || (s = St.DEGREES), + Nr( + new je({ + code: o, + axisOrientation: a.axis, + metersPerUnit: a.to_meter, + units: s, + }), + ) + } + } + for (e = 0; e < i; ++e) { + var l = n[e], + u = Gr(l) + for (r = 0; r < i; ++r) { + var c = n[r], + h = Gr(c) + if (!dr(l, c)) { + var p = t.defs(l), + f = t.defs(c) + if (p === f) Ur([u, h]) + else { + var d = t( + O({}, p, { axis: void 0 }), + O({}, f, { axis: void 0 }), + ) + Wr(u, h, an(u, h, d.forward), an(h, u, d.inverse)) + } + } + } + } + } || {}), + (wO.proj.projections = {}), + (wO.proj.projections.add = cr || {}), + (wO.proj.projections.clear = lr || {}), + (wO.proj.projections.get = ur || {}), + (wO.proj.setUserProjection = Qr || {}), + (wO.proj.toLonLat = + function (t, e) { + var r = Hr(t, void 0 !== e ? e : 'EPSG:3857', 'EPSG:4326'), + n = r[0] + return (n < -180 || n > 180) && (r[0] = We(n + 180, 360) - 180), r + } || {}), + (wO.proj.toUserCoordinate = en || {}), + (wO.proj.toUserExtent = nn || {}), + (wO.proj.transform = Hr || {}), + (wO.proj.transformExtent = $r || {}), + (wO.proj.transformWithProjections = + function (t, e, r) { + return Zr(e, r)(t) + } || {}), + (wO.proj.transforms = {}), + (wO.proj.transforms.add = fr || {}), + (wO.proj.transforms.clear = pr || {}), + (wO.proj.transforms.get = dr || {}), + (wO.proj.transforms.remove = + function (t, e) { + var r = t.getCode(), + n = e.getCode(), + i = hr[r][n] + return delete hr[r][n], I(hr[r]) && delete hr[r], i + } || {}), + (wO.proj.useGeographic = + function () { + Qr('EPSG:4326') + } || {}), + (wO.render = {}), + (wO.render.Box = ml || {}), + (wO.render.Event = la || {}), + (wO.render.Feature = Cy || {}), + (wO.render.VectorContext = ku || {}), + (wO.render.canvas = {}), + (wO.render.canvas.Builder = Mg || {}), + (wO.render.canvas.BuilderGroup = Yg || {}), + (wO.render.canvas.Executor = ey || {}), + (wO.render.canvas.ExecutorGroup = ay || {}), + (wO.render.canvas.ExecutorGroup.getPixelIndexArray = oy || {}), + (wO.render.canvas.ImageBuilder = Ag || {}), + (wO.render.canvas.Immediate = Nu || {}), + (wO.render.canvas.Instruction = Ig || {}), + (wO.render.canvas.Instruction.beginPathInstruction = Pg || {}), + (wO.render.canvas.Instruction.closePathInstruction = Rg || {}), + (wO.render.canvas.Instruction.fillInstruction = Cg || {}), + (wO.render.canvas.Instruction.strokeInstruction = Og || {}), + (wO.render.canvas.LineStringBuilder = jg || {}), + (wO.render.canvas.PolygonBuilder = Dg || {}), + (wO.render.canvas.TextBuilder = Bg || {}), + (wO.render.canvas.checkedFonts = da || {}), + (wO.render.canvas.createTransformString = Ra || {}), + (wO.render.canvas.defaultFillStyle = '#000'), + (wO.render.canvas.defaultFont = '10px sans-serif'), + (wO.render.canvas.defaultLineCap = 'round'), + (wO.render.canvas.defaultLineDash = pa || {}), + (wO.render.canvas.defaultLineDashOffset = {}), + (wO.render.canvas.defaultLineJoin = 'round'), + (wO.render.canvas.defaultLineWidth = 1), + (wO.render.canvas.defaultMiterLimit = 10), + (wO.render.canvas.defaultPadding = fa || {}), + (wO.render.canvas.defaultStrokeStyle = '#000'), + (wO.render.canvas.defaultTextAlign = 'center'), + (wO.render.canvas.defaultTextBaseline = 'middle'), + (wO.render.canvas.drawImageOrLabel = Oa || {}), + (wO.render.canvas.hitdetect = {}), + (wO.render.canvas.hitdetect.createHitDetectionImageData = sy || {}), + (wO.render.canvas.hitdetect.hitDetect = ly || {}), + (wO.render.canvas.labelCache = ga || {}), + (wO.render.canvas.measureAndCacheTextWidth = Ea || {}), + (wO.render.canvas.measureTextHeight = xa || {}), + (wO.render.canvas.measureTextWidth = Sa || {}), + (wO.render.canvas.measureTextWidths = Ta || {}), + (wO.render.canvas.registerFont = ba || {}), + (wO.render.canvas.rotateAtOffset = Ca || {}), + (wO.render.canvas.textHeights = _a || {}), + (wO.render.getRenderPixel = + function (t, e) { + var r = e.slice(0) + return It(t.inversePixelTransform.slice(), r), r + } || {}), + (wO.render.getVectorContext = Ku || {}), + (wO.render.toContext = + function (t, e) { + var r = t.canvas, + n = e || {}, + i = n.pixelRatio || Vi, + o = n.size + o && + ((r.width = o[0] * i), + (r.height = o[1] * i), + (r.style.width = o[0] + 'px'), + (r.style.height = o[1] + 'px')) + var a = [0, 0, r.width, r.height], + s = Mt([1, 0, 0, 1, 0, 0], i, i) + return new Nu(t, i, a, s, 0) + } || {}), + (wO.renderer = {}), + (wO.renderer.Composite = La || {}), + (wO.renderer.Layer = ld || {}), + (wO.renderer.Map = aa || {}), + (wO.renderer.canvas = {}), + (wO.renderer.canvas.ImageLayer = pd || {}), + (wO.renderer.canvas.Layer = cd || {}), + (wO.renderer.canvas.TileLayer = xd || {}), + (wO.renderer.canvas.VectorImageLayer = py || {}), + (wO.renderer.canvas.VectorLayer = cy || {}), + (wO.renderer.canvas.VectorTileLayer = _y || {}), + (wO.renderer.vector = {}), + (wO.renderer.vector.defaultOrder = Wu || {}), + (wO.renderer.vector.getSquaredTolerance = qu || {}), + (wO.renderer.vector.getTolerance = Xu || {}), + (wO.renderer.vector.renderFeature = Zu || {}), + (wO.renderer.webgl = {}), + (wO.renderer.webgl.Layer = _g || {}), + (wO.renderer.webgl.Layer.colorDecodeId = vg || {}), + (wO.renderer.webgl.Layer.colorEncodeId = mg || {}), + (wO.renderer.webgl.Layer.getBlankImageData = + function () { + var t = document + .createElement('canvas') + .getContext('2d') + .createImageData(1, 1) + return ( + (t.data[0] = 255), + (t.data[1] = 255), + (t.data[2] = 255), + (t.data[3] = 255), + t + ) + } || {}), + (wO.renderer.webgl.Layer.writePointFeatureToBuffers = + function (t, e, r, n, i, o) { + var a = 3 + i, + s = t[e + 0], + l = t[e + 1], + u = dg + u.length = i + for (var c = 0; c < u.length; c++) u[c] = t[e + 2 + c] + var h = o ? o.vertexPosition : 0, + p = o ? o.indexPosition : 0, + f = h / a + return ( + yg(r, h, s, l, 0), + u.length && r.set(u, h + 3), + yg(r, (h += a), s, l, 1), + u.length && r.set(u, h + 3), + yg(r, (h += a), s, l, 2), + u.length && r.set(u, h + 3), + yg(r, (h += a), s, l, 3), + u.length && r.set(u, h + 3), + (h += a), + (n[p++] = f), + (n[p++] = f + 1), + (n[p++] = f + 3), + (n[p++] = f + 1), + (n[p++] = f + 2), + (n[p++] = f + 3), + (gg.vertexPosition = h), + (gg.indexPosition = p), + gg + ) + } || {}), + (wO.renderer.webgl.PointsLayer = Eg || {}), + (wO.reproj = {}), + (wO.reproj.Image = Ff || {}), + (wO.reproj.Tile = Mp || {}), + (wO.reproj.Triangulation = Ip || {}), + (wO.reproj.calculateSourceExtentResolution = ec || {}), + (wO.reproj.calculateSourceResolution = tc || {}), + (wO.reproj.common = {}), + (wO.reproj.common.ENABLE_RASTER_REPROJECTION = !0), + (wO.reproj.common.ERROR_THRESHOLD = 0.5), + (wO.reproj.render = rc || {}), + (wO.resolutionconstraint = {}), + (wO.resolutionconstraint.createMinMaxResolution = ds || {}), + (wO.resolutionconstraint.createSnapToPower = fs || {}), + (wO.resolutionconstraint.createSnapToResolutions = ps || {}), + (wO.rotationconstraint = {}), + (wO.rotationconstraint.createSnapToN = ms || {}), + (wO.rotationconstraint.createSnapToZero = vs || {}), + (wO.rotationconstraint.disable = gs || {}), + (wO.rotationconstraint.none = ys || {}), + (wO.size = {}), + (wO.size.buffer = Os || {}), + (wO.size.hasArea = Ps || {}), + (wO.size.scale = Rs || {}), + (wO.size.toSize = Is || {}), + (wO.source = {}), + (wO.source.BingMaps = Hp || {}), + (wO.source.BingMaps.quadKey = Kp || {}), + (wO.source.CartoDB = tf || {}), + (wO.source.Cluster = ff || {}), + (wO.source.IIIF = Lf || {}), + (wO.source.Image = zf || {}), + (wO.source.Image.ImageSourceEvent = Df || {}), + (wO.source.Image.defaultImageLoadFunction = Gf || {}), + (wO.source.ImageArcGISRest = Bf || {}), + (wO.source.ImageCanvas = Yf || {}), + (wO.source.ImageMapGuide = qf || {}), + (wO.source.ImageStatic = Zf || {}), + (wO.source.ImageWMS = ed || {}), + (wO.source.OSM = id || {}), + (wO.source.OSM.ATTRIBUTION = nd), + (wO.source.Raster = zd || {}), + (wO.source.Raster.Processor = Id || {}), + (wO.source.Raster.RasterSourceEvent = kd || {}), + (wO.source.Raster.newImageData = Od || {}), + (wO.source.Source = Dp || {}), + (wO.source.Stamen = Wd || {}), + (wO.source.Tile = Bp || {}), + (wO.source.Tile.TileSourceEvent = Up || {}), + (wO.source.TileArcGISRest = Xd || {}), + (wO.source.TileDebug = Hd || {}), + (wO.source.TileImage = Xp || {}), + (wO.source.TileJSON = Jd || {}), + (wO.source.TileWMS = tg || {}), + (wO.source.UTFGrid = ng || {}), + (wO.source.UTFGrid.CustomTile = rg || {}), + (wO.source.UrlTile = Yp || {}), + (wO.source.Vector = hf || {}), + (wO.source.Vector.VectorSourceEvent = cf || {}), + (wO.source.VectorTile = og || {}), + (wO.source.VectorTile.defaultLoadFunction = ag || {}), + (wO.source.WMTS = cg || {}), + (wO.source.WMTS.optionsFromCapabilities = + function (t, e) { + var r = _(t.Contents.Layer, function (t, r, n) { + return t.Identifier == e.layer + }) + if (null === r) return null + var n, + i = t.Contents.TileMatrixSet + ;(n = + r.TileMatrixSetLink.length > 1 + ? x( + r.TileMatrixSetLink, + 'projection' in e + ? function (t, r, n) { + var o = _(i, function (e) { + return e.Identifier == t.TileMatrixSet + }).SupportedCRS, + a = Gr(o), + s = Gr(e.projection) + return a && s ? Xr(a, s) : o == e.projection + } + : function (t, r, n) { + return t.TileMatrixSet == e.matrixSet + }, + ) + : 0) < 0 && (n = 0) + var o = r.TileMatrixSetLink[n].TileMatrixSet, + a = r.TileMatrixSetLink[n].TileMatrixSetLimits, + s = r.Format[0] + 'format' in e && (s = e.format), + (n = x(r.Style, function (t, r, n) { + return 'style' in e ? t.Title == e.style : t.isDefault + })) < 0 && (n = 0) + var l = r.Style[n].Identifier, + u = {} + 'Dimension' in r && + r.Dimension.forEach(function (t, e, r) { + var n = t.Identifier, + i = t.Default + void 0 === i && (i = t.Value[0]), (u[n] = i) + }) + var c, + h = _(t.Contents.TileMatrixSet, function (t, e, r) { + return t.Identifier == o + }), + p = h.SupportedCRS + if ((p && (c = Gr(p)), 'projection' in e)) { + var f = Gr(e.projection) + f && ((c && !Xr(f, c)) || (c = f)) + } + var d = 'ne' == c.getAxisOrientation().substr(0, 2), + y = h.TileMatrix[0], + m = { + MinTileCol: 0, + MinTileRow: 0, + MaxTileCol: y.MatrixWidth - 1, + MaxTileRow: y.MatrixHeight - 1, + } + if (a) { + m = a[a.length - 1] + var v = _(h.TileMatrix, function (t) { + return ( + t.Identifier === m.TileMatrix || + h.Identifier + ':' + t.Identifier === m.TileMatrix + ) + }) + v && (y = v) + } + var b = (28e-5 * y.ScaleDenominator) / c.getMetersPerUnit(), + w = d + ? [y.TopLeftCorner[1], y.TopLeftCorner[0]] + : y.TopLeftCorner, + S = y.TileWidth * b, + E = y.TileHeight * b, + T = [ + w[0] + S * m.MinTileCol, + w[1] - E * (1 + m.MaxTileRow), + w[0] + S * (1 + m.MaxTileCol), + w[1] - E * m.MinTileRow, + ] + null === c.getExtent() && c.setExtent(T) + var C = Kh(h, T, a), + O = [], + P = e.requestEncoding + if ( + ((P = void 0 !== P ? P : ''), + 'OperationsMetadata' in t && 'GetTile' in t.OperationsMetadata) + ) + for ( + var R = t.OperationsMetadata.GetTile.DCP.HTTP.Get, + I = 0, + L = R.length; + I < L; + ++I + ) + if (R[I].Constraint) { + var M = _(R[I].Constraint, function (t) { + return 'GetEncoding' == t.name + }).AllowedValues.Value + if (('' === P && (P = M[0]), P !== sg)) break + g(M, sg) && O.push(R[I].href) + } else R[I].href && ((P = sg), O.push(R[I].href)) + return ( + 0 === O.length && + ((P = lg), + r.ResourceURL.forEach(function (t) { + 'tile' === t.resourceType && + ((s = t.format), O.push(t.template)) + })), + { + urls: O, + layer: e.layer, + matrixSet: o, + format: s, + projection: c, + requestEncoding: P, + tileGrid: C, + style: l, + dimensions: u, + wrapX: !1, + crossOrigin: e.crossOrigin, + } + ) + } || {}), + (wO.source.XYZ = Jp || {}), + (wO.source.Zoomify = vf || {}), + (wO.source.Zoomify.CustomTile = mf || {}), + (wO.source.common = {}), + (wO.source.common.DEFAULT_WMS_VERSION = '1.3.0'), + (wO.source.common.IMAGE_SMOOTHING_DISABLED = $u || {}), + (wO.sphere = {}), + (wO.sphere.DEFAULT_RADIUS = 6371008.8), + (wO.sphere.getArea = + function t(e, r) { + var n = r || {}, + i = n.radius || 6371008.8, + o = n.projection || 'EPSG:3857', + a = e.getType() + a !== bt.GEOMETRY_COLLECTION && + (e = e.clone().transform(o, 'EPSG:4326')) + var s, + l, + u, + c, + h, + p, + f = 0 + switch (a) { + case bt.POINT: + case bt.MULTI_POINT: + case bt.LINE_STRING: + case bt.MULTI_LINE_STRING: + case bt.LINEAR_RING: + break + case bt.POLYGON: + for ( + s = e.getCoordinates(), + f = Math.abs(mr(s[0], i)), + u = 1, + c = s.length; + u < c; + ++u + ) + f -= Math.abs(mr(s[u], i)) + break + case bt.MULTI_POLYGON: + for (u = 0, c = (s = e.getCoordinates()).length; u < c; ++u) + for ( + l = s[u], f += Math.abs(mr(l[0], i)), h = 1, p = l.length; + h < p; + ++h + ) + f -= Math.abs(mr(l[h], i)) + break + case bt.GEOMETRY_COLLECTION: + var d = e.getGeometries() + for (u = 0, c = d.length; u < c; ++u) f += t(d[u], r) + break + default: + throw new Error('Unsupported geometry type: ' + a) + } + return f + } || {}), + (wO.sphere.getDistance = gr || {}), + (wO.sphere.getLength = + function t(e, r) { + var n = r || {}, + i = n.radius || 6371008.8, + o = n.projection || 'EPSG:3857', + a = e.getType() + a !== bt.GEOMETRY_COLLECTION && + (e = e.clone().transform(o, 'EPSG:4326')) + var s, + l, + u, + c, + h, + p, + f = 0 + switch (a) { + case bt.POINT: + case bt.MULTI_POINT: + break + case bt.LINE_STRING: + case bt.LINEAR_RING: + f = yr((s = e.getCoordinates()), i) + break + case bt.MULTI_LINE_STRING: + case bt.POLYGON: + for (u = 0, c = (s = e.getCoordinates()).length; u < c; ++u) + f += yr(s[u], i) + break + case bt.MULTI_POLYGON: + for (u = 0, c = (s = e.getCoordinates()).length; u < c; ++u) + for (h = 0, p = (l = s[u]).length; h < p; ++h) + f += yr(l[h], i) + break + case bt.GEOMETRY_COLLECTION: + var d = e.getGeometries() + for (u = 0, c = d.length; u < c; ++u) f += t(d[u], r) + break + default: + throw new Error('Unsupported geometry type: ' + a) + } + return f + } || {}), + (wO.sphere.offset = vr || {}), + (wO.string = {}), + (wO.string.compareVersions = br || {}), + (wO.string.padNumber = _r || {}), + (wO.structs = {}), + (wO.structs.LRUCache = lu || {}), + (wO.structs.LinkedList = Cp || {}), + (wO.structs.PriorityQueue = Qa || {}), + (wO.structs.PriorityQueue.DROP = 1 / 0), + (wO.structs.RBush = Rp || {}), + (wO.style = {}), + (wO.style.Circle = tp || {}), + (wO.style.Fill = ep || {}), + (wO.style.Icon = dp || {}), + (wO.style.IconImage = pp || {}), + (wO.style.IconImage.get = hp || {}), + (wO.style.IconImageCache = Fo || {}), + (wO.style.IconImageCache.shared = Ao || {}), + (wO.style.Image = Hh || {}), + (wO.style.LiteralStyle = {}), + (wO.style.RegularShape = Jh || {}), + (wO.style.Stroke = gp || {}), + (wO.style.Style = wp || {}), + (wO.style.Style.createDefaultStyle = _p || {}), + (wO.style.Style.createEditingStyle = bp || {}), + (wO.style.Style.toFunction = mp || {}), + (wO.style.Text = Tp || {}), + (wO.style.expressions = {}), + (wO.style.expressions.Operators = Eh || {}), + (wO.style.expressions.arrayToGlsl = Ph || {}), + (wO.style.expressions.colorToGlsl = Rh || {}), + (wO.style.expressions.expressionToGlsl = Mh || {}), + (wO.style.expressions.getStringNumberEquivalent = Ih || {}), + (wO.style.expressions.getValueType = Th || {}), + (wO.style.expressions.isTypeUnique = Ch || {}), + (wO.style.expressions.numberToGlsl = Oh || {}), + (wO.style.expressions.stringToGlsl = Lh || {}), + (wO.tilecoord = {}), + (wO.tilecoord.createOrUpdate = uu || {}), + (wO.tilecoord.fromKey = pu || {}), + (wO.tilecoord.getKey = hu || {}), + (wO.tilecoord.getKeyZXY = cu || {}), + (wO.tilecoord.hash = fu || {}), + (wO.tilecoord.withinExtentAndZ = du || {}), + (wO.tilegrid = {}), + (wO.tilegrid.TileGrid = ic || {}), + (wO.tilegrid.WMTS = Zh || {}), + (wO.tilegrid.WMTS.createFromCapabilitiesMatrixSet = Kh || {}), + (wO.tilegrid.common = {}), + (wO.tilegrid.common.DEFAULT_MAX_ZOOM = 42), + (wO.tilegrid.common.DEFAULT_TILE_SIZE = 256), + (wO.tilegrid.createForExtent = sc || {}), + (wO.tilegrid.createForProjection = cc || {}), + (wO.tilegrid.createXYZ = lc || {}), + (wO.tilegrid.extentFromProjection = hc || {}), + (wO.tilegrid.getForProjection = oc || {}), + (wO.tilegrid.wrapX = ac || {}), + (wO.tileurlfunction = {}), + (wO.tileurlfunction.createFromTemplate = pc || {}), + (wO.tileurlfunction.createFromTemplates = fc || {}), + (wO.tileurlfunction.createFromTileUrlFunctions = dc || {}), + (wO.tileurlfunction.expandUrl = yc || {}), + (wO.tileurlfunction.nullTileUrlFunction = gc || {}), + (wO.transform = {}), + (wO.transform.apply = It || {}), + (wO.transform.compose = kt || {}), + (wO.transform.composeCssTransform = + function (t, e, r, n, i, o, a) { + return Dt(kt([1, 0, 0, 1, 0, 0], t, e, r, n, i, o, a)) + } || {}), + (wO.transform.create = Tt || {}), + (wO.transform.determinant = Nt || {}), + (wO.transform.invert = + function (t) { + return jt(t, t) + } || {}), + (wO.transform.makeInverse = jt || {}), + (wO.transform.makeScale = Ft || {}), + (wO.transform.multiply = Ot || {}), + (wO.transform.reset = Ct || {}), + (wO.transform.rotate = Lt || {}), + (wO.transform.scale = Mt || {}), + (wO.transform.set = Pt || {}), + (wO.transform.setFromArray = Rt || {}), + (wO.transform.toString = Dt || {}), + (wO.transform.translate = At || {}), + (wO.uri = {}), + (wO.uri.appendParams = mc || {}), + (wO.util = {}), + (wO.util.VERSION = '6.5.0'), + (wO.util.abstract = n || {}), + (wO.util.getUid = o || {}), + (wO.vec = {}), + (wO.vec.mat4 = {}), + (wO.vec.mat4.create = nh || {}), + (wO.vec.mat4.fromTransform = ih || {}), + (wO.webgl = {}), + (wO.webgl.ARRAY_BUFFER = 34962), + (wO.webgl.Buffer = Qc || {}), + (wO.webgl.Buffer.getArrayClassForType = Jc || {}), + (wO.webgl.DYNAMIC_DRAW = 35048), + (wO.webgl.ELEMENT_ARRAY_BUFFER = 34963), + (wO.webgl.FLOAT = 5126), + (wO.webgl.Helper = gh || {}), + (wO.webgl.Helper.computeAttributesStride = fh || {}) + ;(wO.webgl.PostProcessingPass = rh || {}), + (wO.webgl.RenderTarget = mh || {}), + (wO.webgl.STATIC_DRAW = 35044), + (wO.webgl.STREAM_DRAW = 35040), + (wO.webgl.ShaderBuilder = {}), + (wO.webgl.ShaderBuilder.ShaderBuilder = Yh || {}), + (wO.webgl.ShaderBuilder.parseLiteralStyle = Wh || {}), + (wO.webgl.UNSIGNED_BYTE = 5121), + (wO.webgl.UNSIGNED_INT = 5125), + (wO.webgl.UNSIGNED_SHORT = 5123), + (wO.webgl.getContext = bc || {}), + (wO.webgl.getSupportedExtensions = xc || {}), + (wO.worker = {}), + (wO.worker.version = {}), + (wO.worker.webgl = {}), + (wO.xml = {}), + (wO.xml.OBJECT_PROPERTY_NODE_FACTORY = Nc || {}), + (wO.xml.XML_SCHEMA_INSTANCE_URI = wc), + (wO.xml.createElementNS = Sc || {}), + (wO.xml.getAllTextContent = Ec || {}), + (wO.xml.getAllTextContent_ = Tc || {}), + (wO.xml.getAttributeNS = Oc || {}), + (wO.xml.getDocument = Xc || {}), + (wO.xml.getXMLSerializer = Wc || {}), + (wO.xml.isDocument = Cc || {}), + (wO.xml.makeArrayExtender = Rc || {}), + (wO.xml.makeArrayPusher = Ic || {}), + (wO.xml.makeArraySerializer = kc || {}), + (wO.xml.makeChildAppender = Ac || {}), + (wO.xml.makeObjectPropertyPusher = Mc || {}), + (wO.xml.makeObjectPropertySetter = Fc || {}), + (wO.xml.makeReplacer = Lc || {}), + (wO.xml.makeSequence = Dc || {}), + (wO.xml.makeSimpleNodeFactory = jc || {}), + (wO.xml.makeStructureNS = Gc || {}), + (wO.xml.parse = Pc || {}), + (wO.xml.parseNode = zc || {}), + (wO.xml.pushParseAndPop = Uc || {}), + (wO.xml.pushSerializeAndPop = Vc || {}), + (wO.xml.registerDocument = + function (t) { + qc = t + } || {}), + (wO.xml.registerXMLSerializer = + function (t) { + Yc = t + } || {}), + (wO.xml.serialize = Bc || {}) + e.default = wO + }, + ]).default +}) +//# sourceMappingURL=ol.js.map diff --git a/ol-v6.5.0-dist/ol.js.map b/public/ol-v6.5.0-dist/ol.js.map similarity index 99% rename from ol-v6.5.0-dist/ol.js.map rename to public/ol-v6.5.0-dist/ol.js.map index 992ba91a..4cd547d6 100644 --- a/ol-v6.5.0-dist/ol.js.map +++ b/public/ol-v6.5.0-dist/ol.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ol/webpack/universalModuleDefinition","webpack://ol/webpack/bootstrap","webpack://ol/./node_modules/@mapbox/mapbox-gl-style-spec/dist/index.es.js","webpack://ol/./node_modules/rbush/rbush.min.js","webpack://ol/./node_modules/mapbox-to-css-font/index.js","webpack://ol/./node_modules/ieee754/index.js","webpack://ol/(webpack)/buildin/global.js","webpack://ol/./node_modules/pbf/index.js","webpack://ol/./node_modules/webfont-matcher/lib/fonts/google.js","webpack://ol/./node_modules/buffer/index.js","webpack://ol/./node_modules/base64-js/index.js","webpack://ol/./node_modules/isarray/index.js","webpack://ol/./build/ol/util.js","webpack://ol/./build/ol/AssertionError.js","webpack://ol/./build/ol/events/Event.js","webpack://ol/./build/ol/ObjectEventType.js","webpack://ol/./build/ol/Disposable.js","webpack://ol/./build/ol/array.js","webpack://ol/./build/ol/functions.js","webpack://ol/./build/ol/obj.js","webpack://ol/./build/ol/events/Target.js","webpack://ol/./build/ol/events/EventType.js","webpack://ol/./build/ol/events.js","webpack://ol/./build/ol/Observable.js","webpack://ol/./build/ol/Object.js","webpack://ol/./build/ol/CollectionEventType.js","webpack://ol/./build/ol/Collection.js","webpack://ol/./build/ol/asserts.js","webpack://ol/./build/ol/Feature.js","webpack://ol/./build/ol/geom/GeometryLayout.js","webpack://ol/./build/ol/geom/GeometryType.js","webpack://ol/./build/ol/proj/Units.js","webpack://ol/./build/ol/transform.js","webpack://ol/./build/ol/extent/Corner.js","webpack://ol/./build/ol/extent/Relationship.js","webpack://ol/./build/ol/extent.js","webpack://ol/./build/ol/proj/Projection.js","webpack://ol/./build/ol/math.js","webpack://ol/./build/ol/proj/epsg3857.js","webpack://ol/./build/ol/proj/epsg4326.js","webpack://ol/./build/ol/proj/projections.js","webpack://ol/./build/ol/proj/transforms.js","webpack://ol/./build/ol/sphere.js","webpack://ol/./build/ol/string.js","webpack://ol/./build/ol/coordinate.js","webpack://ol/./build/ol/proj.js","webpack://ol/./build/ol/geom/flat/transform.js","webpack://ol/./build/ol/geom/Geometry.js","webpack://ol/./build/ol/geom/SimpleGeometry.js","webpack://ol/./build/ol/geom/flat/closest.js","webpack://ol/./build/ol/geom/flat/deflate.js","webpack://ol/./build/ol/geom/flat/simplify.js","webpack://ol/./build/ol/geom/flat/inflate.js","webpack://ol/./build/ol/geom/flat/area.js","webpack://ol/./build/ol/geom/LinearRing.js","webpack://ol/./build/ol/geom/Point.js","webpack://ol/./build/ol/geom/flat/contains.js","webpack://ol/./build/ol/geom/flat/interiorpoint.js","webpack://ol/./build/ol/geom/flat/segments.js","webpack://ol/./build/ol/geom/flat/intersectsextent.js","webpack://ol/./build/ol/geom/flat/reverse.js","webpack://ol/./build/ol/geom/flat/orient.js","webpack://ol/./build/ol/geom/Polygon.js","webpack://ol/./build/ol/Geolocation.js","webpack://ol/./build/ol/ImageBase.js","webpack://ol/./build/ol/ImageState.js","webpack://ol/./build/ol/has.js","webpack://ol/./build/ol/Image.js","webpack://ol/./build/ol/ImageCanvas.js","webpack://ol/./build/ol/TileState.js","webpack://ol/./build/ol/easing.js","webpack://ol/./build/ol/Tile.js","webpack://ol/./build/ol/dom.js","webpack://ol/./build/ol/ImageTile.js","webpack://ol/./build/ol/Kinetic.js","webpack://ol/./build/ol/color.js","webpack://ol/./build/ol/style/IconImageCache.js","webpack://ol/./build/ol/layer/Property.js","webpack://ol/./build/ol/layer/Base.js","webpack://ol/./build/ol/render/EventType.js","webpack://ol/./build/ol/source/State.js","webpack://ol/./build/ol/layer/Layer.js","webpack://ol/./build/ol/renderer/Map.js","webpack://ol/./build/ol/render/Event.js","webpack://ol/./build/ol/css.js","webpack://ol/./build/ol/render/canvas.js","webpack://ol/./build/ol/renderer/Composite.js","webpack://ol/./build/ol/layer/Group.js","webpack://ol/./build/ol/MapEvent.js","webpack://ol/./build/ol/MapBrowserEvent.js","webpack://ol/./build/ol/MapBrowserEventType.js","webpack://ol/./build/ol/pointer/EventType.js","webpack://ol/./build/ol/MapBrowserEventHandler.js","webpack://ol/./build/ol/MapEventType.js","webpack://ol/./build/ol/MapProperty.js","webpack://ol/./build/ol/structs/PriorityQueue.js","webpack://ol/./build/ol/TileQueue.js","webpack://ol/./build/ol/ViewHint.js","webpack://ol/./build/ol/ViewProperty.js","webpack://ol/./build/ol/centerconstraint.js","webpack://ol/./build/ol/resolutionconstraint.js","webpack://ol/./build/ol/rotationconstraint.js","webpack://ol/./build/ol/View.js","webpack://ol/./build/ol/tilegrid/common.js","webpack://ol/./build/ol/size.js","webpack://ol/./build/ol/PluggableMap.js","webpack://ol/./build/ol/control/Control.js","webpack://ol/./build/ol/control/Attribution.js","webpack://ol/./build/ol/control/Rotate.js","webpack://ol/./build/ol/control/Zoom.js","webpack://ol/./build/ol/control.js","webpack://ol/./build/ol/interaction/Property.js","webpack://ol/./build/ol/interaction/Interaction.js","webpack://ol/./build/ol/interaction/DoubleClickZoom.js","webpack://ol/./build/ol/interaction/Pointer.js","webpack://ol/./build/ol/events/condition.js","webpack://ol/./build/ol/interaction/DragPan.js","webpack://ol/./build/ol/interaction/DragRotate.js","webpack://ol/./build/ol/render/Box.js","webpack://ol/./build/ol/interaction/DragBox.js","webpack://ol/./build/ol/interaction/DragZoom.js","webpack://ol/./build/ol/events/KeyCode.js","webpack://ol/./build/ol/interaction/KeyboardPan.js","webpack://ol/./build/ol/interaction/KeyboardZoom.js","webpack://ol/./build/ol/interaction/MouseWheelZoom.js","webpack://ol/./build/ol/interaction/PinchRotate.js","webpack://ol/./build/ol/interaction/PinchZoom.js","webpack://ol/./build/ol/interaction.js","webpack://ol/./build/ol/Map.js","webpack://ol/./build/ol/OverlayPositioning.js","webpack://ol/./build/ol/Overlay.js","webpack://ol/./build/ol/structs/LRUCache.js","webpack://ol/./build/ol/tilecoord.js","webpack://ol/./build/ol/TileCache.js","webpack://ol/./build/ol/TileRange.js","webpack://ol/./build/ol/VectorRenderTile.js","webpack://ol/./build/ol/VectorTile.js","webpack://ol/./build/ol/colorlike.js","webpack://ol/./build/ol/format/FormatType.js","webpack://ol/./build/ol/featureloader.js","webpack://ol/./build/ol/loadingstrategy.js","webpack://ol/./build/ol/net.js","webpack://ol/./build/ol/render/VectorContext.js","webpack://ol/./build/ol/render/canvas/Immediate.js","webpack://ol/./build/ol/render/canvas/BuilderType.js","webpack://ol/./build/ol/renderer/vector.js","webpack://ol/./build/ol/render.js","webpack://ol/./build/ol/source/common.js","webpack://ol/./build/ol/reproj.js","webpack://ol/./build/ol/tilegrid/TileGrid.js","webpack://ol/./build/ol/tilegrid.js","webpack://ol/./build/ol/tileurlfunction.js","webpack://ol/./build/ol/uri.js","webpack://ol/./build/ol/webgl.js","webpack://ol/./build/ol/xml.js","webpack://ol/./build/ol/worker/version.js","webpack://ol/./build/ol/worker/webgl.js","webpack://ol/./build/ol/webgl/Buffer.js","webpack://ol/./build/ol/webgl/ContextEventType.js","webpack://ol/./build/ol/webgl/PostProcessingPass.js","webpack://ol/./build/ol/vec/mat4.js","webpack://ol/./build/ol/webgl/Helper.js","webpack://ol/./build/ol/webgl/RenderTarget.js","webpack://ol/./build/ol/style/expressions.js","webpack://ol/./build/ol/webgl/ShaderBuilder.js","webpack://ol/./build/ol/tilegrid/WMTS.js","webpack://ol/./build/ol/style/Image.js","webpack://ol/./build/ol/style/RegularShape.js","webpack://ol/./build/ol/style/Circle.js","webpack://ol/./build/ol/style/Fill.js","webpack://ol/./build/ol/style/IconAnchorUnits.js","webpack://ol/./build/ol/style/IconOrigin.js","webpack://ol/./build/ol/style/IconImage.js","webpack://ol/./build/ol/style/Icon.js","webpack://ol/./build/ol/style/Stroke.js","webpack://ol/./build/ol/style/Style.js","webpack://ol/./build/ol/style/TextPlacement.js","webpack://ol/./build/ol/style/Text.js","webpack://ol/./build/ol/structs/LinkedList.js","webpack://ol/./build/ol/structs/RBush.js","webpack://ol/./build/ol/reproj/Triangulation.js","webpack://ol/./build/ol/reproj/Tile.js","webpack://ol/./build/ol/reproj/common.js","webpack://ol/./build/ol/source/TileEventType.js","webpack://ol/./build/ol/source/Source.js","webpack://ol/./build/ol/source/Tile.js","webpack://ol/./build/ol/source/UrlTile.js","webpack://ol/./build/ol/source/TileImage.js","webpack://ol/./build/ol/source/BingMaps.js","webpack://ol/./build/ol/source/XYZ.js","webpack://ol/./build/ol/source/CartoDB.js","webpack://ol/./build/ol/source/VectorEventType.js","webpack://ol/./build/ol/source/Vector.js","webpack://ol/./build/ol/source/Cluster.js","webpack://ol/./build/ol/source/Zoomify.js","webpack://ol/./build/ol/format/IIIFInfo.js","webpack://ol/./build/ol/source/IIIF.js","webpack://ol/./build/ol/reproj/Image.js","webpack://ol/./build/ol/source/Image.js","webpack://ol/./build/ol/source/ImageArcGISRest.js","webpack://ol/./build/ol/source/ImageCanvas.js","webpack://ol/./build/ol/source/ImageMapGuide.js","webpack://ol/./build/ol/source/ImageStatic.js","webpack://ol/./build/ol/source/WMSServerType.js","webpack://ol/./build/ol/source/ImageWMS.js","webpack://ol/./build/ol/source/OSM.js","webpack://ol/./build/ol/layer/BaseImage.js","webpack://ol/./build/ol/renderer/Layer.js","webpack://ol/./build/ol/renderer/canvas/Layer.js","webpack://ol/./build/ol/renderer/canvas/ImageLayer.js","webpack://ol/./build/ol/layer/Image.js","webpack://ol/./build/ol/layer/TileProperty.js","webpack://ol/./build/ol/layer/BaseTile.js","webpack://ol/./build/ol/renderer/canvas/TileLayer.js","webpack://ol/./build/ol/layer/Tile.js","webpack://ol/./build/ol/source/Raster.js","webpack://ol/./build/ol/source/Stamen.js","webpack://ol/./build/ol/source/TileArcGISRest.js","webpack://ol/./build/ol/source/TileDebug.js","webpack://ol/./build/ol/source/TileJSON.js","webpack://ol/./build/ol/source/TileWMS.js","webpack://ol/./build/ol/source/UTFGrid.js","webpack://ol/./build/ol/source/VectorTile.js","webpack://ol/./build/ol/source/WMTSRequestEncoding.js","webpack://ol/./build/ol/source/WMTS.js","webpack://ol/./build/ol/renderer/webgl/Layer.js","webpack://ol/./build/ol/layer/BaseVector.js","webpack://ol/./build/ol/renderer/webgl/PointsLayer.js","webpack://ol/./build/ol/render/canvas/Instruction.js","webpack://ol/./build/ol/render/canvas/Builder.js","webpack://ol/./build/ol/render/canvas/ImageBuilder.js","webpack://ol/./build/ol/render/canvas/LineStringBuilder.js","webpack://ol/./build/ol/render/canvas/PolygonBuilder.js","webpack://ol/./build/ol/geom/flat/straightchunk.js","webpack://ol/./build/ol/render/canvas/TextBuilder.js","webpack://ol/./build/ol/render/canvas/BuilderGroup.js","webpack://ol/./build/ol/geom/flat/textpath.js","webpack://ol/./build/ol/geom/flat/length.js","webpack://ol/./build/ol/render/canvas/Executor.js","webpack://ol/./build/ol/render/canvas/ExecutorGroup.js","webpack://ol/./build/ol/render/canvas/hitdetect.js","webpack://ol/./build/ol/renderer/canvas/VectorLayer.js","webpack://ol/./build/ol/renderer/canvas/VectorImageLayer.js","webpack://ol/./build/ol/layer/VectorTileRenderType.js","webpack://ol/./build/ol/renderer/canvas/VectorTileLayer.js","webpack://ol/./build/ol/geom/flat/interpolate.js","webpack://ol/./build/ol/geom/flat/center.js","webpack://ol/./build/ol/render/Feature.js","webpack://ol/./build/ol/geom/LineString.js","webpack://ol/./build/ol/layer/Vector.js","webpack://ol/./build/ol/geom/flat/geodesic.js","webpack://ol/./build/ol/layer/Graticule.js","webpack://ol/./build/ol/layer/Heatmap.js","webpack://ol/./build/ol/format/Feature.js","webpack://ol/./build/ol/geom/MultiLineString.js","webpack://ol/./build/ol/geom/MultiPoint.js","webpack://ol/./build/ol/geom/MultiPolygon.js","webpack://ol/./build/ol/format/MVT.js","webpack://ol/./build/ol/layer/VectorTile.js","webpack://ol/./node_modules/ol-mapbox-style/dist/util.js","webpack://ol/./node_modules/ol-mapbox-style/dist/stylefunction.js","webpack://ol/./build/ol/geom/GeometryCollection.js","webpack://ol/./build/ol/format/JSONFeature.js","webpack://ol/./build/ol/format/GeoJSON.js","webpack://ol/./node_modules/ol-mapbox-style/dist/index.js","webpack://ol/./build/ol/layer/MapboxVector.js","webpack://ol/./build/ol/layer/VectorImage.js","webpack://ol/./build/ol/layer/WebGLPoints.js","webpack://ol/./build/ol/interaction/DragAndDrop.js","webpack://ol/./build/ol/interaction/DragRotateAndZoom.js","webpack://ol/./build/ol/geom/Circle.js","webpack://ol/./build/ol/interaction/Draw.js","webpack://ol/./build/ol/interaction/Extent.js","webpack://ol/./build/ol/interaction/Modify.js","webpack://ol/./build/ol/interaction/Select.js","webpack://ol/./build/ol/interaction/Snap.js","webpack://ol/./build/ol/interaction/Translate.js","webpack://ol/./build/ol/geom/flat/flip.js","webpack://ol/./build/ol/format/EsriJSON.js","webpack://ol/./build/ol/format/XMLFeature.js","webpack://ol/./build/ol/format/GMLBase.js","webpack://ol/./build/ol/format/xsd.js","webpack://ol/./build/ol/format/GML2.js","webpack://ol/./build/ol/format/GML3.js","webpack://ol/./build/ol/format/GML.js","webpack://ol/./build/ol/format/GML32.js","webpack://ol/./build/ol/format/GPX.js","webpack://ol/./build/ol/format/TextFeature.js","webpack://ol/./build/ol/format/KML.js","webpack://ol/./build/ol/format/IGC.js","webpack://ol/./build/ol/format/OSMXML.js","webpack://ol/./build/ol/format/XML.js","webpack://ol/./build/ol/format/XLink.js","webpack://ol/./build/ol/format/OWS.js","webpack://ol/./build/ol/format/Polyline.js","webpack://ol/./build/ol/format/TopoJSON.js","webpack://ol/./build/ol/format/filter/Filter.js","webpack://ol/./build/ol/format/filter/LogicalNary.js","webpack://ol/./build/ol/format/filter/And.js","webpack://ol/./build/ol/format/filter/Bbox.js","webpack://ol/./build/ol/format/filter/Spatial.js","webpack://ol/./build/ol/format/filter/Contains.js","webpack://ol/./build/ol/format/filter/DWithin.js","webpack://ol/./build/ol/format/filter/Disjoint.js","webpack://ol/./build/ol/format/filter/Comparison.js","webpack://ol/./build/ol/format/filter/During.js","webpack://ol/./build/ol/format/filter/ComparisonBinary.js","webpack://ol/./build/ol/format/filter/EqualTo.js","webpack://ol/./build/ol/format/filter/GreaterThan.js","webpack://ol/./build/ol/format/filter/GreaterThanOrEqualTo.js","webpack://ol/./build/ol/format/filter/Intersects.js","webpack://ol/./build/ol/format/filter/IsBetween.js","webpack://ol/./build/ol/format/filter/IsLike.js","webpack://ol/./build/ol/format/filter/IsNull.js","webpack://ol/./build/ol/format/filter/LessThan.js","webpack://ol/./build/ol/format/filter/LessThanOrEqualTo.js","webpack://ol/./build/ol/format/filter/Not.js","webpack://ol/./build/ol/format/filter/NotEqualTo.js","webpack://ol/./build/ol/format/filter/Or.js","webpack://ol/./build/ol/format/filter/ResourceId.js","webpack://ol/./build/ol/format/filter/Within.js","webpack://ol/./build/ol/format/filter.js","webpack://ol/./build/ol/format/WFS.js","webpack://ol/./build/ol/format/WKT.js","webpack://ol/./build/ol/format/WMSCapabilities.js","webpack://ol/./build/ol/format/WMSGetFeatureInfo.js","webpack://ol/./build/ol/format/WMTSCapabilities.js","webpack://ol/./build/ol/control/FullScreen.js","webpack://ol/./build/ol/control/MousePosition.js","webpack://ol/./build/ol/control/OverviewMap.js","webpack://ol/./build/ol/control/ScaleLine.js","webpack://ol/./build/ol/control/ZoomSlider.js","webpack://ol/./build/ol/control/ZoomToExtent.js","webpack://ol/./build/index.js","webpack://ol/./build/ol/geom/flat/topology.js","webpack://ol/./build/ol/proj/proj4.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","v8","$version","$root","version","required","type","values","doc","example","metadata","center","zoom","bearing","period","units","pitch","light","anchor","color","intensity","terrain","sources","url","sprite","glyphs","transition","duration","delay","layers","id","source","paint","source_vector","vector","tiles","bounds","length","scheme","xyz","tms","minzoom","maxzoom","attribution","promoteId","volatile","android","ios","source_raster","raster","tileSize","source_raster_dem","encoding","terrarium","mapbox","source_geojson","geojson","data","buffer","maximum","minimum","filter","tolerance","cluster","clusterRadius","clusterMaxZoom","clusterMinPoints","clusterProperties","lineMetrics","generateId","source_video","video","urls","coordinates","source_image","image","layer","fill","js","macos","line","symbol","circle","heatmap","hillshade","background","sky","layout","layout_background","visibility","visible","none","layout_sky","layout_fill","expression","interpolated","parameters","layout_circle","layout_heatmap","layout_line","butt","round","square","bevel","miter","requires","layout_symbol","point","auto","map","viewport","width","height","both","tokens","left","right","top","bottom","horizontal","vertical","uppercase","lowercase","layout_raster","layout_hillshade","filter_operator","all","any","has","within","geometry_type","Point","LineString","Polygon","stops","base","identity","exponential","interval","categorical","colorSpace","rgb","lab","hcl","function_stop","expression_name","group","literal","array","at","slice","match","coalesce","step","interpolate","ln2","pi","e","string","number","boolean","collator","format","rgba","properties","accumulated","sqrt","log10","ln","log2","sin","cos","tan","asin","acos","atan","min","max","abs","ceil","floor","distance","upcase","downcase","concat","position","exaggeration","paint_fill","paint_line","paint_circle","paint_heatmap","paint_symbol","overridable","paint_raster","linear","nearest","paint_hillshade","paint_background","paint_sky","gradient","atmosphere","constant","commonjsGlobal","globalThis","global","self","commonjsRequire","Error","createCommonjsModule","fn","punycode","freeExports","nodeType","freeModule","freeGlobal","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","Math","stringFromCharCode","String","fromCharCode","error","RangeError","result","mapDomain","parts","split","replace","join","ucs2decode","extra","output","counter","charCodeAt","push","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","baseMinusTMin","decode","input","out","basic","j","index","oldi","w","baseMinusT","codePoint","inputLength","bias","lastIndexOf","splice","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","test","toLowerCase","util","arg","obj","prop","qs","sep","eq","options","regexp","maxKeys","len","kstr","vstr","v","x","idx","indexOf","substr","decodeURIComponent","Array","isArray","stringifyPrimitive","isFinite","undefined","keys","ks","encodeURIComponent","querystring","parse","stringify","Url","this","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","urlParse","parseQueryString","slashesDenoteHost","u","TypeError","queryIndex","splitter","uSplit","rest","trim","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","unshift","toASCII","h","ae","esc","escape","qm","charAt","resolve","relative","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","isAbsolute","extend","inputs","ParsingError","message","super","Scope","parent","bindings","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","CollatorType","FormattedType","ResolvedImageType","itemType","N","toString","valueMemberTypes","checkSubtype","expected","memberType","isValidType","provided","allowedTypes","some","isValidNativeType","csscolorparser_1","kCSSColorTable","clamp_css_byte","clamp_css_float","f","parse_css_int","str","parseFloat","parseInt","parse_css_float","css_hue_to_rgb","m1","m2","parseCSSColor","css_str","iv","op","ep","fname","params","alpha","Color","g","b","a","toArray","black","white","transparent","red","blue","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","Intl","usage","lhs","rhs","compare","resolvedOptions","FormattedSection","text","scale","fontStack","textColor","Formatted","sections","unformatted","section","fromString","serialized","ResolvedImage","available","validateRGBA","isValue","mixed","item","typeOf","toString$1","JSON","Literal","args","context","expectedType","serialize","RuntimeError","types","Assertion","parsed","ctx","evaluate","forEach","every","outputDefined","FormatExpression","firstArg","nextTokenMayBeObject","font","lastExpression","content","evaluatedContent","ImageExpression","evaluatedImageName","availableImages","types$1","Coercion","Boolean","parseColor","num","Number","isNaN","eachChild","child","geometryTypes","EvaluationContext","globals","feature","featureState","formattedSection","_parseColorCache","canonical","geometry","cached","CompoundExpression","_evaluate","definition","definitions","availableOverloads","overloads","signature","signatureContext","ParsingContext","registry","scope","parsedArgs","argParseFailed","signatures","stringifySignature","actualTypes","CollatorExpression","updateBBox","bbox","coord","boxWithinBox","bbox1","bbox2","getTileCoordinates","y","lat","PI","log","tilesAtZoom","pow","z","onBoundary","p1","p2","x1","y1","x2","y2","pointWithinPolygon","rings","inside","ring","len2","pointWithinPolygons","polygons","twoSided","q1","q2","x3","y3","det1","det2","lineIntersectLine","vectorP","vectorQ","v1","v2","lineIntersectPolygon","polygon","lineStringWithinPolygon","lineStringWithinPolygons","getTilePolygon","getTilePolygons","updatePoint","polyBBox","worldSize","halfWorldSize","getTilePoints","pointBBox","shifts","tilePoints","points","getTileLines","lineBBox","tileLines","tileLine","Infinity","Within","geometries","features","canonicalID","geometryType","polygonGeometry","tilePolygon","tilePolygons","pointsWithinPolygons","linesWithinPolygons","isFeatureConstant","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","expr","_parse","annotate","typeAnnotation","Expr","actual","isConstant","isTypeAnnotation","childrenConstant","ec","findStopLessThanOrEqualTo","lastIndex","nextValue","lowerIndex","upperIndex","currentIndex","Step","labels","outputs","label","outputType","labelKey","valueKey","stopCount","unitbezier","UnitBezier","p1x","p1y","p2x","p2y","cx","bx","ax","cy","by","ay","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","epsilon","t0","t1","t2","d2","solve","freeze","__proto__","from","to","deg2rad","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateHue","forward","reverse","atan2","hclColor","colorSpaces","Interpolate","operator","interpolation","lower","upper","exponentialInterpolation","controlPoints","interpolationFactor","outputLower","outputUpper","lowerValue","upperValue","difference","progress","Coalesce","needsAnnotation","requestedImageName","argCount","Let","binding","At","In","needle","haystack","IndexOf","fromIndex","Match","inputType","cases","otherwise","labelContext","MAX_SAFE_INTEGER","sortedLabels","sort","groupedByOutput","outputLookup","outputIndex","coerceLabel","Case","branches","_","Slice","beginIndex","endIndex","isComparableType","eqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","hasUntypedArgument","lt","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","style","minimumFractionDigits","maximumFractionDigits","Length","expressions","varargs","success","supportsPropertyExpression","spec","supportsZoomExpression","supportsInterpolation","getType","val","isFunction$1","identityFunction","createFunction","propertySpec","isColor","zoomAndFeatureDependent","featureDependent","zoomDependent","stop","default","innerFun","hashedStops","categoricalKeyType","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","evaluateIdentityFunction","featureFunctions","zoomStops","featureFunctionStops","interpolationType","keyType","interp","colorspace","evaluatedLower","apply","evaluatedUpper","register","heatmapDensity","lineProgress","skyRadialProgress","LN2","E","LN10","binarySearch","isSupportedScript","toUpperCase","resolvedLocale","StyleExpression","_warningHistory","_evaluator","_defaultValue","_enumValues","console","warn","isExpression","createExpression","parser","enum","formatted","resolvedImage","getExpectedType","ZoomConstantExpression","_styleExpression","isStateDependent","evaluateWithoutErrorHandling","ZoomDependentExpression","createPropertyExpression","isFeatureConstant$1","isZoomConstant","zoomCurve","findZoomCurve","childResult","StylePropertyFunction","specification","_parameters","_specification","convertLiteral","convertFunction","convertIdentityFunction","convertTokenString","featureFunctionParameters","getFunctionType","getInterpolateOperator","convertPropertyFunction","appendStopPair","fixupDegenerateStepCurve","convertZoomAndPropertyFunction","isStep","convertZoomFunction","getFallback","defaultValue","curve","re","pos","isExpressionFilter","filterSpec","createFilter","needGeometry","convertFilter","compiled","err","globalProperties","geometryNeeded","filters","convertComparisonOp","convertNegation","convertInOp","convertHasOp","refProperties","deref","derefLayers","ref","ValidationError","identifier","__line__","ParsingError$1","validateConstants","constants","unbundle","valueOf","deepUnbundle","unbundledValue","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","validate","validateArray","arraySpec","validateArrayElement","arrayElementValidator","arrayElementSpec","function","arrayIndex","validateNumber","validateFunction","functionValueSpec","functionType","stopKeyType","previousStopDomainValue","previousStopDomainZoom","stopDomainValues","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStop","validateStopDomainValue","reportValue","validateExpression","expressionContext","expressionObj","propertyKey","propertyType","validateEnum","validateFilter","validateNonExpressionFilter","validateProperty","layerSpec","layerType","transitionMatch","tokenMatch","validatePaintProperty","validateLayoutProperty","validateLayer","layerId","otherLayer","sourceType","validateString","validateSource","mapExpr","reduceExpr","validateLight","lightSpec","rootType","validateTerrain","terrainSpec","VALIDATORS","validateGlyphsURL","validateStyleMin","sortErrors","wrapCleanErrors","inner","paintProperty","layoutProperty","jsonlint","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","trace","yy","symbols_","terminals_","2","4","6","8","10","11","14","17","18","21","22","23","24","productions_","performAction","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","first_line","table","3","5","7","9","12","13","15","16","1","19","20","25","defaultActions","parseError","recoverable","stack","vstack","lstack","TERROR","EOF","arguments","lexer","sharedState","setInput","yylloc","yyloc","ranges","lex","token","getPrototypeOf","state","action","newState","yyval","errStr","showPosition","loc","last_line","first_column","last_column","range","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","unput","lines","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","pre","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","conditions","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","readStyle","Buffer","validateStyle","expression$1","normalizePropertyExpression","styleFunction","isFunction","latest","exp","_maxEntries","_minEntries","clear","children","minX","minY","maxX","maxY","leaf","_all","toBBox","collides","load","insert","_build","_splitRoot","_insert","remove","_condense","compareMinX","compareMinY","toJSON","fromJSON","_chooseSubtree","_split","_adjustParentBBoxes","_chooseSplitAxis","_chooseSplitIndex","M","_allDistMargin","fontWeights","thin","hairline","book","regular","normal","plain","roman","standard","medium","bold","heavy","fat","poster","italicRE","fontCache","fonts","size","lineHeight","cssData","weight","fontFamilies","ii","maybeWeight","fontFamily","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","write","Function","Pbf","ieee754","buf","ArrayBuffer","isView","Uint8Array","Varint","Fixed64","Bytes","Fixed32","utf8TextDecoder","TextDecoder","readPackedEnd","pbf","readVarint","toNum","low","high","isSigned","makeRoomForExtraLength","startPos","extraLen","realloc","writePackedVarint","arr","writeVarint","writePackedSVarint","writeSVarint","writePackedFloat","writeFloat","writePackedDouble","writeDouble","writePackedBoolean","writeBoolean","writePackedFixed32","writeFixed32","writePackedSFixed32","writeSFixed32","writePackedFixed64","writeFixed64","writePackedSFixed64","writeSFixed64","readUInt32","writeInt32","readInt32","destroy","readFields","readField","end","tag","skip","readMessage","readFixed32","readSFixed32","readFixed64","readSFixed64","readFloat","readDouble","readVarintRemainder","readVarint64","readSVarint","readBoolean","readString","subarray","readUtf8TextDecoder","b1","b2","b3","b0","bytesPerSequence","readUtf8","readBytes","readPackedVarint","readPackedSVarint","readPackedBoolean","readPackedFloat","readPackedDouble","readPackedFixed32","readPackedSFixed32","readPackedFixed64","readPackedSFixed64","writeTag","set","finish","writeBigVarintLow","lsb","writeBigVarintHigh","writeBigVarint","writeString","lead","writeUtf8","writeBytes","writeRawMessage","writeMessage","writeBytesField","writeFixed32Field","writeSFixed32Field","writeFixed64Field","writeSFixed64Field","writeVarintField","writeSVarintField","writeStringField","writeFloatField","writeDoubleField","writeBooleanField","families","icon","title","link","getNames","getLink","normalizeName","base64","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","encodingOrOffset","allocUnsafe","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","isEncoding","isBuffer","checked","copy","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","hi","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","typedArraySupport","poolSize","_augment","species","configurable","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","equals","inspect","target","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","ret","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","noAssert","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","encodeChunk","lookup","uidCounter_","getUid","ol_uid","extendStatics","__extends","setPrototypeOf","__","constructor","_super","AssertionError","_this","stopPropagation","evt","BaseEvent","propagationStopped","preventDefault","Disposable","disposed","dispose","disposeInternal","opt_comparator","mid","cmp","comparator","numberSafeCompareFunction","linearFindNearest","direction","reverseSubArray","extension","find","func","arr1","arr2","len1","findIndex","el","isSorted","opt_func","opt_strict","currentVal","TRUE","FALSE","VOID","memoizeOne","lastResult","lastArgs","lastThis","called","nextArgs","assign","var_sources","getValues","isEmpty","Target","opt_target","eventTarget_","pendingRemovals_","dispatching_","listeners_","addEventListener","listener","listeners","listenersForType","dispatchEvent","event","Event","propagate","dispatching","pendingRemovals","handleEvent","pr","removeEventListener","getListeners","hasListener","opt_type","listen","opt_this","opt_once","originalListener_1","eventsKey","listenOnce","unlistenByKey","unByKey","Observable","revision_","changed","EventType","getRevision","on","once","ol_key","un","ObjectEvent","oldValue","BaseObject","opt_values","values_","setProperties","getKeys","getProperties","hasProperties","notify","eventType","getChangeEventType","ObjectEventType","opt_silent","applyProperties","unset","changeEventTypeCache","Property","CollectionEvent","opt_element","opt_index","element","Collection","opt_array","opt_options","unique_","unique","array_","assertUnique_","updateLength_","getLength","getArray","insertAt","elem","CollectionEventType","removeAt","prev","setAt","opt_except","assert","assertion","errorCode","createStyleFunction","styles_1","Feature","opt_geometryOrProperties","id_","geometryName_","style_","styleFunction_","geometryChangeKey_","handleGeometryChanged_","setGeometry","clone","setGeometryName","getGeometryName","getGeometry","getStyle","setStyle","getId","getStyleFunction","handleGeometryChange_","opt_style","setId","POINT","LINE_STRING","LINEAR_RING","POLYGON","MULTI_POINT","MULTI_LINE_STRING","MULTI_POLYGON","GEOMETRY_COLLECTION","CIRCLE","Units","DEGREES","FEET","METERS","PIXELS","TILE_PIXELS","USFEET","METERS_PER_UNIT","tmp_","transform","multiply","transform1","transform2","a1","c1","d1","e1","f1","a2","c2","e2","f2","setFromArray","coordinate","rotate","angle","makeScale","dx","dy","compose","dx1","dy1","sx","sy","dx2","dy2","makeInverse","det","determinant","mat","boundingExtent","extent","createEmpty","extendCoordinate","opt_extent","closestSquaredDistanceXY","containsCoordinate","containsXY","containsExtent","extent1","extent2","coordinateRelationship","relationship","Relationship","createOrUpdate","createOrUpdateEmpty","createOrUpdateFromCoordinate","createOrUpdateFromCoordinates","extendCoordinates","createOrUpdateFromFlatCoordinates","flatCoordinates","stride","extendFlatCoordinates","approximatelyEquals","extendXY","extendRings","forEachCorner","callback","getBottomLeft","getBottomRight","getTopRight","getTopLeft","getArea","area","getWidth","getHeight","getCenter","getCorner","corner","Corner","getForViewAndSize","resolution","rotation","cosRotation","sinRotation","xCos","xSin","yCos","ySin","x0","y0","getIntersection","intersection","returnOrUpdate","scaleFromCenter","deltaX","deltaY","intersectsSegment","intersects","startRel","endRel","startX","startY","endX","endY","slope","applyTransform","transformFn","opt_stops","xs","ys","_boundingExtentXYs","projection","projectionExtent","getExtent","canWrapX","worldWidth","Projection","code_","units_","extent_","worldExtent_","worldExtent","axisOrientation_","axisOrientation","global_","canWrapX_","getPointResolutionFunc_","getPointResolution","defaultTileGrid_","metersPerUnit_","metersPerUnit","getCode","getUnits","getMetersPerUnit","getWorldExtent","getAxisOrientation","isGlobal","setGlobal","getDefaultTileGrid","setDefaultTileGrid","tileGrid","setExtent","setWorldExtent","setGetPointResolution","getPointResolutionFunc","clamp","cosh","LOG2E","squaredSegmentDistance","solveLinearSystem","maxRow","maxEl","absValue","coef","toDegrees","angleInRadians","toRadians","angleInDegrees","modulo","lerp","HALF_SIZE","EXTENT","WORLD_EXTENT","MAX_SAFE_Y","EPSG3857Projection","PROJECTIONS","fromEPSG4326","opt_output","opt_dimension","dimension","toEPSG4326","EPSG4326Projection","opt_axisOrientation","destination","sourceCode","destinationCode","getDistance","opt_radius","radius","lat1","lat2","deltaLatBy2","deltaLonBy2","getLengthInternal","getAreaInternal","lon1","dByR","padNumber","opt_precision","numberString","toFixed","decimal","compareVersions","s1","s2","n1","n2","closestOnCircle","getRadius","closestOnSegment","segment","along","degreesToStringHDMS","hemispheres","degrees","opt_fractionDigits","normalizedDegrees","dflPrecision","precision","deg","sec","template","coordinate1","coordinate2","cosAngle","sinAngle","coord1","coord2","squaredDistanceToSegment","toStringXY","worldsAway","getWorldsAway","opt_sourceExtentWidth","sourceExtentWidth","cloneTransform","identityTransform","addProjection","addProjections","projections","projectionLike","opt_units","pointResolution","toEPSG4326_1","getTransformFromProjections","vertices","addEquivalentProjections","addEquivalentTransforms","projections1","projections2","forwardTransform","inverseTransform","projection1","projection2","createProjection","defaultCode","createTransformFromCoordinateTransform","coordTransform","addCoordinateTransforms","inverse","sourceProj","destProj","fromLonLat","opt_projection","equivalent","equalUnits","sourceProjection","destinationProjection","transformFunc","getTransform","transformExtent","setUserProjection","getUserProjection","toUserCoordinate","fromUserCoordinate","destProjection","toUserExtent","fromUserExtent","createSafeCoordinateTransform","transformed","sourceX","sourceY","sourceExtent","addCommon","transform2D","opt_dest","dest","anchorX","anchorY","tmpTransform","Geometry","extentRevision_","simplifiedGeometryMaxMinSquaredTolerance","simplifiedGeometryRevision","simplifyTransformedInternal","revision","squaredTolerance","opt_transform","getSimplifiedGeometry","simplifyTransformed","closestPointXY","closestPoint","minSquaredDistance","getClosestPoint","opt_closestPoint","intersectsCoordinate","computeExtent","opt_sy","opt_anchor","simplify","intersectsExtent","translate","inCoordinates","outCoordinates","pixelExtent","projectedExtent","getStrideForLayout","GeometryLayout","transformGeom2D","simpleGeometry","getFlatCoordinates","getStride","SimpleGeometry","getCoordinates","getFirstCoordinate","getLastCoordinate","getLayout","simplifiedGeometry","getSimplifiedGeometryInternal","setFlatCoordinates","setCoordinates","opt_layout","setLayout","nesting","getLayoutForStride","assignClosest","offset1","offset2","maxSquaredDelta","squaredDelta","arrayMaxSquaredDelta","ends","multiArrayMaxSquaredDelta","endss","assignClosestPoint","maxDelta","isRing","opt_tmpPoint","squaredDistance","tmpPoint","assignClosestArrayPoint","assignClosestMultiArrayPoint","deflateCoordinate","deflateCoordinates","deflateCoordinatesArray","coordinatess","opt_ends","jj","deflateMultiCoordinatesArray","coordinatesss","opt_endss","douglasPeucker","simplifiedFlatCoordinates","simplifiedOffset","markers","first","maxSquaredDistance","squaredDistance_1","douglasPeuckerArray","simplifiedEnds","radialDistance","snap","quantize","quantizeArray","quantizeMultiArray","simplifiedEndss","inflateCoordinates","opt_coordinates","inflateCoordinatesArray","opt_coordinatess","inflateMultiCoordinatesArray","opt_coordinatesss","twiceArea","linearRingss","LinearRing","maxDelta_","maxDeltaRevision_","GeometryType","linearRingContainsExtent","linearRingContainsXY","wn","linearRingsContainsXY","linearRingssContainsXY","getInteriorPointOfArray","flatCenters","flatCentersOffset","intersections","rr","pointX","maxSegmentLength","segmentLength","getInteriorPointsOfMultiArray","interiorPoints","point1","point2","intersectsLineString","coordinatesExtent","intersectsLineStringArray","intersectsLinearRing","intersectsLinearRingArray","intersectsLinearRingMultiArray","linearRingIsClockwise","edge","linearRingsAreOriented","opt_right","isClockwise","linearRingssAreOriented","orientLinearRings","orientLinearRingsArray","ends_","flatInteriorPointRevision_","flatInteriorPoint_","orientedRevision_","orientedFlatCoordinates_","appendLinearRing","linearRing","getOrientedFlatCoordinates","getEnds","getFlatInteriorPoint","flatCenter","getInteriorPoint","getLinearRingCount","getLinearRing","getLinearRings","linearRings","circular","opt_n","opt_sphereRadius","fromExtent","fromCircle","opt_sides","opt_angle","sides","arrayLength","makeRegular","startAngle","GeolocationError","Geolocation","position_","transform_","watchId_","handleProjectionChanged_","handleTrackingChanged_","setProjection","trackingOptions","setTrackingOptions","setTracking","tracking","getProjection","navigator","getTracking","geolocation","watchPosition","positionChange_","positionError_","getTrackingOptions","clearWatch","coords","accuracy","altitude","altitudeAccuracy","heading","longitude","latitude","projectedPosition","speed","getAccuracy","getAccuracyGeometry","getAltitude","getAltitudeAccuracy","getHeading","getPosition","getSpeed","ImageBase","pixelRatio","pixelRatio_","getImage","getPixelRatio","getResolution","getState","ua","userAgent","FIREFOX","SAFARI","WEBKIT","MAC","DEVICE_PIXEL_RATIO","devicePixelRatio","WORKER_OFFSCREEN_CANVAS","WorkerGlobalScope","OffscreenCanvas","IMAGE_DECODE","Image","PASSIVE_EVENT_LISTENERS","passive","listenImage","loadHandler","errorHandler","img","promise","listening_1","then","catch","listenerKeys","ImageWrapper","crossOrigin","imageLoadFunction","ImageState","src_","image_","unlisten_","imageLoadFunction_","handleImageError_","unlistenImage_","handleImageLoad_","setImage","ImageCanvas","canvas","opt_loader","loader_","canvas_","error_","getError","handleLoad_","easeIn","easeOut","inAndOut","Tile","tileCoord","interimTile","hifi","transition_","transitionStarts_","release","getKey","getInterimTile","tile","TileState","refreshInterimChain","getTileCoord","setState","getAlpha","time","inTransition","endTransition","createCanvasContext2D","opt_width","opt_height","opt_canvasPool","document","createElement","getContext","offsetWidth","getComputedStyle","marginLeft","marginRight","offsetHeight","marginTop","marginBottom","replaceNode","newNode","oldNode","parentNode","replaceChild","removeNode","node","removeChild","removeChildren","lastChild","replaceChildren","oldChildren","childNodes","oldChild","newChild","insertBefore","appendChild","ImageTile","tileLoadFunction","crossOrigin_","tileLoadFunction_","fillStyle","fillRect","naturalWidth","naturalHeight","Kinetic","decay","minVelocity","decay_","minVelocity_","delay_","points_","angle_","initialVelocity_","update","Date","now","firstIndex","getAngle","HEX_COLOR_RE_","NAMED_COLOR_RE_","asString","fromNamed","body","cache","cacheSize","hasAlpha","normalize","fromStringInternal_","asArray","isStringColor","IconImageCache","cache_","cacheSize_","maxCacheSize_","canExpireCache","expire","iconImage","setSize","maxCacheSize","shared","Base","BaseLayer","opacity","zIndex","maxResolution","minResolution","minZoom","maxZoom","className_","className","state_","getClassName","getLayerState","opt_managed","managed","getZIndex","getOpacity","sourceState","getSourceState","getVisible","getMaxResolution","getMinResolution","getMinZoom","getMaxZoom","getLayersArray","getLayerStatesArray","opt_states","setMaxResolution","setMinResolution","setMaxZoom","setMinZoom","setOpacity","setVisible","setZIndex","zindex","inView","layerState","viewState","Layer","baseOptions","mapPrecomposeKey_","mapRenderKey_","sourceChangeKey_","renderer_","render","setMap","handleSourcePropertyChange_","setSource","states","getSource","handleSourceChange_","getFeatures","pixel","frameState","layerRenderer","getRenderer","prepareFrame","renderFrame","layerStatesArray","arrayLayerState","createRenderer","hasRenderer","expireIconCache","MapRenderer","map_","dispatchRenderEvent","calculateMatrices2D","coordinateToPixelTransform","pixelToCoordinateTransform","forEachFeatureAtCoordinate","hitTolerance","checkWrapped","thisArg","layerFilter","thisArg2","translatedCoordinate","offsets","layerStates","numLayers","tmpCoord","getWrapX","callback_1","order","distanceSq","forEachLayerAtPixel","hasFeatureAtCoordinate","getMap","scheduleExpireIconCache","postRenderFunctions","RenderEvent","opt_inversePixelTransform","opt_frameState","opt_context","inversePixelTransform","fontRegEx","RegExp","fontRegExMatchIndex","getFontParameters","fontSpec","variant","family","defaultLineDash","defaultPadding","checkedFonts","labelCache","measureFont","div","measureContext","textHeights","registerFont","referenceWidth","referenceFonts","isAvailable","fontStyle","fontWeight","referenceFont","measureTextWidth","check","clearInterval","setInterval","measureTextHeight","metrics","measureText","actualBoundingBoxAscent","actualBoundingBoxDescent","innerHTML","margin","padding","measureTextWidths","widths","numLines","currentWidth","rotateAtOffset","offsetX","offsetY","drawImageOrLabel","labelOrImage","originX","originY","save","globalAlpha","setTransform","contextInstructions","executeLabelInstructions","drawImage","restore","createTransformStringCanvas","createTransformString","Composite","CompositeMapRenderer","fontChangeListenerKey_","redrawText","element_","CLASS_UNSELECTABLE","container","getViewport","firstChild","children_","renderedVisible_","event_1","declutterLayers","previousElement","layerIndex","renderDeclutter","display","getDataAtPixel","LayerGroup","layersListenerKeys_","listenerKeys_","handleLayersChanged_","setLayers","handleLayerChange_","getLayers","handleLayersAdd_","handleLayersRemove_","layersArray","collectionEvent","ownLayerState","MapEvent","MapBrowserEvent","originalEvent","opt_dragging","pixel_","coordinate_","dragging","getEventPixel","getCoordinateFromPixel","SINGLECLICK","CLICK","DBLCLICK","POINTERDRAG","POINTERMOVE","POINTERDOWN","POINTERUP","POINTEROVER","POINTEROUT","POINTERENTER","POINTERLEAVE","POINTERCANCEL","MapBrowserEventHandler","moveTolerance","clickTimeoutId_","emulateClicks_","dragging_","dragListenerKeys_","moveTolerance_","down_","activePointers_","trackedTouches_","pointerdownListenerKey_","handlePointerDown_","originalPointerMoveEvent_","relayedListenerKey_","relayEvent_","boundHandleTouchMove_","handleTouchMove_","emulateClick_","pointerEvent","newEvent","MapBrowserEventType","clearTimeout","setTimeout","updateActivePointers_","pointerId","handlePointerUp_","isMouseActionButton_","button","getOwnerDocument","handlePointerMove_","getRootNode","isMoving_","defaultPrevented","clientX","clientY","PriorityQueue","priorityFunction","keyFunction","priorityFunction_","keyFunction_","elements_","priorities_","queuedElements_","dequeue","elements","priorities","siftUp_","elementKey","enqueue","priority","siftDown_","getCount","getLeftChildIndex_","getRightChildIndex_","getParentIndex_","heapify_","isKeyQueued","isQueued","count","startIndex","lIndex","rIndex","smallerChildIndex","parentIndex","reprioritize","TileQueue","tilePriorityFunction","tileChangeCallback","boundHandleTileChange_","handleTileChange","tileChangeCallback_","tilesLoading_","tilesLoadingKeys_","added","getTilesLoading","tileKey","loadMoreTiles","maxTotalLoading","maxNewLoads","newLoads","getTilePriority","tileSourceKey","tileCenter","tileResolution","wantedTiles","createExtent","onlyCenter","smooth","opt_isMoving","opt_centerShift","viewWidth","viewHeight","shiftX","shiftY","ratio","getViewportClampedResolution","maxExtent","viewportSize","showFullExtent","xResolution","yResolution","getSmoothClampedResolution","createSnapToResolutions","resolutions","opt_smooth","opt_maxExtent","opt_showFullExtent","cappedMaxRes","capped","createSnapToPower","power","opt_minResolution","minZoomLevel","cappedZoomLevel","zoomLevel","createMinMaxResolution","disable","createSnapToN","theta","createSnapToZero","opt_tolerance","animationCallback","returnValue","createCenterConstraint","smoothExtentConstraint","constrainOnlyCenter","multiWorld","createResolutionConstraint","resolutionConstraint","zoomFactor","smoothResolutionConstraint","projExtent","constrainResolution","defaultMaxResolution","defaultMinResolution","defaultMaxZoom","constraint","createRotationConstraint","enableRotation","constrainRotation","isNoopAnimation","animation","sourceCenter","targetCenter","sourceResolution","targetResolution","sourceRotation","targetRotation","calculateCenterOn","rotX","rotY","View","hints_","animations_","updateAnimationKey_","projection_","viewportSize_","targetCenter_","targetResolution_","targetRotation_","cancelAnchor_","applyOptions_","resolutionConstraintInfo","maxResolution_","minResolution_","zoomFactor_","resolutions_","minZoom_","centerConstraint","rotationConstraint","constraints_","setRotation","setCenterInternal","setResolution","setZoom","options_","getUpdatedOptions_","newOptions","getZoom","getCenterInternal","getRotation","animate","var_args","isDef","getAnimating","resolveConstraints","animateInternal","animationCount","series","complete","easing","getResolutionForZoom","setHint","ViewHint","updateAnimations_","getInteracting","cancelAnimations","cancelAnimationFrame","seriesComplete","elapsed","fraction","getViewportSize_","constrainedResolution","calculateCenterZoom","applyTargetState_","constrainedRotation","calculateCenterRotate","requestAnimationFrame","currentCenter","currentResolution","opt_rotation","setViewportSize","opt_size","ViewProperty","getConstraints","getConstrainResolution","getHints","opt_hints","calculateExtent","calculateExtentInternal","getZoomForResolution","setConstrainResolution","enabled","getResolutions","getResolutionForExtent","getResolutionForExtentInternal","getResolutionForValueFunction","opt_power","getConstrainedResolution","getValueForResolutionFunction","logPower","getViewportSizeMinusPadding_","reducedSize","baseLevel","fit","geometryOrExtent","userProjection","fitInternal","minRotX","minRotY","maxRotX","maxRotY","centerRotX","centerRotY","centerX","centerY","getConstrainedCenter","centerOn","centerOnInternal","calculateCenterShift","centerShift","shiftedCenter","adjustCenter","deltaCoordinates","setCenter","adjustCenterInternal","adjustResolution","adjustResolutionInternal","isMoving","newResolution","adjustZoom","adjustRotation","adjustRotationInternal","newRotation","hint","opt_doNotCancelAnims","opt_forceMoving","newCenter","opt_duration","opt_resolutionDirection","beginInteraction","endInteraction","endInteractionInternal","opt_targetResolution","getConstrainedZoom","targetZoom","opt_direction","targetRes","hasArea","toSize","PluggableMap","optionsInternal","keyboardEventTarget","getElementById","controls","interactions","overlays","layerGroup","MapProperty","view","createOptionsInternal","boundHandleBrowserEvent_","handleBrowserEvent","maxTilesLoading_","maxTilesLoading","postRenderTimeoutHandle_","animationDelayKey_","animationDelay_","renderFrame_","coordinateToPixelTransform_","pixelToCoordinateTransform_","frameIndex_","frameState_","previousExtent_","viewPropertyListenerKey_","viewChangeListenerKey_","layerGroupPropertyListenerKeys_","viewport_","overflow","overlayContainer_","pointerEvents","overlayContainerStopEvent_","mapBrowserEventHandler_","keyboardEventTarget_","keyHandlerKeys_","overlays_","overlayIdIndex_","handleResize_","postRenderFunctions_","tileQueue_","handleTileChange_","handleLayerGroupChanged_","handleViewChanged_","handleSizeChanged_","handleTargetChanged_","control","interaction","addOverlayInternal_","addControl","getControls","addInteraction","getInteractions","addLayer","getLayerGroup","addOverlay","overlay","getOverlays","setTarget","forEachFeatureAtPixel","getCoordinateFromPixelInternal","getFeaturesAtPixel","hasFeatureAtPixel","getEventCoordinate","getEventCoordinateInternal","viewportPosition","getBoundingClientRect","eventPosition","changedTouches","getTarget","getTargetElement","getView","getOverlayById","getLoading","loading","getPixelFromCoordinate","viewCoordinate","getPixelFromCoordinateInternal","getSize","getOverlayContainer","getOverlayContainerStopEvent","ownerDocument","browserEvent","mapBrowserEvent","handleMapBrowserEvent","rootNode","elementFromPoint","contains","documentElement","interactionsArray","getActive","handlePostRender","tileQueue","hints","viewHints","lowOnFrameBudget","targetElement","updateSize","handleViewPropertyChanged_","updateViewportSize_","isRendered","renderSync","handleFontsChanged","removeControl","removeInteraction","removeLayer","removeOverlay","previousFrameState","declutterTree","usedTiles","MapEventType","setLayerGroup","setView","computedStyle","Control","target_","mapEvent","Attribution","ulElement_","collapsed_","collapsed","userCollapsed_","overrideCollapsible_","collapsible","collapsible_","tipLabel","expandClassName","collapseLabel","collapseClassName","collapseLabel_","textContent","label_","activeLabel","setAttribute","handleClick_","cssClasses","renderedAttributions_","collectSourceAttributions_","visibleAttributions","attributionGetter","getAttributions","attributions","getAttributionsCollapsible","setCollapsible","updateElement_","handleToggle_","classList","toggle","getCollapsible","setCollapsed","getCollapsed","Rotate","compassClassName","add","callResetNorth_","resetNorth","duration_","autoHide_","autoHide","rotation_","resetNorth_","Zoom","zoomInClassName","zoomOutClassName","zoomInLabel","zoomOutLabel","zoomInTipLabel","zoomOutTipLabel","inElement","createTextNode","outElement","zoomByDelta_","currentZoom","newZoom","defaults","zoomOptions","rotateOptions","attributionOptions","pan","zoomByDelta","Interaction","setActive","active","DoubleClickZoom","delta_","stopEvent","shiftKey","Pointer","PointerInteraction","handleDownEvent","handleDragEvent","handleMoveEvent","handleUpEvent","stopDown","handlingDownUpSequence","trackedPointers_","targetPointers","getPointerCount","updateTrackedPointers_","handledUp","handled","isPointerDraggingEvent","pass","altKeyOnly","altKey","metaKey","ctrlKey","altShiftKeysOnly","activeElement","focusWithTabindex","hasAttribute","always","mouseActionButton","never","singleClick","noModifierKeys","shiftKeyOnly","targetNotEditable","tagName","mouseOnly","pointerType","primaryAction","isPrimary","DragPan","kinetic_","kinetic","lastCentroid","lastPointersCount_","panning_","condition_","onFocusOnly","noKinetic_","centroid","centerpx","DragRotate","lastAngle_","RenderBox","geometry_","startPixel_","endPixel_","render_","startPixel","endPixel","setPixels","createOrUpdateGeometry","DragBoxEventType","DragBoxEvent","DragBox","box_","minArea_","minArea","onBoxEnd","boxEndCondition_","boxEndCondition","defaultBoxEndCondition","completeBox","DragZoom","out_","mapExtent","boxPixelExtent","KeyboardPan","defaultCondition_","pixelDelta_","pixelDelta","keyEvent","keyCode","KeyCode","mapUnitsDelta","KeyboardZoom","charCode","Mode","MouseWheelZoom","totalDelta_","lastDelta_","timeout_","timeout","useAnchor_","useAnchor","constrainResolution_","lastAnchor_","startTime_","timeoutId_","mode_","trackpadEventGap_","trackpadTimeoutId_","deltaPerZoom_","endInteraction_","wheelEvent","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","timeLeft","handleWheelZoom_","setMouseAnchor","PinchRotate","pointerOptions","anchor_","rotating_","rotationDelta_","threshold_","threshold","rotationDelta","touch0","touch1","PinchZoom","lastDistance_","lastScaleDelta_","scaleDelta","altShiftDragRotate","doubleClickZoom","zoomDelta","zoomDuration","dragPan","pinchRotate","pinchZoom","keyboard","mouseWheelZoom","shiftDragZoom","Map","Overlay","insertFirst","autoPan","autoPanAnimation","autoPanMargin","rendered","mapPostrenderListenerKey","handleElementChanged","handleMapChanged","handleOffsetChanged","handlePositionChanged","handlePositioningChanged","setElement","setOffset","setPositioning","positioning","OverlayPositioning","setPosition","getElement","getOffset","getPositioning","updatePixelPosition","performAutoPan","panIntoView","opt_panIntoViewOptions","mapRect","getRect","overlayRect","panIntoViewOptions","myMargin","offsetLeft","offsetRight","offsetTop","offsetBottom","centerPx","newCenterPx","panOptions","box","pageXOffset","pageYOffset","mapSize","updateRenderedPosition","posX","posY","msTransform","getOptions","LRUCache","opt_highWaterMark","highWaterMark","count_","entries_","oldest_","newest_","containsKey","entry","value_","key_","newer","older","peekLast","peekLastKey","peekFirstKey","opt_tileCoord","getKeyZXY","fromKey","withinExtentAndZ","tileRange","getFullTileRange","TileCache","expireCache","pruneExceptNewestZ","TileRange","containsTileRange","canvasPool","VectorRenderTile","urlTileCoord","getSourceTiles","context_","executorGroups","declutterExecutorGroups","loadingSourceTiles","errorSourceTileKeys","hitDetectionImageData","replayState_","sourceTiles","wantedResolution","sourceZ","wrappedTileCoord","hasContext","getReplayState","dirty","renderedRenderOrder","renderedResolution","renderedRevision","renderedTileResolution","renderedTileRevision","renderedZ","renderedTileZ","VectorTile","format_","features_","url_","getFormat","onLoad","dataProjection","setFeatures","onError","setLoader","loader","asColorLike","withCredentials","loadFeaturesXhr","failure","xhr","XMLHttpRequest","open","FormatType","responseType","onload","status","responseText","responseXML","DOMParser","parseFromString","readFeatures","featureProjection","readProjection","onerror","send","addFeatures","jsonp","opt_errback","opt_callbackParam","script","cleanup","async","timer","getElementsByTagName","VectorContext","drawCustom","renderer","drawGeometry","drawCircle","circleGeometry","drawFeature","drawGeometryCollection","geometryCollectionGeometry","drawLineString","lineStringGeometry","drawMultiLineString","multiLineStringGeometry","drawMultiPoint","multiPointGeometry","drawMultiPolygon","multiPolygonGeometry","drawPoint","pointGeometry","drawPolygon","drawText","setFillStrokeStyle","strokeStyle","setImageStyle","imageStyle","opt_declutterImageWithText","setTextStyle","textStyle","CanvasImmediateRenderer","viewRotation","opt_squaredTolerance","opt_userTransform","viewRotation_","squaredTolerance_","userTransform_","contextFillState_","contextStrokeState_","contextTextState_","fillState_","strokeState_","imageAnchorX_","imageAnchorY_","imageHeight_","imageOpacity_","imageOriginX_","imageOriginY_","imageRotateWithView_","imageRotation_","imageScale_","imageWidth_","text_","textOffsetX_","textOffsetY_","textRotateWithView_","textRotation_","textScale_","textFillState_","textStrokeState_","textState_","pixelCoordinates_","tmpLocalTransform_","drawImages_","pixelCoordinates","localTransform","drawText_","setContextFillState_","setContextStrokeState_","setContextTextState_","strokeText","fillText","moveToLineTo_","close","moveTo","lineTo","closePath","drawRings_","beginPath","arc","stroke","getFill","getStroke","getText","getGeometryFunction","getGeometriesArray","flatMidpoint","getFlatMidpoint","geometryExtent","flatMidpoints","getFlatMidpoints","flatInteriorPoint","getEndss","flatInteriorPoints","getFlatInteriorPoints","fillState","contextFillState","strokeState","contextStrokeState","lineCap","setLineDash","lineDash","lineDashOffset","lineJoin","lineWidth","miterLimit","textState","contextTextState","textAlign","textBaseline","fillStyleColor","getColor","strokeStyleColor","strokeStyleLineCap","getLineCap","strokeStyleLineDash","getLineDash","strokeStyleLineDashOffset","getLineDashOffset","strokeStyleLineJoin","getLineJoin","strokeStyleWidth","strokeStyleMiterLimit","getMiterLimit","imageSize","imageAnchor","getAnchor","imageImage","imageOrigin","getOrigin","imageScale","getScaleArray","getRotateWithView","textFillStyle","textFillStyleColor","textStrokeStyle","textStrokeStyleColor","textStrokeStyleLineCap","textStrokeStyleLineDash","textStrokeStyleLineDashOffset","textStrokeStyleLineJoin","textStrokeStyleWidth","textStrokeStyleMiterLimit","textFont","getFont","textOffsetX","getOffsetX","textOffsetY","getOffsetY","textRotateWithView","textRotation","textScale","textText","textTextAlign","getTextAlign","textTextBaseline","getTextBaseline","GEOMETRY_RENDERERS","builderGroup","opt_declutterBuilderGroup","declutterImageWithText","getImageState","imageReplay","getBuilder","BuilderType","textReplay","lineStringReplay","polygonReplay","replayGroup","geometryRenderer","circleReplay","defaultOrder","feature1","feature2","getSquaredTolerance","getTolerance","renderFeature","imageState","unlistenImageChange","listenImageChange","renderGeometry","getGeometries","renderFeatureInternal","getVectorContext","userTransform","brokenDiagonalRendering_","IMAGE_SMOOTHING_DISABLED","imageSmoothingEnabled","msImageSmoothingEnabled","drawTestTriangle","u1","u2","clip","verifyBrokenDiagonalRendering","calculateSourceResolution","targetProj","targetMetersPerUnit","sourceMetersPerUnit","compensationFactor","calculateSourceExtentResolution","targetExtent","triangulation","gutter","opt_renderEdges","opt_contextOptions","pixelRound","globalCompositeOperation","sourceDataExtent","canvasWidthInUnits","canvasHeightInUnits","stitchContext","stitchScale","xPos","yPos","srcWidth","srcHeight","targetTopLeft","getTriangles","triangle","u0","v0","sourceNumericalShiftX","sourceNumericalShiftY","affineCoefs","getImageData","isBrokenDiagonalRendering","ud","vd","steps","tmpTileCoord","TileGrid","origins","origin_","origin","origins_","tileSizes_","tileSizes","tileSize_","fullTileRanges_","tmpSize_","sizes","restrictedTileRange","getTileRangeForExtentAndZ","calculateTileRanges_","forEachTileCoord","forEachTileCoordParentTileRange","opt_tileRange","tileCoordExtent","getTileCoordExtent","getTileCoordChildTileRange","getTileRangeExtent","getTileSize","getTileCoordForXYAndZ_","getTileCoordCenter","getTileCoordForCoordAndResolution","getTileCoordForXYAndResolution_","reverseIntersectionPolicy","getZForResolution","adjustX","adjustY","xFromOrigin","yFromOrigin","tileCoordX","tileCoordY","getTileCoordForCoordAndZ","getTileCoordResolution","fullTileRanges","getForProjection","createForProjection","extentFromProjection","createForExtent","opt_maxZoom","opt_tileSize","opt_corner","resolutionsFromExtent","createXYZ","xyzOptions","gridOptions","opt_maxResolution","half","zRegEx","xRegEx","yRegEx","dashYRegEx","createFromTemplates","templates","tileUrlFunctions","createFromTileUrlFunctions","nullTileUrlFunction","expandUrl","startCharCode","stopCharCode","stop_1","appendParams","uri","keyParams","supportedExtensions","CONTEXT_IDS","opt_attributes","getSupportedExtensions","gl","XML_SCHEMA_INSTANCE_URI","createElementNS","namespaceURI","qualifiedName","getDocument","getAllTextContent","normalizeWhitespace","getAllTextContent_","accumulator","Node","CDATA_SECTION_NODE","TEXT_NODE","nodeValue","nextSibling","isDocument","getAttributeNS","xml","makeArrayExtender","valueReader","objectStack","makeArrayPusher","makeReplacer","makeObjectPropertyPusher","opt_property","localName","makeObjectPropertySetter","makeChildAppender","nodeWriter","makeArraySerializer","serializersNS","nodeFactory","serializers","makeSimpleNodeFactory","opt_nodeName","opt_namespaceURI","fixedNodeName","nodeName","OBJECT_PROPERTY_NODE_FACTORY","makeSequence","orderedKeys","sequence","makeStructureNS","namespaceURIs","structure","opt_structureNS","structureNS","parseNode","parsersNS","firstElementChild","nextElementSibling","parsers","pushParseAndPop","opt_keys","pushSerializeAndPop","xmlSerializer_","getXMLSerializer","XMLSerializer","document_","implementation","createDocument","blob","Blob","URL","createObjectURL","BufferUsage","getArrayClassForType","Float32Array","Uint32Array","WebGLArrayBuffer","opt_usage","ofSize","fromArray","getUsage","WebGLPostProcessingPass","gl_","webGlContext","scaleRatio_","scaleRatio","renderTargetTexture_","createTexture","renderTargetTextureSize_","frameBuffer_","createFramebuffer","vertexShader","createShader","VERTEX_SHADER","shaderSource","compileShader","fragmentShader","FRAGMENT_SHADER","renderTargetProgram_","createProgram","attachShader","linkProgram","renderTargetVerticesBuffer_","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","renderTargetAttribLocation_","getAttribLocation","renderTargetUniformLocation_","getUniformLocation","renderTargetTextureLocation_","uniforms_","uniforms","location","getGL","init","textureSize","drawingBufferWidth","drawingBufferHeight","bindFramebuffer","FRAMEBUFFER","getFrameBuffer","internalFormat","RGBA","UNSIGNED_BYTE","bindTexture","TEXTURE_2D","texImage2D","texParameteri","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","framebufferTexture2D","COLOR_ATTACHMENT0","nextPass","activeTexture","TEXTURE0","clearColor","COLOR_BUFFER_BIT","enable","BLEND","blendFunc","ONE","ONE_MINUS_SRC_ALPHA","useProgram","enableVertexAttribArray","vertexAttribPointer","FLOAT","uniform2f","uniform1i","applyUniforms","drawArrays","TRIANGLES","textureSlot","uniform","HTMLCanvasElement","ImageData","texture","uniform3f","uniform4f","uniform1f","fromTransform","mat4","DefaultUniform","AttributeType","UNSIGNED_SHORT","UNSIGNED_INT","computeAttributesStride","attributes","attr","getByteSizeFromType","BYTES_PER_ELEMENT","Uint16Array","WebGLHelper","boundHandleWebGLContextLost_","handleWebGLContextLost","boundHandleWebGLContextRestored_","handleWebGLContextRestored","bufferCache_","currentProgram_","getExtension","ContextEventType","offsetRotateMatrix_","offsetScaleMatrix_","tmpMat4_","uniformLocations_","attribLocations_","name_1","postProcessPasses_","postProcesses","shaderCompileErrors_","bufferKey","bufferCache","webGlBuffer","flushBufferData","deleteBuffer","bufferCacheEntry","isContextLost","prepareDraw","getCanvas","applyFrameState","prepareDrawToRenderTarget","renderTarget","opt_disableAlphaBlend","getFramebuffer","getTexture","ZERO","drawElements","elementType","numItems","offsetInBytes","finalizeDraw","offsetScaleMatrix","offsetRotateMatrix","setUniformMatrixValue","setUniformFloatValue","HTMLImageElement","prevValue","program","shader","getProgram","fragmentShaderSource","vertexShaderSource","getShaderInfoLog","getShaderCompileErrors","getAttributeLocation","makeProjectionTransform","uniformMatrix4fv","enableAttributeArray_","attribName","enableAttributes","opt_data","opt_texture","tmpArray4","WebGLRenderTarget","helper","helper_","texture_","framebuffer_","size_","data_","dataCacheDirty_","updateSize_","clearCachedData","readAll","readPixels","readPixel","ValueTypes","Operators","getValueType","valueArr","getReturnType","isTypeUnique","valueType","numberToGlsl","arrayToGlsl","colorToGlsl","getStringNumberEquivalent","stringLiteralsMap","stringToGlsl","expressionToGlsl","typeHint","toGlsl","assertNumber","assertNumbers","assertString","assertBoolean","assertArgsCount","assertArgsMinCount","assertArgsMaxCount","assertArgsEven","assertUniqueInferredType","getEqualOperator","getDecisionOperator","inFragmentShader","variables","opt_typeHint","stop1","output1","stop2","fallback","assertArgsOdd","ShaderBuilder","varyings","sizeExpression","rotationExpression","offsetExpression","colorExpression","texCoordExpression","discardExpression","rotateWithView","addUniform","addAttribute","addVarying","setSizeExpression","setRotationExpression","setSymbolOffsetExpression","setColorExpression","setTextureCoordinateExpression","setFragmentDiscardExpression","setSymbolRotateWithView","getSizeExpression","getOffsetExpression","getColorExpression","getTextureCoordinateExpression","getFragmentDiscardExpression","getSymbolVertexShader","forHitDetection","offsetMatrix","attribute","varying","getSymbolFragmentShader","hitDetectionBypass","parseLiteralStyle","symbStyle","texCoord","textureCoord","vertContext","parsedSize","parsedOffset","parsedTexCoord","parsedRotation","fragContext","parsedColor","parsedOpacity","opacityFilter","visibleSize","symbolType","st","builder","parsedFilter","varName","attrName","attributeName","props","WMTSTileGrid","matrixIds_","matrixIds","getMatrixId","getMatrixIds","createFromCapabilitiesMatrixSet","matrixSet","opt_matrixLimits","matrixLimits","switchOriginXY","elt","elt_ml","tileWidth","tileHeight","ImageStyle","opacity_","rotateWithView_","scale_","scaleArray_","displacement_","displacement","getScale","getDisplacement","getHitDetectionImage","getImageSize","getHitDetectionImageSize","setRotateWithView","setScale","RegularShape","hitDetectionCanvas_","fill_","radius_","radius1","radius2_","radius2","stroke_","imageSize_","hitDetectionImageSize_","getPoints","getRadius2","renderOptions","createRenderOptions","createHitDetectionCanvas_","draw_","strokeWidth","angle0","radiusC","drawHitDetectionCanvas_","CircleStyle","setRadius","Fill","color_","setColor","taintedTestContext","IconImage","hitDetectionImage_","imageState_","tainted_","isTainted_","dispatchChangeEvent_","replaceColor_","getSrc","imgData","putImageData","Icon","normalizedAnchor_","anchorOrigin_","anchorOrigin","IconOrigin","anchorXUnits_","anchorXUnits","IconAnchorUnits","anchorYUnits_","anchorYUnits","imgSize","iconImage_","offset_","offsetOrigin_","offsetOrigin","setAnchor","iconImageSize","Stroke","lineCap_","lineDash_","lineDashOffset_","lineJoin_","miterLimit_","width_","setLineCap","setLineDashOffset","setLineJoin","setMiterLimit","setWidth","Style","geometryFunction_","defaultGeometryFunction","zIndex_","setRenderer","setFill","setStroke","setText","toFunction","defaultStyles","createDefaultStyle","createEditingStyle","styles","Text","font_","textAlign_","textBaseline_","maxAngle_","maxAngle","placement_","placement","TextPlacement","overflow_","offsetX_","offsetY_","backgroundFill_","backgroundFill","backgroundStroke_","backgroundStroke","padding_","getPlacement","getMaxAngle","getOverflow","getBackgroundFill","getBackgroundStroke","getPadding","setOverflow","setFont","setMaxAngle","setOffsetX","setOffsetY","setPlacement","setTextAlign","setTextBaseline","setBackgroundFill","setBackgroundStroke","setPadding","LinkedList","opt_circular","first_","last_","head_","circular_","length_","insertItem","head","removeItem","firstItem","lastItem","nextItem","getNextItem","prevItem","getPrevItem","getCurrItem","setFirstItem","RBush","opt_maxEntries","rbush_","items_","extents","items","uid","getAll","getInExtent","forEach_","forEachInExtent","rbush","Triangulation","maxSourceExtent","errorThreshold","opt_destinationResolution","sourceProj_","targetProj_","transformInvCache","transformInv","transformInv_","maxSourceExtent_","errorThresholdSquared_","triangles_","wrapsXInSource_","canWrapXInSource_","sourceWorldWidth_","targetWorldWidth_","destinationTopLeft","destinationTopRight","destinationBottomRight","destinationBottomLeft","sourceTopLeft","sourceTopRight","sourceBottomRight","sourceBottomLeft","maxSubdivision","addQuad_","leftBound_1","newTriangle","addTriangle_","aSrc","bSrc","cSrc","dSrc","sourceQuadExtent","sourceCoverageX","sourceWorldWidth","wrapsX","needsSubdivision","isNotFinite","centerSrc","bc","bcSrc","da","daSrc","ab","abSrc","cd","cdSrc","calculateSourceExtent","ReprojTile","sourceTileGrid","targetTileGrid","getTileFunction","opt_errorThreshold","renderEdges_","contextOptions_","gutter_","sourceTileGrid_","targetTileGrid_","wrappedTileCoord_","sourceTiles_","sourcesListenerKeys_","sourceZ_","maxTargetExtent","limitedTargetExtent","sourceProjExtent","errorThresholdInPixels","triangulation_","sourceRange","srcX","srcY","reproject_","leftToLoad_1","sourceListenKey_1","unlistenSources_","adaptAttributions","attributionLike","Source","attributions_","attributionsCollapsible_","attributionsCollapsible","wrapX_","wrapX","getContextOptions","refresh","setAttributions","TileSource","opaque_","opaque","tilePixelRatio_","tilePixelRatio","tileCache","tmpSize","tileOptions","zDirection","getTileCacheForProjection","forEachLoadedTile","tileCoordKey","loaded","covered","getGutterForProjection","setKey","getOpaque","getTile","getTileGrid","getTileGridForProjection","getTilePixelRatio","getTilePixelSize","getTileCoordForTileUrlFunction","updateCacheSize","tileCount","useTile","TileSourceEvent","UrlTile","generateTileUrlFunction_","tileUrlFunction","setUrls","setUrl","tileLoadingKeys_","getTileLoadFunction","getTileUrlFunction","getUrls","tileState","TileEventType","setTileLoadFunction","setTileUrlFunction","defaultTileLoadFunction","imageTile","TileImage","tileClass","tileCacheForProjection","tileGridForProjection","reprojectionErrorThreshold_","reprojectionErrorThreshold","imageSmoothing","renderReprojectionEdges_","usedTileCache","getGutter","thisProj","projKey","createTile_","tileUrl","newTile","getTileInternal","setRenderReprojectionEdges","setTileGridForProjection","tilegrid","proj","quadKey","digits","mask","BingMaps","hidpi","hidpi_","culture_","culture","maxZoom_","apiKey_","imagerySet_","imagerySet","handleImageryMetadataResponse","getApiKey","getImagerySet","response","statusCode","statusDescription","authenticationResultCode","resourceSets","resources","resource","zoomMax","imageWidth","imageHeight","zoomMin","imageUrlSubdomains","subdomain","quadKeyTileCoord","imageUrl","imageryProviders","transform_1","imageryProvider","intersecting","coverageAreas","coverageArea","XYZ","CartoDB","account_","account","mapId_","config_","config","templateCache_","initializeMap_","getConfig","updateConfig","setConfig","paramHash","applyTemplate_","mapUrl","client","handleInitResponse_","handleInitError_","setRequestHeader","tilesUrl","cdn_url","https","layergroupid","VectorSourceEvent","opt_feature","opt_features","Vector","VectorSource","overlaps_","overlaps","strategy_","strategy","collection","useSpatialIndex","featuresRtree_","loadedExtentsRtree_","nullGeometryFeatures_","idIndex_","uidIndex_","featureChangeKeys_","featuresCollection_","addFeaturesInternal","bindFeaturesCollection_","addFeature","addFeatureInternal","featureKey","addToIndex_","setupChangeEvents_","VectorEventType","handleFeatureChange_","valid","newFeatures","geometryFeatures","length_1","length_2","length_3","modifyingCollection","removeFeature","opt_fast","featureId","removeFeatureInternal","clearEvent","forEachFeature","forEachFeatureAtCoordinateDirect","forEachFeatureInExtent","forEachFeatureIntersectingExtent","getFeaturesCollection","getFeaturesAtCoordinate","getFeaturesInExtent","getClosestFeatureToCoordinate","opt_filter","closestFeature","previousMinSquaredDistance","minDistance","getFeatureById","getFeatureByUid","getOverlaps","getUrl","sid","removeFromIdIndex_","hasFeature","loadFeatures","loadedExtentsRtree","extentsToLoad","_loop_1","extentToLoad","this_1","removeLoadedExtent","removed","Cluster","geometryFunction","boundRefresh_","setDistance","mapDistance","clustered","neighbors","neighbor","createCluster","TierSizeCalculation","CustomTile","zoomifyImage_","Zoomify","tierSizeCalculation","tierSizeInTiles","tileSizeForTierSizeCalculation","tileCountUpToTier","tileCoordZ","tileIndex","localContext_1","ZoomifyTileClass","testTileUrl","__spreadArrays","il","jl","Versions","IIIF_PROFILE_VALUES","supports","formats","qualities","COMPLIANCE_VERSION1","COMPLIANCE_VERSION2","COMPLIANCE_VERSION3","versionFunctions","iiifInfo","levelProfile","getComplianceLevelSupportedFeatures","imageInfo","scale_factors","tile_width","tile_height","additionalProfile","profile","profileSupports","profileFormats","profileQualities","scaleFactors","extraFormats","preferredFormat","preferredFormats","reduce","acc","extraFeatures","extraQualities","IIIFInfo","setImageInfo","getImageApiVersion","getComplianceLevelEntryFromProfile","getComplianceLevelFromProfile","complianceLevel","level","getTileSourceOptions","opt_preferredOptions","imageOptions","quality","formatPercentage","percentage","toLocaleString","IIIF","baseUrl","supportsListedSizes","supportsListedTiles","isInteger","supportsArbitraryTiling","maxScaleFactor","ignoredSizesIndex","IiifTileClass","regionParam","sizeParam","tileX","tileY","regionX","regionY","regionW","regionH","sizeW","sizeH","regionWidth","regionHeight","ReprojImage","getImageFunction","sourceImage","sourcePixelRatio","targetExtent_","sourceImage_","sourcePixelRatio_","sourceListenerKey_","unlistenSource_","ImageSourceEventType","ImageSourceEvent","defaultImageLoadFunction","ImageSource","reprojectedImage_","reprojectedRevision_","findNearestResolution","getImageInternal","handleImageChange","ImageArcGISRest","params_","renderedRevision_","ratio_","getParams","halfWidth","halfHeight","imageResolution","getRequestUrl_","getImageLoadFunction","srid","modifiedUrl","setImageLoadFunction","updateParams","ImageCanvasSource","canvasFunction_","canvasFunction","canvasElement","ImageMapGuide","displayDpi_","displayDpi","useOverlay_","useOverlay","dpi","mcsW","mcsH","devW","devH","mpp","baseParams","Static","imageExtent_","imageExtent","getImageExtent","targetWidth","GETFEATUREINFO_IMAGE_SIZE","ImageWMS","v13_","updateV13_","serverType_","getFeatureInfoUrl","projectionObj","sourceProjectionObj","getLegendUrl","LAYERS","mpu","viewExtent","requestExtent","WMSServerType","ATTRIBUTION","OSM","BaseImage","BaseImageLayer","LayerRenderer","boundHandleImageChange_","handleImageChange_","layer_","declutterExecutorGroup","loadedTileCallback","createLoadedTileFinder","getLayer","renderIfReadyAndVisible","loadImage","CanvasLayerRenderer","tempTransform","pixelTransform","containerReused","useContainer","layerClassName","transformOrigin","topLeft","topRight","bottomRight","bottomLeft","clipUnrotated","inverted","dispatchRenderEvent_","preRender","postRender","getRenderTransform","renderPixel","layerExtent","newCanvas","newContext","clearRect","CanvasImageLayerRenderer","imageLayer","viewResolution","imageSource","renderedExtent","imagePixelRatio","viewCenter","size_1","canvasTransform","clipped","dw","dh","previousAlpha","ImageLayer","BaseTile","BaseTileLayer","preload","useInterimTilesOnError","setPreload","setUseInterimTilesOnError","getPreload","TileProperty","getUseInterimTilesOnError","CanvasTileLayerRenderer","tileLayer","extentChanged","renderedExtent_","renderedPixelRatio","renderedProjection","renderedTiles","newTiles_","tmpExtent","tmpTileRange_","isDrawableTile","tileSource","sourceRevision","canvasExtent","tilesToDrawByZ","findLoadedTiles","tmpTileRange","childTileRange","canvasScale","clips","clipZs","currentClip","zs","currentZ","currentTilePixelSize","currentScale","dx_1","dy_1","originTileCoord","originTileExtent","origin_1","tileGutter","tilesToDraw","floatX","nextX","floatY","nextY","i_1","drawTileImage","updateUsedTiles","manageTilePyramid","scheduleExpireCache","getTileImage","tileAlpha","alphaChanged","postRenderFunction","opt_tileCallback","TileLayer","hasImageData","newImageData","imageData","createImageData","createMinion","operation","workerHasImageData","newWorkerImageData","buffers","meta","imageOps","numBuffers","numBytes","images","Uint8ClampedArray","arrays","pixels","createWorker","onMessage","lib","worker","Worker","Processor","threads","_imageOps","workers","_onWorkerMessage","minion","terminated","postMessage","terminate","createFauxWorker","_workers","_queue","_maxQueueLength","queue","_running","_dataLookup","_job","process","_enqueue","_dispatch","job","slices","_resolveJob","RasterEventType","RasterOperationType","RasterSourceEvent","RasterSource","processor_","operationType_","operationType","threads_","layers_","createLayer","createLayers","requestedFrameState_","renderedImageCanvas_","iMax","sourceOrLayer","sourceAttribution","setOperation","opt_lib","updateFrameState_","allSourcesReady_","ready","processSources_","imageDatas","onWorkerComplete_","sharedContext","layerOrSource","Raster","ATTRIBUTIONS","LayerConfig","ProviderConfig","Stamen","provider","providerConfig","layerConfig","TileArcGISRest","tmpExtent_","getKeyForParams_","tileExtent","LabeledTile","strokeRect","TileDebug","textTileCoord","TileJSON","tileJSON_","handleTileJSONResponse","handleTileJSONError","onXHRLoad_","onXHRError_","tileJSON","getTileJSON","epsg4326Projection","attributionExtent_1","TileWMS","preemptive","preemptive_","grid_","keys_","jsonp_","getData","xRelative","yRelative","row","forDataAtCoordinate","opt_request","loadInternal_","handleError_","json","UTFGrid","tileUrlFunction_","template_","getTemplate","forDataAtCoordinateAndResolution","grids","defaultLoadFunction","loadingTiles_","sourceTileCache","tileGrids_","sourceTile","tileFeatures","candidate","loadedZ","previousSourceTiles","sourceTileCoord","listenChange","sourceTileKey","errorTileCount","coordKey","empty","WMTS","requestEncoding","WMTSRequestEncoding","version_","dimensions_","dimensions","matrixSet_","requestEncoding_","getKeyForDimensions_","createFromWMTSTemplate","getDimensions","getMatrixSet","getRequestEncoding","getVersion","updateDimensions","WebGLWorkerMessageType","WebGLLayerRenderer","tmpArray_","bufferPositions_","vertexPosition","indexPosition","writePointVertex","colorEncodeId","radix","colorDecodeId","BaseVector","BaseVectorLayer","renderBuffer","updateWhileAnimating","updateWhileInteracting","declutter_","declutter","renderBuffer_","updateWhileAnimating_","updateWhileInteracting_","getDeclutter","getRenderBuffer","getRenderOrder","getUpdateWhileAnimating","getUpdateWhileInteracting","setRenderOrder","renderOrder","WebGLPointsLayerRenderer","projectionMatrixTransform","sourceRevision_","verticesBuffer_","hitVerticesBuffer_","indicesBuffer_","program_","hitDetectionEnabled_","hitFragmentShader","hitVertexShader","hitProgram_","customAttributes","hitDetectionAttributes","currentTransform_","renderTransform_","invertRenderTransform_","renderInstructions_","hitRenderInstructions_","hitRenderTarget_","worker_","received","projectionTransform","hitDetection","vertexBuffer","indexBuffer","renderInstructions","featureCache_","featureCount_","sourceListenKeys_","handleSourceFeatureAdded_","handleSourceFeatureChanged_","handleSourceFeatureDelete_","handleSourceFeatureClear_","renderCount","renderHitDetection","vectorSource","viewNotMoving","sourceChanged","rebuildBuffers_","featureCache","totalInstructionsCount","totalHitInstructionsCount","hitColor","tmpCoords","tmpColor","renderIndex","hitIndex","featureUid","customAttributesCount","hitMessage","Instruction","BEGIN_GEOMETRY","BEGIN_PATH","CLOSE_PATH","CUSTOM","DRAW_CHARS","DRAW_IMAGE","END_GEOMETRY","FILL","MOVE_TO_LINE_TO","SET_FILL_STYLE","SET_STROKE_STYLE","STROKE","beginPathInstruction","closePathInstruction","CanvasBuilder","maxLineWidth","beginGeometryInstruction1_","beginGeometryInstruction2_","bufferedMaxExtent_","instructions","tmpCoordinate_","hitDetectionInstructions","applyPixelRatio","dashArray","dash","appendFlatPointCoordinates","getBufferedMaxExtent","myEnd","appendFlatLineCoordinates","closed","skipFirst","lastRel","nextRel","lastXCoord","lastYCoord","nextCoord","skipped","drawCustomCoordinates_","builderEnds","builderEnd","beginGeometry","builderEndss","builderBegin","myEnds","endGeometry","reverseHitDetectionInstructions","instruction","createFill","fillInstruction","applyStroke","createStroke","updateFillStyle","currentFillStyle","updateStrokeStyle","currentStrokeStyle","currentLineCap","currentLineDash","currentLineDashOffset","currentLineJoin","currentLineWidth","currentMiterLimit","endGeometryInstruction","CanvasImageBuilder","imagePixelRatio_","anchorX_","anchorY_","height_","originX_","originY_","declutterImageWithText_","myBegin","opt_sharedData","hitDetectionImage","CanvasLineStringBuilder","drawFlatCoordinates_","moveToLineToInstruction","lastStroke","CanvasPolygonBuilder","drawFlatCoordinatess_","numEnds","setFillStrokeStyles_","circleInstruction","matchingChunk","m12","m23","x12","y12","x23","y23","chunkStart","chunkEnd","chunkM","TEXT_ALIGN","CanvasTextBuilder","labels_","fillStates","strokeStates","textStates","textKey_","fillKey_","strokeKey_","geometryWidths","saveTextStates_","p0","p3","pixelRatio_1","flatOffset","flatEnd","oo","drawChars_","strokeKey","textKey","fillKey","baseline","BATCH_CONSTRUCTORS","PolygonBuilder","Builder","ImageBuilder","LineStringBuilder","TextBuilder","BuilderGroup","tolerance_","maxExtent_","resolution_","buildersByZIndex_","builderInstructions","zKey","builders","builderKey","builderInstruction","builderType","zIndexKey","replays","replay","Constructor","drawTextOnPath","startM","measureAndCacheTextWidth","segmentM","advance","beginX","beginY","startOffset","startLength","endM","flat","previousAngle","singleSegment","previousAngle_1","iStart","charLength","chars","substring","lineStringLength","p4","getDeclutterBox","replayImageOrLabelArgs","declutterBox","rtlRegEx","horizontalTextAlign","align","Executor","alignFill_","coordinateCache_","renderedTransform_","widths_","createLabel","renderWidth","OffscreenCanvasRenderingContext2D","CanvasRenderingContext2D","leftRight","replayTextBackground_","strokeInstruction","setStrokeStyle_","calculateImageOrLabelDimensions_","sheetWidth","sheetHeight","snapToPixel","fillStroke","boxW","boxH","boxX","boxY","drawImageX","drawImageY","drawImageW","drawImageH","replayImageOrLabel_","contextScale","imageOrLabel","strokePadding","repeatSize","drawLabelWithPointPlacement_","execute_","opt_featureCallback","opt_hitExtent","opt_declutterTree","dd","prevX","prevY","roundX","roundY","currentGeometry","pendingFill","pendingStroke","lastFillInstruction","lastStrokeInstruction","coordinateCache","viewRotationFromTransform","batchSize","labelWithAnchor","widthIndex","imageArgs","imageDeclutterBox","measurePixelRatio","pixelRatioScale","cachedWidths","pathLength","textLength","drawChars","cc","ii_1","execute","executeHitDetection","ORDER","ExecutorGroup","allInstructions","opt_renderBuffer","executorsByZIndex_","hitDetectionContext_","hitDetectionTransform_","createExecutors_","flatClipCoords","getClipCoords","executors","instructionByZindex","hasExecutors","candidates","declutteredFeatures","contextSize","hitExtent","indexes","getPixelIndexArray","featureCallback","result_1","executor","opt_builderTypes","builderTypes","circlePixelIndexArrayCache","maxDistanceSq","distances","pixelIndex","createHitDetectionImageData","transforms","featureCount","indexFactor","featuresByZIndex","featureStyleFunction","originalStyle","canvas_1","imgContext","byGeometryType","zIndexKeys","geomAndStyle","kk","hitDetect","resultFeatures","CanvasVectorLayerRenderer","vectorLayer","boundHandleStyleImageChange_","handleStyleImageChange_","animatingOrInteracting_","dirty_","hitDetectionImageData_","renderedFeatures_","renderedResolution_","renderedRotation_","renderedCenter_","renderedProjection_","renderedRenderOrder_","replayGroup_","replayGroupChanged","clipping","renderWorlds","executorGroup","endWorld","world","Promise","animating","interacting","frameStateExtent","vectorLayerRevision","vectorLayerRenderBuffer","vectorLayerRenderOrder","loadExtents","loadExtent","declutterBuilderGroup","userExtent","replayGroupInstructions","CanvasVectorImageLayerRenderer","vectorRenderer_","layerImageRatio_","getImageRatio","coordinateToVectorPixelTransform_","renderedPixelToCoordinateTransform_","vectorPixel","vectorRenderer","imageFrameState_1","image_1","IMAGE_REPLAYS","VECTOR_REPLAYS","CanvasVectorTileLayerRenderer","renderedLayerRevision_","renderTileImageQueue_","tileListenerKeys_","tmpTransform_","prepareTile","tileUid","updateExecutorGroup_","tileImageNeedsRender_","listenerKey","getRenderMode","VectorTileRenderType","renderTileImage_","layerRevision","builderState","layerUid","tt","sourceTileExtent","sharedExtent","bufferedExtent","executorGroupInstructions","replayExtent","renderingReplayGroup","_loop_2","extent_1","tilePixel","getTileRenderTransform","worldOffset","renderQueuedTileImages_","renderMode","replayTypes","replayState","renderPixelRatio","renderScale","pixelScale","interpolatePoint","cumulativeLengths","lineStringCoordinateAtM","extrapolate","m0","lineStringsCoordinateAtM","RenderFeature","type_","flatCoordinates_","flatInteriorPoints_","flatMidpoints_","properties_","midpoint","flatMidpoint_","flatMidpointRevision_","appendCoordinate","lineString","forEachSegment","getCoordinateAtM","opt_extrapolate","getCoordinateAt","VectorLayer","geoM","fracA","fracB","fracM","geoA","geoB","geoStack","fractionStack","fractions","maxIterations","meridian","lon","frac","parallel","lon2","DEFAULT_STROKE_STYLE","INTERVALS","Graticule","maxLines","targetSize","showLabels","lonLabelFormatter","latLabelFormatter","lonLabelPosition","latLabelPosition","lonLabelStyle","latLabelStyle","intervals","maxLat_","maxLon_","minLat_","minLon_","maxX_","maxY_","minX_","minY_","targetSize_","maxLines_","meridians_","parallels_","strokeStyle_","fromLonLatTransform_","toLonLatTransform_","projectionCenterLonLat_","bottomLeft_","bottomRight_","topLeft_","topRight_","meridiansLabels_","parallelsLabels_","lonLabelFormatter_","latLabelFormatter_","lonLabelPosition_","latLabelPosition_","lonLabelStyleBase_","lonLabelStyle_","latLabelStyleBase_","latLabelStyle_","drawLabels_","intervals_","loaderFunction","strategyFunction","featurePool_","lineStyle_","loadedExtent_","realWorldExtent","renderExtent","updateProjectionInfo_","createGraticule_","featuresColl","poolIndex","addMeridian_","minLat","maxLat","getMeridian_","geom","addParallel_","minLon","maxLon","getParallel_","rotationCenter","rotationExtent","cr","sr","unrotatedWidth","unrotatedHeight","startWorld","labelsAtStart","vectorContext","textPoint","getMeridianPoint_","getParallelPoint_","getInterval_","validCenterP","centerLonLat","cnt","centerLon","centerLat","validExtentP","validExtent","clampedLat","clampedBottom","clampedTop","getMeridians","clampedLeft","clampedRight","getParallels","toLonLatTransform","split_1","lonLatCoordinates","worldExtentP","DEFAULT_GRADIENT","Heatmap","blur","gradient_","handleGradientChanged_","setGradient","setBlur","weightFunction_","getBlur","getGradient","colors","createLinearGradient","addColorStop","createGradient","u_size","u_blurSlope","u_gradientTexture","FeatureFormat","defaultFeatureProjection","getReadOptions","adaptOptions","readFeature","readGeometry","writeFeature","writeFeatures","writeGeometry","transformGeometryWithOptions","decimals","power_1","transformExtentWithOptions","MultiLineString","lineStrings","appendLineString","multiLineString","opt_interpolate","getLineString","getLineStrings","midpoints","MultiPoint","appendPoint","multiPoint","getPoint","MultiPolygon","endss_","flatInteriorPointsRevision_","appendPolygon","newEndss","multiPolygon","getInteriorPoints","getPolygon","prevEnds","getPolygons","lastEnds","layersPBFReader","layerPBFReader","featurePBFReader","readRawFeature","MVT","featureClass_","featureClass","geometryName","layerName_","layerName","idProperty_","idProperty","readRawGeometry_","cmd","coordsLen","currentEnd","cmdLen","createFeature_","rawFeature","getGeometryType","prevEndIndex","ctor","pbfLayers","pbfLayer","VectorTileLayer","renderMode_","defaultResolutions","createCanvas","hairSpacePool","applyLetterSpacing","letterSpacing","textWithLetterSpacing","joinSpaceString","ll","getMeasureContext","measureCache","renderFeatureCoordinates","emptyObj","zoomObj","functionCache","getValue","layoutOrPaint","functions","value_1","isExpr","compiledExpression","rawExpression","expressionData","filterCache","colorWithOpacity","templateRegEx","fromTemplate","recordLayer","glStyle","spriteImage","spriteImgSize","spriteImageUrl","img_1","olLayer","mapboxSource","allLayers","layersBySourceLayer","mapboxLayers","sourceLayer","source_1","textHalo","iconImageCache","patternCache","featureBelongsToLayer","stylesLength","layerData","evaluateFilter","strokeColor","fillIcon","icon_1","spriteData","pattern","icon_cache_key","spriteImageData","createPattern","width_1","hasImage","placementAngle","iconImg","skipLabel","styleGeom","iconRotationAlignment","iconSize","iconColor","circleRadius","circleStrokeColor","circleColor","circleStrokeWidth","cache_key","textSize","fontArray","textLineHeight","getFonts","textTransform","maxTextWidth","wrappedLabel","wrapText","em","hardLines","wrappedText","words","maxWidth","word","testLine","line_1","prevWidth","nextWidth","line_2","lineWords","lastWord","textAnchor","textHaloWidth","textOffset","textTranslate","vOffset","hOffset","textRotationAlignment","haloColor","halfTextSize","textPadding","cloneGeometries","clonedGeometries","GeometryCollection","opt_geometries","geometries_","changeEventsKeys_","listenGeometriesChange_","unlistenGeometriesChange_","geometryCollection","setGeometries","getGeometriesArrayRecursive","geometriesArray","simplifiedGeometries","simplified","simplifiedGeometryCollection","setGeometriesArray","getObject","JSONFeature","readFeatureFromObject","readFeaturesFromObject","readGeometryFromObject","readProjectionFromObject","writeFeatureObject","writeFeaturesObject","writeGeometryObject","readPointGeometry","readLineStringGeometry","readPolygonGeometry","readMultiPointGeometry","readMultiLineStringGeometry","readMultiPolygonGeometry","readGeometryCollectionGeometry","geoJSON","writePointGeometry","writeLineStringGeometry","rightHanded","writePolygonGeometry","writeMultiPointGeometry","writeMultiLineStringGeometry","writeMultiPolygonGeometry","writeGeometryCollectionGeometry","loadedFontFamilies","GeoJSON","extractGeometryName_","extractGeometryName","geoJSONFeature","geoJSONFeatures","crs","objects","fontFamilyRegEx","stripQuotesRegEx","hasFontFamily","styleSheets","styleSheet","cssRules","cssRule","cssText","processedFontFamilies","googleFamilies","fontsKey","googleFontDescriptions","googleFontDescription","fontUrl","querySelector","markup","spriteRegEx","withPath","toSpriteUrl","applyStyle","onChange","sizeFactor_1","spriteUrl_1","fetch","credentials","ok","statusText","spritesJson","getMapboxPath","normalizeSpriteUrl","mapboxPath","mapboxBaseUrl","normalizeGlyphsUrl","normalizeStyleUrl","normalizeSourceUrl","ErrorEvent","SourceType","MapboxVector","MapboxVectorLayer","sourceId","accessToken","fetchStyle","styleUrl","onStyleLoad","handleError","sourceIdOrLayersList","firstSource","styleSource","VectorImage","VectorImageLayer","imageRatio","imageRatio_","WebGLPoints","WebGLPointsLayer","parseResult_","hitDetectionDisabled_","disableHitDetection","DragAndDropEventType","DragAndDropEvent","file","DragAndDrop","readAsBuffer_","formats_","formatConstructors","dropListenKeys_","source_","handleResult_","tryReadFeatures_","registerListeners_","dropArea","handleDrop","handleStop","unregisterListeners_","files","dataTransfer","reader","FileReader","readAsArrayBuffer","readAsText","dropEffect","DragRotateAndZoom","lastMagnitude_","magnitude","angleDelta","Circle","setCenterAndRadius","getRadiusSquared_","DrawEventType","DrawEvent","Draw","shouldHandle_","downPx_","downTimeout_","lastDragTime_","pointerType_","freehand_","snapTolerance_","snapTolerance","getMode","stopClick_","stopClick","minPoints_","minPoints","maxPoints_","maxPoints","finishCondition_","finishCondition","Constructor_1","mode_1","squaredLength","dragVertexDelay_","dragVertexDelay","finishCoordinate_","sketchFeature_","sketchPoint_","sketchCoords_","sketchLine_","sketchLineCoords_","squaredClickTolerance_","clickTolerance","overlay_","freehandCondition_","freehand","freehandCondition","updateState_","getOverlay","move","addToDrawing_","startDrawing_","atFinish_","finishDrawing","abortDrawing","downPx","clickPx","modifyDrawing_","createOrUpdateSketchPoint_","potentiallyDone","potentiallyFinishCoordinates","sketchCoords","finishCoordinate","finishPixel","updateSketchFeatures_","createOrUpdateCustomSketchLine_","sketchLineGeom","removeLastPoint","sketchFeature","abortDrawing_","appendCoordinates","newDrawing","ending","sketchFeatures","overlaySource","ExtentEventType","ExtentEvent","getDefaultPointerStyleFunction","getPointHandler","fixedPoint","getEdgeHandler","fixedP1","fixedP2","Extent","pointerHandler_","pixelTolerance_","pixelTolerance","snappedToVertex_","extentFeature_","vertexFeature_","extentOverlay_","boxStyle","vertexOverlay_","pointerStyle","snapToVertex_","pixelCoordinate","getExtentInternal","segments","getSegments","closestSegment","vertex","vertexPixel","pixel1","pixel2","squaredDist1","squaredDist2","dist","createOrUpdatePointerFeature_","createOrUpdateExtentFeature_","extentFeature","vertexFeature","getOpposingPoint","x_","y_","tempExtent","tempSegment","ModifyEventType","ModifyEvent","compareIndexes","projectedDistanceToSegmentDataSquared","pointCoordinates","segmentData","distanceToCenterSquared","distanceToCircumference","closestOnSegmentData","Modify","boundHandleFeatureChange_","defaultDeleteCondition_","deleteCondition_","deleteCondition","insertVertexCondition_","insertVertexCondition","vertexSegments_","lastPixel_","ignoreNextSingleClick_","featuresBeingModified_","rBush_","changingFeature_","dragSegments_","SEGMENT_WRITERS_","writePointGeometry_","writeLineStringGeometry_","writePolygonGeometry_","writeMultiPointGeometry_","writeMultiLineStringGeometry_","writeMultiPolygonGeometry_","writeCircleGeometry_","writeGeometryCollectionGeometry_","hitDetection_","handleSourceAdd_","handleSourceRemove_","addFeature_","handleFeatureAdd_","handleFeatureRemove_","lastPointerEvent_","writer","handlePointerAtPixel_","willModifyFeatures_","removeFeature_","removeFeatureSegmentData_","rBush","nodesToRemove","nodeToRemove","depth","centerSegmentData","circumferenceSegmentData","featureSegments","geometry_1","createOrUpdateVertexFeature_","removePoint","dragSegment","setGeometryCoordinates_","insertVertices","vertexExtent","segmentDataMatches","componentSegments","segmentDataMatch","insertVertex_","opt_coordinate","nodes","hitPointGeometry","vertexSegments","geometryUid","rTree","updateSegmentIndices_","newSegmentData","newSegmentData2","removeVertex_","component","newIndex","dragSegments","segmentsByFeature","deleted","SelectEventType","SelectEvent","selected","deselected","originalFeatureStyles","Select","boundAddFeature_","boundRemoveFeature_","addCondition_","addCondition","removeCondition_","removeCondition","toggleCondition_","toggleCondition","multi_","multi","filter_","hitTolerance_","layers_1","layerFilter_","featureLayerAssociation_","addFeatureLayerAssociation_","getHitTolerance","setHitTolerance","restorePreviousStyle_","applySelectedStyle_","removeFeatureLayerAssociation_","getFeatureFromEvent","Snap","vertex_","edge_","featuresListenerKeys_","featureChangeListenerKeys_","indexedFeaturesExtents_","pendingFeatures_","opt_listen","feature_uid","segmentWriter","forEachFeatureAdd_","forEachFeatureRemove_","getFeatures_","snapTo","snapped","updateFeature_","featuresToUpdate","opt_unlisten","unregister","nodesToRemove_1","currentMap","closestSegmentData","projectedCoordinate","isCircle","TranslateEventType","TranslateEvent","startCoordinate","Translate","lastCoordinate_","startCoordinate_","lastFeature_","handleActiveChanged_","featuresAtPixel_","newCoordinate","deltaX_1","deltaY_1","oldMap","flipXY","opt_destOffset","destOffset","GEOMETRY_READERS","getGeometryLayout","paths","GEOMETRY_WRITERS","_a","_b","esriJSONPolygon","flatRing","outerRings","holes","hole","outerRing","convertRings","geometryReader","hasZ","hasM","getHasZM","geometryWriter","esriJSON","hasZM","EsriJSON","opt_idField","esriJSONFeature","esriJSONFeatures","objectIdFieldName","wkid","XMLFeature","readFeatureFromDocument","readFeatureFromNode","readFeaturesFromDocument","readFeaturesFromNode","ELEMENT_NODE","readGeometryFromDocument","readGeometryFromNode","readProjectionFromDocument","readProjectionFromNode","writeFeatureNode","serializeToString","writeFeaturesNode","writeGeometryNode","GMLNS","ONLY_WHITESPACE_RE","GMLBase","featureType","featureNS","srsName","schemaLocation","FEATURE_COLLECTION_PARSERS","namespace","readFeaturesInternal","ft","featureTypes","readFeatureElement","readGeometryElement","getAttribute","GEOMETRY_PARSERS","readFeatureElementInternal","asFeature","_content_","attName","fid","readPoint","readFlatCoordinatesFromNode","readMultiPoint","MULTIPOINT_PARSERS","readMultiLineString","MULTILINESTRING_PARSERS","readMultiPolygon","MULTIPOLYGON_PARSERS","pointMemberParser","POINTMEMBER_PARSERS","lineStringMemberParser","LINESTRINGMEMBER_PARSERS","polygonMemberParser","POLYGONMEMBER_PARSERS","readLineString","readFlatLinearRing","GEOMETRY_FLAT_COORDINATES_PARSERS","readLinearRing","readPolygon","flatLinearRings","FLAT_LINEAR_RINGS_PARSERS","RING_PARSERS","readBooleanString","readDateTime","dateTime","readDecimal","readDecimalString","readNonNegativeInteger","readNonNegativeIntegerString","writeBooleanTextNode","bool","writeStringTextNode","writeCDATASection","createCDATASection","writeDateTimeTextNode","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","writeDecimalTextNode","toPrecision","writeNonNegativeIntegerTextNode","nonNegativeInteger","MULTIGEOMETRY_TO_MEMBER_NODENAME","GML2","readFlatCoordinates","containerSrs","coordsGroups","readBox","BOX_PARSERS_","innerBoundaryIsParser","flatLinearRing","outerBoundaryIsParser","GEOMETRY_NODE_FACTORY_","multiSurface","surface","multiCurve","writeFeatureElement","writeGeometryElement","writeCurveOrLineString","createCoordinatesNode_","writeCoordinates_","writeCurveSegments_","writeLineStringOrCurveMember","writeMultiCurveOrLineString","LINESTRINGORCURVEMEMBER_SERIALIZERS","MULTIGEOMETRY_MEMBER_NODE_FACTORY_","GEOMETRY_SERIALIZERS","getCoords_","writeSurfaceOrPolygon","RING_SERIALIZERS","RING_NODE_FACTORY_","patches","writeSurfacePatches_","exteriorWritten","writeRing","writeLinearRing","opt_srsName","opt_hasZ","writePoint","writeMultiPoint","POINTMEMBER_SERIALIZERS","writePointMember","writeMultiSurfaceOrPolygon","SURFACEORPOLYGONMEMBER_SERIALIZERS","writeSurfaceOrPolygonMember","writeEnvelope","ENVELOPE_SERIALIZERS","GML3","surface_","curve_","multiCurve_","multiSurface_","readMultiCurve","MULTICURVE_PARSERS","readMultiSurface","MULTISURFACE_PARSERS","curveMemberParser","CURVEMEMBER_PARSERS","surfaceMemberParser","SURFACEMEMBER_PARSERS","readPatch","PATCHES_PARSERS","readSegment","SEGMENTS_PARSERS","readPolygonPatch","readLineStringSegment","interiorParser","exteriorParser","readSurface","SURFACE_PARSERS","readCurve","CURVE_PARSERS","readEnvelope","ENVELOPE_PARSERS","readFlatPos","readFlatPosList","contextDimension","dim","writePos_","srsDimension","writePosList_","posList","writeFeatureMembers_","setAttributeNS","GML","GML32","NAMESPACE_URIS","FEATURE_READER","readRte","readTrk","readWpt","GPX_PARSERS","LINK_PARSERS","GPX_SERIALIZERS","RTE_SEQUENCE","RTE_SERIALIZERS","TRK_SEQUENCE","TRK_SERIALIZERS","writeWptType","GPX","readExtensions_","readExtensions","handleReadExtensions_","extensionsNode","featureReader","gpx","GPX_NODE_FACTORY","RTE_PARSERS","parseLink","parseExtensions","RTEPT_PARSERS","rteValues","layoutOptions","TRK_PARSERS","TRKSEG_PARSERS","TRKPT_PARSERS","trkValues","WPT_PARSERS","LINK_SEQUENCE","LINK_SERIALIZERS","writeLink","RTEPT_TYPE_SEQUENCE","TRKSEG_SERIALIZERS","TRKSEG_NODE_FACTORY","WPT_TYPE_SEQUENCE","WPT_TYPE_SERIALIZERS","GEOMETRY_TYPE_TO_NODENAME","applyLayoutOptions","DEFAULT_COLOR","DEFAULT_IMAGE_STYLE_ANCHOR","DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS","DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS","DEFAULT_IMAGE_STYLE_SIZE","DEFAULT_IMAGE_STYLE_SRC","DEFAULT_IMAGE_SCALE_MULTIPLIER","TextFeature","readFeatureFromText","readFeaturesFromText","readGeometryFromText","readProjectionFromText","writeFeatureText","writeFeaturesText","writeGeometryText","IGCZ","B_RECORD_RE","H_RECORD_RE","HFDTE_RECORD_RE","NEWLINE_RE","IGC","altitudeMode_","altitudeMode","year","month","day","lastDateTime","hour","minute","second","UTC","GX_NAMESPACE_URIS","ICON_ANCHOR_UNITS_MAP","PLACEMARK_PARSERS","extendedDataParser","regionParser","readMultiGeometry","styleMapValue","readStyleMapValue","placemarkObject","readStyleURL","GX_MULTITRACK_GEOMETRY_PARSERS","readGxTrack","NETWORK_LINK_PARSERS","readURI","REGION_PARSERS","LAT_LON_ALT_BOX_PARSERS","regionObject","LOD_PARSERS","lodObject","KML_SEQUENCE","KML_SERIALIZERS","DOCUMENT_SERIALIZERS","DOCUMENT_NODE_FACTORY","writePlacemark","DEFAULT_FILL_STYLE","DEFAULT_NO_IMAGE_STYLE","DEFAULT_IMAGE_STYLE","DEFAULT_TEXT_STROKE_STYLE","DEFAULT_TEXT_STYLE","DEFAULT_STYLE","TEXTAREA","DEFAULT_STYLE_ARRAY","defaultIconUrlFunction","KML","defaultStyle_","defaultStyle","extractStyles_","extractStyles","writeStyles_","writeStyles","sharedStyles_","showPointNames_","showPointNames","iconUrlFunction_","iconUrlFunction","readDocumentOrFolder_","readPlacemark_","readSharedStyle_","readSharedStyleMap_","sharedStyles","drawName","multiGeometryPoints","featureStyle","findStyle","styleValue","nameStyle","foundStyle","createNameStyleFunction","createFeatureStyleFunction","styleUri","baseURI","fs","readName","readNameFromDocument","readNameFromNode","name_2","readNetworkLinks","networkLinks","readNetworkLinksFromDocument","readNetworkLinksFromNode","readRegion","regions","readRegionFromDocument","readRegionFromNode","kml","xmlnsUri","readColor","hexColor","readScale","STYLE_MAP_PARSERS","pairObject","PAIR_PARSERS","ICON_STYLE_PARSERS","iconObject","ICON_PARSERS","xunits","yunits","LABEL_STYLE_PARSERS","LINE_STYLE_PARSERS","POLY_STYLE_PARSERS","FLAT_LINEAR_RING_PARSERS","GX_TRACK_PARSERS","whens","when","gxTrackObject","EXTRUDE_AND_ALTITUDE_MODE_PARSERS","MULTI_GEOMETRY_PARSERS","multiGeometry","homogeneous","setCommonGeometryProperties","INNER_BOUNDARY_IS_PARSERS","OUTER_BOUNDARY_IS_PARSERS","STYLE_PARSERS","styleObject","IconObject","drawIcon","hotSpot","outline","hasExtrude","hasTessellate","hasAltitudeMode","extrudes","tessellates","altitudeModes","DATA_PARSERS","EXTENDED_DATA_PARSERS","featureObject","displayName","SCHEMA_DATA_PARSERS","writeColorTextNode","abgr","hex","EXTENDEDDATA_NODE_SERIALIZERS","pair","DATA_NODE_FACTORY","ICON_SEQUENCE","ICON_SERIALIZERS","GX_NODE_FACTORY","ICON_STYLE_SEQUENCE","ICON_STYLE_SERIALIZERS","vec2","writeScaleTextNode","LABEL_STYLE_SEQUENCE","LABEL_STYLE_SERIALIZERS","LINE_STYLE_SEQUENCE","LINE_STYLE_SERIALIZERS","GEOMETRY_NODE_FACTORY","POINT_NODE_FACTORY","LINE_STRING_NODE_FACTORY","LINEAR_RING_NODE_FACTORY","POLYGON_NODE_FACTORY","MULTI_GEOMETRY_SERIALIZERS","writePrimitiveGeometry","writePolygon","writeMultiGeometry","BOUNDARY_IS_SERIALIZERS","writeBoundaryIs","PLACEMARK_SERIALIZERS","namesAndValues","names","pointStyles","lineStyles","polyStyles","STYLE_SEQUENCE","STYLE_SERIALIZERS","PLACEMARK_SEQUENCE","EXTENDEDDATA_NODE_FACTORY","styleArray","PRIMITIVE_GEOMETRY_SEQUENCE","PRIMITIVE_GEOMETRY_SERIALIZERS","POLY_STYLE_SEQUENCE","POLYGON_SERIALIZERS","INNER_BOUNDARY_NODE_FACTORY","OUTER_BOUNDARY_NODE_FACTORY","POLY_STYLE_SERIALIZERS","iconProperties","WAY_PARSERS","ndrefs","readTag","PARSERS","tags","NODE_PARSERS","ways","OSMXML","XML","readFromDocument","readFromNode","readHref","SERVICE_IDENTIFICATION_PARSERS","SERVICE_PROVIDER_PARSERS","OPERATIONS_METADATA_PARSERS","OWS","owsObject","ADDRESS_PARSERS","ALLOWED_VALUES_PARSERS","CONSTRAINT_PARSERS","CONTACT_INFO_PARSERS","PHONE_PARSERS","DCP_PARSERS","HTTP_PARSERS","REQUEST_METHOD_PARSERS","OPERATION_PARSERS","SERVICE_CONTACT_PARSERS","encodeDeltas","numbers","opt_factor","factor","lastNumbers","encodeFloats","decodeDeltas","encoded","decodeFloats","encodeSignedIntegers","decodeSignedIntegers","encodeUnsignedIntegers","decodeUnsignedIntegers","encodeUnsignedInteger","current","Polyline","factor_","geometryLayout_","geometryLayout","TopoJSON","topoJSONTopology","arcs","transformArc","transformArcs","topoJSONFeatures","objectName","readFeaturesFromGeometryCollection","readFeatureFromGeometry","transformVertex","concatenateArcs","polyArray","ringCoords","indices","Filter","tagName_","getTagName","LogicalNary","And","Bbox","Spatial","Contains","DWithin","unit","Disjoint","propertyName","During","ComparisonBinary","opt_matchCase","matchCase","EqualTo","GreaterThanOrEqualTo","Intersects","IsBetween","lowerBoundary","upperBoundary","IsLike","opt_wildCard","opt_singleChar","opt_escapeChar","wildCard","singleChar","escapeChar","IsNull","LessThanOrEqualTo","Not","NotEqualTo","Or","ResourceId","rid","and","TRANSACTION_SUMMARY_PARSERS","TRANSACTION_RESPONSE_PARSERS","readTransactionSummary","readInsertResults","QUERY_SERIALIZERS","TRANSACTION_SERIALIZERS","writeUpdate","writeDelete","writeProperty","writeNative","XMLNS","OGCNS","WFSNS","FESNS","SCHEMA_LOCATIONS","GML_FORMATS","WFS","featureType_","featureNS_","gmlFormat_","gmlFormat","schemaLocation_","getFeatureType","setFeatureType","readTransactionResponse","readTransactionResponseFromDocument","readTransactionResponseFromNode","readFeatureCollectionMetadata","readFeatureCollectionMetadataFromDocument","readFeatureCollectionMetadataFromNode","writeGetFeature","handle","outputFormat","maxFeatures","resultType","viewParams","featurePrefix","propertyNames","combineBboxAndFilter","completeFilter","bboxFilter","writeTransaction","inserts","updates","deletes","baseObj","gmlOptions","request","gmlVersion","createTransactionRequest","serializeTransactionRequest","nativeElements","OGC_FID_PARSERS","fidParser","INSERT_RESULTS_PARSERS","writeOgcFidFilter","getTypeName","prefix","typeName","nativeElement","vendorId","safeToIgnore","GETFEATURE_SERIALIZERS","writeQuery","writeDuringFilter","writeLogicalFilter","writeNotFilter","writeBboxFilter","writeSpatialFilter","writeDWithinFilter","writeComparisonFilter","writeIsNullFilter","writeIsBetweenFilter","writeIsLikeFilter","typeNameAttr","getFilterNS","writeFilterCondition","writePropertyName","writeExpression","timePeriod","writeTimeInstant","writeLiteral","timeInstant","timePosition","GeometryConstructor","TokenType","WKTGeometryType","Lexer","wkt","index_","isAlpha_","isNumeric_","opt_decimal","isWhiteSpace_","nextChar_","nextToken","readNumber_","readText_","scientificNotation","lexer_","token_","layout_","consume_","isTokenType","isMatch","parseGeometry_","parseGeometryLayout_","dimToken","dimInfo","parseGeometryCollectionText_","isEmptyGeometry_","formatErrorMessage_","parsePointText_","parsePoint_","parseLineStringText_","parsePointList_","parsePolygonText_","parseLineStringTextList_","parseMultiPointText_","parsePointTextList_","parseMultiLineStringText_","parseMultiPolygonText_","parsePolygonTextList_","geomType","WKT","splitCollection_","splitCollection","parse_","encodePointGeometry","encodeLineStringGeometry","encodePolygonGeometry","GeometryEncoder","components","geoms","enc","geometryEncoder","encodeGeometryLayout","SERVICE_PARSERS","CAPABILITY_PARSERS","REQUEST_PARSERS","EXCEPTION_PARSERS","layerObject","LAYER_PARSERS","readLayer","WMSCapabilities","wmsCapabilityObject","readKeywordList","CONTACT_INFORMATION_PARSERS","CONTACT_PERSON_PARSERS","CONTACT_ADDRESS_PARSERS","geographicBoundingBox","EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS","westBoundLongitude","southBoundLatitude","eastBoundLongitude","northBoundLatitude","ATTRIBUTION_PARSERS","authorityObject","readFormatOnlineresource","metadataObject","readSizedFormatOnlineresource","readOperationType","OPERATIONTYPE_PARSERS","DCPTYPE_PARSERS","FORMAT_ONLINERESOURCE_PARSERS","KEYWORDLIST_PARSERS","parentLayerObject","queryable","cascaded","noSubsets","fixedWidth","fixedHeight","childValue","parentValue","formatOnlineresource","WMSGetFeatureInfo","readFeatures_","layerElement","layerFeatures","gmlFeatures","CONTENTS_PARSERS","WMTSCapabilities","owsParser_","WMTSCapabilityObject","TMS_PARSERS","isDefault","TMS_LINKS_PARSERS","DIMENSION_PARSERS","resourceType","WGS84_BBOX_READERS","legend","TMS_LIMITS_LIST_PARSERS","TMS_LIMITS_PARSERS","readCoordinates","TM_PARSERS","events","FullScreenEventType","isFullScreenSupported","requestFullscreen","fullscreenEnabled","isFullScreen","fullscreenElement","requestFullScreen","FullScreen","cssClassName_","activeClassName_","activeClassName","inactiveClassName_","inactiveClassName","labelNode_","labelActive","labelActiveNode_","button_","setClassName_","handleFullScreen_","exitFullscreen","requestFullScreenWithKeys","handleFullScreenChange_","fullscreen","_c","nextClassName","MousePosition","coordinateFormat","setCoordinateFormat","undefinedHTML_","undefinedHTML","renderOnMouseOut_","renderedHTML_","mapProjection_","getCoordinateFormat","handleMouseMove","updateHTML_","handleMouseOut","html","ControlledMap","OverviewMap","boundHandleRotationChanged_","handleRotationChanged_","viewExtent_","ovmapDiv_","view_","ovmap_","ovmap","boxSizing","boxOverlay_","overlayBox","mousePosition","endMoving","oldView","unbindView_","handleMapPropertyChange_","bindView_","resetExtent_","newView","validateExtent_","ovmapSize","ovextent","topLeftPixel","bottomRightPixel","boxWidth","boxHeight","ovmapWidth","ovmapHeight","recenter_","ovview","MAX_RATIO","updateBox_","ovresolution","getOverviewMap","LEADING_DIGITS","ScaleLine","bar","innerElement_","viewState_","minWidth_","minWidth","renderedWidth_","handleUnitsChanged_","setUnits","scaleBar_","scaleBarSteps_","scaleBarText_","dpi_","setDpi","pointResolutionUnits","nominalCount","suffix","metersPerDegree","decimalCount","createScaleBar","mapScale","getScaleForResolution","scaleSteps","stepWidth","backgroundColor","createMarker","createStepText","isLast","lengthString","Direction","ZoomSlider","currentResolution_","direction_","heightLimit_","widthLimit_","startX_","startY_","thumbSize_","sliderInitialized_","thumbElement","containerElement","handleDraggerStart_","handleDraggerDrag_","handleDraggerEnd_","handleContainerClick_","initSlider_","containerWidth","containerHeight","thumb","thumbWidth","thumbHeight","relativePosition","getRelativePosition_","getResolutionForPosition_","drag","setThumbPosition_","getPositionForResolution_","ZoomToExtent","handleZoomToExtent","ol","stableSort","compareFnc","asserts","centerconstraint","colorlike","createStringXY","toStringHDMS","css","CLASS_COLLAPSED","CLASS_CONTROL","CLASS_HIDDEN","CLASS_SELECTABLE","CLASS_UNSUPPORTED","dom","outerHeight","outerWidth","upAndDown","click","doubleClick","focus","penOnly","pointerEvt","platformModifierKeyOnly","pointerMove","touchOnly","createOrUpdateFromRings","getEnlargedArea","getIntersectionArea","getMargin","featureloader","setWithCredentials","xhrWithCredentials","getDefaultFillStyle","getDefaultImageStyle","getDefaultStrokeStyle","getDefaultStyle","getDefaultStyleArray","getDefaultTextStyle","writeFilter","XLink","between","disjoint","during","dwithin","equalTo","greaterThan","greaterThanOrEqualTo","isNull","lessThan","lessThanOrEqualTo","like","not","notEqualTo","or","resourceId","xsd","closest","deflate","flip","geodesic","greatCircleArc","geoProjection","cosLat1","sinLat1","cosLat2","sinLat2","cosDeltaLon","sinDeltaLon","D","cosD","sinD","inflate","interiorpoint","intersectsextent","linearRingLength","perimeter","orient","douglasPeuckerMultiArray","simplifyLineString","highQuality","opt_simplifiedFlatCoordinates","straightchunk","textpath","topology","lineStringIsClosed","lastCoord","createBox","opt_geometry","boxCoordinates","createRegularPolygon","Group","loadingstrategy","math","net","clearAllProjections","clearUserProjection","epsg3857","RADIUS","epsg4326","proj4","projCodes","defs","def","projName","axis","to_meter","code1","proj1","code2","proj2","def1","def2","toLonLat","lonLat","transformWithProjections","useGeographic","Box","Immediate","defaultFillStyle","defaultFont","defaultLineCap","defaultLineDashOffset","defaultLineJoin","defaultLineWidth","defaultMiterLimit","defaultStrokeStyle","defaultTextAlign","defaultTextBaseline","hitdetect","getRenderPixel","toContext","webgl","getBlankImageData","writePointFeatureToBuffers","elementIndex","bufferPositions","customAttrs","vPos","iPos","baseIndex","PointsLayer","reproj","common","ENABLE_RASTER_REPROJECTION","ERROR_THRESHOLD","resolutionconstraint","rotationconstraint","ImageStatic","optionsFromCapabilities","wmtsCap","tileMatrixSets","supportedCRS","matrixSetObj","projConfig","matrix","TileMatrix","selectedMatrixLimit","MinTileCol","MinTileRow","MaxTileCol","MatrixWidth","MaxTileRow","MatrixHeight","tileMatrixValue","Identifier","ScaleDenominator","TopLeftCorner","tileSpanX","TileWidth","tileSpanY","TileHeight","gets","encodings","DEFAULT_WMS_VERSION","sphere","DEFAULT_RADIUS","structs","DROP","LiteralStyle","tilecoord","DEFAULT_MAX_ZOOM","DEFAULT_TILE_SIZE","tileurlfunction","createFromTemplate","composeCssTransform","invert","reset","VERSION","abstract","vec","DYNAMIC_DRAW","ELEMENT_ARRAY_BUFFER","Helper","PostProcessingPass","RenderTarget","STREAM_DRAW","registerDocument","registerXMLSerializer","xmlSerializer"],"mappings":"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","file":"ol.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ol\"] = factory();\n\telse\n\t\troot[\"ol\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","var $version = 8;\nvar $root = {\n\tversion: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: [\n\t\t\t8\n\t\t],\n\t\tdoc: \"Style specification version number. Must be 8.\",\n\t\texample: 8\n\t},\n\tname: {\n\t\ttype: \"string\",\n\t\tdoc: \"A human-readable name for the style.\",\n\t\texample: \"Bright\"\n\t},\n\tmetadata: {\n\t\ttype: \"*\",\n\t\tdoc: \"Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.\"\n\t},\n\tcenter: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tdoc: \"Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n\t\texample: [\n\t\t\t-73.9749,\n\t\t\t40.7736\n\t\t]\n\t},\n\tzoom: {\n\t\ttype: \"number\",\n\t\tdoc: \"Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n\t\texample: 12.5\n\t},\n\tbearing: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\tdoc: \"Default bearing, in degrees. The bearing is the compass direction that is \\\"up\\\"; for example, a bearing of 90° orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n\t\texample: 29\n\t},\n\tpitch: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"degrees\",\n\t\tdoc: \"Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).\",\n\t\texample: 50\n\t},\n\tlight: {\n\t\ttype: \"light\",\n\t\tdoc: \"The global light source.\",\n\t\texample: {\n\t\t\tanchor: \"viewport\",\n\t\t\tcolor: \"white\",\n\t\t\tintensity: 0.4\n\t\t}\n\t},\n\tterrain: {\n\t\ttype: \"terrain\",\n\t\tdoc: \"A global modifier that elevates layers and markers based on a DEM data source.\"\n\t},\n\tsources: {\n\t\trequired: true,\n\t\ttype: \"sources\",\n\t\tdoc: \"Data source specifications.\",\n\t\texample: {\n\t\t\t\"mapbox-streets\": {\n\t\t\t\ttype: \"vector\",\n\t\t\t\turl: \"mapbox://mapbox.mapbox-streets-v6\"\n\t\t\t}\n\t\t}\n\t},\n\tsprite: {\n\t\ttype: \"string\",\n\t\tdoc: \"A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).\",\n\t\texample: \"mapbox://sprites/mapbox/bright-v8\"\n\t},\n\tglyphs: {\n\t\ttype: \"string\",\n\t\tdoc: \"A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).\",\n\t\texample: \"mapbox://fonts/mapbox/{fontstack}/{range}.pbf\"\n\t},\n\ttransition: {\n\t\ttype: \"transition\",\n\t\tdoc: \"A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.\",\n\t\texample: {\n\t\t\tduration: 300,\n\t\t\tdelay: 0\n\t\t}\n\t},\n\tlayers: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"layer\",\n\t\tdoc: \"Layers will be drawn in the order of this array.\",\n\t\texample: [\n\t\t\t{\n\t\t\t\tid: \"water\",\n\t\t\t\tsource: \"mapbox-streets\",\n\t\t\t\t\"source-layer\": \"water\",\n\t\t\t\ttype: \"fill\",\n\t\t\t\tpaint: {\n\t\t\t\t\t\"fill-color\": \"#00ffff\"\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t}\n};\nvar sources = {\n\t\"*\": {\n\t\ttype: \"source\",\n\t\tdoc: \"Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided.\"\n\t}\n};\nvar source = [\n\t\"source_vector\",\n\t\"source_raster\",\n\t\"source_raster_dem\",\n\t\"source_geojson\",\n\t\"source_video\",\n\t\"source_image\"\n];\nvar source_vector = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvector: {\n\t\t\t\tdoc: \"A vector tile source.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The type of the source.\"\n\t},\n\turl: {\n\t\ttype: \"string\",\n\t\tdoc: \"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\tdoc: \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t],\n\t\tdoc: \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.\"\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t\tdoc: \"Slippy map tilenames scheme.\"\n\t\t\t},\n\t\t\ttms: {\n\t\t\t\tdoc: \"OSGeo spec scheme.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\",\n\t\tdoc: \"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tdoc: \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22,\n\t\tdoc: \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n\t},\n\tattribution: {\n\t\ttype: \"string\",\n\t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\",\n\t\tdoc: \"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`. If specified as a string for a vector tile source, the same property is used across all its source layers.\"\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"A setting to determine whether a source's tiles are cached locally.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tandroid: \"9.3.0\",\n\t\t\t\tios: \"5.10.0\"\n\t\t\t}\n\t\t}\n\t},\n\t\"*\": {\n\t\ttype: \"*\",\n\t\tdoc: \"Other keys to configure the data source.\"\n\t}\n};\nvar source_raster = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\traster: {\n\t\t\t\tdoc: \"A raster tile source.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The type of the source.\"\n\t},\n\turl: {\n\t\ttype: \"string\",\n\t\tdoc: \"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\tdoc: \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t],\n\t\tdoc: \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tdoc: \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22,\n\t\tdoc: \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The minimum visual size to display tiles for this layer. Only configurable for raster layers.\"\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t\tdoc: \"Slippy map tilenames scheme.\"\n\t\t\t},\n\t\t\ttms: {\n\t\t\t\tdoc: \"OSGeo spec scheme.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\",\n\t\tdoc: \"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed.\"\n\t},\n\tattribution: {\n\t\ttype: \"string\",\n\t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"A setting to determine whether a source's tiles are cached locally.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tandroid: \"9.3.0\",\n\t\t\t\tios: \"5.10.0\"\n\t\t\t}\n\t\t}\n\t},\n\t\"*\": {\n\t\ttype: \"*\",\n\t\tdoc: \"Other keys to configure the data source.\"\n\t}\n};\nvar source_raster_dem = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\t\"raster-dem\": {\n\t\t\t\tdoc: \"A RGB-encoded raster DEM source\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The type of the source.\"\n\t},\n\turl: {\n\t\ttype: \"string\",\n\t\tdoc: \"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`.\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\tdoc: \"An array of one or more tile source URLs, as in the TileJSON spec.\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t],\n\t\tdoc: \"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL.\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tdoc: \"Minimum zoom level for which tiles are available, as in the TileJSON spec.\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22,\n\t\tdoc: \"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels.\"\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The minimum visual size to display tiles for this layer. Only configurable for raster layers.\"\n\t},\n\tattribution: {\n\t\ttype: \"string\",\n\t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n\t},\n\tencoding: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tterrarium: {\n\t\t\t\tdoc: \"Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info.\"\n\t\t\t},\n\t\t\tmapbox: {\n\t\t\t\tdoc: \"Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"mapbox\",\n\t\tdoc: \"The encoding used by this source. Mapbox Terrain RGB is used by default\"\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"A setting to determine whether a source's tiles are cached locally.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tandroid: \"9.3.0\",\n\t\t\t\tios: \"5.10.0\"\n\t\t\t}\n\t\t}\n\t},\n\t\"*\": {\n\t\ttype: \"*\",\n\t\tdoc: \"Other keys to configure the data source.\"\n\t}\n};\nvar source_geojson = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tgeojson: {\n\t\t\t\tdoc: \"A GeoJSON data source.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The data type of the GeoJSON source.\"\n\t},\n\tdata: {\n\t\ttype: \"*\",\n\t\tdoc: \"A URL to a GeoJSON file, or inline GeoJSON.\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 18,\n\t\tdoc: \"Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels).\"\n\t},\n\tattribution: {\n\t\ttype: \"string\",\n\t\tdoc: \"Contains an attribution to be displayed when the map is shown to a user.\"\n\t},\n\tbuffer: {\n\t\ttype: \"number\",\n\t\t\"default\": 128,\n\t\tmaximum: 512,\n\t\tminimum: 0,\n\t\tdoc: \"Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance.\"\n\t},\n\tfilter: {\n\t\ttype: \"*\",\n\t\tdoc: \"An expression for filtering features prior to processing them for rendering.\"\n\t},\n\ttolerance: {\n\t\ttype: \"number\",\n\t\t\"default\": 0.375,\n\t\tdoc: \"Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance).\"\n\t},\n\tcluster: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\\n * `cluster` Is `true` if the point is a cluster \\n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\\n * `point_count` Number of original points grouped into this cluster\\n * `point_count_abbreviated` An abbreviated point count\"\n\t},\n\tclusterRadius: {\n\t\ttype: \"number\",\n\t\t\"default\": 50,\n\t\tminimum: 0,\n\t\tdoc: \"Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile.\"\n\t},\n\tclusterMaxZoom: {\n\t\ttype: \"number\",\n\t\tdoc: \"Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered). Clusters are re-evaluated at integer zoom levels so setting clusterMaxZoom to 14 means the clusters will be displayed until z15.\"\n\t},\n\tclusterMinPoints: {\n\t\ttype: \"number\",\n\t\tdoc: \"Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`.\"\n\t},\n\tclusterProperties: {\n\t\ttype: \"*\",\n\t\tdoc: \"An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{\\\"property_name\\\": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `\\\"+\\\"` or `\\\"max\\\"`) — it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\\n\\nExample: `{\\\"sum\\\": [\\\"+\\\", [\\\"get\\\", \\\"scalerank\\\"]]}`.\\n\\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `[\\\"accumulated\\\"]` value, e.g.:\\n`{\\\"sum\\\": [[\\\"+\\\", [\\\"accumulated\\\"], [\\\"get\\\", \\\"sum\\\"]], [\\\"get\\\", \\\"scalerank\\\"]]}`\"\n\t},\n\tlineMetrics: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values.\"\n\t},\n\tgenerateId: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values.\"\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\",\n\t\tdoc: \"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`.\"\n\t}\n};\nvar source_video = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvideo: {\n\t\t\t\tdoc: \"A video data source.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The data type of the video source.\"\n\t},\n\turls: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\tdoc: \"URLs to video content in order of preferred format.\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\tdoc: \"Corners of video specified in longitude, latitude pairs.\",\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\",\n\t\t\tdoc: \"A single longitude, latitude pair.\"\n\t\t}\n\t}\n};\nvar source_image = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\timage: {\n\t\t\t\tdoc: \"An image data source.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The data type of the image source.\"\n\t},\n\turl: {\n\t\trequired: true,\n\t\ttype: \"string\",\n\t\tdoc: \"URL that points to an image.\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\tdoc: \"Corners of image specified in longitude, latitude pairs.\",\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\",\n\t\t\tdoc: \"A single longitude, latitude pair.\"\n\t\t}\n\t}\n};\nvar layer = {\n\tid: {\n\t\ttype: \"string\",\n\t\tdoc: \"Unique layer name.\",\n\t\trequired: true\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tfill: {\n\t\t\t\tdoc: \"A filled polygon with an optional stroked border.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.10.0\",\n\t\t\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\t\t\tios: \"2.0.0\",\n\t\t\t\t\t\tmacos: \"0.1.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tline: {\n\t\t\t\tdoc: \"A stroked line.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.10.0\",\n\t\t\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\t\t\tios: \"2.0.0\",\n\t\t\t\t\t\tmacos: \"0.1.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tsymbol: {\n\t\t\t\tdoc: \"An icon or a text label.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.10.0\",\n\t\t\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\t\t\tios: \"2.0.0\",\n\t\t\t\t\t\tmacos: \"0.1.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tcircle: {\n\t\t\t\tdoc: \"A filled circle.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.10.0\",\n\t\t\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\t\t\tios: \"2.0.0\",\n\t\t\t\t\t\tmacos: \"0.1.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\theatmap: {\n\t\t\t\tdoc: \"A heatmap.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"fill-extrusion\": {\n\t\t\t\tdoc: \"An extruded (3D) polygon.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.27.0\",\n\t\t\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\t\t\tios: \"3.6.0\",\n\t\t\t\t\t\tmacos: \"0.5.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\traster: {\n\t\t\t\tdoc: \"Raster map textures such as satellite imagery.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.10.0\",\n\t\t\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\t\t\tios: \"2.0.0\",\n\t\t\t\t\t\tmacos: \"0.1.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\thillshade: {\n\t\t\t\tdoc: \"Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.43.0\",\n\t\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tbackground: {\n\t\t\t\tdoc: \"The background color or pattern of the map.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"0.10.0\",\n\t\t\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\t\t\tios: \"2.0.0\",\n\t\t\t\t\t\tmacos: \"0.1.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tsky: {\n\t\t\t\tdoc: \"A spherical dome around the map that is always rendered behind all other layers.\",\n\t\t\t\t\"sdk-support\": {\n\t\t\t\t\t\"basic functionality\": {\n\t\t\t\t\t\tjs: \"2.0.0\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdoc: \"Rendering type of this layer.\",\n\t\trequired: true\n\t},\n\tmetadata: {\n\t\ttype: \"*\",\n\t\tdoc: \"Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'.\"\n\t},\n\tsource: {\n\t\ttype: \"string\",\n\t\tdoc: \"Name of a source description to be used for this layer. Required for all layer types except `background`.\"\n\t},\n\t\"source-layer\": {\n\t\ttype: \"string\",\n\t\tdoc: \"Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources.\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24,\n\t\tdoc: \"The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden.\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24,\n\t\tdoc: \"The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden.\"\n\t},\n\tfilter: {\n\t\ttype: \"filter\",\n\t\tdoc: \"A expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `feature-state` expression is not supported in filter expressions.\"\n\t},\n\tlayout: {\n\t\ttype: \"layout\",\n\t\tdoc: \"Layout properties for the layer.\"\n\t},\n\tpaint: {\n\t\ttype: \"paint\",\n\t\tdoc: \"Default paint properties for this layer.\"\n\t}\n};\nvar layout = [\n\t\"layout_fill\",\n\t\"layout_line\",\n\t\"layout_circle\",\n\t\"layout_heatmap\",\n\t\"layout_fill-extrusion\",\n\t\"layout_symbol\",\n\t\"layout_raster\",\n\t\"layout_hillshade\",\n\t\"layout_background\",\n\t\"layout_sky\"\n];\nvar layout_background = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_sky = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_fill = {\n\t\"fill-sort-key\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"1.2.0\",\n\t\t\t\tandroid: \"9.1.0\",\n\t\t\t\tios: \"5.8.0\",\n\t\t\t\tmacos: \"0.15.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"1.2.0\",\n\t\t\t\tandroid: \"9.1.0\",\n\t\t\t\tios: \"5.8.0\",\n\t\t\t\tmacos: \"0.15.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_circle = {\n\t\"circle-sort-key\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"1.2.0\",\n\t\t\t\tandroid: \"9.2.0\",\n\t\t\t\tios: \"5.9.0\",\n\t\t\t\tmacos: \"0.16.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"1.2.0\",\n\t\t\t\tandroid: \"9.2.0\",\n\t\t\t\tios: \"5.9.0\",\n\t\t\t\tmacos: \"0.16.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_heatmap = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.41.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_line = {\n\t\"line-cap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbutt: {\n\t\t\t\tdoc: \"A cap with a squared-off end which is drawn to the exact endpoint of the line.\"\n\t\t\t},\n\t\t\tround: {\n\t\t\t\tdoc: \"A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.\"\n\t\t\t},\n\t\t\tsquare: {\n\t\t\t\tdoc: \"A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"butt\",\n\t\tdoc: \"The display of line endings.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-join\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbevel: {\n\t\t\t\tdoc: \"A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width.\"\n\t\t\t},\n\t\t\tround: {\n\t\t\t\tdoc: \"A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line.\"\n\t\t\t},\n\t\t\tmiter: {\n\t\t\t\tdoc: \"A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"miter\",\n\t\tdoc: \"The display of lines when joining.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.40.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-miter-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\tdoc: \"Used to automatically convert miter joins to bevel joins for sharp angles.\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"miter\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-round-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.05,\n\t\tdoc: \"Used to automatically convert round joins to miter joins for shallow angles.\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"round\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-sort-key\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"1.2.0\",\n\t\t\t\tandroid: \"9.1.0\",\n\t\t\t\tios: \"5.8.0\",\n\t\t\t\tmacos: \"0.15.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"1.2.0\",\n\t\t\t\tandroid: \"9.1.0\",\n\t\t\t\tios: \"5.8.0\",\n\t\t\t\tmacos: \"0.15.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_symbol = {\n\t\"symbol-placement\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tpoint: {\n\t\t\t\tdoc: \"The label is placed at the point where the geometry is located.\"\n\t\t\t},\n\t\t\tline: {\n\t\t\t\tdoc: \"The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries.\"\n\t\t\t},\n\t\t\t\"line-center\": {\n\t\t\t\tdoc: \"The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"point\",\n\t\tdoc: \"Label placement relative to its geometry.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"`line-center` value\": {\n\t\t\t\tjs: \"0.47.0\",\n\t\t\t\tandroid: \"6.4.0\",\n\t\t\t\tios: \"4.3.0\",\n\t\t\t\tmacos: \"0.10.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 250,\n\t\tminimum: 1,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Distance between two symbol anchors.\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"symbol-placement\": \"line\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-avoid-edges\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-sort-key\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first. When `icon-allow-overlap` or `text-allow-overlap` is `false`, features with a lower sort key will have priority during placement. When `icon-allow-overlap` or `text-allow-overlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.53.0\",\n\t\t\t\tandroid: \"7.4.0\",\n\t\t\t\tios: \"4.11.0\",\n\t\t\t\tmacos: \"0.14.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.53.0\",\n\t\t\t\tandroid: \"7.4.0\",\n\t\t\t\tios: \"4.11.0\",\n\t\t\t\tmacos: \"0.14.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"symbol-z-order\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t\tdoc: \"Sorts symbols by `symbol-sort-key` if set. Otherwise, sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`.\"\n\t\t\t},\n\t\t\t\"viewport-y\": {\n\t\t\t\tdoc: \"Sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`.\"\n\t\t\t},\n\t\t\tsource: {\n\t\t\t\tdoc: \"Sorts symbols by `symbol-sort-key` if set. Otherwise, no sorting is applied; symbols are rendered in the same order as the source data.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\tdoc: \"Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their y-position relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbol-sort-key`.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.49.0\",\n\t\t\t\tandroid: \"6.6.0\",\n\t\t\t\tios: \"4.5.0\",\n\t\t\t\tmacos: \"0.12.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, the icon will be visible even if it collides with other previously drawn symbols.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, other symbols can be visible even if they collide with the icon.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.\"\n\t\t\t},\n\t\t\tauto: {\n\t\t\t\tdoc: \"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\tdoc: \"In combination with `symbol-placement`, determines the rotation behavior of icons.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"`auto` value\": {\n\t\t\t\tjs: \"0.25.0\",\n\t\t\t\tandroid: \"4.2.0\",\n\t\t\t\tios: \"3.4.0\",\n\t\t\t\tmacos: \"0.3.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tunits: \"factor of the original icon size\",\n\t\tdoc: \"Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.35.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-text-fit\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t\tdoc: \"The icon is displayed at its intrinsic aspect ratio.\"\n\t\t\t},\n\t\t\twidth: {\n\t\t\t\tdoc: \"The icon is scaled in the x-dimension to fit the width of the text.\"\n\t\t\t},\n\t\t\theight: {\n\t\t\t\tdoc: \"The icon is scaled in the y-dimension to fit the height of the text.\"\n\t\t\t},\n\t\t\tboth: {\n\t\t\t\tdoc: \"The icon is scaled in both x- and y-dimensions.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\tdoc: \"Scales the icon to fit around the associated text.\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.21.0\",\n\t\t\t\tandroid: \"4.2.0\",\n\t\t\t\tios: \"3.4.0\",\n\t\t\t\tmacos: \"0.2.1\"\n\t\t\t},\n\t\t\t\"stretchable icons\": {\n\t\t\t\tjs: \"1.6.0\",\n\t\t\t\tandroid: \"9.2.0\",\n\t\t\t\tios: \"5.8.0\",\n\t\t\t\tmacos: \"0.15.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-text-fit-padding\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tunits: \"pixels\",\n\t\tdoc: \"Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"icon-text-fit\": [\n\t\t\t\t\t\"both\",\n\t\t\t\t\t\"width\",\n\t\t\t\t\t\"height\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.21.0\",\n\t\t\t\tandroid: \"4.2.0\",\n\t\t\t\tios: \"3.4.0\",\n\t\t\t\tmacos: \"0.2.1\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-image\": {\n\t\ttype: \"resolvedImage\",\n\t\tdoc: \"Name of image in sprite to use for drawing an image background.\",\n\t\ttokens: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.35.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\tdoc: \"Rotates the icon clockwise.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.21.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-padding\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Size of the additional area around the icon bounding box used for detecting symbol collisions.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, the icon may be flipped to prevent it from being rendered upside-down.\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t{\n\t\t\t\t\"icon-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-offset\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tdoc: \"Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t\tdoc: \"The center of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\tdoc: \"The left side of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tright: {\n\t\t\t\tdoc: \"The right side of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\tdoc: \"The top of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t\tdoc: \"The bottom of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t\tdoc: \"The top left corner of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t\tdoc: \"The top right corner of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t\tdoc: \"The bottom left corner of the icon is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t\tdoc: \"The bottom right corner of the icon is placed closest to the anchor.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\tdoc: \"Part of the icon placed closest to the anchor.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.40.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.40.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The icon is aligned to the plane of the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The icon is aligned to the plane of the viewport.\"\n\t\t\t},\n\t\t\tauto: {\n\t\t\t\tdoc: \"Automatically matches the value of `icon-rotation-alignment`.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\tdoc: \"Orientation of icon when map is pitched.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.39.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The text is aligned to the plane of the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The text is aligned to the plane of the viewport.\"\n\t\t\t},\n\t\t\tauto: {\n\t\t\t\tdoc: \"Automatically matches the value of `text-rotation-alignment`.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\tdoc: \"Orientation of text when map is pitched.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.21.0\",\n\t\t\t\tandroid: \"4.2.0\",\n\t\t\t\tios: \"3.4.0\",\n\t\t\t\tmacos: \"0.2.1\"\n\t\t\t},\n\t\t\t\"`auto` value\": {\n\t\t\t\tjs: \"0.25.0\",\n\t\t\t\tandroid: \"4.2.0\",\n\t\t\t\tios: \"3.4.0\",\n\t\t\t\tmacos: \"0.3.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`.\"\n\t\t\t},\n\t\t\tauto: {\n\t\t\t\tdoc: \"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\tdoc: \"In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"`auto` value\": {\n\t\t\t\tjs: \"0.25.0\",\n\t\t\t\tandroid: \"4.2.0\",\n\t\t\t\tios: \"3.4.0\",\n\t\t\t\tmacos: \"0.3.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-field\": {\n\t\ttype: \"formatted\",\n\t\t\"default\": \"\",\n\t\ttokens: true,\n\t\tdoc: \"Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-font\": {\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\t\"default\": [\n\t\t\t\"Open Sans Regular\",\n\t\t\t\"Arial Unicode MS Regular\"\n\t\t],\n\t\tdoc: \"Font stack to use for displaying text.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 16,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Font size.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.35.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 10,\n\t\tminimum: 0,\n\t\tunits: \"ems\",\n\t\tdoc: \"The maximum line width for text wrapping.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.40.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-line-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.2,\n\t\tunits: \"ems\",\n\t\tdoc: \"Text leading value for multi-line text.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-letter-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"ems\",\n\t\tdoc: \"Text tracking amount.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.40.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-justify\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t\tdoc: \"The text is aligned towards the anchor position.\"\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\tdoc: \"The text is aligned to the left.\"\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t\tdoc: \"The text is centered.\"\n\t\t\t},\n\t\t\tright: {\n\t\t\t\tdoc: \"The text is aligned to the right.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\tdoc: \"Text justification options.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.39.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t},\n\t\t\tauto: {\n\t\t\t\tjs: \"0.54.0\",\n\t\t\t\tandroid: \"7.4.0\",\n\t\t\t\tios: \"4.10.0\",\n\t\t\t\tmacos: \"0.14.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-radial-offset\": {\n\t\ttype: \"number\",\n\t\tunits: \"ems\",\n\t\t\"default\": 0,\n\t\tdoc: \"Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which defaults to using the two-dimensional `text-offset` if present.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.54.0\",\n\t\t\t\tandroid: \"7.4.0\",\n\t\t\t\tios: \"4.10.0\",\n\t\t\t\tmacos: \"0.14.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.54.0\",\n\t\t\t\tandroid: \"7.4.0\",\n\t\t\t\tios: \"4.10.0\",\n\t\t\t\tmacos: \"0.14.0\"\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"property-type\": \"data-driven\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t}\n\t},\n\t\"text-variable-anchor\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t\tdoc: \"The center of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\tdoc: \"The left side of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tright: {\n\t\t\t\tdoc: \"The right side of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\tdoc: \"The top of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t\tdoc: \"The bottom of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t\tdoc: \"The top left corner of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t\tdoc: \"The top right corner of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t\tdoc: \"The bottom left corner of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t\tdoc: \"The bottom right corner of the text is placed closest to the anchor.\"\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tdoc: \"To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the renderer will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` or the two-dimensional `text-offset`.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.54.0\",\n\t\t\t\tandroid: \"7.4.0\",\n\t\t\t\tios: \"4.10.0\",\n\t\t\t\tmacos: \"0.14.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t\tdoc: \"The center of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tleft: {\n\t\t\t\tdoc: \"The left side of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tright: {\n\t\t\t\tdoc: \"The right side of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\ttop: {\n\t\t\t\tdoc: \"The top of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t\tdoc: \"The bottom of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t\tdoc: \"The top left corner of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t\tdoc: \"The top right corner of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t\tdoc: \"The bottom left corner of the text is placed closest to the anchor.\"\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t\tdoc: \"The bottom right corner of the text is placed closest to the anchor.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\tdoc: \"Part of the text placed closest to the anchor.\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-variable-anchor\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.39.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-angle\": {\n\t\ttype: \"number\",\n\t\t\"default\": 45,\n\t\tunits: \"degrees\",\n\t\tdoc: \"Maximum angle change between adjacent characters.\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-writing-mode\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\thorizontal: {\n\t\t\t\tdoc: \"If a text's language supports horizontal writing mode, symbols with point placement would be laid out horizontally.\"\n\t\t\t},\n\t\t\tvertical: {\n\t\t\t\tdoc: \"If a text's language supports vertical writing mode, symbols with point placement would be laid out vertically.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The property allows control over a symbol's orientation. Note that the property values act as a hint, so that a symbol whose language doesn’t support the provided orientation will be laid out in its natural orientation. Example: English point symbol will be rendered horizontally even if array value contains single 'vertical' enum value. The order of elements in an array define priority order for the placement of an orientation variant.\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"1.3.0\",\n\t\t\t\tandroid: \"8.3.0\",\n\t\t\t\tios: \"5.3.0\",\n\t\t\t\tmacos: \"0.15.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\tdoc: \"Rotates the text clockwise.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.35.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-padding\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Size of the additional area around the text bounding box used for detecting symbol collisions.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\tdoc: \"If true, the text may be flipped vertically to prevent it from being rendered upside-down.\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"text-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-transform\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t\tdoc: \"The text is not altered.\"\n\t\t\t},\n\t\t\tuppercase: {\n\t\t\t\tdoc: \"Forces all letters to be displayed in uppercase.\"\n\t\t\t},\n\t\t\tlowercase: {\n\t\t\t\tdoc: \"Forces all letters to be displayed in lowercase.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\tdoc: \"Specifies how to capitalize text, similar to the CSS `text-transform` property.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-offset\": {\n\t\ttype: \"array\",\n\t\tdoc: \"Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up. If used with text-variable-anchor, input values will be taken as absolute values. Offsets along the x- and y-axis will be applied automatically based on the anchor position.\",\n\t\tvalue: \"number\",\n\t\tunits: \"ems\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-radial-offset\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.35.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, the text will be visible even if it collides with other previously drawn symbols.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, other symbols can be visible even if they collide with the text.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\tdoc: \"If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_raster = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar layout_hillshade = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n};\nvar filter = {\n\ttype: \"array\",\n\tvalue: \"*\",\n\tdoc: \"A filter selects specific features from a layer.\"\n};\nvar filter_operator = {\n\ttype: \"enum\",\n\tvalues: {\n\t\t\"==\": {\n\t\t\tdoc: \"`[\\\"==\\\", key, value]` equality: `feature[key] = value`\"\n\t\t},\n\t\t\"!=\": {\n\t\t\tdoc: \"`[\\\"!=\\\", key, value]` inequality: `feature[key] ≠ value`\"\n\t\t},\n\t\t\">\": {\n\t\t\tdoc: \"`[\\\">\\\", key, value]` greater than: `feature[key] > value`\"\n\t\t},\n\t\t\">=\": {\n\t\t\tdoc: \"`[\\\">=\\\", key, value]` greater than or equal: `feature[key] ≥ value`\"\n\t\t},\n\t\t\"<\": {\n\t\t\tdoc: \"`[\\\"<\\\", key, value]` less than: `feature[key] < value`\"\n\t\t},\n\t\t\"<=\": {\n\t\t\tdoc: \"`[\\\"<=\\\", key, value]` less than or equal: `feature[key] ≤ value`\"\n\t\t},\n\t\t\"in\": {\n\t\t\tdoc: \"`[\\\"in\\\", key, v0, ..., vn]` set inclusion: `feature[key] ∈ {v0, ..., vn}`\"\n\t\t},\n\t\t\"!in\": {\n\t\t\tdoc: \"`[\\\"!in\\\", key, v0, ..., vn]` set exclusion: `feature[key] ∉ {v0, ..., vn}`\"\n\t\t},\n\t\tall: {\n\t\t\tdoc: \"`[\\\"all\\\", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`\"\n\t\t},\n\t\tany: {\n\t\t\tdoc: \"`[\\\"any\\\", f0, ..., fn]` logical `OR`: `f0 ∨ ... ∨ fn`\"\n\t\t},\n\t\tnone: {\n\t\t\tdoc: \"`[\\\"none\\\", f0, ..., fn]` logical `NOR`: `¬f0 ∧ ... ∧ ¬fn`\"\n\t\t},\n\t\thas: {\n\t\t\tdoc: \"`[\\\"has\\\", key]` `feature[key]` exists\"\n\t\t},\n\t\t\"!has\": {\n\t\t\tdoc: \"`[\\\"!has\\\", key]` `feature[key]` does not exist\"\n\t\t},\n\t\twithin: {\n\t\t\tdoc: \"`[\\\"within\\\", object]` feature geometry is within object geometry\"\n\t\t}\n\t},\n\tdoc: \"The filter operator.\"\n};\nvar geometry_type = {\n\ttype: \"enum\",\n\tvalues: {\n\t\tPoint: {\n\t\t\tdoc: \"Filter to point geometries.\"\n\t\t},\n\t\tLineString: {\n\t\t\tdoc: \"Filter to line geometries.\"\n\t\t},\n\t\tPolygon: {\n\t\t\tdoc: \"Filter to polygon geometries.\"\n\t\t}\n\t},\n\tdoc: \"The geometry type for the filter to select.\"\n};\nvar function_stop = {\n\ttype: \"array\",\n\tminimum: 0,\n\tmaximum: 24,\n\tvalue: [\n\t\t\"number\",\n\t\t\"color\"\n\t],\n\tlength: 2,\n\tdoc: \"Zoom level and value pair.\"\n};\nvar expression = {\n\ttype: \"array\",\n\tvalue: \"*\",\n\tminimum: 1,\n\tdoc: \"An expression defines a function that can be used for data-driven style properties or feature filters.\"\n};\nvar expression_name = {\n\tdoc: \"\",\n\ttype: \"enum\",\n\tvalues: {\n\t\t\"let\": {\n\t\t\tdoc: \"Binds expressions to named variables, which can then be referenced in the result expression using [\\\"var\\\", \\\"variable_name\\\"].\",\n\t\t\tgroup: \"Variable binding\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"var\": {\n\t\t\tdoc: \"References variable bound using \\\"let\\\".\",\n\t\t\tgroup: \"Variable binding\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tliteral: {\n\t\t\tdoc: \"Provides a literal array or object value.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tarray: {\n\t\t\tdoc: \"Asserts that the input is an array (optionally with a specific item type and length). If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tat: {\n\t\t\tdoc: \"Retrieves an item from an array.\",\n\t\t\tgroup: \"Lookup\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"in\": {\n\t\t\tdoc: \"Determines whether an item exists in an array or a substring exists in a string.\",\n\t\t\tgroup: \"Lookup\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"1.6.0\",\n\t\t\t\t\tandroid: \"9.1.0\",\n\t\t\t\t\tios: \"5.8.0\",\n\t\t\t\t\tmacos: \"0.15.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"index-of\": {\n\t\t\tdoc: \"Returns the first position at which an item can be found in an array or a substring can be found in a string, or `-1` if the input cannot be found. Accepts an optional index from where to begin the search.\",\n\t\t\tgroup: \"Lookup\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"1.10.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tslice: {\n\t\t\tdoc: \"Returns an item from an array or a substring from a string from a specified start index, or between a start index and an end index if set. The return value is inclusive of the start index but not of the end index.\",\n\t\t\tgroup: \"Lookup\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"1.10.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"case\": {\n\t\t\tdoc: \"Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmatch: {\n\t\t\tdoc: \"Selects the output whose label value matches the input value, or the fallback value if no match is found. The input can be any expression (e.g. `[\\\"get\\\", \\\"building_type\\\"]`). Each label must be either:\\n - a single literal value; or\\n - an array of literal values, whose values must be all strings or all numbers (e.g. `[100, 101]` or `[\\\"c\\\", \\\"b\\\"]`). The input matches if any of the values in the array matches, similar to the `\\\"in\\\"` operator.\\nEach label must be unique. If the input type does not match the type of the labels, the result will be the fallback value.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcoalesce: {\n\t\t\tdoc: \"Evaluates each expression in turn until the first non-null value is obtained, and returns that value.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tstep: {\n\t\t\tdoc: \"Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values (\\\"stops\\\"). The `input` may be any numeric expression (e.g., `[\\\"get\\\", \\\"population\\\"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first output if the input is less than the first stop.\",\n\t\t\tgroup: \"Ramps, scales, curves\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.42.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tinterpolate: {\n\t\t\tdoc: \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). The `input` may be any numeric expression (e.g., `[\\\"get\\\", \\\"population\\\"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array`, or `color`.\\n\\nInterpolation types:\\n- `[\\\"linear\\\"]`: Interpolates linearly between the pair of stops just less than and just greater than the input.\\n- `[\\\"exponential\\\", base]`: Interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\\n- `[\\\"cubic-bezier\\\", x1, y1, x2, y2]`: Interpolates using the cubic bezier curve defined by the given control points.\",\n\t\t\tgroup: \"Ramps, scales, curves\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.42.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"interpolate-hcl\": {\n\t\t\tdoc: \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.\",\n\t\t\tgroup: \"Ramps, scales, curves\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.49.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"interpolate-lab\": {\n\t\t\tdoc: \"Produces continuous, smooth results by interpolating between pairs of input and output values (\\\"stops\\\"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.\",\n\t\t\tgroup: \"Ramps, scales, curves\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.49.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tln2: {\n\t\t\tdoc: \"Returns mathematical constant ln(2).\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tpi: {\n\t\t\tdoc: \"Returns the mathematical constant pi.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\te: {\n\t\t\tdoc: \"Returns the mathematical constant e.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"typeof\": {\n\t\t\tdoc: \"Returns a string describing the type of the given value.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tstring: {\n\t\t\tdoc: \"Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tnumber: {\n\t\t\tdoc: \"Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tboolean: {\n\t\t\tdoc: \"Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tobject: {\n\t\t\tdoc: \"Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollator: {\n\t\t\tdoc: \"Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tformat: {\n\t\t\tdoc: \"Returns a `formatted` string for displaying mixed-format text in the `text-field` property. The input may contain a string literal or expression, including an [`'image'`](#types-image) expression. Strings may be followed by a style override object that supports the following properties:\\n- `\\\"text-font\\\"`: Overrides the font stack specified by the root layout property.\\n- `\\\"text-color\\\"`: Overrides the color specified by the root paint property.\\n- `\\\"font-scale\\\"`: Applies a scaling factor on `text-size` as specified by the root layout property.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.48.0\",\n\t\t\t\t\tandroid: \"6.7.0\",\n\t\t\t\t\tios: \"4.6.0\",\n\t\t\t\t\tmacos: \"0.12.0\"\n\t\t\t\t},\n\t\t\t\t\"text-font\": {\n\t\t\t\t\tjs: \"0.48.0\",\n\t\t\t\t\tandroid: \"6.7.0\",\n\t\t\t\t\tios: \"4.6.0\",\n\t\t\t\t\tmacos: \"0.12.0\"\n\t\t\t\t},\n\t\t\t\t\"font-scale\": {\n\t\t\t\t\tjs: \"0.48.0\",\n\t\t\t\t\tandroid: \"6.7.0\",\n\t\t\t\t\tios: \"4.6.0\",\n\t\t\t\t\tmacos: \"0.12.0\"\n\t\t\t\t},\n\t\t\t\t\"text-color\": {\n\t\t\t\t\tjs: \"1.3.0\",\n\t\t\t\t\tandroid: \"7.3.0\",\n\t\t\t\t\tios: \"4.10.0\",\n\t\t\t\t\tmacos: \"0.14.0\"\n\t\t\t\t},\n\t\t\t\timage: {\n\t\t\t\t\tjs: \"1.6.0\",\n\t\t\t\t\tandroid: \"8.6.0\",\n\t\t\t\t\tios: \"5.7.0\",\n\t\t\t\t\tmacos: \"0.15.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\timage: {\n\t\t\tdoc: \"Returns an `image` type for use in `icon-image`, `*-pattern` entries and as a section in the `format` expression. If set, the `image` argument will check that the requested image exists in the style and will return either the resolved image name or `null`, depending on whether or not the image is currently in the style. This validation process is synchronous and requires the image to have been added to the style before requesting it in the `image` argument.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"1.4.0\",\n\t\t\t\t\tandroid: \"8.6.0\",\n\t\t\t\t\tios: \"5.7.0\",\n\t\t\t\t\tmacos: \"0.15.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"number-format\": {\n\t\t\tdoc: \"Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.54.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"to-string\": {\n\t\t\tdoc: \"Converts the input value to a string. If the input is `null`, the result is `\\\"\\\"`. If the input is a boolean, the result is `\\\"true\\\"` or `\\\"false\\\"`. If the input is a number, it is converted to a string as specified by the [\\\"NumberToString\\\" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form `\\\"rgba(r,g,b,a)\\\"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"to-number\": {\n\t\t\tdoc: \"Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the [\\\"ToNumber Applied to the String Type\\\" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"to-boolean\": {\n\t\t\tdoc: \"Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"to-rgba\": {\n\t\t\tdoc: \"Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.\",\n\t\t\tgroup: \"Color\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"to-color\": {\n\t\t\tdoc: \"Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.\",\n\t\t\tgroup: \"Types\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trgb: {\n\t\t\tdoc: \"Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.\",\n\t\t\tgroup: \"Color\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trgba: {\n\t\t\tdoc: \"Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.\",\n\t\t\tgroup: \"Color\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tget: {\n\t\t\tdoc: \"Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns null if the requested property is missing.\",\n\t\t\tgroup: \"Lookup\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: {\n\t\t\tdoc: \"Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.\",\n\t\t\tgroup: \"Lookup\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlength: {\n\t\t\tdoc: \"Gets the length of an array or string.\",\n\t\t\tgroup: \"Lookup\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tproperties: {\n\t\t\tdoc: \"Gets the feature properties object. Note that in some cases, it may be more efficient to use [\\\"get\\\", \\\"property_name\\\"] directly.\",\n\t\t\tgroup: \"Feature data\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"feature-state\": {\n\t\t\tdoc: \"Retrieves a property value from the current feature's state. Returns null if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. Features are identified by their `id` attribute, which must be an integer or a string that can be cast to an integer. Note that [\\\"feature-state\\\"] can only be used with paint properties that support data-driven styling.\",\n\t\t\tgroup: \"Feature data\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.46.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"geometry-type\": {\n\t\t\tdoc: \"Gets the feature's geometry type: `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`.\",\n\t\t\tgroup: \"Feature data\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tid: {\n\t\t\tdoc: \"Gets the feature's id, if it has one.\",\n\t\t\tgroup: \"Feature data\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tzoom: {\n\t\t\tdoc: \"Gets the current zoom level. Note that in style layout and paint properties, [\\\"zoom\\\"] may only appear as the input to a top-level \\\"step\\\" or \\\"interpolate\\\" expression.\",\n\t\t\tgroup: \"Zoom\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"heatmap-density\": {\n\t\t\tdoc: \"Gets the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.\",\n\t\t\tgroup: \"Heatmap\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"line-progress\": {\n\t\t\tdoc: \"Gets the progress along a gradient line. Can only be used in the `line-gradient` property.\",\n\t\t\tgroup: \"Feature data\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.6.0\",\n\t\t\t\t\tmacos: \"0.12.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"sky-radial-progress\": {\n\t\t\tdoc: \"Gets the distance of a point on the sky from the sun position. Returns 0 at sun position and 1 when the distance reaches `sky-gradient-radius`. Can only be used in the `sky-gradient` property.\",\n\t\t\tgroup: \"sky\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"2.0.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\taccumulated: {\n\t\t\tdoc: \"Gets the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.\",\n\t\t\tgroup: \"Feature data\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.53.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"+\": {\n\t\t\tdoc: \"Returns the sum of the inputs.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"*\": {\n\t\t\tdoc: \"Returns the product of the inputs.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"-\": {\n\t\t\tdoc: \"For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"/\": {\n\t\t\tdoc: \"Returns the result of floating point division of the first input by the second.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"%\": {\n\t\t\tdoc: \"Returns the remainder after integer division of the first input by the second.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"^\": {\n\t\t\tdoc: \"Returns the result of raising the first input to the power specified by the second.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsqrt: {\n\t\t\tdoc: \"Returns the square root of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.42.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlog10: {\n\t\t\tdoc: \"Returns the base-ten logarithm of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tln: {\n\t\t\tdoc: \"Returns the natural logarithm of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tlog2: {\n\t\t\tdoc: \"Returns the base-two logarithm of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tsin: {\n\t\t\tdoc: \"Returns the sine of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcos: {\n\t\t\tdoc: \"Returns the cosine of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttan: {\n\t\t\tdoc: \"Returns the tangent of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasin: {\n\t\t\tdoc: \"Returns the arcsine of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tacos: {\n\t\t\tdoc: \"Returns the arccosine of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tatan: {\n\t\t\tdoc: \"Returns the arctangent of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmin: {\n\t\t\tdoc: \"Returns the minimum value of the inputs.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tmax: {\n\t\t\tdoc: \"Returns the maximum value of the inputs.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tround: {\n\t\t\tdoc: \"Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `[\\\"round\\\", -1.5]` evaluates to -2.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tabs: {\n\t\t\tdoc: \"Returns the absolute value of the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tceil: {\n\t\t\tdoc: \"Returns the smallest integer that is greater than or equal to the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfloor: {\n\t\t\tdoc: \"Returns the largest integer that is less than or equal to the input.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdistance: {\n\t\t\tdoc: \"Returns the shortest distance in meters between the evaluated feature and the input geometry. The input value can be a valid GeoJSON of type `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Distance values returned may vary in precision due to loss in precision from encoding geometries, particularly below zoom level 13.\",\n\t\t\tgroup: \"Math\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tandroid: \"9.2.0\",\n\t\t\t\t\tios: \"5.9.0\",\n\t\t\t\t\tmacos: \"0.16.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"==\": {\n\t\t\tdoc: \"Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t},\n\t\t\t\tcollator: {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"!=\": {\n\t\t\tdoc: \"Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t},\n\t\t\t\tcollator: {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\">\": {\n\t\t\tdoc: \"Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t},\n\t\t\t\tcollator: {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"<\": {\n\t\t\tdoc: \"Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t},\n\t\t\t\tcollator: {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\">=\": {\n\t\t\tdoc: \"Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t},\n\t\t\t\tcollator: {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"<=\": {\n\t\t\tdoc: \"Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t},\n\t\t\t\tcollator: {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tall: {\n\t\t\tdoc: \"Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tany: {\n\t\t\tdoc: \"Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"!\": {\n\t\t\tdoc: \"Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\twithin: {\n\t\t\tdoc: \"Returns `true` if the evaluated feature is fully contained inside a boundary of the input geometry, `false` otherwise. The input value can be a valid GeoJSON of type `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Supported features for evaluation:\\n- `Point`: Returns `false` if a point is on the boundary or falls outside the boundary.\\n- `LineString`: Returns `false` if any part of a line falls outside the boundary, the line intersects the boundary, or a line's endpoint is on the boundary.\",\n\t\t\tgroup: \"Decision\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"1.9.0\",\n\t\t\t\t\tandroid: \"9.1.0\",\n\t\t\t\t\tios: \"5.8.0\",\n\t\t\t\t\tmacos: \"0.15.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"is-supported-script\": {\n\t\t\tdoc: \"Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in Mapbox GL JS).\",\n\t\t\tgroup: \"String\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.6.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tupcase: {\n\t\t\tdoc: \"Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.\",\n\t\t\tgroup: \"String\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdowncase: {\n\t\t\tdoc: \"Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.\",\n\t\t\tgroup: \"String\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tconcat: {\n\t\t\tdoc: \"Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.\",\n\t\t\tgroup: \"String\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.41.0\",\n\t\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\t\tios: \"4.0.0\",\n\t\t\t\t\tmacos: \"0.7.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"resolved-locale\": {\n\t\t\tdoc: \"Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.\",\n\t\t\tgroup: \"String\",\n\t\t\t\"sdk-support\": {\n\t\t\t\t\"basic functionality\": {\n\t\t\t\t\tjs: \"0.45.0\",\n\t\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\t\tios: \"4.2.0\",\n\t\t\t\t\tmacos: \"0.9.0\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar light = {\n\tanchor: {\n\t\ttype: \"enum\",\n\t\t\"default\": \"viewport\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The position of the light source is aligned to the rotation of the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The position of the light source is aligned to the rotation of the viewport.\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\tdoc: \"Whether extruded geometries are lit relative to the map or viewport.\",\n\t\texample: \"map\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t}\n\t},\n\tposition: {\n\t\ttype: \"array\",\n\t\t\"default\": [\n\t\t\t1.15,\n\t\t\t210,\n\t\t\t30\n\t\t],\n\t\tlength: 3,\n\t\tvalue: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\tdoc: \"Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).\",\n\t\texample: [\n\t\t\t1.5,\n\t\t\t90,\n\t\t\t80\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t}\n\t},\n\tcolor: {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true,\n\t\tdoc: \"Color tint for lighting extruded geometries.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t}\n\t},\n\tintensity: {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true,\n\t\tdoc: \"Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t}\n\t}\n};\nvar terrain = {\n\tsource: {\n\t\ttype: \"string\",\n\t\tdoc: \"Name of a source of `raster_dem` type to be used for terrain elevation.\",\n\t\trequired: true\n\t},\n\texaggeration: {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1000,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true,\n\t\tdoc: \"Exaggerates the elevation of the terrain by multiplying the data from the DEM with this value.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t}\n\t}\n};\nvar paint = [\n\t\"paint_fill\",\n\t\"paint_line\",\n\t\"paint_circle\",\n\t\"paint_heatmap\",\n\t\"paint_fill-extrusion\",\n\t\"paint_symbol\",\n\t\"paint_raster\",\n\t\"paint_hillshade\",\n\t\"paint_background\",\n\t\"paint_sky\"\n];\nvar paint_fill = {\n\t\"fill-antialias\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\tdoc: \"Whether or not the fill should be antialiased.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\tdoc: \"The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.21.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\tdoc: \"The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.19.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-outline-color\": {\n\t\ttype: \"color\",\n\t\tdoc: \"The outline color of the fill. Matches the value of `fill-color` if unspecified.\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"fill-antialias\": true\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.19.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The fill is translated relative to the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The fill is translated relative to the viewport.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"Controls the frame of reference for `fill-translate`.\",\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-translate\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\tdoc: \"Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.49.0\",\n\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\tmacos: \"0.11.0\",\n\t\t\t\tios: \"4.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t}\n};\nvar paint_line = {\n\t\"line-opacity\": {\n\t\ttype: \"number\",\n\t\tdoc: \"The opacity at which the line will be drawn.\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-color\": {\n\t\ttype: \"color\",\n\t\tdoc: \"The color with which the line will be drawn.\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.23.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The line is translated relative to the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The line is translated relative to the viewport.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"Controls the frame of reference for `line-translate`.\",\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"line-translate\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Stroke thickness.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.39.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-gap-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tdoc: \"Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.\",\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-offset\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tdoc: \"The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.\",\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.12.1\",\n\t\t\t\tandroid: \"3.0.0\",\n\t\t\t\tios: \"3.1.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Blur applied to the line, in pixels.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-dasharray\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tdoc: \"Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"line widths\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded\"\n\t},\n\t\"line-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\tdoc: \"Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.49.0\",\n\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\tmacos: \"0.11.0\",\n\t\t\t\tios: \"4.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"line-gradient\": {\n\t\ttype: \"color\",\n\t\tdoc: \"Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `\\\"lineMetrics\\\": true`.\",\n\t\ttransition: false,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-dasharray\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tsource: \"geojson\",\n\t\t\t\thas: {\n\t\t\t\t\tlineMetrics: true\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.45.0\",\n\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\tios: \"4.4.0\",\n\t\t\t\tmacos: \"0.11.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"line-progress\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t}\n};\nvar paint_circle = {\n\t\"circle-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 5,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Circle radius.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.18.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\tdoc: \"The fill color of the circle.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.18.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tdoc: \"Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.20.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-opacity\": {\n\t\ttype: \"number\",\n\t\tdoc: \"The opacity at which the circle will be drawn.\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.20.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The circle is translated relative to the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The circle is translated relative to the viewport.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"Controls the frame of reference for `circle-translate`.\",\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"circle-translate\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-scale\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"Circles are scaled according to their apparent distance to the camera.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"Circles are not scaled.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\tdoc: \"Controls the scaling behavior of the circle when the map is pitched.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.21.0\",\n\t\t\t\tandroid: \"4.2.0\",\n\t\t\t\tios: \"3.4.0\",\n\t\t\t\tmacos: \"0.2.1\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The circle is aligned to the plane of the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The circle is aligned to the plane of the viewport.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\tdoc: \"Orientation of circle when map is pitched.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.39.0\",\n\t\t\t\tandroid: \"5.2.0\",\n\t\t\t\tios: \"3.7.0\",\n\t\t\t\tmacos: \"0.6.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-stroke-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\tdoc: \"The stroke color of the circle.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-opacity\": {\n\t\ttype: \"number\",\n\t\tdoc: \"The opacity of the circle's stroke.\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.29.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t}\n};\nvar paint_heatmap = {\n\t\"heatmap-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 30,\n\t\tminimum: 1,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.41.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-weight\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\tdoc: \"A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.41.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.41.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-intensity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tdoc: \"Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.41.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"heatmap-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": [\n\t\t\t\"interpolate\",\n\t\t\t[\n\t\t\t\t\"linear\"\n\t\t\t],\n\t\t\t[\n\t\t\t\t\"heatmap-density\"\n\t\t\t],\n\t\t\t0,\n\t\t\t\"rgba(0, 0, 255, 0)\",\n\t\t\t0.1,\n\t\t\t\"royalblue\",\n\t\t\t0.3,\n\t\t\t\"cyan\",\n\t\t\t0.5,\n\t\t\t\"lime\",\n\t\t\t0.7,\n\t\t\t\"yellow\",\n\t\t\t1,\n\t\t\t\"red\"\n\t\t],\n\t\tdoc: \"Defines the color of each pixel based on its density value in a heatmap. Should be an expression that uses `[\\\"heatmap-density\\\"]` as input.\",\n\t\ttransition: false,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.41.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"heatmap-density\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t},\n\t\"heatmap-opacity\": {\n\t\ttype: \"number\",\n\t\tdoc: \"The global opacity at which the heatmap layer will be drawn.\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.41.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_symbol = {\n\t\"icon-opacity\": {\n\t\tdoc: \"The opacity at which the icon will be drawn.\",\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\tdoc: \"The color of the icon. This can only be used with sdf icons.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\tdoc: \"The color of the icon's halo. Icon halos can only be used with SDF icons.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Distance of halo to the icon outline.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Fade out the halo towards the outside.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"Icons are translated relative to the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"Icons are translated relative to the viewport.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"Controls the frame of reference for `icon-translate`.\",\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"icon-translate\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-opacity\": {\n\t\ttype: \"number\",\n\t\tdoc: \"The opacity at which the text will be drawn.\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-color\": {\n\t\ttype: \"color\",\n\t\tdoc: \"The color with which the text will be drawn.\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\toverridable: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\tdoc: \"The color of the text's halo, which helps it stand out from backgrounds.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The halo's fadeout distance towards the outside.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.33.0\",\n\t\t\t\tandroid: \"5.0.0\",\n\t\t\t\tios: \"3.5.0\",\n\t\t\t\tmacos: \"0.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The text is translated relative to the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The text is translated relative to the viewport.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"Controls the frame of reference for `text-translate`.\",\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"text-translate\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_raster = {\n\t\"raster-opacity\": {\n\t\ttype: \"number\",\n\t\tdoc: \"The opacity at which the image will be drawn.\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-hue-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\ttransition: true,\n\t\tunits: \"degrees\",\n\t\tdoc: \"Rotates hues around the color wheel.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-min\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Increase or reduce the brightness of the image. The value is the minimum brightness.\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-max\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Increase or reduce the brightness of the image. The value is the maximum brightness.\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-saturation\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Increase or reduce the saturation of the image.\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-contrast\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Increase or reduce the contrast of the image.\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-resampling\": {\n\t\ttype: \"enum\",\n\t\tdoc: \"The resampling/interpolation method to use for overscaling, also known as texture magnification filter\",\n\t\tvalues: {\n\t\t\tlinear: {\n\t\t\t\tdoc: \"(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled\"\n\t\t\t},\n\t\t\tnearest: {\n\t\t\t\tdoc: \"Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"linear\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.47.0\",\n\t\t\t\tandroid: \"6.3.0\",\n\t\t\t\tios: \"4.2.0\",\n\t\t\t\tmacos: \"0.9.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-fade-duration\": {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\tunits: \"milliseconds\",\n\t\tdoc: \"Fade duration when a new tile is added.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_hillshade = {\n\t\"hillshade-illumination-direction\": {\n\t\ttype: \"number\",\n\t\t\"default\": 335,\n\t\tminimum: 0,\n\t\tmaximum: 359,\n\t\tdoc: \"The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.\",\n\t\ttransition: false,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-illumination-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The hillshade illumination is relative to the north direction.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The hillshade illumination is relative to the top of the viewport.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\tdoc: \"Direction of light source when map is rotated.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-exaggeration\": {\n\t\ttype: \"number\",\n\t\tdoc: \"Intensity of the hillshade\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-shadow-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\tdoc: \"The shading color of areas that face away from the light source.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-highlight-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#FFFFFF\",\n\t\tdoc: \"The shading color of areas that faces towards the light source.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-accent-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\tdoc: \"The shading color used to accentuate rugged terrain like sharp cliffs and gorges.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.43.0\",\n\t\t\t\tandroid: \"6.0.0\",\n\t\t\t\tios: \"4.0.0\",\n\t\t\t\tmacos: \"0.7.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_background = {\n\t\"background-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\tdoc: \"The color with which the background will be drawn.\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"background-pattern\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"background-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\tdoc: \"Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded\"\n\t},\n\t\"background-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\tdoc: \"The opacity at which the background will be drawn.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.10.0\",\n\t\t\t\tandroid: \"2.0.1\",\n\t\t\t\tios: \"2.0.0\",\n\t\t\t\tmacos: \"0.1.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_sky = {\n\t\"sky-type\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tgradient: {\n\t\t\t\tdoc: \"Renders the sky with a gradient that can be configured with `sky-gradient-radius` and `sky-gradient`.\"\n\t\t\t},\n\t\t\tatmosphere: {\n\t\t\t\tdoc: \"Renders the sky with a simulated atmospheric scattering algorithm, the sun direction can be attached to the light position or explicitly set through `sky-atmosphere-sun`.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"atmosphere\",\n\t\tdoc: \"The type of the sky\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"sky-atmosphere-sun\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\ttransition: false,\n\t\tdoc: \"Position of the sun center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the sun relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the sun, where 0° is directly above, at zenith, and 90° at the horizon. When this property is ommitted, the sun center is directly inherited from the light position.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"sky-type\": \"atmosphere\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"sky-atmosphere-sun-intensity\": {\n\t\ttype: \"number\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"sky-type\": \"atmosphere\"\n\t\t\t}\n\t\t],\n\t\t\"default\": 10,\n\t\tminimum: 0,\n\t\tmaximum: 100,\n\t\ttransition: false,\n\t\tdoc: \"Intensity of the sun as a light source in the atmosphere (on a scale from 0 to a 100). Setting higher values will brighten up the sky.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"sky-gradient-center\": {\n\t\ttype: \"array\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"sky-type\": \"gradient\"\n\t\t\t}\n\t\t],\n\t\tvalue: \"number\",\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tlength: 2,\n\t\ttransition: false,\n\t\tdoc: \"Position of the gradient center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the gradient center relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the gradient center, where 0° is directly above, at zenith, and 90° at the horizon.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"sky-gradient-radius\": {\n\t\ttype: \"number\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"sky-type\": \"gradient\"\n\t\t\t}\n\t\t],\n\t\t\"default\": 90,\n\t\tminimum: 0,\n\t\tmaximum: 180,\n\t\ttransition: false,\n\t\tdoc: \"The angular distance (measured in degrees) from `sky-gradient-center` up to which the gradient extends. A value of 180 causes the gradient to wrap around to the opposite direction from `sky-gradient-center`.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"sky-gradient\": {\n\t\ttype: \"color\",\n\t\t\"default\": [\n\t\t\t\"interpolate\",\n\t\t\t[\n\t\t\t\t\"linear\"\n\t\t\t],\n\t\t\t[\n\t\t\t\t\"sky-radial-progress\"\n\t\t\t],\n\t\t\t0.8,\n\t\t\t\"#87ceeb\",\n\t\t\t1,\n\t\t\t\"white\"\n\t\t],\n\t\tdoc: \"Defines a radial color gradient with which to color the sky. The color values can be interpolated with an expression using `sky-radial-progress`. The range [0, 1] for the interpolant covers a radial distance (in degrees) of [0, `sky-gradient-radius`] centered at the position specified by `sky-gradient-center`.\",\n\t\ttransition: false,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"sky-type\": \"gradient\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"sky-radial-progress\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t},\n\t\"sky-atmosphere-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"white\",\n\t\tdoc: \"A color applied to the atmosphere sun halo. The alpha channel describes how strongly the sun halo is represented in an atmosphere sky layer.\",\n\t\ttransition: false,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"sky-type\": \"atmosphere\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"sky-atmosphere-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"white\",\n\t\tdoc: \"A color used to tweak the main atmospheric scattering coefficients. Using white applies the default coefficients giving the natural blue color to the atmosphere. This color affects how heavily the corresponding wavelength is represented during scattering. The alpha channel describes the density of the atmosphere, with 1 maximum density and 0 no density.\",\n\t\ttransition: false,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"sky-type\": \"atmosphere\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"sky-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\tdoc: \"The opacity of the entire sky layer.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"2.0.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar transition = {\n\tduration: {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\",\n\t\tdoc: \"Time allotted for transitions to complete.\"\n\t},\n\tdelay: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\",\n\t\tdoc: \"Length of time before a transition begins.\"\n\t}\n};\nvar promoteId = {\n\t\"*\": {\n\t\ttype: \"string\",\n\t\tdoc: \"A name of a feature property to use as ID for feature state.\"\n\t}\n};\nvar v8 = {\n\t$version: $version,\n\t$root: $root,\n\tsources: sources,\n\tsource: source,\n\tsource_vector: source_vector,\n\tsource_raster: source_raster,\n\tsource_raster_dem: source_raster_dem,\n\tsource_geojson: source_geojson,\n\tsource_video: source_video,\n\tsource_image: source_image,\n\tlayer: layer,\n\tlayout: layout,\n\tlayout_background: layout_background,\n\tlayout_sky: layout_sky,\n\tlayout_fill: layout_fill,\n\tlayout_circle: layout_circle,\n\tlayout_heatmap: layout_heatmap,\n\t\"layout_fill-extrusion\": {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t\tdoc: \"The layer is shown.\"\n\t\t\t},\n\t\t\tnone: {\n\t\t\t\tdoc: \"The layer is not shown.\"\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\tdoc: \"Whether this layer is displayed.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"constant\"\n\t}\n},\n\tlayout_line: layout_line,\n\tlayout_symbol: layout_symbol,\n\tlayout_raster: layout_raster,\n\tlayout_hillshade: layout_hillshade,\n\tfilter: filter,\n\tfilter_operator: filter_operator,\n\tgeometry_type: geometry_type,\n\t\"function\": {\n\texpression: {\n\t\ttype: \"expression\",\n\t\tdoc: \"An expression.\"\n\t},\n\tstops: {\n\t\ttype: \"array\",\n\t\tdoc: \"An array of stops.\",\n\t\tvalue: \"function_stop\"\n\t},\n\tbase: {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tdoc: \"The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly.\"\n\t},\n\tproperty: {\n\t\ttype: \"string\",\n\t\tdoc: \"The name of a feature property to use as the function input.\",\n\t\t\"default\": \"$zoom\"\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tidentity: {\n\t\t\t\tdoc: \"Return the input value as the output value.\"\n\t\t\t},\n\t\t\texponential: {\n\t\t\t\tdoc: \"Generate an output by interpolating between stops just less than and just greater than the function input.\"\n\t\t\t},\n\t\t\tinterval: {\n\t\t\t\tdoc: \"Return the output value of the stop just less than the function input.\"\n\t\t\t},\n\t\t\tcategorical: {\n\t\t\t\tdoc: \"Return the output value of the stop equal to the function input.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The interpolation strategy to use in function evaluation.\",\n\t\t\"default\": \"exponential\"\n\t},\n\tcolorSpace: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\trgb: {\n\t\t\t\tdoc: \"Use the RGB color space to interpolate color values\"\n\t\t\t},\n\t\t\tlab: {\n\t\t\t\tdoc: \"Use the LAB color space to interpolate color values.\"\n\t\t\t},\n\t\t\thcl: {\n\t\t\t\tdoc: \"Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.\",\n\t\t\"default\": \"rgb\"\n\t},\n\t\"default\": {\n\t\ttype: \"*\",\n\t\trequired: false,\n\t\tdoc: \"A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\\n* In categorical functions, when the feature value does not match any of the stop domain values.\\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\\nIf no default is provided, the style property's default is used in these circumstances.\"\n\t}\n},\n\tfunction_stop: function_stop,\n\texpression: expression,\n\texpression_name: expression_name,\n\tlight: light,\n\tterrain: terrain,\n\tpaint: paint,\n\tpaint_fill: paint_fill,\n\t\"paint_fill-extrusion\": {\n\t\"fill-extrusion-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\tdoc: \"The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\tdoc: \"The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-extrusion-pattern\"\n\t\t\t}\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\tdoc: \"The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t\tdoc: \"The fill extrusion is translated relative to the map.\"\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t\tdoc: \"The fill extrusion is translated relative to the viewport.\"\n\t\t\t}\n\t\t},\n\t\tdoc: \"Controls the frame of reference for `fill-extrusion-translate`.\",\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-extrusion-translate\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\tdoc: \"Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.\",\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.49.0\",\n\t\t\t\tandroid: \"6.5.0\",\n\t\t\t\tmacos: \"0.11.0\",\n\t\t\t\tios: \"4.4.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"fill-extrusion-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\tdoc: \"The height with which to extrude this layer.\",\n\t\ttransition: true,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-base\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\tdoc: \"The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"fill-extrusion-height\"\n\t\t],\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t},\n\t\t\t\"data-driven styling\": {\n\t\t\t\tjs: \"0.27.0\",\n\t\t\t\tandroid: \"5.1.0\",\n\t\t\t\tios: \"3.6.0\",\n\t\t\t\tmacos: \"0.5.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-vertical-gradient\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\tdoc: \"Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.\",\n\t\ttransition: false,\n\t\t\"sdk-support\": {\n\t\t\t\"basic functionality\": {\n\t\t\t\tjs: \"0.50.0\",\n\t\t\t\tios: \"4.7.0\",\n\t\t\t\tmacos: \"0.13.0\"\n\t\t\t}\n\t\t},\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n},\n\tpaint_line: paint_line,\n\tpaint_circle: paint_circle,\n\tpaint_heatmap: paint_heatmap,\n\tpaint_symbol: paint_symbol,\n\tpaint_raster: paint_raster,\n\tpaint_hillshade: paint_hillshade,\n\tpaint_background: paint_background,\n\tpaint_sky: paint_sky,\n\ttransition: transition,\n\t\"property-type\": {\n\t\"data-driven\": {\n\t\ttype: \"property-type\",\n\t\tdoc: \"Property is interpolable and can be represented using a property expression.\"\n\t},\n\t\"cross-faded\": {\n\t\ttype: \"property-type\",\n\t\tdoc: \"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms.\"\n\t},\n\t\"cross-faded-data-driven\": {\n\t\ttype: \"property-type\",\n\t\tdoc: \"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression.\"\n\t},\n\t\"color-ramp\": {\n\t\ttype: \"property-type\",\n\t\tdoc: \"Property should be specified using a color ramp from which the output color can be sampled based on a property calculation.\"\n\t},\n\t\"data-constant\": {\n\t\ttype: \"property-type\",\n\t\tdoc: \"Property is interpolable but cannot be represented using a property expression.\"\n\t},\n\tconstant: {\n\t\ttype: \"property-type\",\n\t\tdoc: \"Property is constant across all zoom levels and property values.\"\n\t}\n},\n\tpromoteId: promoteId\n};\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nvar stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nvar jsonStringifyPrettyCompact = function stringify(passedObj, options) {\n var indent, maxLength, replacer;\n\n options = options || {};\n indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n replacer = options.replacer;\n\n return (function _stringify(obj, currentIndent, reserved) {\n // prettier-ignore\n var end, index, items, key, keyPart, keys, length, nextIndent, prettified, start, string, value;\n\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n prettified = string.replace(stringOrChar, function(match, stringLiteral) {\n return stringLiteral || match + \" \";\n });\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n nextIndent = currentIndent + indent;\n items = [];\n index = 0;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n length = obj.length;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n keys = Object.keys(obj);\n length = keys.length;\n for (; index < length; index++) {\n key = keys[index];\n keyPart = JSON.stringify(key) + \": \";\n value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(\",\\n\" + nextIndent), end].join(\n \"\\n\" + currentIndent\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n};\n\nfunction sortKeysBy(obj, reference) {\n const result = {};\n for (const key in reference) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n for (const key in obj) {\n if (result[key] === undefined) {\n result[key] = obj[key];\n }\n }\n return result;\n}\nfunction format(style, space = 2) {\n style = sortKeysBy(style, v8.$root);\n if (style.layers) {\n style.layers = style.layers.map(layer => sortKeysBy(layer, v8.layer));\n }\n return jsonStringifyPrettyCompact(style, { indent: space });\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction commonjsRequire () {\n\tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar punycode = createCommonjsModule(function (module, exports) {\n(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(commonjsGlobal));\n});\n\nvar util = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n\n// Copyright Joyent, Inc. and other Node contributors.\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar decode = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\n// Copyright Joyent, Inc. and other Node contributors.\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nvar encode = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar querystring = createCommonjsModule(function (module, exports) {\n\nexports.decode = exports.parse = decode;\nexports.encode = exports.stringify = encode;\n});\nvar querystring_1 = querystring.decode;\nvar querystring_2 = querystring.parse;\nvar querystring_3 = querystring.encode;\nvar querystring_4 = querystring.stringify;\n\nvar parse = urlParse;\nvar resolve = urlResolve;\nvar resolveObject = urlResolveObject;\nvar format$1 = urlFormat;\n\nvar Url_1 = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n };\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nvar url = {\n\tparse: parse,\n\tresolve: resolve,\n\tresolveObject: resolveObject,\n\tformat: format$1,\n\tUrl: Url_1\n};\n\nfunction getPropertyReference(propertyName) {\n for (let i = 0; i < v8.layout.length; i++) {\n for (const key in v8[v8.layout[i]]) {\n if (key === propertyName)\n return v8[v8.layout[i]][key];\n }\n }\n for (let i = 0; i < v8.paint.length; i++) {\n for (const key in v8[v8.paint[i]]) {\n if (key === propertyName)\n return v8[v8.paint[i]][key];\n }\n }\n return null;\n}\nfunction eachSource(style, callback) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\nfunction eachLayer(style, callback) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\nfunction eachProperty(style, options, callback) {\n function inner(layer, propertyType) {\n const properties = layer[propertyType];\n if (!properties)\n return;\n Object.keys(properties).forEach(key => {\n callback({\n path: [\n layer.id,\n propertyType,\n key\n ],\n key,\n value: properties[key],\n reference: getPropertyReference(key),\n set(x) {\n properties[key] = x;\n }\n });\n });\n }\n eachLayer(style, layer => {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n}\n\nfunction eachLayout(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('layout') === 0) {\n callback(layer[k], k);\n }\n }\n}\nfunction eachPaint(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('paint') === 0) {\n callback(layer[k], k);\n }\n }\n}\nfunction resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, style.constants[value]);\n } else {\n return value;\n }\n}\nfunction isFunction(value) {\n return Array.isArray(value.stops);\n}\nfunction renameProperty(obj, from, to) {\n obj[to] = obj[from];\n delete obj[from];\n}\nfunction migrateToV8 (style) {\n style.version = 8;\n eachSource(style, source => {\n if (source.type === 'video' && source.url !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach(coord => {\n return coord.reverse();\n });\n }\n });\n eachLayer(style, layer => {\n eachLayout(layer, layout => {\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n eachPaint(layer, paint => {\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n eachProperty(style, {\n paint: true,\n layout: true\n }, property => {\n const value = resolveConstant(style, property.value);\n if (isFunction(value)) {\n value.stops.forEach(stop => {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n property.set(value);\n });\n delete style.constants;\n eachLayer(style, layer => {\n eachLayout(layer, layout => {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n eachPaint(layer, paint => {\n if (paint['text-size']) {\n if (!layer.layout)\n layer.layout = {};\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n if (paint['icon-size']) {\n if (!layer.layout)\n layer.layout = {};\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n function migrateFontstackURL(input) {\n const inputParsed = url.parse(input);\n const inputPathnameParts = inputParsed.pathname.split('/');\n if (inputParsed.protocol !== 'mapbox:') {\n return input;\n } else if (inputParsed.hostname === 'fontstack') {\n return 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf';\n } else if (inputParsed.hostname === 'fonts') {\n return `mapbox://fonts/${ inputPathnameParts[2] }/{fontstack}/{range}.pbf`;\n }\n }\n if (style.glyphs) {\n style.glyphs = migrateFontstackURL(style.glyphs);\n }\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map(s => {\n return s.trim();\n });\n }\n if (Array.isArray(font)) {\n return font;\n } else if (typeof font === 'string') {\n return splitAndTrim(font);\n } else if (typeof font === 'object') {\n font.stops.forEach(stop => {\n stop[1] = splitAndTrim(stop[1]);\n });\n return font;\n } else {\n throw new Error('unexpected font value');\n }\n }\n eachLayer(style, layer => {\n eachLayout(layer, layout => {\n if (layout['text-font']) {\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n let firstSymbolLayer = 0;\n for (let i = style.layers.length - 1; i >= 0; i--) {\n const layer = style.layers[i];\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n return style;\n}\n\nfunction extend (output, ...inputs) {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n\nclass ParsingError extends Error {\n constructor(key, message) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\nclass Scope {\n constructor(parent, bindings = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n concat(bindings) {\n return new Scope(this, bindings);\n }\n get(name) {\n if (this.bindings[name]) {\n return this.bindings[name];\n }\n if (this.parent) {\n return this.parent.get(name);\n }\n throw new Error(`${ name } not found in scope.`);\n }\n has(name) {\n if (this.bindings[name])\n return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nconst NullType = { kind: 'null' };\nconst NumberType = { kind: 'number' };\nconst StringType = { kind: 'string' };\nconst BooleanType = { kind: 'boolean' };\nconst ColorType = { kind: 'color' };\nconst ObjectType = { kind: 'object' };\nconst ValueType = { kind: 'value' };\nconst ErrorType = { kind: 'error' };\nconst CollatorType = { kind: 'collator' };\nconst FormattedType = { kind: 'formatted' };\nconst ResolvedImageType = { kind: 'resolvedImage' };\nfunction array(itemType, N) {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\nfunction toString(type) {\n if (type.kind === 'array') {\n const itemType = toString(type.itemType);\n return typeof type.N === 'number' ? `array<${ itemType }, ${ type.N }>` : type.itemType.kind === 'value' ? 'array' : `array<${ itemType }>`;\n } else {\n return type.kind;\n }\n}\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array(ValueType),\n ResolvedImageType\n];\nfunction checkSubtype(expected, t) {\n if (t.kind === 'error') {\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' && (t.N === 0 && t.itemType.kind === 'value' || !checkSubtype(expected.itemType, t.itemType)) && (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n return `Expected ${ toString(expected) } but found ${ toString(t) } instead.`;\n}\nfunction isValidType(provided, allowedTypes) {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\nfunction isValidNativeType(provided, allowedTypes) {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n } else if (t === 'array') {\n return Array.isArray(provided);\n } else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n } else {\n return t === typeof provided;\n }\n });\n}\n\nvar csscolorparser = createCommonjsModule(function (module, exports) {\n// (c) Dean McNamee , 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]};\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor; } catch(e) { }\n});\nvar csscolorparser_1 = csscolorparser.parseCSSColor;\n\nclass Color {\n constructor(r, g, b, a = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n static parse(input) {\n if (!input) {\n return undefined;\n }\n if (input instanceof Color) {\n return input;\n }\n if (typeof input !== 'string') {\n return undefined;\n }\n const rgba = csscolorparser_1(input);\n if (!rgba) {\n return undefined;\n }\n return new Color(rgba[0] / 255 * rgba[3], rgba[1] / 255 * rgba[3], rgba[2] / 255 * rgba[3], rgba[3]);\n }\n toString() {\n const [r, g, b, a] = this.toArray();\n return `rgba(${ Math.round(r) },${ Math.round(g) },${ Math.round(b) },${ a })`;\n }\n toArray() {\n const {r, g, b, a} = this;\n return a === 0 ? [\n 0,\n 0,\n 0,\n 0\n ] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n }\n}\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\nColor.blue = new Color(0, 0, 1, 1);\n\nclass Collator {\n constructor(caseSensitive, diacriticSensitive, locale) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [], {\n sensitivity: this.sensitivity,\n usage: 'search'\n });\n }\n compare(lhs, rhs) {\n return this.collator.compare(lhs, rhs);\n }\n resolvedLocale() {\n return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;\n }\n}\n\nclass FormattedSection {\n constructor(text, image, scale, fontStack, textColor) {\n this.text = text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\nclass Formatted {\n constructor(sections) {\n this.sections = sections;\n }\n static fromString(unformatted) {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n }\n isEmpty() {\n if (this.sections.length === 0)\n return true;\n return !this.sections.some(section => section.text.length !== 0 || section.image && section.image.name.length !== 0);\n }\n static factory(text) {\n if (text instanceof Formatted) {\n return text;\n } else {\n return Formatted.fromString(text);\n }\n }\n toString() {\n if (this.sections.length === 0)\n return '';\n return this.sections.map(section => section.text).join('');\n }\n serialize() {\n const serialized = ['format'];\n for (const section of this.sections) {\n if (section.image) {\n serialized.push([\n 'image',\n section.image.name\n ]);\n continue;\n }\n serialized.push(section.text);\n const options = {};\n if (section.fontStack) {\n options['text-font'] = [\n 'literal',\n section.fontStack.split(',')\n ];\n }\n if (section.scale) {\n options['font-scale'] = section.scale;\n }\n if (section.textColor) {\n options['text-color'] = ['rgba'].concat(section.textColor.toArray());\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n\nclass ResolvedImage {\n constructor(options) {\n this.name = options.name;\n this.available = options.available;\n }\n toString() {\n return this.name;\n }\n static fromString(name) {\n if (!name)\n return null;\n return new ResolvedImage({\n name,\n available: false\n });\n }\n serialize() {\n return [\n 'image',\n this.name\n ];\n }\n}\n\nfunction validateRGBA(r, g, b, a) {\n if (!(typeof r === 'number' && r >= 0 && r <= 255 && typeof g === 'number' && g >= 0 && g <= 255 && typeof b === 'number' && b >= 0 && b <= 255)) {\n const value = typeof a === 'number' ? [\n r,\n g,\n b,\n a\n ] : [\n r,\n g,\n b\n ];\n return `Invalid rgba value [${ value.join(', ') }]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n if (!(typeof a === 'undefined' || typeof a === 'number' && a >= 0 && a <= 1)) {\n return `Invalid rgba value [${ [\n r,\n g,\n b,\n a\n ].join(', ') }]: 'a' must be between 0 and 1.`;\n }\n return null;\n}\nfunction isValue(mixed) {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (mixed instanceof ResolvedImage) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\nfunction typeOf(value) {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType;\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n return array(itemType || ValueType, length);\n } else {\n return ObjectType;\n }\n}\nfunction toString$1(value) {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color || value instanceof Formatted || value instanceof ResolvedImage) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n\nclass Literal {\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${ args.length - 1 } instead.`);\n if (!isValue(args[1]))\n return context.error(`invalid value`);\n const value = args[1];\n let type = typeOf(value);\n const expected = context.expectedType;\n if (type.kind === 'array' && type.N === 0 && expected && expected.kind === 'array' && (typeof expected.N !== 'number' || expected.N === 0)) {\n type = expected;\n }\n return new Literal(type, value);\n }\n evaluate() {\n return this.value;\n }\n eachChild() {\n }\n outputDefined() {\n return true;\n }\n serialize() {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\n 'literal',\n this.value\n ];\n } else if (this.value instanceof Color) {\n return ['rgba'].concat(this.value.toArray());\n } else if (this.value instanceof Formatted) {\n return this.value.serialize();\n } else {\n return this.value;\n }\n }\n}\n\nclass RuntimeError {\n constructor(message) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n toJSON() {\n return this.message;\n }\n}\n\nconst types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\nclass Assertion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n let i = 1;\n let type;\n const name = args[0];\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types[type];\n i++;\n } else {\n itemType = ValueType;\n }\n let N;\n if (args.length > 3) {\n if (args[2] !== null && (typeof args[2] !== 'number' || args[2] < 0 || args[2] !== Math.floor(args[2]))) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n type = array(itemType, N);\n } else {\n type = types[name];\n }\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Assertion(type, parsed);\n }\n evaluate(ctx) {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${ toString(this.type) }, but found ${ toString(typeOf(value)) } instead.`);\n }\n }\n return null;\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n serialize() {\n const type = this.type;\n const serialized = [type.kind];\n if (type.kind === 'array') {\n const itemType = type.itemType;\n if (itemType.kind === 'string' || itemType.kind === 'number' || itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n const N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n serialized.push(N);\n }\n }\n }\n return serialized.concat(this.args.map(arg => arg.serialize()));\n }\n}\n\nclass FormatExpression {\n constructor(sections) {\n this.type = FormattedType;\n this.sections = sections;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error(`Expected at least one argument.`);\n }\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error(`First argument must be an image or text section.`);\n }\n const sections = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = args[i];\n if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale)\n return null;\n }\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array(StringType));\n if (!font)\n return null;\n }\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor)\n return null;\n }\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n } else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content)\n return null;\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);\n nextTokenMayBeObject = true;\n sections.push({\n content,\n scale: null,\n font: null,\n textColor: null\n });\n }\n }\n return new FormatExpression(sections);\n }\n evaluate(ctx) {\n const evaluateSection = section => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection('', evaluatedContent, null, null, null);\n }\n return new FormattedSection(toString$1(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null);\n };\n return new Formatted(this.sections.map(evaluateSection));\n }\n eachChild(fn) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n const serialized = ['format'];\n for (const section of this.sections) {\n serialized.push(section.content.serialize());\n const options = {};\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n if (section.textColor) {\n options['text-color'] = section.textColor.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n\nclass ImageExpression {\n constructor(input) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2) {\n return context.error(`Expected two arguments.`);\n }\n const name = context.parse(args[1], 1, StringType);\n if (!name)\n return context.error(`No image name provided.`);\n return new ImageExpression(name);\n }\n evaluate(ctx) {\n const evaluatedImageName = this.input.evaluate(ctx);\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages)\n value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n return value;\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n serialize() {\n return [\n 'image',\n this.input.serialize()\n ];\n }\n}\n\nconst types$1 = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\nclass Coercion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n const name = args[0];\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error(`Expected one argument.`);\n const type = types$1[name];\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Coercion(type, parsed);\n }\n evaluate(ctx) {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === 'color') {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c)\n return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${ JSON.stringify(input) }: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n }\n }\n }\n throw new RuntimeError(error || `Could not parse color from value '${ typeof input === 'string' ? input : String(JSON.stringify(input)) }'`);\n } else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null)\n return 0;\n const num = Number(value);\n if (isNaN(num))\n continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${ JSON.stringify(value) } to number.`);\n } else if (this.type.kind === 'formatted') {\n return Formatted.fromString(toString$1(this.args[0].evaluate(ctx)));\n } else if (this.type.kind === 'resolvedImage') {\n return ResolvedImage.fromString(toString$1(this.args[0].evaluate(ctx)));\n } else {\n return toString$1(this.args[0].evaluate(ctx));\n }\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n serialize() {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{\n content: this.args[0],\n scale: null,\n font: null,\n textColor: null\n }]).serialize();\n }\n if (this.type.kind === 'resolvedImage') {\n return new ImageExpression(this.args[0]).serialize();\n }\n const serialized = [`to-${ this.type.kind }`];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\n\nconst geometryTypes = [\n 'Unknown',\n 'Point',\n 'LineString',\n 'Polygon'\n];\nclass EvaluationContext {\n constructor() {\n this.globals = null;\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n this.availableImages = null;\n this.canonical = null;\n }\n id() {\n return this.feature && 'id' in this.feature ? this.feature.id : null;\n }\n geometryType() {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n geometry() {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n canonicalID() {\n return this.canonical;\n }\n properties() {\n return this.feature && this.feature.properties || {};\n }\n parseColor(input) {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n }\n}\n\nclass CompoundExpression {\n constructor(name, type, evaluate, args) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n evaluate(ctx) {\n return this._evaluate(ctx, this.args);\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return false;\n }\n serialize() {\n return [this.name].concat(this.args.map(arg => arg.serialize()));\n }\n static parse(args, context) {\n const op = args[0];\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${ op }\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n const type = Array.isArray(definition) ? definition[0] : definition.type;\n const availableOverloads = Array.isArray(definition) ? [[\n definition[1],\n definition[2]\n ]] : definition.overloads;\n const overloads = availableOverloads.filter(([signature]) => !Array.isArray(signature) || signature.length === args.length - 1);\n let signatureContext = null;\n for (const [params, evaluate] of overloads) {\n signatureContext = new ParsingContext(context.registry, context.path, null, context.scope);\n const parsedArgs = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params) ? params[i - 1] : params.type;\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n continue;\n }\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${ params.length } arguments, but found ${ parsedArgs.length } instead.`);\n continue;\n }\n }\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected.map(([params]) => stringifySignature(params)).join(' | ');\n const actualTypes = [];\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed)\n return null;\n actualTypes.push(toString(parsed.type));\n }\n context.error(`Expected arguments of type ${ signatures }, but found (${ actualTypes.join(', ') }) instead.`);\n }\n return null;\n }\n static register(registry, definitions) {\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\nfunction stringifySignature(signature) {\n if (Array.isArray(signature)) {\n return `(${ signature.map(toString).join(', ') })`;\n } else {\n return `(${ toString(signature.type) }...)`;\n }\n}\n\nclass CollatorExpression {\n constructor(caseSensitive, diacriticSensitive, locale) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`Expected one argument.`);\n const options = args[1];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error(`Collator options argument must be an object.`);\n const caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive)\n return null;\n const diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive)\n return null;\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n evaluate(ctx) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n eachChild(fn) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n const options = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\n 'collator',\n options\n ];\n }\n}\n\nconst EXTENT = 8192;\nfunction updateBBox(bbox, coord) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\nfunction mercatorXfromLng(lng) {\n return (180 + lng) / 360;\n}\nfunction mercatorYfromLat(lat) {\n return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))) / 360;\n}\nfunction boxWithinBox(bbox1, bbox2) {\n if (bbox1[0] <= bbox2[0])\n return false;\n if (bbox1[2] >= bbox2[2])\n return false;\n if (bbox1[1] <= bbox2[1])\n return false;\n if (bbox1[3] >= bbox2[3])\n return false;\n return true;\n}\nfunction getTileCoordinates(p, canonical) {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [\n Math.round(x * tilesAtZoom * EXTENT),\n Math.round(y * tilesAtZoom * EXTENT)\n ];\n}\nfunction onBoundary(p, p1, p2) {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return x1 * y2 - x2 * y1 === 0 && x1 * x2 <= 0 && y1 * y2 <= 0;\n}\nfunction rayIntersect(p, p1, p2) {\n return p1[1] > p[1] !== p2[1] > p[1] && p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0];\n}\nfunction pointWithinPolygon(point, rings) {\n let inside = false;\n for (let i = 0, len = rings.length; i < len; i++) {\n const ring = rings[i];\n for (let j = 0, len2 = ring.length; j < len2 - 1; j++) {\n if (onBoundary(point, ring[j], ring[j + 1]))\n return false;\n if (rayIntersect(point, ring[j], ring[j + 1]))\n inside = !inside;\n }\n }\n return inside;\n}\nfunction pointWithinPolygons(point, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (pointWithinPolygon(point, polygons[i]))\n return true;\n }\n return false;\n}\nfunction perp(v1, v2) {\n return v1[0] * v2[1] - v1[1] * v2[0];\n}\nfunction twoSided(p1, p2, q1, q2) {\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = x1 * y3 - x3 * y1;\n const det2 = x2 * y3 - x3 * y2;\n if (det1 > 0 && det2 < 0 || det1 < 0 && det2 > 0)\n return true;\n return false;\n}\nfunction lineIntersectLine(a, b, c, d) {\n const vectorP = [\n b[0] - a[0],\n b[1] - a[1]\n ];\n const vectorQ = [\n d[0] - c[0],\n d[1] - c[1]\n ];\n if (perp(vectorQ, vectorP) === 0)\n return false;\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b))\n return true;\n return false;\n}\nfunction lineIntersectPolygon(p1, p2, polygon) {\n for (const ring of polygon) {\n for (let j = 0; j < ring.length - 1; ++j) {\n if (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\nfunction lineStringWithinPolygon(line, polygon) {\n for (let i = 0; i < line.length; ++i) {\n if (!pointWithinPolygon(line[i], polygon)) {\n return false;\n }\n }\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\nfunction lineStringWithinPolygons(line, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (lineStringWithinPolygon(line, polygons[i]))\n return true;\n }\n return false;\n}\nfunction getTilePolygon(coordinates, bbox, canonical) {\n const polygon = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n return polygon;\n}\nfunction getTilePolygons(coordinates, bbox, canonical) {\n const polygons = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n return polygons;\n}\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = p[0] - polyBBox[0] > halfWorldSize ? -worldSize : polyBBox[0] - p[0] > halfWorldSize ? worldSize : 0;\n if (shift === 0) {\n shift = p[0] - polyBBox[2] > halfWorldSize ? -worldSize : polyBBox[2] - p[0] > halfWorldSize ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\nfunction resetBBox(bbox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [\n canonical.x * EXTENT,\n canonical.y * EXTENT\n ];\n const tilePoints = [];\n for (const points of geometry) {\n for (const point of points) {\n const p = [\n point.x + shifts[0],\n point.y + shifts[1]\n ];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n return tilePoints;\n}\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [\n canonical.x * EXTENT,\n canonical.y * EXTENT\n ];\n const tileLines = [];\n for (const line of geometry) {\n const tileLine = [];\n for (const point of line) {\n const p = [\n point.x + shifts[0],\n point.y + shifts[1]\n ];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\nfunction pointsWithinPolygons(ctx, polygonGeometry) {\n const pointBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const polyBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const canonical = ctx.canonicalID();\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons))\n return false;\n }\n }\n return true;\n}\nfunction linesWithinPolygons(ctx, polygonGeometry) {\n const lineBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const polyBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const canonical = ctx.canonicalID();\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons))\n return false;\n }\n }\n return true;\n}\nclass Within {\n constructor(geojson, geometries) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${ args.length - 1 } instead.`);\n if (isValue(args[1])) {\n const geojson = args[1];\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n const type = geojson.features[i].geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.features[i].geometry);\n }\n }\n } else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`);\n }\n evaluate(ctx) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n eachChild() {\n }\n outputDefined() {\n return true;\n }\n serialize() {\n return [\n 'within',\n this.geojson\n ];\n }\n}\n\nfunction isFeatureConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (e.name === 'properties' || e.name === 'geometry-type' || e.name === 'id') {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n if (e instanceof Within) {\n return false;\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isStateConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isGlobalPropertyConstant(e, properties) {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) {\n return false;\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isGlobalPropertyConstant(arg, properties)) {\n result = false;\n }\n });\n return result;\n}\n\nclass Var {\n constructor(name, boundExpression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n static parse(args, context) {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(`'var' expression requires exactly one string literal argument.`);\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${ name }\". Make sure \"${ name }\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n return new Var(name, context.scope.get(name));\n }\n evaluate(ctx) {\n return this.boundExpression.evaluate(ctx);\n }\n eachChild() {\n }\n outputDefined() {\n return false;\n }\n serialize() {\n return [\n 'var',\n this.name\n ];\n }\n}\n\nclass ParsingContext {\n constructor(registry, path = [], expectedType, scope = new Scope(), errors = []) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => `[${ part }]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n }\n parse(expr, index, expectedType, bindings, options = {}) {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n _parse(expr, options) {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = [\n 'literal',\n expr\n ];\n }\n function annotate(parsed, type, typeAnnotation) {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\n }\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error(`Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].`);\n }\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${ typeof op } instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed)\n return null;\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n if (!(parsed instanceof Literal) && parsed.type.kind !== 'resolvedImage' && isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n return parsed;\n }\n return this.error(`Unknown expression \"${ op }\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n } else if (typeof expr === 'undefined') {\n return this.error(`'undefined' value invalid. Use null instead.`);\n } else if (typeof expr === 'object') {\n return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n } else {\n return this.error(`Expected an array, but found ${ typeof expr } instead.`);\n }\n }\n concat(index, expectedType, bindings) {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(this.registry, path, expectedType || null, scope, this.errors);\n }\n error(error, ...keys) {\n const key = `${ this.key }${ keys.map(k => `[${ k }]`).join('') }`;\n this.errors.push(new ParsingError(key, error));\n }\n checkSubtype(expected, t) {\n const error = checkSubtype(expected, t);\n if (error)\n this.error(error);\n return error;\n }\n}\nfunction isConstant(expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n return false;\n } else if (expression instanceof Within) {\n return false;\n }\n const isTypeAnnotation = expression instanceof Coercion || expression instanceof Assertion;\n let childrenConstant = true;\n expression.eachChild(child => {\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n return isFeatureConstant(expression) && isGlobalPropertyConstant(expression, [\n 'zoom',\n 'heatmap-density',\n 'line-progress',\n 'sky-radial-progress',\n 'accumulated',\n 'is-supported-script'\n ]);\n}\n\nfunction findStopLessThanOrEqualTo(stops, input) {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) {\n return currentIndex;\n }\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n return 0;\n}\n\nclass Step {\n constructor(type, input, stops) {\n this.type = type;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static parse(args, context) {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n const input = context.parse(args[1], 1, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n const labelKey = i;\n const valueKey = i + 1;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([\n label,\n parsed\n ]);\n }\n return new Step(outputType, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined());\n }\n serialize() {\n const serialized = [\n 'step',\n this.input.serialize()\n ];\n for (let i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n }\n}\n\n/*\n * Copyright (C) 2008 Apple Inc. All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\nvar unitbezier = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p2y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype.sampleCurveX = function(t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\n\nUnitBezier.prototype.sampleCurveY = function(t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n};\n\nUnitBezier.prototype.sampleCurveDerivativeX = function(t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n};\n\nUnitBezier.prototype.solveCurveX = function(x, epsilon) {\n if (typeof epsilon === 'undefined') epsilon = 1e-6;\n\n var t0, t1, t2, x2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++) {\n\n x2 = this.sampleCurveX(t2) - x;\n if (Math.abs(x2) < epsilon) return t2;\n\n var d2 = this.sampleCurveDerivativeX(t2);\n if (Math.abs(d2) < 1e-6) break;\n\n t2 = t2 - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n t0 = 0.0;\n t1 = 1.0;\n t2 = x;\n\n if (t2 < t0) return t0;\n if (t2 > t1) return t1;\n\n while (t0 < t1) {\n\n x2 = this.sampleCurveX(t2);\n if (Math.abs(x2 - x) < epsilon) return t2;\n\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n\n t2 = (t1 - t0) * 0.5 + t0;\n }\n\n // Failure.\n return t2;\n};\n\nUnitBezier.prototype.solve = function(x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n\nfunction number(a, b, t) {\n return a * (1 - t) + b * t;\n}\nfunction color(from, to, t) {\n return new Color(number(from.r, to.r, t), number(from.g, to.g, t), number(from.b, to.b, t), number(from.a, to.a, t));\n}\nfunction array$1(from, to, t) {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\n\nvar interpolate = /*#__PURE__*/Object.freeze({\n __proto__: null,\n number: number,\n color: color,\n array: array$1\n});\n\nconst Xn = 0.95047, Yn = 1, Zn = 1.08883, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad = Math.PI / 180, rad2deg = 180 / Math.PI;\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2xyz(x) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\nfunction rgbToLab(rgbColor) {\n const b = rgb2xyz(rgbColor.r), a = rgb2xyz(rgbColor.g), l = rgb2xyz(rgbColor.b), x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn), y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.072175 * l) / Yn), z = xyz2lab((0.0193339 * b + 0.119192 * a + 0.9503041 * l) / Zn);\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\nfunction labToRgb(labColor) {\n let y = (labColor.l + 16) / 116, x = isNaN(labColor.a) ? y : y + labColor.a / 500, z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), xyz2rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), labColor.alpha);\n}\nfunction interpolateLab(from, to, t) {\n return {\n l: number(from.l, to.l, t),\n a: number(from.a, to.a, t),\n b: number(from.b, to.b, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n}\nfunction rgbToHcl(rgbColor) {\n const {l, a, b} = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\nfunction hclToRgb(hclColor) {\n const h = hclColor.h * deg2rad, c = hclColor.c, l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\nfunction interpolateHue(a, b, t) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\nfunction interpolateHcl(from, to, t) {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: number(from.c, to.c, t),\n l: number(from.l, to.l, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n}\nconst lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n};\nconst hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n};\n\nvar colorSpaces = /*#__PURE__*/Object.freeze({\n __proto__: null,\n lab: lab,\n hcl: hcl\n});\n\nclass Interpolate {\n constructor(type, operator, interpolation, input, stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static interpolationFactor(interpolation, input, lower, upper) {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new unitbezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n static parse(args, context) {\n let [operator, interpolation, input, ...rest] = args;\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error(`Expected an interpolation type expression.`, 1);\n }\n if (interpolation[0] === 'linear') {\n interpolation = { name: 'linear' };\n } else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error(`Exponential interpolation requires a numeric base.`, 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (controlPoints.length !== 4 || controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: controlPoints\n };\n } else {\n return context.error(`Unknown interpolation type ${ String(interpolation[0]) }`, 1, 0);\n }\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n input = context.parse(input, 2, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n const labelKey = i + 3;\n const valueKey = i + 4;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([\n label,\n parsed\n ]);\n }\n if (outputType.kind !== 'number' && outputType.kind !== 'color' && !(outputType.kind === 'array' && outputType.itemType.kind === 'number' && typeof outputType.N === 'number')) {\n return context.error(`Type ${ toString(outputType) } is not interpolatable.`);\n }\n return new Interpolate(outputType, operator, interpolation, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n if (this.operator === 'interpolate') {\n return interpolate[this.type.kind.toLowerCase()](outputLower, outputUpper, t);\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined());\n }\n serialize() {\n let interpolation;\n if (this.interpolation.name === 'linear') {\n interpolation = ['linear'];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = ['linear'];\n } else {\n interpolation = [\n 'exponential',\n this.interpolation.base\n ];\n }\n } else {\n interpolation = ['cubic-bezier'].concat(this.interpolation.controlPoints);\n }\n const serialized = [\n this.operator,\n interpolation,\n this.input.serialize()\n ];\n for (let i = 0; i < this.labels.length; i++) {\n serialized.push(this.labels[i], this.outputs[i].serialize());\n }\n return serialized;\n }\n}\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nclass Coalesce {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error('Expectected at least one argument.');\n }\n let outputType = null;\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, { typeAnnotation: 'omit' });\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n const needsAnnotation = expectedType && parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n return needsAnnotation ? new Coalesce(ValueType, parsedArgs) : new Coalesce(outputType, parsedArgs);\n }\n evaluate(ctx) {\n let result = null;\n let argCount = 0;\n let requestedImageName;\n for (const arg of this.args) {\n argCount++;\n result = arg.evaluate(ctx);\n if (result && result instanceof ResolvedImage && !result.available) {\n if (!requestedImageName) {\n requestedImageName = result.name;\n }\n result = null;\n if (argCount === this.args.length) {\n result = requestedImageName;\n }\n }\n if (result !== null)\n break;\n }\n return result;\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n serialize() {\n const serialized = ['coalesce'];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\n\nclass Let {\n constructor(bindings, result) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n evaluate(ctx) {\n return this.result.evaluate(ctx);\n }\n eachChild(fn) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${ args.length - 1 } instead.`);\n const bindings = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${ typeof name } instead.`, i);\n }\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n }\n const value = context.parse(args[i + 1], i + 1);\n if (!value)\n return null;\n bindings.push([\n name,\n value\n ]);\n }\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result)\n return null;\n return new Let(bindings, result);\n }\n outputDefined() {\n return this.result.outputDefined();\n }\n serialize() {\n const serialized = ['let'];\n for (const [name, expr] of this.bindings) {\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n }\n}\n\nclass At {\n constructor(type, index, input) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${ args.length - 1 } instead.`);\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n if (!index || !input)\n return null;\n const t = input.type;\n return new At(t.itemType, index, input);\n }\n evaluate(ctx) {\n const index = this.index.evaluate(ctx);\n const array = this.input.evaluate(ctx);\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${ index } < 0.`);\n }\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${ index } > ${ array.length - 1 }.`);\n }\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${ index } instead.`);\n }\n return array[index];\n }\n eachChild(fn) {\n fn(this.index);\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n serialize() {\n return [\n 'at',\n this.index.serialize(),\n this.input.serialize()\n ];\n }\n}\n\nclass In {\n constructor(needle, haystack) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n static parse(args, context) {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${ args.length - 1 } instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [\n BooleanType,\n StringType,\n NumberType,\n NullType,\n ValueType\n ])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${ toString(needle.type) } instead`);\n }\n return new In(needle, haystack);\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (!haystack)\n return false;\n if (!isValidNativeType(needle, [\n 'boolean',\n 'string',\n 'number',\n 'null'\n ])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${ toString(typeOf(needle)) } instead.`);\n }\n if (!isValidNativeType(haystack, [\n 'string',\n 'array'\n ])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${ toString(typeOf(haystack)) } instead.`);\n }\n return haystack.indexOf(needle) >= 0;\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n }\n outputDefined() {\n return true;\n }\n serialize() {\n return [\n 'in',\n this.needle.serialize(),\n this.haystack.serialize()\n ];\n }\n}\n\nclass IndexOf {\n constructor(needle, haystack, fromIndex) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${ args.length - 1 } instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [\n BooleanType,\n StringType,\n NumberType,\n NullType,\n ValueType\n ])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${ toString(needle.type) } instead`);\n }\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex)\n return null;\n return new IndexOf(needle, haystack, fromIndex);\n } else {\n return new IndexOf(needle, haystack);\n }\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (!isValidNativeType(needle, [\n 'boolean',\n 'string',\n 'number',\n 'null'\n ])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${ toString(typeOf(needle)) } instead.`);\n }\n if (!isValidNativeType(haystack, [\n 'string',\n 'array'\n ])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${ toString(typeOf(haystack)) } instead.`);\n }\n if (this.fromIndex) {\n const fromIndex = this.fromIndex.evaluate(ctx);\n return haystack.indexOf(needle, fromIndex);\n }\n return haystack.indexOf(needle);\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n if (this.fromIndex != null && this.fromIndex !== undefined) {\n const fromIndex = this.fromIndex.serialize();\n return [\n 'index-of',\n this.needle.serialize(),\n this.haystack.serialize(),\n fromIndex\n ];\n }\n return [\n 'index-of',\n this.needle.serialize(),\n this.haystack.serialize()\n ];\n }\n}\n\nclass Match {\n constructor(inputType, outputType, input, cases, outputs, otherwise) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n if (args.length % 2 !== 1)\n return context.error(`Expected an even number of arguments.`);\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error(`Branch labels must be numbers or strings.`);\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${ Number.MAX_SAFE_INTEGER }.`);\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error(`Numeric branch labels must be integer values.`);\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n cases[String(label)] = outputs.length;\n }\n const result = context.parse(value, i, outputType);\n if (!result)\n return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n const input = context.parse(args[1], 1, ValueType);\n if (!input)\n return null;\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype(inputType, input.type)) {\n return null;\n }\n return new Match(inputType, outputType, input, cases, outputs, otherwise);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const output = typeOf(input) === this.inputType && this.outputs[this.cases[input]] || this.otherwise;\n return output.evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n serialize() {\n const serialized = [\n 'match',\n this.input.serialize()\n ];\n const sortedLabels = Object.keys(this.cases).sort();\n const groupedByOutput = [];\n const outputLookup = {};\n for (const label of sortedLabels) {\n const outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([\n this.cases[label],\n [label]\n ]);\n } else {\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n const coerceLabel = label => this.inputType.kind === 'number' ? Number(label) : label;\n for (const [outputIndex, labels] of groupedByOutput) {\n if (labels.length === 1) {\n serialized.push(coerceLabel(labels[0]));\n } else {\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n }\n}\n\nclass Case {\n constructor(type, branches, otherwise) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${ args.length - 1 }.`);\n if (args.length % 2 !== 0)\n return context.error(`Expected an odd number of arguments.`);\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test)\n return null;\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result)\n return null;\n branches.push([\n test,\n result\n ]);\n outputType = outputType || result.type;\n }\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n return new Case(outputType, branches, otherwise);\n }\n evaluate(ctx) {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n eachChild(fn) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n outputDefined() {\n return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n serialize() {\n const serialized = ['case'];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\n\nclass Slice {\n constructor(type, input, beginIndex, endIndex) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${ args.length - 1 } instead.`);\n }\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n if (!input || !beginIndex)\n return null;\n if (!isValidType(input.type, [\n array(ValueType),\n StringType,\n ValueType\n ])) {\n return context.error(`Expected first argument to be of type array or string, but found ${ toString(input.type) } instead`);\n }\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex)\n return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n } else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const beginIndex = this.beginIndex.evaluate(ctx);\n if (!isValidNativeType(input, [\n 'string',\n 'array'\n ])) {\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${ toString(typeOf(input)) } instead.`);\n }\n if (this.endIndex) {\n const endIndex = this.endIndex.evaluate(ctx);\n return input.slice(beginIndex, endIndex);\n }\n return input.slice(beginIndex);\n }\n eachChild(fn) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n if (this.endIndex != null && this.endIndex !== undefined) {\n const endIndex = this.endIndex.serialize();\n return [\n 'slice',\n this.input.serialize(),\n this.beginIndex.serialize(),\n endIndex\n ];\n }\n return [\n 'slice',\n this.input.serialize(),\n this.beginIndex.serialize()\n ];\n }\n}\n\nfunction isComparableType(op, type) {\n if (op === '==' || op === '!=') {\n return type.kind === 'boolean' || type.kind === 'string' || type.kind === 'number' || type.kind === 'null' || type.kind === 'value';\n } else {\n return type.kind === 'string' || type.kind === 'number' || type.kind === 'value';\n }\n}\nfunction eq(ctx, a, b) {\n return a === b;\n}\nfunction neq(ctx, a, b) {\n return a !== b;\n}\nfunction lt(ctx, a, b) {\n return a < b;\n}\nfunction gt(ctx, a, b) {\n return a > b;\n}\nfunction lteq(ctx, a, b) {\n return a <= b;\n}\nfunction gteq(ctx, a, b) {\n return a >= b;\n}\nfunction eqCollate(ctx, a, b, c) {\n return c.compare(a, b) === 0;\n}\nfunction neqCollate(ctx, a, b, c) {\n return !eqCollate(ctx, a, b, c);\n}\nfunction ltCollate(ctx, a, b, c) {\n return c.compare(a, b) < 0;\n}\nfunction gtCollate(ctx, a, b, c) {\n return c.compare(a, b) > 0;\n}\nfunction lteqCollate(ctx, a, b, c) {\n return c.compare(a, b) <= 0;\n}\nfunction gteqCollate(ctx, a, b, c) {\n return c.compare(a, b) >= 0;\n}\nfunction makeComparison(op, compareBasic, compareWithCollator) {\n const isOrderComparison = op !== '==' && op !== '!=';\n return class Comparison {\n constructor(lhs, rhs, collator) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n static parse(args, context) {\n if (args.length !== 3 && args.length !== 4)\n return context.error(`Expected two or three arguments.`);\n const op = args[0];\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs)\n return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${ op }\" comparisons are not supported for type '${ toString(lhs.type) }'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs)\n return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${ op }\" comparisons are not supported for type '${ toString(rhs.type) }'.`);\n }\n if (lhs.type.kind !== rhs.type.kind && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n return context.error(`Cannot compare types '${ toString(lhs.type) }' and '${ toString(rhs.type) }'.`);\n }\n if (isOrderComparison) {\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n lhs = new Assertion(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n let collator = null;\n if (args.length === 4) {\n if (lhs.type.kind !== 'string' && rhs.type.kind !== 'string' && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n return context.error(`Cannot use collator to compare non-string types.`);\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator)\n return null;\n }\n return new Comparison(lhs, rhs, collator);\n }\n evaluate(ctx) {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${ op }\" to be (string, string) or (number, number), but found (${ lt.kind }, ${ rt.kind }) instead.`);\n }\n }\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n return this.collator ? compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) : compareBasic(ctx, lhs, rhs);\n }\n eachChild(fn) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n outputDefined() {\n return true;\n }\n serialize() {\n const serialized = [op];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n };\n}\nconst Equals = makeComparison('==', eq, eqCollate);\nconst NotEquals = makeComparison('!=', neq, neqCollate);\nconst LessThan = makeComparison('<', lt, ltCollate);\nconst GreaterThan = makeComparison('>', gt, gtCollate);\nconst LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nconst GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\nclass NumberFormat {\n constructor(number, locale, currency, minFractionDigits, maxFractionDigits) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error(`Expected two arguments.`);\n const number = context.parse(args[1], 1, NumberType);\n if (!number)\n return null;\n const options = args[2];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error(`NumberFormat options argument must be an object.`);\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency)\n return null;\n }\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits)\n return null;\n }\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits)\n return null;\n }\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n }\n evaluate(ctx) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n style: this.currency ? 'currency' : 'decimal',\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined\n }).format(this.number.evaluate(ctx));\n }\n eachChild(fn) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n const options = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\n 'number-format',\n this.number.serialize(),\n options\n ];\n }\n}\n\nclass Length {\n constructor(input) {\n this.type = NumberType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${ args.length - 1 } instead.`);\n const input = context.parse(args[1], 1);\n if (!input)\n return null;\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${ toString(input.type) } instead.`);\n return new Length(input);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${ toString(typeOf(input)) } instead.`);\n }\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n serialize() {\n const serialized = ['length'];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\n\nconst expressions = {\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'image': ImageExpression,\n 'in': In,\n 'index-of': IndexOf,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'slice': Slice,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var,\n 'within': Within\n};\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error)\n throw new RuntimeError(error);\n return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\nfunction has(key, obj) {\n return key in obj;\n}\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = i + j >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\nfunction varargs(type) {\n return { type };\n}\nCompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => {\n throw new RuntimeError(v.evaluate(ctx));\n }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => toString(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [\n NumberType,\n NumberType,\n NumberType\n ],\n rgba\n ],\n 'rgba': [\n ColorType,\n [\n NumberType,\n NumberType,\n NumberType,\n NumberType\n ],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ],\n [\n [\n StringType,\n ObjectType\n ],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ],\n [\n [\n StringType,\n ObjectType\n ],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n 'properties': [\n ObjectType,\n [],\n ctx => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n ctx => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n ctx => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n ctx => ctx.globals.zoom\n ],\n 'heatmap-density': [\n NumberType,\n [],\n ctx => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n ctx => ctx.globals.lineProgress || 0\n ],\n 'sky-radial-progress': [\n NumberType,\n [],\n ctx => ctx.globals.skyRadialProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n ctx => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [\n NumberType,\n NumberType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ],\n [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => ctx.properties()[k.value] === v.value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === v.value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === v.value\n ],\n 'filter-<': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => k.value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n ctx => ctx.id() !== null && ctx.id() !== undefined\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n (ctx, [v]) => v.value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n (ctx, [v]) => v.value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [\n StringType,\n array(ValueType)\n ],\n (ctx, [k, v]) => v.value.indexOf(ctx.properties()[k.value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [\n StringType,\n array(ValueType)\n ],\n (ctx, [k, v]) => binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [\n BooleanType,\n BooleanType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [\n BooleanType,\n BooleanType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map(arg => toString$1(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\n\nfunction success(value) {\n return {\n result: 'success',\n value\n };\n}\nfunction error(value) {\n return {\n result: 'error',\n value\n };\n}\n\nfunction supportsPropertyExpression(spec) {\n return spec['property-type'] === 'data-driven' || spec['property-type'] === 'cross-faded-data-driven';\n}\nfunction supportsZoomExpression(spec) {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\nfunction supportsInterpolation(spec) {\n return !!spec.expression && spec.expression.interpolated;\n}\n\nfunction getType(val) {\n if (val instanceof Number) {\n return 'number';\n } else if (val instanceof String) {\n return 'string';\n } else if (val instanceof Boolean) {\n return 'boolean';\n } else if (Array.isArray(val)) {\n return 'array';\n } else if (val === null) {\n return 'null';\n } else {\n return typeof val;\n }\n}\n\nfunction isFunction$1(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\nfunction identityFunction(x) {\n return x;\n}\nfunction createFunction(parameters, propertySpec) {\n const isColor = propertySpec.type === 'color';\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n if (isColor) {\n parameters = extend({}, parameters);\n if (parameters.stops) {\n parameters.stops = parameters.stops.map(stop => {\n return [\n stop[0],\n Color.parse(stop[1])\n ];\n });\n }\n if (parameters.default) {\n parameters.default = Color.parse(parameters.default);\n } else {\n parameters.default = Color.parse(propertySpec.default);\n }\n }\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) {\n throw new Error(`Unknown color space: ${ parameters.colorSpace }`);\n }\n let innerFun;\n let hashedStops;\n let categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n } else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n } else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n hashedStops = Object.create(null);\n for (const stop of parameters.stops) {\n hashedStops[stop[0]] = stop[1];\n }\n categoricalKeyType = typeof parameters.stops[0][0];\n } else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n } else {\n throw new Error(`Unknown function type \"${ type }\"`);\n }\n if (zoomAndFeatureDependent) {\n const featureFunctions = {};\n const zoomStops = [];\n for (let s = 0; s < parameters.stops.length; s++) {\n const stop = parameters.stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([\n stop[0].value,\n stop[1]\n ]);\n }\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([\n featureFunctions[z].zoom,\n createFunction(featureFunctions[z], propertySpec)\n ]);\n }\n const interpolationType = { name: 'linear' };\n return {\n kind: 'composite',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: featureFunctionStops.map(s => s[0]),\n evaluate({zoom}, properties) {\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n } else if (zoomDependent) {\n const interpolationType = type === 'exponential' ? {\n name: 'exponential',\n base: parameters.base !== undefined ? parameters.base : 1\n } : null;\n return {\n kind: 'camera',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: parameters.stops.map(s => s[0]),\n evaluate: ({zoom}) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n } else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\nfunction coalesce(a, b, c) {\n if (a !== undefined)\n return a;\n if (b !== undefined)\n return b;\n if (c !== undefined)\n return c;\n}\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined;\n return coalesce(evaluated, parameters.default, propertySpec.default);\n}\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n if (getType(input) !== 'number')\n return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1)\n return parameters.stops[0][1];\n if (input <= parameters.stops[0][0])\n return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0])\n return parameters.stops[n - 1][1];\n const index = findStopLessThanOrEqualTo(parameters.stops.map(stop => stop[0]), input);\n return parameters.stops[index][1];\n}\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n if (getType(input) !== 'number')\n return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1)\n return parameters.stops[0][1];\n if (input <= parameters.stops[0][0])\n return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0])\n return parameters.stops[n - 1][1];\n const index = findStopLessThanOrEqualTo(parameters.stops.map(stop => stop[0]), input);\n const t = interpolationFactor(input, base, parameters.stops[index][0], parameters.stops[index + 1][0]);\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n let interp = interpolate[propertySpec.type] || identityFunction;\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n const colorspace = colorSpaces[parameters.colorSpace];\n interp = (a, b) => colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n }\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t);\n }\n };\n }\n return interp(outputLower, outputUpper, t);\n}\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n if (propertySpec.type === 'color') {\n input = Color.parse(input);\n } else if (propertySpec.type === 'formatted') {\n input = Formatted.fromString(input.toString());\n } else if (propertySpec.type === 'resolvedImage') {\n input = ResolvedImage.fromString(input.toString());\n } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n return coalesce(input, parameters.default, propertySpec.default);\n}\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nclass StyleExpression {\n constructor(expression, propertySpec) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n return this.expression.evaluate(this._evaluator);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n try {\n const val = this.expression.evaluate(this._evaluator);\n if (val === null || val === undefined || typeof val === 'number' && val !== val) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${ Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ') }, but found ${ JSON.stringify(val) } instead.`);\n }\n return val;\n } catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\nfunction isExpression(expression) {\n return Array.isArray(expression) && expression.length > 0 && typeof expression[0] === 'string' && expression[0] in expressions;\n}\nfunction createExpression(expression, propertySpec) {\n const parser = new ParsingContext(expressions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n const parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n if (!parsed) {\n return error(parser.errors);\n }\n return success(new StyleExpression(parsed, propertySpec));\n}\nclass ZoomConstantExpression {\n constructor(kind, expression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'constant' && !isStateConstant(expression.expression);\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\nclass ZoomDependentExpression {\n constructor(kind, expression, zoomStops, interpolationType) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'camera' && !isStateConstant(expression.expression);\n this.interpolationType = interpolationType;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n interpolationFactor(input, lower, upper) {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\nfunction createPropertyExpression(expression, propertySpec) {\n expression = createExpression(expression, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n const parsed = expression.value.expression;\n const isFeatureConstant$1 = isFeatureConstant(parsed);\n if (!isFeatureConstant$1 && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError('', 'data expressions not supported')]);\n }\n const isZoomConstant = isGlobalPropertyConstant(parsed, ['zoom']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError('', 'zoom expressions not supported')]);\n }\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n if (!zoomCurve) {\n return success(isFeatureConstant$1 ? new ZoomConstantExpression('constant', expression.value) : new ZoomConstantExpression('source', expression.value));\n }\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n return success(isFeatureConstant$1 ? new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType) : new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType));\n}\nclass StylePropertyFunction {\n constructor(parameters, specification) {\n this._parameters = parameters;\n this._specification = specification;\n extend(this, createFunction(this._parameters, this._specification));\n }\n static deserialize(serialized) {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n }\n static serialize(input) {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\nfunction normalizePropertyExpression(value, specification) {\n if (isFunction$1(value)) {\n return new StylePropertyFunction(value, specification);\n } else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification);\n if (expression.result === 'error') {\n throw new Error(expression.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n }\n return expression.value;\n } else {\n let constant = value;\n if (typeof value === 'string' && specification.type === 'color') {\n constant = Color.parse(value);\n }\n return {\n kind: 'constant',\n evaluate: () => constant\n };\n }\n}\nfunction findZoomCurve(expression) {\n let result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n } else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n } else if ((expression instanceof Step || expression instanceof Interpolate) && expression.input instanceof CompoundExpression && expression.input.name === 'zoom') {\n result = expression;\n }\n if (result instanceof ParsingError) {\n return result;\n }\n expression.eachChild(child => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n return result;\n}\nfunction getExpectedType(spec) {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n resolvedImage: ResolvedImageType\n };\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n return types[spec.type];\n}\nfunction getDefaultValue(spec) {\n if (spec.type === 'color' && isFunction$1(spec.default)) {\n return new Color(0, 0, 0, 0);\n } else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n}\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? [\n 'literal',\n value\n ] : value;\n}\nfunction convertFunction(parameters, propertySpec) {\n let stops = parameters.stops;\n if (!stops) {\n return convertIdentityFunction(parameters, propertySpec);\n }\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n stops = stops.map(stop => {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [\n stop[0],\n convertTokenString(stop[1])\n ];\n }\n return [\n stop[0],\n convertLiteral(stop[1])\n ];\n });\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n } else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\nfunction convertIdentityFunction(parameters, propertySpec) {\n const get = [\n 'get',\n parameters.property\n ];\n if (parameters.default === undefined) {\n return propertySpec.type === 'string' ? [\n 'string',\n get\n ] : get;\n } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n const expression = [\n propertySpec.type === 'color' ? 'to-color' : propertySpec.type,\n get,\n convertLiteral(parameters.default)\n ];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl':\n return 'interpolate-hcl';\n case 'lab':\n return 'interpolate-lab';\n default:\n return 'interpolate';\n }\n}\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n const featureFunctionParameters = {};\n const featureFunctionStops = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([\n stop[0].value,\n stop[1]\n ]);\n }\n const functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n const expression = [\n getInterpolateOperator(parameters),\n ['linear'],\n ['zoom']\n ];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n return expression;\n } else {\n const expression = [\n 'step',\n ['zoom']\n ];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n }\n}\nfunction coalesce$1(a, b) {\n if (a !== undefined)\n return a;\n if (b !== undefined)\n return b;\n}\nfunction getFallback(parameters, propertySpec) {\n const defaultValue = convertLiteral(coalesce$1(parameters.default, propertySpec.default));\n if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n return '';\n }\n return defaultValue;\n}\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n const type = getFunctionType(parameters, propertySpec);\n const get = [\n 'get',\n parameters.property\n ];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n const expression = ['case'];\n for (const stop of stops) {\n expression.push([\n '==',\n get,\n stop[0]\n ], stop[1]);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'categorical') {\n const expression = [\n 'match',\n get\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'interval') {\n const expression = [\n 'step',\n [\n 'number',\n get\n ]\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined ? expression : [\n 'case',\n [\n '==',\n [\n 'typeof',\n get\n ],\n 'number'\n ],\n expression,\n convertLiteral(parameters.default)\n ];\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : [\n 'exponential',\n base\n ],\n [\n 'number',\n get\n ]\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n [\n '==',\n [\n 'typeof',\n get\n ],\n 'number'\n ],\n expression,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error(`Unknown property function type ${ type }`);\n }\n}\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n const type = getFunctionType(parameters, propertySpec);\n let expression;\n let isStep = false;\n if (type === 'interval') {\n expression = [\n 'step',\n input\n ];\n isStep = true;\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : [\n 'exponential',\n base\n ],\n input\n ];\n } else {\n throw new Error(`Unknown zoom function type \"${ type }\"`);\n }\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n}\nfunction fixupDegenerateStepCurve(expression) {\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\nfunction appendStopPair(curve, input, output, isStep) {\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n } else {\n return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n }\n}\nfunction convertTokenString(s) {\n const result = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0)\n result.push(literal);\n result.push([\n 'get',\n match[1]\n ]);\n }\n if (result.length === 1) {\n return s;\n }\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return [\n 'to-string',\n result[1]\n ];\n }\n return result;\n}\n\nfunction isExpressionFilter(filter) {\n if (filter === true || filter === false) {\n return true;\n }\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n case '!in':\n case '!has':\n case 'none':\n return false;\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n default:\n return true;\n }\n}\nconst filterSpec = {\n 'type': 'boolean',\n 'default': false,\n 'transition': false,\n 'property-type': 'data-driven',\n 'expression': {\n 'interpolated': false,\n 'parameters': [\n 'zoom',\n 'feature'\n ]\n }\n};\nfunction createFilter(filter) {\n if (filter === null || filter === undefined) {\n return {\n filter: () => true,\n needGeometry: false\n };\n }\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n const compiled = createExpression(filter, filterSpec);\n if (compiled.result === 'error') {\n throw new Error(compiled.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n } else {\n const needGeometry = geometryNeeded(filter);\n return {\n filter: (globalProperties, feature, canonical) => compiled.value.evaluate(globalProperties, feature, {}, canonical),\n needGeometry\n };\n }\n}\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter))\n return false;\n if (filter[0] === 'within')\n return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index]))\n return true;\n }\n return false;\n}\nfunction convertFilter(filter) {\n if (!filter)\n return true;\n const op = filter[0];\n if (filter.length <= 1)\n return op !== 'any';\n const converted = op === '==' ? convertComparisonOp(filter[1], filter[2], '==') : op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) : op === '<' || op === '>' || op === '<=' || op === '>=' ? convertComparisonOp(filter[1], filter[2], op) : op === 'any' ? convertDisjunctionOp(filter.slice(1)) : op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) : op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) : op === 'in' ? convertInOp(filter[1], filter.slice(2)) : op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) : op === 'has' ? convertHasOp(filter[1]) : op === '!has' ? convertNegation(convertHasOp(filter[1])) : op === 'within' ? filter : true;\n return converted;\n}\nfunction convertComparisonOp(property, value, op) {\n switch (property) {\n case '$type':\n return [\n `filter-type-${ op }`,\n value\n ];\n case '$id':\n return [\n `filter-id-${ op }`,\n value\n ];\n default:\n return [\n `filter-${ op }`,\n property,\n value\n ];\n }\n}\nfunction convertDisjunctionOp(filters) {\n return ['any'].concat(filters.map(convertFilter));\n}\nfunction convertInOp(property, values) {\n if (values.length === 0) {\n return false;\n }\n switch (property) {\n case '$type':\n return [\n `filter-type-in`,\n [\n 'literal',\n values\n ]\n ];\n case '$id':\n return [\n `filter-id-in`,\n [\n 'literal',\n values\n ]\n ];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return [\n 'filter-in-large',\n property,\n [\n 'literal',\n values.sort(compare)\n ]\n ];\n } else {\n return [\n 'filter-in-small',\n property,\n [\n 'literal',\n values\n ]\n ];\n }\n }\n}\nfunction convertHasOp(property) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return [`filter-has-id`];\n default:\n return [\n `filter-has`,\n property\n ];\n }\n}\nfunction convertNegation(filter) {\n return [\n '!',\n filter\n ];\n}\n\nfunction convertFilter$1(filter) {\n return _convertFilter(filter, {});\n}\nfunction _convertFilter(filter, expectedTypes) {\n if (isExpressionFilter(filter)) {\n return filter;\n }\n if (!filter)\n return true;\n const op = filter[0];\n if (filter.length <= 1)\n return op !== 'any';\n let converted;\n if (op === '==' || op === '!=' || op === '<' || op === '>' || op === '<=' || op === '>=') {\n const [, property, value] = filter;\n converted = convertComparisonOp$1(property, value, op, expectedTypes);\n } else if (op === 'any') {\n const children = filter.slice(1).map(f => {\n const types = {};\n const child = _convertFilter(f, types);\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : [\n 'case',\n typechecks,\n child,\n false\n ];\n });\n return ['any'].concat(children);\n } else if (op === 'all') {\n const children = filter.slice(1).map(f => _convertFilter(f, expectedTypes));\n return children.length > 1 ? ['all'].concat(children) : [].concat(...children);\n } else if (op === 'none') {\n return [\n '!',\n _convertFilter(['any'].concat(filter.slice(1)), {})\n ];\n } else if (op === 'in') {\n converted = convertInOp$1(filter[1], filter.slice(2));\n } else if (op === '!in') {\n converted = convertInOp$1(filter[1], filter.slice(2), true);\n } else if (op === 'has') {\n converted = convertHasOp$1(filter[1]);\n } else if (op === '!has') {\n converted = [\n '!',\n convertHasOp$1(filter[1])\n ];\n } else {\n converted = true;\n }\n return converted;\n}\nfunction runtimeTypeChecks(expectedTypes) {\n const conditions = [];\n for (const property in expectedTypes) {\n const get = property === '$id' ? ['id'] : [\n 'get',\n property\n ];\n conditions.push([\n '==',\n [\n 'typeof',\n get\n ],\n expectedTypes[property]\n ]);\n }\n if (conditions.length === 0)\n return true;\n if (conditions.length === 1)\n return conditions[0];\n return ['all'].concat(conditions);\n}\nfunction convertComparisonOp$1(property, value, op, expectedTypes) {\n let get;\n if (property === '$type') {\n return [\n op,\n ['geometry-type'],\n value\n ];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = [\n 'get',\n property\n ];\n }\n if (expectedTypes && value !== null) {\n const type = typeof value;\n expectedTypes[property] = type;\n }\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n [\n 'has',\n property\n ],\n [\n '==',\n get,\n null\n ]\n ];\n } else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n [\n '!',\n [\n 'has',\n property\n ]\n ],\n [\n '!=',\n get,\n null\n ]\n ];\n }\n return [\n op,\n get,\n value\n ];\n}\nfunction convertInOp$1(property, values, negate = false) {\n if (values.length === 0)\n return negate;\n let get;\n if (property === '$type') {\n get = ['geometry-type'];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = [\n 'get',\n property\n ];\n }\n let uniformTypes = true;\n const type = typeof values[0];\n for (const value of values) {\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n if (uniformTypes && (type === 'string' || type === 'number')) {\n const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n return [\n 'match',\n get,\n uniqueValues,\n !negate,\n negate\n ];\n }\n return [negate ? 'all' : 'any'].concat(values.map(v => [\n negate ? '!=' : '==',\n get,\n v\n ]));\n}\nfunction convertHasOp$1(property) {\n if (property === '$type') {\n return true;\n } else if (property === '$id') {\n return [\n '!=',\n ['id'],\n null\n ];\n } else {\n return [\n 'has',\n property\n ];\n }\n}\n\nfunction migrateToExpressions (style) {\n const converted = [];\n eachLayer(style, layer => {\n if (layer.filter) {\n layer.filter = convertFilter$1(layer.filter);\n }\n });\n eachProperty(style, {\n paint: true,\n layout: true\n }, ({path, value, reference, set}) => {\n if (isExpression(value))\n return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n } else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n return style;\n}\n\nfunction migrate (style) {\n let migrated = false;\n if (style.version === 7) {\n style = migrateToV8(style);\n migrated = true;\n }\n if (style.version === 8) {\n migrated = migrateToExpressions(style);\n migrated = true;\n }\n if (!migrated) {\n throw new Error('cannot migrate from', style.version);\n }\n return style;\n}\n\nfunction composite (style) {\n const styleIDs = [];\n const sourceIDs = [];\n const compositedSourceLayers = [];\n for (const id in style.sources) {\n const source = style.sources[id];\n if (source.type !== 'vector')\n continue;\n const match = /^mapbox:\\/\\/(.*)/.exec(source.url);\n if (!match)\n continue;\n styleIDs.push(id);\n sourceIDs.push(match[1]);\n }\n if (styleIDs.length < 2)\n return style;\n styleIDs.forEach(id => {\n delete style.sources[id];\n });\n const compositeID = sourceIDs.join(',');\n style.sources[compositeID] = {\n 'type': 'vector',\n 'url': `mapbox://${ compositeID }`\n };\n style.layers.forEach(layer => {\n if (styleIDs.indexOf(layer.source) >= 0) {\n layer.source = compositeID;\n if ('source-layer' in layer) {\n if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {\n throw new Error('Conflicting source layer names');\n } else {\n compositedSourceLayers.push(layer['source-layer']);\n }\n }\n }\n });\n return style;\n}\n\nvar refProperties = [\n 'type',\n 'source',\n 'source-layer',\n 'minzoom',\n 'maxzoom',\n 'filter',\n 'layout'\n];\n\nfunction deref(layer, parent) {\n const result = {};\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n refProperties.forEach(k => {\n if (k in parent) {\n result[k] = parent[k];\n }\n });\n return result;\n}\nfunction derefLayers(layers) {\n layers = layers.slice();\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[layers[i].ref]);\n }\n }\n return layers;\n}\n\nfunction deepEqual(a, b) {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i]))\n return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object'))\n return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a === b;\n}\n\nconst operations = {\n setStyle: 'setStyle',\n addLayer: 'addLayer',\n removeLayer: 'removeLayer',\n setPaintProperty: 'setPaintProperty',\n setLayoutProperty: 'setLayoutProperty',\n setFilter: 'setFilter',\n addSource: 'addSource',\n removeSource: 'removeSource',\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n setLayerZoomRange: 'setLayerZoomRange',\n setLayerProperty: 'setLayerProperty',\n setCenter: 'setCenter',\n setZoom: 'setZoom',\n setBearing: 'setBearing',\n setPitch: 'setPitch',\n setSprite: 'setSprite',\n setGlyphs: 'setGlyphs',\n setTransition: 'setTransition',\n setLight: 'setLight',\n setTerrain: 'setTerrain'\n};\nfunction addSource(sourceId, after, commands) {\n commands.push({\n command: operations.addSource,\n args: [\n sourceId,\n after[sourceId]\n ]\n });\n}\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({\n command: operations.removeSource,\n args: [sourceId]\n });\n sourcesRemoved[sourceId] = true;\n}\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop))\n continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop))\n continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\nfunction diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n let sourceId;\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId))\n continue;\n if (!after.hasOwnProperty(sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId))\n continue;\n if (!before.hasOwnProperty(sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!deepEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({\n command: operations.setGeoJSONSourceData,\n args: [\n sourceId,\n after[sourceId].data\n ]\n });\n } else {\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n let prop;\n for (prop in before) {\n if (!before.hasOwnProperty(prop))\n continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({\n command,\n args: [\n layerId,\n prop,\n after[prop],\n klass\n ]\n });\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop))\n continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({\n command,\n args: [\n layerId,\n prop,\n after[prop],\n klass\n ]\n });\n }\n }\n}\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\nfunction diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n const tracker = beforeOrder.slice();\n const clean = Object.create(null);\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({\n command: operations.removeLayer,\n args: [layerId]\n });\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n d++;\n }\n }\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[afterOrder.length - 1 - i];\n if (tracker[tracker.length - 1 - i] === layerId)\n continue;\n if (beforeIndex.hasOwnProperty(layerId)) {\n commands.push({\n command: operations.removeLayer,\n args: [layerId]\n });\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n d++;\n }\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({\n command: operations.addLayer,\n args: [\n afterIndex[layerId],\n insertBeforeLayerId\n ]\n });\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n if (clean[layerId] || deepEqual(beforeLayer, afterLayer))\n continue;\n if (!deepEqual(beforeLayer.source, afterLayer.source) || !deepEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !deepEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({\n command: operations.removeLayer,\n args: [layerId]\n });\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({\n command: operations.addLayer,\n args: [\n afterLayer,\n insertBeforeLayerId\n ]\n });\n continue;\n }\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!deepEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({\n command: operations.setFilter,\n args: [\n layerId,\n afterLayer.filter\n ]\n });\n }\n if (!deepEqual(beforeLayer.minzoom, afterLayer.minzoom) || !deepEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({\n command: operations.setLayerZoomRange,\n args: [\n layerId,\n afterLayer.minzoom,\n afterLayer.maxzoom\n ]\n });\n }\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop))\n continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom')\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({\n command: operations.setLayerProperty,\n args: [\n layerId,\n prop,\n afterLayer[prop]\n ]\n });\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop))\n continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' || prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom')\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({\n command: operations.setLayerProperty,\n args: [\n layerId,\n prop,\n afterLayer[prop]\n ]\n });\n }\n }\n }\n}\nfunction diffStyles(before, after) {\n if (!before)\n return [{\n command: operations.setStyle,\n args: [after]\n }];\n let commands = [];\n try {\n if (!deepEqual(before.version, after.version)) {\n return [{\n command: operations.setStyle,\n args: [after]\n }];\n }\n if (!deepEqual(before.center, after.center)) {\n commands.push({\n command: operations.setCenter,\n args: [after.center]\n });\n }\n if (!deepEqual(before.zoom, after.zoom)) {\n commands.push({\n command: operations.setZoom,\n args: [after.zoom]\n });\n }\n if (!deepEqual(before.bearing, after.bearing)) {\n commands.push({\n command: operations.setBearing,\n args: [after.bearing]\n });\n }\n if (!deepEqual(before.pitch, after.pitch)) {\n commands.push({\n command: operations.setPitch,\n args: [after.pitch]\n });\n }\n if (!deepEqual(before.sprite, after.sprite)) {\n commands.push({\n command: operations.setSprite,\n args: [after.sprite]\n });\n }\n if (!deepEqual(before.glyphs, after.glyphs)) {\n commands.push({\n command: operations.setGlyphs,\n args: [after.glyphs]\n });\n }\n if (!deepEqual(before.transition, after.transition)) {\n commands.push({\n command: operations.setTransition,\n args: [after.transition]\n });\n }\n if (!deepEqual(before.light, after.light)) {\n commands.push({\n command: operations.setLight,\n args: [after.light]\n });\n }\n if (!deepEqual(before.terrain, after.terrain)) {\n commands.push({\n command: operations.setTerrain,\n args: [after.terrain]\n });\n }\n const sourcesRemoved = {};\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach(layer => {\n if (sourcesRemoved[layer.source]) {\n commands.push({\n command: operations.removeLayer,\n args: [layer.id]\n });\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n commands = commands.concat(removeOrAddSourceCommands);\n diffLayers(beforeLayers, after.layers, commands);\n } catch (e) {\n console.warn('Unable to compute style diff:', e);\n commands = [{\n command: operations.setStyle,\n args: [after]\n }];\n }\n return commands;\n}\n\nclass ValidationError {\n constructor(key, value, message, identifier) {\n this.message = (key ? `${ key }: ` : '') + message;\n if (identifier)\n this.identifier = identifier;\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n\nclass ParsingError$1 {\n constructor(error) {\n this.error = error;\n this.message = error.message;\n const match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n }\n}\n\nfunction validateConstants(options) {\n const key = options.key;\n const constants = options.value;\n if (constants) {\n return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n } else {\n return [];\n }\n}\n\nfunction unbundle(value) {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n}\nfunction deepUnbundle(value) {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n return unbundle(value);\n}\n\nfunction validateObject(options) {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n let errors = [];\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${ type } found`)];\n }\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0];\n const elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n let validateElement;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n } else if (elementSpecs[elementSpecKey]) {\n validateElement = validate;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validate;\n } else {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${ objectKey }\"`));\n continue;\n }\n errors = errors.concat(validateElement({\n key: (key ? `${ key }.` : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey\n }, object));\n }\n for (const elementSpecKey in elementSpecs) {\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${ elementSpecKey }\"`));\n }\n }\n return errors;\n}\n\nfunction validateArray(options) {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validate;\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${ getType(array) } found`)];\n }\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${ arraySpec.length } expected, length ${ array.length } found`)];\n }\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${ arraySpec['min-length'] } expected, length ${ array.length } found`)];\n }\n let arrayElementSpec = {\n 'type': arraySpec.value,\n 'values': arraySpec.values\n };\n if (styleSpec.$version < 7) {\n arrayElementSpec.function = arraySpec.function;\n }\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n let errors = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n style,\n styleSpec,\n key: `${ key }[${ i }]`\n }));\n }\n return errors;\n}\n\nfunction validateNumber(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n let type = getType(value);\n if (type === 'number' && value !== value) {\n type = 'NaN';\n }\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${ type } found`)];\n }\n if ('minimum' in valueSpec && value < valueSpec.minimum) {\n return [new ValidationError(key, value, `${ value } is less than the minimum value ${ valueSpec.minimum }`)];\n }\n if ('maximum' in valueSpec && value > valueSpec.maximum) {\n return [new ValidationError(key, value, `${ value } is greater than the maximum value ${ valueSpec.maximum }`)];\n }\n return [];\n}\n\nfunction validateFunction(options) {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction = getType(options.value.stops) === 'array' && getType(options.value.stops[0]) === 'array' && getType(options.value.stops[0][0]) === 'object';\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n return errors;\n function validateFunctionStops(options) {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n let errors = [];\n const value = options.value;\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n return errors;\n }\n function validateFunctionStop(options) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${ getType(value) } found`)];\n }\n if (value.length !== 2) {\n return [new ValidationError(key, value, `array length 2 expected, length ${ value.length } found`)];\n }\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [new ValidationError(key, value, `object expected, ${ getType(value[0]) } found`)];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n previousStopDomainZoom = unbundle(value[0].zoom);\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${ key }[0]`,\n value: value[0],\n valueSpec: { zoom: {} },\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n zoom: validateNumber,\n value: validateStopDomainValue\n }\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: `${ key }[0]`,\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${ key }[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n return errors.concat(validate({\n key: `${ key }[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n function validateStopDomainValue(options, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n const reportValue = options.value !== null ? options.value : stop;\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, `${ type } stop domain type must match previous stop domain type ${ stopKeyType }`)];\n }\n if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${ type } found`;\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n if (functionType === 'categorical' && type === 'number' && (!isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${ value }`)];\n }\n if (functionType !== 'categorical' && type === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n if (functionType === 'categorical' && value in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[value] = true;\n }\n return [];\n }\n function validateFunctionDefault(options) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n\nfunction validateExpression(options) {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map(error => {\n return new ValidationError(`${ options.key }${ error.key }`, options.value, error.message);\n });\n }\n const expressionObj = expression.value.expression || expression.value._styleExpression.expression;\n if (options.expressionContext === 'property' && options.propertyKey === 'text-font' && !expressionObj.outputDefined()) {\n return [new ValidationError(options.key, options.value, `Invalid data expression for \"${ options.propertyKey }\". Output values must be contained as literals within the expression.`)];\n }\n if (options.expressionContext === 'property' && options.propertyType === 'layout' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')];\n }\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, [\n 'zoom',\n 'feature-state'\n ])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n return [];\n}\n\nfunction validateBoolean(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${ type } found`)];\n }\n return [];\n}\n\nfunction validateColor(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${ type } found`)];\n }\n if (csscolorparser_1(value) === null) {\n return [new ValidationError(key, value, `color expected, \"${ value }\" found`)];\n }\n return [];\n}\n\nfunction validateEnum(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n if (Array.isArray(valueSpec.values)) {\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${ valueSpec.values.join(', ') }], ${ JSON.stringify(value) } found`));\n }\n } else {\n if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${ Object.keys(valueSpec.values).join(', ') }], ${ JSON.stringify(value) } found`));\n }\n }\n return errors;\n}\n\nfunction validateFilter(options) {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: { value: 'boolean' }\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n}\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${ getType(value) } found`)];\n }\n const styleSpec = options.styleSpec;\n let type;\n let errors = [];\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n errors = errors.concat(validateEnum({\n key: `${ key }[0]`,\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${ value[0] }\"`));\n }\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${ value[0] }\" must have 3 elements`));\n }\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(`${ key }[1]`, value[1], `string expected, ${ type } found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${ key }[${ i }]`,\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n } else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(`${ key }[${ i }]`, value[i], `string, number, or boolean expected, ${ type } found`));\n }\n }\n break;\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${ key }[${ i }]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${ value[0] }\" operator must have 2 elements`));\n } else if (type !== 'string') {\n errors.push(new ValidationError(`${ key }[1]`, value[1], `string expected, ${ type } found`));\n }\n break;\n case 'within':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${ value[0] }\" operator must have 2 elements`));\n } else if (type !== 'object') {\n errors.push(new ValidationError(`${ key }[1]`, value[1], `object expected, ${ type } found`));\n }\n break;\n }\n return errors;\n}\n\nfunction validateProperty(options, propertyType) {\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${ propertyType }_${ options.layerType }`];\n if (!layerSpec)\n return [];\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${ propertyKey }\"`)];\n }\n let tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(key, value, `\"${ propertyKey }\" does not support interpolation syntax\\n` + `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${ JSON.stringify(tokenMatch[1]) } }\\`.`)];\n }\n const errors = [];\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction$1(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n return errors.concat(validate({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n\nfunction validatePaintProperty(options) {\n return validateProperty(options, 'paint');\n}\n\nfunction validateLayoutProperty(options) {\n return validateProperty(options, 'layout');\n}\n\nfunction validateLayer(options) {\n let errors = [];\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n let type = unbundle(layer.type);\n const ref = unbundle(layer.ref);\n if (layer.id) {\n const layerId = unbundle(layer.id);\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${ layer.id }\", previously used at line ${ otherLayer.id.__line__ }`));\n }\n }\n }\n if ('ref' in layer) {\n [\n 'type',\n 'source',\n 'source-layer',\n 'filter',\n 'layout'\n ].forEach(p => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${ p }\" is prohibited for ref layers`));\n }\n });\n let parent;\n style.layers.forEach(layer => {\n if (unbundle(layer.id) === ref)\n parent = layer;\n });\n if (!parent) {\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ ref }\" not found`));\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n type = unbundle(parent.type);\n }\n } else if (!(type === 'background' || type === 'sky')) {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n } else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${ layer.source }\" not found`));\n } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${ layer.id }\" requires a raster source`));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${ layer.id }\" requires a vector source`));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${ layer.id }\" must specify a \"source-layer\"`));\n } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n } else if (type === 'line' && layer.paint && layer.paint['line-gradient'] && (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${ layer.id }\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n }\n }\n }\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n type() {\n return validate({\n key: `${ key }.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter: validateFilter,\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extend({ layerType: type }, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extend({ layerType: type }, options));\n }\n }\n });\n }\n }\n }));\n return errors;\n}\n\nfunction validateString(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${ type } found`)];\n }\n return [];\n}\n\nconst objectElementValidators = { promoteId: validatePromoteId };\nfunction validateSource(options) {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n const type = unbundle(value.type);\n let errors;\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${ type.replace('-', '_') }`],\n style: options.style,\n styleSpec,\n objectElementValidators\n });\n return errors;\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\n objectElementValidators\n });\n if (value.cluster) {\n for (const prop in value.clusterProperties) {\n const [operator, mapExpr] = value.clusterProperties[prop];\n const reduceExpr = typeof operator === 'string' ? [\n operator,\n ['accumulated'],\n [\n 'get',\n prop\n ]\n ] : operator;\n errors.push(...validateExpression({\n key: `${ key }.${ prop }.map`,\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n errors.push(...validateExpression({\n key: `${ key }.${ prop }.reduce`,\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n styleSpec\n });\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n styleSpec\n });\n case 'canvas':\n return [new ValidationError(key, null, `Please use runtime APIs to add canvas sources, rather than including them in stylesheets.`, 'source.canvas')];\n default:\n return validateEnum({\n key: `${ key }.type`,\n value: value.type,\n valueSpec: {\n values: [\n 'vector',\n 'raster',\n 'raster-dem',\n 'geojson',\n 'video',\n 'image'\n ]\n },\n style,\n styleSpec\n });\n }\n}\nfunction validatePromoteId({key, value}) {\n if (getType(value) === 'string') {\n return validateString({\n key,\n value\n });\n } else {\n const errors = [];\n for (const prop in value) {\n errors.push(...validateString({\n key: `${ key }.${ prop }`,\n value: value[prop]\n }));\n }\n return errors;\n }\n}\n\nfunction validateLight(options) {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n let errors = [];\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, `object expected, ${ rootType } found`)]);\n return errors;\n }\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${ key }\"`)]);\n }\n }\n return errors;\n}\n\nfunction validateTerrain(options) {\n const terrain = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const terrainSpec = styleSpec.terrain;\n let errors = [];\n const rootType = getType(terrain);\n if (terrain === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('terrain', terrain, `object expected, ${ rootType } found`)]);\n return errors;\n }\n for (const key in terrain) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n if (transitionMatch && terrainSpec[transitionMatch[1]] && terrainSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (terrainSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: terrainSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, terrain[key], `unknown property \"${ key }\"`)]);\n }\n }\n if (!terrain.source) {\n errors.push(new ValidationError(key, terrain, `terrain is missing required property \"source\"`));\n } else {\n const source = style.sources && style.sources[terrain.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, terrain.source, `source \"${ terrain.source }\" not found`));\n } else if (sourceType !== 'raster-dem') {\n errors.push(new ValidationError(key, terrain.source, `terrain cannot be used with a source of type ${ sourceType }, it only be used with a \"raster-dem\" source type`));\n }\n }\n return errors;\n}\n\nfunction validateFormatted(options) {\n if (validateString(options).length === 0) {\n return [];\n }\n return validateExpression(options);\n}\n\nfunction validateImage(options) {\n if (validateString(options).length === 0) {\n return [];\n }\n return validateExpression(options);\n}\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'constants': validateConstants,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'terrain': validateTerrain,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage\n};\nfunction validate(options) {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n if (valueSpec.expression && isFunction$1(unbundle(value))) {\n return validateFunction(options);\n } else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n } else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n } else {\n const valid = validateObject(extend({}, options, { valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec }));\n return valid;\n }\n}\n\nfunction validateGlyphsURL (options) {\n const value = options.value;\n const key = options.key;\n const errors = validateString(options);\n if (errors.length)\n return errors;\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n return errors;\n}\n\nfunction validateStyleMin(style, styleSpec = v8) {\n let errors = [];\n errors = errors.concat(validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsURL,\n '*'() {\n return [];\n }\n }\n }));\n if (style.constants) {\n errors = errors.concat(validateConstants({\n key: 'constants',\n value: style.constants,\n style,\n styleSpec\n }));\n }\n return sortErrors(errors);\n}\nvalidateStyleMin.source = wrapCleanErrors(validateSource);\nvalidateStyleMin.light = wrapCleanErrors(validateLight);\nvalidateStyleMin.terrain = wrapCleanErrors(validateTerrain);\nvalidateStyleMin.layer = wrapCleanErrors(validateLayer);\nvalidateStyleMin.filter = wrapCleanErrors(validateFilter);\nvalidateStyleMin.paintProperty = wrapCleanErrors(validatePaintProperty);\nvalidateStyleMin.layoutProperty = wrapCleanErrors(validateLayoutProperty);\nfunction sortErrors(errors) {\n return [].concat(errors).sort((a, b) => {\n return a.line - b.line;\n });\n}\nfunction wrapCleanErrors(inner) {\n return function (...args) {\n return sortErrors(inner.apply(this, args));\n };\n}\n\nvar jsonlint = createCommonjsModule(function (module, exports) {\n/* parser generated by jison 0.4.15 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,12],$V1=[1,13],$V2=[1,9],$V3=[1,10],$V4=[1,11],$V5=[1,14],$V6=[1,15],$V7=[14,18,22,24],$V8=[18,22],$V9=[22,24];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\nproductions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n // replace escaped characters with actual character\n this.$ = new String(yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\n .replace(/\\\\n/g,'\\n')\n .replace(/\\\\r/g,'\\r')\n .replace(/\\\\t/g,'\\t')\n .replace(/\\\\v/g,'\\v')\n .replace(/\\\\f/g,'\\f')\n .replace(/\\\\b/g,'\\b'));\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 2:\n\n this.$ = new Number(yytext);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 3:\n\n this.$ = null;\n \nbreak;\ncase 4:\n\n this.$ = new Boolean(true);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 5:\n\n this.$ = new Boolean(false);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 6:\nreturn this.$ = $$[$0-1];\ncase 13:\nthis.$ = {}; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n });\nbreak;\ncase 14: case 19:\nthis.$ = $$[$0-1]; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n });\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0]];\nbreak;\ncase 16:\nthis.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\nbreak;\ncase 17:\nthis.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\nbreak;\ncase 18:\nthis.$ = []; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n });\nbreak;\ncase 20:\nthis.$ = [$$[$0]];\nbreak;\ncase 21:\nthis.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,12:1,13:2,15:7,16:8,17:$V5,23:$V6},{1:[3]},{14:[1,16]},o($V7,[2,7]),o($V7,[2,8]),o($V7,[2,9]),o($V7,[2,10]),o($V7,[2,11]),o($V7,[2,12]),o($V7,[2,3]),o($V7,[2,4]),o($V7,[2,5]),o([14,18,21,22,24],[2,1]),o($V7,[2,2]),{3:20,4:$V0,18:[1,17],19:18,20:19},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:23,15:7,16:8,17:$V5,23:$V6,24:[1,21],25:22},{1:[2,6]},o($V7,[2,13]),{18:[1,24],22:[1,25]},o($V8,[2,16]),{21:[1,26]},o($V7,[2,18]),{22:[1,28],24:[1,27]},o($V9,[2,20]),o($V7,[2,14]),{3:20,4:$V0,20:29},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:30,15:7,16:8,17:$V5,23:$V6},o($V7,[2,19]),{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:31,15:7,16:8,17:$V5,23:$V6},o($V8,[2,17]),o($V8,[2,15]),o($V9,[2,21])],\ndefaultActions: {16:[2,6]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n throw new Error(str);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n \n function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, state, action, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nswitch($avoiding_name_collisions) {\ncase 0:/* skip whitespace */\nbreak;\ncase 1:return 6\ncase 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\ncase 3:return 17\ncase 4:return 18\ncase 5:return 23\ncase 6:return 24\ncase 7:return 22\ncase 8:return 21\ncase 9:return 10\ncase 10:return 11\ncase 11:return 8\ncase 12:return 14\ncase 13:return 'INVALID'\n}\n},\nrules: [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof commonjsRequire !== 'undefined' && 'object' !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\n}\n});\nvar jsonlint_1 = jsonlint.parser;\nvar jsonlint_2 = jsonlint.Parser;\nvar jsonlint_3 = jsonlint.parse;\n\nfunction readStyle(style) {\n if (style instanceof String || typeof style === 'string' || style instanceof Buffer) {\n try {\n return jsonlint.parse(style.toString());\n } catch (e) {\n throw new ParsingError$1(e);\n }\n }\n return style;\n}\n\nfunction validateStyle(style, styleSpec = v8) {\n let s = style;\n try {\n s = readStyle(s);\n } catch (e) {\n return [e];\n }\n return validateStyleMin(s, styleSpec);\n}\n\nconst SUPPORTED_SPEC_VERSION = 8;\nconst MAX_SOURCES_IN_STYLE = 15;\nfunction isValid(value, regex) {\n if (!value || getType(value) !== 'string')\n return true;\n return !!value.match(regex);\n}\nfunction getSourceCount(source) {\n if (source.url) {\n return source.url.split(',').length;\n } else {\n return 0;\n }\n}\nfunction getAllowedKeyErrors(obj, keys, path) {\n const allowed = new Set(keys);\n const errors = [];\n Object.keys(obj).forEach(k => {\n if (!allowed.has(k)) {\n const prop = path ? `${ path }.${ k }` : null;\n errors.push(new ValidationError(prop, obj[k], `Unsupported property \"${ k }\"`));\n }\n });\n return errors;\n}\nfunction getSourceErrors(source, i) {\n const errors = [];\n const sourceKeys = [\n 'type',\n 'url',\n 'tileSize'\n ];\n errors.push(...getAllowedKeyErrors(source, sourceKeys, 'source'));\n const sourceUrlPattern = /^mapbox:\\/\\/([^/]*)$/;\n if (!isValid(source.url, sourceUrlPattern)) {\n errors.push(new ValidationError(`sources[${ i }]`, source.url, 'Source url must be a valid Mapbox tileset url'));\n }\n return errors;\n}\nfunction getSourcesErrors(sources) {\n const errors = [];\n let count = 0;\n Object.keys(sources).forEach((s, i) => {\n const sourceErrors = getSourceErrors(sources[s], i);\n if (!sourceErrors.length) {\n count = count + getSourceCount(sources[s]);\n }\n errors.push(...sourceErrors);\n });\n if (count > MAX_SOURCES_IN_STYLE) {\n errors.push(new ValidationError('sources', null, `Styles must contain ${ MAX_SOURCES_IN_STYLE } or fewer sources`));\n }\n return errors;\n}\nfunction getRootErrors(style, specKeys) {\n const errors = [];\n const optionalRootProperties = [\n 'owner',\n 'id',\n 'cacheControl',\n 'draft',\n 'created',\n 'modified',\n 'visibility'\n ];\n const allowedKeyErrors = getAllowedKeyErrors(style, [\n ...specKeys,\n ...optionalRootProperties\n ]);\n errors.push(...allowedKeyErrors);\n if (style.version > SUPPORTED_SPEC_VERSION || style.version < SUPPORTED_SPEC_VERSION) {\n errors.push(new ValidationError('version', style.version, `Style version must be ${ SUPPORTED_SPEC_VERSION }`));\n }\n const glyphUrlPattern = /^mapbox:\\/\\/fonts\\/([^/]*)\\/{fontstack}\\/{range}.pbf$/;\n if (!isValid(style.glyphs, glyphUrlPattern)) {\n errors.push(new ValidationError('glyphs', style.glyphs, 'Styles must reference glyphs hosted by Mapbox'));\n }\n const spriteUrlPattern = /^mapbox:\\/\\/sprites\\/([^/]*)\\/([^/]*)\\/?([^/]*)?$/;\n if (!isValid(style.sprite, spriteUrlPattern)) {\n errors.push(new ValidationError('sprite', style.sprite, 'Styles must reference sprites hosted by Mapbox'));\n }\n const visibilityPattern = /^(public|private)$/;\n if (!isValid(style.visibility, visibilityPattern)) {\n errors.push(new ValidationError('visibility', style.visibility, 'Style visibility must be public or private'));\n }\n return errors;\n}\nfunction validateMapboxApiSupported(style) {\n let s = style;\n try {\n s = readStyle(s);\n } catch (e) {\n return [e];\n }\n let errors = validateStyleMin(s, v8).concat(getRootErrors(s, Object.keys(v8.$root)));\n if (s.sources) {\n errors = errors.concat(getSourcesErrors(s.sources));\n }\n return errors;\n}\n\nconst expression$1 = {\n StyleExpression,\n isExpression,\n isExpressionFilter,\n createExpression,\n createPropertyExpression,\n normalizePropertyExpression,\n ZoomConstantExpression,\n ZoomDependentExpression,\n StylePropertyFunction\n};\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction: isFunction$1\n};\nconst visit = {\n eachSource,\n eachLayer,\n eachProperty\n};\nvalidateStyle.parsed = validateStyle;\nvalidateStyle.latest = validateStyle;\n\nexport { Color, ParsingError$1 as ParsingError, ValidationError, composite, convertFilter$1 as convertFilter, derefLayers, diffStyles as diff, expression$1 as expression, createFilter as featureFilter, format, styleFunction as function, v8 as latest, migrate, v8, validateStyle as validate, validateMapboxApiSupported, visit };\n//# sourceMappingURL=index.es.js.map\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","var fontWeights = {\n thin: 100,\n hairline: 100,\n 'ultra-light': 100,\n 'extra-light': 100,\n light: 200,\n book: 300,\n regular: 400,\n normal: 400,\n plain: 400,\n roman: 400,\n standard: 400,\n medium: 500,\n 'semi-bold': 600,\n 'demi-bold': 600,\n bold: 700,\n heavy: 800,\n black: 800,\n 'extra-bold': 800,\n 'ultra-black': 900,\n 'extra-black': 900,\n 'ultra-bold': 900,\n 'heavy-black': 900,\n fat: 900,\n poster: 900\n};\nvar sp = ' ';\nvar italicRE = /(italic|oblique)$/i;\n\nvar fontCache = {};\n\nmodule.exports = function(fonts, size, lineHeight) {\n var cssData = fontCache[fonts];\n if (!cssData) {\n if (!Array.isArray(fonts)) {\n fonts = [fonts];\n }\n var weight = 400;\n var style = 'normal';\n var fontFamilies = [];\n var haveWeight, haveStyle;\n for (var i = 0, ii = fonts.length; i < ii; ++i) {\n var font = fonts[i];\n var parts = font.split(' ');\n var maybeWeight = parts[parts.length - 1].toLowerCase();\n if (maybeWeight == 'normal' || maybeWeight == 'italic' || maybeWeight == 'oblique') {\n style = haveStyle ? style : maybeWeight;\n parts.pop();\n maybeWeight = parts[parts.length - 1].toLowerCase();\n } else if (italicRE.test(maybeWeight)) {\n maybeWeight = maybeWeight.replace(italicRE, '');\n style = haveStyle ? style : parts[parts.length - 1].replace(maybeWeight, '');\n }\n for (var w in fontWeights) {\n if (maybeWeight == w || maybeWeight == w.replace('-', '') || maybeWeight == w.replace('-', sp)) {\n weight = haveWeight ? weight : fontWeights[w];\n parts.pop();\n break;\n }\n }\n if (!haveWeight && typeof maybeWeight == 'number') {\n weight = maybeWeight;\n }\n var fontFamily = parts.join(sp)\n .replace('Klokantech Noto Sans', 'Noto Sans');\n if (fontFamily.indexOf(sp) !== -1) {\n fontFamily = '\"' + fontFamily + '\"';\n }\n fontFamilies.push(fontFamily);\n }\n // CSS font property: font-style font-weight font-size/line-height font-family\n cssData = fontCache[fonts] = [style, weight, fontFamilies];\n }\n return cssData[0] + sp + cssData[1] + sp + size + 'px' + (lineHeight ? '/' + lineHeight : '') + sp + cssData[2];\n};\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","// Generated by CoffeeScript 1.10.0\n(function() {\n var families;\n\n module.exports = {\n icon: 'icons/google.svg',\n name: 'google',\n title: 'Google Fonts',\n link: 'google.com/fonts',\n getNames: function() {\n return families;\n },\n getLink: function(name) {\n return \"https://fonts.google.com/specimen/\" + (name.replace(/( )/g, '+'));\n },\n normalizeName: function(name) {\n return name;\n }\n };\n\n families = [\"ABeeZee\", \"Abel\", \"Abril Fatface\", \"Aclonica\", \"Acme\", \"Actor\", \"Adamina\", \"Advent Pro\", \"Aguafina Script\", \"Akronim\", \"Aladin\", \"Aldrich\", \"Alef\", \"Alegreya\", \"Alegreya SC\", \"Alegreya Sans\", \"Alegreya Sans SC\", \"Alex Brush\", \"Alfa Slab One\", \"Alice\", \"Alike\", \"Alike Angular\", \"Allan\", \"Allerta\", \"Allerta Stencil\", \"Allura\", \"Almendra\", \"Almendra Display\", \"Almendra SC\", \"Amarante\", \"Amaranth\", \"Amatic SC\", \"Amethysta\", \"Amiri\", \"Amita\", \"Anaheim\", \"Andada\", \"Andika\", \"Angkor\", \"Annie Use Your Telescope\", \"Anonymous Pro\", \"Antic\", \"Antic Didone\", \"Antic Slab\", \"Anton\", \"Arapey\", \"Arbutus\", \"Arbutus Slab\", \"Architects Daughter\", \"Archivo Black\", \"Archivo Narrow\", \"Arimo\", \"Arizonia\", \"Armata\", \"Artifika\", \"Arvo\", \"Arya\", \"Asap\", \"Asar\", \"Asset\", \"Astloch\", \"Asul\", \"Atomic Age\", \"Aubrey\", \"Audiowide\", \"Autour One\", \"Average\", \"Average Sans\", \"Averia Gruesa Libre\", \"Averia Libre\", \"Averia Sans Libre\", \"Averia Serif Libre\", \"Bad Script\", \"Balthazar\", \"Bangers\", \"Basic\", \"Battambang\", \"Baumans\", \"Bayon\", \"Belgrano\", \"Belleza\", \"BenchNine\", \"Bentham\", \"Berkshire Swash\", \"Bevan\", \"Bigelow Rules\", \"Bigshot One\", \"Bilbo\", \"Bilbo Swash Caps\", \"Biryani\", \"Bitter\", \"Black Ops One\", \"Bokor\", \"Bonbon\", \"Boogaloo\", \"Bowlby One\", \"Bowlby One SC\", \"Brawler\", \"Bree Serif\", \"Bubblegum Sans\", \"Bubbler One\", \"Buda\", \"Buenard\", \"Butcherman\", \"Butterfly Kids\", \"Cabin\", \"Cabin Condensed\", \"Cabin Sketch\", \"Caesar Dressing\", \"Cagliostro\", \"Calligraffitti\", \"Cambay\", \"Cambo\", \"Candal\", \"Cantarell\", \"Cantata One\", \"Cantora One\", \"Capriola\", \"Cardo\", \"Carme\", \"Carrois Gothic\", \"Carrois Gothic SC\", \"Carter One\", \"Catamaran\", \"Caudex\", \"Caveat\", \"Caveat Brush\", \"Cedarville Cursive\", \"Ceviche One\", \"Changa One\", \"Chango\", \"Chau Philomene One\", \"Chela One\", \"Chelsea Market\", \"Chenla\", \"Cherry Cream Soda\", \"Cherry Swash\", \"Chewy\", \"Chicle\", \"Chivo\", \"Chonburi\", \"Cinzel\", \"Cinzel Decorative\", \"Clicker Script\", \"Coda\", \"Coda Caption\", \"Codystar\", \"Combo\", \"Comfortaa\", \"Coming Soon\", \"Concert One\", \"Condiment\", \"Content\", \"Contrail One\", \"Convergence\", \"Cookie\", \"Copse\", \"Corben\", \"Courgette\", \"Cousine\", \"Coustard\", \"Covered By Your Grace\", \"Crafty Girls\", \"Creepster\", \"Crete Round\", \"Crimson Text\", \"Croissant One\", \"Crushed\", \"Cuprum\", \"Cutive\", \"Cutive Mono\", \"Damion\", \"Dancing Script\", \"Dangrek\", \"Dawning of a New Day\", \"Days One\", \"Dekko\", \"Delius\", \"Delius Swash Caps\", \"Delius Unicase\", \"Della Respira\", \"Denk One\", \"Devonshire\", \"Dhurjati\", \"Didact Gothic\", \"Diplomata\", \"Diplomata SC\", \"Domine\", \"Donegal One\", \"Doppio One\", \"Dorsa\", \"Dosis\", \"Dr Sugiyama\", \"Droid Sans\", \"Droid Sans Mono\", \"Droid Serif\", \"Duru Sans\", \"Dynalight\", \"EB Garamond\", \"Eagle Lake\", \"Eater\", \"Economica\", \"Eczar\", \"Ek Mukta\", \"Electrolize\", \"Elsie\", \"Elsie Swash Caps\", \"Emblema One\", \"Emilys Candy\", \"Engagement\", \"Englebert\", \"Enriqueta\", \"Erica One\", \"Esteban\", \"Euphoria Script\", \"Ewert\", \"Exo\", \"Exo 2\", \"Expletus Sans\", \"Fanwood Text\", \"Fascinate\", \"Fascinate Inline\", \"Faster One\", \"Fasthand\", \"Fauna One\", \"Federant\", \"Federo\", \"Felipa\", \"Fenix\", \"Finger Paint\", \"Fira Mono\", \"Fira Sans\", \"Fjalla One\", \"Fjord One\", \"Flamenco\", \"Flavors\", \"Fondamento\", \"Fontdiner Swanky\", \"Forum\", \"Francois One\", \"Freckle Face\", \"Fredericka the Great\", \"Fredoka One\", \"Freehand\", \"Fresca\", \"Frijole\", \"Fruktur\", \"Fugaz One\", \"GFS Didot\", \"GFS Neohellenic\", \"Gabriela\", \"Gafata\", \"Galdeano\", \"Galindo\", \"Gentium Basic\", \"Gentium Book Basic\", \"Geo\", \"Geostar\", \"Geostar Fill\", \"Germania One\", \"Gidugu\", \"Gilda Display\", \"Give You Glory\", \"Glass Antiqua\", \"Glegoo\", \"Gloria Hallelujah\", \"Goblin One\", \"Gochi Hand\", \"Gorditas\", \"Goudy Bookletter 1911\", \"Graduate\", \"Grand Hotel\", \"Gravitas One\", \"Great Vibes\", \"Griffy\", \"Gruppo\", \"Gudea\", \"Gurajada\", \"Habibi\", \"Halant\", \"Hammersmith One\", \"Hanalei\", \"Hanalei Fill\", \"Handlee\", \"Hanuman\", \"Happy Monkey\", \"Headland One\", \"Henny Penny\", \"Herr Von Muellerhoff\", \"Hind\", \"Hind Siliguri\", \"Hind Vadodara\", \"Holtwood One SC\", \"Homemade Apple\", \"Homenaje\", \"IM Fell DW Pica\", \"IM Fell DW Pica SC\", \"IM Fell Double Pica\", \"IM Fell Double Pica SC\", \"IM Fell English\", \"IM Fell English SC\", \"IM Fell French Canon\", \"IM Fell French Canon SC\", \"IM Fell Great Primer\", \"IM Fell Great Primer SC\", \"Iceberg\", \"Iceland\", \"Imprima\", \"Inconsolata\", \"Inder\", \"Indie Flower\", \"Inika\", \"Inknut Antiqua\", \"Irish Grover\", \"Istok Web\", \"Italiana\", \"Italianno\", \"Itim\", \"Jacques Francois\", \"Jacques Francois Shadow\", \"Jaldi\", \"Jim Nightshade\", \"Jockey One\", \"Jolly Lodger\", \"Josefin Sans\", \"Josefin Slab\", \"Joti One\", \"Judson\", \"Julee\", \"Julius Sans One\", \"Junge\", \"Jura\", \"Just Another Hand\", \"Just Me Again Down Here\", \"Kadwa\", \"Kalam\", \"Kameron\", \"Kantumruy\", \"Karla\", \"Karma\", \"Kaushan Script\", \"Kavoon\", \"Kdam Thmor\", \"Keania One\", \"Kelly Slab\", \"Kenia\", \"Khand\", \"Khmer\", \"Khula\", \"Kite One\", \"Knewave\", \"Kotta One\", \"Koulen\", \"Kranky\", \"Kreon\", \"Kristi\", \"Krona One\", \"Kurale\", \"La Belle Aurore\", \"Laila\", \"Lakki Reddy\", \"Lancelot\", \"Lateef\", \"Lato\", \"League Script\", \"Leckerli One\", \"Ledger\", \"Lekton\", \"Lemon\", \"Libre Baskerville\", \"Life Savers\", \"Lilita One\", \"Lily Script One\", \"Limelight\", \"Linden Hill\", \"Lobster\", \"Lobster Two\", \"Londrina Outline\", \"Londrina Shadow\", \"Londrina Sketch\", \"Londrina Solid\", \"Lora\", \"Love Ya Like A Sister\", \"Loved by the King\", \"Lovers Quarrel\", \"Luckiest Guy\", \"Lusitana\", \"Lustria\", \"Macondo\", \"Macondo Swash Caps\", \"Magra\", \"Maiden Orange\", \"Mako\", \"Mallanna\", \"Mandali\", \"Marcellus\", \"Marcellus SC\", \"Marck Script\", \"Margarine\", \"Marko One\", \"Marmelad\", \"Martel\", \"Martel Sans\", \"Marvel\", \"Mate\", \"Mate SC\", \"Maven Pro\", \"McLaren\", \"Meddon\", \"MedievalSharp\", \"Medula One\", \"Megrim\", \"Meie Script\", \"Merienda\", \"Merienda One\", \"Merriweather\", \"Merriweather Sans\", \"Metal\", \"Metal Mania\", \"Metamorphous\", \"Metrophobic\", \"Michroma\", \"Milonga\", \"Miltonian\", \"Miltonian Tattoo\", \"Miniver\", \"Miss Fajardose\", \"Modak\", \"Modern Antiqua\", \"Molengo\", \"Molle\", \"Monda\", \"Monofett\", \"Monoton\", \"Monsieur La Doulaise\", \"Montaga\", \"Montez\", \"Montserrat\", \"Montserrat Alternates\", \"Montserrat Subrayada\", \"Moul\", \"Moulpali\", \"Mountains of Christmas\", \"Mouse Memoirs\", \"Mr Bedfort\", \"Mr Dafoe\", \"Mr De Haviland\", \"Mrs Saint Delafield\", \"Mrs Sheppards\", \"Muli\", \"Mystery Quest\", \"NTR\", \"Neucha\", \"Neuton\", \"New Rocker\", \"News Cycle\", \"Niconne\", \"Nixie One\", \"Nobile\", \"Nokora\", \"Norican\", \"Nosifer\", \"Nothing You Could Do\", \"Noticia Text\", \"Noto Sans\", \"Noto Serif\", \"Nova Cut\", \"Nova Flat\", \"Nova Mono\", \"Nova Oval\", \"Nova Round\", \"Nova Script\", \"Nova Slim\", \"Nova Square\", \"Numans\", \"Nunito\", \"Odor Mean Chey\", \"Offside\", \"Old Standard TT\", \"Oldenburg\", \"Oleo Script\", \"Oleo Script Swash Caps\", \"Open Sans\", \"Open Sans Condensed\", \"Oranienbaum\", \"Orbitron\", \"Oregano\", \"Orienta\", \"Original Surfer\", \"Oswald\", \"Over the Rainbow\", \"Overlock\", \"Overlock SC\", \"Ovo\", \"Oxygen\", \"Oxygen Mono\", \"PT Mono\", \"PT Sans\", \"PT Sans Caption\", \"PT Sans Narrow\", \"PT Serif\", \"PT Serif Caption\", \"Pacifico\", \"Palanquin\", \"Palanquin Dark\", \"Paprika\", \"Parisienne\", \"Passero One\", \"Passion One\", \"Pathway Gothic One\", \"Patrick Hand\", \"Patrick Hand SC\", \"Patua One\", \"Paytone One\", \"Peddana\", \"Peralta\", \"Permanent Marker\", \"Petit Formal Script\", \"Petrona\", \"Philosopher\", \"Piedra\", \"Pinyon Script\", \"Pirata One\", \"Plaster\", \"Play\", \"Playball\", \"Playfair Display\", \"Playfair Display SC\", \"Podkova\", \"Poiret One\", \"Poller One\", \"Poly\", \"Pompiere\", \"Pontano Sans\", \"Poppins\", \"Port Lligat Sans\", \"Port Lligat Slab\", \"Pragati Narrow\", \"Prata\", \"Preahvihear\", \"Press Start 2P\", \"Princess Sofia\", \"Prociono\", \"Prosto One\", \"Puritan\", \"Purple Purse\", \"Quando\", \"Quantico\", \"Quattrocento\", \"Quattrocento Sans\", \"Questrial\", \"Quicksand\", \"Quintessential\", \"Qwigley\", \"Racing Sans One\", \"Radley\", \"Rajdhani\", \"Raleway\", \"Raleway Dots\", \"Ramabhadra\", \"Ramaraja\", \"Rambla\", \"Rammetto One\", \"Ranchers\", \"Rancho\", \"Ranga\", \"Rationale\", \"Ravi Prakash\", \"Redressed\", \"Reenie Beanie\", \"Revalia\", \"Rhodium Libre\", \"Ribeye\", \"Ribeye Marrow\", \"Righteous\", \"Risque\", \"Roboto\", \"Roboto Condensed\", \"Roboto Mono\", \"Roboto Slab\", \"Rochester\", \"Rock Salt\", \"Rokkitt\", \"Romanesco\", \"Ropa Sans\", \"Rosario\", \"Rosarivo\", \"Rouge Script\", \"Rozha One\", \"Rubik\", \"Rubik Mono One\", \"Rubik One\", \"Ruda\", \"Rufina\", \"Ruge Boogie\", \"Ruluko\", \"Rum Raisin\", \"Ruslan Display\", \"Russo One\", \"Ruthie\", \"Rye\", \"Sacramento\", \"Sahitya\", \"Sail\", \"Salsa\", \"Sanchez\", \"Sancreek\", \"Sansita One\", \"Sarala\", \"Sarina\", \"Sarpanch\", \"Satisfy\", \"Scada\", \"Scheherazade\", \"Schoolbell\", \"Seaweed Script\", \"Sevillana\", \"Seymour One\", \"Shadows Into Light\", \"Shadows Into Light Two\", \"Shanti\", \"Share\", \"Share Tech\", \"Share Tech Mono\", \"Shojumaru\", \"Short Stack\", \"Siemreap\", \"Sigmar One\", \"Signika\", \"Signika Negative\", \"Simonetta\", \"Sintony\", \"Sirin Stencil\", \"Six Caps\", \"Skranji\", \"Slabo 13px\", \"Slabo 27px\", \"Slackey\", \"Smokum\", \"Smythe\", \"Sniglet\", \"Snippet\", \"Snowburst One\", \"Sofadi One\", \"Sofia\", \"Sonsie One\", \"Sorts Mill Goudy\", \"Source Code Pro\", \"Source Sans Pro\", \"Source Serif Pro\", \"Special Elite\", \"Spicy Rice\", \"Spinnaker\", \"Spirax\", \"Squada One\", \"Sree Krushnadevaraya\", \"Stalemate\", \"Stalinist One\", \"Stardos Stencil\", \"Stint Ultra Condensed\", \"Stint Ultra Expanded\", \"Stoke\", \"Strait\", \"Sue Ellen Francisco\", \"Sumana\", \"Sunshiney\", \"Supermercado One\", \"Sura\", \"Suranna\", \"Suravaram\", \"Suwannaphum\", \"Swanky and Moo Moo\", \"Syncopate\", \"Tangerine\", \"Taprom\", \"Tauri\", \"Teko\", \"Telex\", \"Tenali Ramakrishna\", \"Tenor Sans\", \"Text Me One\", \"The Girl Next Door\", \"Tienne\", \"Tillana\", \"Timmana\", \"Tinos\", \"Titan One\", \"Titillium Web\", \"Trade Winds\", \"Trocchi\", \"Trochut\", \"Trykker\", \"Tulpen One\", \"Ubuntu\", \"Ubuntu Condensed\", \"Ubuntu Mono\", \"Ultra\", \"Uncial Antiqua\", \"Underdog\", \"Unica One\", \"UnifrakturCook\", \"UnifrakturMaguntia\", \"Unkempt\", \"Unlock\", \"Unna\", \"VT323\", \"Vampiro One\", \"Varela\", \"Varela Round\", \"Vast Shadow\", \"Vesper Libre\", \"Vibur\", \"Vidaloka\", \"Viga\", \"Voces\", \"Volkhov\", \"Vollkorn\", \"Voltaire\", \"Waiting for the Sunrise\", \"Wallpoet\", \"Walter Turncoat\", \"Warnes\", \"Wellfleet\", \"Wendy One\", \"Wire One\", \"Work Sans\", \"Yanone Kaffeesatz\", \"Yantramanav\", \"Yellowtail\", \"Yeseva One\", \"Yesteryear\", \"Zeyada\"];\n\n}).call(this);\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.5.0';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' +\n path +\n '/doc/errors/#' +\n code +\n ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.propagationStopped = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n }\n else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (opt_strict && res === 0));\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = typeof Object.assign === 'function'\n ? Object.assign\n : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n };\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = typeof Object.values === 'function'\n ? Object.values\n : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n };\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport { VOID } from '../functions.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {Object}\n */\n _this.pendingRemovals_ = null;\n /**\n * @private\n * @type {Object}\n */\n _this.dispatching_ = null;\n /**\n * @private\n * @type {Object>}\n */\n _this.listeners_ = null;\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_ || (this.listeners_ = {});\n var listenersForType = listeners[type] || (listeners[type] = []);\n if (listenersForType.indexOf(listener) === -1) {\n listenersForType.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n /** @type {import(\"./Event.js\").default|Event} */\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_ && this.listeners_[type];\n var propagate;\n if (listeners) {\n var dispatching = this.dispatching_ || (this.dispatching_ = {});\n var pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --dispatching[type];\n if (dispatching[type] === 0) {\n var pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n };\n /**\n * Clean up.\n */\n Target.prototype.disposeInternal = function () {\n this.listeners_ && clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n };\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n if (!this.listeners_) {\n return false;\n }\n return opt_type\n ? opt_type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { listen, listenOnce, unlistenByKey } from './events.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.on = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.once = function (type, listener) {\n var key;\n if (Array.isArray(type)) {\n var len = type.length;\n key = new Array(len);\n for (var i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n }\n else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n Observable.prototype.un = function (type, listener) {\n var key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n }\n else if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport { assign, isEmpty } from './obj.js';\nimport { getUid } from './util.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object=} opt_values An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {Object}\n */\n _this.values_ = null;\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return (this.values_ && Object.keys(this.values_)) || [];\n };\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return (this.values_ && assign({}, this.values_)) || {};\n };\n /**\n * @return {boolean} The object has properties.\n */\n BaseObject.prototype.hasProperties = function () {\n return !!this.values_;\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = getChangeEventType(key);\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n var values = this.values_ || (this.values_ = {});\n if (opt_silent) {\n values[key] = value;\n }\n else {\n var oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n BaseObject.prototype.applyProperties = function (source) {\n if (!source.values_) {\n return;\n }\n assign(this.values_ || (this.values_ = {}), source.values_);\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean=} opt_silent Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (this.values_ && key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\n/**\n * @type {Object}\n */\nvar changeEventTypeCache = {};\n/**\n * @param {string} key Key name.\n * @return {string} Change name.\n */\nexport function getChangeEventType(key) {\n return changeEventTypeCache.hasOwnProperty(key)\n ? changeEventTypeCache[key]\n : (changeEventTypeCache[key] = 'change:' + key);\n}\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n//# sourceMappingURL=CollectionEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {*=} opt_element Element.\n * @param {number=} opt_index The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array=} opt_array Array.\n * @param {Options=} opt_options Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number=} opt_except Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport EventType from './events/EventType.js';\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|Object=} opt_geometryOrProperties\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addEventListener(getChangeEventType(_this.geometryName_), _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry) === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = new Feature(this.hasProperties() ? this.getProperties() : null);\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike=} opt_style Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof ( /** @type {?} */(obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/geom/GeometryLayout\n */\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM',\n};\n//# sourceMappingURL=GeometryLayout.js.map","/**\n * @module ol/geom/GeometryType\n */\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle',\n};\n//# sourceMappingURL=GeometryType.js.map","/**\n * @module ol/proj/Units\n */\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nvar Units = {\n /**\n * Degrees\n * @api\n */\n DEGREES: 'degrees',\n /**\n * Feet\n * @api\n */\n FEET: 'ft',\n /**\n * Meters\n * @api\n */\n METERS: 'm',\n /**\n * Pixels\n * @api\n */\n PIXELS: 'pixels',\n /**\n * Tile Pixels\n * @api\n */\n TILE_PIXELS: 'tile-pixels',\n /**\n * US Feet\n * @api\n */\n USFEET: 'us-ft',\n};\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport var METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.DEGREES] = (2 * Math.PI * 6370997) / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\nexport default Units;\n//# sourceMappingURL=Units.js.map","/**\n * @module ol/transform\n */\nimport { assert } from './asserts.js';\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n * @api\n */\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n/**\n * @private\n * @type {Transform}\n */\nvar tmp_ = new Array(6);\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n var a1 = transform1[0];\n var b1 = transform1[1];\n var c1 = transform1[2];\n var d1 = transform1[3];\n var e1 = transform1[4];\n var f1 = transform1[5];\n var a2 = transform2[0];\n var b2 = transform2[1];\n var c2 = transform2[2];\n var d2 = transform2[3];\n var e2 = transform2[4];\n var f2 = transform2[5];\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n return transform1;\n}\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n var x = coordinate[0];\n var y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n return set(target, x, 0, 0, y, 0, 0);\n}\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` porperty of an HTMLElement's style.\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n return makeInverse(source, source);\n}\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n var det = determinant(source);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n var a = source[0];\n var b = source[1];\n var c = source[2];\n var d = source[3];\n var e = source[4];\n var f = source[5];\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n return target;\n}\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n/**\n * A string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n return 'matrix(' + mat.join(', ') + ')';\n}\n//# sourceMappingURL=transform.js.map","/**\n * @module ol/extent/Corner\n */\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=Corner.js.map","/**\n * @module ol/extent/Relationship\n */\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n//# sourceMappingURL=Relationship.js.map","/**\n * @module ol/extent\n */\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\nimport { assert } from './asserts.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent=} opt_extent Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]);\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array>} rings Rings.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]);\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance);\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./extent/Corner.js\").default} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = (resolution * size[0]) / 2;\n var dy = (resolution * size[1]) / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent=} opt_extent Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]);\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent=} opt_extent Destination extent.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + (width * i) / opt_stops, extent[1], extent[2], extent[1] + (height * i) / opt_stops, extent[2] - (width * i) / opt_stops, extent[3], extent[0], extent[3] - (height * i) / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/proj/Projection\n */\nimport { METERS_PER_UNIT } from './Units.js';\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `{number}` view resolution and an `{import(\"../coordinate.js\").Coordinate}` as arguments, and returns\n * the `{number}` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj#getPointResolution} function will be used.\n */\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj~get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4~register} function.\n *\n * @api\n */\nvar Projection = /** @class */ (function () {\n /**\n * @param {Options} options Projection options.\n */\n function Projection(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ =\n options.worldExtent !== undefined ? options.worldExtent : null;\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ =\n options.axisOrientation !== undefined ? options.axisOrientation : 'enu';\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n Projection.prototype.canWrapX = function () {\n return this.canWrapX_;\n };\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n Projection.prototype.getCode = function () {\n return this.code_;\n };\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getExtent = function () {\n return this.extent_;\n };\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n Projection.prototype.getUnits = function () {\n return this.units_;\n };\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n Projection.prototype.getMetersPerUnit = function () {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n };\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getWorldExtent = function () {\n return this.worldExtent_;\n };\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n Projection.prototype.getAxisOrientation = function () {\n return this.axisOrientation_;\n };\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n Projection.prototype.isGlobal = function () {\n return this.global_;\n };\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n Projection.prototype.setGlobal = function (global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n };\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n Projection.prototype.getDefaultTileGrid = function () {\n return this.defaultTileGrid_;\n };\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n Projection.prototype.setDefaultTileGrid = function (tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n };\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Projection.prototype.setExtent = function (extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n };\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n Projection.prototype.setWorldExtent = function (worldExtent) {\n this.worldExtent_ = worldExtent;\n };\n /**\n * Set the getPointResolution function (see {@link module:ol/proj~getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n Projection.prototype.setGetPointResolution = function (func) {\n this.getPointResolutionFunc_ = func;\n };\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n Projection.prototype.getPointResolutionFunc = function () {\n return this.getPointResolutionFunc_;\n };\n return Projection;\n}());\nexport default Projection;\n//# sourceMappingURL=Projection.js.map","/**\n * @module ol/math\n */\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport var cosh = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n }\n else {\n // … else, use the reference implementation of MDN:\n cosh = function (x) {\n var y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n})();\n/**\n * Return the base 2 logarithm of a given number. The method will use the\n * native `Math.log2` function if it is available, otherwise the base 2\n * logarithm will be calculated via the reference implementation of the\n * Mozilla developer network.\n *\n * @param {number} x X.\n * @return {number} Base 2 logarithm of x.\n */\nexport var log2 = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var log2;\n if ('log2' in Math) {\n // The environment supports the native Math.log2 function, use it…\n log2 = Math.log2;\n }\n else {\n // … else, use the reference implementation of MDN:\n log2 = function (x) {\n return Math.log(x) * Math.LOG2E;\n };\n }\n return log2;\n})();\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n }\n else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n var n = mat.length;\n for (var i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n var maxRow = i;\n var maxEl = Math.abs(mat[i][i]);\n for (var r = i + 1; r < n; r++) {\n var absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n // Swap max row with i-th (current) row\n var tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (var j = i + 1; j < n; j++) {\n var coef = -mat[j][i] / mat[i][i];\n for (var k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n }\n else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n // Solve Ax=b for upper triangular matrix A (mat)\n var x = new Array(n);\n for (var l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (var m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return (angleInRadians * 180) / Math.PI;\n}\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return (angleInDegrees * Math.PI) / 180;\n}\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n var r = a % b;\n return r * b < 0 ? r + b : r;\n}\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n//# sourceMappingURL=math.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg3857\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\nimport { cosh } from '../math.js';\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * @const\n * @type {number}\n */\nexport var HALF_SIZE = Math.PI * RADIUS;\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var WORLD_EXTENT = [-180, -85, 180, 85];\n/**\n * Maximum safe value in y direction\n * @const\n * @type {number}\n */\nexport var MAX_SAFE_Y = RADIUS * Math.log(Math.tan(Math.PI / 2));\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nvar EPSG3857Projection = /** @class */ (function (_super) {\n __extends(EPSG3857Projection, _super);\n /**\n * @param {string} code Code.\n */\n function EPSG3857Projection(code) {\n return _super.call(this, {\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function (resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n },\n }) || this;\n }\n return EPSG3857Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857'),\n];\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = (HALF_SIZE * input[i]) / 180;\n var y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n if (y > MAX_SAFE_Y) {\n y = MAX_SAFE_Y;\n }\n else if (y < -MAX_SAFE_Y) {\n y = -MAX_SAFE_Y;\n }\n output[i + 1] = y;\n }\n return output;\n}\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = (180 * input[i]) / HALF_SIZE;\n output[i + 1] =\n (360 * Math.atan(Math.exp(input[i + 1] / RADIUS))) / Math.PI - 90;\n }\n return output;\n}\n//# sourceMappingURL=epsg3857.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-180, -90, 180, 90];\n/**\n * @const\n * @type {number}\n */\nexport var METERS_PER_UNIT = (Math.PI * RADIUS) / 180;\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nvar EPSG4326Projection = /** @class */ (function (_super) {\n __extends(EPSG4326Projection, _super);\n /**\n * @param {string} code Code.\n * @param {string=} opt_axisOrientation Axis orientation.\n */\n function EPSG4326Projection(code, opt_axisOrientation) {\n return _super.call(this, {\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT,\n }) || this;\n }\n return EPSG4326Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n];\n//# sourceMappingURL=epsg4326.js.map","/**\n * @module ol/proj/projections\n */\n/**\n * @type {Object}\n */\nvar cache = {};\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return (cache[code] ||\n cache[code.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/, 'EPSG:$3')] ||\n null);\n}\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n//# sourceMappingURL=projections.js.map","/**\n * @module ol/proj/transforms\n */\nimport { isEmpty } from '../obj.js';\n/**\n * @private\n * @type {!Object>}\n */\nvar transforms = {};\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n var transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n var transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n//# sourceMappingURL=transforms.js.map","/**\n * @module ol/sphere\n */\nimport GeometryType from './geom/GeometryType.js';\nimport { toDegrees, toRadians } from './math.js';\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport var DEFAULT_RADIUS = 6371008.8;\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lat2 = toRadians(c2[1]);\n var deltaLatBy2 = (lat2 - lat1) / 2;\n var deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) *\n Math.sin(deltaLonBy2) *\n Math.cos(lat1) *\n Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n var length = 0;\n for (var i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var length = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs-new.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n var area = 0;\n var len = coordinates.length;\n var x1 = coordinates[len - 1][0];\n var y1 = coordinates[len - 1][1];\n for (var i = 0; i < len; i++) {\n var x2 = coordinates[i][0];\n var y2 = coordinates[i][1];\n area +=\n toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) + Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return (area * radius * radius) / 2.0;\n}\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions=} opt_options Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var area = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number=} opt_radius The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lon1 = toRadians(c1[0]);\n var dByR = distance / radius;\n var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n var lon = lon1 +\n Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n//# sourceMappingURL=sphere.js.map","/**\n * @module ol/string\n */\n/**\n * @param {number} number Number to be formatted\n * @param {number} width The desired width\n * @param {number=} opt_precision Precision of the output string (i.e. number of decimal places)\n * @returns {string} Formatted string\n */\nexport function padNumber(number, width, opt_precision) {\n var numberString = opt_precision !== undefined ? number.toFixed(opt_precision) : '' + number;\n var decimal = numberString.indexOf('.');\n decimal = decimal === -1 ? numberString.length : decimal;\n return decimal > width\n ? numberString\n : new Array(1 + width - decimal).join('0') + numberString;\n}\n/**\n * Adapted from https://github.com/omichelsen/compare-versions/blob/master/index.js\n * @param {string|number} v1 First version\n * @param {string|number} v2 Second version\n * @returns {number} Value\n */\nexport function compareVersions(v1, v2) {\n var s1 = ('' + v1).split('.');\n var s2 = ('' + v2).split('.');\n for (var i = 0; i < Math.max(s1.length, s2.length); i++) {\n var n1 = parseInt(s1[i] || '0', 10);\n var n2 = parseInt(s2[i] || '0', 10);\n if (n1 > n2) {\n return 1;\n }\n if (n2 > n1) {\n return -1;\n }\n }\n return 0;\n}\n//# sourceMappingURL=string.js.map","/**\n * @module ol/coordinate\n */\nimport { getWidth } from './extent.js';\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + (r * dx) / d;\n var y = y0 + (r * dy) / d;\n return [x, y];\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - deg * 3600 - min * 60;\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return (deg +\n '\\u00b0 ' +\n padNumber(min, 2) +\n '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) +\n '\\u2033' +\n (normalizedDegrees == 0\n ? ''\n : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0)));\n}\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n var equals = true;\n for (var i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return (degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n var worldWidth = getWidth(projection.getExtent());\n var worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number=} opt_sourceExtentWidth Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, opt_sourceExtentWidth) {\n var projectionExtent = projection.getExtent();\n var worldsAway = 0;\n if (projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])) {\n var sourceExtentWidth = opt_sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor((coordinate[0] - projectionExtent[0]) / sourceExtentWidth);\n }\n return worldsAway;\n}\n//# sourceMappingURL=coordinate.js.map","/**\n * @module ol/proj\n */\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj~addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection} object for the new projection and add it with\n * {@link module:ol/proj~addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj~addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection} with\n * {@link module:ol/proj~addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport Projection from './proj/Projection.js';\nimport Units, { METERS_PER_UNIT } from './proj/Units.js';\nimport { PROJECTIONS as EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326, } from './proj/epsg3857.js';\nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';\nimport { add as addProj, clear as clearProj, get as getProj, } from './proj/projections.js';\nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc, } from './proj/transforms.js';\nimport { applyTransform, getWidth } from './extent.js';\nimport { clamp, modulo } from './math.js';\nimport { getDistance } from './sphere.js';\nimport { getWorldsAway } from './coordinate.js';\n/**\n * A projection as {@link module:ol/proj/Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\nexport { METERS_PER_UNIT };\nexport { Projection };\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n var output;\n if (opt_output !== undefined) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n }\n else {\n output = input.slice();\n }\n return output;\n}\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array=} opt_output Output array of coordinate values.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string'\n ? getProj(/** @type {string} */ (projectionLike))\n : /** @type {Projection} */ (projectionLike) || null;\n}\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the 'point' pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {import(\"./proj/Units.js\").default=} opt_units Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n var pointResolution;\n var getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (opt_units && opt_units !== projection.getUnits()) {\n var metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution =\n (pointResolution * metersPerUnit) / METERS_PER_UNIT[opt_units];\n }\n }\n }\n else {\n var units = projection.getUnits();\n if ((units == Units.DEGREES && !opt_units) || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n }\n else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n var toEPSG4326_1 = getTransformFromProjections(projection, get('EPSG:4326'));\n if (toEPSG4326_1 === identityTransform && units !== Units.DEGREES) {\n // no transform is available\n pointResolution = resolution * projection.getMetersPerUnit();\n }\n else {\n var vertices = [\n point[0] - resolution / 2,\n point[1],\n point[0] + resolution / 2,\n point[1],\n point[0],\n point[1] - resolution / 2,\n point[0],\n point[1] + resolution / 2,\n ];\n vertices = toEPSG4326_1(vertices, vertices, 2);\n var width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n var height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n }\n var metersPerUnit = opt_units\n ? METERS_PER_UNIT[opt_units]\n : projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function (source) {\n projections.forEach(function (destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function (projection1) {\n projections2.forEach(function (projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n }\n else if (typeof projection === 'string') {\n return get(projection);\n }\n else {\n return /** @type {Projection} */ (projection);\n }\n}\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array=} opt_output Output.\n * @param {number=} opt_dimension Dimension.\n * @return {Array} Output.\n */\n function (input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension !== undefined ? opt_dimension : 2;\n var output = opt_output !== undefined ? opt_output : new Array(length);\n for (var i = 0; i < length; i += dimension) {\n var point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (var j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n var sourceProj = get(source);\n var destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike=} opt_projection Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n return transform(coordinate, 'EPSG:4326', opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike=} opt_projection Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n var lonLat = transform(coordinate, opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n var lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n var equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n }\n else {\n var transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n var sourceCode = sourceProjection.getCode();\n var destinationCode = destinationProjection.getCode();\n var transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n var sourceProjection = get(source);\n var destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj~transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n var transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, opt_stops) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, opt_stops);\n}\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n var transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n/**\n * @type {?Projection}\n */\nvar userProjection = null;\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @param {ProjectionLike} projection The user projection.\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n/**\n * Clear the user projection if set. Note that this method is not yet a part of\n * the stable API. Support for user projections is not yet complete and should\n * be considered experimental.\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @returns {?Projection} The user projection (or null if not set).\n */\nexport function getUserProjection() {\n return userProjection;\n}\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods. Note that this\n * method is not yet a part of the stable API. Support for user projections is\n * not yet complete and should be considered experimental.\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @returns {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @returns {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @returns {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destiation).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destiation).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n return function (coord) {\n var sourceX = coord[0];\n var sourceY = coord[1];\n var transformed, worldsAway;\n if (sourceProj.canWrapX()) {\n var sourceExtent = sourceProj.getExtent();\n var sourceExtentWidth = getWidth(sourceExtent);\n worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n if (worldsAway) {\n // Move x to the real world\n sourceX = sourceX - worldsAway * sourceExtentWidth;\n }\n sourceX = clamp(sourceX, sourceExtent[0], sourceExtent[2]);\n sourceY = clamp(sourceY, sourceExtent[1], sourceExtent[3]);\n transformed = transform([sourceX, sourceY]);\n }\n else {\n transformed = transform(coord);\n }\n if (worldsAway && destProj.canWrapX()) {\n // Move transformed coordinate back to the offset world\n transformed[0] += worldsAway * getWidth(destProj.getExtent());\n }\n return transformed;\n };\n}\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\naddCommon();\n//# sourceMappingURL=proj.js.map","/**\n * @module ol/geom/flat/transform\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var x = flatCoordinates[j];\n var y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n//# sourceMappingURL=transform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport Units from '../proj/Units.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, create as createTransform, } from '../transform.js';\nimport { createEmpty, createOrUpdateEmpty, getHeight, returnOrUpdate, } from '../extent.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport { memoizeOne } from '../functions.js';\nimport { transform2D } from './flat/transform.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\n }\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n };\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n };\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n var extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\n };\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\n };\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS\n ? function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport { rotate, scale, transform2D, translate } from './flat/transform.js';\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./GeometryLayout.js\").default}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {import(\"./GeometryLayout.js\").default} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in counter-clockwise radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {import(\"./GeometryLayout.js\").default} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return /** @type {import(\"./GeometryLayout.js\").default} */ (layout);\n}\n/**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/geom/flat/closest\n */\nimport { lerp, squaredDistance as squaredDx } from '../../math.js';\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n var x1 = flatCoordinates[offset1];\n var y1 = flatCoordinates[offset1 + 1];\n var dx = flatCoordinates[offset2] - x1;\n var dy = flatCoordinates[offset2 + 1] - y1;\n var offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n }\n else {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n }\n else if (t > 0) {\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n }\n else {\n offset = offset1;\n }\n }\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n var i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n }\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n var index = offset + stride;\n while (index < end) {\n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n }\n else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n//# sourceMappingURL=closest.js.map","/**\n * @module ol/geom/flat/deflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (var i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n var coordinate = coordinates[i];\n for (var j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array=} opt_ends Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n var ends = opt_ends ? opt_ends : [];\n var i = 0;\n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {\n var end = deflateCoordinates(flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>=} opt_endss Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n var endss = opt_endss ? opt_endss : [];\n var i = 0;\n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {\n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n//# sourceMappingURL=deflate.js.map","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\nimport { squaredDistance, squaredSegmentDistance } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array=} opt_simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined\n ? opt_simplifiedFlatCoordinates\n : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n var n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n var markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n var stack = [offset, end - stride];\n var index = 0;\n while (stack.length > 0) {\n var last = stack.pop();\n var first = stack.pop();\n var maxSquaredDistance = 0;\n var x1 = flatCoordinates[first];\n var y1 = flatCoordinates[first + 1];\n var x2 = flatCoordinates[last];\n var y2 = flatCoordinates[last + 1];\n for (var i = first + stride; i < last; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n var squaredDistance_1 = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance_1 > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance_1;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (var i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n var x2 = x1;\n var y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n var x1 = snap(flatCoordinates[offset], tolerance);\n var y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n var x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n var x3 = snap(flatCoordinates[offset], tolerance);\n var y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n var dx2 = x3 - x1;\n var dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (dx1 * dy2 == dy1 * dx2 &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n//# sourceMappingURL=simplify.js.map","/**\n * @module ol/geom/flat/inflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array=} opt_coordinates Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>=} opt_coordinatess Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n var i = 0;\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n var end = ends[j];\n coordinatess[i++] = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>=} opt_coordinatesss\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n var i = 0;\n for (var j = 0, jj = endss.length; j < jj; ++j) {\n var ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n//# sourceMappingURL=inflate.js.map","/**\n * @module ol/geom/flat/area\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n var twiceArea = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n var area = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var area = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n//# sourceMappingURL=area.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LinearRing\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { linearRing as linearRingArea } from './flat/area.js';\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nvar LinearRing = /** @class */ (function (_super) {\n __extends(LinearRing, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function LinearRing(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LinearRing.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n LinearRing.prototype.getArea = function () {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n LinearRing.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LinearRing.prototype.intersectsExtent = function (extent) {\n return false;\n };\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LinearRing;\n}(SimpleGeometry));\nexport default LinearRing;\n//# sourceMappingURL=LinearRing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Point\n */\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { containsXY, createOrUpdateFromCoordinate } from '../extent.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function Point(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n _this.setCoordinates(coordinates, opt_layout);\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n Point.prototype.clone = function () {\n var point = new Point(this.flatCoordinates.slice(), this.layout);\n point.applyProperties(this);\n return point;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n var stride = this.stride;\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n Point.prototype.getCoordinates = function () {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Point.prototype.computeExtent = function (extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Point.prototype.getType = function () {\n return GeometryType.POINT;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Point.prototype.intersectsExtent = function (extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n };\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Point.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return Point;\n}(SimpleGeometry));\nexport default Point;\n//# sourceMappingURL=Point.js.map","/**\n * @module ol/geom/flat/contains\n */\nimport { forEachCorner } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n var outside = forEachCorner(extent, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // http://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n var wn = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n wn++;\n }\n }\n else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=contains.js.map","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport { linearRingsContainsXY } from './contains.js';\nimport { numberSafeCompareFunction } from '../../array.js';\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n var i, ii, x, x1, x2, y1, y2;\n var y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n var intersections = [];\n // Calculate intersections with the horizontal line\n for (var r = 0, rr = ends.length; r < rr; ++r) {\n var end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n var pointX = NaN;\n var maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n var segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n }\n else {\n return [pointX, y, maxSegmentLength];\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n var interiorPoints = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n//# sourceMappingURL=interiorpoint.js.map","/**\n * @module ol/geom/flat/segments\n */\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n var point2 = [];\n var ret;\n for (; offset + stride < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback(point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n//# sourceMappingURL=segments.js.map","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment, } from '../../extent.js';\nimport { forEach as forEachSegment } from './segments.js';\nimport { linearRingContainsExtent, linearRingContainsXY } from './contains.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=intersectsextent.js.map","/**\n * @module ol/geom/flat/reverse\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (var i = 0; i < stride; ++i) {\n var tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n//# sourceMappingURL=reverse.js.map","/**\n * @module ol/geom/flat/orient\n */\nimport { coordinates as reverseCoordinates } from './reverse.js';\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // http://tinyurl.com/clockwise-method\n // https://github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cpp\n var edge = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge === 0 ? undefined : edge > 0;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n }\n else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n var reverse = i === 0\n ? (right && isClockwise) || (!right && !isClockwise)\n : (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n//# sourceMappingURL=orient.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Polygon\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { modulo } from '../math.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { offset as sphereOffset } from '../sphere.js';\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @param {Array=} opt_ends Ends (for internal use with flat coordinates).\n */\n function Polygon(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointRevision_ = -1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatInteriorPoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(\n /** @type {Array>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n Polygon.prototype.appendLinearRing = function (linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @api\n */\n Polygon.prototype.clone = function () {\n var polygon = new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n polygon.applyProperties(this);\n return polygon;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Polygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Polygon.prototype.containsXY = function (x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n };\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n Polygon.prototype.getArea = function () {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @api\n */\n Polygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n Polygon.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * @return {Array} Interior point.\n */\n Polygon.prototype.getFlatInteriorPoint = function () {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n };\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n Polygon.prototype.getInteriorPoint = function () {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n };\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n Polygon.prototype.getLinearRingCount = function () {\n return this.ends_.length;\n };\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing} Linear ring.\n * @api\n */\n Polygon.prototype.getLinearRing = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n Polygon.prototype.getLinearRings = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var linearRings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n Polygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\n */\n Polygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Polygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Polygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return Polygon;\n}(SimpleGeometry));\nexport default Polygon;\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices.\n * @param {number=} opt_n Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number=} opt_sphereRadius Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n var n = opt_n ? opt_n : 32;\n /** @type {Array} */\n var flatCoordinates = [];\n for (var i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, (2 * Math.PI * i) / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var flatCoordinates = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n var sides = opt_sides ? opt_sides : 32;\n var stride = circle.getStride();\n var layout = circle.getLayout();\n var center = circle.getCenter();\n var arrayLength = stride * (sides + 1);\n var flatCoordinates = new Array(arrayLength);\n for (var i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (var j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n var ends = [flatCoordinates.length];\n var polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n var flatCoordinates = polygon.getFlatCoordinates();\n var stride = polygon.getStride();\n var sides = flatCoordinates.length / stride - 1;\n var startAngle = opt_angle ? opt_angle : 0;\n for (var i = 0; i <= sides; ++i) {\n var offset = i * stride;\n var angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n }\n polygon.changed();\n}\n//# sourceMappingURL=Polygon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Geolocation\n */\nimport BaseEvent from './events/Event.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport EventType from './events/EventType.js';\nimport { circular as circularPolygon } from './geom/Polygon.js';\nimport { get as getProjection, getTransformFromProjections, identityTransform, } from './proj.js';\nimport { toRadians } from './math.js';\n/**\n * @enum {string}\n */\nvar Property = {\n ACCURACY: 'accuracy',\n ACCURACY_GEOMETRY: 'accuracyGeometry',\n ALTITUDE: 'altitude',\n ALTITUDE_ACCURACY: 'altitudeAccuracy',\n HEADING: 'heading',\n POSITION: 'position',\n PROJECTION: 'projection',\n SPEED: 'speed',\n TRACKING: 'tracking',\n TRACKING_OPTIONS: 'trackingOptions',\n};\n/**\n * @classdesc\n * Events emitted on Geolocation error.\n */\nvar GeolocationError = /** @class */ (function (_super) {\n __extends(GeolocationError, _super);\n /**\n * @param {GeolocationPositionError} error error object.\n */\n function GeolocationError(error) {\n var _this = _super.call(this, EventType.ERROR) || this;\n /**\n * @type {number}\n */\n _this.code = error.code;\n /**\n * @type {string}\n */\n _this.message = error.message;\n return _this;\n }\n return GeolocationError;\n}(BaseEvent));\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](http://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes, register a listener for the generic\n * `change` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n * var geolocation = new Geolocation({\n * // take the projection to use from the map's view\n * projection: view.getProjection()\n * });\n * // listen to changes in position\n * geolocation.on('change', function(evt) {\n * window.console.log(geolocation.getPosition());\n * });\n *\n * @fires module:ol/events/Event~BaseEvent#event:error\n * @api\n */\nvar Geolocation = /** @class */ (function (_super) {\n __extends(Geolocation, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Geolocation(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * The unprojected (EPSG:4326) device position.\n * @private\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.position_ = null;\n /**\n * @private\n * @type {import(\"./proj.js\").TransformFunction}\n */\n _this.transform_ = identityTransform;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.watchId_ = undefined;\n _this.addEventListener(getChangeEventType(Property.PROJECTION), _this.handleProjectionChanged_);\n _this.addEventListener(getChangeEventType(Property.TRACKING), _this.handleTrackingChanged_);\n if (options.projection !== undefined) {\n _this.setProjection(options.projection);\n }\n if (options.trackingOptions !== undefined) {\n _this.setTrackingOptions(options.trackingOptions);\n }\n _this.setTracking(options.tracking !== undefined ? options.tracking : false);\n return _this;\n }\n /**\n * Clean up.\n */\n Geolocation.prototype.disposeInternal = function () {\n this.setTracking(false);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * @private\n */\n Geolocation.prototype.handleProjectionChanged_ = function () {\n var projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(getProjection('EPSG:4326'), projection);\n if (this.position_) {\n this.set(Property.POSITION, this.transform_(this.position_));\n }\n }\n };\n /**\n * @private\n */\n Geolocation.prototype.handleTrackingChanged_ = function () {\n if ('geolocation' in navigator) {\n var tracking = this.getTracking();\n if (tracking && this.watchId_ === undefined) {\n this.watchId_ = navigator.geolocation.watchPosition(this.positionChange_.bind(this), this.positionError_.bind(this), this.getTrackingOptions());\n }\n else if (!tracking && this.watchId_ !== undefined) {\n navigator.geolocation.clearWatch(this.watchId_);\n this.watchId_ = undefined;\n }\n }\n };\n /**\n * @private\n * @param {GeolocationPosition} position position event.\n */\n Geolocation.prototype.positionChange_ = function (position) {\n var coords = position.coords;\n this.set(Property.ACCURACY, coords.accuracy);\n this.set(Property.ALTITUDE, coords.altitude === null ? undefined : coords.altitude);\n this.set(Property.ALTITUDE_ACCURACY, coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy);\n this.set(Property.HEADING, coords.heading === null ? undefined : toRadians(coords.heading));\n if (!this.position_) {\n this.position_ = [coords.longitude, coords.latitude];\n }\n else {\n this.position_[0] = coords.longitude;\n this.position_[1] = coords.latitude;\n }\n var projectedPosition = this.transform_(this.position_);\n this.set(Property.POSITION, projectedPosition);\n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n var geometry = circularPolygon(this.position_, coords.accuracy);\n geometry.applyTransform(this.transform_);\n this.set(Property.ACCURACY_GEOMETRY, geometry);\n this.changed();\n };\n /**\n * @private\n * @param {GeolocationPositionError} error error object.\n */\n Geolocation.prototype.positionError_ = function (error) {\n this.dispatchEvent(new GeolocationError(error));\n };\n /**\n * Get the accuracy of the position in meters.\n * @return {number|undefined} The accuracy of the position measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n };\n /**\n * Get a geometry of the position accuracy.\n * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracyGeometry = function () {\n return /** @type {?import(\"./geom/Polygon.js\").default} */ (this.get(Property.ACCURACY_GEOMETRY) || null);\n };\n /**\n * Get the altitude associated with the position.\n * @return {number|undefined} The altitude of the position in meters above mean\n * sea level.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitude = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n };\n /**\n * Get the altitude accuracy of the position.\n * @return {number|undefined} The accuracy of the altitude measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitudeAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE_ACCURACY));\n };\n /**\n * Get the heading as radians clockwise from North.\n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n * is set to `true` in the tracking options.\n * @return {number|undefined} The heading of the device in radians from north.\n * @observable\n * @api\n */\n Geolocation.prototype.getHeading = function () {\n return /** @type {number|undefined} */ (this.get(Property.HEADING));\n };\n /**\n * Get the position of the device.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n * in the current projection.\n * @observable\n * @api\n */\n Geolocation.prototype.getPosition = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION));\n };\n /**\n * Get the projection associated with the position.\n * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.getProjection = function () {\n return /** @type {import(\"./proj/Projection.js\").default|undefined} */ (this.get(Property.PROJECTION));\n };\n /**\n * Get the speed in meters per second.\n * @return {number|undefined} The instantaneous speed of the device in meters\n * per second.\n * @observable\n * @api\n */\n Geolocation.prototype.getSpeed = function () {\n return /** @type {number|undefined} */ (this.get(Property.SPEED));\n };\n /**\n * Determine if the device location is being tracked.\n * @return {boolean} The device location is being tracked.\n * @observable\n * @api\n */\n Geolocation.prototype.getTracking = function () {\n return /** @type {boolean} */ (this.get(Property.TRACKING));\n };\n /**\n * Get the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @return {PositionOptions|undefined} PositionOptions as defined by\n * the [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.getTrackingOptions = function () {\n return /** @type {PositionOptions|undefined} */ (this.get(Property.TRACKING_OPTIONS));\n };\n /**\n * Set the projection to use for transforming the coordinates.\n * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.setProjection = function (projection) {\n this.set(Property.PROJECTION, getProjection(projection));\n };\n /**\n * Enable or disable tracking.\n * @param {boolean} tracking Enable tracking.\n * @observable\n * @api\n */\n Geolocation.prototype.setTracking = function (tracking) {\n this.set(Property.TRACKING, tracking);\n };\n /**\n * Set the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @param {PositionOptions} options PositionOptions as defined by the\n * [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.setTrackingOptions = function (options) {\n this.set(Property.TRACKING_OPTIONS, options);\n };\n return Geolocation;\n}(BaseObject));\nexport default Geolocation;\n//# sourceMappingURL=Geolocation.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageBase\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { abstract } from './util.js';\n/**\n * @abstract\n */\nvar ImageBase = /** @class */ (function (_super) {\n __extends(ImageBase, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n function ImageBase(extent, resolution, pixelRatio, state) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = extent;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @protected\n * @type {number|undefined}\n */\n _this.resolution = resolution;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = state;\n return _this;\n }\n /**\n * @protected\n */\n ImageBase.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n ImageBase.prototype.getExtent = function () {\n return this.extent;\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n ImageBase.prototype.getImage = function () {\n return abstract();\n };\n /**\n * @return {number} PixelRatio.\n */\n ImageBase.prototype.getPixelRatio = function () {\n return this.pixelRatio_;\n };\n /**\n * @return {number} Resolution.\n */\n ImageBase.prototype.getResolution = function () {\n return /** @type {number} */ (this.resolution);\n };\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n ImageBase.prototype.getState = function () {\n return this.state;\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageBase.prototype.load = function () {\n abstract();\n };\n return ImageBase;\n}(EventTarget));\nexport default ImageBase;\n//# sourceMappingURL=ImageBase.js.map","/**\n * @module ol/ImageState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=ImageState.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport var DEVICE_PIXEL_RATIO = typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport var WORKER_OFFSCREEN_CANVAS = typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n/**\n * @type {boolean}\n */\nexport var PASSIVE_EVENT_LISTENERS = (function () {\n var passive = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n }\n catch (error) {\n // passive not supported\n }\n return passive;\n})();\n//# sourceMappingURL=has.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport { IMAGE_DECODE } from './has.js';\nimport { getHeight } from './extent.js';\nimport { listenOnce, unlistenByKey } from './events.js';\n/**\n * A function that takes an {@link module:ol/Image~Image} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~Image#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\nvar ImageWrapper = /** @class */ (function (_super) {\n __extends(ImageWrapper, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n */\n function ImageWrapper(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {\n var _this = _super.call(this, extent, resolution, pixelRatio, ImageState.IDLE) || this;\n /**\n * @private\n * @type {string}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = ImageState.IDLE;\n /**\n * @private\n * @type {LoadFunction}\n */\n _this.imageLoadFunction_ = imageLoadFunction;\n return _this;\n }\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageWrapper.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageError_ = function () {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageLoad_ = function () {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n ImageWrapper.prototype.load = function () {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n ImageWrapper.prototype.setImage = function (image) {\n this.image_ = image;\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageWrapper.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageWrapper;\n}(ImageBase));\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n var img = /** @type {HTMLImageElement} */ (image);\n if (img.src && IMAGE_DECODE) {\n var promise = img.decode();\n var listening_1 = true;\n var unlisten = function () {\n listening_1 = false;\n };\n promise\n .then(function () {\n if (listening_1) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening_1) {\n // FIXME: Unconditionally call errorHandler() when this bug is fixed upstream:\n // https://bugs.webkit.org/show_bug.cgi?id=198527\n if (error.name === 'EncodingError' &&\n error.message === 'Invalid image type.') {\n loadHandler();\n }\n else {\n errorHandler();\n }\n }\n });\n return unlisten;\n }\n var listenerKeys = [\n listenOnce(img, EventType.LOAD, loadHandler),\n listenOnce(img, EventType.ERROR, errorHandler),\n ];\n return function unlisten() {\n listenerKeys.forEach(unlistenByKey);\n };\n}\nexport default ImageWrapper;\n//# sourceMappingURL=Image.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageCanvas\n */\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\n/**\n * A function that is called to trigger asynchronous canvas drawing. It is\n * called with a \"done\" callback that should be called when drawing is done.\n * If any error occurs during drawing, the \"done\" callback should be called with\n * that error.\n *\n * @typedef {function(function(Error=): void): void} Loader\n */\nvar ImageCanvas = /** @class */ (function (_super) {\n __extends(ImageCanvas, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {HTMLCanvasElement} canvas Canvas.\n * @param {Loader=} opt_loader Optional loader function to\n * support asynchronous canvas drawing.\n */\n function ImageCanvas(extent, resolution, pixelRatio, canvas, opt_loader) {\n var _this = this;\n var state = opt_loader !== undefined ? ImageState.IDLE : ImageState.LOADED;\n _this = _super.call(this, extent, resolution, pixelRatio, state) || this;\n /**\n * Optional canvas loader function.\n * @type {?Loader}\n * @private\n */\n _this.loader_ = opt_loader !== undefined ? opt_loader : null;\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n _this.canvas_ = canvas;\n /**\n * @private\n * @type {?Error}\n */\n _this.error_ = null;\n return _this;\n }\n /**\n * Get any error associated with asynchronous rendering.\n * @return {?Error} Any error that occurred during rendering.\n */\n ImageCanvas.prototype.getError = function () {\n return this.error_;\n };\n /**\n * Handle async drawing complete.\n * @param {Error=} err Any error during drawing.\n * @private\n */\n ImageCanvas.prototype.handleLoad_ = function (err) {\n if (err) {\n this.error_ = err;\n this.state = ImageState.ERROR;\n }\n else {\n this.state = ImageState.LOADED;\n }\n this.changed();\n };\n /**\n * Load not yet loaded URI.\n */\n ImageCanvas.prototype.load = function () {\n if (this.state == ImageState.IDLE) {\n this.state = ImageState.LOADING;\n this.changed();\n this.loader_(this.handleLoad_.bind(this));\n }\n };\n /**\n * @return {HTMLCanvasElement} Canvas element.\n */\n ImageCanvas.prototype.getImage = function () {\n return this.canvas_;\n };\n return ImageCanvas;\n}(ImageBase));\nexport default ImageCanvas;\n//# sourceMappingURL=ImageCanvas.js.map","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=TileState.js.map","/**\n * @module ol/easing\n */\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing~inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n//# sourceMappingURL=easing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Tile\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport TileState from './TileState.js';\nimport { abstract } from './util.js';\nimport { easeIn } from './easing.js';\n/**\n * A function that takes an {@link module:ol/Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * var xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * var data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n/**\n * {@link module:ol/source/Tile~Tile} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @api\n */\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nvar Tile = /** @class */ (function (_super) {\n __extends(Tile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {Options=} opt_options Tile options.\n */\n function Tile(tileCoord, state, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n _this.tileCoord = tileCoord;\n /**\n * @protected\n * @type {import(\"./TileState.js\").default}\n */\n _this.state = state;\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile}\n */\n _this.interimTile = null;\n /**\n * The tile is available at the highest possible resolution. Subclasses can\n * set this to `false` initially. Tile load listeners will not be\n * unregistered before this is set to `true` and a `#changed()` is called.\n * @type {boolean}\n */\n _this.hifi = true;\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n _this.key = '';\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n _this.transition_ =\n options.transition === undefined ? 250 : options.transition;\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n _this.transitionStarts_ = {};\n return _this;\n }\n /**\n * @protected\n */\n Tile.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Called by the tile cache when the tile is removed from the cache due to expiry\n */\n Tile.prototype.release = function () { };\n /**\n * @return {string} Key.\n */\n Tile.prototype.getKey = function () {\n return this.key + '/' + this.tileCoord;\n };\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n Tile.prototype.getInterimTile = function () {\n if (!this.interimTile) {\n //empty chain\n return this;\n }\n var tile = this.interimTile;\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n // Show tile immediately instead of fading it in after loading, because\n // the interim tile is in place already\n this.transition_ = 0;\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n // we can not find a better tile\n return this;\n };\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n Tile.prototype.refreshInterimChain = function () {\n if (!this.interimTile) {\n return;\n }\n var tile = this.interimTile;\n var prev = /** @type {Tile} */ (this);\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n }\n else if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n }\n else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n }\n else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n };\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n Tile.prototype.getTileCoord = function () {\n return this.tileCoord;\n };\n /**\n * @return {import(\"./TileState.js\").default} State.\n */\n Tile.prototype.getState = function () {\n return this.state;\n };\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {import(\"./TileState.js\").default} state State.\n * @api\n */\n Tile.prototype.setState = function (state) {\n if (this.state !== TileState.ERROR && this.state > state) {\n throw new Error('Tile load sequence violation');\n }\n this.state = state;\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n Tile.prototype.load = function () {\n abstract();\n };\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n Tile.prototype.getAlpha = function (id, time) {\n if (!this.transition_) {\n return 1;\n }\n var start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n }\n else if (start === -1) {\n return 1;\n }\n var delta = time - start + 1000 / 60; // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n };\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n Tile.prototype.inTransition = function (id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n };\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n Tile.prototype.endTransition = function (id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n };\n return Tile;\n}(EventTarget));\nexport default Tile;\n//# sourceMappingURL=Tile.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @param {Array=} opt_canvasPool Canvas pool to take existing canvas from.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool) {\n var canvas = opt_canvasPool && opt_canvasPool.length\n ? opt_canvasPool.shift()\n : WORKER_OFFSCREEN_CANVAS\n ? new OffscreenCanvas(opt_width || 300, opt_height || 300)\n : document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d'));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport { createCanvasContext2D } from './dom.js';\nimport { listenImage } from './Image.js';\nvar ImageTile = /** @class */ (function (_super) {\n __extends(ImageTile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options=} opt_options Tile options.\n */\n function ImageTile(tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {\n var _this = _super.call(this, tileCoord, state, opt_options) || this;\n /**\n * @private\n * @type {?string}\n */\n _this.crossOrigin_ = crossOrigin;\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n _this.src_ = src;\n _this.key = src;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n _this.tileLoadFunction_ = tileLoadFunction;\n return _this;\n }\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageTile.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageTile.prototype.handleImageError_ = function () {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageTile.prototype.handleImageLoad_ = function () {\n var image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n }\n else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load not yet loaded URI.\n * @api\n */\n ImageTile.prototype.load = function () {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageTile.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageTile;\n}(Tile));\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n var ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\nexport default ImageTile;\n//# sourceMappingURL=ImageTile.js.map","/**\n * @module ol/Kinetic\n */\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nvar Kinetic = /** @class */ (function () {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n function Kinetic(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n /**\n * FIXME empty description for jsdoc\n */\n Kinetic.prototype.begin = function () {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n Kinetic.prototype.update = function (x, y) {\n this.points_.push(x, y, Date.now());\n };\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n Kinetic.prototype.end = function () {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n var delay = Date.now() - this.delay_;\n var lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n // get the first point which still falls into the delay time\n var firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n var dx = this.points_[lastIndex] - this.points_[firstIndex];\n var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n };\n /**\n * @return {number} Total distance travelled (pixels).\n */\n Kinetic.prototype.getDistance = function () {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n };\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n Kinetic.prototype.getAngle = function () {\n return this.angle_;\n };\n return Kinetic;\n}());\nexport default Kinetic;\n//# sourceMappingURL=Kinetic.js.map","/**\n * @module ol/color\n */\nimport { assert } from './asserts.js';\nimport { clamp } from './math.js';\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nvar HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nvar NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n else {\n return toString(color);\n }\n}\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n var el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n var rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n else {\n return '';\n }\n}\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport var fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n /**\n * @const\n * @type {number}\n */\n var MAX_CACHE_SIZE = 1024;\n /**\n * @type {Object}\n */\n var cache = {};\n /**\n * @type {number}\n */\n var cacheSize = 0;\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n var color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n }\n else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n var i = 0;\n for (var key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n });\n})();\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n else {\n return fromString(color);\n }\n}\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n var r, g, b, a, color;\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n var n = s.length - 1; // number of hex digits\n var d = // number of digits per channel\n void 0; // number of digits per channel\n if (n <= 4) {\n d = 1;\n }\n else {\n d = 2;\n }\n var hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n }\n else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n }\n else if (s.indexOf('rgba(') == 0) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n }\n else if (s.indexOf('rgb(') == 0) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n }\n else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n var r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n var g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n var b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n var a = color[3] === undefined ? 1 : color[3];\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return (HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0);\n}\n//# sourceMappingURL=color.js.map","/**\n * @module ol/style/IconImageCache\n */\nimport { asString } from '../color.js';\n/**\n * @classdesc\n * Singleton class. Available through {@link module:ol/style/IconImageCache~shared}.\n */\nvar IconImageCache = /** @class */ (function () {\n function IconImageCache() {\n /**\n * @type {!Object}\n * @private\n */\n this.cache_ = {};\n /**\n * @type {number}\n * @private\n */\n this.cacheSize_ = 0;\n /**\n * @type {number}\n * @private\n */\n this.maxCacheSize_ = 32;\n }\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.clear = function () {\n this.cache_ = {};\n this.cacheSize_ = 0;\n };\n /**\n * @return {boolean} Can expire cache.\n */\n IconImageCache.prototype.canExpireCache = function () {\n return this.cacheSize_ > this.maxCacheSize_;\n };\n /**\n * FIXME empty description for jsdoc\n */\n IconImageCache.prototype.expire = function () {\n if (this.canExpireCache()) {\n var i = 0;\n for (var key in this.cache_) {\n var iconImage = this.cache_[key];\n if ((i++ & 3) === 0 && !iconImage.hasListener()) {\n delete this.cache_[key];\n --this.cacheSize_;\n }\n }\n }\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {import(\"./IconImage.js\").default} Icon image.\n */\n IconImageCache.prototype.get = function (src, crossOrigin, color) {\n var key = getKey(src, crossOrigin, color);\n return key in this.cache_ ? this.cache_[key] : null;\n };\n /**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @param {import(\"./IconImage.js\").default} iconImage Icon image.\n */\n IconImageCache.prototype.set = function (src, crossOrigin, color, iconImage) {\n var key = getKey(src, crossOrigin, color);\n this.cache_[key] = iconImage;\n ++this.cacheSize_;\n };\n /**\n * Set the cache size of the icon cache. Default is `32`. Change this value when\n * your map uses more than 32 different icon images and you are not caching icon\n * styles on the application level.\n * @param {number} maxCacheSize Cache max size.\n * @api\n */\n IconImageCache.prototype.setSize = function (maxCacheSize) {\n this.maxCacheSize_ = maxCacheSize;\n this.expire();\n };\n return IconImageCache;\n}());\n/**\n * @param {string} src Src.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"../color.js\").Color} color Color.\n * @return {string} Cache key.\n */\nfunction getKey(src, crossOrigin, color) {\n var colorString = color ? asString(color) : 'null';\n return crossOrigin + ':' + src + ':' + colorString;\n}\nexport default IconImageCache;\n/**\n * The {@link module:ol/style/IconImageCache~IconImageCache} for\n * {@link module:ol/style/Icon~Icon} images.\n * @api\n */\nexport var shared = new IconImageCache();\n//# sourceMappingURL=IconImageCache.js.map","/**\n * @module ol/layer/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source',\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport { abstract } from '../util.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { clamp } from '../math.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nvar BaseLayer = /** @class */ (function (_super) {\n __extends(BaseLayer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function BaseLayer(options) {\n var _this = _super.call(this) || this;\n /**\n * @type {Object}\n */\n var properties = assign({}, options);\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n /**\n * @type {string}\n * @private\n */\n _this.className_ =\n properties.className !== undefined ? options.className : 'ol-layer';\n delete properties.className;\n _this.setProperties(properties);\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n _this.state_ = null;\n return _this;\n }\n /**\n * @return {string} CSS class name.\n */\n BaseLayer.prototype.getClassName = function () {\n return this.className_;\n };\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean=} opt_managed Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n BaseLayer.prototype.getLayerState = function (opt_managed) {\n /** @type {import(\"./Layer.js\").State} */\n var state = this.state_ ||\n /** @type {?} */ ({\n layer: this,\n managed: opt_managed === undefined ? true : opt_managed,\n });\n var zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.sourceState = this.getSourceState();\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex =\n zIndex !== undefined ? zIndex : state.managed === false ? Infinity : 0;\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n return state;\n };\n /**\n * @abstract\n * @param {Array=} opt_array Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n BaseLayer.prototype.getLayersArray = function (opt_array) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Array=} opt_states Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n BaseLayer.prototype.getLayerStatesArray = function (opt_states) {\n return abstract();\n };\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n BaseLayer.prototype.getExtent = function () {\n return /** @type {import(\"../extent.js\").Extent|undefined} */ (this.get(LayerProperty.EXTENT));\n };\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n };\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinResolution = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n };\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n };\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n };\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getOpacity = function () {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n };\n /**\n * @abstract\n * @return {import(\"../source/State.js\").default} Source state.\n */\n BaseLayer.prototype.getSourceState = function () {\n return abstract();\n };\n /**\n * Return the visibility of the layer (`true` or `false`).\n * @return {boolean} The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getVisible = function () {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n };\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.getZIndex = function () {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n };\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setExtent = function (extent) {\n this.set(LayerProperty.EXTENT, extent);\n };\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxResolution = function (maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n };\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinResolution = function (minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n };\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMaxZoom = function (maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n };\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setMinZoom = function (minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n };\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setOpacity = function (opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n };\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setVisible = function (visible) {\n this.set(LayerProperty.VISIBLE, visible);\n };\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n BaseLayer.prototype.setZIndex = function (zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n };\n /**\n * Clean up.\n */\n BaseLayer.prototype.disposeInternal = function () {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n _super.prototype.disposeInternal.call(this);\n };\n return BaseLayer;\n}(BaseObject));\nexport default BaseLayer;\n//# sourceMappingURL=Base.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after all layers are rendered.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/source/State\n */\n/**\n * @enum {string}\n * State of the source, one of 'undefined', 'loading', 'ready' or 'error'.\n */\nexport default {\n UNDEFINED: 'undefined',\n LOADING: 'loading',\n READY: 'ready',\n ERROR: 'error',\n};\n//# sourceMappingURL=State.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Layer\n */\nimport BaseLayer from './Base.js';\nimport EventType from '../events/EventType.js';\nimport LayerProperty from './Property.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { getChangeEventType } from '../Object.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {function(import(\"../PluggableMap.js\").FrameState):HTMLElement} RenderFunction\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../source/Source.js\").default} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../PluggableMap.js\").default} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./Layer.js\").default} layer\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {import(\"../source/State.js\").default} sourceState\n * @property {boolean} visible\n * @property {boolean} managed\n * @property {import(\"../extent.js\").Extent} [extent]\n * @property {number} zIndex\n * @property {number} maxResolution\n * @property {number} minResolution\n * @property {number} minZoom\n * @property {number} maxZoom\n */\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is be added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with {@link module:ol/Map#addLayer}. Components\n * like {@link module:ol/interaction/Select~Select} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * {@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n *\n * Please note that for performance reasons several layers might get rendered to\n * the same HTML element, which will cause {@link module:ol/Map~Map#forEachLayerAtPixel} to\n * give false positives. To avoid this, apply different `className` properties to the\n * layers at creation time.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n *\n * @template {import(\"../source/Source.js\").default} SourceType\n * @api\n */\nvar Layer = /** @class */ (function (_super) {\n __extends(Layer, _super);\n /**\n * @param {Options} options Layer options.\n */\n function Layer(options) {\n var _this = this;\n var baseOptions = assign({}, options);\n delete baseOptions.source;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapPrecomposeKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.mapRenderKey_ = null;\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n _this.sourceChangeKey_ = null;\n /**\n * @private\n * @type {import(\"../renderer/Layer.js\").default}\n */\n _this.renderer_ = null;\n // Overwrite default render method with a custom one\n if (options.render) {\n _this.render = options.render;\n }\n if (options.map) {\n _this.setMap(options.map);\n }\n _this.addEventListener(getChangeEventType(LayerProperty.SOURCE), _this.handleSourcePropertyChange_);\n var source = options.source\n ? /** @type {SourceType} */ (options.source)\n : null;\n _this.setSource(source);\n return _this;\n }\n /**\n * @param {Array=} opt_array Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n Layer.prototype.getLayersArray = function (opt_array) {\n var array = opt_array ? opt_array : [];\n array.push(this);\n return array;\n };\n /**\n * @param {Array=} opt_states Optional list of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n Layer.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states ? opt_states : [];\n states.push(this.getLayerState());\n return states;\n };\n /**\n * Get the layer source.\n * @return {SourceType} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n Layer.prototype.getSource = function () {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n };\n /**\n * @return {import(\"../source/State.js\").default} Source state.\n */\n Layer.prototype.getSourceState = function () {\n var source = this.getSource();\n return !source ? SourceState.UNDEFINED : source.getState();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourceChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Layer.prototype.handleSourcePropertyChange_ = function () {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n var source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(source, EventType.CHANGE, this.handleSourceChange_, this);\n }\n this.changed();\n };\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n Layer.prototype.getFeatures = function (pixel) {\n return this.renderer_.getFeatures(pixel);\n };\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement} The rendered element.\n */\n Layer.prototype.render = function (frameState, target) {\n var layerRenderer = this.getRenderer();\n if (layerRenderer.prepareFrame(frameState)) {\n return layerRenderer.renderFrame(frameState, target);\n }\n };\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection, and the callback in\n * {@link module:ol/Map#forEachLayerAtPixel} will receive `null` as layer. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map#addLayer} instead.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Layer.prototype.setMap = function (map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(map, RenderEventType.PRECOMPOSE, function (evt) {\n var renderEvent = /** @type {import(\"../render/Event.js\").default} */ (evt);\n var layerStatesArray = renderEvent.frameState.layerStatesArray;\n var layerState = this.getLayerState(false);\n // A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.\n assert(!layerStatesArray.some(function (arrayLayerState) {\n return arrayLayerState.layer === layerState.layer;\n }), 67);\n layerStatesArray.push(layerState);\n }, this);\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n };\n /**\n * Set the layer source.\n * @param {SourceType} source The layer source.\n * @observable\n * @api\n */\n Layer.prototype.setSource = function (source) {\n this.set(LayerProperty.SOURCE, source);\n };\n /**\n * Get the renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} The layer renderer.\n */\n Layer.prototype.getRenderer = function () {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n };\n /**\n * @return {boolean} The layer has a renderer.\n */\n Layer.prototype.hasRenderer = function () {\n return !!this.renderer_;\n };\n /**\n * Create a renderer for this layer.\n * @return {import(\"../renderer/Layer.js\").default} A layer renderer.\n * @protected\n */\n Layer.prototype.createRenderer = function () {\n return null;\n };\n /**\n * Clean up.\n */\n Layer.prototype.disposeInternal = function () {\n this.setSource(null);\n _super.prototype.disposeInternal.call(this);\n };\n return Layer;\n}(BaseLayer));\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n var resolution = viewState.resolution;\n if (resolution < layerState.minResolution ||\n resolution >= layerState.maxResolution) {\n return false;\n }\n var zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\nexport default Layer;\n//# sourceMappingURL=Layer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport { TRUE } from '../functions.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, makeInverse } from '../transform.js';\nimport { getWidth } from '../extent.js';\nimport { shared as iconImageCache } from '../style/IconImageCache.js';\nimport { inView } from '../layer/Layer.js';\nimport { wrapX } from '../coordinate.js';\n/**\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature\n * @property {import(\"../layer/Layer.js\").default} layer\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry\n * @property {number} distanceSq\n * @property {import(\"./vector.js\").FeatureCallback} callback\n * @template T\n */\n/**\n * @abstract\n */\nvar MapRenderer = /** @class */ (function (_super) {\n __extends(MapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function MapRenderer(map) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = map;\n return _this;\n }\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n MapRenderer.prototype.calculateMatrices2D = function (frameState) {\n var viewState = frameState.viewState;\n var coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n var pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n composeTransform(coordinateToPixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / viewState.resolution, -1 / viewState.resolution, -viewState.rotation, -viewState.center[0], -viewState.center[1]);\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, callback, thisArg, layerFilter, thisArg2) {\n var result;\n var viewState = frameState.viewState;\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n var projection = viewState.projection;\n var translatedCoordinate = wrapX(coordinate.slice(), projection);\n var offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n var projectionExtent = projection.getExtent();\n var worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n var matches = /** @type {Array>} */ ([]);\n var tmpCoord = [];\n for (var i = 0; i < offsets.length; i++) {\n for (var j = numLayers - 1; j >= 0; --j) {\n var layerState = layerStates[j];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)) {\n var layerRenderer = layer.getRenderer();\n var source = layer.getSource();\n if (layerRenderer && source) {\n var coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, matches);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n var order = 1 / matches.length;\n matches.forEach(function (m, i) { return (m.distanceSq += i * order); });\n matches.sort(function (a, b) { return a.distanceSq - b.distanceSq; });\n matches.some(function (m) {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n MapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n MapRenderer.prototype.hasFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n var hasFeature = this.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n return hasFeature !== undefined;\n };\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n MapRenderer.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Render.\n * @abstract\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.renderFrame = function (frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n MapRenderer.prototype.scheduleExpireIconCache = function (frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n };\n return MapRenderer;\n}(Disposable));\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\nexport default MapRenderer;\n//# sourceMappingURL=Map.js.map","/**\n * @module ol/render/Event\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Event from '../events/Event.js';\nvar RenderEvent = /** @class */ (function (_super) {\n __extends(RenderEvent, _super);\n /**\n * @param {import(\"./EventType.js\").default} type Type.\n * @param {import(\"../transform.js\").Transform=} opt_inversePixelTransform Transform for\n * CSS pixels to rendered pixels.\n * @param {import(\"../PluggableMap.js\").FrameState=} opt_frameState Frame state.\n * @param {?CanvasRenderingContext2D=} opt_context Context.\n */\n function RenderEvent(type, opt_inversePixelTransform, opt_frameState, opt_context) {\n var _this = _super.call(this, type) || this;\n /**\n * Transform from CSS pixels (relative to the top-left corner of the map viewport)\n * to rendered pixels on this event's `context`. Only available when a Canvas renderer is used, null otherwise.\n * @type {import(\"../transform.js\").Transform|undefined}\n * @api\n */\n _this.inversePixelTransform = opt_inversePixelTransform;\n /**\n * An object representing the current render frame state.\n * @type {import(\"../PluggableMap.js\").FrameState|undefined}\n * @api\n */\n _this.frameState = opt_frameState;\n /**\n * Canvas context. Not available when the event is dispatched by the map. Only available\n * when a Canvas renderer is used, null otherwise.\n * @type {CanvasRenderingContext2D|null|undefined}\n * @api\n */\n _this.context = opt_context;\n return _this;\n }\n return RenderEvent;\n}(Event));\nexport default RenderEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style\n * @property {string} variant\n * @property {string} weight\n * @property {string} size\n * @property {string} lineHeight\n * @property {string} family\n * @property {Array} families\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From http://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n//# sourceMappingURL=css.js.map","/**\n * @module ol/render/canvas\n */\nimport BaseObject from '../Object.js';\nimport EventTarget from '../events/Target.js';\nimport { WORKER_OFFSCREEN_CANVAS } from '../has.js';\nimport { clear } from '../obj.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { getFontParameters } from '../css.js';\nimport { toString } from '../transform.js';\n/**\n * @typedef {Object} FillState\n * @property {import(\"../colorlike.js\").ColorLike} fillStyle\n */\n/**\n * @typedef Label\n * @property {number} width\n * @property {number} height\n * @property {Array} contextInstructions\n */\n/**\n * @typedef {Object} FillStrokeState\n * @property {import(\"../colorlike.js\").ColorLike} [currentFillStyle]\n * @property {import(\"../colorlike.js\").ColorLike} [currentStrokeStyle]\n * @property {CanvasLineCap} [currentLineCap]\n * @property {Array} currentLineDash\n * @property {number} [currentLineDashOffset]\n * @property {CanvasLineJoin} [currentLineJoin]\n * @property {number} [currentLineWidth]\n * @property {number} [currentMiterLimit]\n * @property {number} [lastStroke]\n * @property {import(\"../colorlike.js\").ColorLike} [fillStyle]\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle]\n * @property {CanvasLineCap} [lineCap]\n * @property {Array} lineDash\n * @property {number} [lineDashOffset]\n * @property {CanvasLineJoin} [lineJoin]\n * @property {number} [lineWidth]\n * @property {number} [miterLimit]\n */\n/**\n * @typedef {Object} StrokeState\n * @property {CanvasLineCap} lineCap\n * @property {Array} lineDash\n * @property {number} lineDashOffset\n * @property {CanvasLineJoin} lineJoin\n * @property {number} lineWidth\n * @property {number} miterLimit\n * @property {import(\"../colorlike.js\").ColorLike} strokeStyle\n */\n/**\n * @typedef {Object} TextState\n * @property {string} font\n * @property {string} [textAlign]\n * @property {string} textBaseline\n * @property {string} [placement]\n * @property {number} [maxAngle]\n * @property {boolean} [overflow]\n * @property {import(\"../style/Fill.js\").default} [backgroundFill]\n * @property {import(\"../style/Stroke.js\").default} [backgroundStroke]\n * @property {import(\"../size.js\").Size} [scale]\n * @property {Array} [padding]\n */\n/**\n * @typedef {Object} SerializableInstructions\n * @property {Array<*>} instructions The rendering instructions.\n * @property {Array<*>} hitDetectionInstructions The rendering hit detection instructions.\n * @property {Array} coordinates The array of all coordinates.\n * @property {!Object} [textStates] The text states (decluttering).\n * @property {!Object} [fillStates] The fill states (decluttering).\n * @property {!Object} [strokeStates] The stroke states (decluttering).\n */\n/**\n * @typedef {Object} DeclutterImageWithText\n */\n/**\n * @const\n * @type {string}\n */\nexport var defaultFont = '10px sans-serif';\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultFillStyle = '#000';\n/**\n * @const\n * @type {CanvasLineCap}\n */\nexport var defaultLineCap = 'round';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultLineDash = [];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineDashOffset = 0;\n/**\n * @const\n * @type {CanvasLineJoin}\n */\nexport var defaultLineJoin = 'round';\n/**\n * @const\n * @type {number}\n */\nexport var defaultMiterLimit = 10;\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultStrokeStyle = '#000';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextAlign = 'center';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextBaseline = 'middle';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultPadding = [0, 0, 0, 0];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineWidth = 1;\n/**\n * @type {BaseObject}\n */\nexport var checkedFonts = new BaseObject();\n/**\n * The label cache for text rendering. To change the default cache size of 2048\n * entries, use {@link module:ol/structs/LRUCache#setSize}.\n * Deprecated - there is no label cache any more.\n * @type {?}\n * @api\n * @deprecated\n */\nexport var labelCache = new EventTarget();\nlabelCache.setSize = function () {\n console.warn('labelCache is deprecated.'); //eslint-disable-line\n};\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar measureContext = null;\n/**\n * @type {string}\n */\nvar measureFont;\n/**\n * @type {!Object}\n */\nexport var textHeights = {};\n/**\n * Clears the label cache when a font becomes available.\n * @param {string} fontSpec CSS font spec.\n */\nexport var registerFont = (function () {\n var retries = 100;\n var size = '32px ';\n var referenceFonts = ['monospace', 'serif'];\n var len = referenceFonts.length;\n var text = 'wmytzilWMYTZIL@#/&?$%10\\uF013';\n var interval, referenceWidth;\n /**\n * @param {string} fontStyle Css font-style\n * @param {string} fontWeight Css font-weight\n * @param {*} fontFamily Css font-family\n * @return {boolean} Font with style and weight is available\n */\n function isAvailable(fontStyle, fontWeight, fontFamily) {\n var available = true;\n for (var i = 0; i < len; ++i) {\n var referenceFont = referenceFonts[i];\n referenceWidth = measureTextWidth(fontStyle + ' ' + fontWeight + ' ' + size + referenceFont, text);\n if (fontFamily != referenceFont) {\n var width = measureTextWidth(fontStyle +\n ' ' +\n fontWeight +\n ' ' +\n size +\n fontFamily +\n ',' +\n referenceFont, text);\n // If width and referenceWidth are the same, then the fallback was used\n // instead of the font we wanted, so the font is not available.\n available = available && width != referenceWidth;\n }\n }\n if (available) {\n return true;\n }\n return false;\n }\n function check() {\n var done = true;\n var fonts = checkedFonts.getKeys();\n for (var i = 0, ii = fonts.length; i < ii; ++i) {\n var font = fonts[i];\n if (checkedFonts.get(font) < retries) {\n if (isAvailable.apply(this, font.split('\\n'))) {\n clear(textHeights);\n // Make sure that loaded fonts are picked up by Safari\n measureContext = null;\n measureFont = undefined;\n checkedFonts.set(font, retries);\n }\n else {\n checkedFonts.set(font, checkedFonts.get(font) + 1, true);\n done = false;\n }\n }\n }\n if (done) {\n clearInterval(interval);\n interval = undefined;\n }\n }\n return function (fontSpec) {\n var font = getFontParameters(fontSpec);\n if (!font) {\n return;\n }\n var families = font.families;\n for (var i = 0, ii = families.length; i < ii; ++i) {\n var family = families[i];\n var key = font.style + '\\n' + font.weight + '\\n' + family;\n if (checkedFonts.get(key) === undefined) {\n checkedFonts.set(key, retries, true);\n if (!isAvailable(font.style, font.weight, family)) {\n checkedFonts.set(key, 0, true);\n if (interval === undefined) {\n interval = setInterval(check, 32);\n }\n }\n }\n }\n };\n})();\n/**\n * @param {string} font Font to use for measuring.\n * @return {import(\"../size.js\").Size} Measurement.\n */\nexport var measureTextHeight = (function () {\n /**\n * @type {HTMLDivElement}\n */\n var div;\n return function (fontSpec) {\n var height = textHeights[fontSpec];\n if (height == undefined) {\n if (WORKER_OFFSCREEN_CANVAS) {\n var font = getFontParameters(fontSpec);\n var metrics = measureText(fontSpec, 'Žg');\n var lineHeight = isNaN(Number(font.lineHeight))\n ? 1.2\n : Number(font.lineHeight);\n height =\n lineHeight *\n (metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n }\n else {\n if (!div) {\n div = document.createElement('div');\n div.innerHTML = 'M';\n div.style.margin = '0 !important';\n div.style.padding = '0 !important';\n div.style.position = 'absolute !important';\n div.style.left = '-99999px !important';\n }\n div.style.font = fontSpec;\n document.body.appendChild(div);\n height = div.offsetHeight;\n document.body.removeChild(div);\n }\n textHeights[fontSpec] = height;\n }\n return height;\n };\n})();\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {TextMetrics} Text metrics.\n */\nfunction measureText(font, text) {\n if (!measureContext) {\n measureContext = createCanvasContext2D(1, 1);\n }\n if (font != measureFont) {\n measureContext.font = font;\n measureFont = measureContext.font;\n }\n return measureContext.measureText(text);\n}\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {number} Width.\n */\nexport function measureTextWidth(font, text) {\n return measureText(font, text).width;\n}\n/**\n * Measure text width using a cache.\n * @param {string} font The font.\n * @param {string} text The text to measure.\n * @param {Object} cache A lookup of cached widths by text.\n * @returns {number} The text width.\n */\nexport function measureAndCacheTextWidth(font, text, cache) {\n if (text in cache) {\n return cache[text];\n }\n var width = measureTextWidth(font, text);\n cache[text] = width;\n return width;\n}\n/**\n * @param {string} font Font to use for measuring.\n * @param {Array} lines Lines to measure.\n * @param {Array} widths Array will be populated with the widths of\n * each line.\n * @return {number} Width of the whole text.\n */\nexport function measureTextWidths(font, lines, widths) {\n var numLines = lines.length;\n var width = 0;\n for (var i = 0; i < numLines; ++i) {\n var currentWidth = measureTextWidth(font, lines[i]);\n width = Math.max(width, currentWidth);\n widths.push(currentWidth);\n }\n return width;\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} rotation Rotation.\n * @param {number} offsetX X offset.\n * @param {number} offsetY Y offset.\n */\nexport function rotateAtOffset(context, rotation, offsetX, offsetY) {\n if (rotation !== 0) {\n context.translate(offsetX, offsetY);\n context.rotate(rotation);\n context.translate(-offsetX, -offsetY);\n }\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../transform.js\").Transform|null} transform Transform.\n * @param {number} opacity Opacity.\n * @param {Label|HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} labelOrImage Label.\n * @param {number} originX Origin X.\n * @param {number} originY Origin Y.\n * @param {number} w Width.\n * @param {number} h Height.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../size.js\").Size} scale Scale.\n */\nexport function drawImageOrLabel(context, transform, opacity, labelOrImage, originX, originY, w, h, x, y, scale) {\n context.save();\n if (opacity !== 1) {\n context.globalAlpha *= opacity;\n }\n if (transform) {\n context.setTransform.apply(context, transform);\n }\n if ( /** @type {*} */(labelOrImage).contextInstructions) {\n // label\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n executeLabelInstructions(/** @type {Label} */ (labelOrImage), context);\n }\n else if (scale[0] < 0 || scale[1] < 0) {\n // flipped image\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, 0, 0, w, h);\n }\n else {\n // if image not flipped translate and scale can be avoided\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, x, y, w * scale[0], h * scale[1]);\n }\n context.restore();\n}\n/**\n * @param {Label} label Label.\n * @param {CanvasRenderingContext2D} context Context.\n */\nfunction executeLabelInstructions(label, context) {\n var contextInstructions = label.contextInstructions;\n for (var i = 0, ii = contextInstructions.length; i < ii; i += 2) {\n if (Array.isArray(contextInstructions[i + 1])) {\n context[contextInstructions[i]].apply(context, contextInstructions[i + 1]);\n }\n else {\n context[contextInstructions[i]] = contextInstructions[i + 1];\n }\n }\n}\n/**\n * @type {HTMLCanvasElement}\n * @private\n */\nvar createTransformStringCanvas = null;\n/**\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @return {string} CSS transform.\n */\nexport function createTransformString(transform) {\n if (WORKER_OFFSCREEN_CANVAS) {\n return toString(transform);\n }\n else {\n if (!createTransformStringCanvas) {\n createTransformStringCanvas = createCanvasContext2D(1, 1).canvas;\n }\n createTransformStringCanvas.style.transform = toString(transform);\n return createTransformStringCanvas.style.transform;\n }\n}\n//# sourceMappingURL=canvas.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { checkedFonts } from '../render/canvas.js';\nimport { inView } from '../layer/Layer.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { replaceChildren } from '../dom.js';\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nvar CompositeMapRenderer = /** @class */ (function (_super) {\n __extends(CompositeMapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function CompositeMapRenderer(map) {\n var _this = _super.call(this, map) || this;\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n _this.fontChangeListenerKey_ = listen(checkedFonts, ObjectEventType.PROPERTYCHANGE, map.redrawText.bind(map));\n /**\n * @private\n * @type {HTMLDivElement}\n */\n _this.element_ = document.createElement('div');\n var style = _this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n _this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n var container = map.getViewport();\n container.insertBefore(_this.element_, container.firstChild || null);\n /**\n * @private\n * @type {Array}\n */\n _this.children_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n var map = this.getMap();\n if (map.hasListener(type)) {\n var event_1 = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event_1);\n }\n };\n CompositeMapRenderer.prototype.disposeInternal = function () {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.renderFrame = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n var layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n var viewState = frameState.viewState;\n this.children_.length = 0;\n /**\n * @type {Array}\n */\n var declutterLayers = [];\n var previousElement = null;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY &&\n layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n var layer = layerState.layer;\n var element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n if ('getDeclutter' in layer) {\n declutterLayers.push(layer);\n }\n }\n for (var i = declutterLayers.length - 1; i >= 0; --i) {\n declutterLayers[i].renderDeclutter(frameState);\n }\n replaceChildren(this.element_, this.children_);\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n this.scheduleExpireIconCache(frameState);\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n CompositeMapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n var viewState = frameState.viewState;\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n for (var i = numLayers - 1; i >= 0; --i) {\n var layerState = layerStates[i];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter(layer)) {\n var layerRenderer = layer.getRenderer();\n var data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n var result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n return CompositeMapRenderer;\n}(MapRenderer));\nexport default CompositeMapRenderer;\n//# sourceMappingURL=Composite.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Group\n */\nimport BaseLayer from './Base.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport EventType from '../events/EventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport SourceState from '../source/State.js';\nimport { assert } from '../asserts.js';\nimport { assign, clear } from '../obj.js';\nimport { getChangeEventType } from '../Object.js';\nimport { getIntersection } from '../extent.js';\nimport { getUid } from '../util.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|import(\"../Collection.js\").default} [layers] Child layers.\n */\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LAYERS: 'layers',\n};\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nvar LayerGroup = /** @class */ (function (_super) {\n __extends(LayerGroup, _super);\n /**\n * @param {Options=} opt_options Layer options.\n */\n function LayerGroup(opt_options) {\n var _this = this;\n var options = opt_options || {};\n var baseOptions = /** @type {Options} */ (assign({}, options));\n delete baseOptions.layers;\n var layers = options.layers;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.layersListenerKeys_ = [];\n /**\n * @private\n * @type {Object>}\n */\n _this.listenerKeys_ = {};\n _this.addEventListener(getChangeEventType(Property.LAYERS), _this.handleLayersChanged_);\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), { unique: true });\n }\n else {\n assert(typeof ( /** @type {?} */(layers).getArray) === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n }\n else {\n layers = new Collection(undefined, { unique: true });\n }\n _this.setLayers(layers);\n return _this;\n }\n /**\n * @private\n */\n LayerGroup.prototype.handleLayerChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n LayerGroup.prototype.handleLayersChanged_ = function () {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n var layers = this.getLayers();\n this.layersListenerKeys_.push(listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this), listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this));\n for (var id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n var layersArray = layers.getArray();\n for (var i = 0, ii = layersArray.length; i < ii; i++) {\n var layer = layersArray[i];\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n }\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersAdd_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n this.listenerKeys_[getUid(layer)] = [\n listen(layer, ObjectEventType.PROPERTYCHANGE, this.handleLayerChange_, this),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n this.changed();\n };\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n LayerGroup.prototype.handleLayersRemove_ = function (collectionEvent) {\n var layer = /** @type {import(\"./Base.js\").default} */ (collectionEvent.element);\n var key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.changed();\n };\n /**\n * Returns the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!import(\"../Collection.js\").default} Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.getLayers = function () {\n return /** @type {!import(\"../Collection.js\").default} */ (this.get(Property.LAYERS));\n };\n /**\n * Set the {@link module:ol/Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!import(\"../Collection.js\").default} layers Collection of\n * {@link module:ol/layer/Base layers} that are part of this group.\n * @observable\n * @api\n */\n LayerGroup.prototype.setLayers = function (layers) {\n this.set(Property.LAYERS, layers);\n };\n /**\n * @param {Array=} opt_array Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n LayerGroup.prototype.getLayersArray = function (opt_array) {\n var array = opt_array !== undefined ? opt_array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n };\n /**\n * @param {Array=} opt_states Optional list of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n LayerGroup.prototype.getLayerStatesArray = function (opt_states) {\n var states = opt_states !== undefined ? opt_states : [];\n var pos = states.length;\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n var ownLayerState = this.getLayerState();\n for (var i = pos, ii = states.length; i < ii; i++) {\n var layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution);\n layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution);\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(layerState.extent, ownLayerState.extent);\n }\n else {\n layerState.extent = ownLayerState.extent;\n }\n }\n }\n return states;\n };\n /**\n * @return {import(\"../source/State.js\").default} Source state.\n */\n LayerGroup.prototype.getSourceState = function () {\n return SourceState.READY;\n };\n return LayerGroup;\n}(BaseLayer));\nexport default LayerGroup;\n//# sourceMappingURL=Group.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nvar MapEvent = /** @class */ (function (_super) {\n __extends(MapEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapEvent(type, map, opt_frameState) {\n var _this = _super.call(this, type) || this;\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n _this.map = map;\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n return _this;\n }\n return MapEvent;\n}(Event));\nexport default MapEvent;\n//# sourceMappingURL=MapEvent.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nvar MapBrowserEvent = /** @class */ (function (_super) {\n __extends(MapBrowserEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserEvent(type, map, originalEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, opt_frameState) || this;\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n _this.originalEvent = originalEvent;\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n _this.pixel_ = null;\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.coordinate_ = null;\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n _this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n return _this;\n }\n Object.defineProperty(MapBrowserEvent.prototype, \"pixel\", {\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get: function () {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n },\n set: function (pixel) {\n this.pixel_ = pixel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MapBrowserEvent.prototype, \"coordinate\", {\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get: function () {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n },\n set: function (coordinate) {\n this.coordinate_ = coordinate;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n this.originalEvent.preventDefault();\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n this.originalEvent.stopPropagation();\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.js.map","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n//# sourceMappingURL=MapBrowserEventType.js.map","/**\n * @module ol/pointer/EventType\n */\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport { listen, unlistenByKey } from './events.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n _this.emulateClicks_ = false;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance\n ? moveTolerance * DEVICE_PIXEL_RATIO\n : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(\n /** @this {MapBrowserEventHandler} */\n function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (this.emulateClicks_ &&\n !newEvent.propagationStopped &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.emulateClicks_ = this.activePointers_ === 0;\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n var doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(listen(doc, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(doc, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), \n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(listen(this.element_.getRootNode(), MapBrowserEventType.POINTERUP, this.handlePointerUp_, this));\n }\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n if (!this.originalPointerMoveEvent_ ||\n this.originalPointerMoveEvent_.defaultPrevented) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return (this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_);\n };\n /**\n * Clean up.\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n};\n//# sourceMappingURL=MapEventType.js.map","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n//# sourceMappingURL=MapProperty.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n };\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n };\n /**\n * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\n };\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\n };\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\n };\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < count >> 1) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n };\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n }\n else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n };\n return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n }, \n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if ((tile.hifi && state === TileState.LOADED) ||\n state === TileState.ERROR ||\n state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(frameState, tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return (65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution);\n}\n//# sourceMappingURL=TileQueue.js.map","/**\n * @module ol/ViewHint\n */\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n//# sourceMappingURL=ViewHint.js.map","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n//# sourceMappingURL=ViewProperty.js.map","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @param {Array=} opt_centerShift Shift between map center and viewport center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving, opt_centerShift) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var shiftX = opt_centerShift ? opt_centerShift[0] : 0;\n var shiftY = opt_centerShift ? opt_centerShift[1] : 0;\n var minX = extent[0] + viewWidth / 2 + shiftX;\n var maxX = extent[2] - viewWidth / 2 + shiftX;\n var minY = extent[1] + viewHeight / 2 + shiftY;\n var maxY = extent[3] - viewHeight / 2 + shiftY;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { clamp } from './math.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { linearFindNearest } from './array.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","/**\n * @module ol/rotationconstraint\n */\nimport { toRadians } from './math.js';\n/**\n * @typedef {function((number|undefined), boolean=): (number|undefined)} Type\n */\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function disable(rotation) {\n if (rotation !== undefined) {\n return 0;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number|undefined} rotation Rotation.\n * @return {number|undefined} Rotation.\n */\nexport function none(rotation) {\n if (rotation !== undefined) {\n return rotation;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {number} n N.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToN(n) {\n var theta = (2 * Math.PI) / n;\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n rotation = Math.floor(rotation / theta + 0.5) * theta;\n return rotation;\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number=} opt_tolerance Tolerance.\n * @return {Type} Rotation constraint.\n */\nexport function createSnapToZero(opt_tolerance) {\n var tolerance = opt_tolerance || toRadians(5);\n return (\n /**\n * @param {number|undefined} rotation Rotation.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Rotation.\n */\n function (rotation, opt_isMoving) {\n if (opt_isMoving) {\n return rotation;\n }\n if (rotation !== undefined) {\n if (Math.abs(rotation) <= tolerance) {\n return 0;\n }\n else {\n return rotation;\n }\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=rotationconstraint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport GeometryType from './geom/GeometryType.js';\nimport Units from './proj/Units.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { METERS_PER_UNIT, createProjection, fromUserCoordinate, fromUserExtent, getUserProjection, toUserCoordinate, toUserExtent, } from './proj.js';\nimport { VOID } from './functions.js';\nimport { add as addCoordinate, equals as coordinatesEqual, rotate as rotateCoordinate, } from './coordinate.js';\nimport { assert } from './asserts.js';\nimport { assign } from './obj.js';\nimport { none as centerNone, createExtent } from './centerconstraint.js';\nimport { clamp, modulo } from './math.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\nimport { createSnapToN, createSnapToZero, disable, none as rotationNone, } from './rotationconstraint.js';\nimport { createSnapToPower, createSnapToResolutions, } from './resolutionconstraint.js';\nimport { easeOut } from './easing.js';\nimport { equals } from './coordinate.js';\nimport { getCenter, getForViewAndSize, getHeight, getWidth, isEmpty, } from './extent.js';\nimport { inAndOut } from './easing.js';\nimport { linearFindNearest } from './array.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean):void} callback\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\n */\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from that\n * content. The order of the values in the array is top, right, bottom, left.\n * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n * @type {Array|undefined}\n * @api\n */\n this.padding = options.padding;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n };\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\n };\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback,\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n }\n else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n };\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\n };\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined) {\n var rotation = progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n var callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n };\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n };\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n var y = anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) +\n Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) +\n Math.abs(h * Math.cos(opt_rotation)),\n ];\n }\n else {\n return size;\n }\n };\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size)\n ? opt_size.slice()\n : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n };\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\n return this.hints_.slice();\n }\n };\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided,\n * the map's last known viewport size will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSize_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n };\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n View.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSize_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n };\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n };\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n });\n };\n /**\n * Returns the size of the viewport minus padding.\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n */\n View.prototype.getViewportSizeMinusPadding_ = function (opt_rotation) {\n var size = this.getViewportSize_(opt_rotation);\n var padding = this.padding;\n if (padding) {\n size = [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ];\n }\n return size;\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var padding = this.padding;\n if (padding) {\n var reducedSize = this.getViewportSizeMinusPadding_();\n center = calculateCenterOn(center, this.getViewportSize_(), [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]], resolution, rotation);\n }\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n };\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n }\n else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n };\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1)));\n }\n else {\n return (this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_));\n }\n };\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) ||\n typeof ( /** @type {?} */(geometryOrExtent).getSimplifiedGeometry) ===\n 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, opt_options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSizeMinusPadding_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += ((padding[1] - padding[3]) / 2) * resolution;\n centerRotY += ((padding[0] - padding[2]) / 2) * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = this.getConstrainedCenter([centerX, centerY], resolution);\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: center,\n duration: options.duration,\n easing: options.easing,\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n };\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n this.setCenterInternal(calculateCenterOn(coordinate, size, position, this.getResolution(), this.getRotation()));\n };\n /**\n * Calculates the shift between map and viewport center.\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array|undefined} Center shift.\n */\n View.prototype.calculateCenterShift = function (center, resolution, rotation, size) {\n var centerShift;\n var padding = this.padding;\n if (padding && center) {\n var reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n var shiftedCenter = calculateCenterOn(center, size, [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]], resolution, rotation);\n centerShift = [\n center[0] - shiftedCenter[0],\n center[1] - shiftedCenter[1],\n ];\n }\n return centerShift;\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving, this.calculateCenterShift(this.targetCenter_, newResolution, newRotation, size));\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, false, this.calculateCenterShift(this.targetCenter_, newResolution, newRotation, size));\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor,\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ? options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT[Units.DEGREES]) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\n }\n}\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n // calculate rotated position\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n return [centerX, centerY];\n}\nexport default View;\n//# sourceMappingURL=View.js.map","/**\n * @module ol/tilegrid/common\n */\n/**\n * Default maximum zoom for default tile grids.\n * @type {number}\n */\nexport var DEFAULT_MAX_ZOOM = 42;\n/**\n * Default tile size.\n * @type {number}\n */\nexport var DEFAULT_TILE_SIZE = 256;\n//# sourceMappingURL=common.js.map","/**\n * @module ol/size\n */\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size=} opt_size Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n }\n else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n }\n else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n//# sourceMappingURL=size.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport EventType from './events/EventType.js';\nimport LayerGroup from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS, } from './has.js';\nimport { TRUE } from './functions.js';\nimport { apply as applyTransform, create as createTransform, } from './transform.js';\nimport { assert } from './asserts.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty, } from './extent.js';\nimport { fromUserCoordinate, toUserCoordinate } from './proj.js';\nimport { hasArea } from './size.js';\nimport { listen, unlistenByKey } from './events.js';\nimport { removeNode } from './dom.js';\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {import(\"rbush\").default} declutterTree\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in css pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered. If passed by element, the container can be in a secondary document.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = /** @this {PluggableMap} */ function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n _this.viewport_.style.position = 'relative';\n _this.viewport_.style.overflow = 'hidden';\n _this.viewport_.style.width = '100%';\n _this.viewport_.style.height = '100%';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.style.pointerEvents = 'none';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.moveTolerance_ = options.moveTolerance;\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(\n /** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\n };\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * Clean up.\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined ? opt_options.hitTolerance : 0;\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined ? options.hitTolerance : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined ? opt_options.hitTolerance : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = \n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top,\n ];\n };\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n };\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string'\n ? document.getElementById(target)\n : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n };\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n PluggableMap.prototype.getControls = function () {\n return this.controls;\n };\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\n };\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n };\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\n };\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getLayerGroup = function () {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\n };\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.getSize = function () {\n return /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE));\n };\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getView = function () {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\n };\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\n };\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\n };\n /**\n * @return {!Document} The document where the map is displayed.\n */\n PluggableMap.prototype.getOwnerDocument = function () {\n return this.getTargetElement()\n ? this.getTargetElement().ownerDocument\n : document;\n };\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n var originalEvent = /** @type {PointerEvent} */ (mapBrowserEvent.originalEvent);\n var eventType = originalEvent.type;\n if (eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN) {\n var doc = this.getOwnerDocument();\n var rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n var target = 'host' in rootNode // ShadowRoot\n ? /** @type {ShadowRoot} */ (rootNode).elementFromPoint(originalEvent.clientX, originalEvent.clientY)\n : /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n var interactionsArray = this.getInteractions().getArray().slice();\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState &&\n this.hasListener(RenderEventType.RENDERCOMPLETE) &&\n !frameState.animate &&\n !this.tileQueue_.getTilesLoading() &&\n !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.mapBrowserEventHandler_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(this, this.moveTolerance_);\n for (var key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], this.handleMapBrowserEvent.bind(this));\n }\n this.viewport_.addEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_, false);\n this.viewport_.addEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n var keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this),\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n };\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\n };\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\n };\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n };\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var _this = this;\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterTree: null,\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(function () {\n _this.postRenderTimeoutHandle_ = undefined;\n _this.handlePostRender();\n }, 0);\n }\n };\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n };\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\n };\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']),\n ]);\n }\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers &&\n typeof ( /** @type {?} */(options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] =\n options.view !== undefined ? options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.controls).getArray) === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.interactions).getArray) ===\n 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.overlays).getArray) === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport { VOID } from '../functions.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { removeNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n var element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = element ? element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n if (options.render) {\n _this.render = options.render;\n }\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * Clean up.\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n var target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) { };\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n Control.prototype.setTarget = function (target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { equals } from '../array.js';\nimport { inView } from '../layer/Layer.js';\nimport { removeChildren, replaceNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.userCollapsed_ = _this.collapsed_;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var expandClassName = options.expandClassName !== undefined\n ? options.expandClassName\n : className + '-expand';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n var collapseClassName = options.collapseClassName !== undefined\n ? options.collapseClassName\n : className + '-collpase';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n _this.collapseLabel_.className = collapseClassName;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n _this.label_.className = expandClassName;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = _this.collapsible_ && !_this.collapsed_ ? _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var collapsible = true;\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n collapsible =\n collapsible && source.getAttributionsCollapsible() !== false;\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n if (!this.overrideCollapsible_) {\n this.setCollapsible(collapsible);\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n this.userCollapsed_ = this.collapsed_;\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n };\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (this.userCollapsed_) {\n this.handleToggle_();\n }\n };\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.setCollapsed = function (collapsed) {\n this.userCollapsed_ = collapsed;\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n };\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Attribution.prototype.render = function (mapEvent) {\n this.updateElement_(mapEvent.frameState);\n };\n return Attribution;\n}(Control));\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {string} [compassClassName='ol-compass'] CSS class name for the compass.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n var compassClassName = options.compassClassName !== undefined\n ? options.compassClassName\n : 'ol-compass';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = compassClassName;\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add(compassClassName);\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Rotate.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n };\n return Rotate;\n}(Control));\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInClassName = options.zoomInClassName !== undefined\n ? options.zoomInClassName\n : className + '-in';\n var zoomOutClassName = options.zoomOutClassName !== undefined\n ? options.zoomOutClassName\n : className + '-out';\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = zoomInClassName;\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = zoomOutClassName;\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","/**\n * @module ol/control\n */\nimport Attribution from './control/Attribution.js';\nimport Collection from './Collection.js';\nimport Rotate from './control/Rotate.js';\nimport Zoom from './control/Zoom.js';\nexport { default as Attribution } from './control/Attribution.js';\nexport { default as Control } from './control/Control.js';\nexport { default as FullScreen } from './control/FullScreen.js';\nexport { default as MousePosition } from './control/MousePosition.js';\nexport { default as OverviewMap } from './control/OverviewMap.js';\nexport { default as Rotate } from './control/Rotate.js';\nexport { default as ScaleLine } from './control/ScaleLine.js';\nexport { default as Zoom } from './control/Zoom.js';\nexport { default as ZoomSlider } from './control/ZoomSlider.js';\nexport { default as ZoomToExtent } from './control/ZoomToExtent.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./control/Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./control/Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./control/Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\n */\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions=} opt_options\n * Defaults options.\n * @return {Collection}\n * Controls.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var controls = new Collection();\n var zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n var rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n var attributionControl = options.attribution !== undefined ? options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n return controls;\n}\n//# sourceMappingURL=control.js.map","/**\n * @module ol/interaction/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active',\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport InteractionProperty from './Property.js';\nimport { easeOut, linear } from '../easing.js';\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nvar Interaction = /** @class */ (function (_super) {\n __extends(Interaction, _super);\n /**\n * @param {InteractionOptions=} opt_options Options.\n */\n function Interaction(opt_options) {\n var _this = _super.call(this) || this;\n if (opt_options && opt_options.handleEvent) {\n _this.handleEvent = opt_options.handleEvent;\n }\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n _this.setActive(true);\n return _this;\n }\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n Interaction.prototype.getActive = function () {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n };\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Interaction.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n Interaction.prototype.handleEvent = function (mapBrowserEvent) {\n return true;\n };\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n Interaction.prototype.setActive = function (active) {\n this.set(InteractionProperty.ACTIVE, active);\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Interaction.prototype.setMap = function (map) {\n this.map_ = map;\n };\n return Interaction;\n}(BaseObject));\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number=} opt_duration Duration.\n */\nexport function pan(view, delta, opt_duration) {\n var currentCenter = view.getCenterInternal();\n if (currentCenter) {\n var center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center),\n });\n }\n}\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate in the user projection.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n var currentZoom = view.getZoom();\n if (currentZoom === undefined) {\n return;\n }\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n var newResolution = view.getResolutionForZoom(newZoom);\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut,\n });\n}\nexport default Interaction;\n//# sourceMappingURL=Interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n DoubleClickZoom.prototype.handleEvent = function (mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n browserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n };\n return DoubleClickZoom;\n}(Interaction));\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { getValues } from '../obj.js';\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nvar PointerInteraction = /** @class */ (function (_super) {\n __extends(PointerInteraction, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function PointerInteraction(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, \n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)) || this;\n if (options.handleDownEvent) {\n _this.handleDownEvent = options.handleDownEvent;\n }\n if (options.handleDragEvent) {\n _this.handleDragEvent = options.handleDragEvent;\n }\n if (options.handleMoveEvent) {\n _this.handleMoveEvent = options.handleMoveEvent;\n }\n if (options.handleUpEvent) {\n _this.handleUpEvent = options.handleUpEvent;\n }\n if (options.stopDown) {\n _this.stopDown = options.stopDown;\n }\n /**\n * @type {boolean}\n * @protected\n */\n _this.handlingDownUpSequence = false;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedPointers_ = {};\n /**\n * @type {Array}\n * @protected\n */\n _this.targetPointers = [];\n return _this;\n }\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n PointerInteraction.prototype.getPointerCount = function () {\n return this.targetPointers.length;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleDownEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleDragEvent = function (mapBrowserEvent) { };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n PointerInteraction.prototype.handleEvent = function (mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n var stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.originalEvent.preventDefault();\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n var handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n }\n else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n var handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n };\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleMoveEvent = function (mapBrowserEvent) { };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleUpEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n PointerInteraction.prototype.stopDown = function (handled) {\n return handled;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n PointerInteraction.prototype.updateTrackedPointers_ = function (mapBrowserEvent) {\n if (isPointerDraggingEvent(mapBrowserEvent)) {\n var event_1 = mapBrowserEvent.originalEvent;\n var id = event_1.pointerId.toString();\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n delete this.trackedPointers_[id];\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedPointers_[id] = event_1;\n }\n else if (id in this.trackedPointers_) {\n // update only when there was a pointerdown event for this pointer\n this.trackedPointers_[id] = event_1;\n }\n this.targetPointers = getValues(this.trackedPointers_);\n }\n };\n return PointerInteraction;\n}(Interaction));\n/**\n * @param {Array} pointerEvents List of events.\n * @return {import(\"../pixel.js\").Pixel} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n var length = pointerEvents.length;\n var clientX = 0;\n var clientY = 0;\n for (var i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return [clientX / length, clientY / length];\n}\n/**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} Whether the event is a pointerdown, pointerdrag\n * or pointerup event.\n */\nfunction isPointerDraggingEvent(mapBrowserEvent) {\n var type = mapBrowserEvent.type;\n return (type === MapBrowserEventType.POINTERDOWN ||\n type === MapBrowserEventType.POINTERDRAG ||\n type === MapBrowserEventType.POINTERUP);\n}\nexport default PointerInteraction;\n//# sourceMappingURL=Pointer.js.map","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { FALSE, TRUE } from '../functions.js';\nimport { MAC, WEBKIT } from '../has.js';\nimport { assert } from '../asserts.js';\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n var conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n var pass = true;\n for (var i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport var altKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport var altShiftKeysOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport var focus = function (event) {\n return event.target.getTargetElement().contains(document.activeElement);\n};\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport var focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport var always = TRUE;\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport var click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport var mouseActionButton = function (mapBrowserEvent) {\n var originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport var never = FALSE;\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport var pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport var singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport var doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport var noModifierKeys = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport var platformModifierKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport var shiftKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `"; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); -var documentElement = document.documentElement; - - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -// Support: IE <=9 only -// See #13393 for more info -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -function on( elem, types, selector, data, fn, one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - on( elem, type, selector, data, types[ type ], one ); - } - return elem; - } - - if ( data == null && fn == null ) { - - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return elem; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return elem.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - } ); -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - - var handleObjIn, eventHandle, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.get( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Ensure that invalid selectors throw exceptions at attach time - // Evaluate against documentElement in case elem is a non-element node (e.g., document) - if ( selector ) { - jQuery.find.matchesSelector( documentElement, selector ); - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !( events = elemData.events ) ) { - events = elemData.events = {}; - } - if ( !( eventHandle = elemData.handle ) ) { - eventHandle = elemData.handle = function( e ) { - - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? - jQuery.event.dispatch.apply( elem, arguments ) : undefined; - }; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend( { - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join( "." ) - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !( handlers = events[ type ] ) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener if the special events handler returns false - if ( !special.setup || - special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var j, origCount, tmp, - events, t, handleObj, - special, handlers, type, namespaces, origType, - elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); - - if ( !elemData || !( events = elemData.events ) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[ t ] ) || []; - type = origType = tmp[ 1 ]; - namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[ 2 ] && - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || - selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || - special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove data and the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - dataPriv.remove( elem, "handle events" ); - } - }, - - dispatch: function( nativeEvent ) { - - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - - var i, j, ret, matched, handleObj, handlerQueue, - args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[ 0 ] = event; - - for ( i = 1; i < arguments.length; i++ ) { - args[ i ] = arguments[ i ]; - } - - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( ( handleObj = matched.handlers[ j++ ] ) && - !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || - handleObj.handler ).apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( ( event.result = ret ) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var i, handleObj, sel, matchedHandlers, matchedSelectors, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - if ( delegateCount && - - // Support: IE <=9 - // Black-hole SVG instance trees (trac-13180) - cur.nodeType && - - // Support: Firefox <=42 - // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) - // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click - // Support: IE 11 only - // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) - !( event.type === "click" && event.button >= 1 ) ) { - - for ( ; cur !== this; cur = cur.parentNode || this ) { - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { - matchedHandlers = []; - matchedSelectors = {}; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matchedSelectors[ sel ] === undefined ) { - matchedSelectors[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) > -1 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matchedSelectors[ sel ] ) { - matchedHandlers.push( handleObj ); - } - } - if ( matchedHandlers.length ) { - handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); - } - } - } - } - - // Add the remaining (directly-bound) handlers - cur = this; - if ( delegateCount < handlers.length ) { - handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); - } - - return handlerQueue; - }, - - addProp: function( name, hook ) { - Object.defineProperty( jQuery.Event.prototype, name, { - enumerable: true, - configurable: true, - - get: jQuery.isFunction( hook ) ? - function() { - if ( this.originalEvent ) { - return hook( this.originalEvent ); - } - } : - function() { - if ( this.originalEvent ) { - return this.originalEvent[ name ]; - } - }, - - set: function( value ) { - Object.defineProperty( this, name, { - enumerable: true, - configurable: true, - writable: true, - value: value - } ); - } - } ); - }, - - fix: function( originalEvent ) { - return originalEvent[ jQuery.expando ] ? - originalEvent : - new jQuery.Event( originalEvent ); - }, - - special: { - load: { - - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - } -}; - -jQuery.removeEvent = function( elem, type, handle ) { - - // This "if" is needed for plain objects - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle ); - } -}; - -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !( this instanceof jQuery.Event ) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - - // Support: Android <=2.3 only - src.returnValue === false ? - returnTrue : - returnFalse; - - // Create target properties - // Support: Safari <=6 - 7 only - // Target should not be a text node (#504, #13143) - this.target = ( src.target && src.target.nodeType === 3 ) ? - src.target.parentNode : - src.target; - - this.currentTarget = src.currentTarget; - this.relatedTarget = src.relatedTarget; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - constructor: jQuery.Event, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - isSimulated: false, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - - if ( e && !this.isSimulated ) { - e.preventDefault(); - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && !this.isSimulated ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Includes all common event props including KeyEvent and MouseEvent specific props -jQuery.each( { - altKey: true, - bubbles: true, - cancelable: true, - changedTouches: true, - ctrlKey: true, - detail: true, - eventPhase: true, - metaKey: true, - pageX: true, - pageY: true, - shiftKey: true, - view: true, - "char": true, - charCode: true, - key: true, - keyCode: true, - button: true, - buttons: true, - clientX: true, - clientY: true, - offsetX: true, - offsetY: true, - pointerId: true, - pointerType: true, - screenX: true, - screenY: true, - targetTouches: true, - toElement: true, - touches: true, - - which: function( event ) { - var button = event.button; - - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } - - if ( button & 2 ) { - return 3; - } - - if ( button & 4 ) { - return 2; - } - - return 0; - } - - return event.which; - } -}, jQuery.event.addProp ); - -// Create mouseenter/leave events using mouseover/out and event-time checks -// so that event delegation works in jQuery. -// Do the same for pointerenter/pointerleave and pointerover/pointerout -// -// Support: Safari 7 only -// Safari sends mouseenter too often; see: -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 -// for the description of the bug (it existed in older Chrome versions as well). -jQuery.each( { - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mouseenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -} ); - -jQuery.fn.extend( { - - on: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn ); - }, - one: function( types, selector, data, fn ) { - return on( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? - handleObj.origType + "." + handleObj.namespace : - handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each( function() { - jQuery.event.remove( this, types, fn, selector ); - } ); - } -} ); - - -var - - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - - // Support: IE <=10 - 11, Edge 12 - 13 - // In IE/Edge using regex groups here causes severe slowdowns. - // See https://connect.microsoft.com/IE/feedback/details/1736512/ - rnoInnerhtml = /\s*$/g; - -// Prefer a tbody over its parent table for containing new rows -function manipulationTarget( elem, content ) { - if ( nodeName( elem, "table" ) && - nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - - return jQuery( ">tbody", elem )[ 0 ] || elem; - } - - return elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; - } else { - elem.removeAttribute( "type" ); - } - - return elem; -} - -function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; - - if ( dest.nodeType !== 1 ) { - return; - } - - // 1. Copy private data: events, handlers, etc. - if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); - events = pdataOld.events; - - if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - } - - // 2. Copy user data - if ( dataUser.hasData( src ) ) { - udataOld = dataUser.access( src ); - udataCur = jQuery.extend( {}, udataOld ); - - dataUser.set( dest, udataCur ); - } -} - -// Fix IE bugs, see support tests -function fixInput( src, dest ) { - var nodeName = dest.nodeName.toLowerCase(); - - // Fails to persist the checked state of a cloned checkbox or radio button. - if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - dest.checked = src.checked; - - // Fails to return the selected option to the default selected state when cloning options - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -function domManip( collection, args, callback, ignored ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var fragment, first, scripts, hasScripts, node, doc, - i = 0, - l = collection.length, - iNoClone = l - 1, - value = args[ 0 ], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return collection.each( function( index ) { - var self = collection.eq( index ); - if ( isFunction ) { - args[ 0 ] = value.call( this, index, self.html() ); - } - domManip( self, args, callback, ignored ); - } ); - } - - if ( l ) { - fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - // Require either new content or an interest in ignored elements to invoke the callback - if ( first || ignored ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item - // instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( collection[ i ], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !dataPriv.access( node, "globalEval" ) && - jQuery.contains( doc, node ) ) { - - if ( node.src ) { - - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); - } - } - } - } - } - } - - return collection; -} - -function remove( elem, selector, keepData ) { - var node, - nodes = selector ? jQuery.filter( selector, elem ) : elem, - i = 0; - - for ( ; ( node = nodes[ i ] ) != null; i++ ) { - if ( !keepData && node.nodeType === 1 ) { - jQuery.cleanData( getAll( node ) ); - } - - if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { - setGlobalEval( getAll( node, "script" ) ); - } - node.parentNode.removeChild( node ); - } - } - - return elem; -} - -jQuery.extend( { - htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); - }, - - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var i, l, srcElements, destElements, - clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); - - // Fix IE cloning issues - if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && - !jQuery.isXMLDoc( elem ) ) { - - // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - fixInput( srcElements[ i ], destElements[ i ] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0, l = srcElements.length; i < l; i++ ) { - cloneCopyEvent( srcElements[ i ], destElements[ i ] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - // Return the cloned set - return clone; - }, - - cleanData: function( elems ) { - var data, elem, type, - special = jQuery.event.special, - i = 0; - - for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { - if ( acceptData( elem ) ) { - if ( ( data = elem[ dataPriv.expando ] ) ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataPriv.expando ] = undefined; - } - if ( elem[ dataUser.expando ] ) { - - // Support: Chrome <=35 - 45+ - // Assign undefined instead of using delete, see Data#remove - elem[ dataUser.expando ] = undefined; - } - } - } - } -} ); - -jQuery.fn.extend( { - detach: function( selector ) { - return remove( this, selector, true ); - }, - - remove: function( selector ) { - return remove( this, selector ); - }, - - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().each( function() { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - this.textContent = value; - } - } ); - }, null, value, arguments.length ); - }, - - append: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - } ); - }, - - prepend: function() { - return domManip( this, arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - } ); - }, - - before: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - } ); - }, - - after: function() { - return domManip( this, arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - } ); - }, - - empty: function() { - var elem, - i = 0; - - for ( ; ( elem = this[ i ] ) != null; i++ ) { - if ( elem.nodeType === 1 ) { - - // Prevent memory leaks - jQuery.cleanData( getAll( elem, false ) ); - - // Remove any remaining nodes - elem.textContent = ""; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - } ); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined && elem.nodeType === 1 ) { - return elem.innerHTML; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { - - value = jQuery.htmlPrefilter( value ); - - try { - for ( ; i < l; i++ ) { - elem = this[ i ] || {}; - - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch ( e ) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var ignored = []; - - // Make the changes, replacing each non-ignored context element with the new content - return domManip( this, arguments, function( elem ) { - var parent = this.parentNode; - - if ( jQuery.inArray( this, ignored ) < 0 ) { - jQuery.cleanData( getAll( this ) ); - if ( parent ) { - parent.replaceChild( elem, this ); - } - } - - // Force callback invocation - }, ignored ); - } -} ); - -jQuery.each( { - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1, - i = 0; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone( true ); - jQuery( insert[ i ] )[ original ]( elems ); - - // Support: Android <=4.0 only, PhantomJS 1 only - // .get() because push.apply(_, arraylike) throws on ancient WebKit - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -} ); -var rmargin = ( /^margin/ ); - -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); - -var getStyles = function( elem ) { - - // Support: IE <=11 only, Firefox <=30 (#15098, #14150) - // IE throws on elements created in popups - // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" - var view = elem.ownerDocument.defaultView; - - if ( !view || !view.opener ) { - view = window; - } - - return view.getComputedStyle( elem ); - }; - - - -( function() { - - // Executing both pixelPosition & boxSizingReliable tests require only one layout - // so they're executed at the same time to save the second computation. - function computeStyleTests() { - - // This is a singleton, we need to execute it only once - if ( !div ) { - return; - } - - div.style.cssText = - "box-sizing:border-box;" + - "position:relative;display:block;" + - "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - div.innerHTML = ""; - documentElement.appendChild( container ); - - var divStyle = window.getComputedStyle( div ); - pixelPositionVal = divStyle.top !== "1%"; - - // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = divStyle.marginLeft === "2px"; - boxSizingReliableVal = divStyle.width === "4px"; - - // Support: Android 4.0 - 4.3 only - // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = divStyle.marginRight === "4px"; - - documentElement.removeChild( container ); - - // Nullify the div so it wouldn't be stored in the memory and - // it will also be a sign that checks already performed - div = null; - } - - var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, - container = document.createElement( "div" ), - div = document.createElement( "div" ); - - // Finish early in limited (non-browser) environments - if ( !div.style ) { - return; - } - - // Support: IE <=9 - 11 only - // Style of cloned element affects source element cloned (#8908) - div.style.backgroundClip = "content-box"; - div.cloneNode( true ).style.backgroundClip = ""; - support.clearCloneStyle = div.style.backgroundClip === "content-box"; - - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - container.appendChild( div ); - - jQuery.extend( support, { - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, - boxSizingReliable: function() { - computeStyleTests(); - return boxSizingReliableVal; - }, - pixelMarginRight: function() { - computeStyleTests(); - return pixelMarginRightVal; - }, - reliableMarginLeft: function() { - computeStyleTests(); - return reliableMarginLeftVal; - } - } ); -} )(); - - -function curCSS( elem, name, computed ) { - var width, minWidth, maxWidth, ret, - - // Support: Firefox 51+ - // Retrieving style before computed somehow - // fixes an issue with getting wrong values - // on detached elements - style = elem.style; - - computed = computed || getStyles( elem ); - - // getPropertyValue is needed for: - // .css('filter') (IE 9 only, #12537) - // .css('--customProperty) (#3144) - if ( computed ) { - ret = computed.getPropertyValue( name ) || computed[ name ]; - - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { - ret = jQuery.style( elem, name ); - } - - // A tribute to the "awesome hack by Dean Edwards" - // Android Browser returns percentage for some values, - // but width seems to be reliably pixels. - // This is against the CSSOM draft spec: - // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { - - // Remember the original values - width = style.width; - minWidth = style.minWidth; - maxWidth = style.maxWidth; - - // Put in the new values to get a computed value out - style.minWidth = style.maxWidth = style.width = ret; - ret = computed.width; - - // Revert the changed values - style.width = width; - style.minWidth = minWidth; - style.maxWidth = maxWidth; - } - } - - return ret !== undefined ? - - // Support: IE <=9 - 11 only - // IE returns zIndex value as an integer. - ret + "" : - ret; -} - - -function addGetHookIf( conditionFn, hookFn ) { - - // Define the hook, we'll check on the first run if it's really needed. - return { - get: function() { - if ( conditionFn() ) { - - // Hook not needed (or it's not possible to use it due - // to missing dependency), remove it. - delete this.get; - return; - } - - // Hook needed; redefine it so that the support test is not executed again. - return ( this.get = hookFn ).apply( this, arguments ); - } - }; -} - - -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; - -// Return a css property mapped to a potentially vendor prefixed property -function vendorPropName( name ) { - - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - - // Check for vendor prefixed names - var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), - i = cssPrefixes.length; - - while ( i-- ) { - name = cssPrefixes[ i ] + capName; - if ( name in emptyStyle ) { - return name; - } - } -} - -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. -function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; - } - return ret; -} - -function setPositiveNumber( elem, value, subtract ) { - - // Any relative (+/-) values have already been - // normalized at this point - var matches = rcssNum.exec( value ); - return matches ? - - // Guard against undefined "subtract", e.g., when used as in cssHooks - Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : - value; -} - -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i, - val = 0; - - // If we already have the right measurement, avoid augmentation - if ( extra === ( isBorderBox ? "border" : "content" ) ) { - i = 4; - - // Otherwise initialize for horizontal or vertical properties - } else { - i = name === "width" ? 1 : 0; - } - - for ( ; i < 4; i += 2 ) { - - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); - } - - if ( isBorderBox ) { - - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - } - - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } else { - - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); - - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } - } - } - - return val; -} - -function getWidthOrHeight( elem, name, extra ) { - - // Start with computed style - var valueIsBorderBox, - styles = getStyles( elem ), - val = curCSS( elem, name, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; - - // Computed unit is not pixels. Stop here and return. - if ( rnumnonpx.test( val ) ) { - return val; - } - - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); - - // Fall back to offsetWidth/Height when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - if ( val === "auto" ) { - val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; - } - - // Normalize "", auto, and prepare for extra - val = parseFloat( val ) || 0; - - // Use the active box-sizing model to add/subtract irrelevant styles - return ( val + - augmentWidthOrHeight( - elem, - name, - extra || ( isBorderBox ? "border" : "content" ), - valueIsBorderBox, - styles - ) - ) + "px"; -} - -jQuery.extend( { - - // Add in style property hooks for overriding the default - // behavior of getting and setting a style property - cssHooks: { - opacity: { - get: function( elem, computed ) { - if ( computed ) { - - // We should always get a number back from opacity - var ret = curCSS( elem, "opacity" ); - return ret === "" ? "1" : ret; - } - } - } - }, - - // Don't automatically add "px" to these possibly-unitless properties - cssNumber: { - "animationIterationCount": true, - "columnCount": true, - "fillOpacity": true, - "flexGrow": true, - "flexShrink": true, - "fontWeight": true, - "lineHeight": true, - "opacity": true, - "order": true, - "orphans": true, - "widows": true, - "zIndex": true, - "zoom": true - }, - - // Add in properties whose names you wish to fix before - // setting or getting the value - cssProps: { - "float": "cssFloat" - }, - - // Get and set the style property on a DOM Node - style: function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ), - style = elem.style; - - // Make sure that we're working with the right name. We don't - // want to query the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Gets hook for the prefixed version, then unprefixed version - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Convert "+=" or "-=" to relative numbers (#7345) - if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { - value = adjustCSS( elem, name, ret ); - - // Fixes bug #9237 - type = "number"; - } - - // Make sure that null and NaN values aren't set (#7116) - if ( value == null || value !== value ) { - return; - } - - // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { - value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); - } - - // background-* props affect original clone's values - if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { - style[ name ] = "inherit"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !( "set" in hooks ) || - ( value = hooks.set( elem, value, extra ) ) !== undefined ) { - - if ( isCustomProp ) { - style.setProperty( name, value ); - } else { - style[ name ] = value; - } - } - - } else { - - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && - ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { - - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }, - - css: function( elem, name, extra, styles ) { - var val, num, hooks, - origName = jQuery.camelCase( name ), - isCustomProp = rcustomProp.test( name ); - - // Make sure that we're working with the right name. We don't - // want to modify the value if it is a CSS custom property - // since they are user-defined. - if ( !isCustomProp ) { - name = finalPropName( origName ); - } - - // Try prefixed name followed by the unprefixed name - hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks ) { - val = hooks.get( elem, true, extra ); - } - - // Otherwise, if a way to get the computed value exists, use that - if ( val === undefined ) { - val = curCSS( elem, name, styles ); - } - - // Convert "normal" to computed value - if ( val === "normal" && name in cssNormalTransform ) { - val = cssNormalTransform[ name ]; - } - - // Make numeric if forced or a qualifier was provided and val looks numeric - if ( extra === "" || extra ) { - num = parseFloat( val ); - return extra === true || isFinite( num ) ? num || 0 : val; - } - - return val; - } -} ); - -jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { - get: function( elem, computed, extra ) { - if ( computed ) { - - // Certain elements can have dimension info if we invisibly show them - // but it must have a current display style that would benefit - return rdisplayswap.test( jQuery.css( elem, "display" ) ) && - - // Support: Safari 8+ - // Table columns in Safari have non-zero offsetWidth & zero - // getBoundingClientRect().width unless display is changed. - // Support: IE <=11 only - // Running getBoundingClientRect on a disconnected node - // in IE throws an error. - ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); - } ) : - getWidthOrHeight( elem, name, extra ); - } - }, - - set: function( elem, value, extra ) { - var matches, - styles = extra && getStyles( elem ), - subtract = extra && augmentWidthOrHeight( - elem, - name, - extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - styles - ); - - // Convert to pixels if value adjustment is needed - if ( subtract && ( matches = rcssNum.exec( value ) ) && - ( matches[ 3 ] || "px" ) !== "px" ) { - - elem.style[ name ] = value; - value = jQuery.css( elem, name ); - } - - return setPositiveNumber( elem, value, subtract ); - } - }; -} ); - -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, - function( elem, computed ) { - if ( computed ) { - return ( parseFloat( curCSS( elem, "marginLeft" ) ) || - elem.getBoundingClientRect().left - - swap( elem, { marginLeft: 0 }, function() { - return elem.getBoundingClientRect().left; - } ) - ) + "px"; - } - } -); - -// These hooks are used by animate to expand properties -jQuery.each( { - margin: "", - padding: "", - border: "Width" -}, function( prefix, suffix ) { - jQuery.cssHooks[ prefix + suffix ] = { - expand: function( value ) { - var i = 0, - expanded = {}, - - // Assumes a single number if not a string - parts = typeof value === "string" ? value.split( " " ) : [ value ]; - - for ( ; i < 4; i++ ) { - expanded[ prefix + cssExpand[ i ] + suffix ] = - parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; - } - - return expanded; - } - }; - - if ( !rmargin.test( prefix ) ) { - jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; - } -} ); - -jQuery.fn.extend( { - css: function( name, value ) { - return access( this, function( elem, name, value ) { - var styles, len, - map = {}, - i = 0; - - if ( Array.isArray( name ) ) { - styles = getStyles( elem ); - len = name.length; - - for ( ; i < len; i++ ) { - map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); - } - - return map; - } - - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }, name, value, arguments.length > 1 ); - } -} ); - - -function Tween( elem, options, prop, end, easing ) { - return new Tween.prototype.init( elem, options, prop, end, easing ); -} -jQuery.Tween = Tween; - -Tween.prototype = { - constructor: Tween, - init: function( elem, options, prop, end, easing, unit ) { - this.elem = elem; - this.prop = prop; - this.easing = easing || jQuery.easing._default; - this.options = options; - this.start = this.now = this.cur(); - this.end = end; - this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); - }, - cur: function() { - var hooks = Tween.propHooks[ this.prop ]; - - return hooks && hooks.get ? - hooks.get( this ) : - Tween.propHooks._default.get( this ); - }, - run: function( percent ) { - var eased, - hooks = Tween.propHooks[ this.prop ]; - - if ( this.options.duration ) { - this.pos = eased = jQuery.easing[ this.easing ]( - percent, this.options.duration * percent, 0, 1, this.options.duration - ); - } else { - this.pos = eased = percent; - } - this.now = ( this.end - this.start ) * eased + this.start; - - if ( this.options.step ) { - this.options.step.call( this.elem, this.now, this ); - } - - if ( hooks && hooks.set ) { - hooks.set( this ); - } else { - Tween.propHooks._default.set( this ); - } - return this; - } -}; - -Tween.prototype.init.prototype = Tween.prototype; - -Tween.propHooks = { - _default: { - get: function( tween ) { - var result; - - // Use a property on the element directly when it is not a DOM element, - // or when there is no matching style property that exists. - if ( tween.elem.nodeType !== 1 || - tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { - return tween.elem[ tween.prop ]; - } - - // Passing an empty string as a 3rd parameter to .css will automatically - // attempt a parseFloat and fallback to a string if the parse fails. - // Simple values such as "10px" are parsed to Float; - // complex values such as "rotate(1rad)" are returned as-is. - result = jQuery.css( tween.elem, tween.prop, "" ); - - // Empty strings, null, undefined and "auto" are converted to 0. - return !result || result === "auto" ? 0 : result; - }, - set: function( tween ) { - - // Use step hook for back compat. - // Use cssHook if its there. - // Use .style if available and use plain properties where available. - if ( jQuery.fx.step[ tween.prop ] ) { - jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { - jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); - } else { - tween.elem[ tween.prop ] = tween.now; - } - } - } -}; - -// Support: IE <=9 only -// Panic based approach to setting things on disconnected nodes -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { - set: function( tween ) { - if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } -}; - -jQuery.easing = { - linear: function( p ) { - return p; - }, - swing: function( p ) { - return 0.5 - Math.cos( p * Math.PI ) / 2; - }, - _default: "swing" -}; - -jQuery.fx = Tween.prototype.init; - -// Back compat <1.8 extension point -jQuery.fx.step = {}; - - - - -var - fxNow, inProgress, - rfxtypes = /^(?:toggle|show|hide)$/, - rrun = /queueHooks$/; - -function schedule() { - if ( inProgress ) { - if ( document.hidden === false && window.requestAnimationFrame ) { - window.requestAnimationFrame( schedule ); - } else { - window.setTimeout( schedule, jQuery.fx.interval ); - } - - jQuery.fx.tick(); - } -} - -// Animations created synchronously will run synchronously -function createFxNow() { - window.setTimeout( function() { - fxNow = undefined; - } ); - return ( fxNow = jQuery.now() ); -} - -// Generate parameters to create a standard animation -function genFx( type, includeWidth ) { - var which, - i = 0, - attrs = { height: type }; - - // If we include width, step value is 1 to do all cssExpand values, - // otherwise step value is 2 to skip over Left and Right - includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4; i += 2 - includeWidth ) { - which = cssExpand[ i ]; - attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; - } - - if ( includeWidth ) { - attrs.opacity = attrs.width = type; - } - - return attrs; -} - -function createTween( value, prop, animation ) { - var tween, - collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), - index = 0, - length = collection.length; - for ( ; index < length; index++ ) { - if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { - - // We're done with this property - return tween; - } - } -} - -function defaultPrefilter( elem, props, opts ) { - var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, - isBox = "width" in props || "height" in props, - anim = this, - orig = {}, - style = elem.style, - hidden = elem.nodeType && isHiddenWithinTree( elem ), - dataShow = dataPriv.get( elem, "fxshow" ); - - // Queue-skipping animations hijack the fx hooks - if ( !opts.queue ) { - hooks = jQuery._queueHooks( elem, "fx" ); - if ( hooks.unqueued == null ) { - hooks.unqueued = 0; - oldfire = hooks.empty.fire; - hooks.empty.fire = function() { - if ( !hooks.unqueued ) { - oldfire(); - } - }; - } - hooks.unqueued++; - - anim.always( function() { - - // Ensure the complete handler is called before this completes - anim.always( function() { - hooks.unqueued--; - if ( !jQuery.queue( elem, "fx" ).length ) { - hooks.empty.fire(); - } - } ); - } ); - } - - // Detect show/hide animations - for ( prop in props ) { - value = props[ prop ]; - if ( rfxtypes.test( value ) ) { - delete props[ prop ]; - toggle = toggle || value === "toggle"; - if ( value === ( hidden ? "hide" : "show" ) ) { - - // Pretend to be hidden if this is a "show" and - // there is still data from a stopped show/hide - if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { - hidden = true; - - // Ignore all other no-op show/hide data - } else { - continue; - } - } - orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); - } - } - - // Bail out if this is a no-op like .hide().hide() - propTween = !jQuery.isEmptyObject( props ); - if ( !propTween && jQuery.isEmptyObject( orig ) ) { - return; - } - - // Restrict "overflow" and "display" styles during box animations - if ( isBox && elem.nodeType === 1 ) { - - // Support: IE <=9 - 11, Edge 12 - 13 - // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY - opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; - - // Identify a display type, preferring old show/hide data over the CSS cascade - restoreDisplay = dataShow && dataShow.display; - if ( restoreDisplay == null ) { - restoreDisplay = dataPriv.get( elem, "display" ); - } - display = jQuery.css( elem, "display" ); - if ( display === "none" ) { - if ( restoreDisplay ) { - display = restoreDisplay; - } else { - - // Get nonempty value(s) by temporarily forcing visibility - showHide( [ elem ], true ); - restoreDisplay = elem.style.display || restoreDisplay; - display = jQuery.css( elem, "display" ); - showHide( [ elem ] ); - } - } - - // Animate inline elements as inline-block - if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { - if ( jQuery.css( elem, "float" ) === "none" ) { - - // Restore the original display value at the end of pure show/hide animations - if ( !propTween ) { - anim.done( function() { - style.display = restoreDisplay; - } ); - if ( restoreDisplay == null ) { - display = style.display; - restoreDisplay = display === "none" ? "" : display; - } - } - style.display = "inline-block"; - } - } - } - - if ( opts.overflow ) { - style.overflow = "hidden"; - anim.always( function() { - style.overflow = opts.overflow[ 0 ]; - style.overflowX = opts.overflow[ 1 ]; - style.overflowY = opts.overflow[ 2 ]; - } ); - } - - // Implement show/hide animations - propTween = false; - for ( prop in orig ) { - - // General show/hide setup for this element animation - if ( !propTween ) { - if ( dataShow ) { - if ( "hidden" in dataShow ) { - hidden = dataShow.hidden; - } - } else { - dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); - } - - // Store hidden/visible for toggle so `.stop().toggle()` "reverses" - if ( toggle ) { - dataShow.hidden = !hidden; - } - - // Show elements before animating them - if ( hidden ) { - showHide( [ elem ], true ); - } - - /* eslint-disable no-loop-func */ - - anim.done( function() { - - /* eslint-enable no-loop-func */ - - // The final step of a "hide" animation is actually hiding the element - if ( !hidden ) { - showHide( [ elem ] ); - } - dataPriv.remove( elem, "fxshow" ); - for ( prop in orig ) { - jQuery.style( elem, prop, orig[ prop ] ); - } - } ); - } - - // Per-property setup - propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); - if ( !( prop in dataShow ) ) { - dataShow[ prop ] = propTween.start; - if ( hidden ) { - propTween.end = propTween.start; - propTween.start = 0; - } - } - } -} - -function propFilter( props, specialEasing ) { - var index, name, easing, value, hooks; - - // camelCase, specialEasing and expand cssHook pass - for ( index in props ) { - name = jQuery.camelCase( index ); - easing = specialEasing[ name ]; - value = props[ index ]; - if ( Array.isArray( value ) ) { - easing = value[ 1 ]; - value = props[ index ] = value[ 0 ]; - } - - if ( index !== name ) { - props[ name ] = value; - delete props[ index ]; - } - - hooks = jQuery.cssHooks[ name ]; - if ( hooks && "expand" in hooks ) { - value = hooks.expand( value ); - delete props[ name ]; - - // Not quite $.extend, this won't overwrite existing keys. - // Reusing 'index' because we have the correct "name" - for ( index in value ) { - if ( !( index in props ) ) { - props[ index ] = value[ index ]; - specialEasing[ index ] = easing; - } - } - } else { - specialEasing[ name ] = easing; - } - } -} - -function Animation( elem, properties, options ) { - var result, - stopped, - index = 0, - length = Animation.prefilters.length, - deferred = jQuery.Deferred().always( function() { - - // Don't match elem in the :animated selector - delete tick.elem; - } ), - tick = function() { - if ( stopped ) { - return false; - } - var currentTime = fxNow || createFxNow(), - remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), - - // Support: Android 2.3 only - // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) - temp = remaining / animation.duration || 0, - percent = 1 - temp, - index = 0, - length = animation.tweens.length; - - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( percent ); - } - - deferred.notifyWith( elem, [ animation, percent, remaining ] ); - - // If there's more to do, yield - if ( percent < 1 && length ) { - return remaining; - } - - // If this was an empty animation, synthesize a final progress notification - if ( !length ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - } - - // Resolve the animation and report its conclusion - deferred.resolveWith( elem, [ animation ] ); - return false; - }, - animation = deferred.promise( { - elem: elem, - props: jQuery.extend( {}, properties ), - opts: jQuery.extend( true, { - specialEasing: {}, - easing: jQuery.easing._default - }, options ), - originalProperties: properties, - originalOptions: options, - startTime: fxNow || createFxNow(), - duration: options.duration, - tweens: [], - createTween: function( prop, end ) { - var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); - animation.tweens.push( tween ); - return tween; - }, - stop: function( gotoEnd ) { - var index = 0, - - // If we are going to the end, we want to run all the tweens - // otherwise we skip this part - length = gotoEnd ? animation.tweens.length : 0; - if ( stopped ) { - return this; - } - stopped = true; - for ( ; index < length; index++ ) { - animation.tweens[ index ].run( 1 ); - } - - // Resolve when we played the last frame; otherwise, reject - if ( gotoEnd ) { - deferred.notifyWith( elem, [ animation, 1, 0 ] ); - deferred.resolveWith( elem, [ animation, gotoEnd ] ); - } else { - deferred.rejectWith( elem, [ animation, gotoEnd ] ); - } - return this; - } - } ), - props = animation.props; - - propFilter( props, animation.opts.specialEasing ); - - for ( ; index < length; index++ ) { - result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); - if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { - jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); - } - return result; - } - } - - jQuery.map( props, createTween, animation ); - - if ( jQuery.isFunction( animation.opts.start ) ) { - animation.opts.start.call( elem, animation ); - } - - // Attach callbacks from options - animation - .progress( animation.opts.progress ) - .done( animation.opts.done, animation.opts.complete ) - .fail( animation.opts.fail ) - .always( animation.opts.always ); - - jQuery.fx.timer( - jQuery.extend( tick, { - elem: elem, - anim: animation, - queue: animation.opts.queue - } ) - ); - - return animation; -} - -jQuery.Animation = jQuery.extend( Animation, { - - tweeners: { - "*": [ function( prop, value ) { - var tween = this.createTween( prop, value ); - adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); - return tween; - } ] - }, - - tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { - callback = props; - props = [ "*" ]; - } else { - props = props.match( rnothtmlwhite ); - } - - var prop, - index = 0, - length = props.length; - - for ( ; index < length; index++ ) { - prop = props[ index ]; - Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; - Animation.tweeners[ prop ].unshift( callback ); - } - }, - - prefilters: [ defaultPrefilter ], - - prefilter: function( callback, prepend ) { - if ( prepend ) { - Animation.prefilters.unshift( callback ); - } else { - Animation.prefilters.push( callback ); - } - } -} ); - -jQuery.speed = function( speed, easing, fn ) { - var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing - }; - - // Go to the end state if fx are off - if ( jQuery.fx.off ) { - opt.duration = 0; - - } else { - if ( typeof opt.duration !== "number" ) { - if ( opt.duration in jQuery.fx.speeds ) { - opt.duration = jQuery.fx.speeds[ opt.duration ]; - - } else { - opt.duration = jQuery.fx.speeds._default; - } - } - } - - // Normalize opt.queue - true/undefined/null -> "fx" - if ( opt.queue == null || opt.queue === true ) { - opt.queue = "fx"; - } - - // Queueing - opt.old = opt.complete; - - opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - - if ( opt.queue ) { - jQuery.dequeue( this, opt.queue ); - } - }; - - return opt; -}; - -jQuery.fn.extend( { - fadeTo: function( speed, to, easing, callback ) { - - // Show any hidden elements after setting opacity to 0 - return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() - - // Animate to the value specified - .end().animate( { opacity: to }, speed, easing, callback ); - }, - animate: function( prop, speed, easing, callback ) { - var empty = jQuery.isEmptyObject( prop ), - optall = jQuery.speed( speed, easing, callback ), - doAnimation = function() { - - // Operate on a copy of prop so per-property easing won't be lost - var anim = Animation( this, jQuery.extend( {}, prop ), optall ); - - // Empty animations, or finishing resolves immediately - if ( empty || dataPriv.get( this, "finish" ) ) { - anim.stop( true ); - } - }; - doAnimation.finish = doAnimation; - - return empty || optall.queue === false ? - this.each( doAnimation ) : - this.queue( optall.queue, doAnimation ); - }, - stop: function( type, clearQueue, gotoEnd ) { - var stopQueue = function( hooks ) { - var stop = hooks.stop; - delete hooks.stop; - stop( gotoEnd ); - }; - - if ( typeof type !== "string" ) { - gotoEnd = clearQueue; - clearQueue = type; - type = undefined; - } - if ( clearQueue && type !== false ) { - this.queue( type || "fx", [] ); - } - - return this.each( function() { - var dequeue = true, - index = type != null && type + "queueHooks", - timers = jQuery.timers, - data = dataPriv.get( this ); - - if ( index ) { - if ( data[ index ] && data[ index ].stop ) { - stopQueue( data[ index ] ); - } - } else { - for ( index in data ) { - if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { - stopQueue( data[ index ] ); - } - } - } - - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && - ( type == null || timers[ index ].queue === type ) ) { - - timers[ index ].anim.stop( gotoEnd ); - dequeue = false; - timers.splice( index, 1 ); - } - } - - // Start the next in the queue if the last step wasn't forced. - // Timers currently will call their complete callbacks, which - // will dequeue but only if they were gotoEnd. - if ( dequeue || !gotoEnd ) { - jQuery.dequeue( this, type ); - } - } ); - }, - finish: function( type ) { - if ( type !== false ) { - type = type || "fx"; - } - return this.each( function() { - var index, - data = dataPriv.get( this ), - queue = data[ type + "queue" ], - hooks = data[ type + "queueHooks" ], - timers = jQuery.timers, - length = queue ? queue.length : 0; - - // Enable finishing flag on private data - data.finish = true; - - // Empty the queue first - jQuery.queue( this, type, [] ); - - if ( hooks && hooks.stop ) { - hooks.stop.call( this, true ); - } - - // Look for any active animations, and finish them - for ( index = timers.length; index--; ) { - if ( timers[ index ].elem === this && timers[ index ].queue === type ) { - timers[ index ].anim.stop( true ); - timers.splice( index, 1 ); - } - } - - // Look for any animations in the old queue and finish them - for ( index = 0; index < length; index++ ) { - if ( queue[ index ] && queue[ index ].finish ) { - queue[ index ].finish.call( this ); - } - } - - // Turn off finishing flag - delete data.finish; - } ); - } -} ); - -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { - var cssFn = jQuery.fn[ name ]; - jQuery.fn[ name ] = function( speed, easing, callback ) { - return speed == null || typeof speed === "boolean" ? - cssFn.apply( this, arguments ) : - this.animate( genFx( name, true ), speed, easing, callback ); - }; -} ); - -// Generate shortcuts for custom animations -jQuery.each( { - slideDown: genFx( "show" ), - slideUp: genFx( "hide" ), - slideToggle: genFx( "toggle" ), - fadeIn: { opacity: "show" }, - fadeOut: { opacity: "hide" }, - fadeToggle: { opacity: "toggle" } -}, function( name, props ) { - jQuery.fn[ name ] = function( speed, easing, callback ) { - return this.animate( props, speed, easing, callback ); - }; -} ); - -jQuery.timers = []; -jQuery.fx.tick = function() { - var timer, - i = 0, - timers = jQuery.timers; - - fxNow = jQuery.now(); - - for ( ; i < timers.length; i++ ) { - timer = timers[ i ]; - - // Run the timer and safely remove it when done (allowing for external removal) - if ( !timer() && timers[ i ] === timer ) { - timers.splice( i--, 1 ); - } - } - - if ( !timers.length ) { - jQuery.fx.stop(); - } - fxNow = undefined; -}; - -jQuery.fx.timer = function( timer ) { - jQuery.timers.push( timer ); - jQuery.fx.start(); -}; - -jQuery.fx.interval = 13; -jQuery.fx.start = function() { - if ( inProgress ) { - return; - } - - inProgress = true; - schedule(); -}; - -jQuery.fx.stop = function() { - inProgress = null; -}; - -jQuery.fx.speeds = { - slow: 600, - fast: 200, - - // Default speed - _default: 400 -}; - - -// Based off of the plugin by Clint Helfers, with permission. -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ -jQuery.fn.delay = function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = window.setTimeout( next, time ); - hooks.stop = function() { - window.clearTimeout( timeout ); - }; - } ); -}; - - -( function() { - var input = document.createElement( "input" ), - select = document.createElement( "select" ), - opt = select.appendChild( document.createElement( "option" ) ); - - input.type = "checkbox"; - - // Support: Android <=4.3 only - // Default value for a checkbox should be "on" - support.checkOn = input.value !== ""; - - // Support: IE <=11 only - // Must access selectedIndex to make default options select - support.optSelected = opt.selected; - - // Support: IE <=11 only - // An input loses its value after becoming a radio - input = document.createElement( "input" ); - input.value = "t"; - input.type = "radio"; - support.radioValue = input.value === "t"; -} )(); - - -var boolHook, - attrHandle = jQuery.expr.attrHandle; - -jQuery.fn.extend( { - attr: function( name, value ) { - return access( this, jQuery.attr, name, value, arguments.length > 1 ); - }, - - removeAttr: function( name ) { - return this.each( function() { - jQuery.removeAttr( this, name ); - } ); - } -} ); - -jQuery.extend( { - attr: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set attributes on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - // Attribute hooks are determined by the lowercase version - // Grab necessary hook if one is defined - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - hooks = jQuery.attrHooks[ name.toLowerCase() ] || - ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); - } - - if ( value !== undefined ) { - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - } - - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - elem.setAttribute( name, value + "" ); - return value; - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - ret = jQuery.find.attr( elem, name ); - - // Non-existent attributes return null, we normalize to undefined - return ret == null ? undefined : ret; - }, - - attrHooks: { - type: { - set: function( elem, value ) { - if ( !support.radioValue && value === "radio" && - nodeName( elem, "input" ) ) { - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - } - }, - - removeAttr: function( elem, value ) { - var name, - i = 0, - - // Attribute names can contain non-HTML whitespace characters - // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 - attrNames = value && value.match( rnothtmlwhite ); - - if ( attrNames && elem.nodeType === 1 ) { - while ( ( name = attrNames[ i++ ] ) ) { - elem.removeAttribute( name ); - } - } - } -} ); - -// Hooks for boolean attributes -boolHook = { - set: function( elem, value, name ) { - if ( value === false ) { - - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - elem.setAttribute( name, name ); - } - return name; - } -}; - -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { - var getter = attrHandle[ name ] || jQuery.find.attr; - - attrHandle[ name ] = function( elem, name, isXML ) { - var ret, handle, - lowercaseName = name.toLowerCase(); - - if ( !isXML ) { - - // Avoid an infinite loop by temporarily removing this function from the getter - handle = attrHandle[ lowercaseName ]; - attrHandle[ lowercaseName ] = ret; - ret = getter( elem, name, isXML ) != null ? - lowercaseName : - null; - attrHandle[ lowercaseName ] = handle; - } - return ret; - }; -} ); - - - - -var rfocusable = /^(?:input|select|textarea|button)$/i, - rclickable = /^(?:a|area)$/i; - -jQuery.fn.extend( { - prop: function( name, value ) { - return access( this, jQuery.prop, name, value, arguments.length > 1 ); - }, - - removeProp: function( name ) { - return this.each( function() { - delete this[ jQuery.propFix[ name ] || name ]; - } ); - } -} ); - -jQuery.extend( { - prop: function( elem, name, value ) { - var ret, hooks, - nType = elem.nodeType; - - // Don't get/set properties on text, comment and attribute nodes - if ( nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { - - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && - ( ret = hooks.set( elem, value, name ) ) !== undefined ) { - return ret; - } - - return ( elem[ name ] = value ); - } - - if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { - return ret; - } - - return elem[ name ]; - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - - // Support: IE <=9 - 11 only - // elem.tabIndex doesn't always return the - // correct value when it hasn't been explicitly set - // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - // Use proper attribute retrieval(#12072) - var tabindex = jQuery.find.attr( elem, "tabindex" ); - - if ( tabindex ) { - return parseInt( tabindex, 10 ); - } - - if ( - rfocusable.test( elem.nodeName ) || - rclickable.test( elem.nodeName ) && - elem.href - ) { - return 0; - } - - return -1; - } - } - }, - - propFix: { - "for": "htmlFor", - "class": "className" - } -} ); - -// Support: IE <=11 only -// Accessing the selectedIndex property -// forces the browser to respect setting selected -// on the option -// The getter ensures a default option is selected -// when in an optgroup -// eslint rule "no-unused-expressions" is disabled for this code -// since it considers such accessions noop -if ( !support.optSelected ) { - jQuery.propHooks.selected = { - get: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent && parent.parentNode ) { - parent.parentNode.selectedIndex; - } - return null; - }, - set: function( elem ) { - - /* eslint no-unused-expressions: "off" */ - - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }; -} - -jQuery.each( [ - "tabIndex", - "readOnly", - "maxLength", - "cellSpacing", - "cellPadding", - "rowSpan", - "colSpan", - "useMap", - "frameBorder", - "contentEditable" -], function() { - jQuery.propFix[ this.toLowerCase() ] = this; -} ); - - - - - // Strip and collapse whitespace according to HTML spec - // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace - function stripAndCollapse( value ) { - var tokens = value.match( rnothtmlwhite ) || []; - return tokens.join( " " ); - } - - -function getClass( elem ) { - return elem.getAttribute && elem.getAttribute( "class" ) || ""; -} - -jQuery.fn.extend( { - addClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - if ( cur.indexOf( " " + clazz + " " ) < 0 ) { - cur += clazz + " "; - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0; - - if ( jQuery.isFunction( value ) ) { - return this.each( function( j ) { - jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); - } ); - } - - if ( !arguments.length ) { - return this.attr( "class", "" ); - } - - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; - - while ( ( elem = this[ i++ ] ) ) { - curValue = getClass( elem ); - - // This expression is here for better compressibility (see addClass) - cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); - - if ( cur ) { - j = 0; - while ( ( clazz = classes[ j++ ] ) ) { - - // Remove *all* instances - while ( cur.indexOf( " " + clazz + " " ) > -1 ) { - cur = cur.replace( " " + clazz + " ", " " ); - } - } - - // Only assign if different to avoid unneeded rendering. - finalValue = stripAndCollapse( cur ); - if ( curValue !== finalValue ) { - elem.setAttribute( "class", finalValue ); - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value; - - if ( typeof stateVal === "boolean" && type === "string" ) { - return stateVal ? this.addClass( value ) : this.removeClass( value ); - } - - if ( jQuery.isFunction( value ) ) { - return this.each( function( i ) { - jQuery( this ).toggleClass( - value.call( this, i, getClass( this ), stateVal ), - stateVal - ); - } ); - } - - return this.each( function() { - var className, i, self, classNames; - - if ( type === "string" ) { - - // Toggle individual class names - i = 0; - self = jQuery( this ); - classNames = value.match( rnothtmlwhite ) || []; - - while ( ( className = classNames[ i++ ] ) ) { - - // Check each className given, space separated list - if ( self.hasClass( className ) ) { - self.removeClass( className ); - } else { - self.addClass( className ); - } - } - - // Toggle whole class name - } else if ( value === undefined || type === "boolean" ) { - className = getClass( this ); - if ( className ) { - - // Store className if set - dataPriv.set( this, "__className__", className ); - } - - // If the element has a class name or if we're passed `false`, - // then remove the whole classname (if there was one, the above saved it). - // Otherwise bring back whatever was previously saved (if anything), - // falling back to the empty string if nothing was stored. - if ( this.setAttribute ) { - this.setAttribute( "class", - className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" - ); - } - } - } ); - }, - - hasClass: function( selector ) { - var className, elem, - i = 0; - - className = " " + selector + " "; - while ( ( elem = this[ i++ ] ) ) { - if ( elem.nodeType === 1 && - ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; - } - } - - return false; - } -} ); - - - - -var rreturn = /\r/g; - -jQuery.fn.extend( { - val: function( value ) { - var hooks, ret, isFunction, - elem = this[ 0 ]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.type ] || - jQuery.valHooks[ elem.nodeName.toLowerCase() ]; - - if ( hooks && - "get" in hooks && - ( ret = hooks.get( elem, "value" ) ) !== undefined - ) { - return ret; - } - - ret = elem.value; - - // Handle most common string cases - if ( typeof ret === "string" ) { - return ret.replace( rreturn, "" ); - } - - // Handle cases where value is null/undef or number - return ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each( function( i ) { - var val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, jQuery( this ).val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - - } else if ( typeof val === "number" ) { - val += ""; - - } else if ( Array.isArray( val ) ) { - val = jQuery.map( val, function( value ) { - return value == null ? "" : value + ""; - } ); - } - - hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - } ); - } -} ); - -jQuery.extend( { - valHooks: { - option: { - get: function( elem ) { - - var val = jQuery.find.attr( elem, "value" ); - return val != null ? - val : - - // Support: IE <=10 - 11 only - // option.text throws exceptions (#14686, #14858) - // Strip and collapse whitespace - // https://html.spec.whatwg.org/#strip-and-collapse-whitespace - stripAndCollapse( jQuery.text( elem ) ); - } - }, - select: { - get: function( elem ) { - var value, option, i, - options = elem.options, - index = elem.selectedIndex, - one = elem.type === "select-one", - values = one ? null : [], - max = one ? index + 1 : options.length; - - if ( index < 0 ) { - i = max; - - } else { - i = one ? index : 0; - } - - // Loop through all the selected options - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Support: IE <=9 only - // IE8-9 doesn't update selected after form reset (#2551) - if ( ( option.selected || i === index ) && - - // Don't return options that are disabled or in a disabled optgroup - !option.disabled && - ( !option.parentNode.disabled || - !nodeName( option.parentNode, "optgroup" ) ) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - }, - - set: function( elem, value ) { - var optionSet, option, - options = elem.options, - values = jQuery.makeArray( value ), - i = options.length; - - while ( i-- ) { - option = options[ i ]; - - /* eslint-disable no-cond-assign */ - - if ( option.selected = - jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 - ) { - optionSet = true; - } - - /* eslint-enable no-cond-assign */ - } - - // Force browsers to behave consistently when non-matching value is set - if ( !optionSet ) { - elem.selectedIndex = -1; - } - return values; - } - } - } -} ); - -// Radios and checkboxes getter/setter -jQuery.each( [ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - set: function( elem, value ) { - if ( Array.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); - } - } - }; - if ( !support.checkOn ) { - jQuery.valHooks[ this ].get = function( elem ) { - return elem.getAttribute( "value" ) === null ? "on" : elem.value; - }; - } -} ); - - - - -// Return jQuery for attributes-only inclusion - - -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; - -jQuery.extend( jQuery.event, { - - trigger: function( event, data, elem, onlyHandlers ) { - - var i, cur, tmp, bubbleType, ontype, handle, special, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "." ) > -1 ) { - - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split( "." ); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf( ":" ) < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join( "." ); - event.rnamespace = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === ( elem.ownerDocument || document ) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && - dataPriv.get( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( ( !special._default || - special._default.apply( eventPath.pop(), data ) === false ) && - acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name as the event. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - // Piggyback on a donor event to simulate a different one - // Used only for `focus(in | out)` events - simulate: function( type, elem, event ) { - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true - } - ); - - jQuery.event.trigger( e, null, elem ); - } - -} ); - -jQuery.fn.extend( { - - trigger: function( type, data ) { - return this.each( function() { - jQuery.event.trigger( type, data, this ); - } ); - }, - triggerHandler: function( type, data ) { - var elem = this[ 0 ]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -} ); - - -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - - - -support.focusin = "onfocusin" in window; - - -// Support: Firefox <=44 -// Firefox doesn't have focus(in | out) events -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 -// -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 -// focus(in | out) events fire after focus & blur events, -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 -if ( !support.focusin ) { - jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = dataPriv.access( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - dataPriv.remove( doc, fix ); - - } else { - dataPriv.access( doc, fix, attaches ); - } - } - }; - } ); -} -var location = window.location; - -var nonce = jQuery.now(); - -var rquery = ( /\?/ ); - - - -// Cross-browser xml parsing -jQuery.parseXML = function( data ) { - var xml; - if ( !data || typeof data !== "string" ) { - return null; - } - - // Support: IE 9 - 11 only - // IE throws on parseFromString with invalid input. - try { - xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } - - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; -}; - - -var - rbracket = /\[\]$/, - rCRLF = /\r?\n/g, - rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, - rsubmittable = /^(?:input|select|textarea|keygen)/i; - -function buildParams( prefix, obj, traditional, add ) { - var name; - - if ( Array.isArray( obj ) ) { - - // Serialize array item. - jQuery.each( obj, function( i, v ) { - if ( traditional || rbracket.test( prefix ) ) { - - // Treat each array item as a scalar. - add( prefix, v ); - - } else { - - // Item is non-scalar (array or object), encode its numeric index. - buildParams( - prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", - v, - traditional, - add - ); - } - } ); - - } else if ( !traditional && jQuery.type( obj ) === "object" ) { - - // Serialize object item. - for ( name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } - - } else { - - // Serialize scalar item. - add( prefix, obj ); - } -} - -// Serialize an array of form elements or a set of -// key/values into a query string -jQuery.param = function( a, traditional ) { - var prefix, - s = [], - add = function( key, valueOrFunction ) { - - // If value is a function, invoke it and use its return value - var value = jQuery.isFunction( valueOrFunction ) ? - valueOrFunction() : - valueOrFunction; - - s[ s.length ] = encodeURIComponent( key ) + "=" + - encodeURIComponent( value == null ? "" : value ); - }; - - // If an array was passed in, assume that it is an array of form elements. - if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - } ); - - } else { - - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ); -}; - -jQuery.fn.extend( { - serialize: function() { - return jQuery.param( this.serializeArray() ); - }, - serializeArray: function() { - return this.map( function() { - - // Can add propHook for "elements" to filter or add form elements - var elements = jQuery.prop( this, "elements" ); - return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { - var type = this.type; - - // Use .is( ":disabled" ) so that fieldset[disabled] works - return this.name && !jQuery( this ).is( ":disabled" ) && - rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && - ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { - var val = jQuery( this ).val(); - - if ( val == null ) { - return null; - } - - if ( Array.isArray( val ) ) { - return jQuery.map( val, function( val ) { - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ); - } - - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - } ).get(); - } -} ); - - -var - r20 = /%20/g, - rhash = /#.*$/, - rantiCache = /([?&])_=[^&]*/, - rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, - - // #7653, #8125, #8152: local protocol detection - rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, - rnoContent = /^(?:GET|HEAD)$/, - rprotocol = /^\/\//, - - /* Prefilters - * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) - * 2) These are called: - * - BEFORE asking for a transport - * - AFTER param serialization (s.data is a string if s.processData is true) - * 3) key is the dataType - * 4) the catchall symbol "*" can be used - * 5) execution will start with transport dataType and THEN continue down to "*" if needed - */ - prefilters = {}, - - /* Transports bindings - * 1) key is the dataType - * 2) the catchall symbol "*" can be used - * 3) selection will start with transport dataType and THEN go to "*" if needed - */ - transports = {}, - - // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression - allTypes = "*/".concat( "*" ), - - // Anchor tag for parsing the document origin - originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; - -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport -function addToPrefiltersOrTransports( structure ) { - - // dataTypeExpression is optional and defaults to "*" - return function( dataTypeExpression, func ) { - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - var dataType, - i = 0, - dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - - if ( jQuery.isFunction( func ) ) { - - // For each dataType in the dataTypeExpression - while ( ( dataType = dataTypes[ i++ ] ) ) { - - // Prepend if requested - if ( dataType[ 0 ] === "+" ) { - dataType = dataType.slice( 1 ) || "*"; - ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); - - // Otherwise append - } else { - ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); - } - } - } - }; -} - -// Base inspection function for prefilters and transports -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { - - var inspected = {}, - seekingTransport = ( structure === transports ); - - function inspect( dataType ) { - var selected; - inspected[ dataType ] = true; - jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { - var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); - if ( typeof dataTypeOrTransport === "string" && - !seekingTransport && !inspected[ dataTypeOrTransport ] ) { - - options.dataTypes.unshift( dataTypeOrTransport ); - inspect( dataTypeOrTransport ); - return false; - } else if ( seekingTransport ) { - return !( selected = dataTypeOrTransport ); - } - } ); - return selected; - } - - return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); -} - -// A special extend for ajax options -// that takes "flat" options (not to be deep extended) -// Fixes #9887 -function ajaxExtend( target, src ) { - var key, deep, - flatOptions = jQuery.ajaxSettings.flatOptions || {}; - - for ( key in src ) { - if ( src[ key ] !== undefined ) { - ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; - } - } - if ( deep ) { - jQuery.extend( true, target, deep ); - } - - return target; -} - -/* Handles responses to an ajax request: - * - finds the right dataType (mediates between content-type and expected dataType) - * - returns the corresponding response - */ -function ajaxHandleResponses( s, jqXHR, responses ) { - - var ct, type, finalDataType, firstDataType, - contents = s.contents, - dataTypes = s.dataTypes; - - // Remove auto dataType and get content-type in the process - while ( dataTypes[ 0 ] === "*" ) { - dataTypes.shift(); - if ( ct === undefined ) { - ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); - } - } - - // Check if we're dealing with a known content-type - if ( ct ) { - for ( type in contents ) { - if ( contents[ type ] && contents[ type ].test( ct ) ) { - dataTypes.unshift( type ); - break; - } - } - } - - // Check to see if we have a response for the expected dataType - if ( dataTypes[ 0 ] in responses ) { - finalDataType = dataTypes[ 0 ]; - } else { - - // Try convertible dataTypes - for ( type in responses ) { - if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { - finalDataType = type; - break; - } - if ( !firstDataType ) { - firstDataType = type; - } - } - - // Or just use first one - finalDataType = finalDataType || firstDataType; - } - - // If we found a dataType - // We add the dataType to the list if needed - // and return the corresponding response - if ( finalDataType ) { - if ( finalDataType !== dataTypes[ 0 ] ) { - dataTypes.unshift( finalDataType ); - } - return responses[ finalDataType ]; - } -} - -/* Chain conversions given the request and the original response - * Also sets the responseXXX fields on the jqXHR instance - */ -function ajaxConvert( s, response, jqXHR, isSuccess ) { - var conv2, current, conv, tmp, prev, - converters = {}, - - // Work with a copy of dataTypes in case we need to modify it for conversion - dataTypes = s.dataTypes.slice(); - - // Create converters map with lowercased keys - if ( dataTypes[ 1 ] ) { - for ( conv in s.converters ) { - converters[ conv.toLowerCase() ] = s.converters[ conv ]; - } - } - - current = dataTypes.shift(); - - // Convert to each sequential dataType - while ( current ) { - - if ( s.responseFields[ current ] ) { - jqXHR[ s.responseFields[ current ] ] = response; - } - - // Apply the dataFilter if provided - if ( !prev && isSuccess && s.dataFilter ) { - response = s.dataFilter( response, s.dataType ); - } - - prev = current; - current = dataTypes.shift(); - - if ( current ) { - - // There's only work to do if current dataType is non-auto - if ( current === "*" ) { - - current = prev; - - // Convert response if prev dataType is non-auto and differs from current - } else if ( prev !== "*" && prev !== current ) { - - // Seek a direct converter - conv = converters[ prev + " " + current ] || converters[ "* " + current ]; - - // If none found, seek a pair - if ( !conv ) { - for ( conv2 in converters ) { - - // If conv2 outputs current - tmp = conv2.split( " " ); - if ( tmp[ 1 ] === current ) { - - // If prev can be converted to accepted input - conv = converters[ prev + " " + tmp[ 0 ] ] || - converters[ "* " + tmp[ 0 ] ]; - if ( conv ) { - - // Condense equivalence converters - if ( conv === true ) { - conv = converters[ conv2 ]; - - // Otherwise, insert the intermediate dataType - } else if ( converters[ conv2 ] !== true ) { - current = tmp[ 0 ]; - dataTypes.unshift( tmp[ 1 ] ); - } - break; - } - } - } - } - - // Apply converter (if not an equivalence) - if ( conv !== true ) { - - // Unless errors are allowed to bubble, catch and return them - if ( conv && s.throws ) { - response = conv( response ); - } else { - try { - response = conv( response ); - } catch ( e ) { - return { - state: "parsererror", - error: conv ? e : "No conversion from " + prev + " to " + current - }; - } - } - } - } - } - } - - return { state: "success", data: response }; -} - -jQuery.extend( { - - // Counter for holding the number of active queries - active: 0, - - // Last-Modified header cache for next request - lastModified: {}, - etag: {}, - - ajaxSettings: { - url: location.href, - type: "GET", - isLocal: rlocalProtocol.test( location.protocol ), - global: true, - processData: true, - async: true, - contentType: "application/x-www-form-urlencoded; charset=UTF-8", - - /* - timeout: 0, - data: null, - dataType: null, - username: null, - password: null, - cache: null, - throws: false, - traditional: false, - headers: {}, - */ - - accepts: { - "*": allTypes, - text: "text/plain", - html: "text/html", - xml: "application/xml, text/xml", - json: "application/json, text/javascript" - }, - - contents: { - xml: /\bxml\b/, - html: /\bhtml/, - json: /\bjson\b/ - }, - - responseFields: { - xml: "responseXML", - text: "responseText", - json: "responseJSON" - }, - - // Data converters - // Keys separate source (or catchall "*") and destination types with a single space - converters: { - - // Convert anything to text - "* text": String, - - // Text to html (true = no transformation) - "text html": true, - - // Evaluate text as a json expression - "text json": JSON.parse, - - // Parse text as xml - "text xml": jQuery.parseXML - }, - - // For options that shouldn't be deep extended: - // you can add your own custom options here if - // and when you create one that shouldn't be - // deep extended (see ajaxExtend) - flatOptions: { - url: true, - context: true - } - }, - - // Creates a full fledged settings object into target - // with both ajaxSettings and settings fields. - // If target is omitted, writes into ajaxSettings. - ajaxSetup: function( target, settings ) { - return settings ? - - // Building a settings object - ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : - - // Extending ajaxSettings - ajaxExtend( jQuery.ajaxSettings, target ); - }, - - ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), - ajaxTransport: addToPrefiltersOrTransports( transports ), - - // Main method - ajax: function( url, options ) { - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var transport, - - // URL without anti-cache param - cacheURL, - - // Response headers - responseHeadersString, - responseHeaders, - - // timeout handle - timeoutTimer, - - // Url cleanup var - urlAnchor, - - // Request state (becomes false upon send and true upon completion) - completed, - - // To know if global events are to be dispatched - fireGlobals, - - // Loop variable - i, - - // uncached part of the url - uncached, - - // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - - // Callbacks context - callbackContext = s.context || s, - - // Context for global events is callbackContext if it is a DOM node or jQuery collection - globalEventContext = s.context && - ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, - - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery.Callbacks( "once memory" ), - - // Status-dependent callbacks - statusCode = s.statusCode || {}, - - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - - // Default abort message - strAbort = "canceled", - - // Fake xhr - jqXHR = { - readyState: 0, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( completed ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match == null ? null : match; - }, - - // Raw string - getAllResponseHeaders: function() { - return completed ? responseHeadersString : null; - }, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( completed == null ) { - name = requestHeadersNames[ name.toLowerCase() ] = - requestHeadersNames[ name.toLowerCase() ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( completed == null ) { - s.mimeType = type; - } - return this; - }, - - // Status-dependent callbacks - statusCode: function( map ) { - var code; - if ( map ) { - if ( completed ) { - - // Execute the appropriate callbacks - jqXHR.always( map[ jqXHR.status ] ); - } else { - - // Lazy-add the new callbacks in a way that preserves old ones - for ( code in map ) { - statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; - } - } - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - var finalText = statusText || strAbort; - if ( transport ) { - transport.abort( finalText ); - } - done( 0, finalText ); - return this; - } - }; - - // Attach deferreds - deferred.promise( jqXHR ); - - // Add protocol if not provided (prefilters might expect it) - // Handle falsy url in the settings object (#10093: consistency with old signature) - // We also use the url parameter if available - s.url = ( ( url || s.url || location.href ) + "" ) - .replace( rprotocol, location.protocol + "//" ); - - // Alias method option to type as per ticket #12004 - s.type = options.method || options.type || s.method || s.type; - - // Extract dataTypes list - s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; - - // A cross-domain request is in order when the origin doesn't match the current origin. - if ( s.crossDomain == null ) { - urlAnchor = document.createElement( "a" ); - - // Support: IE <=8 - 11, Edge 12 - 13 - // IE throws exception on accessing the href property if url is malformed, - // e.g. http://example.com:80x/ - try { - urlAnchor.href = s.url; - - // Support: IE <=8 - 11 only - // Anchor's host property isn't correctly set when s.url is relative - urlAnchor.href = urlAnchor.href; - s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== - urlAnchor.protocol + "//" + urlAnchor.host; - } catch ( e ) { - - // If there is an error parsing the URL, assume it is crossDomain, - // it can be rejected by the transport if it is invalid - s.crossDomain = true; - } - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefilter, stop there - if ( completed ) { - return jqXHR; - } - - // We can fire global events as of now if asked to - // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) - fireGlobals = jQuery.event && s.global; - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Save the URL in case we're toying with the If-Modified-Since - // and/or If-None-Match header later on - // Remove hash to simplify url manipulation - cacheURL = s.url.replace( rhash, "" ); - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // Remember the hash so we can put it back - uncached = s.url.slice( cacheURL.length ); - - // If data is available, append data to url - if ( s.data ) { - cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; - - // #9682: remove data so that it's not used in an eventual retry - delete s.data; - } - - // Add or update anti-cache param if needed - if ( s.cache === false ) { - cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; - } - - // Put hash and anti-cache on the URL that will be requested (gh-1732) - s.url = cacheURL + uncached; - - // Change '%20' to '+' if this is encoded form body content (gh-2658) - } else if ( s.data && s.processData && - ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { - s.data = s.data.replace( r20, "+" ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - if ( jQuery.lastModified[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); - } - if ( jQuery.etag[ cacheURL ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? - s.accepts[ s.dataTypes[ 0 ] ] + - ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && - ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { - - // Abort if not done already and return - return jqXHR.abort(); - } - - // Aborting is no longer a cancellation - strAbort = "abort"; - - // Install callbacks on deferreds - completeDeferred.add( s.complete ); - jqXHR.done( s.success ); - jqXHR.fail( s.error ); - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - - // If request was aborted inside ajaxSend, stop there - if ( completed ) { - return jqXHR; - } - - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = window.setTimeout( function() { - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - completed = false; - transport.send( requestHeaders, done ); - } catch ( e ) { - - // Rethrow post-completion exceptions - if ( completed ) { - throw e; - } - - // Propagate others as results - done( -1, e ); - } - } - - // Callback for when everything is done - function done( status, nativeStatusText, responses, headers ) { - var isSuccess, success, error, response, modified, - statusText = nativeStatusText; - - // Ignore repeat invocations - if ( completed ) { - return; - } - - completed = true; - - // Clear timeout if it exists - if ( timeoutTimer ) { - window.clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status > 0 ? 4 : 0; - - // Determine if successful - isSuccess = status >= 200 && status < 300 || status === 304; - - // Get response data - if ( responses ) { - response = ajaxHandleResponses( s, jqXHR, responses ); - } - - // Convert no matter what (that way responseXXX fields are always set) - response = ajaxConvert( s, response, jqXHR, isSuccess ); - - // If successful, handle type chaining - if ( isSuccess ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - modified = jqXHR.getResponseHeader( "Last-Modified" ); - if ( modified ) { - jQuery.lastModified[ cacheURL ] = modified; - } - modified = jqXHR.getResponseHeader( "etag" ); - if ( modified ) { - jQuery.etag[ cacheURL ] = modified; - } - } - - // if no content - if ( status === 204 || s.type === "HEAD" ) { - statusText = "nocontent"; - - // if not modified - } else if ( status === 304 ) { - statusText = "notmodified"; - - // If we have data, let's convert it - } else { - statusText = response.state; - success = response.data; - error = response.error; - isSuccess = !error; - } - } else { - - // Extract error from statusText and normalize for non-aborts - error = statusText; - if ( status || !statusText ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = ( nativeStatusText || statusText ) + ""; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); - - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - return jqXHR; - }, - - getJSON: function( url, data, callback ) { - return jQuery.get( url, data, callback, "json" ); - }, - - getScript: function( url, callback ) { - return jQuery.get( url, undefined, callback, "script" ); - } -} ); - -jQuery.each( [ "get", "post" ], function( i, method ) { - jQuery[ method ] = function( url, data, callback, type ) { - - // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - // The url can be an options object (which then must have .url) - return jQuery.ajax( jQuery.extend( { - url: url, - type: method, - dataType: type, - data: data, - success: callback - }, jQuery.isPlainObject( url ) && url ) ); - }; -} ); - - -jQuery._evalUrl = function( url ) { - return jQuery.ajax( { - url: url, - - // Make this explicit, since user can override this through ajaxSetup (#11264) - type: "GET", - dataType: "script", - cache: true, - async: false, - global: false, - "throws": true - } ); -}; - - -jQuery.fn.extend( { - wrapAll: function( html ) { - var wrap; - - if ( this[ 0 ] ) { - if ( jQuery.isFunction( html ) ) { - html = html.call( this[ 0 ] ); - } - - // The elements to wrap the target around - wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); - - if ( this[ 0 ].parentNode ) { - wrap.insertBefore( this[ 0 ] ); - } - - wrap.map( function() { - var elem = this; - - while ( elem.firstElementChild ) { - elem = elem.firstElementChild; - } - - return elem; - } ).append( this ); - } - - return this; - }, - - wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { - return this.each( function( i ) { - jQuery( this ).wrapInner( html.call( this, i ) ); - } ); - } - - return this.each( function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - } ); - }, - - wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); - - return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); - } ); - }, - - unwrap: function( selector ) { - this.parent( selector ).not( "body" ).each( function() { - jQuery( this ).replaceWith( this.childNodes ); - } ); - return this; - } -} ); - - -jQuery.expr.pseudos.hidden = function( elem ) { - return !jQuery.expr.pseudos.visible( elem ); -}; -jQuery.expr.pseudos.visible = function( elem ) { - return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); -}; - - - - -jQuery.ajaxSettings.xhr = function() { - try { - return new window.XMLHttpRequest(); - } catch ( e ) {} -}; - -var xhrSuccessStatus = { - - // File protocol always yields status code 0, assume 200 - 0: 200, - - // Support: IE <=9 only - // #1450: sometimes IE returns 1223 when it should be 204 - 1223: 204 - }, - xhrSupported = jQuery.ajaxSettings.xhr(); - -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); -support.ajax = xhrSupported = !!xhrSupported; - -jQuery.ajaxTransport( function( options ) { - var callback, errorCallback; - - // Cross domain only allowed if supported through XMLHttpRequest - if ( support.cors || xhrSupported && !options.crossDomain ) { - return { - send: function( headers, complete ) { - var i, - xhr = options.xhr(); - - xhr.open( - options.type, - options.url, - options.async, - options.username, - options.password - ); - - // Apply custom fields if provided - if ( options.xhrFields ) { - for ( i in options.xhrFields ) { - xhr[ i ] = options.xhrFields[ i ]; - } - } - - // Override mime type if needed - if ( options.mimeType && xhr.overrideMimeType ) { - xhr.overrideMimeType( options.mimeType ); - } - - // X-Requested-With header - // For cross-domain requests, seeing as conditions for a preflight are - // akin to a jigsaw puzzle, we simply never set it to be sure. - // (it can always be set on a per-request basis or even using ajaxSetup) - // For same-domain requests, won't change header if already provided. - if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { - headers[ "X-Requested-With" ] = "XMLHttpRequest"; - } - - // Set headers - for ( i in headers ) { - xhr.setRequestHeader( i, headers[ i ] ); - } - - // Callback - callback = function( type ) { - return function() { - if ( callback ) { - callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; - - if ( type === "abort" ) { - xhr.abort(); - } else if ( type === "error" ) { - - // Support: IE <=9 only - // On a manual native abort, IE9 throws - // errors on any property access that is not readyState - if ( typeof xhr.status !== "number" ) { - complete( 0, "error" ); - } else { - complete( - - // File: protocol always yields status 0; see #8605, #14207 - xhr.status, - xhr.statusText - ); - } - } else { - complete( - xhrSuccessStatus[ xhr.status ] || xhr.status, - xhr.statusText, - - // Support: IE <=9 only - // IE9 has no XHR2 but throws on binary (trac-11426) - // For XHR2 non-text, let the caller handle it (gh-2498) - ( xhr.responseType || "text" ) !== "text" || - typeof xhr.responseText !== "string" ? - { binary: xhr.response } : - { text: xhr.responseText }, - xhr.getAllResponseHeaders() - ); - } - } - }; - }; - - // Listen to events - xhr.onload = callback(); - errorCallback = xhr.onerror = callback( "error" ); - - // Support: IE 9 only - // Use onreadystatechange to replace onabort - // to handle uncaught aborts - if ( xhr.onabort !== undefined ) { - xhr.onabort = errorCallback; - } else { - xhr.onreadystatechange = function() { - - // Check readyState before timeout as it changes - if ( xhr.readyState === 4 ) { - - // Allow onerror to be called first, - // but that will not handle a native abort - // Also, save errorCallback to a variable - // as xhr.onerror cannot be accessed - window.setTimeout( function() { - if ( callback ) { - errorCallback(); - } - } ); - } - }; - } - - // Create the abort callback - callback = callback( "abort" ); - - try { - - // Do send the request (this may raise an exception) - xhr.send( options.hasContent && options.data || null ); - } catch ( e ) { - - // #14683: Only rethrow if this hasn't been notified as an error yet - if ( callback ) { - throw e; - } - } - }, - - abort: function() { - if ( callback ) { - callback(); - } - } - }; - } -} ); - - - - -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) -jQuery.ajaxPrefilter( function( s ) { - if ( s.crossDomain ) { - s.contents.script = false; - } -} ); - -// Install script dataType -jQuery.ajaxSetup( { - accepts: { - script: "text/javascript, application/javascript, " + - "application/ecmascript, application/x-ecmascript" - }, - contents: { - script: /\b(?:java|ecma)script\b/ - }, - converters: { - "text script": function( text ) { - jQuery.globalEval( text ); - return text; - } - } -} ); - -// Handle cache's special case and crossDomain -jQuery.ajaxPrefilter( "script", function( s ) { - if ( s.cache === undefined ) { - s.cache = false; - } - if ( s.crossDomain ) { - s.type = "GET"; - } -} ); - -// Bind script tag hack transport -jQuery.ajaxTransport( "script", function( s ) { - - // This transport only deals with cross domain requests - if ( s.crossDomain ) { - var script, callback; - return { - send: function( _, complete ) { - script = jQuery( " - - - - - - - - - - - - -
-
-

- Tracking plastic through the Wadden Sea -

-

- -

-
-

What are the drifters?

- - The drifters are so-called Stokes drifters, built by MetOcean in Canada. They are small, white, floating devices that are designed to follow the water motion in the Wadden Sea. The drifters are equipped with a GPS and a satellite transmitter, so that we can track their position in real time. - -
-

If you found a drifter?

- - If you have found a drifter on the beach, it is important to leave the drifter where it is (do not touch it), as one of the goals of the project is to measure how high tides and storms move the drifters back into the ocean. -

- We would appreciate it if you could send us a photo and information about where you found the drifter, at E.vanSebille@uu.nl. -
-

Live data

- - We deployed the second batch of 12 drifters from just north of Moddergat on 25 April 2024. - Their tracks can be seen in the interactive map below. -

- - -

- - The deployment was at low tide on the mudflats just north of Moddergat, as shown in the photo below (photo by Daan Reijnders). - -

- - -
- -

Tracking the first batch

- - We deployed the first batch of 24 drifters from the R/V Adriaen Coenen on 14 November 2023. - Their tracks can be seen in the interactive map below. -

- - - -
-

Project funding

- - Funding for this project comes from the Pay-it-forward campaign of the Utrecht University Fund, Stichting Pieter Bastiaan, and the project Tracing Marine Macroplastics by Unraveling the Ocean's Multiscale Transport Processes with project number VI.C.222.025 of the research programme Talent Programme Vici 2022 which is financed by the Dutch Research Council (NWO). -
-

Project background

- - The article below (in Dutch), from Noordhollands Dagblad on 22 November 2023, provides some background on the project. Or check out this interview on NPO Radio1's Langs de Lijn en Omstreken (also in Dutch). -

- - - - -