From 86655b2003cb74d38ce137adff0b43c991c5c2cc Mon Sep 17 00:00:00 2001 From: Christian Fetzer Date: Thu, 10 Nov 2022 23:12:45 +0100 Subject: [PATCH] ci: Migrate from Travis CI to GitHub Actions --- .github/workflows/ci.yml | 85 ++++++++++++++ .github/workflows/release.yml | 161 ++++++++++++++++++++++++++ .travis.yml | 16 --- README.md | 2 +- dist/CHANGELOG.md | 114 ------------------ dist/LICENSE | 21 ---- dist/README.md | 24 ---- dist/img/configuration.png | Bin 46871 -> 0 bytes dist/img/logo.png | Bin 24260 -> 0 bytes dist/img/screenshot.png | Bin 103236 -> 0 bytes dist/index.html | 9 -- dist/module.js | 3 - dist/module.js.LICENSE.txt | 1 - dist/module.js.map | 1 - dist/partials/annotations.editor.html | 10 -- dist/plugin.json | 51 -------- 16 files changed, 247 insertions(+), 251 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml delete mode 100644 .travis.yml delete mode 100644 dist/CHANGELOG.md delete mode 100644 dist/LICENSE delete mode 100644 dist/README.md delete mode 100644 dist/img/configuration.png delete mode 100644 dist/img/logo.png delete mode 100644 dist/img/screenshot.png delete mode 100644 dist/index.html delete mode 100644 dist/module.js delete mode 100644 dist/module.js.LICENSE.txt delete mode 100644 dist/module.js.map delete mode 100644 dist/partials/annotations.editor.html delete mode 100644 dist/plugin.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..5961bb3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,85 @@ +name: CI + +on: + push: + branches: + - master + - main + pull_request: + branches: + - master + - main +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: "16.x" + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Cache yarn cache + uses: actions/cache@v3 + id: cache-yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v3 + with: + path: node_modules + key: ${{ runner.os }}-${{ matrix.node-version }}-nodemodules-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.node-version }}-nodemodules- + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build and test frontend + run: yarn build --coverage + + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Run markdownlint + run: yarn run markdownlint + + - name: Check for backend + id: check-for-backend + run: | + if [ -f "Magefile.go" ] + then + echo "has-backend=true" >> $GITHUB_OUTPUT + fi + + - name: Setup Go environment + if: steps.check-for-backend.outputs.has-backend == 'true' + uses: actions/setup-go@v3 + with: + go-version: '1.19' + + - name: Test backend + if: steps.check-for-backend.outputs.has-backend == 'true' + uses: magefile/mage-action@v1 + with: + version: latest + args: coverage + + - name: Build backend + if: steps.check-for-backend.outputs.has-backend == 'true' + uses: magefile/mage-action@v1 + with: + version: latest + args: buildAll diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f8c12b0 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,161 @@ +name: Release + +on: + push: + tags: + - "v*.*.*" # Run workflow on version tags, e.g. v1.0.0. + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: "16.x" + + - name: Setup Go environment + uses: actions/setup-go@v3 + with: + go-version: "1.19" + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Cache yarn cache + uses: actions/cache@v3 + id: cache-yarn-cache + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + - name: Cache node_modules + id: cache-node-modules + uses: actions/cache@v3 + with: + path: node_modules + key: ${{ runner.os }}-${{ matrix.node-version }}-nodemodules-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.node-version }}-nodemodules- + - name: Install dependencies + run: yarn install --frozen-lockfile; + if: | + steps.cache-yarn-cache.outputs.cache-hit != 'true' || + steps.cache-node-modules.outputs.cache-hit != 'true' + + - name: Build and test frontend + run: yarn build + + - name: Check for backend + id: check-for-backend + run: | + if [ -f "Magefile.go" ] + then + echo "has-backend=true" >> $GITHUB_OUTPUT + fi + - name: Test backend + if: steps.check-for-backend.outputs.has-backend == 'true' + uses: magefile/mage-action@v1 + with: + version: latest + args: coverage + + - name: Build backend + if: steps.check-for-backend.outputs.has-backend == 'true' + uses: magefile/mage-action@v1 + with: + version: latest + args: buildAll + + - name: Sign plugin + run: yarn sign + env: + GRAFANA_API_KEY: ${{ secrets.GRAFANA_API_KEY }} # Requires a Grafana API key from Grafana.com. + + - name: Get plugin metadata + id: metadata + run: | + sudo apt-get install jq + + export GRAFANA_PLUGIN_ID=$(cat dist/plugin.json | jq -r .id) + export GRAFANA_PLUGIN_VERSION=$(cat dist/plugin.json | jq -r .info.version) + export GRAFANA_PLUGIN_TYPE=$(cat dist/plugin.json | jq -r .type) + export GRAFANA_PLUGIN_ARTIFACT=${GRAFANA_PLUGIN_ID}-${GRAFANA_PLUGIN_VERSION}.zip + export GRAFANA_PLUGIN_ARTIFACT_CHECKSUM=${GRAFANA_PLUGIN_ARTIFACT}.md5 + + echo "plugin-id=${GRAFANA_PLUGIN_ID}" >> $GITHUB_OUTPUT + echo "plugin-version=${GRAFANA_PLUGIN_VERSION}" >> $GITHUB_OUTPUT + echo "plugin-type=${GRAFANA_PLUGIN_TYPE}" >> $GITHUB_OUTPUT + echo "archive=${GRAFANA_PLUGIN_ARTIFACT}" >> $GITHUB_OUTPUT + echo "archive-checksum=${GRAFANA_PLUGIN_ARTIFACT_CHECKSUM}" >> $GITHUB_OUTPUT + + echo "github-tag=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT + + - name: Read changelog + id: changelog + run: | + awk '/^## / {s++} s == 2 {print}' CHANGELOG.md > release_notes.md + echo "path=release_notes.md" >> $GITHUB_OUTPUT + + - name: Check package version + run: if [ "v${{ steps.metadata.outputs.plugin-version }}" != "${{ steps.metadata.outputs.github-tag }}" ]; then printf "\033[0;31mPlugin version doesn't match tag name\033[0m\n"; exit 1; fi + + - name: Package plugin + id: package-plugin + run: | + mv dist ${{ steps.metadata.outputs.plugin-id }} + zip ${{ steps.metadata.outputs.archive }} ${{ steps.metadata.outputs.plugin-id }} -r + md5sum ${{ steps.metadata.outputs.archive }} > ${{ steps.metadata.outputs.archive-checksum }} + echo "checksum=$(cat ./${{ steps.metadata.outputs.archive-checksum }} | cut -d' ' -f1)" >> $GITHUB_OUTPUT + + - name: Lint plugin + run: | + git clone https://github.com/grafana/plugin-validator + pushd ./plugin-validator/pkg/cmd/plugincheck2 + go install + popd + plugincheck2 -config ./plugin-validator/config/publishing.yaml ${{ steps.metadata.outputs.archive }} + + - name: Create release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + body_path: ${{ steps.changelog.outputs.path }} + draft: true + + - name: Add plugin to release + id: upload-plugin-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./${{ steps.metadata.outputs.archive }} + asset_name: ${{ steps.metadata.outputs.archive }} + asset_content_type: application/zip + + - name: Add checksum to release + id: upload-checksum-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./${{ steps.metadata.outputs.archive-checksum }} + asset_name: ${{ steps.metadata.outputs.archive-checksum }} + asset_content_type: text/plain + + - name: Publish to Grafana.com + run: | + echo A draft release has been created for your plugin. Please review and publish it. Then submit your plugin to grafana.com/plugins by opening a PR to https://github.com/grafana/grafana-plugin-repository with the following entry: + echo + echo '{ "id": "${{ steps.metadata.outputs.plugin-id }}", "type": "${{ steps.metadata.outputs.plugin-type }}", "url": "https://github.com/${{ github.repository }}", "versions": [ { "version": "${{ steps.metadata.outputs.plugin-version }}", "commit": "${{ github.sha }}", "url": "https://github.com/${{ github.repository }}", "download": { "any": { "url": "https://github.com/${{ github.repository }}/releases/download/v${{ steps.metadata.outputs.plugin-version }}/${{ steps.metadata.outputs.archive }}", "md5": "${{ steps.package-plugin.outputs.checksum }}" } } } ] }' | jq . diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5b3ebb0..0000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -language: node_js -node_js: - - "14" -before_script: - - npm install -script: - - yarn run dev - - yarn run build --coverage - - yarn run markdownlint - # Make sure build output has been committed. - - git status --porcelain || (echo "Repo is dirty"; git diff; false) -after_success: - - npm add coveralls - - cat coverage/lcov.info | node_modules/coveralls/bin/coveralls.js -cache: - - npm diff --git a/README.md b/README.md index 3801e22..36b716f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/fetzerch/grafana-sunandmoon-datasource.svg?branch=master)](https://travis-ci.org/fetzerch/grafana-sunandmoon-datasource) +[![Build Status](https://github.com/fetzerch/grafana-sunandmoon-datasource/actions/workflows/ci.yml/badge.svg)](https://github.com/fetzerch/grafana-sunandmoon-datasource/actions/workflows/ci.yml) [![Coverage Status](https://coveralls.io/repos/github/fetzerch/grafana-sunandmoon-datasource/badge.svg)](https://coveralls.io/github/fetzerch/grafana-sunandmoon-datasource) # Sun and Moon Datasource Plugin for Grafana diff --git a/dist/CHANGELOG.md b/dist/CHANGELOG.md deleted file mode 100644 index 12b8e2c..0000000 --- a/dist/CHANGELOG.md +++ /dev/null @@ -1,114 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## [0.3.0] - 2022-11-07 - -### Fixed - -- Noon and Midnight notifications did not show correct values for non default - timezones. -- The 'Min interval' query option was not taken into account. - -### Added - -- Events / annotations can be queried as metrics. This allows to visualize for - example today's sunrise/sunset time on dashboards. -- Dashboard options such as units are automatically set. - -### Changed - -- The annotations were migrated to the new react based plugin framework - introduced in Grafana 7.2 and the plugin is no longer compatible with older - versions of Grafana. -- A single query now supports multiple metrics. - -## [0.2.1] - 2020-11-27 - -### Added - -- Allow per query override of location. ([#35](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/35), - [#5](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/5)) - -## [0.2.0] - 2020-11-20 - -### Fixed - -- Glitches in graphs caused by out of order data. ([#29](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/29), - [grafana/#28804](https://github.com/grafana/grafana/issues/28804)) -- Annotations are no longer shown. ([#31](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/31)) -- A metric is now preselected when using the datasource on a new panel. - -### Added - -- Location is now automatically configured. - -### Changed - -- The plugin was migrated to the new plugin framework introduced in Grafana - 7.0 and is no longer compatible with older versions of Grafana. - -## [0.1.6] - 2020-05-24 - -### Fixed - -- Compatibility with Grafana 7.0. - -## [0.1.5] - 2019-08-01 - -### Fixed - -- Annotations were incorrectly tagged with a single tag per character - (e.g. `s`, `u`, `n` instead of `sun`). ([grafana/#15987](https://github.com/grafana/grafana/pull/15987)) -- Compatibility with Grafana v3. -- Compatibility with Grafana v6.3. - -## [0.1.4] - 2019-03-08 - -### Added - -- Support [datasource provisioning](https://docs.grafana.org/administration/provisioning/#datasources). - ([#11](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/11)) -- Annotations for noon and midnight. ([#3](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/3)) - -## [0.1.3] - 2019-02-24 - -### Fixed - -- Update [SunCalc](https://github.com/mourner/suncalc#changelog) dependency to - 1.8.0 with improved precision for moonrise/moonset calculations. ([#8](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/8)) -- Update build dependencies to the latest versions. ([#12](https://github.com/fetzerch/grafana-sunandmoon-datasource/pull/12)) - -## [0.1.2] - 2016-12-12 - -### Fixed - -- Compatibility with Grafana 4.0. ([#6](https://github.com/fetzerch/grafana-sunandmoon-datasource/issues/6)) - -## [0.1.1] - 2016-07-01 - -### Fixed - -- Only the first of multiple configured annotations was displayed. ([#2](https://github.com/fetzerch/grafana-sunandmoon-datasource/pull/2)) - -## [0.1.0] - 2016-06-27 - -### Added - -- Initial version with sun and moon calculation and annotations. - -[Unreleased]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.2.1...HEAD -[0.2.1]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.1.6...v0.2.0 -[0.1.6]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.1.5...v0.1.6 -[0.1.5]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.1.4...v0.1.5 -[0.1.4]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.1.3...v0.1.4 -[0.1.3]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.1.2...v0.1.3 -[0.1.2]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.1.1...v0.1.2 -[0.1.1]: https://github.com/fetzerch/grafana-sunandmoon-datasource/compare/v0.1.0...v0.1.1 -[0.1.0]: https://github.com/fetzerch/grafana-sunandmoon-datasource/commits/v0.1.0 diff --git a/dist/LICENSE b/dist/LICENSE deleted file mode 100644 index a7a2ead..0000000 --- a/dist/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Christian Fetzer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/dist/README.md b/dist/README.md deleted file mode 100644 index 3801e22..0000000 --- a/dist/README.md +++ /dev/null @@ -1,24 +0,0 @@ -[![Build Status](https://travis-ci.org/fetzerch/grafana-sunandmoon-datasource.svg?branch=master)](https://travis-ci.org/fetzerch/grafana-sunandmoon-datasource) -[![Coverage Status](https://coveralls.io/repos/github/fetzerch/grafana-sunandmoon-datasource/badge.svg)](https://coveralls.io/github/fetzerch/grafana-sunandmoon-datasource) - -# Sun and Moon Datasource Plugin for Grafana - -SunAndMoon is a Datasource Plugin for [Grafana](https://grafana.org) that -calculates the position of Sun and Moon as well as the Moon illumination using -[SunCalc](https://github.com/mourner/suncalc). - -Additionally it provides annotations for sunrise, sunset, twilight, -moonrise, moonset and others. - -![SunAndMoon](https://raw.githubusercontent.com/fetzerch/grafana-sunandmoon-datasource/master/src/img/screenshot.png) - -## Configuration - -All values are location dependent, the reference location needs to be -configured in the datasource settings. - -![SunAndMoon Configuration](https://raw.githubusercontent.com/fetzerch/grafana-sunandmoon-datasource/master/src/img/configuration.png) - -## License - -This projected is licensed under the terms of the MIT license. diff --git a/dist/img/configuration.png b/dist/img/configuration.png deleted file mode 100644 index 3cd2e61ad5ebdf9a887720999db963e8d4a2b0e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46871 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 X1|qo&FvE9@mYB5E^i<29SikvS+%UDT diff --git a/dist/img/logo.png b/dist/img/logo.png deleted file mode 100644 index 58a11eefafb8469961b535f0a19caa123aad9180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24260 zcmY&L_c)4*C?O~P?LqJ-T+!)P94SdrzdejJ| zYfQS~yU*{x-yiq6_jTi(bD!tbb0X@Uo(AT0Lj)7j@}_IU8Rg^=C6x#@a?jO^0@Z{7nEN$=N5!>4?5 z(il!d8kpt&zpMZE_+5mmDp^CD(Y|`ox9CSJboYDw${3{g`AdIsT{l>-w~CbPo3}dk zR~P~U0Dh^6zUBkhq*OTI3ig(B1;-WPMZaMln@@gmM|{5`ZL64L$uQBp)*uJ5iEu4; zMYy(v=i?_AC8-p*k#1_?V4G`1W0p~poYtX_84YBu6GPR984d1WFiApc;;^BIw`@}xEa3x(y6-m9rudd0$G-fi%w92cl4h-c+{hQjb~$u_45^#O?}ASL^)?-FO#I+||_@ zZhp8J_Vv0a>vCBpm@i!KE*TkXXTSsou!TSwgBGd#sW39}lL*O!mx5ZJRE!Y{E&9Kg z+;dygP3NpJEN8y(W5BOY>N#=C1k$41>SFvc{owS@e6#e?>Nv1XM9eLggEJv7z3aP~ zNPv3e(*DJBb))sQx~A)6cid|n5bg`G(fGqlp+-R#`Cy{oT7Q;H*octrTb-_VMB{&P zA<@-i(o#VM4TM3B=%WgnCI_z;P{V_aj4e;W--E?;S=1;#&9<#JfCgbra(7xxSm!nJ z61yj*m#sGI;Dg62)(qY)76}b~AvS0xE3-AX&({`~8YqVHu=>;Umx^9ldh6eoPY#de z%w{dmnc!;xNMzR6?%^9`)l_UVsM~Js0DNQ?1(EslvE<9;-JvKT4;X<3mH0PEPgl!@ zx4`40O#L3xYFU$q&(CIE4m_xE6ga~dyiAkgs!U1mbco#ycp^^4PWDvIWrdpb3+*)% zY(&PSV^jxQH8vuIW3Ry`fG1{C4s*Vu8z=<)E!B4X1GHtW580D)uufiP#z(f%z%|xM z6YIdS6$$)}inwkJW?hJ3SrUZC)EAZTmbM%&OlJC{Al=oi`}2~)6aTR_#(kgq(yn_k znM)u1`F-NTwWYB2U6PbIu%g~$P4e(B&vN0M$tUV&DkmdZ$Hq`tN%uJsI}oxcf$X{| z5;NlF9Sr`(hr0by4Qj;o^@7^MX!Q?>=VFKi;*~^I!>lf#l?k2dvh*k<7+YdLn->lA zlN@7{lOPoJ9BAfPV+dr-f2f0j3n{cU)H_v{)Vw4yHRxPbL%$;+W^l)ghM$qo(I5jU zXT`o_eo#;LK|!f)<|NzI!rWy8T9Qsa8pt$Koy1mgta_!yHYclds8h7?!*-qQ0gt

1@m{iFQD1 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 )qD*Zi=Al+flazMU6s%>tCb{!D;omh& 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"*!*XE27x*HczdG>yC3flIu1tJo|Hb7 zJi z*wH9<&>-FeyLwATT6O;NR7U!^$rO{BUu7D!DFM3WK0$6e13HXZml75+HgvfxAwpIW zfa;SmvP~993O2pkaPLuLLJt*Wo}W*Ze+l4wGU`t0s)TIW^h5w^$vSRrE^F=DMy=v~; zcm^5S|0${pFCCwfedAV9VRFY=8sz5=TPpVY@7sEK8&CE%^&tPwXn3{?Ho3 - - - - Webpack App - - - - \ No newline at end of file diff --git a/dist/module.js b/dist/module.js deleted file mode 100644 index a05d926..0000000 --- a/dist/module.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see module.js.LICENSE.txt */ -define(["@grafana/data","@grafana/runtime","@grafana/ui","react"],((t,e,r,n)=>(()=>{var o=[(t,e,r)=>{var n=r(24),o="object"==typeof self&&self&&self.Object===Object&&self,a=n||o||Function("return this")();t.exports=a},t=>{var e=Array.isArray;t.exports=e},(t,e,r)=>{var n=r(51),o=r(56);t.exports=function(t,e){var r=o(t,e);return n(r)?r:void 0}},(t,e,r)=>{var n=r(7),o=r(52),a=r(53),i=n?n.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":i&&i in Object(t)?o(t):a(t)}},t=>{t.exports=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},(t,e,r)=>{var n=r(23),o=r(15);t.exports=function(t){return null!=t&&o(t.length)&&!n(t)}},t=>{t.exports=function(t){return null!=t&&"object"==typeof t}},(t,e,r)=>{var n=r(0).Symbol;t.exports=n},t=>{t.exports=function(t,e){return t===e||t!=t&&e!=e}},(t,e,r)=>{var n=r(71),o=r(72),a=r(73),i=r(74),u=r(75);function c(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(8);t.exports=function(t,e){for(var r=t.length;r--;)if(n(t[r][0],e))return r;return-1}},(t,e,r)=>{var n=r(2)(Object,"create");t.exports=n},(t,e,r)=>{var n=r(89);t.exports=function(t,e){var r=t.__data__;return n(e)?r["string"==typeof e?"string":"hash"]:r.map}},(t,e,r)=>{var n=r(21);t.exports=function(t){if("string"==typeof t||n(t))return t;var e=t+"";return"0"==e&&1/t==-Infinity?"-0":e}},t=>{t.exports=function(t){return t}},t=>{t.exports=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},t=>{var e=/^(?:0|[1-9]\d*)$/;t.exports=function(t,r){var n=typeof t;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&e.test(t))&&t>-1&&t%1==0&&t{var n=r(2)(r(0),"Map");t.exports=n},(t,e,r)=>{var n=r(81),o=r(88),a=r(90),i=r(91),u=r(92);function c(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(26),o=r(110),a=r(5);t.exports=function(t){return a(t)?n(t):o(t)}},(t,e,r)=>{var n=r(1),o=r(21),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;t.exports=function(t,e){if(n(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!o(t))||(i.test(t)||!a.test(t)||null!=e&&t in Object(e))}},(t,e,r)=>{var n=r(3),o=r(6);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==n(t)}},(t,e,r)=>{t=r.nmd(t);var n=r(0),o=r(62),a=e&&!e.nodeType&&e,i=a&&t&&!t.nodeType&&t,u=i&&i.exports===a?n.Buffer:void 0,c=(u?u.isBuffer:void 0)||o;t.exports=c},(t,e,r)=>{var n=r(3),o=r(4);t.exports=function(t){if(!o(t))return!1;var e=n(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},(t,e,r)=>{var n="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;t.exports=n},t=>{var e=Function.prototype.toString;t.exports=function(t){if(null!=t){try{return e.call(t)}catch(t){}try{return t+""}catch(t){}}return""}},(t,e,r)=>{var n=r(60),o=r(27),a=r(1),i=r(22),u=r(16),c=r(28),s=Object.prototype.hasOwnProperty;t.exports=function(t,e){var r=a(t),l=!r&&o(t),f=!r&&!l&&i(t),p=!r&&!l&&!f&&c(t),h=r||l||f||p,d=h?n(t.length,String):[],v=d.length;for(var g in t)!e&&!s.call(t,g)||h&&("length"==g||f&&("offset"==g||"parent"==g)||p&&("buffer"==g||"byteLength"==g||"byteOffset"==g)||u(g,v))||d.push(g);return d}},(t,e,r)=>{var n=r(61),o=r(6),a=Object.prototype,i=a.hasOwnProperty,u=a.propertyIsEnumerable,c=n(function(){return arguments}())?n:function(t){return o(t)&&i.call(t,"callee")&&!u.call(t,"callee")};t.exports=c},(t,e,r)=>{var n=r(63),o=r(64),a=r(38),i=a&&a.isTypedArray,u=i?o(i):n;t.exports=u},t=>{var e=Object.prototype;t.exports=function(t){var r=t&&t.constructor;return t===("function"==typeof r&&r.prototype||e)}},t=>{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,o=Array(n);++r{var n=r(9),o=r(76),a=r(77),i=r(78),u=r(79),c=r(80);function s(t){var e=this.__data__=new n(t);this.size=e.size}s.prototype.clear=o,s.prototype.delete=a,s.prototype.get=i,s.prototype.has=u,s.prototype.set=c,t.exports=s},(t,e,r)=>{var n=r(93),o=r(6);t.exports=function t(e,r,a,i,u){return e===r||(null==e||null==r||!o(e)&&!o(r)?e!=e&&r!=r:n(e,r,a,i,t,u))}},(t,e,r)=>{var n=r(94),o=r(97),a=r(98);t.exports=function(t,e,r,i,u,c){var s=1&r,l=t.length,f=e.length;if(l!=f&&!(s&&f>l))return!1;var p=c.get(t),h=c.get(e);if(p&&h)return p==e&&h==t;var d=-1,v=!0,g=2&r?new n:void 0;for(c.set(t,e),c.set(e,t);++d{var n=r(4);t.exports=function(t){return t==t&&!n(t)}},t=>{t.exports=function(t,e){return function(r){return null!=r&&(r[t]===e&&(void 0!==e||t in Object(r)))}}},(t,e,r)=>{var n=r(37),o=r(13);t.exports=function(t,e){for(var r=0,a=(e=n(e,t)).length;null!=t&&r{var n=r(1),o=r(20),a=r(121),i=r(124);t.exports=function(t,e){return n(t)?t:o(t,e)?[t]:a(i(t))}},(t,e,r)=>{t=r.nmd(t);var n=r(24),o=e&&!e.nodeType&&e,a=o&&t&&!t.nodeType&&t,i=a&&a.exports===o&&n.process,u=function(){try{var t=a&&a.require&&a.require("util").types;return t||i&&i.binding&&i.binding("util")}catch(t){}}();t.exports=u},e=>{"use strict";e.exports=t},t=>{!function(){"use strict";var e=Math.PI,r=Math.sin,n=Math.cos,o=Math.tan,a=Math.asin,i=Math.atan2,u=Math.acos,c=e/180,s=864e5,l=2440588,f=2451545;function p(t){return new Date((t+.5-l)*s)}function h(t){return function(t){return t.valueOf()/s-.5+l}(t)-f}var d=23.4397*c;function v(t,e){return i(r(t)*n(d)-o(e)*r(d),n(t))}function g(t,e){return a(r(e)*n(d)+n(e)*r(d)*r(t))}function y(t,e,a){return i(r(t),n(t)*r(e)-o(a)*n(e))}function b(t,e,o){return a(r(e)*r(o)+n(e)*n(o)*n(t))}function m(t,e){return c*(280.16+360.9856235*t)-e}function x(t){return c*(357.5291+.98560028*t)}function w(t){return t+c*(1.9148*r(t)+.02*r(2*t)+3e-4*r(3*t))+102.9372*c+e}function _(t){var e=w(x(t));return{dec:g(e,0),ra:v(e,0)}}var j={getPosition:function(t,e,r){var n=c*-r,o=c*e,a=h(t),i=_(a),u=m(a,n)-i.ra;return{azimuth:y(u,o,i.dec),altitude:b(u,o,i.dec)}}},O=j.times=[[-.833,"sunrise","sunset"],[-.3,"sunriseEnd","sunsetStart"],[-6,"dawn","dusk"],[-12,"nauticalDawn","nauticalDusk"],[-18,"nightEnd","night"],[6,"goldenHourEnd","goldenHour"]];j.addTime=function(t,e,r){O.push([t,e,r])};var k=9e-4;function P(t,r,n){return k+(t+r)/(2*e)+n}function E(t,e,n){return f+t+.0053*r(e)-.0069*r(2*n)}function S(t,e,o,a,i,c,s){var l=function(t,e,o){return u((r(t)-r(e)*r(o))/(n(e)*n(o)))}(t,o,a);return E(P(l,e,i),c,s)}function T(t){var e=c*(134.963+13.064993*t),o=c*(93.272+13.22935*t),a=c*(218.316+13.176396*t)+6.289*c*r(e),i=5.128*c*r(o),u=385001-20905*n(e);return{ra:v(a,i),dec:g(a,i),dist:u}}function D(t,e){return new Date(t.valueOf()+e*s/24)}j.getTimes=function(t,r,n,o){var a,i,u,s,l,f=c*-n,d=c*r,v=function(t){return-2.076*Math.sqrt(t)/60}(o=o||0),y=function(t,r){return Math.round(t-k-r/(2*e))}(h(t),f),b=P(0,f,y),m=x(b),_=w(m),j=g(_,0),T=E(b,m,_),D={solarNoon:p(T),nadir:p(T-.5)};for(a=0,i=O.length;a=0&&(g=p-(b=Math.sqrt(d)/(2*Math.abs(l))),y=p+b,Math.abs(g)<=1&&v++,Math.abs(y)<=1&&v++,g<-1&&(g=y)),1===v?x<0?u=w+g:s=w+g:2===v&&(u=w+(h<0?y:g),s=w+(h<0?g:y)),!u||!s);w+=2)x=i;var _={};return u&&(_.rise=D(o,u)),s&&(_.set=D(o,s)),u||s||(_[h>0?"alwaysUp":"alwaysDown"]=!0),_},t.exports=j}()},t=>{"use strict";t.exports=n},t=>{"use strict";t.exports=r},(t,e,r)=>{var n=r(44),o=r(8),a=r(58),i=r(59),u=Object.prototype,c=u.hasOwnProperty,s=n((function(t,e){t=Object(t);var r=-1,n=e.length,s=n>2?e[2]:void 0;for(s&&a(e[0],e[1],s)&&(n=1);++r{var n=r(14),o=r(45),a=r(47);t.exports=function(t,e){return a(o(t,e,n),t+"")}},(t,e,r)=>{var n=r(46),o=Math.max;t.exports=function(t,e,r){return e=o(void 0===e?t.length-1:e,0),function(){for(var a=arguments,i=-1,u=o(a.length-e,0),c=Array(u);++i{t.exports=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}},(t,e,r)=>{var n=r(48),o=r(57)(n);t.exports=o},(t,e,r)=>{var n=r(49),o=r(50),a=r(14),i=o?function(t,e){return o(t,"toString",{configurable:!0,enumerable:!1,value:n(e),writable:!0})}:a;t.exports=i},t=>{t.exports=function(t){return function(){return t}}},(t,e,r)=>{var n=r(2),o=function(){try{var t=n(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();t.exports=o},(t,e,r)=>{var n=r(23),o=r(54),a=r(4),i=r(25),u=/^\[object .+?Constructor\]$/,c=Function.prototype,s=Object.prototype,l=c.toString,f=s.hasOwnProperty,p=RegExp("^"+l.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!a(t)||o(t))&&(n(t)?p:u).test(i(t))}},(t,e,r)=>{var n=r(7),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,u=n?n.toStringTag:void 0;t.exports=function(t){var e=a.call(t,u),r=t[u];try{t[u]=void 0;var n=!0}catch(t){}var o=i.call(t);return n&&(e?t[u]=r:delete t[u]),o}},t=>{var e=Object.prototype.toString;t.exports=function(t){return e.call(t)}},(t,e,r)=>{var n,o=r(55),a=(n=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";t.exports=function(t){return!!a&&a in t}},(t,e,r)=>{var n=r(0)["__core-js_shared__"];t.exports=n},t=>{t.exports=function(t,e){return null==t?void 0:t[e]}},t=>{var e=Date.now;t.exports=function(t){var r=0,n=0;return function(){var o=e(),a=16-(o-n);if(n=o,a>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}},(t,e,r)=>{var n=r(8),o=r(5),a=r(16),i=r(4);t.exports=function(t,e,r){if(!i(r))return!1;var u=typeof e;return!!("number"==u?o(r)&&a(e,r.length):"string"==u&&e in r)&&n(r[e],t)}},(t,e,r)=>{var n=r(26),o=r(65),a=r(5);t.exports=function(t){return a(t)?n(t,!0):o(t)}},t=>{t.exports=function(t,e){for(var r=-1,n=Array(t);++r{var n=r(3),o=r(6);t.exports=function(t){return o(t)&&"[object Arguments]"==n(t)}},t=>{t.exports=function(){return!1}},(t,e,r)=>{var n=r(3),o=r(15),a=r(6),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,t.exports=function(t){return a(t)&&o(t.length)&&!!i[n(t)]}},t=>{t.exports=function(t){return function(e){return t(e)}}},(t,e,r)=>{var n=r(4),o=r(29),a=r(66),i=Object.prototype.hasOwnProperty;t.exports=function(t){if(!n(t))return a(t);var e=o(t),r=[];for(var u in t)("constructor"!=u||!e&&i.call(t,u))&&r.push(u);return r}},t=>{t.exports=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e}},(t,e,r)=>{var n=r(30),o=r(68),a=r(132),i=r(1);t.exports=function(t,e){return(i(t)?n:a)(t,o(e,3))}},(t,e,r)=>{var n=r(69),o=r(119),a=r(14),i=r(1),u=r(129);t.exports=function(t){return"function"==typeof t?t:null==t?a:"object"==typeof t?i(t)?o(t[0],t[1]):n(t):u(t)}},(t,e,r)=>{var n=r(70),o=r(118),a=r(35);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?a(e[0][0],e[0][1]):function(r){return r===t||n(r,t,e)}}},(t,e,r)=>{var n=r(31),o=r(32);t.exports=function(t,e,r,a){var i=r.length,u=i,c=!a;if(null==t)return!u;for(t=Object(t);i--;){var s=r[i];if(c&&s[2]?s[1]!==t[s[0]]:!(s[0]in t))return!1}for(;++i{t.exports=function(){this.__data__=[],this.size=0}},(t,e,r)=>{var n=r(10),o=Array.prototype.splice;t.exports=function(t){var e=this.__data__,r=n(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)}},(t,e,r)=>{var n=r(10);t.exports=function(t){var e=this.__data__,r=n(e,t);return r<0?void 0:e[r][1]}},(t,e,r)=>{var n=r(10);t.exports=function(t){return n(this.__data__,t)>-1}},(t,e,r)=>{var n=r(10);t.exports=function(t,e){var r=this.__data__,o=n(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}},(t,e,r)=>{var n=r(9);t.exports=function(){this.__data__=new n,this.size=0}},t=>{t.exports=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}},t=>{t.exports=function(t){return this.__data__.get(t)}},t=>{t.exports=function(t){return this.__data__.has(t)}},(t,e,r)=>{var n=r(9),o=r(17),a=r(18);t.exports=function(t,e){var r=this.__data__;if(r instanceof n){var i=r.__data__;if(!o||i.length<199)return i.push([t,e]),this.size=++r.size,this;r=this.__data__=new a(i)}return r.set(t,e),this.size=r.size,this}},(t,e,r)=>{var n=r(82),o=r(9),a=r(17);t.exports=function(){this.size=0,this.__data__={hash:new n,map:new(a||o),string:new n}}},(t,e,r)=>{var n=r(83),o=r(84),a=r(85),i=r(86),u=r(87);function c(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{var n=r(11);t.exports=function(){this.__data__=n?n(null):{},this.size=0}},t=>{t.exports=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}},(t,e,r)=>{var n=r(11),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;if(n){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0}},(t,e,r)=>{var n=r(11),o=Object.prototype.hasOwnProperty;t.exports=function(t){var e=this.__data__;return n?void 0!==e[t]:o.call(e,t)}},(t,e,r)=>{var n=r(11);t.exports=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=n&&void 0===e?"__lodash_hash_undefined__":e,this}},(t,e,r)=>{var n=r(12);t.exports=function(t){var e=n(this,t).delete(t);return this.size-=e?1:0,e}},t=>{t.exports=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t}},(t,e,r)=>{var n=r(12);t.exports=function(t){return n(this,t).get(t)}},(t,e,r)=>{var n=r(12);t.exports=function(t){return n(this,t).has(t)}},(t,e,r)=>{var n=r(12);t.exports=function(t,e){var r=n(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}},(t,e,r)=>{var n=r(31),o=r(33),a=r(99),i=r(103),u=r(113),c=r(1),s=r(22),l=r(28),f="[object Arguments]",p="[object Array]",h="[object Object]",d=Object.prototype.hasOwnProperty;t.exports=function(t,e,r,v,g,y){var b=c(t),m=c(e),x=b?p:u(t),w=m?p:u(e),_=(x=x==f?h:x)==h,j=(w=w==f?h:w)==h,O=x==w;if(O&&s(t)){if(!s(e))return!1;b=!0,_=!1}if(O&&!_)return y||(y=new n),b||l(t)?o(t,e,r,v,g,y):a(t,e,x,r,v,g,y);if(!(1&r)){var k=_&&d.call(t,"__wrapped__"),P=j&&d.call(e,"__wrapped__");if(k||P){var E=k?t.value():t,S=P?e.value():e;return y||(y=new n),g(E,S,r,v,y)}}return!!O&&(y||(y=new n),i(t,e,r,v,g,y))}},(t,e,r)=>{var n=r(18),o=r(95),a=r(96);function i(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new n;++e{t.exports=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this}},t=>{t.exports=function(t){return this.__data__.has(t)}},t=>{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length;++r{t.exports=function(t,e){return t.has(e)}},(t,e,r)=>{var n=r(7),o=r(100),a=r(8),i=r(33),u=r(101),c=r(102),s=n?n.prototype:void 0,l=s?s.valueOf:void 0;t.exports=function(t,e,r,n,s,f,p){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!f(new o(t),new o(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var h=u;case"[object Set]":var d=1&n;if(h||(h=c),t.size!=e.size&&!d)return!1;var v=p.get(t);if(v)return v==e;n|=2,p.set(t,e);var g=i(h(t),h(e),n,s,f,p);return p.delete(t),g;case"[object Symbol]":if(l)return l.call(t)==l.call(e)}return!1}},(t,e,r)=>{var n=r(0).Uint8Array;t.exports=n},t=>{t.exports=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t,n){r[++e]=[n,t]})),r}},t=>{t.exports=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r}},(t,e,r)=>{var n=r(104),o=Object.prototype.hasOwnProperty;t.exports=function(t,e,r,a,i,u){var c=1&r,s=n(t),l=s.length;if(l!=n(e).length&&!c)return!1;for(var f=l;f--;){var p=s[f];if(!(c?p in e:o.call(e,p)))return!1}var h=u.get(t),d=u.get(e);if(h&&d)return h==e&&d==t;var v=!0;u.set(t,e),u.set(e,t);for(var g=c;++f{var n=r(105),o=r(107),a=r(19);t.exports=function(t){return n(t,a,o)}},(t,e,r)=>{var n=r(106),o=r(1);t.exports=function(t,e,r){var a=e(t);return o(t)?a:n(a,r(t))}},t=>{t.exports=function(t,e){for(var r=-1,n=e.length,o=t.length;++r{var n=r(108),o=r(109),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,u=i?function(t){return null==t?[]:(t=Object(t),n(i(t),(function(e){return a.call(t,e)})))}:o;t.exports=u},t=>{t.exports=function(t,e){for(var r=-1,n=null==t?0:t.length,o=0,a=[];++r{t.exports=function(){return[]}},(t,e,r)=>{var n=r(29),o=r(111),a=Object.prototype.hasOwnProperty;t.exports=function(t){if(!n(t))return o(t);var e=[];for(var r in Object(t))a.call(t,r)&&"constructor"!=r&&e.push(r);return e}},(t,e,r)=>{var n=r(112)(Object.keys,Object);t.exports=n},t=>{t.exports=function(t,e){return function(r){return t(e(r))}}},(t,e,r)=>{var n=r(114),o=r(17),a=r(115),i=r(116),u=r(117),c=r(3),s=r(25),l="[object Map]",f="[object Promise]",p="[object Set]",h="[object WeakMap]",d="[object DataView]",v=s(n),g=s(o),y=s(a),b=s(i),m=s(u),x=c;(n&&x(new n(new ArrayBuffer(1)))!=d||o&&x(new o)!=l||a&&x(a.resolve())!=f||i&&x(new i)!=p||u&&x(new u)!=h)&&(x=function(t){var e=c(t),r="[object Object]"==e?t.constructor:void 0,n=r?s(r):"";if(n)switch(n){case v:return d;case g:return l;case y:return f;case b:return p;case m:return h}return e}),t.exports=x},(t,e,r)=>{var n=r(2)(r(0),"DataView");t.exports=n},(t,e,r)=>{var n=r(2)(r(0),"Promise");t.exports=n},(t,e,r)=>{var n=r(2)(r(0),"Set");t.exports=n},(t,e,r)=>{var n=r(2)(r(0),"WeakMap");t.exports=n},(t,e,r)=>{var n=r(34),o=r(19);t.exports=function(t){for(var e=o(t),r=e.length;r--;){var a=e[r],i=t[a];e[r]=[a,i,n(i)]}return e}},(t,e,r)=>{var n=r(32),o=r(120),a=r(126),i=r(20),u=r(34),c=r(35),s=r(13);t.exports=function(t,e){return i(t)&&u(e)?c(s(t),e):function(r){var i=o(r,t);return void 0===i&&i===e?a(r,t):n(e,i,3)}}},(t,e,r)=>{var n=r(36);t.exports=function(t,e,r){var o=null==t?void 0:n(t,e);return void 0===o?r:o}},(t,e,r)=>{var n=r(122),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,i=n((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(o,(function(t,r,n,o){e.push(n?o.replace(a,"$1"):r||t)})),e}));t.exports=i},(t,e,r)=>{var n=r(123);t.exports=function(t){var e=n(t,(function(t){return 500===r.size&&r.clear(),t})),r=e.cache;return e}},(t,e,r)=>{var n=r(18);function o(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var r=function(){var n=arguments,o=e?e.apply(this,n):n[0],a=r.cache;if(a.has(o))return a.get(o);var i=t.apply(this,n);return r.cache=a.set(o,i)||a,i};return r.cache=new(o.Cache||n),r}o.Cache=n,t.exports=o},(t,e,r)=>{var n=r(125);t.exports=function(t){return null==t?"":n(t)}},(t,e,r)=>{var n=r(7),o=r(30),a=r(1),i=r(21),u=n?n.prototype:void 0,c=u?u.toString:void 0;t.exports=function t(e){if("string"==typeof e)return e;if(a(e))return o(e,t)+"";if(i(e))return c?c.call(e):"";var r=e+"";return"0"==r&&1/e==-Infinity?"-0":r}},(t,e,r)=>{var n=r(127),o=r(128);t.exports=function(t,e){return null!=t&&o(t,e,n)}},t=>{t.exports=function(t,e){return null!=t&&e in Object(t)}},(t,e,r)=>{var n=r(37),o=r(27),a=r(1),i=r(16),u=r(15),c=r(13);t.exports=function(t,e,r){for(var s=-1,l=(e=n(e,t)).length,f=!1;++s{var n=r(130),o=r(131),a=r(20),i=r(13);t.exports=function(t){return a(t)?n(i(t)):o(t)}},t=>{t.exports=function(t){return function(e){return null==e?void 0:e[t]}}},(t,e,r)=>{var n=r(36);t.exports=function(t){return function(e){return n(e,t)}}},(t,e,r)=>{var n=r(133),o=r(5);t.exports=function(t,e){var r=-1,a=o(t)?Array(t.length):[];return n(t,(function(t,n,o){a[++r]=e(t,n,o)})),a}},(t,e,r)=>{var n=r(134),o=r(137)(n);t.exports=o},(t,e,r)=>{var n=r(135),o=r(19);t.exports=function(t,e){return t&&n(t,e,o)}},(t,e,r)=>{var n=r(136)();t.exports=n},t=>{t.exports=function(t){return function(e,r,n){for(var o=-1,a=Object(e),i=n(e),u=i.length;u--;){var c=i[t?u:++o];if(!1===r(a[c],c,a))break}return e}}},(t,e,r)=>{var n=r(5);t.exports=function(t,e){return function(r,o){if(null==r)return r;if(!n(r))return t(r,o);for(var a=r.length,i=e?a:-1,u=Object(r);(e?i--:++i{"use strict";t.exports=e}],a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var r=a[t]={id:t,loaded:!1,exports:{}};return o[t](r,r.exports,i),r.loaded=!0,r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t);var u={};return(()=>{"use strict";i.r(u),i.d(u,{plugin:()=>tt});var t=i(39),e=i(40),r=i(139),n={moon_illumination:{title:"Moon illumination",text:"Percentage of the moon illuminated by the sun (0.0 - 1.0)",config:{unit:"percentunit",decimals:0}},moon_altitude:{title:"Moon altitude",text:"Height of the moon in degrees (-90 - 90)",config:{unit:"degree",min:0}},moon_azimuth:{title:"Moon azimuth",text:"Direction of the moon along the horizon in degrees (0 - 360)",config:{unit:"degree"}},moon_distance:{title:"Moon distance",text:"Distance to the moon in kilometers",config:{unit:"lengthkm",decimals:0}},sun_altitude:{title:"Sun altitude",text:"Height of the sun in degrees (-90 - 90)",config:{unit:"degree",min:0}},sun_azimuth:{title:"Sun azimuth",text:"Direction of the sun along the horizon in degrees (0 - 360)",config:{unit:"degree"}}},o={sunrise:{title:"Sunrise",text:"Top edge of the sun appears on the horizon",tags:["sun"]},sunriseEnd:{title:"Sunrise ends",text:"Bottom edge of the sun touches the horizon",tags:["sun"]},goldenHourEnd:{title:"Morning golden hour ends",text:"Soft light, best time for photography",tags:["sun"]},solarNoon:{title:"Solar noon",text:"Sun is in the highest position",tags:["sun"]},goldenHour:{title:"Evening golden hour starts",text:"Soft light, best time for photography",tags:["sun"]},sunsetStart:{title:"Sunset starts",text:"Bottom edge of the sun touches the horizon",tags:["sun"]},sunset:{title:"Sunset",text:"Sun disappears below the horizon, evening civil twilight starts",tags:["sun"]},dusk:{title:"Dusk",text:"Evening nautical twilight starts",tags:["sun"]},nauticalDusk:{title:"Nautical dusk",text:"Evening astronomical twilight starts",tags:["sun"]},night:{title:"Night starts",text:"Dark enough for astronomical observations",tags:["sun"]},nadir:{title:"Nadir",text:"Darkest moment of the night, sun is in the lowest position",tags:["sun"]},nightEnd:{title:"Night ends",text:"Morning astronomical twilight starts",tags:["sun"]},nauticalDawn:{title:"Nautical dawn",text:"Morning nautical twilight starts",tags:["sun"]},dawn:{title:"Dawn",text:"Morning nautical twilight ends, morning civil twilight starts",tags:["sun"]},moonrise:{title:"Moonrise",text:"Top edge of the moon appears on the horizon",tags:["moon"]},moonset:{title:"Moonset",text:"Moon disappears below the horizon",tags:["moon"]},noon:{title:"Noon",text:"12 o'clock in the daytime",tags:["time"]},midnight:{title:"Midnight",text:"12 o'clock in the night",tags:["time"]}},a={target:["moon_illumination"]},c=function(t){if(t.query){var e=t.query.split(",").map((function(t){return t.trim()}));t.target=e.filter((function(t){return"*"!==t})),delete t.query}else"string"==typeof t.target&&(t.target=[t.target])};function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(){l=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function c(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,r){return t[e]=r}}function f(t,e,r,o){var a=e&&e.prototype instanceof d?e:d,i=Object.create(a.prototype),u=new E(o||[]);return n(i,"_invoke",{value:j(t,r,u)}),i}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=f;var h={};function d(){}function v(){}function g(){}var y={};c(y,a,(function(){return this}));var b=Object.getPrototypeOf,m=b&&b(b(S([])));m&&m!==e&&r.call(m,a)&&(y=m);var x=g.prototype=d.prototype=Object.create(y);function w(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function _(t,e){function o(n,a,i,u){var c=p(t[n],t,a);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==s(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,i,u)}),(function(t){o("throw",t,i,u)})):e.resolve(f).then((function(t){l.value=t,i(l)}),(function(t){return o("throw",t,i,u)}))}u(c.arg)}var a;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return a=a?a.then(n,n):n()}})}function j(t,e,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return T()}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var u=O(i,r);if(u){if(u===h)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=p(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===h)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function O(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,O(t,e),"throw"===e.method))return h;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var n=p(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,h;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,h):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function S(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:S(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),h}},t}function f(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=function(t,e){if(!t)return;if("string"==typeof t)return p(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(t,e)}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,u=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return i=t.done,t},e:function(t){u=!0,a=t},f:function(){try{i||null==r.return||r.return()}finally{if(u)throw a}}}}function p(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r90)&&s.push("Error in query ".concat(g.refId,": Latitude '").concat(y,"' not in range -+90."))),b=this.longitude,g.longitude&&(b=parseFloat((0,r.getTemplateSrv)().replace(g.longitude,i.scopedVars)),(isNaN(b)||b<-360||b>360)&&s.push("Error in query ".concat(g.refId,": Longitude '").concat(b,"' not in range -+360"))),c(g),m=g.target.filter((function(t){return t in n})),x=g.target.filter((function(t){return t in o})),!m.length){a.next=58;break}w=f(m),a.prev=18,w.s();case 20:if((_=w.n()).done){a.next=50;break}j=_.value,O=new t.MutableDataFrame({refId:g.refId,name:n[j].title,fields:[{name:"Time",type:t.FieldType.time},{name:"Value",type:t.FieldType.number,config:n[j].config}]}),k=void 0,P=u.from.valueOf();case 25:if(!(P90)&&e.push("Latitude not in range -+90."),(void 0===this.longitude||this.longitude<-360||this.longitude>360)&&e.push("Longitude not in range -+360."),!e.length){t.next=7;break}return t.abrupt("return",{status:"error",title:"Error",message:e.join(" ")});case 7:return t.abrupt("return",{status:"success",title:"Success",message:"Datasource added successfully."});case 8:case"end":return t.stop()}}),t,this)}))),function(){return p.apply(this,arguments)})}],u&&v(i.prototype,u),s&&v(i,s),Object.defineProperty(i,"prototype",{writable:!1}),x}(t.DataSourceApi),k=i(41),P=i.n(k),E=i(42);function S(t){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},S(t)}function T(){return T=Object.assign?Object.assign.bind():function(t){for(var e=1;e true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__39__;","/*\n (c) 2011-2015, Vladimir Agafonkin\n SunCalc is a JavaScript library for calculating sun/moon position and light phases.\n https://github.com/mourner/suncalc\n*/\n\n(function () { 'use strict';\n\n// shortcuts for easier to read formulas\n\nvar PI = Math.PI,\n sin = Math.sin,\n cos = Math.cos,\n tan = Math.tan,\n asin = Math.asin,\n atan = Math.atan2,\n acos = Math.acos,\n rad = PI / 180;\n\n// sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas\n\n\n// date/time constants and conversions\n\nvar dayMs = 1000 * 60 * 60 * 24,\n J1970 = 2440588,\n J2000 = 2451545;\n\nfunction toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; }\nfunction fromJulian(j) { return new Date((j + 0.5 - J1970) * dayMs); }\nfunction toDays(date) { return toJulian(date) - J2000; }\n\n\n// general calculations for position\n\nvar e = rad * 23.4397; // obliquity of the Earth\n\nfunction rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); }\nfunction declination(l, b) { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); }\n\nfunction azimuth(H, phi, dec) { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); }\nfunction altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); }\n\nfunction siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; }\n\nfunction astroRefraction(h) {\n if (h < 0) // the following formula works for positive altitudes only.\n h = 0; // if h = -0.08901179 a div/0 would occur.\n\n // formula 16.4 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad:\n return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179));\n}\n\n// general sun calculations\n\nfunction solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); }\n\nfunction eclipticLongitude(M) {\n\n var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center\n P = rad * 102.9372; // perihelion of the Earth\n\n return M + C + P + PI;\n}\n\nfunction sunCoords(d) {\n\n var M = solarMeanAnomaly(d),\n L = eclipticLongitude(M);\n\n return {\n dec: declination(L, 0),\n ra: rightAscension(L, 0)\n };\n}\n\n\nvar SunCalc = {};\n\n\n// calculates sun position for a given date and latitude/longitude\n\nSunCalc.getPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = sunCoords(d),\n H = siderealTime(d, lw) - c.ra;\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: altitude(H, phi, c.dec)\n };\n};\n\n\n// sun times configuration (angle, morning name, evening name)\n\nvar times = SunCalc.times = [\n [-0.833, 'sunrise', 'sunset' ],\n [ -0.3, 'sunriseEnd', 'sunsetStart' ],\n [ -6, 'dawn', 'dusk' ],\n [ -12, 'nauticalDawn', 'nauticalDusk'],\n [ -18, 'nightEnd', 'night' ],\n [ 6, 'goldenHourEnd', 'goldenHour' ]\n];\n\n// adds a custom time to the times config\n\nSunCalc.addTime = function (angle, riseName, setName) {\n times.push([angle, riseName, setName]);\n};\n\n\n// calculations for sun times\n\nvar J0 = 0.0009;\n\nfunction julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); }\n\nfunction approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; }\nfunction solarTransitJ(ds, M, L) { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); }\n\nfunction hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); }\nfunction observerAngle(height) { return -2.076 * Math.sqrt(height) / 60; }\n\n// returns set time for the given sun altitude\nfunction getSetJ(h, lw, phi, dec, n, M, L) {\n\n var w = hourAngle(h, phi, dec),\n a = approxTransit(w, lw, n);\n return solarTransitJ(a, M, L);\n}\n\n\n// calculates sun times for a given date, latitude/longitude, and, optionally,\n// the observer height (in meters) relative to the horizon\n\nSunCalc.getTimes = function (date, lat, lng, height) {\n\n height = height || 0;\n\n var lw = rad * -lng,\n phi = rad * lat,\n\n dh = observerAngle(height),\n\n d = toDays(date),\n n = julianCycle(d, lw),\n ds = approxTransit(0, lw, n),\n\n M = solarMeanAnomaly(ds),\n L = eclipticLongitude(M),\n dec = declination(L, 0),\n\n Jnoon = solarTransitJ(ds, M, L),\n\n i, len, time, h0, Jset, Jrise;\n\n\n var result = {\n solarNoon: fromJulian(Jnoon),\n nadir: fromJulian(Jnoon - 0.5)\n };\n\n for (i = 0, len = times.length; i < len; i += 1) {\n time = times[i];\n h0 = (time[0] + dh) * rad;\n\n Jset = getSetJ(h0, lw, phi, dec, n, M, L);\n Jrise = Jnoon - (Jset - Jnoon);\n\n result[time[1]] = fromJulian(Jrise);\n result[time[2]] = fromJulian(Jset);\n }\n\n return result;\n};\n\n\n// moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas\n\nfunction moonCoords(d) { // geocentric ecliptic coordinates of the moon\n\n var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude\n M = rad * (134.963 + 13.064993 * d), // mean anomaly\n F = rad * (93.272 + 13.229350 * d), // mean distance\n\n l = L + rad * 6.289 * sin(M), // longitude\n b = rad * 5.128 * sin(F), // latitude\n dt = 385001 - 20905 * cos(M); // distance to the moon in km\n\n return {\n ra: rightAscension(l, b),\n dec: declination(l, b),\n dist: dt\n };\n}\n\nSunCalc.getMoonPosition = function (date, lat, lng) {\n\n var lw = rad * -lng,\n phi = rad * lat,\n d = toDays(date),\n\n c = moonCoords(d),\n H = siderealTime(d, lw) - c.ra,\n h = altitude(H, phi, c.dec),\n // formula 14.1 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H));\n\n h = h + astroRefraction(h); // altitude correction for refraction\n\n return {\n azimuth: azimuth(H, phi, c.dec),\n altitude: h,\n distance: c.dist,\n parallacticAngle: pa\n };\n};\n\n\n// calculations for illumination parameters of the moon,\n// based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and\n// Chapter 48 of \"Astronomical Algorithms\" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.\n\nSunCalc.getMoonIllumination = function (date) {\n\n var d = toDays(date || new Date()),\n s = sunCoords(d),\n m = moonCoords(d),\n\n sdist = 149598000, // distance from Earth to Sun in km\n\n phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)),\n inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)),\n angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) -\n cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra));\n\n return {\n fraction: (1 + cos(inc)) / 2,\n phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI,\n angle: angle\n };\n};\n\n\nfunction hoursLater(date, h) {\n return new Date(date.valueOf() + h * dayMs / 24);\n}\n\n// calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article\n\nSunCalc.getMoonTimes = function (date, lat, lng, inUTC) {\n var t = new Date(date);\n if (inUTC) t.setUTCHours(0, 0, 0, 0);\n else t.setHours(0, 0, 0, 0);\n\n var hc = 0.133 * rad,\n h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc,\n h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx;\n\n // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set)\n for (var i = 1; i <= 24; i += 2) {\n h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc;\n h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc;\n\n a = (h0 + h2) / 2 - h1;\n b = (h2 - h0) / 2;\n xe = -b / (2 * a);\n ye = (a * xe + b) * xe + h1;\n d = b * b - 4 * a * h1;\n roots = 0;\n\n if (d >= 0) {\n dx = Math.sqrt(d) / (Math.abs(a) * 2);\n x1 = xe - dx;\n x2 = xe + dx;\n if (Math.abs(x1) <= 1) roots++;\n if (Math.abs(x2) <= 1) roots++;\n if (x1 < -1) x1 = x2;\n }\n\n if (roots === 1) {\n if (h0 < 0) rise = i + x1;\n else set = i + x1;\n\n } else if (roots === 2) {\n rise = i + (ye < 0 ? x2 : x1);\n set = i + (ye < 0 ? x1 : x2);\n }\n\n if (rise && set) break;\n\n h0 = h2;\n }\n\n var result = {};\n\n if (rise) result.rise = hoursLater(t, rise);\n if (set) result.set = hoursLater(t, set);\n\n if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true;\n\n return result;\n};\n\n\n// export as Node module / AMD module / browser variable\nif (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc;\nelse if (typeof define === 'function' && define.amd) define(SunCalc);\nelse window.SunCalc = SunCalc;\n\n}());\n","module.exports = __WEBPACK_EXTERNAL_MODULE__41__;","module.exports = __WEBPACK_EXTERNAL_MODULE__42__;","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__139__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","import { DataQuery, DataSourceJsonData } from '@grafana/data';\n\nexport const sunAndMoonMetrics: any = {\n moon_illumination: {\n title: 'Moon illumination',\n text: 'Percentage of the moon illuminated by the sun (0.0 - 1.0)',\n config: { unit: 'percentunit', decimals: 0 },\n },\n moon_altitude: {\n title: 'Moon altitude',\n text: 'Height of the moon in degrees (-90 - 90)',\n config: { unit: 'degree', min: 0 },\n },\n moon_azimuth: {\n title: 'Moon azimuth',\n text: 'Direction of the moon along the horizon in degrees (0 - 360)',\n config: { unit: 'degree' },\n },\n moon_distance: {\n title: 'Moon distance',\n text: 'Distance to the moon in kilometers',\n config: { unit: 'lengthkm', decimals: 0 },\n },\n sun_altitude: {\n title: 'Sun altitude',\n text: 'Height of the sun in degrees (-90 - 90)',\n config: { unit: 'degree', min: 0 },\n },\n sun_azimuth: {\n title: 'Sun azimuth',\n text: 'Direction of the sun along the horizon in degrees (0 - 360)',\n config: { unit: 'degree' },\n },\n};\n\nexport const sunAndMoonAnnotations: any = {\n sunrise: {\n title: 'Sunrise',\n text: 'Top edge of the sun appears on the horizon',\n tags: ['sun'],\n },\n sunriseEnd: {\n title: 'Sunrise ends',\n text: 'Bottom edge of the sun touches the horizon',\n tags: ['sun'],\n },\n goldenHourEnd: {\n title: 'Morning golden hour ends',\n text: 'Soft light, best time for photography',\n tags: ['sun'],\n },\n solarNoon: {\n title: 'Solar noon',\n text: 'Sun is in the highest position',\n tags: ['sun'],\n },\n goldenHour: {\n title: 'Evening golden hour starts',\n text: 'Soft light, best time for photography',\n tags: ['sun'],\n },\n sunsetStart: {\n title: 'Sunset starts',\n text: 'Bottom edge of the sun touches the horizon',\n tags: ['sun'],\n },\n sunset: {\n title: 'Sunset',\n text: 'Sun disappears below the horizon, evening civil twilight starts',\n tags: ['sun'],\n },\n dusk: {\n title: 'Dusk',\n text: 'Evening nautical twilight starts',\n tags: ['sun'],\n },\n nauticalDusk: {\n title: 'Nautical dusk',\n text: 'Evening astronomical twilight starts',\n tags: ['sun'],\n },\n night: {\n title: 'Night starts',\n text: 'Dark enough for astronomical observations',\n tags: ['sun'],\n },\n nadir: {\n title: 'Nadir',\n text: 'Darkest moment of the night, sun is in the lowest position',\n tags: ['sun'],\n },\n nightEnd: {\n title: 'Night ends',\n text: 'Morning astronomical twilight starts',\n tags: ['sun'],\n },\n nauticalDawn: {\n title: 'Nautical dawn',\n text: 'Morning nautical twilight starts',\n tags: ['sun'],\n },\n dawn: {\n title: 'Dawn',\n text: 'Morning nautical twilight ends, morning civil twilight starts',\n tags: ['sun'],\n },\n moonrise: {\n title: 'Moonrise',\n text: 'Top edge of the moon appears on the horizon',\n tags: ['moon'],\n },\n moonset: {\n title: 'Moonset',\n text: 'Moon disappears below the horizon',\n tags: ['moon'],\n },\n noon: {\n title: 'Noon',\n text: \"12 o'clock in the daytime\",\n tags: ['time'],\n },\n midnight: {\n title: 'Midnight',\n text: \"12 o'clock in the night\",\n tags: ['time'],\n },\n};\n\nexport interface SunAndMoonQuery extends DataQuery {\n target?: string[];\n latitude?: string;\n longitude?: string;\n}\n\nexport const sunAndMoonDefaultQuery: Partial = {\n target: ['moon_illumination'],\n};\n\nexport interface SunAndMoonDataSourceOptions extends DataSourceJsonData {\n latitude?: number;\n longitude?: number;\n}\n","// Migrate old single string and annotation queries\nexport const migrateQuery = (query: any) => {\n if (query.query) {\n let targets: string[] = query.query.split(\",\").map((target: string) => target.trim());\n query.target = targets.filter(target => target !== \"*\");\n delete query.query;\n } else if (typeof query.target === \"string\") {\n query.target = [query.target];\n }\n}\n","import * as SunCalc from 'suncalc';\n\nimport {\n DataQueryRequest,\n DataQueryResponse,\n DataSourceApi,\n DataSourceInstanceSettings,\n dateTimeParse,\n FieldType,\n MutableDataFrame,\n dateTime,\n} from '@grafana/data';\n\nimport { getTemplateSrv } from '@grafana/runtime';\n\nimport {\n SunAndMoonQuery,\n SunAndMoonDataSourceOptions,\n sunAndMoonMetrics,\n sunAndMoonAnnotations,\n} from './types';\n\nimport { migrateQuery } from 'migrations';\n\nexport class SunAndMoonDataSource extends DataSourceApi {\n latitude?: number;\n longitude?: number;\n\n /* istanbul ignore next: workaround for https://github.com/gotwarlost/istanbul/issues/690 */\n constructor(instanceSettings: DataSourceInstanceSettings) {\n super(instanceSettings);\n\n this.latitude = instanceSettings.jsonData.latitude;\n this.longitude = instanceSettings.jsonData.longitude;\n this.annotations = {}\n }\n\n async query(options: DataQueryRequest): Promise {\n const { range } = options;\n\n let errors: string[] = [];\n const targets = options.targets.filter((target) => !target.hide);\n\n let frames: MutableDataFrame[] = [];\n for (const target of targets) {\n let latitude = this.latitude;\n if (!!target.latitude) {\n latitude = parseFloat(getTemplateSrv().replace(target.latitude, options.scopedVars));\n if (isNaN(latitude) || latitude < -90 || latitude > 90) {\n errors.push(`Error in query ${target.refId}: Latitude '${latitude}' not in range -+90.`);\n }\n }\n let longitude = this.longitude;\n if (!!target.longitude) {\n longitude = parseFloat(getTemplateSrv().replace(target.longitude, options.scopedVars));\n if (isNaN(longitude) || longitude < -360 || longitude > 360) {\n errors.push(`Error in query ${target.refId}: Longitude '${longitude}' not in range -+360`);\n }\n }\n\n migrateQuery(target);\n\n const metrics = target.target!.filter((target) => target in sunAndMoonMetrics);\n const annotations = target.target!.filter((target) => target in sunAndMoonAnnotations);\n\n if (metrics.length) {\n for (const metric of metrics) {\n const frame = new MutableDataFrame({\n refId: target.refId,\n name: sunAndMoonMetrics[metric].title,\n fields: [\n { name: 'Time', type: FieldType.time },\n { name: 'Value', type: FieldType.number, config: sunAndMoonMetrics[metric].config },\n ],\n });\n let value = undefined;\n for (let time = range.from.valueOf(); time < range.to.valueOf(); time += options.intervalMs) {\n switch (metric) {\n case 'moon_illumination':\n value = SunCalc.getMoonIllumination(new Date(time)).fraction;\n break;\n case 'moon_phase':\n value = SunCalc.getMoonIllumination(new Date(time)).phase;\n break;\n case 'moon_altitude':\n value = (SunCalc.getMoonPosition(new Date(time), latitude!, longitude!).altitude * 180) / Math.PI;\n break;\n case 'moon_azimuth':\n value = (SunCalc.getMoonPosition(new Date(time), latitude!, longitude!).azimuth * 180) / Math.PI + 180;\n break;\n case 'moon_distance':\n value = SunCalc.getMoonPosition(new Date(time), latitude!, longitude!).distance;\n break;\n case 'sun_altitude':\n value = (SunCalc.getPosition(new Date(time), latitude!, longitude!).altitude * 180) / Math.PI;\n break;\n case 'sun_azimuth':\n value = (SunCalc.getPosition(new Date(time), latitude!, longitude!).azimuth * 180) / Math.PI + 180;\n break;\n }\n if (value !== undefined) {\n frame.add({ Time: time, Value: value });\n }\n }\n frames.push(frame);\n }\n }\n if (annotations.length) {\n for (const annotation of annotations) {\n const frame = new MutableDataFrame({\n refId: target.refId,\n name: sunAndMoonAnnotations[annotation].title,\n fields: [\n { name: 'Time', type: FieldType.time },\n { name: 'Title', type: FieldType.string },\n { name: 'Text', type: FieldType.string },\n { name: 'Tags', type: FieldType.other },\n ],\n });\n\n for (const date = dateTime(range.from.valueOf()); date < dateTime(range.to.valueOf()).add(1, 'days'); date.add(1, 'days')) {\n let time = undefined;\n switch (annotation) {\n case 'sunrise':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).sunrise;\n break;\n case 'sunriseEnd':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).sunriseEnd;\n break;\n case 'goldenHour':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).goldenHour;\n break;\n case 'goldenHourEnd':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).goldenHourEnd;\n break;\n case 'solarNoon':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).solarNoon;\n break;\n case 'sunsetStart':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).sunsetStart;\n break;\n case 'sunset':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).sunset;\n break;\n case 'dusk':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).dusk;\n break;\n case 'nauticalDusk':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).nauticalDusk;\n break;\n case 'nauticalDawn':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).nauticalDawn;\n break;\n case 'night':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).night;\n break;\n case 'nightEnd':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).nightEnd;\n break;\n case 'nadir':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).nadir;\n break;\n case 'dawn':\n time = SunCalc.getTimes(date.toDate(), latitude!, longitude!).dawn;\n break;\n case 'moonrise':\n time = SunCalc.getMoonTimes(date.toDate(), latitude!, longitude!).rise;\n break;\n case 'moonset':\n time = SunCalc.getMoonTimes(date.toDate(), latitude!, longitude!).set;\n break;\n case 'noon':\n time = dateTimeParse(`${date.format(\"YYYY-MM-DD\")} 12:00:00`, { timeZone: options.timezone });\n break;\n case 'midnight':\n time = dateTimeParse(`${date.format(\"YYYY-MM-DD\")} 00:00:00`, { timeZone: options.timezone });\n break;\n }\n if (time !== undefined) {\n frame.add({\n Time: time!.valueOf(),\n Title: sunAndMoonAnnotations[annotation].title,\n Text: sunAndMoonAnnotations[annotation].text,\n Tags: sunAndMoonAnnotations[annotation].tags,\n });\n }\n }\n frames.push(frame);\n }\n }\n }\n\n if (errors.length) {\n throw new Error(errors.join(' '));\n } else {\n return { data: frames };\n }\n }\n\n async testDatasource() {\n let errors: string[] = [];\n if (this.latitude === undefined || this.latitude < -90 || this.latitude > 90) {\n errors.push('Latitude not in range -+90.');\n }\n if (this.longitude === undefined || this.longitude < -360 || this.longitude > 360) {\n errors.push('Longitude not in range -+360.');\n }\n if (errors.length) {\n return { status: 'error', title: 'Error', message: errors.join(' ') };\n } else {\n return { status: 'success', title: 'Success', message: 'Datasource added successfully.' };\n }\n }\n}\n","import React, { ChangeEvent, PureComponent } from 'react';\nimport { InlineField, Input } from '@grafana/ui';\nimport { DataSourcePluginOptionsEditorProps } from '@grafana/data';\nimport { SunAndMoonDataSourceOptions } from './types';\n\nexport interface Props extends DataSourcePluginOptionsEditorProps { }\n\nexport class ConfigEditor extends PureComponent {\n constructor(props: Props) {\n super(props);\n\n this.fillPositionFromGeoLocation();\n }\n\n fillPositionFromGeoLocation = () => {\n const { options } = this.props;\n const { jsonData } = options;\n if (jsonData.latitude === undefined && jsonData.longitude === undefined) {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition((position) => {\n const { onOptionsChange, options } = this.props;\n const jsonData = {\n ...options.jsonData,\n latitude: position.coords.latitude,\n longitude: position.coords.longitude,\n };\n onOptionsChange({ ...options, jsonData });\n });\n }\n }\n };\n\n onLatitudeChange = (event: ChangeEvent) => {\n const value = parseFloat(event.target.value);\n const { onOptionsChange, options } = this.props;\n const jsonData = {\n ...options.jsonData,\n latitude: isNaN(value) ? undefined : value,\n };\n onOptionsChange({ ...options, jsonData });\n };\n\n onLongitudeChange = (event: ChangeEvent) => {\n const value = parseFloat(event.target.value);\n const { onOptionsChange, options } = this.props;\n const jsonData = {\n ...options.jsonData,\n longitude: isNaN(value) ? undefined : value,\n };\n onOptionsChange({ ...options, jsonData });\n };\n\n render() {\n const { options } = this.props;\n const { jsonData } = options;\n\n return (\n
\n

Sun and Moon reference location

\n
\n This datasource calculates sun and moon metrics that are relative to a location on earth.\n
\n The geographic position is expressed as latitude and longitude in decimal degrees.\n
\n
\n \n \n \n
\n
\n \n \n \n
\n
\n );\n }\n}\n","import defaults from 'lodash/defaults';\nimport map from 'lodash/map';\n\nimport React, { ChangeEvent, PureComponent } from 'react';\nimport { InlineFormLabel, InlineField, Input, MultiSelect } from '@grafana/ui';\nimport { QueryEditorProps, SelectableValue } from '@grafana/data';\nimport { SunAndMoonDataSource } from './DataSource';\nimport { SunAndMoonDataSourceOptions, SunAndMoonQuery, sunAndMoonDefaultQuery, sunAndMoonMetrics, sunAndMoonAnnotations } from './types';\nimport { migrateQuery } from 'migrations';\n\nexport type Props = QueryEditorProps;\n\nconst metrics = map({ ...sunAndMoonMetrics, ...sunAndMoonAnnotations }, (metric, value) => {\n return { label: metric.title, value: value, description: metric.text };\n}) as Array>;\n\nexport class QueryEditor extends PureComponent {\n onMetricChanged = (selected: Array>) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, target: selected.map(selection => selection.value!) });\n onRunQuery();\n };\n\n onLatitudeChange = (event: ChangeEvent) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, latitude: event.target.value });\n onRunQuery();\n };\n\n onLongitudeChange = (event: ChangeEvent) => {\n const { onChange, query, onRunQuery } = this.props;\n onChange({ ...query, longitude: event.target.value });\n onRunQuery();\n };\n\n render() {\n migrateQuery(this.props.query);\n\n const query = defaults(this.props.query, sunAndMoonDefaultQuery);\n const { datasource } = this.props;\n\n return (\n
\n
\n Metric\n \n
\n
\n \n \n \n \n \n \n
\n
\n );\n }\n}\n","import { DataSourcePlugin } from '@grafana/data';\nimport { SunAndMoonDataSource } from './DataSource';\nimport { ConfigEditor } from './ConfigEditor';\nimport { QueryEditor } from './QueryEditor';\nimport { SunAndMoonQuery, SunAndMoonDataSourceOptions } from './types';\n\nexport const plugin = new DataSourcePlugin(\n SunAndMoonDataSource\n)\n .setConfigEditor(ConfigEditor)\n .setQueryEditor(QueryEditor)\n"],"names":["freeGlobal","freeSelf","self","Object","root","Function","module","exports","isArray","Array","baseIsNative","getValue","object","key","value","undefined","Symbol","getRawTag","objectToString","symToStringTag","toStringTag","type","isFunction","isLength","length","other","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","index","this","clear","entry","set","prototype","get","has","eq","array","nativeCreate","getNative","isKeyable","map","data","__data__","isSymbol","result","reIsUint","test","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","arrayLikeKeys","baseKeys","isArrayLike","reIsDeepProp","reIsPlainProp","baseGetTag","isObjectLike","stubFalse","freeExports","nodeType","freeModule","Buffer","isBuffer","isObject","tag","g","funcToString","toString","func","call","e","baseTimes","isArguments","isIndex","isTypedArray","hasOwnProperty","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","push","baseIsArguments","objectProto","propertyIsEnumerable","arguments","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","Ctor","constructor","iteratee","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","size","baseIsEqualDeep","baseIsEqual","bitmask","customizer","stack","SetCache","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","srcValue","castPath","toKey","path","isKey","stringToPath","freeProcess","process","types","require","binding","__WEBPACK_EXTERNAL_MODULE__39__","PI","Math","sin","cos","tan","asin","atan","atan2","acos","rad","dayMs","J1970","J2000","fromJulian","j","Date","toDays","date","valueOf","toJulian","rightAscension","l","b","declination","azimuth","H","phi","dec","altitude","siderealTime","d","lw","solarMeanAnomaly","eclipticLongitude","M","sunCoords","L","ra","SunCalc","lat","lng","c","times","addTime","angle","riseName","setName","J0","approxTransit","Ht","n","solarTransitJ","ds","getSetJ","h","w","hourAngle","moonCoords","F","dt","dist","hoursLater","getTimes","height","i","len","time","Jset","Jrise","dh","sqrt","observerAngle","round","julianCycle","Jnoon","solarNoon","nadir","getMoonPosition","pa","astroRefraction","distance","parallacticAngle","getMoonIllumination","s","m","sdist","inc","fraction","phase","getMoonTimes","inUTC","t","setUTCHours","setHours","h1","h2","rise","a","xe","ye","roots","x1","x2","dx","hc","h0","abs","__WEBPACK_EXTERNAL_MODULE__41__","__WEBPACK_EXTERNAL_MODULE__42__","baseRest","isIterateeCall","keysIn","defaults","sources","guard","source","props","propsIndex","propsLength","identity","overRest","setToString","start","apply","nativeMax","max","transform","args","otherArgs","thisArg","baseSetToString","shortOut","constant","defineProperty","string","isMasked","toSource","reIsHostCtor","funcProto","reIsNative","RegExp","replace","nativeObjectToString","isOwn","unmasked","uid","coreJsData","maskSrcKey","exec","keys","IE_PROTO","nativeNow","now","count","lastCalled","stamp","remaining","baseKeysIn","typedArrayTags","isPrototype","nativeKeysIn","isProto","arrayMap","baseIteratee","baseMap","collection","baseMatches","baseMatchesProperty","property","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","objValue","COMPARE_PARTIAL_FLAG","assocIndexOf","splice","pop","pairs","LARGE_ARRAY_SIZE","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","getMapData","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","setCacheAdd","setCacheHas","values","add","predicate","cache","Uint8Array","mapToArray","setToArray","symbolProto","symbolValueOf","byteLength","byteOffset","buffer","name","message","convert","stacked","forEach","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","getSymbols","arrayPush","keysFunc","symbolsFunc","offset","arrayFilter","stubArray","nativeGetSymbols","getOwnPropertySymbols","symbol","resIndex","nativeKeys","overArg","arg","DataView","Promise","Set","WeakMap","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","resolve","ctorString","isStrictComparable","hasIn","baseGet","defaultValue","memoizeCapped","rePropName","reEscapeChar","charCodeAt","match","number","quote","subString","memoize","resolver","TypeError","memoized","Cache","baseToString","symbolToString","baseHasIn","hasPath","hasFunc","baseProperty","basePropertyDeep","baseEach","baseForOwn","createBaseEach","baseFor","createBaseFor","fromRight","iterable","eachFunc","__WEBPACK_EXTERNAL_MODULE__139__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","definition","o","enumerable","globalThis","window","obj","prop","r","nmd","paths","children","sunAndMoonMetrics","moon_illumination","title","text","config","unit","decimals","moon_altitude","min","moon_azimuth","moon_distance","sun_altitude","sun_azimuth","sunAndMoonAnnotations","sunrise","tags","sunriseEnd","goldenHourEnd","goldenHour","sunsetStart","sunset","dusk","nauticalDusk","night","nightEnd","nauticalDawn","dawn","moonrise","moonset","noon","midnight","sunAndMoonDefaultQuery","target","migrateQuery","query","targets","split","trim","filter","SunAndMoonDataSource","instanceSettings","latitude","jsonData","longitude","annotations","options","range","errors","hide","frames","parseFloat","getTemplateSrv","scopedVars","isNaN","refId","metrics","metric","frame","MutableDataFrame","fields","FieldType","from","to","Time","Value","intervalMs","annotation","dateTime","toDate","dateTimeParse","format","timeZone","timezone","Title","Text","Tags","Error","join","status","DataSourceApi","ConfigEditor","navigator","geolocation","getCurrentPosition","position","onOptionsChange","coords","event","fillPositionFromGeoLocation","className","InlineField","label","labelWidth","Input","onChange","onLatitudeChange","placeholder","required","width","onLongitudeChange","PureComponent","description","QueryEditor","selected","onRunQuery","selection","datasource","InlineFormLabel","htmlFor","MultiSelect","inputId","onMetricChanged","plugin","DataSourcePlugin","setConfigEditor","setQueryEditor"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/partials/annotations.editor.html b/dist/partials/annotations.editor.html deleted file mode 100644 index df052b6..0000000 --- a/dist/partials/annotations.editor.html +++ /dev/null @@ -1,10 +0,0 @@ -
Sun and Moon Annotations
-
-
- - -
-
diff --git a/dist/plugin.json b/dist/plugin.json deleted file mode 100644 index 5eb7107..0000000 --- a/dist/plugin.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/grafana/grafana/master/docs/sources/developers/plugins/plugin.schema.json", - "name": "Sun and Moon", - "id": "fetzerch-sunandmoon-datasource", - "type": "datasource", - "metrics": true, - "annotations": true, - "info": { - "description": "Calculates position of Sun and Moon.", - "author": { - "name": "Christian Fetzer", - "email": "fetzer.ch@gmail.com", - "url": "https://fetzerch.github.io" - }, - "keywords": [ - "sun", - "moon", - "altitude", - "azimuth", - "illumination", - "distance" - ], - "logos": { - "small": "img/logo.png", - "large": "img/logo.png" - }, - "links": [ - { - "name": "GitHub", - "url": "https://github.com/fetzerch/grafana-sunandmoon-datasource" - }, - { - "name": "MIT License", - "url": "https://github.com/fetzerch/grafana-sunandmoon-datasource/blob/master/LICENSE" - } - ], - "screenshots": [ - { - "name": "Sun and Moon Position", - "path": "img/screenshot.png" - } - ], - "version": "0.3.0", - "updated": "2022-11-10" - }, - "dependencies": { - "grafanaDependency": ">=7.3.0", - "grafanaVersion": "7.3.0", - "plugins": [] - } -}