openc3-cosmos-tool-docs 6.4.2 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/tools/staticdocs/404.html +1 -1
- data/tools/staticdocs/assets/images/alert_logs-8273c6912804a4a16ce15d59cedf266f32d8c0a4ace2ab25fd8d3f149fb7fed2.png +0 -0
- data/tools/staticdocs/assets/images/alert_notifications-c68f0ff77eec9c2bc0d31bd6693fce4055d21722f985e418c05533992be71631.png +0 -0
- data/tools/staticdocs/assets/images/checks_rb-4e28c3a8422638404e790054f83f6a61592f5cf848ff6d9bd1ce228813622c9a.png +0 -0
- data/tools/staticdocs/assets/images/disk_usage-c91c5ef35de6ec1c4ebcf485c6f74c68daeac6215bf185691ed613b7fd2a95cf.png +0 -0
- data/tools/staticdocs/assets/images/environment_variables-72bbb71e6f428ec5efa340eb402289b6d42a84d3c5ce724025d32415242dec09.png +0 -0
- data/tools/staticdocs/assets/images/process_metrics-534358ca0a064ed4c24ff1a29f48686d1189e331da23e0f7a6625405278b31eb.png +0 -0
- data/tools/staticdocs/assets/images/redis_metrics-646d362a7855604a8b6de1b7064f6949914be7b84ad1ab78822990d56d6ebcc1.png +0 -0
- data/tools/staticdocs/assets/images/refresh_interval-8673071593ce24cb2bb0adedfd0e7fc4d612496c393c7f3f52ba37db497f9344.png +0 -0
- data/tools/staticdocs/assets/images/right_click-81df09085fe9f75805cf35b5876177789eef0d879b54a734a8395e3817f1959d.png +0 -0
- data/tools/staticdocs/assets/images/script_suite-0d1f45f9226d3ac0ed12d5ce91220dccf88402fd8582c4512acc8886a3cf2249.png +0 -0
- data/tools/staticdocs/assets/images/system_health_configuration-728cde02f1da6b75e606152e113e288b6d949dd1f4183c4691b0f61c4c47b30e.png +0 -0
- data/tools/staticdocs/assets/images/system_overview_gauges-3975fb0011287cf4f98af7dfdf9dba681943913c0b47642645cd19b583e35b74.png +0 -0
- data/tools/staticdocs/assets/images/systemhealth-fc26a7d9cda6242569255ecd4264d1c91ad47d85a3805b610d3c946e0d10cfbf.png +0 -0
- data/tools/staticdocs/assets/js/019369f3.52424baa.js +1 -0
- data/tools/staticdocs/assets/js/058ffc22.82c2873e.js +1 -0
- data/tools/staticdocs/assets/js/0686a885.f620e3dc.js +1 -0
- data/tools/staticdocs/assets/js/{078dbab0.43788fd9.js → 078dbab0.babf69ab.js} +1 -1
- data/tools/staticdocs/assets/js/0f5d161c.bc74590c.js +1 -0
- data/tools/staticdocs/assets/js/0ff569c9.14ed0a79.js +1 -0
- data/tools/staticdocs/assets/js/103cc3be.b15ac140.js +1 -0
- data/tools/staticdocs/assets/js/13196248.e1f20841.js +1 -0
- data/tools/staticdocs/assets/js/13c1b4e4.58a03be2.js +1 -0
- data/tools/staticdocs/assets/js/1602.a7ddd3dc.js +1 -0
- data/tools/staticdocs/assets/js/1e02e6a3.68a73184.js +1 -0
- data/tools/staticdocs/assets/js/2047b354.58bf5de8.js +1 -0
- data/tools/staticdocs/assets/js/22b3ac48.5ab6a17a.js +1 -0
- data/tools/staticdocs/assets/js/2368.4443f5c4.js +4 -0
- data/tools/staticdocs/assets/js/2bb7bf90.882f03a1.js +1 -0
- data/tools/staticdocs/assets/js/2c15ad40.a56e1a40.js +1 -0
- data/tools/staticdocs/assets/js/35398c5c.d6cb2a82.js +1 -0
- data/tools/staticdocs/assets/js/3687.062fee32.js +101 -0
- data/tools/staticdocs/assets/js/3dd7ef3b.4782cafe.js +1 -0
- data/tools/staticdocs/assets/js/40365d27.cdd0a061.js +1 -0
- data/tools/staticdocs/assets/js/411898ad.63be48ce.js +1 -0
- data/tools/staticdocs/assets/js/42170351.49ebb70c.js +1 -0
- data/tools/staticdocs/assets/js/43652efd.deefbd37.js +1 -0
- data/tools/staticdocs/assets/js/54d0d530.9fccf082.js +1 -0
- data/tools/staticdocs/assets/js/59ed27a4.6a4d4905.js +1 -0
- data/tools/staticdocs/assets/js/5b233ba7.169a9701.js +1 -0
- data/tools/staticdocs/assets/js/5bc719f6.adbdce65.js +1 -0
- data/tools/staticdocs/assets/js/5c6ce5ec.1827793d.js +1 -0
- data/tools/staticdocs/assets/js/5fe211ef.866de8e9.js +1 -0
- data/tools/staticdocs/assets/js/6831b732.d0e1b5a6.js +1 -0
- data/tools/staticdocs/assets/js/696b4199.adf3731a.js +1 -0
- data/tools/staticdocs/assets/js/6b210247.bb5dedd5.js +1 -0
- data/tools/staticdocs/assets/js/6b65133b.c431a22a.js +1 -0
- data/tools/staticdocs/assets/js/6f92e431.13b5aeef.js +1 -0
- data/tools/staticdocs/assets/js/72c6d8a8.8f66ae6e.js +1 -0
- data/tools/staticdocs/assets/js/75e64983.31d1e579.js +1 -0
- data/tools/staticdocs/assets/js/7719.d199daa3.js +1 -0
- data/tools/staticdocs/assets/js/80c97f38.4f6a5637.js +1 -0
- data/tools/staticdocs/assets/js/{867640d5.32ca371f.js → 867640d5.9dd71bf3.js} +1 -1
- data/tools/staticdocs/assets/js/89e76475.a0353bb2.js +1 -0
- data/tools/staticdocs/assets/js/8b939c74.5fd8e3e8.js +1 -0
- data/tools/staticdocs/assets/js/8f7843ee.b3358f6f.js +1 -0
- data/tools/staticdocs/assets/js/9424f0b3.b8d6d2bf.js +1 -0
- data/tools/staticdocs/assets/js/964eb012.cb76dd8a.js +1 -0
- data/tools/staticdocs/assets/js/97535711.c3a1a5a1.js +1 -0
- data/tools/staticdocs/assets/js/99581c43.c9f8e384.js +1 -0
- data/tools/staticdocs/assets/js/9fb6059a.91edfcba.js +1 -0
- data/tools/staticdocs/assets/js/a677c089.d33ab1ca.js +1 -0
- data/tools/staticdocs/assets/js/a9987364.530c9592.js +1 -0
- data/tools/staticdocs/assets/js/a9b2dc27.50f54e80.js +1 -0
- data/tools/staticdocs/assets/js/{aa6b6c1b.bc122746.js → aa6b6c1b.dc1c4a62.js} +1 -1
- data/tools/staticdocs/assets/js/{b062d239.4e8142cb.js → b062d239.ff2df9fd.js} +1 -1
- data/tools/staticdocs/assets/js/b38a6d74.62bc94a3.js +1 -0
- data/tools/staticdocs/assets/js/b4596165.a2357781.js +1 -0
- data/tools/staticdocs/assets/js/b6d70f94.22ca3e8a.js +1 -0
- data/tools/staticdocs/assets/js/b9f60ba6.677e8e46.js +1 -0
- data/tools/staticdocs/assets/js/{bd0034eb.a201a4a7.js → bd0034eb.09d6bbbc.js} +1 -1
- data/tools/staticdocs/assets/js/c24eae19.3db158fe.js +1 -0
- data/tools/staticdocs/assets/js/cb8c3f08.0de82997.js +1 -0
- data/tools/staticdocs/assets/js/cd879be4.d650ab29.js +1 -0
- data/tools/staticdocs/assets/js/d1b923aa.240ccf18.js +1 -0
- data/tools/staticdocs/assets/js/d1bfc316.5c7b9c2f.js +1 -0
- data/tools/staticdocs/assets/js/{d24bf9b6.e348c06d.js → d24bf9b6.ea1e95ab.js} +1 -1
- data/tools/staticdocs/assets/js/d57a4b5d.82790d9f.js +1 -0
- data/tools/staticdocs/assets/js/d5d77c37.a1299467.js +1 -0
- data/tools/staticdocs/assets/js/d66bf9c0.8018f0a0.js +1 -0
- data/tools/staticdocs/assets/js/d8ca4191.ca5f5dde.js +1 -0
- data/tools/staticdocs/assets/js/d9b92eba.41086b81.js +1 -0
- data/tools/staticdocs/assets/js/db8fa1d0.5107d903.js +1 -0
- data/tools/staticdocs/assets/js/dbe31111.8f1677f3.js +1 -0
- data/tools/staticdocs/assets/js/dc5f7beb.dfbe012c.js +1 -0
- data/tools/staticdocs/assets/js/e501b0d1.512e0a0b.js +1 -0
- data/tools/staticdocs/assets/js/{f15615f1.a4d98d69.js → f15615f1.d668576a.js} +1 -1
- data/tools/staticdocs/assets/js/f75a5f33.d3a97a44.js +1 -0
- data/tools/staticdocs/assets/js/main.8c741ee1.js +38 -0
- data/tools/staticdocs/assets/js/runtime~main.7674b06d.js +1 -0
- data/tools/staticdocs/docs/configuration/accessors.html +2 -2
- data/tools/staticdocs/docs/configuration/command.html +2 -2
- data/tools/staticdocs/docs/configuration/conversions.html +10 -8
- data/tools/staticdocs/docs/configuration/format.html +2 -2
- data/tools/staticdocs/docs/configuration/interfaces.html +2 -2
- data/tools/staticdocs/docs/configuration/limits-response.html +19 -0
- data/tools/staticdocs/docs/configuration/plugins.html +9 -3
- data/tools/staticdocs/docs/configuration/processors.html +42 -0
- data/tools/staticdocs/docs/configuration/protocols.html +2 -2
- data/tools/staticdocs/docs/configuration/ssl-tls.html +2 -2
- data/tools/staticdocs/docs/configuration/table.html +3 -3
- data/tools/staticdocs/docs/configuration/target.html +2 -2
- data/tools/staticdocs/docs/configuration/telemetry-screens.html +9 -9
- data/tools/staticdocs/docs/configuration/telemetry.html +4 -2
- data/tools/staticdocs/docs/configuration.html +2 -2
- data/tools/staticdocs/docs/development/curl.html +1 -1
- data/tools/staticdocs/docs/development/developing.html +1 -1
- data/tools/staticdocs/docs/development/json-api.html +1 -1
- data/tools/staticdocs/docs/development/log-structure.html +1 -1
- data/tools/staticdocs/docs/development/roadmap.html +1 -1
- data/tools/staticdocs/docs/development/streaming-api.html +1 -1
- data/tools/staticdocs/docs/development/testing.html +1 -1
- data/tools/staticdocs/docs/development.html +1 -1
- data/tools/staticdocs/docs/getting-started/cli.html +16 -5
- data/tools/staticdocs/docs/getting-started/generators.html +19 -21
- data/tools/staticdocs/docs/getting-started/gettingstarted.html +1 -1
- data/tools/staticdocs/docs/getting-started/installation.html +1 -1
- data/tools/staticdocs/docs/getting-started/key-concepts.html +1 -1
- data/tools/staticdocs/docs/getting-started/podman.html +5 -2
- data/tools/staticdocs/docs/getting-started/requirements.html +1 -1
- data/tools/staticdocs/docs/getting-started/upgrading.html +2 -2
- data/tools/staticdocs/docs/getting-started.html +1 -1
- data/tools/staticdocs/docs/guides/bridges.html +1 -1
- data/tools/staticdocs/docs/guides/cfs.html +1 -1
- data/tools/staticdocs/docs/guides/custom-widgets.html +1 -1
- data/tools/staticdocs/docs/guides/dynamic-packets.html +3 -1
- data/tools/staticdocs/docs/guides/exposing-microservices.html +1 -1
- data/tools/staticdocs/docs/guides/little-endian-bitfields.html +1 -1
- data/tools/staticdocs/docs/guides/local-mode.html +1 -1
- data/tools/staticdocs/docs/guides/logging.html +1 -1
- data/tools/staticdocs/docs/guides/monitoring.html +1 -1
- data/tools/staticdocs/docs/guides/performance.html +1 -1
- data/tools/staticdocs/docs/guides/raspberrypi.html +1 -1
- data/tools/staticdocs/docs/guides/reference-architectures.html +1 -1
- data/tools/staticdocs/docs/guides/script-writing.html +1 -1
- data/tools/staticdocs/docs/guides/scripting-api.html +2 -2
- data/tools/staticdocs/docs/guides.html +1 -1
- data/tools/staticdocs/docs/meta/contributing.html +1 -1
- data/tools/staticdocs/docs/meta/licenses.html +1 -1
- data/tools/staticdocs/docs/meta/philosophy.html +1 -1
- data/tools/staticdocs/docs/meta/xtce.html +1 -1
- data/tools/staticdocs/docs/meta.html +1 -1
- data/tools/staticdocs/docs/privacy.html +1 -1
- data/tools/staticdocs/docs/tools/admin.html +2 -2
- data/tools/staticdocs/docs/tools/autonomic.html +2 -2
- data/tools/staticdocs/docs/tools/bucket-explorer.html +2 -2
- data/tools/staticdocs/docs/tools/calendar.html +2 -2
- data/tools/staticdocs/docs/tools/cmd-sender.html +2 -2
- data/tools/staticdocs/docs/tools/cmd-tlm-server.html +2 -2
- data/tools/staticdocs/docs/tools/command_history.html +2 -2
- data/tools/staticdocs/docs/tools/data-extractor.html +2 -2
- data/tools/staticdocs/docs/tools/data-viewer.html +2 -2
- data/tools/staticdocs/docs/tools/handbooks.html +2 -2
- data/tools/staticdocs/docs/tools/limits-monitor.html +2 -2
- data/tools/staticdocs/docs/tools/packet-viewer.html +2 -2
- data/tools/staticdocs/docs/tools/script-runner.html +12 -6
- data/tools/staticdocs/docs/tools/systemhealth.html +42 -0
- data/tools/staticdocs/docs/tools/table-manager.html +3 -3
- data/tools/staticdocs/docs/tools/tlm-grapher.html +2 -2
- data/tools/staticdocs/docs/tools/tlm-viewer.html +2 -2
- data/tools/staticdocs/docs/tools.html +2 -2
- data/tools/staticdocs/docs.html +1 -1
- data/tools/staticdocs/img/script_runner/checks_rb.png +0 -0
- data/tools/staticdocs/img/script_runner/environment_variables.png +0 -0
- data/tools/staticdocs/img/script_runner/right_click.png +0 -0
- data/tools/staticdocs/img/script_runner/script_suite.png +0 -0
- data/tools/staticdocs/img/systemhealth/alert_logs.png +0 -0
- data/tools/staticdocs/img/systemhealth/alert_notifications.png +0 -0
- data/tools/staticdocs/img/systemhealth/disk_usage.png +0 -0
- data/tools/staticdocs/img/systemhealth/process_metrics.png +0 -0
- data/tools/staticdocs/img/systemhealth/redis_metrics.png +0 -0
- data/tools/staticdocs/img/systemhealth/refresh_interval.png +0 -0
- data/tools/staticdocs/img/systemhealth/system_health_configuration.png +0 -0
- data/tools/staticdocs/img/systemhealth/system_overview_gauges.png +0 -0
- data/tools/staticdocs/img/systemhealth/systemhealth.png +0 -0
- data/tools/staticdocs/index.html +1 -1
- data/tools/staticdocs/lunr-index-1749788530521.json +1 -0
- data/tools/staticdocs/lunr-index.json +1 -1
- data/tools/staticdocs/markdown-page.html +1 -1
- data/tools/staticdocs/search-doc-1749788530521.json +1 -0
- data/tools/staticdocs/search-doc.json +1 -1
- data/tools/staticdocs/sitemap.xml +1 -1
- metadata +105 -79
- data/tools/staticdocs/assets/images/checks_rb-89f400098ff47774008ea420860c665c15ebf06819c3ee7050bed301ea0a9f46.png +0 -0
- data/tools/staticdocs/assets/images/right_click-371e3683026c0bb2b27187277b4e99727c6b52965e0190a5f81335248f40ef9b.png +0 -0
- data/tools/staticdocs/assets/images/script_suite-16647c3b3de01a8749f1b5c4ab2f8b452630df8c0470e5be38652acacfc98b5d.png +0 -0
- data/tools/staticdocs/assets/js/019369f3.5dd06a57.js +0 -1
- data/tools/staticdocs/assets/js/058ffc22.ed3ac5fa.js +0 -1
- data/tools/staticdocs/assets/js/0686a885.ef66a55c.js +0 -1
- data/tools/staticdocs/assets/js/0f5d161c.7aacaf90.js +0 -1
- data/tools/staticdocs/assets/js/0ff569c9.7aa50138.js +0 -1
- data/tools/staticdocs/assets/js/103cc3be.ff33b528.js +0 -1
- data/tools/staticdocs/assets/js/13196248.14de6ce1.js +0 -1
- data/tools/staticdocs/assets/js/13c1b4e4.2dafa283.js +0 -1
- data/tools/staticdocs/assets/js/1602.502ef9b1.js +0 -1
- data/tools/staticdocs/assets/js/1e02e6a3.d99a363c.js +0 -1
- data/tools/staticdocs/assets/js/2047b354.d91543a5.js +0 -1
- data/tools/staticdocs/assets/js/22b3ac48.5eb8d876.js +0 -1
- data/tools/staticdocs/assets/js/2368.fd1bb46a.js +0 -4
- data/tools/staticdocs/assets/js/2bb7bf90.1eee5bcb.js +0 -1
- data/tools/staticdocs/assets/js/2c15ad40.7f30b517.js +0 -1
- data/tools/staticdocs/assets/js/35398c5c.4f30c5da.js +0 -1
- data/tools/staticdocs/assets/js/3687.8bc61ef3.js +0 -101
- data/tools/staticdocs/assets/js/3dd7ef3b.dfbe9bb7.js +0 -1
- data/tools/staticdocs/assets/js/40365d27.42b05c12.js +0 -1
- data/tools/staticdocs/assets/js/411898ad.e55efd5d.js +0 -1
- data/tools/staticdocs/assets/js/42170351.2de491d4.js +0 -1
- data/tools/staticdocs/assets/js/43652efd.f7c95691.js +0 -1
- data/tools/staticdocs/assets/js/54d0d530.7cc2c5cc.js +0 -1
- data/tools/staticdocs/assets/js/5b233ba7.29533a03.js +0 -1
- data/tools/staticdocs/assets/js/5bc719f6.62d9a8b8.js +0 -1
- data/tools/staticdocs/assets/js/5c6ce5ec.40e0caf8.js +0 -1
- data/tools/staticdocs/assets/js/5fe211ef.2d29f3fb.js +0 -1
- data/tools/staticdocs/assets/js/6831b732.ec0009ac.js +0 -1
- data/tools/staticdocs/assets/js/696b4199.1c205c60.js +0 -1
- data/tools/staticdocs/assets/js/6b210247.32ded6d5.js +0 -1
- data/tools/staticdocs/assets/js/6b65133b.b2a62736.js +0 -1
- data/tools/staticdocs/assets/js/6f92e431.7bd2a1f1.js +0 -1
- data/tools/staticdocs/assets/js/72c6d8a8.21321ecc.js +0 -1
- data/tools/staticdocs/assets/js/75e64983.e0eb7741.js +0 -1
- data/tools/staticdocs/assets/js/7719.0d312792.js +0 -1
- data/tools/staticdocs/assets/js/80c97f38.a0dfbdf7.js +0 -1
- data/tools/staticdocs/assets/js/89e76475.20b3a636.js +0 -1
- data/tools/staticdocs/assets/js/8f7843ee.6d7c9cd4.js +0 -1
- data/tools/staticdocs/assets/js/9424f0b3.75b12400.js +0 -1
- data/tools/staticdocs/assets/js/964eb012.0eee94ba.js +0 -1
- data/tools/staticdocs/assets/js/97535711.630cee4d.js +0 -1
- data/tools/staticdocs/assets/js/99581c43.73b5cd90.js +0 -1
- data/tools/staticdocs/assets/js/9fb6059a.715fc441.js +0 -1
- data/tools/staticdocs/assets/js/a677c089.76d13f14.js +0 -1
- data/tools/staticdocs/assets/js/a9987364.3b3e7379.js +0 -1
- data/tools/staticdocs/assets/js/a9b2dc27.da1da6f1.js +0 -1
- data/tools/staticdocs/assets/js/b38a6d74.4a10f506.js +0 -1
- data/tools/staticdocs/assets/js/b4596165.08749f15.js +0 -1
- data/tools/staticdocs/assets/js/b6d70f94.776bc00f.js +0 -1
- data/tools/staticdocs/assets/js/b9f60ba6.ce400445.js +0 -1
- data/tools/staticdocs/assets/js/c24eae19.77326c08.js +0 -1
- data/tools/staticdocs/assets/js/cb8c3f08.73cefada.js +0 -1
- data/tools/staticdocs/assets/js/cd879be4.dc2adfcc.js +0 -1
- data/tools/staticdocs/assets/js/d1b923aa.57f5e162.js +0 -1
- data/tools/staticdocs/assets/js/d1bfc316.73bb876f.js +0 -1
- data/tools/staticdocs/assets/js/d57a4b5d.885590b1.js +0 -1
- data/tools/staticdocs/assets/js/d5d77c37.1143a9d4.js +0 -1
- data/tools/staticdocs/assets/js/d66bf9c0.0ffb9759.js +0 -1
- data/tools/staticdocs/assets/js/d8ca4191.fe602968.js +0 -1
- data/tools/staticdocs/assets/js/d9b92eba.a115a366.js +0 -1
- data/tools/staticdocs/assets/js/db8fa1d0.1aefa4e7.js +0 -1
- data/tools/staticdocs/assets/js/dbe31111.9c957b0c.js +0 -1
- data/tools/staticdocs/assets/js/dc5f7beb.ddc630ca.js +0 -1
- data/tools/staticdocs/assets/js/e501b0d1.f9c2d1fc.js +0 -1
- data/tools/staticdocs/assets/js/main.ba1fa268.js +0 -38
- data/tools/staticdocs/assets/js/runtime~main.ca894d1e.js +0 -1
- data/tools/staticdocs/lunr-index-1748640055686.json +0 -1
- data/tools/staticdocs/search-doc-1748640055686.json +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["6319"],{6244:function(e,t,i){i.r(t),i.d(t,{frontMatter:()=>c,default:()=>h,toc:()=>d,metadata:()=>r,assets:()=>o,contentTitle:()=>l});var r=JSON.parse('{"id":"guides/reference-architectures","title":"Reference Architectures","description":"Typical COSMOS use-cases","source":"@site/docs/guides/reference-architectures.md","sourceDirName":"guides","slug":"/guides/reference-architectures","permalink":"/tools/staticdocs/docs/guides/reference-architectures","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/guides/reference-architectures.md","tags":[],"version":"current","frontMatter":{"title":"Reference Architectures","description":"Typical COSMOS use-cases","sidebar_custom_props":{"myEmoji":"\uD83C\uDFD7\uFE0F"}},"sidebar":"defaultSidebar","previous":{"title":"Raspberry Pi","permalink":"/tools/staticdocs/docs/guides/raspberrypi"},"next":{"title":"Script Writing Guide","permalink":"/tools/staticdocs/docs/guides/script-writing"}}'),s=i(2322),n=i(2840);let c={title:"Reference Architectures",description:"Typical COSMOS use-cases",sidebar_custom_props:{myEmoji:"\uD83C\uDFD7\uFE0F"}},l=void 0,o={},d=[{value:"Core Single Server Architecture",id:"core-single-server-architecture",level:2},{value:"Enterprise Single Server Architecture",id:"enterprise-single-server-architecture",level:3},{value:"Enterprise Cloud Architecture (High Reliability / High Availability)",id:"enterprise-cloud-architecture-high-reliability--high-availability",level:3}];function a(e){let t={a:"a",h2:"h2",h3:"h3",li:"li",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:'COSMOS is the best way to command and control hardware with embedded software. The hardware it can control and the configuration of the software is limitless. However, there are several "Reference Architectures" that are commonly used which describe the vast majority of use-cases for COSMOS.'}),"\n",(0,s.jsx)(t.h2,{id:"core-single-server-architecture",children:"Core Single Server Architecture"}),"\n",(0,s.jsxs)(t.p,{children:["COSMOS Core (Open Source) deployed on a single server is most suitable for evaluation, test or development. COSMOS can be deployed on a individual computer with Windows or Mac OS via ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/desktop/",children:"Docker Desktop"}),". It can deployed on Linux directly using Docker on Ubuntu or Podman on RedHat."]}),"\n",(0,s.jsx)(t.p,{children:"If you deploy COSMOS Core you have to configure COSMOS yourself and build all your hardware plugins from scratch. You must rely on the COSMOS documentation and github issues instead of having direct email support from the OpenC3 team. Core configures a single user with a shared password having admin privileges. The Core license is AGPLv3 which means your users must have access to the COSMOS source code and any extensions you build into COSMOS itself."}),"\n",(0,s.jsx)(t.p,{children:"Most Suitible for:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Evaluation of COSMOS"}),"\n",(0,s.jsx)(t.li,{children:"University teams"}),"\n",(0,s.jsx)(t.li,{children:"Individual use"}),"\n",(0,s.jsx)(t.li,{children:"Localized lab development"}),"\n"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Advantages"}),(0,s.jsx)(t.th,{children:"Considerations"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Free (AGPLv3 license)"}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0No OpenC3 support"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Easy to deploy"}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0No Users, RBAC or SSO"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Easy to configure"}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0Limited scalability"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0No Calendar or Autonomic"})]})]})]}),"\n",(0,s.jsx)(t.h3,{id:"enterprise-single-server-architecture",children:"Enterprise Single Server Architecture"}),"\n",(0,s.jsxs)(t.p,{children:["COSMOS Enterprise deployed on a single server is most suitable for formal test, production or operations. COSMOS Enterprise can be deployed on a individual computer with Windows or Mac OS via ",(0,s.jsx)(t.a,{href:"https://docs.docker.com/desktop/",children:"Docker Desktop"}),". It can deployed on Linux directly using Docker on Ubuntu or Podman on RedHat."]}),"\n",(0,s.jsx)(t.p,{children:"Enterprise comes with a number of plugins that help you jump start your development: CCSDS TC/TM/CFDP, SCPI, SNMP, Gems, Protocol Buffers, gRPC, etc. Enterprise comes with email support from the OpenC3 team. Enterprise includes users, RBAC (role based access control) and SSO (single sign-on) through Keycloak. The Enterprise license is Commercial which means you can build proprietary COSMOS extensions and not be required to give your users access to the source code."}),"\n",(0,s.jsx)(t.p,{children:"Most Suitible for:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Quickly connecting to existing hardware via SCPI, SNMP, Gems, gRPC, etc"}),"\n",(0,s.jsx)(t.li,{children:"Controlling hardware utilizing CCSDS TC, TM, CFDP"}),"\n",(0,s.jsxs)(t.li,{children:["Operating cFS (",(0,s.jsx)(t.a,{href:"https://etd.gsfc.nasa.gov/capabilities/core-flight-system/",children:"Core Flight System"}),")"]}),"\n",(0,s.jsx)(t.li,{children:"Formal test with user attribution"}),"\n",(0,s.jsx)(t.li,{children:"Operations for 1 or more satellites"}),"\n"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Advantages"}),(0,s.jsx)(t.th,{children:"Considerations"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0OpenC3 Supported"}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0Limited scalability"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Commercial License"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Library of existing plugins"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Users with RBAC and SSO"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Calendar and Autonomic"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Easy to deploy"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Easy to configure"}),(0,s.jsx)(t.td,{})]})]})]}),"\n",(0,s.jsx)(t.h3,{id:"enterprise-cloud-architecture-high-reliability--high-availability",children:"Enterprise Cloud Architecture (High Reliability / High Availability)"}),"\n",(0,s.jsx)(t.p,{children:"COSMOS Enterprise deployed in the cloud (public or private) is most suitable for operations of satellite constellations or as a satellite operations center. In addition to the benefits listed under the Enterprise Single Server Architecture, Enterprise comes with cloud scripts to help create a reference deployment (EKS, GKE, etc). Enterprise also comes with helm charts to deploy COSMOS in Kubernetes. Running COSMOS in Kubernetes is what achieves high reliability and high availability."}),"\n",(0,s.jsx)(t.p,{children:"Most Suitible for:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Operating a satellite constellation (10-1000 satellites)"}),"\n",(0,s.jsx)(t.li,{children:"Running a satellite ops center which supports many different satellite buses / payloads"}),"\n"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Advantages"}),(0,s.jsx)(t.th,{children:"Considerations"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0OpenC3 Supported"}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0Cloud configuration / complexity"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Commercial License"}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0Kubernetes management"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Library of existing plugins"}),(0,s.jsx)(t.td,{children:"\uD83E\uDD14\xa0\xa0Public cloud costs"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Users with RBAC and SSO"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Calendar and Autonomic"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Cloud configuration scripts"}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"\u2705\xa0\xa0Helm charts"}),(0,s.jsx)(t.td,{})]})]})]})]})}function h(e={}){let{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},2840:function(e,t,i){i.d(t,{Z:()=>l,a:()=>c});var r=i(2784);let s={},n=r.createContext(s);function c(e){let t=r.useContext(n);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["8110"],{9847:function(e,t,a){a.r(t),a.d(t,{frontMatter:()=>c,default:()=>p,toc:()=>d,metadata:()=>n,assets:()=>r,contentTitle:()=>o});var n=JSON.parse('{"id":"guides/dynamic-packets","title":"Dynamic Packets","description":"How COSMOS dynamically builds packets","source":"@site/docs/guides/dynamic-packets.md","sourceDirName":"guides","slug":"/guides/dynamic-packets","permalink":"/tools/staticdocs/docs/guides/dynamic-packets","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/guides/dynamic-packets.md","tags":[],"version":"current","frontMatter":{"title":"Dynamic Packets","description":"How COSMOS dynamically builds packets","sidebar_custom_props":{"myEmoji":"\uD83E\uDDF1"}},"sidebar":"defaultSidebar","previous":{"title":"Custom Widgets","permalink":"/tools/staticdocs/docs/guides/custom-widgets"},"next":{"title":"Exposing Microservices","permalink":"/tools/staticdocs/docs/guides/exposing-microservices"}}'),i=a(2322),s=a(2840);let c={title:"Dynamic Packets",description:"How COSMOS dynamically builds packets",sidebar_custom_props:{myEmoji:"\uD83E\uDDF1"}},o=void 0,r={},d=[{value:"Using Dynamic Update",id:"using-dynamic-update",level:2}];function l(e){let t={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["COSMOS has the ability to dynamically build packets rather than have them statically defined by our ",(0,i.jsx)(t.a,{href:"/docs/configuration/command",children:"COMMAND"})," and ",(0,i.jsx)(t.a,{href:"/docs/configuration/telemetry",children:"TELEMETRY"})," configuration files. This is useful when your telemetry items are dynamic like when generating ",(0,i.jsx)(t.a,{href:"https://prometheus.io/",children:"prometheus"})," metrics."]}),"\n",(0,i.jsxs)(t.p,{children:["The best way to illustrate this capability is with an example. If you're an Enterprise customer, please see the ",(0,i.jsx)(t.a,{href:"https://github.com/OpenC3/cosmos-enterprise-plugins/tree/main/openc3-cosmos-prometheus-metrics",children:"prometheus-metrics"})," plugin."]}),"\n",(0,i.jsx)(t.h2,{id:"using-dynamic-update",children:"Using Dynamic Update"}),"\n",(0,i.jsxs)(t.p,{children:["To use the dynamic update capability in your own code you need to call the ",(0,i.jsx)(t.code,{children:"TargetModel"})," ",(0,i.jsx)(t.code,{children:"dynamic_update"})," method. This method takes an array / list of packets, whether the packets are commands or telemetry, and the filename to create in the config bucket."]}),"\n",(0,i.jsx)(t.p,{children:"Here is the method signature:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-ruby",children:'def dynamic_update(packets, cmd_or_tlm = :TELEMETRY, filename = "dynamic_tlm.txt")\n'})}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-python",children:'def dynamic_update(self, packets, cmd_or_tlm="TELEMETRY", filename="dynamic_tlm.txt")\n'})}),"\n",(0,i.jsx)(t.p,{children:"Here is an example of using this method:"}),"\n",(0,i.jsx)(t.p,{children:"Ruby:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-ruby",children:"# Create a new packet\npacket = Packet.new('INST', 'NEW_PACKET')\n# or get an existing packet\npacket = System.telemetry.packet('INST', 'METRICS')\n# Modify the packet by appending new items to it\npacket.append_item('NEW_ITEM', 32, :FLOAT)\n# Grab the TargetModel associated with the packet's target\ntarget_model = TargetModel.get_model(name: 'INST', scope: 'DEFAULT')\n# Update the target model with the new packet\ntarget_model.dynamic_update([packet])\n"})}),"\n",(0,i.jsx)(t.p,{children:"Python:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-python",children:"# Create a new packet\npacket = Packet('INST', 'NEW_PACKET')\n# or get an existing packet\npacket = System.telemetry.packet('INST', 'METRICS')\n# Modify the packet by appending new items to it\npacket.append_item('NEW_ITEM', 32, 'FLOAT')\n# Grab the TargetModel associated with the packet's target\ntarget_model = TargetModel.get_model(name='INST', scope='DEFAULT')\n# Update the target model with the new packet\ntarget_model.dynamic_update([packet])\n"})}),"\n",(0,i.jsx)(t.p,{children:"When this method is called several things happen:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsx)(t.li,{children:"The COSMOS Redis database is updated with the new packets and the current value table is initialized"}),"\n",(0,i.jsxs)(t.li,{children:["A configuration file for the packets is created and stored at <SCOPE>/targets_modified/<TARGET>/cmd_tlm/dynamic_tlm.txt. Note that if you call ",(0,i.jsx)(t.code,{children:"dynamic_update"})," multiple times you should update the filename so it is not written over."]}),"\n",(0,i.jsx)(t.li,{children:"The COSMOS microservices are informed of the new streaming topics which will contain the raw and decommuted packet data. Part of this action is to restart the microservices so they pickup these changes. For COMMANDS the following are restarted: <SCOPE>__COMMANDLOG__<TARGET> and <SCOPE>__DECOMCMDLOG__<TARGET>. For TELEMETRY the following are restarted: <SCOPE>__PACKET_LOG__<TARGET>, <SCOPE>__DECOMLOG__<TARGET>, and <SCOPE>__DECOM__<TARGET>."}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:["Since ",(0,i.jsx)(t.code,{children:"dynamic_update"})," restarts the LOG microservices there is a potential for a loss of packets during the restart. Thus you should not call ",(0,i.jsx)(t.code,{children:"dynamic_update"})," during critical telemetry processing periods."]})]})}function p(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},2840:function(e,t,a){a.d(t,{Z:()=>o,a:()=>c});var n=a(2784);let i={},s=n.createContext(i);function c(e){let t=n.useContext(s);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]);
|
@@ -0,0 +1,101 @@
|
|
1
|
+
(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["3687"],{282:function(e,t,n){"use strict";e.exports=n(8694)},8928:function(e,t,n){"use strict";var i=n(488),r={wrapper:{position:"relative",display:"inline-block"},hint:{position:"absolute",top:"0",left:"0",borderColor:"transparent",boxShadow:"none",opacity:"1"},input:{position:"relative",verticalAlign:"top",backgroundColor:"transparent"},inputWithNoHint:{position:"relative",verticalAlign:"top"},dropdown:{position:"absolute",top:"100%",left:"0",zIndex:"100",display:"none"},suggestions:{display:"block"},suggestion:{whiteSpace:"nowrap",cursor:"pointer"},suggestionChild:{whiteSpace:"normal"},ltr:{left:"0",right:"auto"},rtl:{left:"auto",right:"0"},defaultClasses:{root:"algolia-autocomplete",prefix:"aa",noPrefix:!1,dropdownMenu:"dropdown-menu",input:"input",hint:"hint",suggestions:"suggestions",suggestion:"suggestion",cursor:"cursor",dataset:"dataset",empty:"empty"},appendTo:{wrapper:{position:"absolute",zIndex:"100",display:"none"},input:{},inputWithNoHint:{},dropdown:{display:"block"}}};i.isMsie()&&i.mixin(r.input,{backgroundImage:"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"}),i.isMsie()&&7>=i.isMsie()&&i.mixin(r.input,{marginTop:"-1px"}),e.exports=r},4371:function(e,t,n){"use strict";var i="aaDataset",r="aaValue",s="aaDatum",o=n(488),a=n(4548),u=n(4570),c=n(8928),l=n(9953);function h(e){(e=e||{}).templates=e.templates||{},e.source||o.error("missing source"),e.name&&(t=e.name,!/^[_a-zA-Z0-9-]+$/.test(t))&&o.error("invalid dataset name: "+e.name),this.query=null,this._isEmpty=!0,this.highlight=!!e.highlight,this.name=void 0===e.name||null===e.name?o.getUniqueId():e.name,this.source=e.source,this.displayFn=(n=(n=e.display||e.displayKey)||"value",o.isFunction(n)?n:function(e){return e[n]}),this.debounce=e.debounce,this.cache=!1!==e.cache,this.templates=(i=e.templates,r=this.displayFn,{empty:i.empty&&o.templatify(i.empty),header:i.header&&o.templatify(i.header),footer:i.footer&&o.templatify(i.footer),suggestion:i.suggestion||function(e){return"<p>"+r(e)+"</p>"}}),this.css=o.mixin({},c,e.appendTo?c.appendTo:{}),this.cssClasses=e.cssClasses=o.mixin({},c.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||o.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix);var t,n,i,r,s=o.className(this.cssClasses.prefix,this.cssClasses.dataset);this.$el=e.$menu&&e.$menu.find(s+"-"+this.name).length>0?a.element(e.$menu.find(s+"-"+this.name)[0]):a.element(u.dataset.replace("%CLASS%",this.name).replace("%PREFIX%",this.cssClasses.prefix).replace("%DATASET%",this.cssClasses.dataset)),this.$menu=e.$menu,this.clearCachedSuggestions()}h.extractDatasetName=function(e){return a.element(e).data(i)},h.extractValue=function(e){return a.element(e).data(r)},h.extractDatum=function(e){var t=a.element(e).data(s);return"string"==typeof t&&(t=JSON.parse(t)),t},o.mixin(h.prototype,l,{_render:function(e,t){if(this.$el){var n,c=this,l=[].slice.call(arguments,2);if(this.$el.empty(),n=t&&t.length,this._isEmpty=!n,!n&&this.templates.empty)this.$el.html((function(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!0}].concat(t),c.templates.empty.apply(this,t)}).apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(n)this.$el.html((function(){var e,n,l=[].slice.call(arguments,0),h=this,p=u.suggestions.replace("%PREFIX%",this.cssClasses.prefix).replace("%SUGGESTIONS%",this.cssClasses.suggestions);return e=a.element(p).css(this.css.suggestions),n=o.map(t,function(e){var t,n=u.suggestion.replace("%PREFIX%",h.cssClasses.prefix).replace("%SUGGESTION%",h.cssClasses.suggestion);return(t=a.element(n).attr({role:"option",id:["option",Math.floor(1e8*Math.random())].join("-")}).append(c.templates.suggestion.apply(this,[e].concat(l)))).data(i,c.name),t.data(r,c.displayFn(e)||void 0),t.data(s,JSON.stringify(e)),t.children().each(function(){a.element(this).css(h.css.suggestionChild)}),t}),e.append.apply(e,n),e}).apply(this,l)).prepend(c.templates.header?h.apply(this,l):null).append(c.templates.footer?p.apply(this,l):null);else if(t&&!Array.isArray(t))throw TypeError("suggestions must be an array");this.$menu&&this.$menu.addClass(this.cssClasses.prefix+(n?"with":"without")+"-"+this.name).removeClass(this.cssClasses.prefix+(n?"without":"with")+"-"+this.name),this.trigger("rendered",e)}function h(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.header.apply(this,t)}function p(){var t=[].slice.call(arguments,0);return t=[{query:e,isEmpty:!n}].concat(t),c.templates.footer.apply(this,t)}},getRoot:function(){return this.$el},update:function(e){function t(t){if(!this.canceled&&e===this.query){var n=[].slice.call(arguments,1);this.cacheSuggestions(e,t,n),this._render.apply(this,[e,t].concat(n))}}if(this.query=e,this.canceled=!1,this.shouldFetchFromCache(e))t.apply(this,[this.cachedSuggestions].concat(this.cachedRenderExtraArgs));else{var n=this,i=function(){n.canceled||n.source(e,t.bind(n))};this.debounce?(clearTimeout(this.debounceTimeout),this.debounceTimeout=setTimeout(function(){n.debounceTimeout=null,i()},this.debounce)):i()}},cacheSuggestions:function(e,t,n){this.cachedQuery=e,this.cachedSuggestions=t,this.cachedRenderExtraArgs=n},shouldFetchFromCache:function(e){return this.cache&&this.cachedQuery===e&&this.cachedSuggestions&&this.cachedSuggestions.length},clearCachedSuggestions:function(){delete this.cachedQuery,delete this.cachedSuggestions,delete this.cachedRenderExtraArgs},cancel:function(){this.canceled=!0},clear:function(){this.$el&&(this.cancel(),this.$el.empty(),this.trigger("rendered",""))},isEmpty:function(){return this._isEmpty},destroy:function(){this.clearCachedSuggestions(),this.$el=null}}),e.exports=h},2034:function(e,t,n){"use strict";var i=n(488),r=n(4548),s=n(9953),o=n(4371),a=n(8928);function u(e){var t,n,s,o=this;(e=e||{}).menu||i.error("menu is required"),i.isArray(e.datasets)||i.isObject(e.datasets)||i.error("1 or more datasets required"),e.datasets||i.error("datasets is required"),this.isOpen=!1,this.isEmpty=!0,this.minLength=e.minLength||0,this.templates={},this.appendTo=e.appendTo||!1,this.css=i.mixin({},a,e.appendTo?a.appendTo:{}),this.cssClasses=e.cssClasses=i.mixin({},a.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix||i.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),t=i.bind(this._onSuggestionClick,this),n=i.bind(this._onSuggestionMouseEnter,this),s=i.bind(this._onSuggestionMouseLeave,this);var c=i.className(this.cssClasses.prefix,this.cssClasses.suggestion);this.$menu=r.element(e.menu).on("mouseenter.aa",c,n).on("mouseleave.aa",c,s).on("click.aa",c,t),this.$container=e.appendTo?e.wrapper:this.$menu,e.templates&&e.templates.header&&(this.templates.header=i.templatify(e.templates.header),this.$menu.prepend(this.templates.header())),e.templates&&e.templates.empty&&(this.templates.empty=i.templatify(e.templates.empty),this.$empty=r.element('<div class="'+i.className(this.cssClasses.prefix,this.cssClasses.empty,!0)+'"></div>'),this.$menu.append(this.$empty),this.$empty.hide()),this.datasets=i.map(e.datasets,function(t){var n,r,s;return n=o.$menu,r=t,s=e.cssClasses,new u.Dataset(i.mixin({$menu:n,cssClasses:s},r))}),i.each(this.datasets,function(e){var t=e.getRoot();t&&0===t.parent().length&&o.$menu.append(t),e.onSync("rendered",o._onRendered,o)}),e.templates&&e.templates.footer&&(this.templates.footer=i.templatify(e.templates.footer),this.$menu.append(this.templates.footer()));var l=this;r.element(window).resize(function(){l._redraw()})}i.mixin(u.prototype,s,{_onSuggestionClick:function(e){this.trigger("suggestionClicked",r.element(e.currentTarget))},_onSuggestionMouseEnter:function(e){var t=r.element(e.currentTarget);if(!t.hasClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0))){this._removeCursor();var n=this;setTimeout(function(){n._setCursor(t,!1)},0)}},_onSuggestionMouseLeave:function(e){e.relatedTarget&&r.element(e.relatedTarget).closest("."+i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).length>0||(this._removeCursor(),this.trigger("cursorRemoved"))},_onRendered:function(e,t){if(this.isEmpty=i.every(this.datasets,function(e){return e.isEmpty()}),this.isEmpty)if(t.length>=this.minLength&&this.trigger("empty"),this.$empty)if(t.length<this.minLength)this._hide();else{var n=this.templates.empty({query:this.datasets[0]&&this.datasets[0].query});this.$empty.html(n),this.$empty.show(),this._show()}else i.any(this.datasets,function(e){return e.templates&&e.templates.empty})?t.length<this.minLength?this._hide():this._show():this._hide();else this.isOpen&&(this.$empty&&(this.$empty.empty(),this.$empty.hide()),t.length>=this.minLength?this._show():this._hide());this.trigger("datasetRendered")},_hide:function(){this.$container.hide()},_show:function(){this.$container.css("display","block"),this._redraw(),this.trigger("shown")},_redraw:function(){this.isOpen&&this.appendTo&&this.trigger("redrawn")},_getSuggestions:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.suggestion))},_getCursor:function(){return this.$menu.find(i.className(this.cssClasses.prefix,this.cssClasses.cursor)).first()},_setCursor:function(e,t){e.first().addClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).attr("aria-selected","true"),this.trigger("cursorMoved",t)},_removeCursor:function(){this._getCursor().removeClass(i.className(this.cssClasses.prefix,this.cssClasses.cursor,!0)).removeAttr("aria-selected")},_moveCursor:function(e){var t,n,i,r;if(this.isOpen){if(n=this._getCursor(),t=this._getSuggestions(),this._removeCursor(),-1==(i=((i=t.index(n)+e)+1)%(t.length+1)-1))return void this.trigger("cursorRemoved");i<-1&&(i=t.length-1),this._setCursor(r=t.eq(i),!0),this._ensureVisible(r)}},_ensureVisible:function(e){var t,n,i,r;n=(t=e.position().top)+e.height()+parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),i=this.$menu.scrollTop(),r=this.$menu.height()+parseInt(this.$menu.css("padding-top"),10)+parseInt(this.$menu.css("padding-bottom"),10),t<0?this.$menu.scrollTop(i+t):r<n&&this.$menu.scrollTop(i+(n-r))},close:function(){this.isOpen&&(this.isOpen=!1,this._removeCursor(),this._hide(),this.trigger("closed"))},open:function(){this.isOpen||(this.isOpen=!0,this.isEmpty||this._show(),this.trigger("opened"))},setLanguageDirection:function(e){this.$menu.css("ltr"===e?this.css.ltr:this.css.rtl)},moveCursorUp:function(){this._moveCursor(-1)},moveCursorDown:function(){this._moveCursor(1)},getDatumForSuggestion:function(e){var t=null;return e.length&&(t={raw:o.extractDatum(e),value:o.extractValue(e),datasetName:o.extractDatasetName(e)}),t},getCurrentCursor:function(){return this._getCursor().first()},getDatumForCursor:function(){return this.getDatumForSuggestion(this._getCursor().first())},getDatumForTopSuggestion:function(){return this.getDatumForSuggestion(this._getSuggestions().first())},cursorTopSuggestion:function(){this._setCursor(this._getSuggestions().first(),!1)},update:function(e){i.each(this.datasets,function(t){t.update(e)})},empty:function(){i.each(this.datasets,function(e){e.clear()}),this.isEmpty=!0},isVisible:function(){return this.isOpen&&!this.isEmpty},destroy:function(){this.$menu.off(".aa"),this.$menu=null,i.each(this.datasets,function(e){e.destroy()})}}),u.Dataset=o,e.exports=u},6809:function(e,t,n){"use strict";var i=n(488),r=n(4548);function s(e){e&&e.el||i.error("EventBus initialized without el"),this.$el=r.element(e.el)}i.mixin(s.prototype,{trigger:function(e,t,n,r){var s=i.Event("autocomplete:"+e);return this.$el.trigger(s,[t,n,r]),s}}),e.exports=s},9953:function(e,t,n){"use strict";var i=n(108),r=/\s+/;function s(e,t,n,i){var s,o,a;if(!n)return this;for(t=t.split(r),n=i?(o=n,a=i,o.bind?o.bind(a):function(){o.apply(a,[].slice.call(arguments,0))}):n,this._callbacks=this._callbacks||{};s=t.shift();)this._callbacks[s]=this._callbacks[s]||{sync:[],async:[]},this._callbacks[s][e].push(n);return this}function o(e,t,n){return function(){for(var i,r=0,s=e.length;!i&&r<s;r+=1)i=!1===e[r].apply(t,n);return!i}}e.exports={onSync:function(e,t,n){return s.call(this,"sync",e,t,n)},onAsync:function(e,t,n){return s.call(this,"async",e,t,n)},off:function(e){var t;if(!this._callbacks)return this;for(e=e.split(r);t=e.shift();)delete this._callbacks[t];return this},trigger:function(e){var t,n,s,a,u;if(!this._callbacks)return this;for(e=e.split(r),s=[].slice.call(arguments,1);(t=e.shift())&&(n=this._callbacks[t]);)a=o(n.sync,this,[t].concat(s)),u=o(n.async,this,[t].concat(s)),a()&&i(u);return this}}},4570:function(e){"use strict";e.exports={wrapper:'<span class="%ROOT%"></span>',dropdown:'<span class="%PREFIX%%DROPDOWN_MENU%"></span>',dataset:'<div class="%PREFIX%%DATASET%-%CLASS%"></div>',suggestions:'<span class="%PREFIX%%SUGGESTIONS%"></span>',suggestion:'<div class="%PREFIX%%SUGGESTION%"></div>'}},1036:function(e,t,n){"use strict";var i={9:"tab",27:"esc",37:"left",39:"right",13:"enter",38:"up",40:"down"},r=n(488),s=n(4548),o=n(9953);function a(e){var t,n,o,a,u,c=this;(e=e||{}).input||r.error("input is missing"),n=r.bind(this._onBlur,this),o=r.bind(this._onFocus,this),a=r.bind(this._onKeydown,this),u=r.bind(this._onInput,this),this.$hint=s.element(e.hint),this.$input=s.element(e.input).on("blur.aa",n).on("focus.aa",o).on("keydown.aa",a),0===this.$hint.length&&(this.setHint=this.getHint=this.clearHint=this.clearHintIfInvalid=r.noop),r.isMsie()?this.$input.on("keydown.aa keypress.aa cut.aa paste.aa",function(e){i[e.which||e.keyCode]||r.defer(r.bind(c._onInput,c,e))}):this.$input.on("input.aa",u),this.query=this.$input.val(),this.$overflowHelper=(t=this.$input,s.element('<pre aria-hidden="true"></pre>').css({position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:t.css("font-family"),fontSize:t.css("font-size"),fontStyle:t.css("font-style"),fontVariant:t.css("font-variant"),fontWeight:t.css("font-weight"),wordSpacing:t.css("word-spacing"),letterSpacing:t.css("letter-spacing"),textIndent:t.css("text-indent"),textRendering:t.css("text-rendering"),textTransform:t.css("text-transform")}).insertAfter(t))}function u(e){return e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}a.normalizeQuery=function(e){return(e||"").replace(/^\s*/g,"").replace(/\s{2,}/g," ")},r.mixin(a.prototype,o,{_onBlur:function(){this.resetInputValue(),this.$input.removeAttr("aria-activedescendant"),this.trigger("blurred")},_onFocus:function(){this.trigger("focused")},_onKeydown:function(e){var t=i[e.which||e.keyCode];this._managePreventDefault(t,e),t&&this._shouldTrigger(t,e)&&this.trigger(t+"Keyed",e)},_onInput:function(){this._checkInputValue()},_managePreventDefault:function(e,t){var n,i,r;switch(e){case"tab":i=this.getHint(),r=this.getInputValue(),n=i&&i!==r&&!u(t);break;case"up":case"down":n=!u(t);break;default:n=!1}n&&t.preventDefault()},_shouldTrigger:function(e,t){var n;return"tab"!==e||!u(t)},_checkInputValue:function(){var e,t,n,i,r;n=(i=e=this.getInputValue(),r=this.query,!!(t=a.normalizeQuery(i)===a.normalizeQuery(r))&&!!this.query&&this.query.length!==e.length),this.query=e,t?n&&this.trigger("whitespaceChanged",this.query):this.trigger("queryChanged",this.query)},focus:function(){this.$input.focus()},blur:function(){this.$input.blur()},getQuery:function(){return this.query},setQuery:function(e){this.query=e},getInputValue:function(){return this.$input.val()},setInputValue:function(e,t){void 0===e&&(e=this.query),this.$input.val(e),t?this.clearHint():this._checkInputValue()},expand:function(){this.$input.attr("aria-expanded","true")},collapse:function(){this.$input.attr("aria-expanded","false")},setActiveDescendant:function(e){this.$input.attr("aria-activedescendant",e)},removeActiveDescendant:function(){this.$input.removeAttr("aria-activedescendant")},resetInputValue:function(){this.setInputValue(this.query,!0)},getHint:function(){return this.$hint.val()},setHint:function(e){this.$hint.val(e)},clearHint:function(){this.setHint("")},clearHintIfInvalid:function(){var e,t,n;n=(e=this.getInputValue())!==(t=this.getHint())&&0===t.indexOf(e),""!==e&&n&&!this.hasOverflow()||this.clearHint()},getLanguageDirection:function(){return(this.$input.css("direction")||"ltr").toLowerCase()},hasOverflow:function(){var e=this.$input.width()-2;return this.$overflowHelper.text(this.getInputValue()),this.$overflowHelper.width()>=e},isCursorAtEnd:function(){var e,t,n;return(e=this.$input.val().length,t=this.$input[0].selectionStart,r.isNumber(t))?t===e:!document.selection||((n=document.selection.createRange()).moveStart("character",-e),e===n.text.length)},destroy:function(){this.$hint.off(".aa"),this.$input.off(".aa"),this.$hint=this.$input=this.$overflowHelper=null}}),e.exports=a},8113:function(e,t,n){"use strict";var i="aaAttrs",r=n(488),s=n(4548),o=n(6809),a=n(1036),u=n(2034),c=n(4570),l=n(8928);function h(e){if((e=e||{}).input||r.error("missing input"),this.isActivated=!1,this.debug=!!e.debug,this.autoselect=!!e.autoselect,this.autoselectOnBlur=!!e.autoselectOnBlur,this.openOnFocus=!!e.openOnFocus,this.minLength=r.isNumber(e.minLength)?e.minLength:1,this.autoWidth=void 0===e.autoWidth||!!e.autoWidth,this.clearOnSelected=!!e.clearOnSelected,this.tabAutocomplete=void 0===e.tabAutocomplete||!!e.tabAutocomplete,e.hint=!!e.hint,e.hint&&e.appendTo)throw Error("[autocomplete.js] hint and appendTo options can't be used at the same time");this.css=e.css=r.mixin({},l,e.appendTo?l.appendTo:{}),this.cssClasses=e.cssClasses=r.mixin({},l.defaultClasses,e.cssClasses||{}),this.cssClasses.prefix=e.cssClasses.formattedPrefix=r.formatPrefix(this.cssClasses.prefix,this.cssClasses.noPrefix),this.listboxId=e.listboxId=[this.cssClasses.root,"listbox",r.getUniqueId()].join("-");var t,n,a=function(e){n=s.element(e.input),o=s.element(c.wrapper.replace("%ROOT%",e.cssClasses.root)).css(e.css.wrapper),e.appendTo||"block"!==n.css("display")||"table"!==n.parent().css("display")||o.css("display","table-cell");var t,n,o,a,u,l=c.dropdown.replace("%PREFIX%",e.cssClasses.prefix).replace("%DROPDOWN_MENU%",e.cssClasses.dropdownMenu);a=s.element(l).css(e.css.dropdown).attr({role:"listbox",id:e.listboxId}),e.templates&&e.templates.dropdownMenu&&a.html(r.templatify(e.templates.dropdownMenu)()),(u=n.clone().css(e.css.hint).css({backgroundAttachment:(t=n).css("background-attachment"),backgroundClip:t.css("background-clip"),backgroundColor:t.css("background-color"),backgroundImage:t.css("background-image"),backgroundOrigin:t.css("background-origin"),backgroundPosition:t.css("background-position"),backgroundRepeat:t.css("background-repeat"),backgroundSize:t.css("background-size")})).val("").addClass(r.className(e.cssClasses.prefix,e.cssClasses.hint,!0)).removeAttr("id name placeholder required").prop("readonly",!0).attr({"aria-hidden":"true",autocomplete:"off",spellcheck:"false",tabindex:-1}),u.removeData&&u.removeData(),n.data(i,{"aria-autocomplete":n.attr("aria-autocomplete"),"aria-expanded":n.attr("aria-expanded"),"aria-owns":n.attr("aria-owns"),autocomplete:n.attr("autocomplete"),dir:n.attr("dir"),role:n.attr("role"),spellcheck:n.attr("spellcheck"),style:n.attr("style"),type:n.attr("type")}),n.addClass(r.className(e.cssClasses.prefix,e.cssClasses.input,!0)).attr({autocomplete:"off",spellcheck:!1,role:"combobox","aria-autocomplete":e.datasets&&e.datasets[0]&&e.datasets[0].displayKey?"both":"list","aria-expanded":"false","aria-label":e.ariaLabel,"aria-owns":e.listboxId}).css(e.hint?e.css.input:e.css.inputWithNoHint);try{n.attr("dir")||n.attr("dir","auto")}catch(e){}return(o=e.appendTo?o.appendTo(s.element(e.appendTo).eq(0)).eq(0):n.wrap(o).parent()).prepend(e.hint?u:null).append(a),{wrapper:o,input:n,hint:u,menu:a}}(e);this.$node=a.wrapper;var u=this.$input=a.input;t=a.menu,n=a.hint,e.dropdownMenuContainer&&s.element(e.dropdownMenuContainer).css("position","relative").append(t.css("top","0")),u.on("blur.aa",function(e){var n=document.activeElement;r.isMsie()&&(t[0]===n||t[0].contains(n))&&(e.preventDefault(),e.stopImmediatePropagation(),r.defer(function(){u.focus()}))}),t.on("mousedown.aa",function(e){e.preventDefault()}),this.eventBus=e.eventBus||new o({el:u}),this.dropdown=new h.Dropdown({appendTo:e.appendTo,wrapper:this.$node,menu:t,datasets:e.datasets,templates:e.templates,cssClasses:e.cssClasses,minLength:this.minLength}).onSync("suggestionClicked",this._onSuggestionClicked,this).onSync("cursorMoved",this._onCursorMoved,this).onSync("cursorRemoved",this._onCursorRemoved,this).onSync("opened",this._onOpened,this).onSync("closed",this._onClosed,this).onSync("shown",this._onShown,this).onSync("empty",this._onEmpty,this).onSync("redrawn",this._onRedrawn,this).onAsync("datasetRendered",this._onDatasetRendered,this),this.input=new h.Input({input:u,hint:n}).onSync("focused",this._onFocused,this).onSync("blurred",this._onBlurred,this).onSync("enterKeyed",this._onEnterKeyed,this).onSync("tabKeyed",this._onTabKeyed,this).onSync("escKeyed",this._onEscKeyed,this).onSync("upKeyed",this._onUpKeyed,this).onSync("downKeyed",this._onDownKeyed,this).onSync("leftKeyed",this._onLeftKeyed,this).onSync("rightKeyed",this._onRightKeyed,this).onSync("queryChanged",this._onQueryChanged,this).onSync("whitespaceChanged",this._onWhitespaceChanged,this),this._bindKeyboardShortcuts(e),this._setLanguageDirection()}r.mixin(h.prototype,{_bindKeyboardShortcuts:function(e){if(e.keyboardShortcuts){var t=this.$input,n=[];r.each(e.keyboardShortcuts,function(e){"string"==typeof e&&(e=e.toUpperCase().charCodeAt(0)),n.push(e)}),s.element(document).keydown(function(e){var i=e.target||e.srcElement,r=i.tagName;if(!i.isContentEditable&&"INPUT"!==r&&"SELECT"!==r&&"TEXTAREA"!==r){var s=e.which||e.keyCode;-1!==n.indexOf(s)&&(t.focus(),e.stopPropagation(),e.preventDefault())}})}},_onSuggestionClicked:function(e,t){var n;(n=this.dropdown.getDatumForSuggestion(t))&&this._select(n,{selectionMethod:"click"})},_onCursorMoved:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getCurrentCursor().attr("id");this.input.setActiveDescendant(i),n&&(t&&this.input.setInputValue(n.value,!0),this.eventBus.trigger("cursorchanged",n.raw,n.datasetName))},_onCursorRemoved:function(){this.input.resetInputValue(),this._updateHint(),this.eventBus.trigger("cursorremoved")},_onDatasetRendered:function(){this._updateHint(),this.eventBus.trigger("updated")},_onOpened:function(){this._updateHint(),this.input.expand(),this.eventBus.trigger("opened")},_onEmpty:function(){this.eventBus.trigger("empty")},_onRedrawn:function(){this.$node.css("top","0px"),this.$node.css("left","0px");var e=this.$input[0].getBoundingClientRect();this.autoWidth&&this.$node.css("width",e.width+"px");var t=this.$node[0].getBoundingClientRect(),n=e.bottom-t.top;this.$node.css("top",n+"px");var i=e.left-t.left;this.$node.css("left",i+"px"),this.eventBus.trigger("redrawn")},_onShown:function(){this.eventBus.trigger("shown"),this.autoselect&&this.dropdown.cursorTopSuggestion()},_onClosed:function(){this.input.clearHint(),this.input.removeActiveDescendant(),this.input.collapse(),this.eventBus.trigger("closed")},_onFocused:function(){if(this.isActivated=!0,this.openOnFocus){var e=this.input.getQuery();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty(),this.dropdown.open()}},_onBlurred:function(){var e=this.dropdown.getDatumForCursor(),t=this.dropdown.getDatumForTopSuggestion(),n={selectionMethod:"blur"};this.debug||(this.autoselectOnBlur&&e?this._select(e,n):this.autoselectOnBlur&&t?this._select(t,n):(this.isActivated=!1,this.dropdown.empty(),this.dropdown.close()))},_onEnterKeyed:function(e,t){var n=this.dropdown.getDatumForCursor(),i=this.dropdown.getDatumForTopSuggestion(),r={selectionMethod:"enterKey"};n?(this._select(n,r),t.preventDefault()):this.autoselect&&i&&(this._select(i,r),t.preventDefault())},_onTabKeyed:function(e,t){var n;if(!this.tabAutocomplete)return void this.dropdown.close();(n=this.dropdown.getDatumForCursor())?(this._select(n,{selectionMethod:"tabKey"}),t.preventDefault()):this._autocomplete(!0)},_onEscKeyed:function(){this.dropdown.close(),this.input.resetInputValue()},_onUpKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorUp(),this.dropdown.open()},_onDownKeyed:function(){var e=this.input.getQuery();this.dropdown.isEmpty&&e.length>=this.minLength?this.dropdown.update(e):this.dropdown.moveCursorDown(),this.dropdown.open()},_onLeftKeyed:function(){"rtl"===this.dir&&this._autocomplete()},_onRightKeyed:function(){"ltr"===this.dir&&this._autocomplete()},_onQueryChanged:function(e,t){this.input.clearHintIfInvalid(),t.length>=this.minLength?this.dropdown.update(t):this.dropdown.empty(),this.dropdown.open(),this._setLanguageDirection()},_onWhitespaceChanged:function(){this._updateHint(),this.dropdown.open()},_setLanguageDirection:function(){var e=this.input.getLanguageDirection();this.dir!==e&&(this.dir=e,this.$node.css("direction",e),this.dropdown.setLanguageDirection(e))},_updateHint:function(){var e,t,n,i;(e=this.dropdown.getDatumForTopSuggestion())&&this.dropdown.isVisible()&&!this.input.hasOverflow()?(t=this.input.getInputValue(),n=a.normalizeQuery(t),(i=RegExp("^(?:"+r.escapeRegExChars(n)+")(.+$)","i").exec(e.value))?this.input.setHint(t+i[1]):this.input.clearHint()):this.input.clearHint()},_autocomplete:function(e){var t,n,i,r;t=this.input.getHint(),n=this.input.getQuery(),i=e||this.input.isCursorAtEnd(),t&&n!==t&&i&&((r=this.dropdown.getDatumForTopSuggestion())&&this.input.setInputValue(r.value),this.eventBus.trigger("autocompleted",r.raw,r.datasetName))},_select:function(e,t){void 0!==e.value&&this.input.setQuery(e.value),this.clearOnSelected?this.setVal(""):this.input.setInputValue(e.value,!0),this._setLanguageDirection(),!1===this.eventBus.trigger("selected",e.raw,e.datasetName,t).isDefaultPrevented()&&(this.dropdown.close(),r.defer(r.bind(this.dropdown.empty,this.dropdown)))},open:function(){if(!this.isActivated){var e=this.input.getInputValue();e.length>=this.minLength?this.dropdown.update(e):this.dropdown.empty()}this.dropdown.open()},close:function(){this.dropdown.close()},setVal:function(e){e=r.toStr(e),this.isActivated?this.input.setInputValue(e):(this.input.setQuery(e),this.input.setInputValue(e,!0)),this._setLanguageDirection()},getVal:function(){return this.input.getQuery()},destroy:function(){var e,t,n;this.input.destroy(),this.dropdown.destroy(),e=this.$node,t=this.cssClasses,n=e.find(r.className(t.prefix,t.input)),r.each(n.data(i),function(e,t){void 0===e?n.removeAttr(t):n.attr(t,e)}),n.detach().removeClass(r.className(t.prefix,t.input,!0)).insertAfter(e),n.removeData&&n.removeData(i),e.remove(),this.$node=null},getWrapper:function(){return this.dropdown.$container[0]}}),h.Dropdown=u,h.Input=a,h.sources=n(657),e.exports=h},4548:function(e){"use strict";e.exports={element:null}},6029:function(e){"use strict";e.exports=function(e){var t=e.match(/Algolia for JavaScript \((\d+\.)(\d+\.)(\d+)\)/)||e.match(/Algolia for vanilla JavaScript (\d+\.)(\d+\.)(\d+)/);if(t)return[t[1],t[2],t[3]]}},488:function(e,t,n){"use strict";var i,r=n(4548);function s(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}e.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(e){if(void 0===e&&(e=navigator.userAgent),/(msie|trident)/i.test(e)){var t=e.match(/(msie |rv:)(\d+(.\d+)?)/i);if(t)return t[2]}return!1},escapeRegExChars:function(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(e){return"number"==typeof e},toStr:function(e){return null==e?"":e+""},cloneDeep:function(e){var t=this.mixin({},e),n=this;return this.each(t,function(e,i){e&&(n.isArray(e)?t[i]=[].concat(e):n.isObject(e)&&(t[i]=n.cloneDeep(e)))}),t},error:function(e){throw Error(e)},every:function(e,t){var n=!0;return e?(this.each(e,function(i,r){n&&(n=t.call(null,i,r,e)&&n)}),!!n):n},any:function(e,t){var n=!1;return e&&this.each(e,function(i,r){if(t.call(null,i,r,e))return n=!0,!1}),n},getUniqueId:(i=0,function(){return i++}),templatify:function(e){if(this.isFunction(e))return e;var t=r.element(e);return"SCRIPT"===t.prop("tagName")?function(){return t.text()}:function(){return String(e)}},defer:function(e){setTimeout(e,0)},noop:function(){},formatPrefix:function(e,t){return t?"":e+"-"},className:function(e,t,n){return(n?"":".")+e+t},escapeHighlightedString:function(e,t,n){t=t||"<em>";var i=document.createElement("div");i.appendChild(document.createTextNode(t)),n=n||"</em>";var r=document.createElement("div");r.appendChild(document.createTextNode(n));var o=document.createElement("div");return o.appendChild(document.createTextNode(e)),o.innerHTML.replace(RegExp(s(i.innerHTML),"g"),t).replace(RegExp(s(r.innerHTML),"g"),n)}}},6123:function(e,t,n){"use strict";var i=n(488),r=n(8659),s=n(6029);e.exports=function(e,t){var n=s(e.as._ua);return n&&n[0]>=3&&n[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),function(n,r){e.search(n,t,function(e,t){if(e)return void i.error(e.message);r(t.hits,t)})}}},657:function(e,t,n){"use strict";e.exports={hits:n(6123),popularIn:n(7776)}},7776:function(e,t,n){"use strict";var i=n(488),r=n(8659),s=n(6029);e.exports=function(e,t,n,o){var a=s(e.as._ua);if(a&&a[0]>=3&&a[1]>20&&((t=t||{}).additionalUA="autocomplete.js "+r),!n.source)return i.error("Missing 'source' key");var u=i.isFunction(n.source)?n.source:function(e){return e[n.source]};if(!n.index)return i.error("Missing 'index' key");var c=n.index;return o=o||{},function(a,l){e.search(a,t,function(e,a){if(e)return void i.error(e.message);if(a.hits.length>0){var h=a.hits[0],p=i.mixin({hitsPerPage:0},n);delete p.source,delete p.index;var d=s(c.as._ua);d&&d[0]>=3&&d[1]>20&&(t.additionalUA="autocomplete.js "+r),c.search(u(h),p,function(e,t){if(e)return void i.error(e.message);var n=[];if(o.includeAll){var r=o.allTitle||"All departments";n.push(i.mixin({facet:{value:r,count:t.nbHits}},i.cloneDeep(h)))}i.each(t.facets,function(e,t){i.each(e,function(e,r){n.push(i.mixin({facet:{facet:t,value:r,count:e}},i.cloneDeep(h)))})});for(var s=1;s<a.hits.length;++s)n.push(a.hits[s]);l(n,a)});return}l([])})}}},8694:function(e,t,n){"use strict";var i=n(3988);n(4548).element=i;var r=n(488);r.isArray=i.isArray,r.isFunction=i.isFunction,r.isObject=i.isPlainObject,r.bind=i.proxy,r.each=function(e,t){i.each(e,function(e,n){return t(n,e)})},r.map=i.map,r.mixin=i.extend,r.Event=i.Event;var s="aaAutocomplete",o=n(8113),a=n(6809);function u(e,t,n,u){n=r.isArray(n)?n:[].slice.call(arguments,2);var c=i(e).each(function(e,r){var c=i(r),l=new a({el:c}),h=u||new o({input:c,eventBus:l,dropdownMenuContainer:t.dropdownMenuContainer,hint:void 0===t.hint||!!t.hint,minLength:t.minLength,autoselect:t.autoselect,autoselectOnBlur:t.autoselectOnBlur,tabAutocomplete:t.tabAutocomplete,openOnFocus:t.openOnFocus,templates:t.templates,debug:t.debug,clearOnSelected:t.clearOnSelected,cssClasses:t.cssClasses,datasets:n,keyboardShortcuts:t.keyboardShortcuts,appendTo:t.appendTo,autoWidth:t.autoWidth,ariaLabel:t.ariaLabel||r.getAttribute("aria-label")});c.data(s,h)});return c.autocomplete={},r.each(["open","close","getVal","setVal","destroy","getWrapper"],function(e){c.autocomplete[e]=function(){var t,n=arguments;return c.each(function(r,o){var a=i(o).data(s);t=a[e].apply(a,n)}),t}}),c}u.sources=o.sources,u.escapeHighlightedString=r.escapeHighlightedString;var c="autocomplete"in window,l=window.autocomplete;u.noConflict=function(){return c?window.autocomplete=l:delete window.autocomplete,u},e.exports=u},8659:function(e){e.exports="0.37.1"},3988:function(e){var t,n,i,r;t=window,function(e){var n,i=1,r=Array.prototype.slice,s=e.isFunction,o=function(e){return"string"==typeof e},a={},u={},c="onfocusin"in t,l={focus:"focusin",blur:"focusout"},h={mouseenter:"mouseover",mouseleave:"mouseout"};function p(e){return e._zid||(e._zid=i++)}function d(e,t,n,i){if((t=f(t)).ns)var r=RegExp("(?:^| )"+t.ns.replace(" "," .* ?")+"(?: |$)");return(a[p(e)]||[]).filter(function(e){return e&&(!t.e||e.e==t.e)&&(!t.ns||r.test(e.ns))&&(!n||p(e.fn)===p(n))&&(!i||e.sel==i)})}function f(e){var t=(""+e).split(".");return{e:t[0],ns:t.slice(1).sort().join(" ")}}function g(e,t){return e.del&&!c&&e.e in l||!!t}function m(e){return h[e]||c&&l[e]||e}function v(t,i,r,s,o,u,c){var l=p(t),d=a[l]||(a[l]=[]);i.split(/\s/).forEach(function(i){if("ready"==i)return e(document).ready(r);var a=f(i);a.fn=r,a.sel=o,a.e in h&&(r=function(t){var n=t.relatedTarget;if(!n||n!==this&&!e.contains(this,n))return a.fn.apply(this,arguments)}),a.del=u;var l=u||r;a.proxy=function(e){if(!(e=C(e)).isImmediatePropagationStopped()){try{var i=Object.getOwnPropertyDescriptor(e,"data");(!i||i.writable)&&(e.data=s)}catch(e){}var r=l.apply(t,e._args==n?[e]:[e].concat(e._args));return!1===r&&(e.preventDefault(),e.stopPropagation()),r}},a.i=d.length,d.push(a),"addEventListener"in t&&t.addEventListener(m(a.e),a.proxy,g(a,c))})}function y(e,t,n,i,r){var s=p(e);(t||"").split(/\s/).forEach(function(t){d(e,t,n,i).forEach(function(t){delete a[s][t.i],"removeEventListener"in e&&e.removeEventListener(m(t.e),t.proxy,g(t,r))})})}u.click=u.mousedown=u.mouseup=u.mousemove="MouseEvents",e.event={add:v,remove:y},e.proxy=function(t,n){var i=2 in arguments&&r.call(arguments,2);if(s(t)){var a=function(){return t.apply(n,i?i.concat(r.call(arguments)):arguments)};return a._zid=p(t),a}if(o(n))if(i)return i.unshift(t[n],t),e.proxy.apply(null,i);else return e.proxy(t[n],t);throw TypeError("expected function")},e.fn.bind=function(e,t,n){return this.on(e,t,n)},e.fn.unbind=function(e,t){return this.off(e,t)},e.fn.one=function(e,t,n,i){return this.on(e,t,n,i,1)};var x=function(){return!0},b=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,S={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};function C(t,i){if(i||!t.isDefaultPrevented){i||(i=t),e.each(S,function(e,n){var r=i[e];t[e]=function(){return this[n]=x,r&&r.apply(i,arguments)},t[n]=b});try{t.timeStamp||(t.timeStamp=Date.now())}catch(e){}(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?!1===i.returnValue:i.getPreventDefault&&i.getPreventDefault())&&(t.isDefaultPrevented=x)}return t}function E(e){var t,i={originalEvent:e};for(t in e)w.test(t)||e[t]===n||(i[t]=e[t]);return C(i,e)}e.fn.delegate=function(e,t,n){return this.on(t,e,n)},e.fn.undelegate=function(e,t,n){return this.off(t,e,n)},e.fn.live=function(t,n){return e(document.body).delegate(this.selector,t,n),this},e.fn.die=function(t,n){return e(document.body).undelegate(this.selector,t,n),this},e.fn.on=function(t,i,a,u,c){var l,h,p=this;return t&&!o(t)?(e.each(t,function(e,t){p.on(e,i,a,t,c)}),p):(o(i)||s(u)||!1===u||(u=a,a=i,i=n),(n===u||!1===a)&&(u=a,a=n),!1===u&&(u=b),p.each(function(n,s){c&&(l=function(e){return y(s,e.type,u),u.apply(this,arguments)}),i&&(h=function(t){var n,o=e(t.target).closest(i,s).get(0);if(o&&o!==s)return n=e.extend(E(t),{currentTarget:o,liveFired:s}),(l||u).apply(o,[n].concat(r.call(arguments,1)))}),v(s,t,u,a,i,h||l)}))},e.fn.off=function(t,i,r){var a=this;return t&&!o(t)?(e.each(t,function(e,t){a.off(e,i,t)}),a):(o(i)||s(r)||!1===r||(r=i,i=n),!1===r&&(r=b),a.each(function(){y(this,t,r,i)}))},e.fn.trigger=function(t,n){return(t=o(t)||e.isPlainObject(t)?e.Event(t):C(t))._args=n,this.each(function(){t.type in l&&"function"==typeof this[t.type]?this[t.type]():"dispatchEvent"in this?this.dispatchEvent(t):e(this).triggerHandler(t,n)})},e.fn.triggerHandler=function(t,n){var i,r;return this.each(function(s,a){(i=E(o(t)?e.Event(t):t))._args=n,i.target=a,e.each(d(a,t.type||t),function(e,t){if(r=t.proxy(i),i.isImmediatePropagationStopped())return!1})}),r},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(t){e.fn[t]=function(e){return 0 in arguments?this.bind(t,e):this.trigger(t)}}),e.Event=function(e,t){o(e)||(e=(t=e).type);var n=document.createEvent(u[e]||"Events"),i=!0;if(t)for(var r in t)"bubbles"==r?i=!!t[r]:n[r]=t[r];return n.initEvent(e,i,!0),C(n)}}(r=function(){var e,n,i,r,s,o,a=[],u=a.concat,c=a.filter,l=a.slice,h=t.document,p={},d={},f={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},g=/^\s*<(\w+|!)[^>]*>/,m=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,y=/^(?:body|html)$/i,x=/([A-Z])/g,b=["val","css","html","text","data","width","height","offset"],w=h.createElement("table"),S=h.createElement("tr"),C={tr:h.createElement("tbody"),tbody:w,thead:w,tfoot:w,td:S,th:S,"*":h.createElement("div")},E=/complete|loaded|interactive/,_=/^[\w-]*$/,k={},T=k.toString,O={},L=h.createElement("div"),A={tabindex:"tabIndex",readonly:"readOnly",for:"htmlFor",class:"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},$=Array.isArray||function(e){return e instanceof Array};function P(e){return null==e?String(e):k[T.call(e)]||"object"}function I(e){return"function"==P(e)}function Q(e){return null!=e&&e==e.window}function R(e){return null!=e&&e.nodeType==e.DOCUMENT_NODE}function N(e){return"object"==P(e)}function D(e){return N(e)&&!Q(e)&&Object.getPrototypeOf(e)==Object.prototype}function F(e){var t=!!e&&"length"in e&&e.length,n=i.type(e);return"function"!=n&&!Q(e)&&("array"==n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function j(e){return e.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function H(e){return e in d?d[e]:d[e]=RegExp("(^|\\s)"+e+"(\\s|$)")}function V(e,t){return"number"!=typeof t||f[j(e)]?t:t+"px"}function B(e){return"children"in e?l.call(e.children):i.map(e.childNodes,function(e){if(1==e.nodeType)return e})}function M(e,t){var n,i=e?e.length:0;for(n=0;n<i;n++)this[n]=e[n];this.length=i,this.selector=t||""}function q(e,t){return null==t?i(e):i(e).filter(t)}function z(e,t,n,i){return I(t)?t.call(e,n,i):t}function K(e,t,n){null==n?e.removeAttribute(t):e.setAttribute(t,n)}function W(t,n){var i=t.className||"",r=i&&i.baseVal!==e;if(e===n)return r?i.baseVal:i;r?i.baseVal=n:t.className=n}function U(e){try{return e?"true"==e||"false"!=e&&("null"==e?null:+e+""==e?+e:/^[\[\{]/.test(e)?i.parseJSON(e):e):e}catch(t){return e}}return O.matches=function(e,t){if(!t||!e||1!==e.nodeType)return!1;var n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.matchesSelector;if(n)return n.call(e,t);var i,r=e.parentNode,s=!r;return s&&(r=L).appendChild(e),i=~O.qsa(r,t).indexOf(e),s&&L.removeChild(e),i},s=function(e){return e.replace(/-+(.)?/g,function(e,t){return t?t.toUpperCase():""})},o=function(e){return c.call(e,function(t,n){return e.indexOf(t)==n})},O.fragment=function(t,n,r){var s,o,a;return m.test(t)&&(s=i(h.createElement(RegExp.$1))),s||(t.replace&&(t=t.replace(v,"<$1></$2>")),e===n&&(n=g.test(t)&&RegExp.$1),n in C||(n="*"),(a=C[n]).innerHTML=""+t,s=i.each(l.call(a.childNodes),function(){a.removeChild(this)})),D(r)&&(o=i(s),i.each(r,function(e,t){b.indexOf(e)>-1?o[e](t):o.attr(e,t)})),s},O.Z=function(e,t){return new M(e,t)},O.isZ=function(e){return e instanceof O.Z},O.init=function(t,n){var r,s;if(!t)return O.Z();if("string"==typeof t)if("<"==(t=t.trim())[0]&&g.test(t))r=O.fragment(t,RegExp.$1,n),t=null;else{if(e!==n)return i(n).find(t);r=O.qsa(h,t)}else if(I(t))return i(h).ready(t);else if(O.isZ(t))return t;else if($(t))s=t,r=c.call(s,function(e){return null!=e});else if(N(t))r=[t],t=null;else if(g.test(t))r=O.fragment(t.trim(),RegExp.$1,n),t=null;else{if(e!==n)return i(n).find(t);r=O.qsa(h,t)}return O.Z(r,t)},(i=function(e,t){return O.init(e,t)}).extend=function(t){var i,r=l.call(arguments,1);return"boolean"==typeof t&&(i=t,t=r.shift()),r.forEach(function(r){!function t(i,r,s){for(n in r)s&&(D(r[n])||$(r[n]))?(D(r[n])&&!D(i[n])&&(i[n]={}),$(r[n])&&!$(i[n])&&(i[n]=[]),t(i[n],r[n],s)):r[n]!==e&&(i[n]=r[n])}(t,r,i)}),t},O.qsa=function(e,t){var n,i="#"==t[0],r=!i&&"."==t[0],s=i||r?t.slice(1):t,o=_.test(s);return e.getElementById&&o&&i?(n=e.getElementById(s))?[n]:[]:1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType?[]:l.call(o&&!i&&e.getElementsByClassName?r?e.getElementsByClassName(s):e.getElementsByTagName(t):e.querySelectorAll(t))},i.contains=h.documentElement.contains?function(e,t){return e!==t&&e.contains(t)}:function(e,t){for(;t&&(t=t.parentNode);)if(t===e)return!0;return!1},i.type=P,i.isFunction=I,i.isWindow=Q,i.isArray=$,i.isPlainObject=D,i.isEmptyObject=function(e){var t;for(t in e)return!1;return!0},i.isNumeric=function(e){var t=Number(e),n=typeof e;return null!=e&&"boolean"!=n&&("string"!=n||e.length)&&!isNaN(t)&&isFinite(t)||!1},i.inArray=function(e,t,n){return a.indexOf.call(t,e,n)},i.camelCase=s,i.trim=function(e){return null==e?"":String.prototype.trim.call(e)},i.uuid=0,i.support={},i.expr={},i.noop=function(){},i.map=function(e,t){var n,r,s,o=[];if(F(e))for(r=0;r<e.length;r++)null!=(n=t(e[r],r))&&o.push(n);else for(s in e)null!=(n=t(e[s],s))&&o.push(n);return o.length>0?i.fn.concat.apply([],o):o},i.each=function(e,t){var n,i;if(F(e))for(n=0;n<e.length&&!1!==t.call(e[n],n,e[n]);n++);else for(i in e)if(!1===t.call(e[i],i,e[i]))break;return e},i.grep=function(e,t){return c.call(e,t)},t.JSON&&(i.parseJSON=JSON.parse),i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){k["[object "+t+"]"]=t.toLowerCase()}),i.fn={constructor:O.Z,length:0,forEach:a.forEach,reduce:a.reduce,push:a.push,sort:a.sort,splice:a.splice,indexOf:a.indexOf,concat:function(){var e,t,n=[];for(e=0;e<arguments.length;e++)t=arguments[e],n[e]=O.isZ(t)?t.toArray():t;return u.apply(O.isZ(this)?this.toArray():this,n)},map:function(e){return i(i.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return i(l.apply(this,arguments))},ready:function(e){return E.test(h.readyState)&&h.body?e(i):h.addEventListener("DOMContentLoaded",function(){e(i)},!1),this},get:function(t){return e===t?l.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(e){return a.every.call(this,function(t,n){return!1!==e.call(t,n,t)}),this},filter:function(e){return I(e)?this.not(this.not(e)):i(c.call(this,function(t){return O.matches(t,e)}))},add:function(e,t){return i(o(this.concat(i(e,t))))},is:function(e){return this.length>0&&O.matches(this[0],e)},not:function(t){var n=[];if(I(t)&&t.call!==e)this.each(function(e){t.call(this,e)||n.push(this)});else{var r="string"==typeof t?this.filter(t):F(t)&&I(t.item)?l.call(t):i(t);this.forEach(function(e){0>r.indexOf(e)&&n.push(e)})}return i(n)},has:function(e){return this.filter(function(){return N(e)?i.contains(this,e):i(this).find(e).size()})},eq:function(e){return -1===e?this.slice(e):this.slice(e,+e+1)},first:function(){var e=this[0];return e&&!N(e)?e:i(e)},last:function(){var e=this[this.length-1];return e&&!N(e)?e:i(e)},find:function(e){var t,n=this;return e?"object"==typeof e?i(e).filter(function(){var e=this;return a.some.call(n,function(t){return i.contains(t,e)})}):1==this.length?i(O.qsa(this[0],e)):this.map(function(){return O.qsa(this,e)}):i()},closest:function(e,t){var n=[],r="object"==typeof e&&i(e);return this.each(function(i,s){for(;s&&!(r?r.indexOf(s)>=0:O.matches(s,e));)s=s!==t&&!R(s)&&s.parentNode;s&&0>n.indexOf(s)&&n.push(s)}),i(n)},parents:function(e){for(var t=[],n=this;n.length>0;)n=i.map(n,function(e){if((e=e.parentNode)&&!R(e)&&0>t.indexOf(e))return t.push(e),e});return q(t,e)},parent:function(e){return q(o(this.pluck("parentNode")),e)},children:function(e){return q(this.map(function(){return B(this)}),e)},contents:function(){return this.map(function(){return this.contentDocument||l.call(this.childNodes)})},siblings:function(e){return q(this.map(function(e,t){return c.call(B(t.parentNode),function(e){return e!==t})}),e)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(e){return i.map(this,function(t){return t[e]})},show:function(){return this.each(function(){var e,t,n;"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=(p[e=this.nodeName]||(t=h.createElement(e),h.body.appendChild(t),n=getComputedStyle(t,"").getPropertyValue("display"),t.parentNode.removeChild(t),"none"==n&&(n="block"),p[e]=n),p[e]))})},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){var t=I(e);if(this[0]&&!t)var n=i(e).get(0),r=n.parentNode||this.length>1;return this.each(function(s){i(this).wrapAll(t?e.call(this,s):r?n.cloneNode(!0):n)})},wrapAll:function(e){if(this[0]){var t;for(i(this[0]).before(e=i(e));(t=e.children()).length;)e=t.first();i(e).append(this)}return this},wrapInner:function(e){var t=I(e);return this.each(function(n){var r=i(this),s=r.contents(),o=t?e.call(this,n):e;s.length?s.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){i(this).replaceWith(i(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var n=i(this);(e===t?"none"==n.css("display"):t)?n.show():n.hide()})},prev:function(e){return i(this.pluck("previousElementSibling")).filter(e||"*")},next:function(e){return i(this.pluck("nextElementSibling")).filter(e||"*")},html:function(e){return 0 in arguments?this.each(function(t){var n=this.innerHTML;i(this).empty().append(z(this,e,t,n))}):0 in this?this[0].innerHTML:null},text:function(e){return 0 in arguments?this.each(function(t){var n=z(this,e,t,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,i){var r;return"string"!=typeof t||1 in arguments?this.each(function(e){if(1===this.nodeType)if(N(t))for(n in t)K(this,n,t[n]);else K(this,t,z(this,i,e,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(r=this[0].getAttribute(t))?r:e},removeAttr:function(e){return this.each(function(){1===this.nodeType&&e.split(" ").forEach(function(e){K(this,e)},this)})},prop:function(e,t){return e=A[e]||e,1 in arguments?this.each(function(n){this[e]=z(this,t,n,this[e])}):this[0]&&this[0][e]},removeProp:function(e){return e=A[e]||e,this.each(function(){delete this[e]})},data:function(t,n){var i="data-"+t.replace(x,"-$1").toLowerCase(),r=1 in arguments?this.attr(i,n):this.attr(i);return null!==r?U(r):e},val:function(e){return 0 in arguments?(null==e&&(e=""),this.each(function(t){this.value=z(this,e,t,this.value)})):this[0]&&(this[0].multiple?i(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(e){if(e)return this.each(function(t){var n=i(this),r=z(this,e,t,n.offset()),s=n.offsetParent().offset(),o={top:r.top-s.top,left:r.left-s.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(h.documentElement!==this[0]&&!i.contains(h.documentElement,this[0]))return{top:0,left:0};var n=this[0].getBoundingClientRect();return{left:n.left+t.pageXOffset,top:n.top+t.pageYOffset,width:Math.round(n.width),height:Math.round(n.height)}},css:function(e,t){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[s(e)]||getComputedStyle(r,"").getPropertyValue(e)}if($(e)){if(!r)return;var o={},a=getComputedStyle(r,"");return i.each(e,function(e,t){o[t]=r.style[s(t)]||a.getPropertyValue(t)}),o}}var u="";if("string"==P(e))t||0===t?u=j(e)+":"+V(e,t):this.each(function(){this.style.removeProperty(j(e))});else for(n in e)e[n]||0===e[n]?u+=j(n)+":"+V(n,e[n])+";":this.each(function(){this.style.removeProperty(j(n))});return this.each(function(){this.style.cssText+=";"+u})},index:function(e){return e?this.indexOf(i(e)[0]):this.parent().children().indexOf(this[0])},hasClass:function(e){return!!e&&a.some.call(this,function(e){return this.test(W(e))},H(e))},addClass:function(e){return e?this.each(function(t){if("className"in this){r=[];var n=W(this);z(this,e,t,n).split(/\s+/g).forEach(function(e){i(this).hasClass(e)||r.push(e)},this),r.length&&W(this,n+(n?" ":"")+r.join(" "))}}):this},removeClass:function(t){return this.each(function(n){if("className"in this){if(e===t)return W(this,"");z(this,t,n,r=W(this)).split(/\s+/g).forEach(function(e){r=r.replace(H(e)," ")}),W(this,r.trim())}})},toggleClass:function(t,n){return t?this.each(function(r){var s=i(this);z(this,t,r,W(this)).split(/\s+/g).forEach(function(t){(e===n?!s.hasClass(t):n)?s.addClass(t):s.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var e=this[0],t=this.offsetParent(),n=this.offset(),r=y.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(i(e).css("margin-top"))||0,n.left-=parseFloat(i(e).css("margin-left"))||0,r.top+=parseFloat(i(t[0]).css("border-top-width"))||0,r.left+=parseFloat(i(t[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||h.body;e&&!y.test(e.nodeName)&&"static"==i(e).css("position");)e=e.offsetParent;return e})}},i.fn.detach=i.fn.remove,["width","height"].forEach(function(t){var n=t.replace(/./,function(e){return e[0].toUpperCase()});i.fn[t]=function(r){var s,o=this[0];return e===r?Q(o)?o["inner"+n]:R(o)?o.documentElement["scroll"+n]:(s=this.offset())&&s[t]:this.each(function(e){(o=i(this)).css(t,z(this,r,e,o[t]()))})}}),["after","prepend","before","append"].forEach(function(n,r){var s=r%2;i.fn[n]=function(){var n,o,a=i.map(arguments,function(t){var r=[];return"array"==(n=P(t))?(t.forEach(function(t){return t.nodeType!==e?r.push(t):i.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(O.fragment(t)))}),r):"object"==n||null==t?t:O.fragment(t)}),u=this.length>1;return a.length<1?this:this.each(function(e,n){o=s?n:n.parentNode,n=0==r?n.nextSibling:1==r?n.firstChild:2==r?n:null;var c=i.contains(h.documentElement,o);a.forEach(function(e){if(u)e=e.cloneNode(!0);else if(!o)return i(e).remove();o.insertBefore(e,n),c&&function e(t,n){n(t);for(var i=0,r=t.childNodes.length;i<r;i++)e(t.childNodes[i],n)}(e,function(e){if(null!=e.nodeName&&"SCRIPT"===e.nodeName.toUpperCase()&&(!e.type||"text/javascript"===e.type)&&!e.src){var n=e.ownerDocument?e.ownerDocument.defaultView:t;n.eval.call(n,e.innerHTML)}})})})},i.fn[s?n+"To":"insert"+(r?"Before":"After")]=function(e){return i(e)[n](this),this}}),O.Z.prototype=M.prototype=i.fn,O.uniq=o,O.deserializeValue=U,i.zepto=O,i}()),i=[],r.fn.remove=function(){return this.each(function(){this.parentNode&&("IMG"===this.tagName&&(i.push(this),this.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",n&&clearTimeout(n),n=setTimeout(function(){i=[]},6e4)),this.parentNode.removeChild(this))})},function(e){var t={},n=e.fn.data,i=e.camelCase,r=e.expando="Zepto"+ +new Date,s=[];function o(n,o,a){var u,c,l=n[r]||(n[r]=++e.uuid),h=t[l]||(t[l]=(u=n,c={},e.each(u.attributes||s,function(t,n){0==n.name.indexOf("data-")&&(c[i(n.name.replace("data-",""))]=e.zepto.deserializeValue(n.value))}),c));return void 0!==o&&(h[i(o)]=a),h}e.fn.data=function(s,a){return void 0===a?e.isPlainObject(s)?this.each(function(t,n){e.each(s,function(e,t){o(n,e,t)})}):0 in this?function(s,a){var u=s[r],c=u&&t[u];if(void 0===a)return c||o(s);if(c){if(a in c)return c[a];var l=i(a);if(l in c)return c[l]}return n.call(e(s),a)}(this[0],s):void 0:this.each(function(){o(this,s,a)})},e.data=function(t,n,i){return e(t).data(n,i)},e.hasData=function(n){var i=n[r],s=i&&t[i];return!!s&&!e.isEmptyObject(s)},e.fn.removeData=function(n){return"string"==typeof n&&(n=n.split(/\s+/)),this.each(function(){var s=this[r],o=s&&t[s];o&&e.each(n||o,function(e){delete o[n?i(this):e]})})},["remove","empty"].forEach(function(t){var n=e.fn[t];e.fn[t]=function(){var e=this.find("*");return"remove"===t&&(e=e.add(this)),e.removeData(),n.call(this)}})}(r),e.exports=r},2148:function(e,t){!function(e){var t=/\S/,n=/\"/g,i=/\n/g,r=/\r/g,s=/\\/g,o=/\u2028/,a=/\u2029/;function u(e){return e.trim?e.trim():e.replace(/^\s*|\s*$/g,"")}function c(e,t,n){if(t.charAt(n)!=e.charAt(0))return!1;for(var i=1,r=e.length;i<r;i++)if(t.charAt(n+i)!=e.charAt(i))return!1;return!0}e.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},e.scan=function(n,i){var r,s=n.length,o=0,a=null,l=null,h="",p=[],d=!1,f=0,g=0,m="{{",v="}}";function y(){h.length>0&&(p.push({tag:"_t",text:new String(h)}),h="")}function x(n,i){if(y(),n&&function(){for(var n=!0,i=g;i<p.length;i++)if(!(n=e.tags[p[i].tag]<e.tags._v||"_t"==p[i].tag&&null===p[i].text.match(t)))return!1;return n}())for(var r,s=g;s<p.length;s++)p[s].text&&((r=p[s+1])&&">"==r.tag&&(r.indent=p[s].text.toString()),p.splice(s,1));else i||p.push({tag:"\n"});d=!1,g=p.length}for(i&&(m=(i=i.split(" "))[0],v=i[1]),f=0;f<s;f++){0==o?c(m,n,f)?(--f,y(),o=1):"\n"==n.charAt(f)?x(d):h+=n.charAt(f):1==o?(f+=m.length-1,"="==(a=(l=e.tags[n.charAt(f+1)])?n.charAt(f+1):"_v")?(f=function(e,t){var n="="+v,i=e.indexOf(n,t),r=u(e.substring(e.indexOf("=",t)+1,i)).split(" ");return m=r[0],v=r[r.length-1],i+n.length-1}(n,f),o=0):(l&&f++,o=2),d=f):c(v,n,f)?(p.push({tag:a,n:u(h),otag:m,ctag:v,i:"/"==a?d-m.length:f+v.length}),h="",f+=v.length-1,o=0,"{"==a&&("}}"==v?f++:"}"===(r=p[p.length-1]).n.substr(r.n.length-1)&&(r.n=r.n.substring(0,r.n.length-1)))):h+=n.charAt(f)}return x(d,!0),p};var l={_t:!0,"\n":!0,$:!0,"/":!0};e.stringify=function(t,n,i){return"{code: function (c,p,i) { "+e.wrapMain(t.code)+" },"+function e(t){var n=[];for(var i in t.partials)n.push('"'+p(i)+'":{name:"'+p(t.partials[i].name)+'", '+e(t.partials[i])+"}");return"partials: {"+n.join(",")+"}, subs: "+function(e){var t=[];for(var n in e)t.push('"'+p(n)+'": function(c,p,t,i) {'+e[n]+"}");return"{ "+t.join(",")+" }"}(t.subs)}(t)+"}"};var h=0;function p(e){return e.replace(s,"\\\\").replace(n,'\\"').replace(i,"\\n").replace(r,"\\r").replace(o,"\\u2028").replace(a,"\\u2029")}function d(e){return~e.indexOf(".")?"d":"f"}function f(e,t){var n="<"+(t.prefix||"")+e.n+h++;return t.partials[n]={name:e.n,partials:{}},t.code+='t.b(t.rp("'+p(n)+'",c,p,"'+(e.indent||"")+'"));',n}function g(e,t){t.code+="t.b(t.t(t."+d(e.n)+'("'+p(e.n)+'",c,p,0)));'}function m(e){return"t.b("+e+");"}e.generate=function(t,n,i){h=0;var r={code:"",subs:{},partials:{}};return(e.walk(t,r),i.asString)?this.stringify(r,n,i):this.makeTemplate(r,n,i)},e.wrapMain=function(e){return'var t=this;t.b(i=i||"");'+e+"return t.fl();"},e.template=e.Template,e.makeTemplate=function(e,t,n){var i=this.makePartials(e);return i.code=Function("c","p","i",this.wrapMain(e.code)),new this.template(i,t,this,n)},e.makePartials=function(e){var t,n={subs:{},partials:e.partials,name:e.name};for(t in n.partials)n.partials[t]=this.makePartials(n.partials[t]);for(t in e.subs)n.subs[t]=Function("c","p","t","i",e.subs[t]);return n},e.codegen={"#":function(t,n){n.code+="if(t.s(t."+d(t.n)+'("'+p(t.n)+'",c,p,1),c,p,0,'+t.i+","+t.end+',"'+t.otag+" "+t.ctag+'")){t.rs(c,p,function(c,p,t){',e.walk(t.nodes,n),n.code+="});c.pop();}"},"^":function(t,n){n.code+="if(!t.s(t."+d(t.n)+'("'+p(t.n)+'",c,p,1),c,p,1,0,0,"")){',e.walk(t.nodes,n),n.code+="};"},">":f,"<":function(t,n){var i={partials:{},code:"",subs:{},inPartial:!0};e.walk(t.nodes,i);var r=n.partials[f(t,n)];r.subs=i.subs,r.partials=i.partials},$:function(t,n){var i={subs:{},code:"",partials:n.partials,prefix:t.n};e.walk(t.nodes,i),n.subs[t.n]=i.code,n.inPartial||(n.code+='t.sub("'+p(t.n)+'",c,p,i);')},"\n":function(e,t){t.code+=m('"\\n"'+(e.last?"":" + i"))},_v:function(e,t){t.code+="t.b(t.v(t."+d(e.n)+'("'+p(e.n)+'",c,p,0)));'},_t:function(e,t){t.code+=m('"'+p(e.text)+'"')},"{":g,"&":g},e.walk=function(t,n){for(var i,r=0,s=t.length;r<s;r++)(i=e.codegen[t[r].tag])&&i(t[r],n);return n},e.parse=function(t,n,i){return function t(n,i,r,s){var o=[],a=null,u=null,c=null;for(u=r[r.length-1];n.length>0;){if(c=n.shift(),u&&"<"==u.tag&&!(c.tag in l))throw Error("Illegal content in < super tag.");if(e.tags[c.tag]<=e.tags.$||function(e,t){for(var n=0,i=t.length;n<i;n++)if(t[n].o==e.n)return e.tag="#",!0}(c,s))r.push(c),c.nodes=t(n,c.tag,r,s);else if("/"==c.tag){if(0===r.length)throw Error("Closing tag without opener: /"+c.n);if(a=r.pop(),c.n!=a.n&&!function(e,t,n){for(var i=0,r=n.length;i<r;i++)if(n[i].c==e&&n[i].o==t)return!0}(c.n,a.n,s))throw Error("Nesting error: "+a.n+" vs. "+c.n);return a.end=c.i,o}else"\n"==c.tag&&(c.last=0==n.length||"\n"==n[0].tag);o.push(c)}if(r.length>0)throw Error("missing closing tag: "+r.pop().n);return o}(t,"",[],(i=i||{}).sectionTags||[])},e.cache={},e.cacheKey=function(e,t){return[e,!!t.asString,!!t.disableLambda,t.delimiters,!!t.modelGet].join("||")},e.compile=function(t,n){n=n||{};var i=e.cacheKey(t,n),r=this.cache[i];if(r){var s=r.partials;for(var o in s)delete s[o].instance;return r}return r=this.generate(this.parse(this.scan(t,n.delimiters),t,n),t,n),this.cache[i]=r}}(t)},112:function(e,t,n){var i=n(2148);i.Template=n(8719).Template,i.template=i.Template,e.exports=i},8719:function(e,t){!function(e){function t(e,t,n){var i;return t&&"object"==typeof t&&(void 0!==t[e]?i=t[e]:n&&t.get&&"function"==typeof t.get&&(i=t.get(e))),i}e.Template=function(e,t,n,i){e=e||{},this.r=e.code||this.r,this.c=n,this.options=i||{},this.text=t||"",this.partials=e.partials||{},this.subs=e.subs||{},this.buf=""},e.Template.prototype={r:function(e,t,n){return""},v:function(e){return a.test(e=u(e))?e.replace(n,"&").replace(i,"<").replace(r,">").replace(s,"'").replace(o,"""):e},t:u,render:function(e,t,n){return this.ri([e],t||{},n)},ri:function(e,t,n){return this.r(e,t,n)},ep:function(e,t){var n=this.partials[e],i=t[n.name];if(n.instance&&n.base==i)return n.instance;if("string"==typeof i){if(!this.c)throw Error("No compiler available.");i=this.c.compile(i,this.options)}if(!i)return null;if(this.partials[e].base=i,n.subs){for(key in t.stackText||(t.stackText={}),n.subs)t.stackText[key]||(t.stackText[key]=void 0!==this.activeSub&&t.stackText[this.activeSub]?t.stackText[this.activeSub]:this.text);i=function(e,t,n,i,r,s){function o(){}function a(){}o.prototype=e,a.prototype=e.subs;var u,c=new o;for(u in c.subs=new a,c.subsText={},c.buf="",c.stackSubs=i=i||{},c.subsText=s,t)i[u]||(i[u]=t[u]);for(u in i)c.subs[u]=i[u];for(u in c.stackPartials=r=r||{},n)r[u]||(r[u]=n[u]);for(u in r)c.partials[u]=r[u];return c}(i,n.subs,n.partials,this.stackSubs,this.stackPartials,t.stackText)}return this.partials[e].instance=i,i},rp:function(e,t,n,i){var r=this.ep(e,n);return r?r.ri(t,n,i):""},rs:function(e,t,n){var i=e[e.length-1];if(!c(i))return void n(e,t,this);for(var r=0;r<i.length;r++)e.push(i[r]),n(e,t,this),e.pop()},s:function(e,t,n,i,r,s,o){var a;return(!c(e)||0!==e.length)&&("function"==typeof e&&(e=this.ms(e,t,n,i,r,s,o)),a=!!e,!i&&a&&t&&t.push("object"==typeof e?e:t[t.length-1]),a)},d:function(e,n,i,r){var s,o=e.split("."),a=this.f(o[0],n,i,r),u=this.options.modelGet,l=null;if("."===e&&c(n[n.length-2]))a=n[n.length-1];else for(var h=1;h<o.length;h++)void 0!==(s=t(o[h],a,u))?(l=a,a=s):a="";return(!r||!!a)&&(r||"function"!=typeof a||(n.push(l),a=this.mv(a,n,i),n.pop()),a)},f:function(e,n,i,r){for(var s=!1,o=null,a=!1,u=this.options.modelGet,c=n.length-1;c>=0;c--)if(void 0!==(s=t(e,n[c],u))){a=!0;break}return a?(r||"function"!=typeof s||(s=this.mv(s,n,i)),s):!r&&""},ls:function(e,t,n,i,r){var s=this.options.delimiters;return this.options.delimiters=r,this.b(this.ct(u(e.call(t,i)),t,n)),this.options.delimiters=s,!1},ct:function(e,t,n){if(this.options.disableLambda)throw Error("Lambda features disabled.");return this.c.compile(e,this.options).render(t,n)},b:function(e){this.buf+=e},fl:function(){var e=this.buf;return this.buf="",e},ms:function(e,t,n,i,r,s,o){var a,u=t[t.length-1],c=e.call(u);if("function"==typeof c)if(i)return!0;else return a=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(c,u,n,a.substring(r,s),o);return c},mv:function(e,t,n){var i=t[t.length-1],r=e.call(i);return"function"==typeof r?this.ct(u(r.call(i)),i,n):r},sub:function(e,t,n,i){var r=this.subs[e];r&&(this.activeSub=e,r(t,n,this,i),this.activeSub=!1)}};var n=/&/g,i=/</g,r=/>/g,s=/\'/g,o=/\"/g,a=/[&<>\"\']/;function u(e){return String(null==e?"":e)}var c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}}(t)},108:function(e,t,n){"use strict";var i,r,s,o=[n(154),n(2555),n(7853),n(4198),n(3584),n(3561)],a=-1,u=[],c=!1;function l(){i&&r&&(i=!1,r.length?u=r.concat(u):a=-1,u.length&&h())}function h(){if(!i){c=!1,i=!0;for(var e=u.length,t=setTimeout(l);e;){for(r=u,u=[];r&&++a<e;)r[a].run();a=-1,e=u.length}r=null,a=-1,i=!1,clearTimeout(t)}}for(var p=-1,d=o.length;++p<d;)if(o[p]&&o[p].test&&o[p].test()){s=o[p].install(h);break}function f(e,t){this.fun=e,this.array=t}f.prototype.run=function(){var e=this.fun,t=this.array;switch(t.length){case 0:return e();case 1:return e(t[0]);case 2:return e(t[0],t[1]);case 3:return e(t[0],t[1],t[2]);default:return e.apply(null,t)}},e.exports=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new f(e,t)),c||i||(c=!0,s())}},4198:function(e,t,n){"use strict";t.test=function(){return!n.g.setImmediate&&void 0!==n.g.MessageChannel},t.install=function(e){var t=new n.g.MessageChannel;return t.port1.onmessage=e,function(){t.port2.postMessage(0)}}},7853:function(e,t,n){"use strict";var i=n.g.MutationObserver||n.g.WebKitMutationObserver;t.test=function(){return i},t.install=function(e){var t=0,r=new i(e),s=n.g.document.createTextNode("");return r.observe(s,{characterData:!0}),function(){s.data=t=++t%2}}},2555:function(e,t,n){"use strict";t.test=function(){return"function"==typeof n.g.queueMicrotask},t.install=function(e){return function(){n.g.queueMicrotask(e)}}},3584:function(e,t,n){"use strict";t.test=function(){return"document"in n.g&&"onreadystatechange"in n.g.document.createElement("script")},t.install=function(e){return function(){var t=n.g.document.createElement("script");return t.onreadystatechange=function(){e(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},n.g.document.documentElement.appendChild(t),e}}},3561:function(e,t){"use strict";t.test=function(){return!0},t.install=function(e){return function(){setTimeout(e,0)}}},8437:function(e){!function(){var t,n,i,r,s,o,a,u,c,l,h,p,d,f,g,m,v,y,x,b,w,S,C,E,_,k,T,O,L,A,$=function(e){var t=new $.Builder;return t.pipeline.add($.trimmer,$.stopWordFilter,$.stemmer),t.searchPipeline.add($.stemmer),e.call(t,t),t.build()};$.version="2.3.9",$.utils={},$.utils.warn=(t=this,function(e){t.console&&console.warn&&console.warn(e)}),$.utils.asString=function(e){return null==e?"":e.toString()},$.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var r=n[i],s=e[r];if(Array.isArray(s)){t[r]=s.slice();continue}if("string"==typeof s||"number"==typeof s||"boolean"==typeof s){t[r]=s;continue}throw TypeError("clone is not deep and does not support nested objects")}return t},$.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},$.FieldRef.joiner="/",$.FieldRef.fromString=function(e){var t=e.indexOf($.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),i=e.slice(t+1);return new $.FieldRef(i,n,e)},$.FieldRef.prototype.toString=function(){return void 0==this._stringValue&&(this._stringValue=this.fieldName+$.FieldRef.joiner+this.docRef),this._stringValue},$.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},$.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},$.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},$.Set.prototype.contains=function(e){return!!this.elements[e]},$.Set.prototype.intersect=function(e){var t,n,i,r=[];if(e===$.Set.complete)return this;if(e===$.Set.empty)return e;this.length<e.length?(t=this,n=e):(t=e,n=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in n.elements&&r.push(o)}return new $.Set(r)},$.Set.prototype.union=function(e){return e===$.Set.complete?$.Set.complete:e===$.Set.empty?this:new $.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},$.idf=function(e,t){var n=0;for(var i in e)"_index"!=i&&(n+=Object.keys(e[i]).length);return Math.log(1+Math.abs((t-n+.5)/(n+.5)))},$.Token=function(e,t){this.str=e||"",this.metadata=t||{}},$.Token.prototype.toString=function(){return this.str},$.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},$.Token.prototype.clone=function(e){return e=e||function(e){return e},new $.Token(e(this.str,this.metadata),this.metadata)},$.tokenizer=function(e,t){if(null==e||void 0==e)return[];if(Array.isArray(e))return e.map(function(e){return new $.Token($.utils.asString(e).toLowerCase(),$.utils.clone(t))});for(var n=e.toString().toLowerCase(),i=n.length,r=[],s=0,o=0;s<=i;s++){var a=n.charAt(s),u=s-o;if(a.match($.tokenizer.separator)||s==i){if(u>0){var c=$.utils.clone(t)||{};c.position=[o,u],c.index=r.length,r.push(new $.Token(n.slice(o,s),c))}o=s+1}}return r},$.tokenizer.separator=/[\s\-]+/,$.Pipeline=function(){this._stack=[]},$.Pipeline.registeredFunctions=Object.create(null),$.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&$.utils.warn("Overwriting existing registered function: "+t),e.label=t,$.Pipeline.registeredFunctions[e.label]=e},$.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||$.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},$.Pipeline.load=function(e){var t=new $.Pipeline;return e.forEach(function(e){var n=$.Pipeline.registeredFunctions[e];if(n)t.add(n);else throw Error("Cannot load unregistered function: "+e)}),t},$.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){$.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},$.Pipeline.prototype.after=function(e,t){$.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},$.Pipeline.prototype.before=function(e,t){$.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw Error("Cannot find existingFn");this._stack.splice(n,0,t)},$.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},$.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var i=this._stack[n],r=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)r.push(o[a]);else r.push(o)}e=r}return e},$.Pipeline.prototype.runString=function(e,t){var n=new $.Token(e,t);return this.run([n]).map(function(e){return e.toString()})},$.Pipeline.prototype.reset=function(){this._stack=[]},$.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return $.Pipeline.warnIfFunctionNotRegistered(e),e.label})},$.Vector=function(e){this._magnitude=0,this.elements=e||[]},$.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,i=n-t,r=Math.floor(i/2),s=this.elements[2*r];i>1&&(s<e&&(t=r),s>e&&(n=r),s!=e);)i=n-t,r=t+Math.floor(i/2),s=this.elements[2*r];return s==e||s>e?2*r:s<e?(r+1)*2:void 0},$.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},$.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],t):this.elements.splice(i,0,e,t)},$.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},$.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,i=e.elements,r=n.length,s=i.length,o=0,a=0,u=0,c=0;u<r&&c<s;)(o=n[u])<(a=i[c])?u+=2:o>a?c+=2:o==a&&(t+=n[u+1]*i[c+1],u+=2,c+=2);return t},$.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},$.Vector.prototype.toArray=function(){for(var e=Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},$.Vector.prototype.toJSON=function(){return this.elements},n={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},i={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},a="^("+(s="[^aeiou][^aeiouy]*")+")?"+(o=(r="[aeiouy]")+"[aeiou]*")+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,c=RegExp("^("+s+")?"+o+s),l=new RegExp(u),h=new RegExp(a),p=RegExp("^("+s+")?"+r),d=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,g=/^(.+?)eed$/,m=/^(.+?)(ed|ing)$/,v=/.$/,y=/(at|bl|iz)$/,x=RegExp("([^aeiouylsz])\\1$"),b=RegExp("^"+s+r+"[^aeiouwxy]$"),w=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,C=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,E=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,_=/^(.+?)(s|t)(ion)$/,k=/^(.+?)e$/,T=/ll$/,O=RegExp("^"+s+r+"[^aeiouwxy]$"),L=function(e){var t,r,s,o,a,u;if(e.length<3)return e;if("y"==(s=e.substr(0,1))&&(e=s.toUpperCase()+e.substr(1)),o=d,a=f,o.test(e)?e=e.replace(o,"$1$2"):a.test(e)&&(e=e.replace(a,"$1$2")),o=g,a=m,o.test(e)){var L=o.exec(e);(o=c).test(L[1])&&(o=v,e=e.replace(o,""))}else if(a.test(e)){var L=a.exec(e);t=L[1],(a=p).test(t)&&(e=t,a=y,u=x,a.test(e)?e+="e":u.test(e)?(o=v,e=e.replace(o,"")):b.test(e)&&(e+="e"))}if((o=w).test(e)){var L=o.exec(e);e=(t=L[1])+"i"}if((o=S).test(e)){var L=o.exec(e);t=L[1],r=L[2],(o=c).test(t)&&(e=t+n[r])}if((o=C).test(e)){var L=o.exec(e);t=L[1],r=L[2],(o=c).test(t)&&(e=t+i[r])}if(o=E,a=_,o.test(e)){var L=o.exec(e);t=L[1],(o=l).test(t)&&(e=t)}else if(a.test(e)){var L=a.exec(e);t=L[1]+L[2],(a=l).test(t)&&(e=t)}if((o=k).test(e)){var L=o.exec(e);t=L[1],o=l,a=h,u=O,(o.test(t)||a.test(t)&&!u.test(t))&&(e=t)}return o=T,a=l,o.test(e)&&a.test(e)&&(o=v,e=e.replace(o,"")),"y"==s&&(e=s.toLowerCase()+e.substr(1)),e},$.stemmer=function(e){return e.update(L)},$.Pipeline.registerFunction($.stemmer,"stemmer"),$.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},$.stopWordFilter=$.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),$.Pipeline.registerFunction($.stopWordFilter,"stopWordFilter"),$.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},$.Pipeline.registerFunction($.trimmer,"trimmer"),$.TokenSet=function(){this.final=!1,this.edges={},this.id=$.TokenSet._nextId,$.TokenSet._nextId+=1},$.TokenSet._nextId=1,$.TokenSet.fromArray=function(e){for(var t=new $.TokenSet.Builder,n=0,i=e.length;n<i;n++)t.insert(e[n]);return t.finish(),t.root},$.TokenSet.fromClause=function(e){return"editDistance"in e?$.TokenSet.fromFuzzyString(e.term,e.editDistance):$.TokenSet.fromString(e.term)},$.TokenSet.fromFuzzyString=function(e,t){for(var n=new $.TokenSet,i=[{node:n,editsRemaining:t,str:e}];i.length;){var r=i.pop();if(r.str.length>0){var s,o=r.str.charAt(0);o in r.node.edges?s=r.node.edges[o]:(s=new $.TokenSet,r.node.edges[o]=s),1==r.str.length&&(s.final=!0),i.push({node:s,editsRemaining:r.editsRemaining,str:r.str.slice(1)})}if(0!=r.editsRemaining){if("*"in r.node.edges)var a=r.node.edges["*"];else{var a=new $.TokenSet;r.node.edges["*"]=a}if(0==r.str.length&&(a.final=!0),i.push({node:a,editsRemaining:r.editsRemaining-1,str:r.str}),r.str.length>1&&i.push({node:r.node,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)}),1==r.str.length&&(r.node.final=!0),r.str.length>=1){if("*"in r.node.edges)var u=r.node.edges["*"];else{var u=new $.TokenSet;r.node.edges["*"]=u}1==r.str.length&&(u.final=!0),i.push({node:u,editsRemaining:r.editsRemaining-1,str:r.str.slice(1)})}if(r.str.length>1){var c,l=r.str.charAt(0),h=r.str.charAt(1);h in r.node.edges?c=r.node.edges[h]:(c=new $.TokenSet,r.node.edges[h]=c),1==r.str.length&&(c.final=!0),i.push({node:c,editsRemaining:r.editsRemaining-1,str:l+r.str.slice(2)})}}}return n},$.TokenSet.fromString=function(e){for(var t=new $.TokenSet,n=t,i=0,r=e.length;i<r;i++){var s=e[i],o=i==r-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new $.TokenSet;a.final=o,t.edges[s]=a,t=a}}return n},$.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),i=Object.keys(n.node.edges),r=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var s=0;s<r;s++){var o=i[s];t.push({prefix:n.prefix.concat(o),node:n.node.edges[o]})}}return e},$.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,i=0;i<n;i++){var r=t[i],s=this.edges[r];e=e+r+s.id}return e},$.TokenSet.prototype.intersect=function(e){for(var t=new $.TokenSet,n=void 0,i=[{qNode:e,output:t,node:this}];i.length;)for(var r=Object.keys((n=i.pop()).qNode.edges),s=r.length,o=Object.keys(n.node.edges),a=o.length,u=0;u<s;u++)for(var c=r[u],l=0;l<a;l++){var h=o[l];if(h==c||"*"==c){var p=n.node.edges[h],d=n.qNode.edges[c],f=p.final&&d.final,g=void 0;h in n.output.edges?(g=n.output.edges[h]).final=g.final||f:((g=new $.TokenSet).final=f,n.output.edges[h]=g),i.push({qNode:d,output:g,node:p})}}return t},$.TokenSet.Builder=function(){this.previousWord="",this.root=new $.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},$.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var r=new $.TokenSet,s=e[i];t.edges[s]=r,this.uncheckedNodes.push({parent:t,char:s,child:r}),t=r}t.final=!0,this.previousWord=e},$.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},$.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var n=this.uncheckedNodes[t],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}},$.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},$.Index.prototype.search=function(e){return this.query(function(t){new $.QueryParser(e,t).parse()})},$.Index.prototype.query=function(e){for(var t=new $.Query(this.fields),n=Object.create(null),i=Object.create(null),r=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new $.Vector;e.call(t,t);for(var a=0;a<t.clauses.length;a++){var u=t.clauses[a],c=null,l=$.Set.empty;c=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<c.length;h++){u.term=c[h];var p=$.TokenSet.fromClause(u),d=this.tokenSet.intersect(p).toArray();if(0===d.length&&u.presence===$.Query.presence.REQUIRED){for(var f=0;f<u.fields.length;f++){var g=u.fields[f];s[g]=$.Set.empty}break}for(var m=0;m<d.length;m++)for(var v=d[m],y=this.invertedIndex[v],x=y._index,f=0;f<u.fields.length;f++){var g=u.fields[f],b=y[g],w=Object.keys(b),S=v+"/"+g,C=new $.Set(w);if(u.presence==$.Query.presence.REQUIRED&&(l=l.union(C),void 0===s[g]&&(s[g]=$.Set.complete)),u.presence==$.Query.presence.PROHIBITED){void 0===o[g]&&(o[g]=$.Set.empty),o[g]=o[g].union(C);continue}if(i[g].upsert(x,u.boost,function(e,t){return e+t}),!r[S]){for(var E=0;E<w.length;E++){var _,k=w[E],T=new $.FieldRef(k,g),O=b[k];void 0===(_=n[T])?n[T]=new $.MatchData(v,g,O):_.add(v,g,O)}r[S]=!0}}}if(u.presence===$.Query.presence.REQUIRED)for(var f=0;f<u.fields.length;f++){var g=u.fields[f];s[g]=s[g].intersect(l)}}for(var L=$.Set.complete,A=$.Set.empty,a=0;a<this.fields.length;a++){var g=this.fields[a];s[g]&&(L=L.intersect(s[g])),o[g]&&(A=A.union(o[g]))}var P=Object.keys(n),I=[],Q=Object.create(null);if(t.isNegated()){P=Object.keys(this.fieldVectors);for(var a=0;a<P.length;a++){var T=P[a],R=$.FieldRef.fromString(T);n[T]=new $.MatchData}}for(var a=0;a<P.length;a++){var R=$.FieldRef.fromString(P[a]),N=R.docRef;if(L.contains(N)&&!A.contains(N)){var D,F=this.fieldVectors[R],j=i[R.fieldName].similarity(F);if(void 0!==(D=Q[N]))D.score+=j,D.matchData.combine(n[R]);else{var H={ref:N,score:j,matchData:n[R]};Q[N]=H,I.push(H)}}}return I.sort(function(e,t){return t.score-e.score})},$.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:$.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},$.Index.load=function(e){var t={},n={},i=e.fieldVectors,r=Object.create(null),s=e.invertedIndex,o=new $.TokenSet.Builder,a=$.Pipeline.load(e.pipeline);e.version!=$.version&&$.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+$.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var c=i[u],l=c[0],h=c[1];n[l]=new $.Vector(h)}for(var u=0;u<s.length;u++){var c=s[u],p=c[0],d=c[1];o.insert(p),r[p]=d}return o.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=r,t.tokenSet=o.root,t.pipeline=a,new $.Index(t)},$.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=$.tokenizer,this.pipeline=new $.Pipeline,this.searchPipeline=new $.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},$.Builder.prototype.ref=function(e){this._ref=e},$.Builder.prototype.field=function(e,t){if(/\//.test(e))throw RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},$.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},$.Builder.prototype.k1=function(e){this._k1=e},$.Builder.prototype.add=function(e,t){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var r=0;r<i.length;r++){var s=i[r],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),c=this.pipeline.run(u),l=new $.FieldRef(n,s),h=Object.create(null);this.fieldTermFrequencies[l]=h,this.fieldLengths[l]=0,this.fieldLengths[l]+=c.length;for(var p=0;p<c.length;p++){var d=c[p];if(void 0==h[d]&&(h[d]=0),h[d]+=1,void 0==this.invertedIndex[d]){var f=Object.create(null);f._index=this.termIndex,this.termIndex+=1;for(var g=0;g<i.length;g++)f[i[g]]=Object.create(null);this.invertedIndex[d]=f}void 0==this.invertedIndex[d][s][n]&&(this.invertedIndex[d][s][n]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var v=this.metadataWhitelist[m],y=d.metadata[v];void 0==this.invertedIndex[d][s][n][v]&&(this.invertedIndex[d][s][n][v]=[]),this.invertedIndex[d][s][n][v].push(y)}}}},$.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},i={},r=0;r<t;r++){var s=$.FieldRef.fromString(e[r]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,n[o]||(n[o]=0),n[o]+=this.fieldLengths[s]}for(var a=Object.keys(this._fields),r=0;r<a.length;r++){var u=a[r];n[u]=n[u]/i[u]}this.averageFieldLength=n},$.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,i=Object.create(null),r=0;r<n;r++){for(var s=$.FieldRef.fromString(t[r]),o=s.fieldName,a=this.fieldLengths[s],u=new $.Vector,c=this.fieldTermFrequencies[s],l=Object.keys(c),h=l.length,p=this._fields[o].boost||1,d=this._documents[s.docRef].boost||1,f=0;f<h;f++){var g,m,v,y=l[f],x=c[y],b=this.invertedIndex[y]._index;void 0===i[y]?(g=$.idf(this.invertedIndex[y],this.documentCount),i[y]=g):g=i[y],v=Math.round(1e3*(g*((this._k1+1)*x)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+x)*p*d))/1e3,u.insert(b,v)}e[s]=u}this.fieldVectors=e},$.Builder.prototype.createTokenSet=function(){this.tokenSet=$.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},$.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new $.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},$.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},$.MatchData=function(e,t,n){for(var i=Object.create(null),r=Object.keys(n||{}),s=0;s<r.length;s++){var o=r[s];i[o]=n[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},$.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var i=t[n],r=Object.keys(e.metadata[i]);void 0==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<r.length;s++){var o=r[s],a=Object.keys(e.metadata[i][o]);void 0==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var c=a[u];void 0==this.metadata[i][o][c]?this.metadata[i][o][c]=e.metadata[i][o][c]:this.metadata[i][o][c]=this.metadata[i][o][c].concat(e.metadata[i][o][c])}}}},$.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][t]=n;return}if(!(t in this.metadata[e])){this.metadata[e][t]=n;return}for(var i=Object.keys(n),r=0;r<i.length;r++){var s=i[r];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(n[s]):this.metadata[e][t][s]=n[s]}},$.Query=function(e){this.clauses=[],this.allFields=e},$.Query.wildcard=new String("*"),$.Query.wildcard.NONE=0,$.Query.wildcard.LEADING=1,$.Query.wildcard.TRAILING=2,$.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},$.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=$.Query.wildcard.NONE),e.wildcard&$.Query.wildcard.LEADING&&e.term.charAt(0)!=$.Query.wildcard&&(e.term="*"+e.term),e.wildcard&$.Query.wildcard.TRAILING&&e.term.slice(-1)!=$.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=$.Query.presence.OPTIONAL),this.clauses.push(e),this},$.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=$.Query.presence.PROHIBITED)return!1;return!0},$.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,$.utils.clone(t))},this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},$.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},$.QueryParseError.prototype=Error(),$.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},$.QueryLexer.prototype.run=function(){for(var e=$.QueryLexer.lexText;e;)e=e(this)},$.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},$.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},$.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},$.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return $.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},$.QueryLexer.prototype.width=function(){return this.pos-this.start},$.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},$.QueryLexer.prototype.backup=function(){this.pos-=1},$.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do t=(e=this.next()).charCodeAt(0);while(t>47&&t<58);e!=$.QueryLexer.EOS&&this.backup()},$.QueryLexer.prototype.more=function(){return this.pos<this.length},$.QueryLexer.EOS="EOS",$.QueryLexer.FIELD="FIELD",$.QueryLexer.TERM="TERM",$.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",$.QueryLexer.BOOST="BOOST",$.QueryLexer.PRESENCE="PRESENCE",$.QueryLexer.lexField=function(e){return e.backup(),e.emit($.QueryLexer.FIELD),e.ignore(),$.QueryLexer.lexText},$.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit($.QueryLexer.TERM)),e.ignore(),e.more())return $.QueryLexer.lexText},$.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit($.QueryLexer.EDIT_DISTANCE),$.QueryLexer.lexText},$.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit($.QueryLexer.BOOST),$.QueryLexer.lexText},$.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit($.QueryLexer.TERM)},$.QueryLexer.termSeparator=$.tokenizer.separator,$.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==$.QueryLexer.EOS)return $.QueryLexer.lexEOS;if(92==t.charCodeAt(0)){e.escapeCharacter();continue}if(":"==t)return $.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit($.QueryLexer.TERM),$.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit($.QueryLexer.TERM),$.QueryLexer.lexBoost;if("+"==t&&1===e.width()||"-"==t&&1===e.width())return e.emit($.QueryLexer.PRESENCE),$.QueryLexer.lexText;if(t.match($.QueryLexer.termSeparator))return $.QueryLexer.lexTerm}},$.QueryParser=function(e,t){this.lexer=new $.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},$.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=$.QueryParser.parseClause;e;)e=e(this);return this.query},$.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},$.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},$.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},$.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(void 0!=t)switch(t.type){case $.QueryLexer.PRESENCE:return $.QueryParser.parsePresence;case $.QueryLexer.FIELD:return $.QueryParser.parseField;case $.QueryLexer.TERM:return $.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new $.QueryParseError(n,t.start,t.end)}},$.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(void 0!=t){switch(t.str){case"-":e.currentClause.presence=$.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=$.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new $.QueryParseError(n,t.start,t.end)}var i=e.peekLexeme();if(void 0==i){var n="expecting term or field, found nothing";throw new $.QueryParseError(n,t.start,t.end)}switch(i.type){case $.QueryLexer.FIELD:return $.QueryParser.parseField;case $.QueryLexer.TERM:return $.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new $.QueryParseError(n,i.start,i.end)}}},$.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(void 0!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+n;throw new $.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var r=e.peekLexeme();if(void 0==r){var i="expecting term, found nothing";throw new $.QueryParseError(i,t.start,t.end)}if(r.type===$.QueryLexer.TERM)return $.QueryParser.parseTerm;var i="expecting term, found '"+r.type+"'";throw new $.QueryParseError(i,r.start,r.end)}},$.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(void 0!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(void 0==n)return void e.nextClause();switch(n.type){case $.QueryLexer.TERM:return e.nextClause(),$.QueryParser.parseTerm;case $.QueryLexer.FIELD:return e.nextClause(),$.QueryParser.parseField;case $.QueryLexer.EDIT_DISTANCE:return $.QueryParser.parseEditDistance;case $.QueryLexer.BOOST:return $.QueryParser.parseBoost;case $.QueryLexer.PRESENCE:return e.nextClause(),$.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new $.QueryParseError(i,n.start,n.end)}}},$.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(void 0!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new $.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=n;var r=e.peekLexeme();if(void 0==r)return void e.nextClause();switch(r.type){case $.QueryLexer.TERM:return e.nextClause(),$.QueryParser.parseTerm;case $.QueryLexer.FIELD:return e.nextClause(),$.QueryParser.parseField;case $.QueryLexer.EDIT_DISTANCE:return $.QueryParser.parseEditDistance;case $.QueryLexer.BOOST:return $.QueryParser.parseBoost;case $.QueryLexer.PRESENCE:return e.nextClause(),$.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new $.QueryParseError(i,r.start,r.end)}}},$.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(void 0!=t){var n=parseInt(t.str,10);if(isNaN(n)){var i="boost must be numeric";throw new $.QueryParseError(i,t.start,t.end)}e.currentClause.boost=n;var r=e.peekLexeme();if(void 0==r)return void e.nextClause();switch(r.type){case $.QueryLexer.TERM:return e.nextClause(),$.QueryParser.parseTerm;case $.QueryLexer.FIELD:return e.nextClause(),$.QueryParser.parseField;case $.QueryLexer.EDIT_DISTANCE:return $.QueryParser.parseEditDistance;case $.QueryLexer.BOOST:return $.QueryParser.parseBoost;case $.QueryLexer.PRESENCE:return e.nextClause(),$.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new $.QueryParseError(i,r.start,r.end)}}},A=function(){return $},"function"==typeof define&&define.amd?define(A):e.exports=A()}()},7668:function(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>v});var i=n(112),r=n.n(i),s=n(4802);s.Z.tokenizer.separator=/[\s\-/]+/;let o=class{constructor(e,t,n="/",i){this.searchDocs=e,this.lunrIndex=s.Z.Index.load(t),this.baseUrl=n,this.maxHits=i}getLunrResult(e){return this.lunrIndex.query(function(t){let n=s.Z.tokenizer(e);t.term(n,{boost:10}),t.term(n,{wildcard:s.Z.Query.wildcard.TRAILING})})}getHit(e,t,n){return{hierarchy:{lvl0:e.pageTitle||e.title,lvl1:0===e.type?null:e.title},url:e.url,version:e.version,_snippetResult:n?{content:{value:n,matchLevel:"full"}}:null,_highlightResult:{hierarchy:{lvl0:{value:0===e.type?t||e.title:e.pageTitle},lvl1:0===e.type?null:{value:t||e.title}}}}}getTitleHit(e,t,n){let i=t[0],r=t[0]+n,s=e.title.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.title.substring(i,r)+"</span>"+e.title.substring(r,e.title.length);return this.getHit(e,s)}getKeywordHit(e,t,n){let i=t[0],r=t[0]+n,s=e.title+"<br /><i>Keywords: "+e.keywords.substring(0,i)+'<span class="algolia-docsearch-suggestion--highlight">'+e.keywords.substring(i,r)+"</span>"+e.keywords.substring(r,e.keywords.length)+"</i>";return this.getHit(e,s)}getContentHit(e,t){let n=t[0],i=t[0]+t[1],r=n,s=i,o=!0,a=!0;for(let t=0;t<3;t++){let t=e.content.lastIndexOf(" ",r-2),n=e.content.lastIndexOf(".",r-2);if(n>0&&n>t){r=n+1,o=!1;break}if(t<0){r=0,o=!1;break}r=t+1}for(let t=0;t<10;t++){let t=e.content.indexOf(" ",s+1),n=e.content.indexOf(".",s+1);if(n>0&&n<t){s=n,a=!1;break}if(t<0){s=e.content.length,a=!1;break}s=t}let u=e.content.substring(r,n);return o&&(u="... "+u),u+='<span class="algolia-docsearch-suggestion--highlight">'+e.content.substring(n,i)+"</span>",u+=e.content.substring(i,s),a&&(u+=" ..."),this.getHit(e,null,u)}search(e){return new Promise((t,n)=>{let i=this.getLunrResult(e),r=[];i.length>this.maxHits&&(i.length=this.maxHits),this.titleHitsRes=[],this.contentHitsRes=[],i.forEach(t=>{let n=this.searchDocs[t.ref],{metadata:i}=t.matchData;for(let s in i)if(i[s].title){if(!this.titleHitsRes.includes(t.ref)){let o=i[s].title.position[0];r.push(this.getTitleHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}}else if(i[s].content){let e=i[s].content.position[0];r.push(this.getContentHit(n,e))}else if(i[s].keywords){let o=i[s].keywords.position[0];r.push(this.getKeywordHit(n,o,e.length)),this.titleHitsRes.push(t.ref)}}),r.length>this.maxHits&&(r.length=this.maxHits),t(r)})}};var a=n(282),u=n.n(a);let c="algolia-docsearch",l=`${c}-suggestion`,h=`${c}-footer`,p={suggestion:`
|
2
|
+
<a class="${l}
|
3
|
+
{{#isCategoryHeader}}${l}__main{{/isCategoryHeader}}
|
4
|
+
{{#isSubCategoryHeader}}${l}__secondary{{/isSubCategoryHeader}}
|
5
|
+
"
|
6
|
+
aria-label="Link to the result"
|
7
|
+
href="{{{url}}}"
|
8
|
+
>
|
9
|
+
<div class="${l}--category-header">
|
10
|
+
<span class="${l}--category-header-lvl0">{{{category}}}</span>
|
11
|
+
</div>
|
12
|
+
<div class="${l}--wrapper">
|
13
|
+
<div class="${l}--subcategory-column">
|
14
|
+
<span class="${l}--subcategory-column-text">{{{subcategory}}}</span>
|
15
|
+
</div>
|
16
|
+
{{#isTextOrSubcategoryNonEmpty}}
|
17
|
+
<div class="${l}--content">
|
18
|
+
<div class="${l}--subcategory-inline">{{{subcategory}}}</div>
|
19
|
+
<div class="${l}--title">{{{title}}}</div>
|
20
|
+
{{#text}}<div class="${l}--text">{{{text}}}</div>{{/text}}
|
21
|
+
{{#version}}<div class="${l}--version">{{version}}</div>{{/version}}
|
22
|
+
</div>
|
23
|
+
{{/isTextOrSubcategoryNonEmpty}}
|
24
|
+
</div>
|
25
|
+
</a>
|
26
|
+
`,suggestionSimple:`
|
27
|
+
<div class="${l}
|
28
|
+
{{#isCategoryHeader}}${l}__main{{/isCategoryHeader}}
|
29
|
+
{{#isSubCategoryHeader}}${l}__secondary{{/isSubCategoryHeader}}
|
30
|
+
suggestion-layout-simple
|
31
|
+
">
|
32
|
+
<div class="${l}--category-header">
|
33
|
+
{{^isLvl0}}
|
34
|
+
<span class="${l}--category-header-lvl0 ${l}--category-header-item">{{{category}}}</span>
|
35
|
+
{{^isLvl1}}
|
36
|
+
{{^isLvl1EmptyOrDuplicate}}
|
37
|
+
<span class="${l}--category-header-lvl1 ${l}--category-header-item">
|
38
|
+
{{{subcategory}}}
|
39
|
+
</span>
|
40
|
+
{{/isLvl1EmptyOrDuplicate}}
|
41
|
+
{{/isLvl1}}
|
42
|
+
{{/isLvl0}}
|
43
|
+
<div class="${l}--title ${l}--category-header-item">
|
44
|
+
{{#isLvl2}}
|
45
|
+
{{{title}}}
|
46
|
+
{{/isLvl2}}
|
47
|
+
{{#isLvl1}}
|
48
|
+
{{{subcategory}}}
|
49
|
+
{{/isLvl1}}
|
50
|
+
{{#isLvl0}}
|
51
|
+
{{{category}}}
|
52
|
+
{{/isLvl0}}
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
<div class="${l}--wrapper">
|
56
|
+
{{#text}}
|
57
|
+
<div class="${l}--content">
|
58
|
+
<div class="${l}--text">{{{text}}}</div>
|
59
|
+
</div>
|
60
|
+
{{/text}}
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
`,footer:`
|
64
|
+
<div class="${h}">
|
65
|
+
</div>
|
66
|
+
`,empty:`
|
67
|
+
<div class="${l}">
|
68
|
+
<div class="${l}--wrapper">
|
69
|
+
<div class="${l}--content ${l}--no-results">
|
70
|
+
<div class="${l}--title">
|
71
|
+
<div class="${l}--text">
|
72
|
+
No results found for query <b>"{{query}}"</b>
|
73
|
+
</div>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
`,searchBox:`
|
79
|
+
<form novalidate="novalidate" onsubmit="return false;" class="searchbox">
|
80
|
+
<div role="search" class="searchbox__wrapper">
|
81
|
+
<input id="docsearch" type="search" name="search" placeholder="Search the docs" autocomplete="off" required="required" class="searchbox__input"/>
|
82
|
+
<button type="submit" title="Submit your search query." class="searchbox__submit" >
|
83
|
+
<svg width=12 height=12 role="img" aria-label="Search">
|
84
|
+
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-search-13"></use>
|
85
|
+
</svg>
|
86
|
+
</button>
|
87
|
+
<button type="reset" title="Clear the search query." class="searchbox__reset hide">
|
88
|
+
<svg width=12 height=12 role="img" aria-label="Reset">
|
89
|
+
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sbx-icon-clear-3"></use>
|
90
|
+
</svg>
|
91
|
+
</button>
|
92
|
+
</div>
|
93
|
+
</form>
|
94
|
+
|
95
|
+
<div class="svg-icons" style="height: 0; width: 0; position: absolute; visibility: hidden">
|
96
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
97
|
+
<symbol id="sbx-icon-clear-3" viewBox="0 0 40 40"><path d="M16.228 20L1.886 5.657 0 3.772 3.772 0l1.885 1.886L20 16.228 34.343 1.886 36.228 0 40 3.772l-1.886 1.885L23.772 20l14.342 14.343L40 36.228 36.228 40l-1.885-1.886L20 23.772 5.657 38.114 3.772 40 0 36.228l1.886-1.885L16.228 20z" fill-rule="evenodd"></symbol>
|
98
|
+
<symbol id="sbx-icon-search-13" viewBox="0 0 40 40"><path d="M26.806 29.012a16.312 16.312 0 0 1-10.427 3.746C7.332 32.758 0 25.425 0 16.378 0 7.334 7.333 0 16.38 0c9.045 0 16.378 7.333 16.378 16.38 0 3.96-1.406 7.593-3.746 10.426L39.547 37.34c.607.608.61 1.59-.004 2.203a1.56 1.56 0 0 1-2.202.004L26.807 29.012zm-10.427.627c7.322 0 13.26-5.938 13.26-13.26 0-7.324-5.938-13.26-13.26-13.26-7.324 0-13.26 5.936-13.26 13.26 0 7.322 5.936 13.26 13.26 13.26z" fill-rule="evenodd"></symbol>
|
99
|
+
</svg>
|
100
|
+
</div>
|
101
|
+
`};var d=n(3988),f=n.n(d);let g={mergeKeyWithParent(e,t){if(void 0===e[t]||"object"!=typeof e[t])return e;let n=f().extend({},e,e[t]);return delete n[t],n},groupBy(e,t){let n={};return f().each(e,(e,i)=>{if(void 0===i[t])throw Error(`[groupBy]: Object has no key ${t}`);let r=i[t];"string"==typeof r&&(r=r.toLowerCase()),Object.prototype.hasOwnProperty.call(n,r)||(n[r]=[]),n[r].push(i)}),n},values:e=>Object.keys(e).map(t=>e[t]),flatten(e){let t=[];return e.forEach(e=>{if(!Array.isArray(e))return void t.push(e);e.forEach(e=>{t.push(e)})}),t},flattenAndFlagFirst(e,t){let n=this.values(e).map(e=>e.map((e,n)=>(e[t]=0===n,e)));return this.flatten(n)},compact(e){let t=[];return e.forEach(e=>{e&&t.push(e)}),t},getHighlightedValue:(e,t)=>e._highlightResult&&e._highlightResult.hierarchy_camel&&e._highlightResult.hierarchy_camel[t]&&e._highlightResult.hierarchy_camel[t].matchLevel&&"none"!==e._highlightResult.hierarchy_camel[t].matchLevel&&e._highlightResult.hierarchy_camel[t].value?e._highlightResult.hierarchy_camel[t].value:e._highlightResult&&e._highlightResult&&e._highlightResult[t]&&e._highlightResult[t].value?e._highlightResult[t].value:e[t],getSnippetedValue(e,t){if(!e._snippetResult||!e._snippetResult[t]||!e._snippetResult[t].value)return e[t];let n=e._snippetResult[t].value;return n[0]!==n[0].toUpperCase()&&(n=`\u{2026}${n}`),-1===[".","!","?"].indexOf(n[n.length-1])&&(n=`${n}\u{2026}`),n},deepClone:e=>JSON.parse(JSON.stringify(e))};class m{constructor({searchDocs:e,searchIndex:t,inputSelector:n,debug:i=!1,baseUrl:r="/",queryDataCallback:s=null,autocompleteOptions:a={debug:!1,hint:!1,autoselect:!0},transformData:c=!1,queryHook:l=!1,handleSelected:h=!1,enhancedSearchInput:d=!1,layout:g="column",maxHits:v=5}){this.input=m.getInputFromSelector(n),this.queryDataCallback=s||null;let y=!!a&&!!a.debug&&a.debug;a.debug=i||y,this.autocompleteOptions=a,this.autocompleteOptions.cssClasses=this.autocompleteOptions.cssClasses||{},this.autocompleteOptions.cssClasses.prefix=this.autocompleteOptions.cssClasses.prefix||"ds";let x=this.input&&"function"==typeof this.input.attr&&this.input.attr("aria-label");this.autocompleteOptions.ariaLabel=this.autocompleteOptions.ariaLabel||x||"search input",this.isSimpleLayout="simple"===g,this.client=new o(e,t,r,v),d&&(this.input=m.injectSearchBox(this.input)),this.autocomplete=u()(this.input,a,[{source:this.getAutocompleteSource(c,l),templates:{suggestion:m.getSuggestionTemplate(this.isSimpleLayout),footer:p.footer,empty:m.getEmptyTemplate()}}]),this.handleSelected=h||this.handleSelected,h&&f()(".algolia-autocomplete").on("click",".ds-suggestions a",e=>{e.preventDefault()}),this.autocomplete.on("autocomplete:selected",this.handleSelected.bind(null,this.autocomplete.autocomplete)),this.autocomplete.on("autocomplete:shown",this.handleShown.bind(null,this.input)),d&&m.bindSearchBoxEvent(),document.addEventListener("keydown",e=>{(e.ctrlKey||e.metaKey)&&"k"==e.key&&(this.input.focus(),e.preventDefault())})}static injectSearchBox(e){e.before(p.searchBox);let t=e.prev().prev().find("input");return e.remove(),t}static bindSearchBoxEvent(){f()('.searchbox [type="reset"]').on("click",function(){f()("input#docsearch").focus(),f()(this).addClass("hide"),u().autocomplete.setVal("")}),f()("input#docsearch").on("keyup",()=>{let e=document.querySelector("input#docsearch"),t=document.querySelector('.searchbox [type="reset"]');t.className="searchbox__reset",0===e.value.length&&(t.className+=" hide")})}static getInputFromSelector(e){let t=f()(e).filter("input");return t.length?f()(t[0]):null}getAutocompleteSource(e,t){return(n,i)=>{t&&(n=t(n)||n),this.client.search(n).then(t=>{this.queryDataCallback&&"function"==typeof this.queryDataCallback&&this.queryDataCallback(t),e&&(t=e(t)||t),i(m.formatHits(t))})}}static formatHits(e){let t=g.deepClone(e).map(e=>(e._highlightResult&&(e._highlightResult=g.mergeKeyWithParent(e._highlightResult,"hierarchy")),g.mergeKeyWithParent(e,"hierarchy"))),n=g.groupBy(t,"lvl0");return f().each(n,(e,t)=>{let i=g.groupBy(t,"lvl1"),r=g.flattenAndFlagFirst(i,"isSubCategoryHeader");n[e]=r}),(n=g.flattenAndFlagFirst(n,"isCategoryHeader")).map(e=>{let t=m.formatURL(e),n=g.getHighlightedValue(e,"lvl0"),i=g.getHighlightedValue(e,"lvl1")||n,r=g.compact([g.getHighlightedValue(e,"lvl2")||i,g.getHighlightedValue(e,"lvl3"),g.getHighlightedValue(e,"lvl4"),g.getHighlightedValue(e,"lvl5"),g.getHighlightedValue(e,"lvl6")]).join('<span class="aa-suggestion-title-separator" aria-hidden="true"> \u203A </span>'),s=g.getSnippetedValue(e,"content"),o=i&&""!==i||r&&""!==r,a=!i||""===i||i===n,u=r&&""!==r&&r!==i,c=!u&&i&&""!==i&&i!==n,l=e.version;return{isLvl0:!c&&!u,isLvl1:c,isLvl2:u,isLvl1EmptyOrDuplicate:a,isCategoryHeader:e.isCategoryHeader,isSubCategoryHeader:e.isSubCategoryHeader,isTextOrSubcategoryNonEmpty:o,category:n,subcategory:i,title:r,text:s,url:t,version:l}})}static formatURL(e){let{url:t,anchor:n}=e;if(t){if(-1!==t.indexOf("#"));else if(n)return`${e.url}#${e.anchor}`;return t}return n?`#${e.anchor}`:(console.warn("no anchor nor url for : ",JSON.stringify(e)),null)}static getEmptyTemplate(){return e=>r().compile(p.empty).render(e)}static getSuggestionTemplate(e){let t=e?p.suggestionSimple:p.suggestion,n=r().compile(t);return e=>n.render(e)}handleSelected(e,t,n,i){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};"click"!==r.selectionMethod&&(e.setVal(""),window.location.assign(n.url))}handleShown(e){let t=e.offset().left+e.width()/2,n=f()(document).width()/2;isNaN(n)&&(n=900);let i=t-n>=0?"algolia-autocomplete-right":"algolia-autocomplete-left",r=t-n<0?"algolia-autocomplete-right":"algolia-autocomplete-left",s=f()(".algolia-autocomplete");s.hasClass(i)||s.addClass(i),s.hasClass(r)&&s.removeClass(r)}}let v=m}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["7810"],{8120:function(e,n,t){t.r(n),t.d(n,{frontMatter:()=>r,default:()=>u,toc:()=>a,metadata:()=>o,assets:()=>l,contentTitle:()=>c});var o=JSON.parse('{"id":"meta/contributing","title":"Contributing","description":"Contributing to COSMOS using the github workflow","source":"@site/docs/meta/contributing.md","sourceDirName":"meta","slug":"/meta/contributing","permalink":"/tools/staticdocs/docs/meta/contributing","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/meta/contributing.md","tags":[],"version":"current","frontMatter":{"title":"Contributing","description":"Contributing to COSMOS using the github workflow","sidebar_custom_props":{"myEmoji":"\uD83D\uDE42"}},"sidebar":"defaultSidebar","previous":{"title":"Meta","permalink":"/tools/staticdocs/docs/meta"},"next":{"title":"Licenses","permalink":"/tools/staticdocs/docs/meta/licenses"}}'),i=t(2322),s=t(2840);let r={title:"Contributing",description:"Contributing to COSMOS using the github workflow",sidebar_custom_props:{myEmoji:"\uD83D\uDE42"}},c=void 0,l={},a=[{value:"Test Dependencies",id:"test-dependencies",level:2},{value:"Workflow",id:"workflow",level:2}];function d(e){let n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"So you've got an awesome idea to throw into COSMOS. Great! This is the basic process:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Fork the project on Github"}),"\n",(0,i.jsx)(n.li,{children:"Create a feature branch"}),"\n",(0,i.jsx)(n.li,{children:"Make your changes"}),"\n",(0,i.jsx)(n.li,{children:"Submit a pull request"}),"\n"]}),"\n",(0,i.jsxs)(n.admonition,{title:"Don't Forget the Contributor License Agreement!",type:"note",children:[(0,i.jsxs)(n.p,{children:["By contributing to this project, you accept our Contributor License Agreement which is found here: ",(0,i.jsx)(n.a,{href:"https://github.com/OpenC3/cosmos/blob/main/CONTRIBUTING.txt",children:"Contributor License Agreement"})]}),(0,i.jsx)(n.p,{children:"This protects both you and us and you retain full rights to any code you write."})]}),"\n",(0,i.jsx)(n.h2,{id:"test-dependencies",children:"Test Dependencies"}),"\n",(0,i.jsxs)(n.p,{children:["To run the test suite and build the gem you'll need to install COSMOS's\ndependencies. COSMOS uses Bundler, so a quick run of the ",(0,i.jsx)(n.code,{children:"bundle"})," command and\nyou're all set!"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"\\$ bundle\n"})}),"\n",(0,i.jsx)(n.p,{children:"Before you start, run the tests and make sure that they pass (to confirm your\nenvironment is configured properly):"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"\\$ bundle exec rake build spec\n"})}),"\n",(0,i.jsx)(n.h2,{id:"workflow",children:"Workflow"}),"\n",(0,i.jsx)(n.p,{children:"Here's the most direct way to get your work merged into the project:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Fork the project."}),"\n",(0,i.jsx)(n.li,{children:"Clone down your fork:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"git clone git://github.com/<username>/openc3.git\n"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Create a topic branch to contain your change:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"git checkout -b my_awesome_feature\n"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Hack away, add tests. Not necessarily in that order."}),"\n",(0,i.jsxs)(n.li,{children:["Make sure everything still passes by running ",(0,i.jsx)(n.code,{children:"bundle exec rake"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"If necessary, rebase your commits into logical chunks, without errors."}),"\n",(0,i.jsx)(n.li,{children:"Push the branch up:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"git push origin my_awesome_feature\n"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Create a pull request against openc3/cosmos",":main"," and describe what your\nchange does and the why you think it should be merged."]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{title:"Find a problem in the code or documentation?",type:"note",children:(0,i.jsxs)(n.p,{children:["Please ",(0,i.jsx)(n.a,{href:"https://github.com/OpenC3/cosmos/issues/new/choose",children:"create an issue"})," on\nGitHub describing what we can do to make it better."]})})]})}function u(e={}){let{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},2840:function(e,n,t){t.d(n,{Z:()=>c,a:()=>r});var o=t(2784);let i={},s=o.createContext(i);function r(e){let n=o.useContext(s);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(s.Provider,{value:n},e.children)}}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["4593"],{3814:function(e,t,i){i.r(t),i.d(t,{frontMatter:()=>r,default:()=>c,toc:()=>h,metadata:()=>a,assets:()=>o,contentTitle:()=>l});var a=JSON.parse('{"id":"tools/tlm-grapher","title":"Telemetry Grapher","description":"Graph real time or historical data","source":"@site/docs/tools/tlm-grapher.md","sourceDirName":"tools","slug":"/tools/tlm-grapher","permalink":"/tools/staticdocs/docs/tools/tlm-grapher","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/tools/tlm-grapher.md","tags":[],"version":"current","frontMatter":{"title":"Telemetry Grapher","description":"Graph real time or historical data","sidebar_custom_props":{"myEmoji":"\uD83D\uDEE0\uFE0F"}},"sidebar":"defaultSidebar","previous":{"title":"Table Manager","permalink":"/tools/staticdocs/docs/tools/table-manager"},"next":{"title":"Telemetry Viewer","permalink":"/tools/staticdocs/docs/tools/tlm-viewer"}}'),n=i(2322),s=i(2840);let r={title:"Telemetry Grapher",description:"Graph real time or historical data",sidebar_custom_props:{myEmoji:"\uD83D\uDEE0\uFE0F"}},l=void 0,o={},h=[{value:"Introductions",id:"introductions",level:2},{value:"Telemetry Grapher Menus",id:"telemetry-grapher-menus",level:2},{value:"File Menu Items",id:"file-menu-items",level:3},{value:"Open Configuration",id:"open-configuration",level:4},{value:"Save Configuration",id:"save-configuration",level:4},{value:"Graph Menu Items",id:"graph-menu-items",level:3},{value:"Selecting Items",id:"selecting-items",level:2},{value:"Graph Window Management",id:"graph-window-management",level:2}];function d(e){let t={h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h2,{id:"introductions",children:"Introductions"}),"\n",(0,n.jsx)(t.p,{children:"Telemetry Grapher is a graphing application that allows for one or more telemetry points per graph. It supports multiple graphs per screen which can be resized and reordered. Multiple configurations can be saved and restored for different situations."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Telemetry Grapher",src:i(2603).Z+"",width:"1270",height:"927"})}),"\n",(0,n.jsx)(t.h2,{id:"telemetry-grapher-menus",children:"Telemetry Grapher Menus"}),"\n",(0,n.jsx)(t.h3,{id:"file-menu-items",children:"File Menu Items"}),"\n",(0,n.jsx)("img",{src:i(857).Z,alt:"File Menu",style:{float:"left","margin-right":"50px",height:"90px"}}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Open a saved configuration (graphs and items)"}),"\n",(0,n.jsx)(t.li,{children:"Save the current configuration"}),"\n",(0,n.jsx)(t.li,{children:"Reset the configuration (default settings)"}),"\n"]}),"\n",(0,n.jsx)(t.h4,{id:"open-configuration",children:"Open Configuration"}),"\n",(0,n.jsx)(t.p,{children:"The Open Configuration dialog displays a list of all saved configurations. You select a configuration and then click Ok to load it. You can delete existing configurations by clicking the Trash icon next to a configuration name."}),"\n",(0,n.jsx)(t.h4,{id:"save-configuration",children:"Save Configuration"}),"\n",(0,n.jsx)(t.p,{children:"The Save Configuration dialog also displays a list of all saved configurations. You click the Configuration Name text field, enter the name of your new configuration, and click Ok to save. You can delete existing configurations by clicking the Trash icon next to a configuration name."}),"\n",(0,n.jsx)(t.h3,{id:"graph-menu-items",children:"Graph Menu Items"}),"\n",(0,n.jsx)("img",{src:i(9309).Z,alt:"File Menu",style:{float:"left","margin-right":"50px",height:"150px"}}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:"Add a new graph"}),"\n",(0,n.jsx)(t.li,{children:"Start / Resume graphing"}),"\n",(0,n.jsx)(t.li,{children:"Pause graph"}),"\n",(0,n.jsx)(t.li,{children:"Stop graph"}),"\n",(0,n.jsx)(t.li,{children:"Edit grapher settings"}),"\n"]}),"\n",(0,n.jsx)(t.p,{children:"Editing the grapher settings brings up a dialog to change settings affecting every graph in the Telemetry Grapher tool. Changing the Seconds Graphed changes the visible windows displaying graph points. The smaller of Seconds Graphed and Points Graphed will be used when calculating the number of points to display. Changing the Points Saved will affect performance of the browser window if set too high. The default of 1,000,000 points can store over 11.5 days of 1Hz data points."}),"\n",(0,n.jsx)(t.p,{children:"Editing an individual graph by clicking the pencil icon in title bar of the graph brings up the edit graph dialog."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Edit Graph",src:i(8422).Z+"",width:"592",height:"766"})}),"\n",(0,n.jsx)(t.p,{children:"Editing the Start Date and Start Time will re-query the data to begin at the specified time. This operation can take several seconds depending on how far back data is requested. Similarly, specifying the End Date and End Time will limit the data request to the specified time. Leaving the End Date / End Time fields blank will cause Telemetry Grapher to continue to graph items in real-time as they arrive."}),"\n",(0,n.jsx)(t.p,{children:"Changing the Min Y and Max Y values simply sets the graph scale. Deleting the Min Y and Max Y values allows the graph to scale automatically as values arrive. Compare the following graph with the minimum set to 0 and the maximum set to 100 with the first graph image (auto-scale)."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Min Max",src:i(7708).Z+"",width:"1247",height:"718"})}),"\n",(0,n.jsx)(t.h2,{id:"selecting-items",children:"Selecting Items"}),"\n",(0,n.jsx)(t.p,{children:"Selecting a target from the Select Target drop down automatically updates the available packets in the Select Packet drop down which updates the available items in the Select Item drop down. Clicking Add Item adds the item to the graph which immediately begins graphing."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Temp 1",src:i(8813).Z+"",width:"1247",height:"829"})}),"\n",(0,n.jsx)(t.p,{children:"As time passes, the main graph fills up and starts scrolling while the overview graph at the bottom shows the entire history."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Temp 1 History",src:i(4854).Z+"",width:"1247",height:"829"})}),"\n",(0,n.jsx)(t.p,{children:"Selecting a new item and adding it to the graph automatically fills the graph with history until the beginning of the first item. This allows you to add items to the graph incrementally and maintain full history."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Temp1 Temp2",src:i(8133).Z+"",width:"1247",height:"829"})}),"\n",(0,n.jsx)(t.h2,{id:"graph-window-management",children:"Graph Window Management"}),"\n",(0,n.jsx)(t.p,{children:"All graphs can be moved around the browser window by clicking their title bar and moving them. Other graphs will move around intelligently to fill the space. This allows you order the graphs no matter which order they were created in."}),"\n",(0,n.jsx)(t.p,{children:"Each graph has a set of window buttons in the upper right corner. The first shrinks or grows the graph both horizontally and vertically to allow for 4 graphs in the same browser tab. Note that half height graphs no longer show the overview graph."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Four Graphs",src:i(3032).Z+"",width:"1247",height:"710"})}),"\n",(0,n.jsx)(t.p,{children:"The second button shrinks or grows the graph horizontally so it will either be half or full width of the browser window. This allows for two full width graphs on top of each other."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Two Full Width",src:i(5813).Z+"",width:"1247",height:"833"})}),"\n",(0,n.jsx)(t.p,{children:"The second button shrinks or grows the graph vertically so it will either be half or full height of the browser window. This allows for two full height graphs side by side."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Two Full Height",src:i(9038).Z+"",width:"1247",height:"833"})}),"\n",(0,n.jsx)(t.p,{children:"The line button minimizes the graph to effectively hide it. This allows you to focus on a single graph without losing existing graphs."}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.img,{alt:"Minimized",src:i(8171).Z+"",width:"1247",height:"833"})}),"\n",(0,n.jsx)(t.p,{children:"The final X button closes the graph."})]})}function c(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},857:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/file_menu-1c05cfc08f9d07b3f7122d2fe1ad98ed428dc563d2c5d2edddbed71f46779eb8.png"},9309:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/graph_menu-289cbbb168622f661c1c98a7bd2c1b43f888e9c3560ba4e1d435ab62d0aad6de.png"},8422:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/edit_graph-9618076f837e0d358ea0bfbf503d43b377805d818370405536f5a1c049209e99.png"},3032:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/four_graphs-1aa5a7cb9ce51cec815fc9d8740b40e113bd171c4977711d47ef1e6daf02719e.png"},7708:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/graph_min_max-75be4a19a7e13a1b9b7a18a9b898b170c8ded7768b01ce6c6effd566ac8e071a.png"},8813:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/graph_temp1-028d8660c779136ff017b0b8a9fadb294e9ff478a65d7bd73032c3c2ed4f03d0.png"},8133:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/graph_temp1_temp2-ad650da0ddf1fb5c6e9764b737bfab3027f5abcb935ad86d9716dfdf13032dca.png"},4854:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/graph_temp1_time-53c18518755d1d1c816db7f0a67e26c5408aba32b644fda519b5ecf7a7ee9b27.png"},8171:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/minimized-47ddb9b9b68b47aae3d0a12cb39ab767adf446acbe213c0b5565c1bfaf8a463f.png"},2603:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/telemetry_grapher-3a37c074a25b7912a76d96fd46a1431d27202d71374f78c829f273e5cb342233.png"},9038:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/two_full_height-ccba2940b80345f3569ea47b7ddd3390c08195de91559f5586f85e36e411afd6.png"},5813:function(e,t,i){i.d(t,{Z:()=>a});let a=i.p+"assets/images/two_full_width-0116adbf994500a24d4717e002d32098f8d6197bcece510b84b90400f23feade.png"},2840:function(e,t,i){i.d(t,{Z:()=>l,a:()=>r});var a=i(2784);let n={},s=a.createContext(n);function r(e){let t=a.useContext(s);return a.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]);
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([["602"],{8540:function(e,n,i){i.r(n),i.d(n,{frontMatter:()=>r,default:()=>d,toc:()=>a,metadata:()=>t,assets:()=>l,contentTitle:()=>c});var t=JSON.parse('{"id":"development/curl","title":"Testing with Curl","description":"How to use Curl to hit the COSMOS APIs","source":"@site/docs/development/curl.md","sourceDirName":"development","slug":"/development/curl","permalink":"/tools/staticdocs/docs/development/curl","draft":false,"unlisted":false,"editUrl":"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/development/curl.md","tags":[],"version":"current","frontMatter":{"title":"Testing with Curl","description":"How to use Curl to hit the COSMOS APIs","sidebar_custom_props":{"myEmoji":"\uD83C\uDF0A"}},"sidebar":"defaultSidebar","previous":{"title":"Development","permalink":"/tools/staticdocs/docs/development"},"next":{"title":"Developing COSMOS","permalink":"/tools/staticdocs/docs/development/developing"}}'),s=i(2322),o=i(2840);let r={title:"Testing with Curl",description:"How to use Curl to hit the COSMOS APIs",sidebar_custom_props:{myEmoji:"\uD83C\uDF0A"}},c=void 0,l={},a=[{value:"Curl Example with OpenC3 COSMOS Core",id:"curl-example-with-openc3-cosmos-core",level:2},{value:"Curl Example with OpenC3 COSMOS Enterprise",id:"curl-example-with-openc3-cosmos-enterprise",level:2},{value:"Suite Runner Example",id:"suite-runner-example",level:2}];function p(e){let n={admonition:"admonition",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{title:"This documentation is for COSMOS Developers",type:"note",children:(0,s.jsx)(n.p,{children:"This information is just generally used behind the scenes in COSMOS tools"})}),"\n",(0,s.jsx)(n.p,{children:"The COSMOS APIs are all served over HTTP, which means you can use curl to experiment with them. Curl is a great tool for seeing exactly how the API responds to any given request."}),"\n",(0,s.jsx)(n.h2,{id:"curl-example-with-openc3-cosmos-core",children:"Curl Example with OpenC3 COSMOS Core"}),"\n",(0,s.jsx)(n.p,{children:"OpenC3 COSMOS Core just has a single user account, so all you need to do is pass the single password as the token with your requests like this."}),"\n",(0,s.jsx)(n.p,{children:"Request:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'curl -i -H "Content-Type: application/json-rpc" -H "Authorization: password" -d \'{"jsonrpc": "2.0", "method": "tlm", "params": ["INST HEALTH_STATUS TEMP1"], "keyword_params": {"scope": "DEFAULT"}, "id": 8}\' -X POST http://127.0.0.1:2900/openc3-api/api\n'})}),"\n",(0,s.jsx)(n.p,{children:"Response:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'HTTP/1.1 200 OK\nCache-Control: max-age=0, private, must-revalidate\nContent-Length: 51\nContent-Type: application/json-rpc\nEtag: W/"e806aacfdbed0b325e7a5928e3bb5cf4"\nVary: Origin\nX-Request-Id: bbad6c6b-6d22-4374-a86f-b5b0b95e6939\nX-Runtime: 0.059044\nDate: Sat, 04 Nov 2023 21:34:47 GMT\n\n{"jsonrpc":"2.0","id":8,"result":53.26555000000001}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"curl-example-with-openc3-cosmos-enterprise",children:"Curl Example with OpenC3 COSMOS Enterprise"}),"\n",(0,s.jsx)(n.p,{children:"OpenC3 COSMOS Enterprise uses the Keycloak Single Sign-on system, so you must first request a token from Keycloak using a username and password pair, before you make requests. By default this token will expire in 5 minutes, and will need to be refreshed if it expires before your next request."}),"\n",(0,s.jsx)(n.p,{children:"Keycloak Request:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# Get tokens from Keycloak - You will need to update the username and password with your account\ncurl -i -H \"Content-Type: application/x-www-form-urlencoded\" -d 'username=operator&password=operator&client_id=api&grant_type=password&scope=openid' -X POST http://127.0.0.1:2900/auth/realms/openc3/protocol/openid-connect/token\n"})}),"\n",(0,s.jsx)(n.p,{children:"Keycloak Response:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'HTTP/1.1 200 OK\nCache-Control: no-store\nContent-Length: 3207\nContent-Type: application/json\nPragma: no-cache\nReferrer-Policy: no-referrer\nSet-Cookie: KEYCLOAK_LOCALE=; Version=1; Comment=Expiring cookie; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Max-Age=0; Path=/auth/realms/openc3/; HttpOnly\nSet-Cookie: KC_RESTART=; Version=1; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Max-Age=0; Path=/auth/realms/openc3/; HttpOnly\nStrict-Transport-Security: max-age=31536000; includeSubDomains\nX-Content-Type-Options: nosniff\nX-Frame-Options: SAMEORIGIN\nX-Xss-Protection: 1; mode=block\nDate: Wed, 10 May 2023 00:40:40 GMT\n\n{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ0cDlERmpNZGFXMy16WXptdlBqVTZnNTVqMVNhWGhkZHJqU0szQVNvaDhVIn0.eyJleHAiOjE2ODM2Nzk1NDAsImlhdCI6MTY4MzY3OTI0MCwianRpIjoiZmVlOTQwYWYtZDY3Ny00MWUyLWIzNWYtZDI5ODhiM2RhZGQ2IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoyOTAwL2F1dGgvcmVhbG1zL29wZW5jMyIsInN1YiI6ImFjZTFlNmExLTkzMTktNDc2ZS1iZjQzLTZmM2NhYjllZTJkZSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFwaSIsInNlc3Npb25fc3RhdGUiOiJmMzc4NTk2Ny0yYTQ2LTRjMTItYWQwYy1jZmY3ZmM0NzdkZjkiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtb3BlbmMzIiwiQUxMU0NPUEVTX19vcGVyYXRvciIsIm9mZmxpbmVfYWNjZXNzIiwiQUxMU0NPUEVTX192aWV3ZXIiXX0sInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZW1haWwiLCJzaWQiOiJmMzc4NTk2Ny0yYTQ2LTRjMTItYWQwYy1jZmY3ZmM0NzdkZjkiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiJUaGUgT3BlcmF0b3IiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJvcGVyYXRvciIsImdpdmVuX25hbWUiOiJUaGUiLCJmYW1pbHlfbmFtZSI6Ik9wZXJhdG9yIn0.eSqSeZrmCTahwltz5jsu5r3w6W15T5h0BvIdqKWQBDcnxAcxKuT-Nwziw_ewySSgHeC172CIWJUpHVp8ACDQG-dfW4KkvA6AcGfSF_f8TBH_rZrVQwlvwwzdA_egGKzhZWcnAC8TDjXRxuaWmnOgWT0aaHZAoW8EvwmKp-1IVz2l0B-hqzfC7dkjMrCI1udLfDvDBza9OtuR-FnKGt8h4nYnRzr8pO2jwebPFyZlR00gVsyK-b411XqprpT-qpRObYZwH5womA-8xIiwRZj9dsfQ1TaHGFkp1LNzxcj_r6pfwVO263bohbeU7ImezQdbvGLJ9NHaglzVNroTui4BXA","expires_in":300,"refresh_expires_in":1800,"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI5NjNlMjJiMS0wZmYwLTRmZjktYTg0Zi1hOGI4MzcxOWFiMDEifQ.eyJleHAiOjE2ODM2ODEwNDAsImlhdCI6MTY4MzY3OTI0MCwianRpIjoiMmQyYjIyNmItNjJkOS00YjRjLWI3YTYtMGEwYjk4MGQyMjMwIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoyOTAwL2F1dGgvcmVhbG1zL29wZW5jMyIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6MjkwMC9hdXRoL3JlYWxtcy9vcGVuYzMiLCJzdWIiOiJhY2UxZTZhMS05MzE5LTQ3NmUtYmY0My02ZjNjYWI5ZWUyZGUiLCJ0eXAiOiJSZWZyZXNoIiwiYXpwIjoiYXBpIiwic2Vzc2lvbl9zdGF0ZSI6ImYzNzg1OTY3LTJhNDYtNGMxMi1hZDBjLWNmZjdmYzQ3N2RmOSIsInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZW1haWwiLCJzaWQiOiJmMzc4NTk2Ny0yYTQ2LTRjMTItYWQwYy1jZmY3ZmM0NzdkZjkifQ.1HlKdxQkaL5tYuHTXsOceLZFmNNLl9BjoA4oUl70x9M","token_type":"Bearer","id_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ0cDlERmpNZGFXMy16WXptdlBqVTZnNTVqMVNhWGhkZHJqU0szQVNvaDhVIn0.eyJleHAiOjE2ODM2Nzk1NDAsImlhdCI6MTY4MzY3OTI0MCwiYXV0aF90aW1lIjowLCJqdGkiOiJhNDJkOTY1ZS1lMzU0LTRiM2QtOTIyYS1hOWE0ZDgwZWYxMTkiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjI5MDAvYXV0aC9yZWFsbXMvb3BlbmMzIiwiYXVkIjoiYXBpIiwic3ViIjoiYWNlMWU2YTEtOTMxOS00NzZlLWJmNDMtNmYzY2FiOWVlMmRlIiwidHlwIjoiSUQiLCJhenAiOiJhcGkiLCJzZXNzaW9uX3N0YXRlIjoiZjM3ODU5NjctMmE0Ni00YzEyLWFkMGMtY2ZmN2ZjNDc3ZGY5IiwiYXRfaGFzaCI6IjNBWE9ISkFKYzFPVldLd2Y0a0Q4TkEiLCJhY3IiOiIxIiwic2lkIjoiZjM3ODU5NjctMmE0Ni00YzEyLWFkMGMtY2ZmN2ZjNDc3ZGY5IiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJuYW1lIjoiVGhlIE9wZXJhdG9yIiwicHJlZmVycmVkX3VzZXJuYW1lIjoib3BlcmF0b3IiLCJnaXZlbl9uYW1lIjoiVGhlIiwiZmFtaWx5X25hbWUiOiJPcGVyYXRvciJ9.gdLl6KOKIIAdl6jYEuAXQrGCNvuwLQb3RDnwrHJdqyFXshiwofBiLMFreRsIE-33xXWNBU6pnSLQHPVlQU5Vmzlk0IOfk-b4yNq0dNa1TV1kmnxRl8w1ulTQYVZjdsN-oyLNwe0v3aJcYtbvIA3DP8rgO6bVv0ogkjWtlda6MbkyZN-har8x3raUVSlUPRP2Basy1xSMNNA1jvB-nEM-aubrUZE6r0PjI6PE1hbLPmuPbcX3uuIwXu2-UoXepkB8H7omUuMm-S98aHpRarwszC0mmHD5b_wiXusMVw4xYw8eavFue4zfw-T2IKuTVtxbMTygXIah6iqi4gkpL8Mx1w","not-before-policy":0,"session_state":"f3785967-2a46-4c12-ad0c-cff7fc477df9","scope":"openid profile email"}\n'})}),"\n",(0,s.jsx)(n.p,{children:"COSMOS Request:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'# COSMOS Request now looks like this:\n\ncurl -i -H "Content-Type: application/json-rpc" -H "Authorization: eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJ0cDlERmpNZGFXMy16WXptdlBqVTZnNTVqMVNhWGhkZHJqU0szQVNvaDhVIn0.eyJleHAiOjE2ODM2Nzk1NDAsImlhdCI6MTY4MzY3OTI0MCwianRpIjoiZmVlOTQwYWYtZDY3Ny00MWUyLWIzNWYtZDI5ODhiM2RhZGQ2IiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDoyOTAwL2F1dGgvcmVhbG1zL29wZW5jMyIsInN1YiI6ImFjZTFlNmExLTkzMTktNDc2ZS1iZjQzLTZmM2NhYjllZTJkZSIsInR5cCI6IkJlYXJlciIsImF6cCI6ImFwaSIsInNlc3Npb25fc3RhdGUiOiJmMzc4NTk2Ny0yYTQ2LTRjMTItYWQwYy1jZmY3ZmM0NzdkZjkiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbImRlZmF1bHQtcm9sZXMtb3BlbmMzIiwiQUxMU0NPUEVTX19vcGVyYXRvciIsIm9mZmxpbmVfYWNjZXNzIiwiQUxMU0NPUEVTX192aWV3ZXIiXX0sInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZW1haWwiLCJzaWQiOiJmMzc4NTk2Ny0yYTQ2LTRjMTItYWQwYy1jZmY3ZmM0NzdkZjkiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiJUaGUgT3BlcmF0b3IiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJvcGVyYXRvciIsImdpdmVuX25hbWUiOiJUaGUiLCJmYW1pbHlfbmFtZSI6Ik9wZXJhdG9yIn0.eSqSeZrmCTahwltz5jsu5r3w6W15T5h0BvIdqKWQBDcnxAcxKuT-Nwziw_ewySSgHeC172CIWJUpHVp8ACDQG-dfW4KkvA6AcGfSF_f8TBH_rZrVQwlvwwzdA_egGKzhZWcnAC8TDjXRxuaWmnOgWT0aaHZAoW8EvwmKp-1IVz2l0B-hqzfC7dkjMrCI1udLfDvDBza9OtuR-FnKGt8h4nYnRzr8pO2jwebPFyZlR00gVsyK-b411XqprpT-qpRObYZwH5womA-8xIiwRZj9dsfQ1TaHGFkp1LNzxcj_r6pfwVO263bohbeU7ImezQdbvGLJ9NHaglzVNroTui4BXA" -d \'{"jsonrpc": "2.0", "method": "tlm", "params": ["INST HEALTH_STATUS TEMP1"], "keyword_params": {"scope": "DEFAULT"}, "id": 8}\' -X POST http://127.0.0.1:2900/openc3-api/api\n'})}),"\n",(0,s.jsx)(n.p,{children:"COSMOS Response:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'HTTP/1.1 200 OK\nCache-Control: max-age=0, private, must-revalidate\nContent-Type: application/json-rpc\nEtag: W/"1e44c0878528687014e1e60a1cbebdae"\nVary: Origin\nX-Request-Id: 47a8dd26-1348-4693-8df1-5375f60abc6c\nX-Runtime: 0.046477\nDate: Wed, 10 May 2023 00:41:33 GMT\nTransfer-Encoding: chunked\n\n{"jsonrpc":"2.0","id":8,"result":29.204100000000007}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"suite-runner-example",children:"Suite Runner Example"}),"\n",(0,s.jsxs)(n.p,{children:["It can be very useful to run the a suite or script remotely from a continuous testing server. COSMOS' REST API allows for this. To figure out what is required to run a certain task on the web GUI you can open up your browser's developer tools to monitor the network traffic. You will see all the requests and responses required to run a command and you can reformat them yourself to suit your own purposes. Below is an example of running a test script from a Chromium-based browser:\n",(0,s.jsx)(n.img,{src:"https://github.com/OpenC3/cosmos/assets/55999897/df642d42-43e0-47f9-9b52-d42746d9746b",alt:"Network Traffic in browser developer tools"})]}),"\n",(0,s.jsxs)(n.p,{children:['You can see that there are 5 transactions total. To investigate just right-click on the network transaction and click "copy as ',(0,s.jsx)(n.code,{children:"curl"}),'" (depends on the browser). Here is an example of the second one:']}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"curl 'http://localhost:2900/script-api/scripts/TARGET/procedures/cmd_tlm_test.rb/lock?scope=DEFAULT' \\\n -X 'POST' \\\n -H 'Accept: application/json' \\\n -H 'Accept-Language: en-US,en;q=0.9' \\\n -H 'Authorization: pass' \\\n -H 'Connection: keep-alive' \\\n -H 'Content-Length: 0' \\\n -H 'Origin: http://ascportal:2900' \\\n -H 'Referer: http://localhost:2900/tools/scriptrunner/?file=TARGET%2Fprocedures%2Fcmd_tlm_test.rb' \\\n -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0' \\\n --insecure\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Many of the browser-specific headers are not required. The important thing to notice here is the URL and the request (in this case ",(0,s.jsx)(n.code,{children:"POST"}),"). If we inspect all of these we'll find out what each one does:"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Set the script contents","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"this updates any local changes)"}),"\n",(0,s.jsxs)(n.li,{children:["Note that this is a different request to ",(0,s.jsx)(n.code,{children:"GET"})," the script contents. This is done on the page load."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.li,{children:"Lock the script (so other users can't edit it during execution)"}),"\n",(0,s.jsx)(n.li,{children:"Run script (this takes a JSON with options)"}),"\n",(0,s.jsx)(n.li,{children:"Open Websocket for logs"}),"\n",(0,s.jsx)(n.li,{children:"Request Result (this URL is a little different because the results are saved in redis)"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Below is a bash script which does all the above given some options. It requires ",(0,s.jsx)(n.code,{children:"curl"})," for the web requests and ",(0,s.jsx)(n.code,{children:"jq"})," for JSON parsing and formatting. It locks and runs the script, continually checks its status, then requests the result."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'#!/bin/bash\nset -e\nTARGET=${1:-\'TARGET\'}\nSCRIPT=${2:-\'procedures/cmd_tlm_test.rb\'}\nSUITE=${3:-\'TestSuite\'}\nCOSMOS_HOST=\'http://localhost:2900\'\nSCRIPT_API="$COSMOS_HOST/script-api"\nSCRIPT_PATH="scripts/$TARGET/$SCRIPT"\nCURL_ARGS=(\n -H \'Accept: application/json\'\n -H \'Authorization: password\'\n -H \'Accept-Language: en-US,en;q=0.9\'\n -H \'Connection: keep-alive\'\n -H \'Content-Type: application/json\'\n --insecure\n --silent )\n\n# Lock script #\ncurl "$SCRIPT_API/$SCRIPT_PATH/lock?scope=DEFAULT" -X "POST" "${CURL_ARGS[@]}"\n\n# Run script #\nRUN_OPTS=$(cat <<-json\n{\n "environment": [],\n "suiteRunner": {\n "method": "start",\n "suite": "$SUITE",\n "options": [\n "continueAfterError"\n ]\n }\n}\njson\n)\nRUN_OPTS=$(<<<"$RUN_OPTS" jq -rc .)\nID=$(curl "$SCRIPT_API/$SCRIPT_PATH/run?scope=DEFAULT" --data-raw "$RUN_OPTS" "${CURL_ARGS[@]}")\n\necho "Starting Script \'$SCRIPT_PATH\' at $(date) (may take up to 15 minutes)" > /dev/stderr\necho "You can monitor it in Script Runner here: $COSMOS_HOST/tools/scriptrunner/$ID" > /dev/stderr\n# Loop while Script ID is still running #\nwhile true; do\n SCRIPT_STATUS="$(curl "$SCRIPT_API/running-script?scope=DEFAULT" "${CURL_ARGS[@]}" | jq ".[]|select(.id==$ID)")"\n if [[ -z $SCRIPT_STATUS ]]; then\n break;\n fi\n sleep 2\ndone\n\n# Request results #\nBUCKET_FILE_URI="$(curl "$SCRIPT_API/completed-scripts?scope=DEFAULT" "${CURL_ARGS[@]}" |\\\n jq \'[.[]|select(.name | test("\'"${SCRIPT_PATH#scripts/}"\' "))][0] | .log | @uri\' -r)"\n\nURL="$(curl "$COSMOS_HOST/openc3-api/storage/download/$BUCKET_FILE_URI?bucket=OPENC3_LOGS_BUCKET&scope=DEFAULT" "${CURL_ARGS[@]}" |jq .url -r)"\n\ncurl "$COSMOS_HOST$URL" "${CURL_ARGS[@]}"\n'})})]})}function d(e={}){let{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},2840:function(e,n,i){i.d(n,{Z:()=>c,a:()=>r});var t=i(2784);let s={},o=t.createContext(s);function r(e){let n=t.useContext(o);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]);
|