From 9387db2fd702d8e5c0e1ab5787850cfbc45d36ae Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 6 Sep 2023 08:48:43 +0000 Subject: [PATCH] Deployed 2251466a0 to 3.4.1 with MkDocs 1.4.0 and mike 1.1.2 --- 3.4.1/404.html | 5354 +++++++++++++ 3.4.1/CONTRIBUTING/index.html | 5548 ++++++++++++++ 3.4.1/LICENSE-BSD2 | 25 + 3.4.1/LICENSE-CC0 | 121 + 3.4.1/SC4Sdeployment.png | Bin 0 -> 41688 bytes 3.4.1/architecture/index.html | 5568 ++++++++++++++ 3.4.1/assets/images/favicon.png | Bin 0 -> 1870 bytes .../assets/javascripts/bundle.078830c0.min.js | 29 + .../javascripts/bundle.078830c0.min.js.map | 8 + .../javascripts/lunr/min/lunr.ar.min.js | 1 + .../javascripts/lunr/min/lunr.da.min.js | 18 + .../javascripts/lunr/min/lunr.de.min.js | 18 + .../javascripts/lunr/min/lunr.du.min.js | 18 + .../javascripts/lunr/min/lunr.es.min.js | 18 + .../javascripts/lunr/min/lunr.fi.min.js | 18 + .../javascripts/lunr/min/lunr.fr.min.js | 18 + .../javascripts/lunr/min/lunr.hi.min.js | 1 + .../javascripts/lunr/min/lunr.hu.min.js | 18 + .../javascripts/lunr/min/lunr.it.min.js | 18 + .../javascripts/lunr/min/lunr.ja.min.js | 1 + .../javascripts/lunr/min/lunr.jp.min.js | 1 + .../javascripts/lunr/min/lunr.multi.min.js | 1 + .../javascripts/lunr/min/lunr.nl.min.js | 18 + .../javascripts/lunr/min/lunr.no.min.js | 18 + .../javascripts/lunr/min/lunr.pt.min.js | 18 + .../javascripts/lunr/min/lunr.ro.min.js | 18 + .../javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + .../javascripts/lunr/min/lunr.sv.min.js | 18 + .../javascripts/lunr/min/lunr.th.min.js | 1 + .../javascripts/lunr/min/lunr.tr.min.js | 18 + .../javascripts/lunr/min/lunr.vi.min.js | 1 + .../javascripts/lunr/min/lunr.zh.min.js | 1 + 3.4.1/assets/javascripts/lunr/tinyseg.js | 206 + 3.4.1/assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.5bf1dace.min.js | 48 + .../workers/search.5bf1dace.min.js.map | 8 + .../assets/stylesheets/main.20d9efc8.min.css | 1 + .../stylesheets/main.20d9efc8.min.css.map | 1 + .../stylesheets/palette.cbb835fc.min.css | 1 + .../stylesheets/palette.cbb835fc.min.css.map | 1 + 3.4.1/configuration/index.html | 6467 ++++++++++++++++ 3.4.1/destinations/index.html | 5792 ++++++++++++++ 3.4.1/developing/gh_clone.png | Bin 0 -> 17417 bytes 3.4.1/developing/gh_fork.png | Bin 0 -> 32009 bytes 3.4.1/developing/index.html | 5550 ++++++++++++++ 3.4.1/developing/vsc_debug.png | Bin 0 -> 73250 bytes 3.4.1/developing/vsc_run.png | Bin 0 -> 23843 bytes 3.4.1/experiments/index.html | 5540 ++++++++++++++ 3.4.1/faq/index.html | 5453 ++++++++++++++ .../ansible-docker-podman/index.html | 5596 ++++++++++++++ .../ansible-docker-swarm/index.html | 5652 ++++++++++++++ 3.4.1/gettingstarted/ansible-mk8s/index.html | 5601 ++++++++++++++ 3.4.1/gettingstarted/byoe-rhel8/index.html | 5610 ++++++++++++++ 3.4.1/gettingstarted/create-parser/index.html | 5738 ++++++++++++++ .../docker-compose-MacOS/index.html | 5605 ++++++++++++++ .../gettingstarted/docker-compose/index.html | 5579 ++++++++++++++ .../docker-podman-offline/index.html | 5463 ++++++++++++++ .../docker-systemd-general/index.html | 5582 ++++++++++++++ .../index.html | 5745 ++++++++++++++ .../getting-started-splunk-setup/index.html | 5555 ++++++++++++++ 3.4.1/gettingstarted/index.html | 5558 ++++++++++++++ 3.4.1/gettingstarted/k8s-microk8s/index.html | 5598 ++++++++++++++ .../podman-systemd-general/index.html | 5671 ++++++++++++++ .../quickstart_guide/index.html | 5570 ++++++++++++++ 3.4.1/index.html | 5545 ++++++++++++++ 3.4.1/lb/index.html | 5484 ++++++++++++++ 3.4.1/lite/index.html | 5486 ++++++++++++++ 3.4.1/logo.png | Bin 0 -> 34258 bytes 3.4.1/performance/index.html | 5685 ++++++++++++++ 3.4.1/resources/docker-compose.yml | 29 + 3.4.1/resources/docker/sc4s.service | 44 + 3.4.1/resources/env_file | 4 + .../images/parser_dev_basic_output.png | Bin 0 -> 206546 bytes .../images/parser_dev_splunk_first_run.png | Bin 0 -> 610344 bytes 3.4.1/resources/images/ws_conv.png | Bin 0 -> 1161392 bytes 3.4.1/resources/indexes.conf | 116 + 3.4.1/resources/k8s/values_adv.yaml | 29 + .../resources/k8s/values_adv_config_file.yaml | 38 + 3.4.1/resources/k8s/values_basic.yaml | 5 + .../resources/k8s/values_basic_no_token.yaml | 4 + 3.4.1/resources/k8s/values_ha.yaml | 6 + .../app-syslog-vmware_cb-protect_example.conf | 31 + ...yslog-vmware_cb-protect_example_basic.conf | 21 + 3.4.1/resources/podman/sc4s.service | 45 + .../test_vmware_carbonblack_with_comments.py | 53 + 3.4.1/sc4slite_arch_diag.png | Bin 0 -> 334321 bytes 3.4.1/search/search_index.json | 1 + 3.4.1/sitemap.xml | 848 +++ 3.4.1/sitemap.xml.gz | Bin 0 -> 289 bytes 3.4.1/sources/base/cef/index.html | 5699 ++++++++++++++ 3.4.1/sources/base/leef/index.html | 5717 ++++++++++++++ 3.4.1/sources/base/nix/index.html | 5615 ++++++++++++++ 3.4.1/sources/base/simple/index.html | 5573 ++++++++++++++ 3.4.1/sources/index.html | 5830 ++++++++++++++ 3.4.1/sources/vendor/AVI/index.html | 5567 ++++++++++++++ .../sources/vendor/Alcatel/Switch/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Alsid/Alsid/index.html | 5569 ++++++++++++++ 3.4.1/sources/vendor/Arista/index.html | 5573 ++++++++++++++ 3.4.1/sources/vendor/Aruba/ap/index.html | 5603 ++++++++++++++ .../sources/vendor/Aruba/clearpass/index.html | 5603 ++++++++++++++ 3.4.1/sources/vendor/Avaya/index.html | 5568 ++++++++++++++ 3.4.1/sources/vendor/Barracuda/waf/index.html | 5598 ++++++++++++++ .../vendor/Barracuda/waf_on_prem/index.html | 5607 ++++++++++++++ .../sources/vendor/BeyondTrust/sra/index.html | 5603 ++++++++++++++ .../vendor/Broadcom/brightmail/index.html | 5608 ++++++++++++++ 3.4.1/sources/vendor/Broadcom/dlp/index.html | 5674 ++++++++++++++ 3.4.1/sources/vendor/Broadcom/ep/index.html | 5614 ++++++++++++++ .../sources/vendor/Broadcom/proxy/index.html | 5604 ++++++++++++++ .../sources/vendor/Broadcom/sslva/index.html | 5577 ++++++++++++++ .../sources/vendor/Brocade/switch/index.html | 5597 ++++++++++++++ 3.4.1/sources/vendor/Buffalo/index.html | 5597 ++++++++++++++ .../vendor/Checkpoint/firewallos/index.html | 5579 ++++++++++++++ .../Checkpoint/logexporter_5424/index.html | 5695 ++++++++++++++ .../Checkpoint/logexporter_legacy/index.html | 5708 ++++++++++++++ .../sources/vendor/Cisco/cisco_ace/index.html | 5563 ++++++++++++++ .../sources/vendor/Cisco/cisco_acs/index.html | 5575 ++++++++++++++ .../sources/vendor/Cisco/cisco_asa/index.html | 5579 ++++++++++++++ .../sources/vendor/Cisco/cisco_dna/index.html | 5598 ++++++++++++++ .../sources/vendor/Cisco/cisco_esa/index.html | 5740 ++++++++++++++ .../sources/vendor/Cisco/cisco_imc/index.html | 5552 ++++++++++++++ .../sources/vendor/Cisco/cisco_ios/index.html | 5666 ++++++++++++++ .../sources/vendor/Cisco/cisco_ise/index.html | 5577 ++++++++++++++ .../vendor/Cisco/cisco_meraki/index.html | 5684 ++++++++++++++ .../sources/vendor/Cisco/cisco_mm/index.html | 5607 ++++++++++++++ .../sources/vendor/Cisco/cisco_ms/index.html | 5597 ++++++++++++++ .../vendor/Cisco/cisco_tvcs/index.html | 5544 ++++++++++++++ .../sources/vendor/Cisco/cisco_ucm/index.html | 5525 ++++++++++++++ .../vendor/Cisco/cisco_ucshx/index.html | 5567 ++++++++++++++ .../vendor/Cisco/cisco_viptela/index.html | 5524 ++++++++++++++ .../sources/vendor/Cisco/cisco_wsa/index.html | 5653 ++++++++++++++ .../vendor/Citrix/netscaler/index.html | 5605 ++++++++++++++ 3.4.1/sources/vendor/Clearswift/index.html | 5596 ++++++++++++++ .../vendor/Cohesity/cluster/index.html | 5577 ++++++++++++++ 3.4.1/sources/vendor/CyberArk/epv/index.html | 5579 ++++++++++++++ 3.4.1/sources/vendor/CyberArk/pta/index.html | 5583 ++++++++++++++ .../sources/vendor/Cylance/protect/index.html | 5671 ++++++++++++++ .../vendor/DARKTRACE/darktrace/index.html | 5577 ++++++++++++++ 3.4.1/sources/vendor/Dell/cmc/index.html | 5609 ++++++++++++++ .../vendor/Dell/emc_powerswitchn/index.html | 5571 ++++++++++++++ 3.4.1/sources/vendor/Dell/idrac/index.html | 5579 ++++++++++++++ .../vendor/Dell/rsa_secureid/index.html | 5621 ++++++++++++++ .../sources/vendor/Dell/sonicwall/index.html | 5627 ++++++++++++++ 3.4.1/sources/vendor/F5/bigip/index.html | 5669 ++++++++++++++ 3.4.1/sources/vendor/FireEye/cms/index.html | 5575 ++++++++++++++ 3.4.1/sources/vendor/FireEye/emps/index.html | 5575 ++++++++++++++ 3.4.1/sources/vendor/FireEye/etp/index.html | 5575 ++++++++++++++ 3.4.1/sources/vendor/FireEye/hx/index.html | 5575 ++++++++++++++ 3.4.1/sources/vendor/Forcepoint/index.html | 5567 ++++++++++++++ .../vendor/Forcepoint/webprotect/index.html | 5573 ++++++++++++++ .../vendor/Fortinet/FortiGate_event.png | Bin 0 -> 128246 bytes .../vendor/Fortinet/FortiGate_traffic.png | Bin 0 -> 155361 bytes .../sources/vendor/Fortinet/FortiGate_utm.png | Bin 0 -> 183092 bytes .../vendor/Fortinet/fortimail/index.html | 5563 ++++++++++++++ .../vendor/Fortinet/fortios/index.html | 5677 ++++++++++++++ .../vendor/Fortinet/fortiweb/index.html | 5639 ++++++++++++++ 3.4.1/sources/vendor/GitHub/index.html | 5567 ++++++++++++++ .../sources/vendor/HAProxy/syslog/index.html | 5577 ++++++++++++++ 3.4.1/sources/vendor/HPe/ilo/index.html | 5559 ++++++++++++++ 3.4.1/sources/vendor/HPe/jedirect/index.html | 5583 ++++++++++++++ 3.4.1/sources/vendor/HPe/procurve/index.html | 5578 ++++++++++++++ 3.4.1/sources/vendor/IBM/datapower/index.html | 5580 ++++++++++++++ 3.4.1/sources/vendor/ISC/bind/index.html | 5575 ++++++++++++++ 3.4.1/sources/vendor/ISC/dhcpd/index.html | 5638 ++++++++++++++ .../vendor/Imperva/incapusla/index.html | 5612 ++++++++++++++ 3.4.1/sources/vendor/Imperva/waf/index.html | 5585 ++++++++++++++ 3.4.1/sources/vendor/InfoBlox/index.html | 5670 ++++++++++++++ 3.4.1/sources/vendor/Juniper/junos/index.html | 5663 ++++++++++++++ .../vendor/Juniper/netscreen/index.html | 5577 ++++++++++++++ 3.4.1/sources/vendor/Kaspersky/es/index.html | 5573 ++++++++++++++ .../vendor/Kaspersky/es_cef/index.html | 5589 ++++++++++++++ .../vendor/Kaspersky/es_leef/index.html | 5587 ++++++++++++++ .../Liveaction/liveaction_livenx/index.html | 5566 ++++++++++++++ 3.4.1/sources/vendor/McAfee/epo/index.html | 5731 ++++++++++++++ 3.4.1/sources/vendor/McAfee/nsp/index.html | 5614 ++++++++++++++ 3.4.1/sources/vendor/McAfee/wg/index.html | 5587 ++++++++++++++ .../vendor/Microfocus/arcsight/index.html | 5604 ++++++++++++++ .../vendor/Microfocus/windows/index.html | 5622 ++++++++++++++ 3.4.1/sources/vendor/Microsoft/index.html | 5612 ++++++++++++++ .../vendor/Mikrotik/routeros/index.html | 5595 ++++++++++++++ 3.4.1/sources/vendor/NetApp/ontap/index.html | 5567 ++++++++++++++ .../vendor/NetApp/storage-grid/index.html | 5578 ++++++++++++++ .../vendor/NetScout/arbor_edge/index.html | 5581 ++++++++++++++ .../Netmotion/mobilityserver/index.html | 5566 ++++++++++++++ .../vendor/Netmotion/reporting/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Novell/netiq/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Nutanix/cvm/index.html | 5578 ++++++++++++++ 3.4.1/sources/vendor/Ossec/ossec/index.html | 5567 ++++++++++++++ .../PaloaltoNetworks/cortexxdr/index.html | 5562 ++++++++++++++ .../vendor/PaloaltoNetworks/panos/index.html | 5775 ++++++++++++++ .../vendor/PaloaltoNetworks/traps/index.html | 5583 ++++++++++++++ .../vendor/Pfsense/firewall/index.html | 5607 ++++++++++++++ 3.4.1/sources/vendor/Polycom/rprm/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Proofpoint/index.html | 5609 ++++++++++++++ .../vendor/Pulse/connectsecure/index.html | 5577 ++++++++++++++ .../vendor/PureStorage/array/index.html | 5577 ++++++++++++++ .../sources/vendor/Qumulo/storage/index.html | 5563 ++++++++++++++ .../vendor/Radware/defensepro/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Raritan/dsx/index.html | 5597 ++++++++++++++ 3.4.1/sources/vendor/Ricoh/mfp/index.html | 5598 ++++++++++++++ 3.4.1/sources/vendor/Riverbed/index.html | 5604 ++++++++++++++ .../vendor/Riverbed/steelconnect/index.html | 5567 ++++++++++++++ .../vendor/Riverbed/steelhead/index.html | 5597 ++++++++++++++ .../vendor/Ruckus/SmartZone/index.html | 5568 ++++++++++++++ 3.4.1/sources/vendor/Schneider/apc/index.html | 5597 ++++++++++++++ .../SecureAuthIdP/secureauth_idp/index.html | 5563 ++++++++++++++ .../vendor/Solace/evenbroker/index.html | 5567 ++++++++++++++ .../sources/vendor/Sophos/Firewall/index.html | 5687 ++++++++++++++ .../vendor/Sophos/webappliance/index.html | 5597 ++++++++++++++ 3.4.1/sources/vendor/Spectracom/index.html | 5601 ++++++++++++++ .../vendor/Splunk/heavyforwarder/index.html | 5730 ++++++++++++++ 3.4.1/sources/vendor/Splunk/sc4s/index.html | 5701 ++++++++++++++ .../StealthWatch/StealthIntercept/index.html | 5576 ++++++++++++++ .../sources/vendor/Tanium/platform/index.html | 5575 ++++++++++++++ 3.4.1/sources/vendor/Tenable/ad/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Tenable/nnm/index.html | 5567 ++++++++++++++ .../vendor/Thycotic/secretserver/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Tintri/syslog/index.html | 5573 ++++++++++++++ .../vendor/Trend/deepsecurity/index.html | 5651 ++++++++++++++ .../sources/vendor/Ubiquiti/unifi/index.html | 5627 ++++++++++++++ .../sources/vendor/VMWare/airwatch/index.html | 5574 ++++++++++++++ .../vendor/VMWare/carbonblack/index.html | 5785 ++++++++++++++ .../vendor/VMWare/horizonview/index.html | 5571 ++++++++++++++ .../sources/vendor/VMWare/vsphere/index.html | 5773 ++++++++++++++ .../vendor/Varonis/datadvantage/index.html | 5575 ++++++++++++++ .../sources/vendor/Vectra/cognito/index.html | 5645 ++++++++++++++ .../sources/vendor/Wallix/bastion/index.html | 5593 ++++++++++++++ .../vendor/XYPro/mergedaudit/index.html | 5567 ++++++++++++++ 3.4.1/sources/vendor/Zscaler/lss/index.html | 5600 ++++++++++++++ 3.4.1/sources/vendor/Zscaler/nss/index.html | 5668 ++++++++++++++ .../vendor/a10networks/vthunder/index.html | 5616 ++++++++++++++ .../vendor/syslog-ng/loggen/index.html | 5574 ++++++++++++++ 3.4.1/throughput.png | Bin 0 -> 29010 bytes .../troubleshoot_SC4S_server/index.html | 5966 +++++++++++++++ .../troubleshoot_resources/index.html | 5760 ++++++++++++++ 3.4.1/upgrade/index.html | 5588 ++++++++++++++ 3.4.1/v3_upgrade/index.html | 5453 ++++++++++++++ versions.json | 2 +- 238 files changed, 962172 insertions(+), 1 deletion(-) create mode 100644 3.4.1/404.html create mode 100644 3.4.1/CONTRIBUTING/index.html create mode 100644 3.4.1/LICENSE-BSD2 create mode 100644 3.4.1/LICENSE-CC0 create mode 100644 3.4.1/SC4Sdeployment.png create mode 100644 3.4.1/architecture/index.html create mode 100644 3.4.1/assets/images/favicon.png create mode 100644 3.4.1/assets/javascripts/bundle.078830c0.min.js create mode 100644 3.4.1/assets/javascripts/bundle.078830c0.min.js.map create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 3.4.1/assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 3.4.1/assets/javascripts/lunr/tinyseg.js create mode 100644 3.4.1/assets/javascripts/lunr/wordcut.js create mode 100644 3.4.1/assets/javascripts/workers/search.5bf1dace.min.js create mode 100644 3.4.1/assets/javascripts/workers/search.5bf1dace.min.js.map create mode 100644 3.4.1/assets/stylesheets/main.20d9efc8.min.css create mode 100644 3.4.1/assets/stylesheets/main.20d9efc8.min.css.map create mode 100644 3.4.1/assets/stylesheets/palette.cbb835fc.min.css create mode 100644 3.4.1/assets/stylesheets/palette.cbb835fc.min.css.map create mode 100644 3.4.1/configuration/index.html create mode 100644 3.4.1/destinations/index.html create mode 100644 3.4.1/developing/gh_clone.png create mode 100644 3.4.1/developing/gh_fork.png create mode 100644 3.4.1/developing/index.html create mode 100644 3.4.1/developing/vsc_debug.png create mode 100644 3.4.1/developing/vsc_run.png create mode 100644 3.4.1/experiments/index.html create mode 100644 3.4.1/faq/index.html create mode 100644 3.4.1/gettingstarted/ansible-docker-podman/index.html create mode 100644 3.4.1/gettingstarted/ansible-docker-swarm/index.html create mode 100644 3.4.1/gettingstarted/ansible-mk8s/index.html create mode 100644 3.4.1/gettingstarted/byoe-rhel8/index.html create mode 100644 3.4.1/gettingstarted/create-parser/index.html create mode 100644 3.4.1/gettingstarted/docker-compose-MacOS/index.html create mode 100644 3.4.1/gettingstarted/docker-compose/index.html create mode 100644 3.4.1/gettingstarted/docker-podman-offline/index.html create mode 100644 3.4.1/gettingstarted/docker-systemd-general/index.html create mode 100644 3.4.1/gettingstarted/getting-started-runtime-configuration/index.html create mode 100644 3.4.1/gettingstarted/getting-started-splunk-setup/index.html create mode 100644 3.4.1/gettingstarted/index.html create mode 100644 3.4.1/gettingstarted/k8s-microk8s/index.html create mode 100644 3.4.1/gettingstarted/podman-systemd-general/index.html create mode 100644 3.4.1/gettingstarted/quickstart_guide/index.html create mode 100644 3.4.1/index.html create mode 100644 3.4.1/lb/index.html create mode 100644 3.4.1/lite/index.html create mode 100644 3.4.1/logo.png create mode 100644 3.4.1/performance/index.html create mode 100644 3.4.1/resources/docker-compose.yml create mode 100644 3.4.1/resources/docker/sc4s.service create mode 100644 3.4.1/resources/env_file create mode 100644 3.4.1/resources/images/parser_dev_basic_output.png create mode 100644 3.4.1/resources/images/parser_dev_splunk_first_run.png create mode 100644 3.4.1/resources/images/ws_conv.png create mode 100644 3.4.1/resources/indexes.conf create mode 100644 3.4.1/resources/k8s/values_adv.yaml create mode 100644 3.4.1/resources/k8s/values_adv_config_file.yaml create mode 100644 3.4.1/resources/k8s/values_basic.yaml create mode 100644 3.4.1/resources/k8s/values_basic_no_token.yaml create mode 100644 3.4.1/resources/k8s/values_ha.yaml create mode 100644 3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example.conf create mode 100644 3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example_basic.conf create mode 100644 3.4.1/resources/podman/sc4s.service create mode 100644 3.4.1/resources/test_vmware_carbonblack_with_comments.py create mode 100644 3.4.1/sc4slite_arch_diag.png create mode 100644 3.4.1/search/search_index.json create mode 100644 3.4.1/sitemap.xml create mode 100644 3.4.1/sitemap.xml.gz create mode 100644 3.4.1/sources/base/cef/index.html create mode 100644 3.4.1/sources/base/leef/index.html create mode 100644 3.4.1/sources/base/nix/index.html create mode 100644 3.4.1/sources/base/simple/index.html create mode 100644 3.4.1/sources/index.html create mode 100644 3.4.1/sources/vendor/AVI/index.html create mode 100644 3.4.1/sources/vendor/Alcatel/Switch/index.html create mode 100644 3.4.1/sources/vendor/Alsid/Alsid/index.html create mode 100644 3.4.1/sources/vendor/Arista/index.html create mode 100644 3.4.1/sources/vendor/Aruba/ap/index.html create mode 100644 3.4.1/sources/vendor/Aruba/clearpass/index.html create mode 100644 3.4.1/sources/vendor/Avaya/index.html create mode 100644 3.4.1/sources/vendor/Barracuda/waf/index.html create mode 100644 3.4.1/sources/vendor/Barracuda/waf_on_prem/index.html create mode 100644 3.4.1/sources/vendor/BeyondTrust/sra/index.html create mode 100644 3.4.1/sources/vendor/Broadcom/brightmail/index.html create mode 100644 3.4.1/sources/vendor/Broadcom/dlp/index.html create mode 100644 3.4.1/sources/vendor/Broadcom/ep/index.html create mode 100644 3.4.1/sources/vendor/Broadcom/proxy/index.html create mode 100644 3.4.1/sources/vendor/Broadcom/sslva/index.html create mode 100644 3.4.1/sources/vendor/Brocade/switch/index.html create mode 100644 3.4.1/sources/vendor/Buffalo/index.html create mode 100644 3.4.1/sources/vendor/Checkpoint/firewallos/index.html create mode 100644 3.4.1/sources/vendor/Checkpoint/logexporter_5424/index.html create mode 100644 3.4.1/sources/vendor/Checkpoint/logexporter_legacy/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_ace/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_acs/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_asa/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_dna/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_esa/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_imc/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_ios/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_ise/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_meraki/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_mm/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_ms/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_tvcs/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_ucm/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_ucshx/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_viptela/index.html create mode 100644 3.4.1/sources/vendor/Cisco/cisco_wsa/index.html create mode 100644 3.4.1/sources/vendor/Citrix/netscaler/index.html create mode 100644 3.4.1/sources/vendor/Clearswift/index.html create mode 100644 3.4.1/sources/vendor/Cohesity/cluster/index.html create mode 100644 3.4.1/sources/vendor/CyberArk/epv/index.html create mode 100644 3.4.1/sources/vendor/CyberArk/pta/index.html create mode 100644 3.4.1/sources/vendor/Cylance/protect/index.html create mode 100644 3.4.1/sources/vendor/DARKTRACE/darktrace/index.html create mode 100644 3.4.1/sources/vendor/Dell/cmc/index.html create mode 100644 3.4.1/sources/vendor/Dell/emc_powerswitchn/index.html create mode 100644 3.4.1/sources/vendor/Dell/idrac/index.html create mode 100644 3.4.1/sources/vendor/Dell/rsa_secureid/index.html create mode 100644 3.4.1/sources/vendor/Dell/sonicwall/index.html create mode 100644 3.4.1/sources/vendor/F5/bigip/index.html create mode 100644 3.4.1/sources/vendor/FireEye/cms/index.html create mode 100644 3.4.1/sources/vendor/FireEye/emps/index.html create mode 100644 3.4.1/sources/vendor/FireEye/etp/index.html create mode 100644 3.4.1/sources/vendor/FireEye/hx/index.html create mode 100644 3.4.1/sources/vendor/Forcepoint/index.html create mode 100644 3.4.1/sources/vendor/Forcepoint/webprotect/index.html create mode 100644 3.4.1/sources/vendor/Fortinet/FortiGate_event.png create mode 100644 3.4.1/sources/vendor/Fortinet/FortiGate_traffic.png create mode 100644 3.4.1/sources/vendor/Fortinet/FortiGate_utm.png create mode 100644 3.4.1/sources/vendor/Fortinet/fortimail/index.html create mode 100644 3.4.1/sources/vendor/Fortinet/fortios/index.html create mode 100644 3.4.1/sources/vendor/Fortinet/fortiweb/index.html create mode 100644 3.4.1/sources/vendor/GitHub/index.html create mode 100644 3.4.1/sources/vendor/HAProxy/syslog/index.html create mode 100644 3.4.1/sources/vendor/HPe/ilo/index.html create mode 100644 3.4.1/sources/vendor/HPe/jedirect/index.html create mode 100644 3.4.1/sources/vendor/HPe/procurve/index.html create mode 100644 3.4.1/sources/vendor/IBM/datapower/index.html create mode 100644 3.4.1/sources/vendor/ISC/bind/index.html create mode 100644 3.4.1/sources/vendor/ISC/dhcpd/index.html create mode 100644 3.4.1/sources/vendor/Imperva/incapusla/index.html create mode 100644 3.4.1/sources/vendor/Imperva/waf/index.html create mode 100644 3.4.1/sources/vendor/InfoBlox/index.html create mode 100644 3.4.1/sources/vendor/Juniper/junos/index.html create mode 100644 3.4.1/sources/vendor/Juniper/netscreen/index.html create mode 100644 3.4.1/sources/vendor/Kaspersky/es/index.html create mode 100644 3.4.1/sources/vendor/Kaspersky/es_cef/index.html create mode 100644 3.4.1/sources/vendor/Kaspersky/es_leef/index.html create mode 100644 3.4.1/sources/vendor/Liveaction/liveaction_livenx/index.html create mode 100644 3.4.1/sources/vendor/McAfee/epo/index.html create mode 100644 3.4.1/sources/vendor/McAfee/nsp/index.html create mode 100644 3.4.1/sources/vendor/McAfee/wg/index.html create mode 100644 3.4.1/sources/vendor/Microfocus/arcsight/index.html create mode 100644 3.4.1/sources/vendor/Microfocus/windows/index.html create mode 100644 3.4.1/sources/vendor/Microsoft/index.html create mode 100644 3.4.1/sources/vendor/Mikrotik/routeros/index.html create mode 100644 3.4.1/sources/vendor/NetApp/ontap/index.html create mode 100644 3.4.1/sources/vendor/NetApp/storage-grid/index.html create mode 100644 3.4.1/sources/vendor/NetScout/arbor_edge/index.html create mode 100644 3.4.1/sources/vendor/Netmotion/mobilityserver/index.html create mode 100644 3.4.1/sources/vendor/Netmotion/reporting/index.html create mode 100644 3.4.1/sources/vendor/Novell/netiq/index.html create mode 100644 3.4.1/sources/vendor/Nutanix/cvm/index.html create mode 100644 3.4.1/sources/vendor/Ossec/ossec/index.html create mode 100644 3.4.1/sources/vendor/PaloaltoNetworks/cortexxdr/index.html create mode 100644 3.4.1/sources/vendor/PaloaltoNetworks/panos/index.html create mode 100644 3.4.1/sources/vendor/PaloaltoNetworks/traps/index.html create mode 100644 3.4.1/sources/vendor/Pfsense/firewall/index.html create mode 100644 3.4.1/sources/vendor/Polycom/rprm/index.html create mode 100644 3.4.1/sources/vendor/Proofpoint/index.html create mode 100644 3.4.1/sources/vendor/Pulse/connectsecure/index.html create mode 100644 3.4.1/sources/vendor/PureStorage/array/index.html create mode 100644 3.4.1/sources/vendor/Qumulo/storage/index.html create mode 100644 3.4.1/sources/vendor/Radware/defensepro/index.html create mode 100644 3.4.1/sources/vendor/Raritan/dsx/index.html create mode 100644 3.4.1/sources/vendor/Ricoh/mfp/index.html create mode 100644 3.4.1/sources/vendor/Riverbed/index.html create mode 100644 3.4.1/sources/vendor/Riverbed/steelconnect/index.html create mode 100644 3.4.1/sources/vendor/Riverbed/steelhead/index.html create mode 100644 3.4.1/sources/vendor/Ruckus/SmartZone/index.html create mode 100644 3.4.1/sources/vendor/Schneider/apc/index.html create mode 100644 3.4.1/sources/vendor/SecureAuthIdP/secureauth_idp/index.html create mode 100644 3.4.1/sources/vendor/Solace/evenbroker/index.html create mode 100644 3.4.1/sources/vendor/Sophos/Firewall/index.html create mode 100644 3.4.1/sources/vendor/Sophos/webappliance/index.html create mode 100644 3.4.1/sources/vendor/Spectracom/index.html create mode 100644 3.4.1/sources/vendor/Splunk/heavyforwarder/index.html create mode 100644 3.4.1/sources/vendor/Splunk/sc4s/index.html create mode 100644 3.4.1/sources/vendor/StealthWatch/StealthIntercept/index.html create mode 100644 3.4.1/sources/vendor/Tanium/platform/index.html create mode 100644 3.4.1/sources/vendor/Tenable/ad/index.html create mode 100644 3.4.1/sources/vendor/Tenable/nnm/index.html create mode 100644 3.4.1/sources/vendor/Thycotic/secretserver/index.html create mode 100644 3.4.1/sources/vendor/Tintri/syslog/index.html create mode 100644 3.4.1/sources/vendor/Trend/deepsecurity/index.html create mode 100644 3.4.1/sources/vendor/Ubiquiti/unifi/index.html create mode 100644 3.4.1/sources/vendor/VMWare/airwatch/index.html create mode 100644 3.4.1/sources/vendor/VMWare/carbonblack/index.html create mode 100644 3.4.1/sources/vendor/VMWare/horizonview/index.html create mode 100644 3.4.1/sources/vendor/VMWare/vsphere/index.html create mode 100644 3.4.1/sources/vendor/Varonis/datadvantage/index.html create mode 100644 3.4.1/sources/vendor/Vectra/cognito/index.html create mode 100644 3.4.1/sources/vendor/Wallix/bastion/index.html create mode 100644 3.4.1/sources/vendor/XYPro/mergedaudit/index.html create mode 100644 3.4.1/sources/vendor/Zscaler/lss/index.html create mode 100644 3.4.1/sources/vendor/Zscaler/nss/index.html create mode 100644 3.4.1/sources/vendor/a10networks/vthunder/index.html create mode 100644 3.4.1/sources/vendor/syslog-ng/loggen/index.html create mode 100644 3.4.1/throughput.png create mode 100644 3.4.1/troubleshooting/troubleshoot_SC4S_server/index.html create mode 100644 3.4.1/troubleshooting/troubleshoot_resources/index.html create mode 100644 3.4.1/upgrade/index.html create mode 100644 3.4.1/v3_upgrade/index.html diff --git a/3.4.1/404.html b/3.4.1/404.html new file mode 100644 index 0000000000..db846f0831 --- /dev/null +++ b/3.4.1/404.html @@ -0,0 +1,5354 @@ + + + + + + + + + + + + + + + + Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/3.4.1/CONTRIBUTING/index.html b/3.4.1/CONTRIBUTING/index.html new file mode 100644 index 0000000000..85040d39c4 --- /dev/null +++ b/3.4.1/CONTRIBUTING/index.html @@ -0,0 +1,5548 @@ + + + + + + + + + + + + + + + + CONTRIBUTING - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

CONTRIBUTING

+

Splunk welcomes contributions from the SC4S community, and your feedback and enhancements are appreciated. There’s always code that can be clarified, functionality that can be extended, and new data filters to develop, and documentation to refine. If you see something you think should be fixed or added, go for it!

+

Data Safety

+

Splunk Connect for Syslog is a community built and maintained product. Anyone with internet access can get a Splunk GitHub account and participate. As with any publicly available repository, care must be taken to never share private data via Issues, Pull Requests or any other mechanisms. Any data that is shared in the Splunk Connect for Syslog GitHub repository is made available to the entire Community without limits. Members of the Community and/or their employers (including Splunk) assume no responsibility or liability for any damages resulting from the sharing of private data via the Splunk GitHub.

+

Any data samples shared in the Splunk GitHub repository must be free of private data. +* Working locally, identify potentially sensitive field values in data samples (Public IP address, URL, Hostname, Etc.) +* Replace all potentially sensitive field values with synthetic values +* Manually review data samples to re-confirm they are free of private data before sharing in the Splunk GitHub

+

Prerequisites

+

When contributing to this repository, please first discuss the change you wish to make via a GitHub issue or Slack message with the owners of this repository.

+

Setup Development Environment

+

For a basic development environment docker and a bash shell is all that is required. For a more complete IDE experience see our wiki (Setup PyCharm)[https://github.com/splunk/splunk-connect-for-syslog/wiki/SC4S-Development-Setup-Using-PyCharm]

+

Feature Requests and Bug Reports

+

Have ideas on improvements or found a problem? While the community encourages everyone to contribute code, it is also appreciated when someone reports an issue. Please report any issues or bugs you find through GitHub’s issue tracker.

+

If you are reporting a bug, please include the following details:

+
    +
  • Your operating system name and version
  • +
  • Any details about your local setup that might be helpful in troubleshooting (ex. container runtime you use, etc.)
  • +
  • Data sample (in raw, “on the wire” format)
  • +
  • Detailed steps to reproduce the bug
  • +
+

We want to hear about your enhancements as well. Feel free to submit them as issues:

+
    +
  • Explain in detail how they should work
  • +
  • Keep the scope as narrow as possible. This will make it easier to implement
  • +
+

Fixing Issues

+

Look through our issue tracker to find problems to fix! Feel free to comment and tag community members of this project with any questions or concerns.

+

Pull Requests

+

What is a “pull request”? It informs the project’s core developers about the changes you want to review and merge. Once you submit a pull request, it enters a stage of code review where you and others can discuss its potential modifications and even add more commits to it later on.

+

If you want to learn more, please consult this tutorial on how pull requests work in the GitHub Help Center.

+

Here’s an overview of how you can make a pull request against this project:

+
    +
  • Fork the Splunk-connect-for-syslog GitHub repository
  • +
  • Clone your fork using git and create a branch off develop
  • +
+
git clone git@github.com:YOUR_GITHUB_USERNAME/splunk-connect-for-syslog.git
+cd splunk-connect-for-syslog
+
+ +
    +
  • This project uses ‘develop’ for all development activity, so create your branch off that
  • +
+
git checkout -b your-bugfix-branch-name develop
+
+ +
    +
  • Run all the tests to verify your environment
  • +
+
cd splunk-connect-for-syslog
+./test-with-compose.sh
+
+ +
    +
  • Make your changes, commit and push once your tests have passed
  • +
+
git commit -m ""
+git push
+
+ +
    +
  • Submit a pull request through the GitHub website using the changes from your forked codebase
  • +
+

Code Review

+

There are two aspects of code review: giving and receiving. +To make it easier for your PR to receive reviews, consider the reviewers will need you to:

+
    +
  • Follow the project coding conventions
  • +
  • Write good commit messages
  • +
  • Break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue
  • +
  • Reviewers are highly encouraged to revisit the Code of Conduct and must go above and beyond to promote a collaborative, respectful community.
  • +
  • When reviewing PRs from others, “The Gentle Art of Patch Review” suggests an iterative series of focuses which is designed to lead new contributors to positive collaboration without inundating them initially with nuances:
      +
    • Is the idea behind the contribution sound?
    • +
    • Is the contribution architected correctly?
    • +
    • Is the contribution polished?
    • +
    +
  • +
  • For this project, we require that at least 2 approvals are given and a build from our continuous integration system is successful off of your branch. Please note that any new changes made with your existing pull request during review will automatically unapprove and retrigger another build/round of tests.
  • +
+

Testing

+

Testing is the responsibility of all contributors. In general, we try to adhere to TDD, writing the test first. +There are multiple types of tests. The location of the test code varies with type, as do the specifics of the environment needed to successfully run the test.

+
    +
  • Review existing tests in the tests folder of the repo
  • +
+

We could always use improvements to our documentation! Anyone can contribute to these docs - whether you’re new to the project, you’ve been around a long time, and whether you self-identify as a developer, an end user, or someone who just can’t stand seeing typos. What exactly is needed?

+
    +
  • More complementary documentation. Have you perhaps found something unclear?
  • +
  • More examples or generic templates that others can use.
  • +
  • Blog posts, articles and such – they’re all very much appreciated.
  • +
  • You can also edit documentation files directly in the GitHub web interface, without creating a local copy. This can be convenient for small typos or grammar fixes.
  • +
+

Release Notes

+

To add commit messages to release notes, tag the message in following format

+
[TYPE] <commit message>
+
+ +

[TYPE] can be among the following +* FEATURE +* FIX +* DOC +* TEST +* CI +* REVERT +* FILTERADD +* FILTERMOD

+
Sample commit:
+git commit -m "[TEST] test-message"
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/3.4.1/LICENSE-BSD2 b/3.4.1/LICENSE-BSD2 new file mode 100644 index 0000000000..904f2fe1c2 --- /dev/null +++ b/3.4.1/LICENSE-BSD2 @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2019, Splunk, Inc +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/3.4.1/LICENSE-CC0 b/3.4.1/LICENSE-CC0 new file mode 100644 index 0000000000..1625c17936 --- /dev/null +++ b/3.4.1/LICENSE-CC0 @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. \ No newline at end of file diff --git a/3.4.1/SC4Sdeployment.png b/3.4.1/SC4Sdeployment.png new file mode 100644 index 0000000000000000000000000000000000000000..a9614bdc960e1c7f3bc03ba6144ae3e6db4c3231 GIT binary patch literal 41688 zcmZ_$2Rzm9|38jL;zVX5S;tB#dy{=Q$KGUT&to2YhpZf%BI{5@$ler%l3B7s_7-K& z-*p}~9=t=RZsYIYqHhx*~x1ux3+6nvyZ-bxe+Th21@Q;_rj90)+@HTiU z&dW!Y|ClF9hDcrHs%~Rbk_k1FxOz9j(DHxV5FD3-%E?J9if(ct=4P zbjrmqEX>2jD}Wudwz-YDyZ!$(gMHH)Wp4XtB61GCdIB~swhAx@S1o5>FLPxi7&G=e zu3$uUYyT`OxZdrL43J~n=Nu+moc=CmEa=kLUw-|aW)6z|Gg0!pl8nCee%l->$$5~x_Wpk zXz-Y;h+`)hu+?EcLwPv^2F< zl`Zw;Ve+cVBK97(nqaLJ6lEOEXxqxk$ZN@4foBaY9USCb`2@9G_-zzr{S?fRIy#OpU3V9_kiMp@ z3rt%@6>g{?s%D`is^#nErLF8`sikb;q~oQagK~Ga(e-i^Qgt!VwBd1+HIP-ow&>0e zhdYDcBD$6$UOxAoyxl>sa)!dznud;wKG-gO_?#4Fbu={uomH&86l5LkWdsz2MU)H- zVF;wMf<4Sb*-yz%-BLlpOI1(a(7@H+%iWS!UQW@{P?KK~=6qktT+!V}!O_mb70&D6 zrllt2VW{l|H|JI0@lmj_^7HnV_p#T60mGNI_T&>3bTrUag7JE}sJd&rDY)q>S$cUZ zTf^)vJw#pZ+v=z&8X}PT&U`wCNKZ$8VDSoGc8=Ow!Zvzpj^=7w3bLB6E`|shVOIku z9RYhKSJ0}bo+|js>*TDVr-lTlici)R=A_Oqq$LPPI`P}Xt#vgtoxPoG6)^vrTyyWFzf(9bmGOC(Bz;YG9`IJ=`b`$Ya@ltRS z)YrCk$1bvutf)3Z*+I`j&dttK&kpJ4$K&nj%5Nc~DXa$`aIh4SvG>ui^iqn4HR8q4uYT!thtygc~}T)I`AvVS&0bxxvL=g&E<7re0&yaI+iGB z9U)I^2Ob0d`$BH|4qD*rUPv!DD{F*}i;b$NEWfrkTn}j@g7nZ5bawR=@zn9v_jNYZ zFjV%|;?q@-_w^Fi)j+5#sG@|FypSk9FFRLd1Ptz~sqSE>tBq37k#)PTZ)@lcT$QYW zhoZ27fQq}bzLP4Ctg5w=sD_-Xg0-->sEVP!l7XGIo05YoOvw-Cs%8?^V0U<<#B*H+_$pzR6?rjA}vMjd^~vhm7QUJ zR`U1xd8~E#^nGK8Th2+xMaI@iMAuM2M?gzX)6?9? zz(CVM$=yZOSs7y}&P9;N@Vz(Seu$eBE!y z2mbyWW%%W-)%Nu-T!3Csgvsdmn69^6Zr0U3JU@@pF1kJoleW0U%yAhbqsUD1-B|OK zPa3NEtnj)DXK%DpcOI1B*(I4a^3;cf4!M}?%p(0)(9s#N&{@=Z`TkLz%Tl)griA~G zs{OH!!&f6~t=BiF93}c~OKV1KrH-qzYh+AJOtP%&?;2FTn+iHc9&dG!B6nAZH@lAg zU!Jc`wKQ>>G=4Fxb4D5=Yjne;luyl$_cr4Eb;3i)$Z%z)ArKrUjXRJiv(z6e#Fa2i zj_)Fk|77;sz$F%iAl5)*q<{y&a#vL*aM!;>HL zOYZznYYFan@5lBUtYPincjXqsjj?mC6DQ(iMI5+yU_nCUv}Cg%(kN%J-gp z;B6Se1aB9eC200>*W7hSlRD?DNv{cHU;2ny@Z=$G-W0NK(!xnsm*~Gy$>uWQ&gyT+ zN5K#Rnl@4VQV6ztm5Qvw+?OaeTIk4R_5++IYLTYKDU5&C6ih}shK#JO*x6Pm6*leO z!`VsdXMtdo^51N*^^{P{6|4;P3C}3nd2Qa|v^GZDxW73BC{9Ef;Dl zCX7~?;_=(DgJ;Bx%tF>i%FU)a%UyyQ0=8tDjyIc-VBSLJ?Rc~Tb_qZHJ@fwCRVdy) zun}j%R7v0UE0UIvf3!^}+77*yxn4IN4-Hw$VQoC!dW+U3WENBy@%8gih^ z_n*f!f0o1`cIM)xoCA;d1hwin8rRCUeT+J4FoCOs`H>QPqn4XH3fKNkQx2O0Wc*Q9RO+`m;oX^{60O zt+KIEtZ6aBv3SWot`2pw-PLr3;VQe@D>v5p*1u1M1~3ErJq;=iH@kFmu*HABcBUh8 zBAPw>exSNz^LxeQn`71XpVt%N3@`tmr-1RK8V5gG&~H`TSsgAZMNZTT1)l|^KT>6* z!K1o+|H0|;zHm~sOT$9ihwFKI|7UgxV6ZWGoiTSVca#St+KC+u$dT6g{#q1O3{|Rx zyfUim%W@U*-ZXX`F4nE=Eb{!n1)&6oBkw`%#*5sOkJQnd19@Q;+SOn&D`?7M!kAvW zFDRwcSig_C_SX5!@P8XF%>nvTk{1@>VTQDEC}Y}wW&Ie9B4=4I%10~Z6bd>I=A7-Y zW6yu@6W;vJ#DxEBr7|MqK-cfMhr7)o4d!7nRhSdxKy8B3^phxc>*rsi>X|cG&jkiroLSzrZ%-e!aoeqC4jPcypBmC=Lig-a+l_N9Y z`wFZ_>s9@=WhPCH7j<$NR_2dvT3?P=B-f5JWm#^ba<>75g6QEWvUnr`a%LFDqvdup>!wJepUe>;-y z1d-yS4*}H^vrpx8(b=LNFR)I$lQ)v%P&&kNJYMR|NBn0u%deS)=KnSoyV87L%_To^ z&g-LL=LcOaqAGj!|lA@zc|*^Jm@Vr@#WfB@Tn=RPD7fZV*ew z$?U=sLpbd-M?B%&wBhtwRX7gQcz;b~>&?Zu=0^l{uF|hIiroK=6dS5MmilT$4u=UC z1HRV}=@}tYiI!(VX_3{MHv_g0hVhecsuqJlwB$5Ypcs9f#IEgVxP1NOSAV%nn|7g^ zbN*ai>n>;0`PngY>-$@*#dkVS1N(P6-l+4=+&()RX%n&|4LIA1lo|yw{>NF)I(6IG zZaH$q#JjYutl`*FxD|GhJqwkz(Xf>51=5L|gU#cVe-D;M732-g?05YwOb=JnC+JE_ z;Qr)D&|X!}7&)A7@b1^S&bTUIm~XdBcov>{^tloI9Q5*txWyT{NAJI0(VFQCvXWA8 z67}@;myWYpxp%;XY_olBOuEqY8=v_5Ro*d#*yNsW#|KwS1|Er22CO_!ALp$5W>MaH zR4m?_k-`jIDSA?J{Q>msc=}ujvRymjyfz*%p9o){m_DnO0LxlC9dta#-+#}t?chE4 zH^JcZOO2M)*dBFf z2mJi7`9SbtK-*!j%eU#wSf!3q2%cJ&n4nJZn|Mfo+7q6IQYdek-$)fm=<|-MymY2tO-WDbK+xBKG@HBvA zSx7$vdIKNV8nqFLMpuLyil;t7nv& zHfl4)Vdcu{TvI^AlV4oKrBBIjbC3e5;za(+w9SIQ4ZOlG()%Iasr# zZJ45ij#dgy{PARu_kT=ZpkW@|x+Ov#3NK@MvcKKMNIU4{LlyD;HXX8qSQxeOi}|}e zX2yg}*NK+TDvHS1{q$Y*Rb=O58a2T;Eue4DGm08z&g~SBt-X#moOzJ_dcrc* zaGbPua9Cl-Pb|?D);(zrj_|k}3n7dAIP`?Pkx*)Ce1@<%bZ*uqBC2|bz@=laF>C7m zIbuRJyt`lIg}sAo+;+!1oNsP}DE2JnvV;CVx2DQ`!8R(xj9eg`tZjeFpR1nWFucf* z+%AgWepiIu0wjxE7IDru+Se29S~EcYJ-%H~9=PFH>$mIReQxB^vVhooOTg$feLS^q zTtLhB>6BDrM?)g|#U?g2+2-m-x@{u_yrdW3&g{3Hw-DW%a_t~S@8pY(x^>ZS?0i-i z#!dKg>HHyV+M{2B>-BNd^l2YR(^pRldMhlu#2#KbKUz@_UOnq$3LPa<>|`&K5qzV3 zDS&L@!oh=!NFTh`A)J-%65_q-;PXc8j;4O4UJZ)kpg;$o%rS13V(6k5IiG4*u z{sKzRbO8bnZKim@IzTWzW*$lZnEM>&#q=QvAyBE8f{ScE|P=`m*lotvrolF%l_2vvpBKwTIAYE0RsZ%@pk+*%fmBO0SaQ8OY2RWjU|cD z?0!hI!IsS|^6vame!S#(X!oKVK5-?n*d=K2K?kGIn}_Fc>HeG2gf8p^^e7FM8L>)I zN&79YaFQD<1jvdKD(1c=Jg>(=E6QfY>|a1Glt}yP%3^8VRO8rjhnL3leO^1C4{y$1 zMeW|%HQ4``6CiHj2puQRl2Fhuqz85L4%$JuBA~2R$x&NoXFsXsNP0%R)oZtagAi%J zE4W6Y69a1lK>>a2lepY&MG`N0R5Vc!i41|s+1!3k!Q=CUI(bIGJEc`hicy`nAJn?RlOV{LY+;YpXRU}y}u-S2S>lP+kYRxsH-f4iVm0+ zV`(~Gi*SFrpC28|TNdZ(=gT@Z%H17%0W^X=@RTS7|iarHFa2Oc-sn9m z7UQKvyLq{(eCEn+tx6>(kM$nu_YE4b!M@SVy5({?=hqY*t9M>MO1ckqEd z2PNw+=?E2CN`BAazdkc%VbhcO?S~TQkiw6??4CX7&C1 zjj7oLbO3O(o5=NtL|m>{Bcgmf_Vc^cFg{K2!{pEp->)UAVc5UC_>&sX)8hzzCof%C z`vte*t=O8QnhOKTo&C7SuD z0acQnWbB2;{TDI^+5OkAWXO?9d?9xT>I(U;8eK;*rFO5E%q7yQSej+-8n?-nu+X9! z{bdAZ4EA9~LkvGKPT$8-&MZy>vXt4xXdXoIzQ;0(AsVMEJ_vi0x|@{3#u8? zOhtwIL}pb$Z7TCarR9W?o+$c?(RG39-h%G-%Q92ZV%=uY!{#wfSV0H+!X*3O(&BqC z1nLh>#7P|9T^kV&!FT^SvMX|M?b+q0c%gFLuk@jV1<7H?ewCkJsD+%3w4E(Dvv6eT zyj9rCWRkmmH^E+D;enD3vD7zWHr#-6Yz^p9eRP#b|J8lX!m7#S81`uWGcvBj4ozv}*wob%{D+df zG1m@p<_t}Qn|%;yUn0557twz+yP)HjK1?iLf;;CAGyuJfmk`umSk}18!7_Kr{qj7) z@VvfVHq!utUT0P&H^EGlA}*KKgvfVK=V$1J6$=D?2R<&LJ6cvTG72SmWMKNIJdyqh zfzn4vS8bEf;M#AD*29x7ZkNm-vnvr19;UJkMm4xJuDm$XVbK(N(U>F?lJycYJ(g;S z=DEY1rNa19_m4~ICcrhN%t%hTy~VN9Oy;;<60lRTB+u05&YEHN&h4Ic>w_M&@H6~( zeR`5>lxbQ?Xm>nuanl~He-3FFp36gMQtY{1vbwKm%t`gD#E+u)awuy>>t^HHtb@_6 z-sMosc!{sAAmTRtS|n1|P9h;+;qZK%LH;}K4*kZYK^MX0rE$U`Wnzl0u>`o17Q<1T zbm^s_XzbREri!ihdafk8qR=pHd-a+D=U;1p`r&<)&ugK2UykW&9T!adU2n3b8_x>d zqtn5FM-g0oRtqT@t>>bOk<3G5>mL6e{Q%YABHS=w3rbZvhmASh4jKl5BA4j_WAKSv z%0_V+2lE^9+?}~cw9fY{huwb<*DEc9;?HnDF@F~(j0>C9f4Z^g*P*;!g3p?9$9z2M zd+cuYn77n9Lv9mu4T(#0@3poh;AKDHBj((aWe}OX?fcqF?>a zP7aCDNuSErYRnHoWU;x3f918lSzyhpjv!Y07({x6CiUO_j$Vxae2W(67?aNRT>HvJ7)MuVynSbdERid+Am}f~P!lCRaH~2J`<#OE@8>$- zgQU5?tbUfT31o6rOKx!n0Ru7wqBMP>1Psd)zjC$Waz~DZVATJT>TWVz^ZbGASZsB; z?tW6NND&u{t%qtHN5-G0n`Y3*JAN9f>X)3To$_;}758$2_J<+FC=*HWO1Y^1tQ;K+ znGhI#^nvaXK@?-q@ZIQ6d9_yBdp@s;=|p%=8AhH&cu)Bj0!XC;Kvd{A*#xPmC8-z(S2&|Eo96vf2+gBah1OVepC zTWG&8w^+T$I1He*P(^{-X8``#8-z2C0gUEHhkyyiCERCFMUv$^<;{FCtE+28Fzkd1 zO!7Yd^+(Sk@2-I}sDDy?bTOAA=voYHZkAa1+XJi_N^HNoIt<2QxDF7UJ#nJHJ%%yE?zKzG#w9c0)gv?+Wa7(|1Jttk0%KzZ{;yCG={DFwGXn>(kU@=t1 z>ZRGkr5qQ4V^#y;b^>5|v)j%14q5knE8`d>#uegjSU)g~qev}~gEii0c`o#4U2+W} ztmF|~d#WcK8B=Hg9xGtnwmV3rP=m{$b{Y-8e03eL8u6XKZWJw)HEp`jH@Hl^SS^;E?CIg__SMqkiT0Gj9 zT=M2JtnN0KUnG7#Zk=vIu`Qy6bzjk_yc^g4oFfQ1LXNU=lz#ipIlVD)&^4myJ!94! zUOa56i-y*^Oi#7#i?;oY6P|J%y=&I`&AbX=25hTtU$6!UYtoMUlVnR@f)v~)H2Fvj z@O1IIj1vw$ij4-5z#|m=Isplt9h||pfIeXB?X@c#PSawxeRP?Ej%nfomwu|?iEy%U zT~;vOeQ`;6jOmYWJCudSX)bF)V$DuTQ&|smbrE32Q*LXo16;1AFx&4VJ}JX`kb}&s z4A;g>?ZO*pKLGqDy;YnQb$7!jjC+ouqYkZ>?i5HC=ad7 zOC9x;bvw+PM;!;R{QsS|5NWFX0oC1S2f8PgVr~>B%d?;+T7~RlD*~Z!zY8jX<;?XmVo&$VxfOA%68VxE;CIUbWA_TS&!sCt1ip(-qpBVR%7*1Y-~1|LDJLzq6P7XDXV1FS(z8PU$N;=rS-zc)Ho+5BE_%D z->^ITDxPfYx4-XZ$Mubo6&{hB)gO$T{*tt;#nrmiP85e}1MqrXzvS_!zpPv8@$D1; z?Y6^7fW=R~I^MicNxFSt6AN&s#pcN%; znm-VfOV#!>Ol!`OPadP(Z~zMQi3yjsjm+!bKc*(rxJ*`KUFF^k+Iz2k<)mw*X(_pp zL?T~M!Y`6`*I;%ra{u9SivZP`!GX6+kPkN|A~@|x%Dv4a{&$@W?SXtzq7*|gMw_L= z@BCtIY>sVYzJ)uSgbfHAPZ!IB7oXbR2z<%JEpFz}%+0sZU9tcC1>M*lLe$IwR2GxV z%BrO;J_-}b#i|fUr~`{ekLI$2Wme%H4D;(tCi#&T@}+#uL@Ze`tl01DaEW$hrwI^& zh(gj2aZO}zZ-0Bxa~1)>-Is}+zG>3$<0@9Eab=;Bc$5)n(uwAgyA)ab3?wUNf^5L= z9Iq8bGWc~{mopK7v~6}>aCp>etzWAOFhT{II?bToR=}sN9N7V`-9@)i4ZDJ5cW?p7 z-HHXm6$A|BA$T&G4#J!!$|+;wgUJL< z-gcyk-EJe&{(`VD9_O~xJvX8BmyOfDOZ1V%1Q$ZE3}M3U zW9wI-2wYK+)?7yItLweG8r`P^YDn9pBy_Vv!Ps4h4D81hnOB!SD2&eZnDaiUS$UBu z_Nw|a@7<(EbzmW~UD(O8G2GPae0)fFX*CuqE5kkG>?Sel<(5m{D)-Z$-%bs+_V3G zjA4;Iwt%?2Ho@SS5QBnn0#Q}U=>H8X`7xkpJF z2mIVuc_nHt)Pp`w(X)d&6a4t-tL%&4v>QN?Cw(6*0ZHt$O-DkUM7ua* zGf08zP@*35WRtfG7E{jhnT>9B9hM(t;;|oM#Rh)~z@iN57H5DB=)Qy-BfEs5)m{om zpjI1MTkxOj$|mAB>6M!z0nb=-_-m<2z=`7n^!032Fianl&58ecr8>EDDcb=cC0q79{lj7f%7USqVbt_+uJ= zhkjq*yCA;FNo(2>hl`MtMWe4y(tXXcQH0m93_W|YzfzbpE>CTe(vjU4sSND3EExp| z3(-SY1h#Y}gW$;LU3~jI_98Qsf}ZTPVcWfpB(wwh%2<^x?HJUiH$!(#j(PWt^g7QQ zkQprq(P8aELmYC8&_p~iE2WTmP?0HT#;b($DTGMZ*sIL2<|9}an;)&m&i6l~%u>lm z{nko1QuR$MgplJp4c3C#&D8>rXHovF`CNuTZR~hjW!uOMk=w%lvXB|X5uk(#A%1jv zv|F{%lWyDbzyNF2^4Lzv0~*KJfm4tS9kM=`gWgF(i$v`J1qjll$;*?VxX6kqbgjH? zDvi^~2Gk@yX)~325UcArT53t0wiC#@8f5L*3x{mbkYJHxBU9pX#^%{pUl&^{#6|O$ zw}SZ(EKAvqd!JILGWyNUOeYJ+k+K?)K8a+KbUQFQGz5?zMhy`dz)OMDIjc<6W}W6-ji^TM>Ld2l;u!wzH`vBO02d6p6Ssnk#? zMd=I~Vdz~&F-#01IbsfwRCPq$%{-JgjkkUAuw*CvLiczcGnlzO9(2&M3te+nO(c&z z+D0AX5tZ|l-*y~0wW@Kblm7tKD7*iJA<2|zHcv4vnIVoXxhasJAlcUs8)M?)uUpgH)k2bGC?4e1aif^ zOhV!vy!xb=4Eump58YD52#?$4ORx zsW^3d_>{-|p~UIV=Uto1>);@F?g5R4z*8<51eAElP@1P5}&W8~g&M=ugh0)T86pE$V{9Wd~UIF_2b z7RX*29DUp*0ClzjcD#j!3+O;^?bCbbdyJsAYfB5B`|BOlF6MrT1LzUF^_S6Mc{5fboHd<2_941@PR7 z^59cPN08T`Ix`w{{N{s}Xv&!Jilc%16ddfcHv;VsaNY|aqm&EMCeb!0_uU=VM{a&= z5DGf+$>g_HTb`1m?k?;ptsUn;(JM}2;pO`D=)H{zVc$2hNqZ5<<2M&c1%4|0+Le(9 zzTJoH`{90k@JUDDnB!_lnv#(oWuq3JXYhSsxgE@f$E)Psl?4~$7@E45dNY?WEK~O3 zSY9)44U3J$eR}~&X~J)F*d)XRP-W;SZ3OjhRnF-rw8(7K8&7Nu+B^LbELEAJ3G&~T z8J5;SKz6wAC6qp7={?^q52g{VcsmQk2n{A~@2~CdC0$LMtBRGH!S}j#N%$FRNO3b4 zqNb}2>Huga)<^aR^~4S{5Bjcrz&phbjIaA*B9c_9;kc>uu}$Svfv zG{as*!A2ewcFnk_vC;RWbJtSc5MO`Yf&2CmWw;y! zs|N$pr<|trUZ-UoQKfyLeX5ir5q%f*GdZVznw&WJdnkc1heXsKaF@%>Z;fN;LlD() z%;0HaWa`BS35Hh~?u~K*Q6AhO`fk2>_z5Y{)X|gu0*v_AfpaPOy4g0nS*R4W5WHAayNv#~gXmONO+)i2U%|J~JvZb>uJ zlQe@Wo3UYiGbC_Ab<;+uERg)%mIcWVrKdt%1~Y|8K0Ra2gh3jL(xSp?jE|*KjY~U9 zAoGf-)$=VKE~!z#dfIN*8wt%w;|)%30`c1}xgBDD`fN`aj=p_D636u}gRV39u*dA1 zO=ltt{6;026W~X!f`J|gjQ~|uZ{jkLT{RW);U((?e37Ai)_f0kv6Dt?OvAN30%29iR-I?7_#QA36hK29b3vZJhonVYy+t zof^Uu2&&c7Da;yhzyJz*7Srt!Wmg?ThQOxOtQ!61nP4FVhUsB~iEh$f9h8`HyRzs6 zKi|S=X*r>nw3W*5t|uv3JvpBX=Qc$^V-n=FHjuy%a~ZBDF1rNG(E{%E0-W!*T}om$ zncz*ale6O=;y?R8m?!ivB6a}ny@B~M?-60=?@qG*A}Ant>xX&Aqv4JVnvd|PshIZ? z_Kchx-qX`GgWPY4rR#!A-K1Ba8lk2a^9NW4)1dGqD%tiCy5#t!brOw)ta;>V8@yPxw~KK8;@)7LXCL<_B5LEs_(+I)n-VFY;K~% z&A7SoeE&^ah6IiRrc&v+E zM@2mKCFU=bC)W8a^G}!gev+Tey~or;--p;m4#)T>+Nod7>9~D6JzUxuTUgYYWZv$A zVfcqlR)mB~l1LDg8FmP+cO)x#Qq7dFMYqu6n~+!03XUoTUt{O}BnX(~V`RcJmw7Wx z5d!2!^Q2Bwmf9>*2o`8wy0Lq7EQP-nd7L0#dN=nazRSG(RutWIQ3JV-i{HcCS#OvK zR+3>V5rEGjvw*B_)J<=qf9w*{(u$*&zgIq{gky37_YCw2-ckDx*vKV_&ZZkrOtI^) z&ppRoQRMvq$CrIa`#8$sDii#w>U@?zbeeM2x`UlYzCCGKRu#oydg1daD#240Dh9H4 zG>P)C4h={xQ)ddBh{(Dz1%RvA<3SAsP~830H`8$G1B()^fH(mwDFv|3I1jp6Tp4*< z6{~A;0)D34y3eTN7H&CIn&s-A{Y-Cj0#eqtQ(z>hB>ech?!8}LYER-zLO3<;FdYSb zEEedmPZ8UqOV8#YUH~a5N9Z*Nd@zj>j}l|eNrynVkC5&*mS(p_2{e%>OpR*uAcwB2 z#mb4v%}uou?4=(L`c_>|vh(8ws6YF@+d1R;0lctBA^TxLL@m=I?8El8p+05x`xGY6 zvgBZf@%&5)#9)Sf3R1%lQ<(>A26}XNcpYJQl}cZ(TddJnYeA^z)4PibmxyuMcB!0E zVOvR?B<^e13P=*HcX}w9N0x)5@#I99o(G?+x1-%Q#cn z#T@5^i~1W)Ay)LDa;cgMJFGNg6*D`1S}$ynirRXhpr>gZ^@Q2e=VZG}&b-G)lzEa& zd7j|?bKCxGwaS_2jdT03cMXxoLr%GObO+R`n9#)G2pBZDn-yA2W*J1vGz}CN#vdh3 z@!P3Z1A&&zBqeh%<4!_AWlZkA0^!`XE&1YyE_PWJ!girLbNuY=_`Ovo#icLQ?gD~i zoF5EKhZGE~B(lbkBOW9%zK>Dz7w{@?t-O(lx{600$n*YKJoDf{{N*a_=K0tAh zcicjEShFxuP*i%miZL7T_~1a9%Z9Gwm`ZlrwNpQwWo9lVXTcka1SR6iTC!msg0=B0 zT>8qHZCuC$?#z({>4a++iFuD6U>eD^g;vNlxu_$+P9iI!od4uC2#P{~V&V9hQMYT7^r;W968l=2pW2I*^3Pu($}Ty<7UQf*z)V zX`;{rtcwYHJS^)9QnE117vcfX1h3h_lt8O0=|UBusP=Xnk)MPF5~%kCI*kP%AP^hadF{6MhE-64 z9MojELMLpH`OOSBh_!XJR-Ip=*0$UKES=4=>Tkhg>xDp_v{1`TF@c5kjMKEIpOW3*ZY!odOyVK?L^I zI+4oB1s$Z@*k?U2;@!aA1DYS(W?P4mfT7dD_yW#X1qU?hsb9+d0pri3O=*}9-2hcU zVM`>RlbInaeGnvmI#MuEMTmwfo9D?4SMlx7gEbxw%x09BTS1+=lp94POd2KF+PXv{ zhrUf7Q}tQ@X|;eoW~T1cT?;L{<^9bKo+%X^^ue;3e@s#E!OmZ1(lv4bW^jTozcry_ zBAZJ^wnaNybm{KAr5~8In#=TjdnGFyy$nQ6^fuhw_Vw*jAa2_Ov3dy;@9;Jn=ntE2 z3AjHiQciHA@|-AEhs<9C3;t`o>hP!X?*lF7l9YtPV-hlFX27a!u?h3$vU4hm#TBrV zG78doA}=r;{;%c+0(IkfEO!1f1#}Sy@wCEy zSynzkWoc7kS+`10xX!)#))$*umxf`gJ+JK0mH7TRK6 z-gw%D#EYh zUVVSD3DoX;fE}735noRrY_<*utb||pNTaG_FJ)QvTkZ?aZoIZY4 zpGl(!0we!YWPLL4zl$|J$wk32i)Tq_C5SSc7P=iBUJppxzERhDfX{rjVk~@XuSLq> z`9*UNa5H06Mox)Eim8u#V8r@!vOv%RkSvIgAngrchXVsEolwX-ww0prqIcxG%byG5 z=|NfU1xix*tm~HuZFbMcyDU(O ztc9tbCmWhqW0clnWj|^b69HwD!0~c^{QA*adH;P<>k(tM1Xh9_fEYa$W9OhReCdI} zzZ`lUTXo=T=vuD>)9xavxUoeRr8Pu;i8opaG!p3olK!Tn)shWx@nGOW6iq0Dgx@HQ z?KAU^NYeO*=Uc;YUek`cGVuuMM(hqxp0ccED1b%I&v$^p*jAz*Cg{xNwfz53l*Kc~ zcZfsp;Q4(>V*3i@xL=y+-`A_QB=c!N!li+SBgwj}he%ZO)MXf1ROsN03yW?{5aLCta3d1doiSaGozP6qSg6GfW&S5&I* zW9YgJcFcr`{=(MXe86oRY_?n(XV4oWXWK?_{M-hdc%$9U!%IX??ctZb4rU^4UlSzr z9{#^9B_E9(vxDHrZMsCoVg-l}eP}`UdtGlG;zcU3``^5fe)L32(1)gGeZL$OMKdbr zfZh%j?g|hsG}#`wsPOEA;PEj4B1B(xH{<9vtyd~LzmD=VUc$dFs>P4>E&L`~MsRtI z$3)GF=iR6R77~mm@-|#sLPpXOVzJbhMK9wt-5Tg8UivYuWxJD>BohFC;!b;@ismrV z$XcAeK0RDvTnY*O2n?Z-?*!#7Mh3hLT@3@ z0rOw~qEjxf%46|U1*p#&*EAj1qvVIf%v zV*I*X@SLu9Ov3sjWz+6gqYa=+t^{|nnsN*i{1TM?SHHY`bnd@VlTJ)4^a-fIC~IT+ zea(#LB$6L=FMnf6=zO5CDU%*n0qlaF=v8qw9d56p*eolheWJTSWIxcS)4iN0m=v(` z>rP;*okNSKg$eSvnbkTONVwS~=Pu0wzA%}F5hEnf=f+r53f!X3LlE^-a|``Hhl4nj z;g|o&$zExQoISDIVkb;B$~2`GAfIR_29Hm?UqSPq;?e{izm9^tVT;Ut&9{8siK=H_ zy0eiY(iQx?b|r|3>>BQkB~7N6eo4Uo#a0-KX7*wk3*4mcf4;l0#eW50ZJO{RGye_2 zx*6vmE&FBXGJ6$cHkpSnUvP|IFW1ofnjU<9sm(qCEcp{{bbP#2mQHc6_0f>~a+Sj1 zGDw^5qgH2t_r^IHG`L%{7>~1^0Afl*G5mr35Sx>Z|XDCvFE)%u(&_nl@9Qi@@W$= zQmhDEC?>{xV_dN4u(1__lSoV)-Hb*3r~Guztg>O;e=aI+99^0=+95i>dje3mN#x4V z^Icdw3*`wQD&vh4n$rET3N1qz)0!6g^|BOz@|=SX*gB_9w&dy?@Uy&t?72Oo@c1KC zqx4X-gg$RKzfq!m+t{S}4pQ}3{=J7!nFsst{Zh$C(E55tSNj&!QId1r{74q#ZZ#3x zNN%4g;qR4?$c&OZe5<=j$WVm1+nnP*qW|;wo}wtnTbX?uQXKMlyCan~xPZu`QhCkg z*WJ2HlD+Y+B86!%;DCO`q0&qmQT7E@;q#p)lHd)6+GYR@$2kqMJDp3+kY8*gC_gA~ z*iNm1E)?N0PG$z-!3x556Tikk@X?)fh?{Z9T`wo@B@GriY~avkJ<5w@a33S+X6j*I zo?X8R{b58nyFb6z0$?PBcBMY0+SHWc8>nGhBuO{H zRgyH4i`oz5Z!-^kdwWOo$=%y<%3H-~0VtGt@-=mJP=UElTAj>X?L7rIpe9qIgT0nM(ID-AL)~1@Fss%0QSe%jrTR9ssvYiEJP+x+Qiy<%C-F~&p z@;A>$;M{gKYkD!`oRjm+U0vd~7si=vfC!RZI?JtKte zgP?))4EO%=>$DLEJ@jjzl~xe&MgkP8_6?<8+@~6eH>4|3{KV25Z?y>5MF@1Apn=FF zaghZr(tfnNmj3R#vV7+JmllA3|IaN+4UYAg&k!lnL7-tsa(_2gRV=QEck-!(btASI zS;}}W$LF{fi5bxBefVN+@C4x%^iB!$qwPEho~=kgV2+g(&oOG!*w0{9xTCJp_@i{L zZ*XWT?mc-LM12I>44NQaOf93rU6F?N&l#=3KU?0tvj)%ZvK>;t&>N5X6n`HfVBrN} z_Opdpa3X}-)o%TFo$}-7o9}W-2XaT!JB+o^?vRyzUuo#7Z?eEmL#dN}>5LIl`MlG8 z%Y-|EQYZPkafjppxCV~I>C+S5S`c925P~b$zfVuxX!{A+3pcAq{c=;1Ccq6@-ALpi z@(02cMNvM9aI1g|cRP`|9>xFHpO{x z%#hUsE|>19Brr-WY)zuC*zO$>=%c{70&#@5Z@u(o!V)g=-ldFrjm?9q_6Aa*?0+HE zVkjVmdCQMJ)Z~peZ3}Ag1fm56G@U)TDx)WmT};&kDAqWVC69Lsw8#`17>7ysotEi~ zN?PboS7>N%FyU(U=0H>(YB@?7x1m`(M~O9V*VVaoOiLEw3)j<%nLZwBl1B%DdbAWs zf)ohrOuQ!r8C)Fe^{Uk+{B~Y|&YqF8lA8+;^CZ%3Oz(dA z*LWXIHHTA>wqyhipG4tzy>N(j2nxSBIAZEw8k@ppT+d^wuKSy-`NzMe8wy|y>+_RP zFl%)OoOE;9TpGL~$+Mau9hU<=|5L>AXbHp58Ka>SNW95__?;}qJj9M7dzKZDt$Ote zj^Nekk3_=0AI!yj)7-nM_UwA)qXXyIqdWuqKwyj`BgLZP5FN4j*`GRVaN}+v6PKE= z@dEOBBc(>Rcl67uLG1Zj3u4A<7(=CeZ+yZVT~{NvUo1S);KpkmF{9)+wR_v|2vxq8 znv*>duulTSc`pOF$IVmM<*rUgIBcu^{Lp+StLE-DoQ7*9_r%}v=#L*1mUayk5sgjpFCaBEc*lG(lAA)60Nf+b1KPfO z?6)-(scfxU?SHu+MbM0#E6}eVE1An`Ec<=@^KVHZZYVO6A~k?HCsCW~B$$ zan;rlu-)7pN4tSN)`hLuS7jyEcn|wZUf;Jrg~S@~ZpK=iMsW~s$YW0JFqugnDmjvq zLEz5N1h~cc06AX$lHhl(Ht9Js24oZy-_J`TQFCbmQc19Bvx%TZcrvRWNS8aE--Cqo z&{0*N?a>ACcZnx|-aM9E2Y3eSlxPNHw0Ee>#gD!5Nvs+DHzylCds51}g_%WL zTmgXSMH}>@XCWT!Sc0A|9ZXQ$u_nl6X=7_~k0JU9DekcL%shxyTd``_^28V(0$H+J8v%Y92#`(TjD? zUlB3PXKQNYh~j00d)|1NIAc%gi-Y1;E|jij9&vnazbWx7`h4s-V&)_{ofO&)8o1E zq07>nLCd)m=PIbMRG;Ll^Am_nZkQ&vF75;q$Rjg0v3JbGFIKAOF7FTbc$sEtJSnyW z(bhInt_wVSkwT^-^tVq8Qe>`z@JjZcclDOE+Wb$O*6ZSa_g{%-NTj=XeT_E1tPLxM z;WSw?+Y4>_kEoxOEVrfH)>>#he_Sw~*wl9=pb>bKmPJSIQ^4UbL5?q(Mrd2ea5?x> zCFp#WUT?(?dwA;GM$X$U$bBgz581d_ zz!$a~d7a44*m~{229qf0w9Xxsu6Koj$VOSz!YfQ{y{(+|(Zs8vm@H}au=2425`PIc zf`eN$llR2MD7t9)(ZvwfzbGrqjmJ`Ezn^^0xro#jL-vj)X&P+y-MFi#DdKWs&99lf zf}JEaR?S)r`|=-a(;&d*;Al~aHg>hdQrxnR8lS`Zs@tC#k`K)hm1qWeb(=9 zpRN#XfDHF>vZ*ZgLPjNogL`nw0+`DZ>`zXh6cxGA$;238Ye2==4j#n_<{d!J#D-)r zmrZZpG+|E>b#}UO)AD}l14&Cv4U9z3_n#GP|1}cxj22cIH>9?jLwwR4M0DL5slRiw z%hegnzahaxu_ZfWRfKUQX!#?3MZJX}xeVcnbB%jrD_(=(r~gG%%sR)2u7tqgqKHL1 zA_+oV*K})FW9*UQKljoc7&T2j_cm<@?Jl&|xo*(e(gQMu9wGzqdnWFMZbcYZ7GiNs zy~#u!X0Et>#4;^^bvjN2kr~TA%YH4-hdF%ey`R(+>9-h0bHao9CVNsG&W+MG5K9^Q z>6W}0VVDgEL$9r$fh{O?ix{wf7JmPJ0o7S=g2_aNqpM$H)tK)Hi3{8d_! zN>+KVK4ZAslX{arGW+&(n#0)@luH}Gf9*RynT+5-%C7eiijQ68YKySRnEWb7dv!W? zM^e%YKeA!5ykoQjuVo?RojjivRSAQx9&c2t8XOa{JPWqA>vzjO!k_%T)7kP&=87Q^ zoy$+(WnbmZyi$`bqq|(c+VUB8X&q|*HehvimP zbaC6Q<@!Gca(BUW$+{PnVhlA)TMBXvx0eFnJ*&1Aqt_VV0lflqa4I6gU8~%epjo88f6%9 zc6aJ}o*aW2R8jWALr1p8_FezaQg(nu_%@j6IQeUshh5J9q>R=XUlx?a$*xZ~F(j}J z7m9biG-JU~L|q)*Q&Y~k9@*tUqi5sGToPd}K)%iuf787xWHbz8yF!9HvE&l%R_ zpLP461m91j9!F?zcC;~r07cMDd^)Dz&6P>Q{_L(Vo%FXzeX3~lr^XYAyO)(0j|699 zWMn0|Et!KUu|ZKU5GP$MOE4F_bhga5D-h*sa-#tP-zCIVI`}GurGtnE5Ah-)HnRyI z%PZYr%-f6Ha%3(((=9ZSUHE!ENc@25<*qFlx@&nTD^-n7av4Xh_3IfO)PXR5SxGLw z@$O7^R8P7hI+uWtf(s&QE-7K1oD>kxcrs zWp1+F^GjTd<=dAdb_ic_(VY;R|1w%u{fzK@z`n~n(-dq)ZSvTUakC~dF`}Cage0sX zbZPgsKp%l4#KSS!ouU>Hm~=fw(T-O5DpvzR|^^OLtn<3G5uNP0%pjI1Y zX^|3^GfJI@VnJ;jNiiqa_=x(BH;P+TN~$uUit!NJ%(RQ$tT&^jpdPtmPiV3WiJtO) zRq^^%zOw3QfsoJcn#>>Xi{sjqNc3s7N{tMzRXwk$uxZsbOF6%Luqs3*7N}BDH-Fvf zV(USDbsnFt=}^x#$KPM?G!ZZaQ^)PCtKVh9&?@^SYen)?EOmvSgEB~|2oY;Ee@M%v zJ7UT%mois>m4Rbz8SnX1^C6eJH+&)lZ8$QW`zXmo`aZ0En6_t1W8aX<0K~&1#D+8m zFphHqgpbP7ZYIHKdYjIK@^`p&I5Cxa?Apm;dzl&_o5Ib8XFCsCND_5Sz1J$8#JGP

G?q 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 literal 0 HcmV?d00001 diff --git a/3.4.1/architecture/index.html b/3.4.1/architecture/index.html new file mode 100644 index 0000000000..1576ec5151 --- /dev/null +++ b/3.4.1/architecture/index.html @@ -0,0 +1,5568 @@ + + + + + + + + + + + + + + + + Architectural Considerations - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + +

SC4S Architectural Considerations

+

There are some key architectural considerations and recommendations that will yield extremely performant and reliable syslog +data collection while minimizing the “over-engineering” that is common in many syslog data collection designs. These +recommendations are not specific to Splunk Connect for Syslog, but rather stem from the syslog protocol itself – and its age.

+

The syslog Protocol

+

The syslog protocol was designed in the mid 1980s to offer very high-speed, network-based logging for network and security devices that +were (especially at the time) starved for CPU and I/O resources. For this reason, the protocol was designed for speed and efficiency at the +expense of resiliency/reliability. UDP was chosen due to its ability to “send and forget” the events over the network without regard +(or acknowledgment) of receipt. In later years, TCP was added as a transport, as well as TLS/SSL. In spite of these additions, UDP still +retains favor as a syslog transport for most data centers, and for the same reasons as originally designed.

+

Because of these tradeoffs selected by the original designers (and retained to this day), traditional methods used to provide scale and +resiliency do not necessarily transfer to the syslog world. We will discuss (and reference) some of the salient points below.

+

Collector Location

+

Due to syslog being a “send and forget” protocol, it does not perform well when routed through substantial (and especially WAN) network infrastructure. +This includes front-side load balancers. The most reliable way to collect syslog traffic is to provide for edge +(not centralized) collection. Resist the urge to centrally locate any syslog server (sc4s included) and expect the UDP and (stateless) +TCP traffic to “make it”. Data loss will undoubtedly occur.

+

syslog Data Collection at Scale

+

In concert with attempts to centralize syslog, many admins will co-locate several syslog-ng servers for horizontal scale, and load balance +to them with a front-side load balancer. For many reasons (that go beyond this short discussion) this is not a best practice. Briefly:

+
    +
  • +

    The attempt to load balance for scale (and HA – see below) will actually cause more data loss due to normal device operations +and attendant buffer loss than would be the case if a simple, robust single server (or shared-IP cluster) were used.

    +
  • +
  • +

    Front-side load balancing will also cause inadequate data distribution on the upstream side, leading to data unevenness on the indexers.

    +
  • +
+

HA Considerations and Challenges

+

In addition to scale, many opt to load balance for high availability. While a sound approach for stateful, application-level protocols such +as http, it does not work well for stateless, unacknowledged syslog traffic. Again, in the attempt to design for HA, more data ends up +being lost vs. more simple designs such as vMotioned VMs. With syslog, always remember that the protocol itself is lossy, and there +will be data loss (think CD-quality (lossless) vs. MP3). Syslog data collection can be made, at best, “Mostly Available”.

+

UDP vs. TCP

+

For running syslog UDP is recommended over TCP.

+

The syslogd daemon was originally configured to use UDP for log forwarding to reduce overhead. +While UDP is an unreliable protocol, it’s streaming method does not require the overhead of establishing a network session. +This protocol also reduces network load as the network stream with no required receipt verification or window adjustment. +While TCP could seem a better choice because it uses ACKS and there should not be data loss, there are some cases when it’s possible: +* The TCP session is closed events published while the system is creating a new session will be lost. (Closed Window Case) +* The remote side is busy and can not ack fast enough events are lost due to local buffer full +* A single ack is lost by the network and the client closes the connection. (local and remote buffer lost) +* The remote server restarts for any reason (local buffer lost) +* The remote server restarts without closing the connection (local buffer plus timeout time lost) +* The client side restarts without closing the connection

+

Additionally as stated before it causes more overhead on the network. +TCP should be used in case of the syslog event is larger than the maximum size of the UDP packet on your network typically limited to Web Proxy, DLP and IDs type sources. +To decrease drawbacks of TCP you can use TLS over TCP: +* The TLS can continue a session over a broken TCP reducing buffer loss conditions +* The TLS will fill packets for more efficient use of wire +* The TLS will compress in most cases

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/3.4.1/assets/images/favicon.png b/3.4.1/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/3.4.1/assets/javascripts/bundle.078830c0.min.js b/3.4.1/assets/javascripts/bundle.078830c0.min.js new file mode 100644 index 0000000000..af96b24666 --- /dev/null +++ b/3.4.1/assets/javascripts/bundle.078830c0.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var aa=Object.create;var wr=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var ca=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,fa=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var cn=(e,t,r)=>t in e?wr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,H=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&cn(e,r,t[r]);if(kt)for(var r of kt(t))fn.call(t,r)&&cn(e,r,t[r]);return e};var un=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&fn.call(e,n)&&(r[n]=e[n]);return r};var yt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ua=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ca(t))!Er.call(e,o)&&o!==r&&wr(e,o,{get:()=>t[o],enumerable:!(n=sa(t,o))||n.enumerable});return e};var Ye=(e,t,r)=>(r=e!=null?aa(fa(e)):{},ua(t||!e||!e.__esModule?wr(r,"default",{value:e,enumerable:!0}):r,e));var ln=yt((Sr,pn)=>{(function(e,t){typeof Sr=="object"&&typeof pn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Sr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(_){return!!(_&&_!==document&&_.nodeName!=="HTML"&&_.nodeName!=="BODY"&&"classList"in _&&"contains"in _.classList)}function c(_){var We=_.type,Fe=_.tagName;return!!(Fe==="INPUT"&&s[We]&&!_.readOnly||Fe==="TEXTAREA"&&!_.readOnly||_.isContentEditable)}function f(_){_.classList.contains("focus-visible")||(_.classList.add("focus-visible"),_.setAttribute("data-focus-visible-added",""))}function u(_){!_.hasAttribute("data-focus-visible-added")||(_.classList.remove("focus-visible"),_.removeAttribute("data-focus-visible-added"))}function p(_){_.metaKey||_.altKey||_.ctrlKey||(a(r.activeElement)&&f(r.activeElement),n=!0)}function l(_){n=!1}function d(_){!a(_.target)||(n||c(_.target))&&f(_.target)}function h(_){!a(_.target)||(_.target.classList.contains("focus-visible")||_.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(_.target))}function b(_){document.visibilityState==="hidden"&&(o&&(n=!0),U())}function U(){document.addEventListener("mousemove",W),document.addEventListener("mousedown",W),document.addEventListener("mouseup",W),document.addEventListener("pointermove",W),document.addEventListener("pointerdown",W),document.addEventListener("pointerup",W),document.addEventListener("touchmove",W),document.addEventListener("touchstart",W),document.addEventListener("touchend",W)}function G(){document.removeEventListener("mousemove",W),document.removeEventListener("mousedown",W),document.removeEventListener("mouseup",W),document.removeEventListener("pointermove",W),document.removeEventListener("pointerdown",W),document.removeEventListener("pointerup",W),document.removeEventListener("touchmove",W),document.removeEventListener("touchstart",W),document.removeEventListener("touchend",W)}function W(_){_.target.nodeName&&_.target.nodeName.toLowerCase()==="html"||(n=!1,G())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",l,!0),document.addEventListener("pointerdown",l,!0),document.addEventListener("touchstart",l,!0),document.addEventListener("visibilitychange",b,!0),U(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var mn=yt(Or=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(f){return!1}},r=t(),n=function(f){var u={next:function(){var p=f.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(f){return encodeURIComponent(f).replace(/%20/g,"+")},i=function(f){return decodeURIComponent(String(f).replace(/\+/g," "))},s=function(){var f=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var l=typeof p;if(l!=="undefined")if(l==="string")p!==""&&this._fromString(p);else if(p instanceof f){var d=this;p.forEach(function(G,W){d.append(W,G)})}else if(p!==null&&l==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),f._entries&&(f._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(c,f){typeof c!="string"&&(c=String(c)),f&&typeof f!="string"&&(f=String(f));var u=document,p;if(f&&(e.location===void 0||f!==e.location.href)){f=f.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=f,u.head.appendChild(p);try{if(p.href.indexOf(f)!==0)throw new Error(p.href)}catch(_){throw new Error("URL unable to set base "+f+" due to "+_)}}var l=u.createElement("a");l.href=c,p&&(u.body.appendChild(l),l.href=l.href);var d=u.createElement("input");if(d.type="url",d.value=c,l.protocol===":"||!/:/.test(l.href)||!d.checkValidity()&&!f)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:l});var h=new e.URLSearchParams(this.search),b=!0,U=!0,G=this;["append","delete","set"].forEach(function(_){var We=h[_];h[_]=function(){We.apply(h,arguments),b&&(U=!1,G.search=h.toString(),U=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var W=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==W&&(W=this.search,U&&(b=!1,this.searchParams._fromString(this.search),b=!0))}})},s=i.prototype,a=function(c){Object.defineProperty(s,c,{get:function(){return this._anchorElement[c]},set:function(f){this._anchorElement[c]=f},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(c){a(c)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(c){this._anchorElement.search=c,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var c=this;return function(){return c.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(c){this._anchorElement.href=c,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(c){this._anchorElement.pathname=c},enumerable:!0},origin:{get:function(){var c={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],f=this._anchorElement.port!=c&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(f?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(c){},enumerable:!0},username:{get:function(){return""},set:function(c){},enumerable:!0}}),i.createObjectURL=function(c){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(c){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or)});var Pn=yt((Ks,$t)=>{/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var dn,hn,bn,vn,gn,yn,xn,wn,En,Ht,_r,Sn,On,_n,rt,Tn,Mn,Ln,An,Cn,Rn,kn,Hn,Pt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof $t=="object"&&typeof $t.exports=="object"?e(r(t,r($t.exports))):e(r(t));function r(n,o){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,s){return n[i]=o?o(i,s):s}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};dn=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");t(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},hn=Object.assign||function(n){for(var o,i=1,s=arguments.length;i=0;u--)(f=n[u])&&(c=(a<3?f(c):a>3?f(o,i,c):f(o,i))||c);return a>3&&c&&Object.defineProperty(o,i,c),c},gn=function(n,o){return function(i,s){o(i,s,n)}},yn=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},xn=function(n,o,i,s){function a(c){return c instanceof i?c:new i(function(f){f(c)})}return new(i||(i=Promise))(function(c,f){function u(d){try{l(s.next(d))}catch(h){f(h)}}function p(d){try{l(s.throw(d))}catch(h){f(h)}}function l(d){d.done?c(d.value):a(d.value).then(u,p)}l((s=s.apply(n,o||[])).next())})},wn=function(n,o){var i={label:0,sent:function(){if(c[0]&1)throw c[1];return c[1]},trys:[],ops:[]},s,a,c,f;return f={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function u(l){return function(d){return p([l,d])}}function p(l){if(s)throw new TypeError("Generator is already executing.");for(;i;)try{if(s=1,a&&(c=l[0]&2?a.return:l[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,l[1])).done)return c;switch(a=0,c&&(l=[l[0]&2,c.value]),l[0]){case 0:case 1:c=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,a=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(c=i.trys,!(c=c.length>0&&c[c.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!c||l[1]>c[0]&&l[1]=n.length&&(n=void 0),{value:n&&n[s++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},_r=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var s=i.call(n),a,c=[],f;try{for(;(o===void 0||o-- >0)&&!(a=s.next()).done;)c.push(a.value)}catch(u){f={error:u}}finally{try{a&&!a.done&&(i=s.return)&&i.call(s)}finally{if(f)throw f.error}}return c},Sn=function(){for(var n=[],o=0;o1||u(b,U)})})}function u(b,U){try{p(s[b](U))}catch(G){h(c[0][3],G)}}function p(b){b.value instanceof rt?Promise.resolve(b.value.v).then(l,d):h(c[0][2],b)}function l(b){u("next",b)}function d(b){u("throw",b)}function h(b,U){b(U),c.shift(),c.length&&u(c[0][0],c[0][1])}},Mn=function(n){var o,i;return o={},s("next"),s("throw",function(a){throw a}),s("return"),o[Symbol.iterator]=function(){return this},o;function s(a,c){o[a]=n[a]?function(f){return(i=!i)?{value:rt(n[a](f)),done:a==="return"}:c?c(f):f}:c}},Ln=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ht=="function"?Ht(n):n[Symbol.iterator](),i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i);function s(c){i[c]=n[c]&&function(f){return new Promise(function(u,p){f=n[c](f),a(u,p,f.done,f.value)})}}function a(c,f,u,p){Promise.resolve(p).then(function(l){c({value:l,done:u})},f)}},An=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var r=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};Cn=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&Pt(o,n,i);return r(o,n),o},Rn=function(n){return n&&n.__esModule?n:{default:n}},kn=function(n,o,i,s){if(i==="a"&&!s)throw new TypeError("Private accessor was defined without a getter");if(typeof o=="function"?n!==o||!s:!o.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return i==="m"?s:i==="a"?s.call(n):s?s.value:o.get(n)},Hn=function(n,o,i,s,a){if(s==="m")throw new TypeError("Private method is not writable");if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a setter");if(typeof o=="function"?n!==o||!a:!o.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return s==="a"?a.call(n,i):a?a.value=i:o.set(n,i),i},e("__extends",dn),e("__assign",hn),e("__rest",bn),e("__decorate",vn),e("__param",gn),e("__metadata",yn),e("__awaiter",xn),e("__generator",wn),e("__exportStar",En),e("__createBinding",Pt),e("__values",Ht),e("__read",_r),e("__spread",Sn),e("__spreadArrays",On),e("__spreadArray",_n),e("__await",rt),e("__asyncGenerator",Tn),e("__asyncDelegator",Mn),e("__asyncValues",Ln),e("__makeTemplateObject",An),e("__importStar",Cn),e("__importDefault",Rn),e("__classPrivateFieldGet",kn),e("__classPrivateFieldSet",Hn)})});var Br=yt((At,Yr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof At=="object"&&typeof Yr=="object"?Yr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof At=="object"?At.ClipboardJS=r():t.ClipboardJS=r()})(At,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ia}});var s=i(279),a=i.n(s),c=i(370),f=i.n(c),u=i(817),p=i.n(u);function l(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var O=p()(T);return l("cut"),O},h=d;function b(j){var T=document.documentElement.getAttribute("dir")==="rtl",O=document.createElement("textarea");O.style.fontSize="12pt",O.style.border="0",O.style.padding="0",O.style.margin="0",O.style.position="absolute",O.style[T?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return O.style.top="".concat(k,"px"),O.setAttribute("readonly",""),O.value=j,O}var U=function(T,O){var k=b(T);O.container.appendChild(k);var $=p()(k);return l("copy"),k.remove(),$},G=function(T){var O=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof T=="string"?k=U(T,O):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?k=U(T.value,O):(k=p()(T),l("copy")),k},W=G;function _(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_=function(O){return typeof O}:_=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},_(j)}var We=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},O=T.action,k=O===void 0?"copy":O,$=T.container,q=T.target,Te=T.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&_(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Te)return W(Te,{container:$});if(q)return k==="cut"?h(q):W(q,{container:$})},Fe=We;function Pe(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Pe=function(O){return typeof O}:Pe=function(O){return O&&typeof Symbol=="function"&&O.constructor===Symbol&&O!==Symbol.prototype?"symbol":typeof O},Pe(j)}function Ji(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function sn(j,T){for(var O=0;O0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof $.action=="function"?$.action:this.defaultAction,this.target=typeof $.target=="function"?$.target:this.defaultTarget,this.text=typeof $.text=="function"?$.text:this.defaultText,this.container=Pe($.container)==="object"?$.container:document.body}},{key:"listenClick",value:function($){var q=this;this.listener=f()($,"click",function(Te){return q.onClick(Te)})}},{key:"onClick",value:function($){var q=$.delegateTarget||$.currentTarget,Te=this.action(q)||"copy",Rt=Fe({action:Te,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Te,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function($){return xr("action",$)}},{key:"defaultTarget",value:function($){var q=xr("target",$);if(q)return document.querySelector(q)}},{key:"defaultText",value:function($){return xr("text",$)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function($){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return W($,q)}},{key:"cut",value:function($){return h($)}},{key:"isSupported",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof $=="string"?[$]:$,Te=!!document.queryCommandSupported;return q.forEach(function(Rt){Te=Te&&!!document.queryCommandSupported(Rt)}),Te}}]),O}(a()),ia=oa},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,l,d,h){var b=f.apply(this,arguments);return u.addEventListener(l,b,h),{destroy:function(){u.removeEventListener(l,b,h)}}}function c(u,p,l,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof l=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(b){return a(b,p,l,d,h)}))}function f(u,p,l,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=c},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function c(l,d,h){if(!l&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(l))return f(l,d,h);if(s.nodeList(l))return u(l,d,h);if(s.string(l))return p(l,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function f(l,d,h){return l.addEventListener(d,h),{destroy:function(){l.removeEventListener(d,h)}}}function u(l,d,h){return Array.prototype.forEach.call(l,function(b){b.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(l,function(b){b.removeEventListener(d,h)})}}}function p(l,d,h){return a(document.body,l,d,h)}n.exports=c},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),f=document.createRange();f.selectNodeContents(i),c.removeAllRanges(),c.addRange(f),s=c.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function f(){c.off(i,f),s.apply(a,arguments)}return f._=s,this.on(i,f,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,f=a.length;for(c;c{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var Ms=/["'&<>]/;Si.exports=Ls;function Ls(e){var t=""+e,r=Ms.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Tr:(this.currentObservers=null,a.push(r),new $e(function(){n.currentObservers=null,Ue(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new Qn(r,n)},t}(F);var Qn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(E);var wt={now:function(){return(wt.delegate||Date).now()},delegate:void 0};var Et=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=wt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,c=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),c=0;c0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=at.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(at.cancelAnimationFrame(n),r._scheduled=void 0)},t}(zt);var Gn=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Nt);var xe=new Gn(Bn);var R=new F(function(e){return e.complete()});function qt(e){return e&&L(e.schedule)}function Hr(e){return e[e.length-1]}function Ve(e){return L(Hr(e))?e.pop():void 0}function Ee(e){return qt(Hr(e))?e.pop():void 0}function Kt(e,t){return typeof Hr(e)=="number"?e.pop():t}var st=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Qt(e){return L(e==null?void 0:e.then)}function Yt(e){return L(e[it])}function Bt(e){return Symbol.asyncIterator&&L(e==null?void 0:e[Symbol.asyncIterator])}function Gt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ya(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Jt=ya();function Xt(e){return L(e==null?void 0:e[Jt])}function Zt(e){return jn(this,arguments,function(){var r,n,o,i;return It(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,jt(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,jt(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,jt(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function er(e){return L(e==null?void 0:e.getReader)}function z(e){if(e instanceof F)return e;if(e!=null){if(Yt(e))return xa(e);if(st(e))return wa(e);if(Qt(e))return Ea(e);if(Bt(e))return Jn(e);if(Xt(e))return Sa(e);if(er(e))return Oa(e)}throw Gt(e)}function xa(e){return new F(function(t){var r=e[it]();if(L(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function wa(e){return new F(function(t){for(var r=0;r=2,!0))}function ie(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(f){var u,p,l,d=0,h=!1,b=!1,U=function(){p==null||p.unsubscribe(),p=void 0},G=function(){U(),u=l=void 0,h=b=!1},W=function(){var _=u;G(),_==null||_.unsubscribe()};return g(function(_,We){d++,!b&&!h&&U();var Fe=l=l!=null?l:r();We.add(function(){d--,d===0&&!b&&!h&&(p=Dr(W,c))}),Fe.subscribe(We),!u&&d>0&&(u=new Ge({next:function(Pe){return Fe.next(Pe)},error:function(Pe){b=!0,U(),p=Dr(G,o,Pe),Fe.error(Pe)},complete:function(){h=!0,U(),p=Dr(G,s),Fe.complete()}}),z(_).subscribe(u))})(f)}}function Dr(e,t){for(var r=[],n=2;ne.next(document)),e}function Q(e,t=document){return Array.from(t.querySelectorAll(e))}function K(e,t=document){let r=pe(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function pe(e,t=document){return t.querySelector(e)||void 0}function Ie(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function nr(e){return A(v(document.body,"focusin"),v(document.body,"focusout")).pipe(Re(1),m(()=>{let t=Ie();return typeof t!="undefined"?e.contains(t):!1}),N(e===Ie()),B())}function qe(e){return{x:e.offsetLeft,y:e.offsetTop}}function yo(e){return A(v(window,"load"),v(window,"resize")).pipe(Ae(0,xe),m(()=>qe(e)),N(qe(e)))}function or(e){return{x:e.scrollLeft,y:e.scrollTop}}function pt(e){return A(v(e,"scroll"),v(window,"resize")).pipe(Ae(0,xe),m(()=>or(e)),N(or(e)))}var wo=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!qr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Ka?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!qr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=qa.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Eo=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Oo=typeof WeakMap!="undefined"?new WeakMap:new wo,_o=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Qa.getInstance(),n=new ns(t,r,this);Oo.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){_o.prototype[e]=function(){var t;return(t=Oo.get(this))[e].apply(t,arguments)}});var os=function(){return typeof ir.ResizeObserver!="undefined"?ir.ResizeObserver:_o}(),To=os;var Mo=new E,is=P(()=>I(new To(e=>{for(let t of e)Mo.next(t)}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ve(e){return is.pipe(w(t=>t.observe(e)),S(t=>Mo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(()=>he(e)))),N(he(e)))}function mt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function cr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Lo=new E,as=P(()=>I(new IntersectionObserver(e=>{for(let t of e)Lo.next(t)},{threshold:0}))).pipe(S(e=>A(Se,I(e)).pipe(C(()=>e.disconnect()))),X(1));function fr(e){return as.pipe(w(t=>t.observe(e)),S(t=>Lo.pipe(x(({target:r})=>r===e),C(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function Ao(e,t=16){return pt(e).pipe(m(({y:r})=>{let n=he(e),o=mt(e);return r>=o.height-n.height-t}),B())}var ur={drawer:K("[data-md-toggle=drawer]"),search:K("[data-md-toggle=search]")};function Co(e){return ur[e].checked}function Ke(e,t){ur[e].checked!==t&&ur[e].click()}function dt(e){let t=ur[e];return v(t,"change").pipe(m(()=>t.checked),N(t.checked))}function ss(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ro(){return v(window,"keydown").pipe(x(e=>!(e.metaKey||e.ctrlKey)),m(e=>({mode:Co("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),x(({mode:e,type:t})=>{if(e==="global"){let r=Ie();if(typeof r!="undefined")return!ss(r,t)}return!0}),ie())}function Oe(){return new URL(location.href)}function pr(e){location.href=e.href}function ko(){return new E}function Ho(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Ho(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)Ho(n,o);return n}function Po(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function lr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function $o(){return location.hash.substring(1)}function Io(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function cs(){return v(window,"hashchange").pipe(m($o),N($o()),x(e=>e.length>0),X(1))}function jo(){return cs().pipe(m(e=>pe(`[id="${e}"]`)),x(e=>typeof e!="undefined"))}function Kr(e){let t=matchMedia(e);return rr(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function Fo(){let e=matchMedia("print");return A(v(window,"beforeprint").pipe(m(()=>!0)),v(window,"afterprint").pipe(m(()=>!1))).pipe(N(e.matches))}function Qr(e,t){return e.pipe(S(r=>r?t():R))}function mr(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(ce(()=>R),S(r=>r.status!==200?Ot(()=>new Error(r.statusText)):I(r)))}function je(e,t){return mr(e,t).pipe(S(r=>r.json()),X(1))}function Uo(e,t){let r=new DOMParser;return mr(e,t).pipe(S(n=>n.text()),m(n=>r.parseFromString(n,"text/xml")),X(1))}function Do(e){let t=M("script",{src:e});return P(()=>(document.head.appendChild(t),A(v(t,"load"),v(t,"error").pipe(S(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),C(()=>document.head.removeChild(t)),oe(1))))}function Wo(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Vo(){return A(v(window,"scroll",{passive:!0}),v(window,"resize",{passive:!0})).pipe(m(Wo),N(Wo()))}function zo(){return{width:innerWidth,height:innerHeight}}function No(){return v(window,"resize",{passive:!0}).pipe(m(zo),N(zo()))}function qo(){return Y([Vo(),No()]).pipe(m(([e,t])=>({offset:e,size:t})),X(1))}function dr(e,{viewport$:t,header$:r}){let n=t.pipe(J("size")),o=Y([n,r]).pipe(m(()=>qe(e)));return Y([r,t,o]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:f}])=>({offset:{x:s.x-c,y:s.y-f+i},size:a})))}function Ko(e,{tx$:t}){let r=v(e,"message").pipe(m(({data:n})=>n));return t.pipe(Lt(()=>r,{leading:!0,trailing:!0}),w(n=>e.postMessage(n)),S(()=>r),ie())}var fs=K("#__config"),ht=JSON.parse(fs.textContent);ht.base=`${new URL(ht.base,Oe())}`;function le(){return ht}function Z(e){return ht.features.includes(e)}function re(e,t){return typeof t!="undefined"?ht.translations[e].replace("#",t.toString()):ht.translations[e]}function _e(e,t=document){return K(`[data-md-component=${e}]`,t)}function te(e,t=document){return Q(`[data-md-component=${e}]`,t)}function us(e){let t=K(".md-typeset > :first-child",e);return v(t,"click",{once:!0}).pipe(m(()=>K(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function Qo(e){return!Z("announce.dismiss")||!e.childElementCount?R:P(()=>{let t=new E;return t.pipe(N({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),us(e).pipe(w(r=>t.next(r)),C(()=>t.complete()),m(r=>H({ref:e},r)))})}function ps(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function Yo(e,t){let r=new E;return r.subscribe(({hidden:n})=>{e.hidden=n}),ps(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}var ii=Ye(Br());function Gr(e){return M("div",{class:"md-tooltip",id:e},M("div",{class:"md-tooltip__inner md-typeset"}))}function Bo(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("a",{href:r,class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}else return M("aside",{class:"md-annotation",tabIndex:0},Gr(t),M("span",{class:"md-annotation__index",tabIndex:-1},M("span",{"data-md-annotation-id":e})))}function Go(e){return M("button",{class:"md-clipboard md-icon",title:re("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Jr(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(a=>!e.terms[a]).reduce((a,c)=>[...a,M("del",null,c)," "],[]).slice(0,-1),i=new URL(e.location);Z("search.highlight")&&i.searchParams.set("h",Object.entries(e.terms).filter(([,a])=>a).reduce((a,[c])=>`${a} ${c}`.trim(),""));let{tags:s}=le();return M("a",{href:`${i}`,class:"md-search-result__link",tabIndex:-1},M("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&M("div",{class:"md-search-result__icon md-icon"}),M("h1",{class:"md-search-result__title"},e.title),n>0&&e.text.length>0&&M("p",{class:"md-search-result__teaser"},Po(e.text,320)),e.tags&&M("div",{class:"md-typeset"},e.tags.map(a=>{let c=a.replace(/<[^>]+>/g,""),f=s?c in s?`md-tag-icon md-tag-icon--${s[c]}`:"md-tag-icon":"";return M("span",{class:`md-tag ${f}`},a)})),n>0&&o.length>0&&M("p",{class:"md-search-result__terms"},re("search.result.term.missing"),": ",...o)))}function Jo(e){let t=e[0].score,r=[...e],n=r.findIndex(f=>!f.location.includes("#")),[o]=r.splice(n,1),i=r.findIndex(f=>f.scoreJr(f,1)),...a.length?[M("details",{class:"md-search-result__more"},M("summary",{tabIndex:-1},a.length>0&&a.length===1?re("search.result.more.one"):re("search.result.more.other",a.length)),...a.map(f=>Jr(f,1)))]:[]];return M("li",{class:"md-search-result__item"},c)}function Xo(e){return M("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>M("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?lr(r):r)))}function Xr(e){let t=`tabbed-control tabbed-control--${e}`;return M("div",{class:t,hidden:!0},M("button",{class:"tabbed-button",tabIndex:-1}))}function Zo(e){return M("div",{class:"md-typeset__scrollwrap"},M("div",{class:"md-typeset__table"},e))}function ls(e){let t=le(),r=new URL(`../${e.version}/`,t.base);return M("li",{class:"md-version__item"},M("a",{href:`${r}`,class:"md-version__link"},e.title))}function ei(e,t){return M("div",{class:"md-version"},M("button",{class:"md-version__current","aria-label":re("select.version.title")},t.title),M("ul",{class:"md-version__list"},e.map(ls)))}function ms(e,t){let r=P(()=>Y([yo(e),pt(t)])).pipe(m(([{x:n,y:o},i])=>{let{width:s,height:a}=he(e);return{x:n-i.x+s/2,y:o-i.y+a/2}}));return nr(e).pipe(S(n=>r.pipe(m(o=>({active:n,offset:o})),oe(+!n||1/0))))}function ti(e,t,{target$:r}){let[n,o]=Array.from(e.children);return P(()=>{let i=new E,s=i.pipe(de(1));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),fr(e).pipe(ee(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),A(i.pipe(x(({active:a})=>a)),i.pipe(Re(250),x(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(n):n.remove()},complete(){e.prepend(n)}}),i.pipe(Ae(16,xe)).subscribe(({active:a})=>{n.classList.toggle("md-tooltip--active",a)}),i.pipe(zr(125,xe),x(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),v(o,"click").pipe(ee(s),x(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>a.preventDefault()),v(o,"mousedown").pipe(ee(s),ae(i)).subscribe(([a,{active:c}])=>{var f;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let u=e.parentElement.closest(".md-annotation");u instanceof HTMLElement?u.focus():(f=Ie())==null||f.blur()}}),r.pipe(ee(s),x(a=>a===n),ke(125)).subscribe(()=>e.focus()),ms(e,t).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))})}function ds(e){let t=[];for(let r of Q(".c, .c1, .cm",e)){let n=[],o=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=o.nextNode();i;i=o.nextNode())n.push(i);for(let i of n){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let f=i.splitText(s.index);i=f.splitText(a.length),t.push(f)}else{i.textContent=a,t.push(i);break}}}}return t}function ri(e,t){t.append(...Array.from(e.childNodes))}function ni(e,t,{target$:r,print$:n}){let o=t.closest("[id]"),i=o==null?void 0:o.id,s=new Map;for(let a of ds(t)){let[,c]=a.textContent.match(/\((\d+)\)/);pe(`li:nth-child(${c})`,e)&&(s.set(c,Bo(c,i)),a.replaceWith(s.get(c)))}return s.size===0?R:P(()=>{let a=new E,c=[];for(let[f,u]of s)c.push([K(".md-typeset",u),K(`li:nth-child(${f})`,e)]);return n.pipe(ee(a.pipe(de(1)))).subscribe(f=>{e.hidden=!f;for(let[u,p]of c)f?ri(u,p):ri(p,u)}),A(...[...s].map(([,f])=>ti(f,t,{target$:r}))).pipe(C(()=>a.complete()),ie())})}var hs=0;function ai(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return ai(t)}}function oi(e){return ve(e).pipe(m(({width:t})=>({scrollable:mt(e).width>t})),J("scrollable"))}function si(e,t){let{matches:r}=matchMedia("(hover)"),n=P(()=>{let o=new E;if(o.subscribe(({scrollable:s})=>{s&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),ii.default.isSupported()){let s=e.closest("pre");s.id=`__code_${++hs}`,s.insertBefore(Go(s.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let s=ai(i);if(typeof s!="undefined"&&(i.classList.contains("annotate")||Z("content.code.annotate"))){let a=ni(s,e,t);return oi(e).pipe(w(c=>o.next(c)),C(()=>o.complete()),m(c=>H({ref:e},c)),et(ve(i).pipe(m(({width:c,height:f})=>c&&f),B(),S(c=>c?a:R))))}}return oi(e).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))});return Z("content.lazy")?fr(e).pipe(x(o=>o),oe(1),S(()=>n)):n}var ci=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:transparent}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText>tspan,.messageText,.noteText>tspan{font-family:var(--md-mermaid-font-family)!important}#arrowhead path,.loopText>tspan,.messageText,.noteText>tspan{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}";var Zr,vs=0;function gs(){return typeof mermaid=="undefined"||mermaid instanceof Element?Do("https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js"):I(void 0)}function fi(e){return e.classList.remove("mermaid"),Zr||(Zr=gs().pipe(w(()=>mermaid.initialize({startOnLoad:!1,themeCSS:ci,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),X(1))),Zr.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${vs++}`,r=M("div",{class:"mermaid"});mermaid.mermaidAPI.render(t,e.textContent,n=>{let o=r.attachShadow({mode:"closed"});o.innerHTML=n,e.replaceWith(r)})}),Zr.pipe(m(()=>({ref:e})))}function ys(e,{target$:t,print$:r}){let n=!0;return A(t.pipe(m(o=>o.closest("details:not([open])")),x(o=>e===o),m(()=>({action:"open",reveal:!0}))),r.pipe(x(o=>o||!n),w(()=>n=e.open),m(o=>({action:o?"open":"close"}))))}function ui(e,t){return P(()=>{let r=new E;return r.subscribe(({action:n,reveal:o})=>{e.toggleAttribute("open",n==="open"),o&&e.scrollIntoView()}),ys(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}var pi=M("table");function li(e){return e.replaceWith(pi),pi.replaceWith(Zo(e)),I({ref:e})}function xs(e){let t=Q(":scope > input",e),r=t.find(n=>n.checked)||t[0];return A(...t.map(n=>v(n,"change").pipe(m(()=>K(`label[for="${n.id}"]`))))).pipe(N(K(`label[for="${r.id}"]`)),m(n=>({active:n})))}function mi(e,{viewport$:t}){let r=Xr("prev");e.append(r);let n=Xr("next");e.append(n);let o=K(".tabbed-labels",e);return P(()=>{let i=new E,s=i.pipe(de(1));return Y([i,ve(e)]).pipe(Ae(1,xe),ee(s)).subscribe({next([{active:a},c]){let f=qe(a),{width:u}=he(a);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let p=or(o);(f.xp.x+c.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),Y([pt(o),ve(o)]).pipe(ee(s)).subscribe(([a,c])=>{let f=mt(o);r.hidden=a.x<16,n.hidden=a.x>f.width-c.width-16}),A(v(r,"click").pipe(m(()=>-1)),v(n,"click").pipe(m(()=>1))).pipe(ee(s)).subscribe(a=>{let{width:c}=he(o);o.scrollBy({left:c*a,behavior:"smooth"})}),Z("content.tabs.link")&&i.pipe(He(1),ae(t)).subscribe(([{active:a},{offset:c}])=>{let f=a.innerText.trim();if(a.hasAttribute("data-md-switching"))a.removeAttribute("data-md-switching");else{let u=e.offsetTop-c.y;for(let l of Q("[data-tabs]"))for(let d of Q(":scope > input",l)){let h=K(`label[for="${d.id}"]`);if(h!==a&&h.innerText.trim()===f){h.setAttribute("data-md-switching",""),d.click();break}}window.scrollTo({top:e.offsetTop-u});let p=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...p])])}}),xs(e).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}).pipe(Je(fe))}function di(e,{viewport$:t,target$:r,print$:n}){return A(...Q("pre:not(.mermaid) > code",e).map(o=>si(o,{target$:r,print$:n})),...Q("pre.mermaid",e).map(o=>fi(o)),...Q("table:not([class])",e).map(o=>li(o)),...Q("details",e).map(o=>ui(o,{target$:r,print$:n})),...Q("[data-tabs]",e).map(o=>mi(o,{viewport$:t})))}function ws(e,{alert$:t}){return t.pipe(S(r=>A(I(!0),I(!1).pipe(ke(2e3))).pipe(m(n=>({message:r,active:n})))))}function hi(e,t){let r=K(".md-typeset",e);return P(()=>{let n=new E;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),ws(e,t).pipe(w(o=>n.next(o)),C(()=>n.complete()),m(o=>H({ref:e},o)))})}function Es({viewport$:e}){if(!Z("header.autohide"))return I(!1);let t=e.pipe(m(({offset:{y:o}})=>o),Ce(2,1),m(([o,i])=>[oMath.abs(i-o.y)>100),m(([,[o]])=>o),B()),n=dt("search");return Y([e,n]).pipe(m(([{offset:o},i])=>o.y>400&&!i),B(),S(o=>o?r:I(!1)),N(!1))}function bi(e,t){return P(()=>Y([ve(e),Es(t)])).pipe(m(([{height:r},n])=>({height:r,hidden:n})),B((r,n)=>r.height===n.height&&r.hidden===n.hidden),X(1))}function vi(e,{header$:t,main$:r}){return P(()=>{let n=new E,o=n.pipe(de(1));return n.pipe(J("active"),Ze(t)).subscribe(([{active:i},{hidden:s}])=>{e.classList.toggle("md-header--shadow",i&&!s),e.hidden=s}),r.subscribe(n),t.pipe(ee(o),m(i=>H({ref:e},i)))})}function Ss(e,{viewport$:t,header$:r}){return dr(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:n}})=>{let{height:o}=he(e);return{active:n>=o}}),J("active"))}function gi(e,t){return P(()=>{let r=new E;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=pe("article h1");return typeof n=="undefined"?R:Ss(n,t).pipe(w(o=>r.next(o)),C(()=>r.complete()),m(o=>H({ref:e},o)))})}function yi(e,{viewport$:t,header$:r}){let n=r.pipe(m(({height:i})=>i),B()),o=n.pipe(S(()=>ve(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),J("bottom"))));return Y([n,o,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:f}}])=>(f=Math.max(0,f-Math.max(0,s-c,i)-Math.max(0,f+c-a)),{offset:s-i,height:f,active:s-i<=c})),B((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function Os(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return I(...e).pipe(se(r=>v(r,"change").pipe(m(()=>r))),N(e[Math.max(0,t.index)]),m(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),X(1))}function xi(e){return P(()=>{let t=new E;t.subscribe(n=>{document.body.setAttribute("data-md-color-switching","");for(let[o,i]of Object.entries(n.color))document.body.setAttribute(`data-md-color-${o}`,i);for(let o=0;o{document.body.removeAttribute("data-md-color-switching")});let r=Q("input",e);return Os(r).pipe(w(n=>t.next(n)),C(()=>t.complete()),m(n=>H({ref:e},n)))})}var en=Ye(Br());function _s(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function wi({alert$:e}){en.default.isSupported()&&new F(t=>{new en.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||_s(K(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(w(t=>{t.trigger.focus()}),m(()=>re("clipboard.copied"))).subscribe(e)}function Ts(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function hr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return I(t);{let r=le();return Uo(new URL("sitemap.xml",e||r.base)).pipe(m(n=>Ts(Q("loc",n).map(o=>o.textContent))),ce(()=>R),De([]),w(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function Ei({document$:e,location$:t,viewport$:r}){let n=le();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",v(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=pe("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=hr().pipe(m(f=>f.map(u=>`${new URL(u,n.base)}`)),S(f=>v(document.body,"click").pipe(x(u=>!u.metaKey&&!u.ctrlKey),S(u=>{if(u.target instanceof Element){let p=u.target.closest("a");if(p&&!p.target){let l=new URL(p.href);if(l.search="",l.hash="",l.pathname!==location.pathname&&f.includes(l.toString()))return u.preventDefault(),I({url:new URL(p.href)})}}return Se}))),ie()),s=v(window,"popstate").pipe(x(f=>f.state!==null),m(f=>({url:new URL(location.href),offset:f.state})),ie());A(i,s).pipe(B((f,u)=>f.url.href===u.url.href),m(({url:f})=>f)).subscribe(t);let a=t.pipe(J("pathname"),S(f=>mr(f.href).pipe(ce(()=>(pr(f),Se)))),ie());i.pipe(ut(a)).subscribe(({url:f})=>{history.pushState({},"",`${f}`)});let c=new DOMParser;a.pipe(S(f=>f.text()),m(f=>c.parseFromString(f,"text/html"))).subscribe(e),e.pipe(He(1)).subscribe(f=>{for(let u of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...Z("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let p=pe(u),l=pe(u,f);typeof p!="undefined"&&typeof l!="undefined"&&p.replaceWith(l)}}),e.pipe(He(1),m(()=>_e("container")),S(f=>Q("script",f)),Ir(f=>{let u=M("script");if(f.src){for(let p of f.getAttributeNames())u.setAttribute(p,f.getAttribute(p));return f.replaceWith(u),new F(p=>{u.onload=()=>p.complete()})}else return u.textContent=f.textContent,f.replaceWith(u),R})).subscribe(),A(i,s).pipe(ut(e)).subscribe(({url:f,offset:u})=>{f.hash&&!u?Io(f.hash):window.scrollTo(0,(u==null?void 0:u.y)||0)}),r.pipe(Mt(i),Re(250),J("offset")).subscribe(({offset:f})=>{history.replaceState(f,"")}),A(i,s).pipe(Ce(2,1),x(([f,u])=>f.url.pathname===u.url.pathname),m(([,f])=>f)).subscribe(({offset:f})=>{window.scrollTo(0,(f==null?void 0:f.y)||0)})}var As=Ye(tn());var Oi=Ye(tn());function rn(e,t){let r=new RegExp(e.separator,"img"),n=(o,i,s)=>`${i}${s}`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator})(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(t?(0,Oi.default)(s):s).replace(i,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function _i(e){return e.split(/"([^"]+)"/g).map((t,r)=>r&1?t.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):t).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").trim()}function bt(e){return e.type===1}function Ti(e){return e.type===2}function vt(e){return e.type===3}function Rs({config:e,docs:t}){e.lang.length===1&&e.lang[0]==="en"&&(e.lang=[re("search.config.lang")]),e.separator==="[\\s\\-]+"&&(e.separator=re("search.config.separator"));let n={pipeline:re("search.config.pipeline").split(/\s*,\s*/).filter(Boolean),suggestions:Z("search.suggest")};return{config:e,docs:t,options:n}}function Mi(e,t){let r=le(),n=new Worker(e),o=new E,i=Ko(n,{tx$:o}).pipe(m(s=>{if(vt(s))for(let a of s.data.items)for(let c of a)c.location=`${new URL(c.location,r.base)}`;return s}),ie());return ue(t).pipe(m(s=>({type:0,data:Rs(s)}))).subscribe(o.next.bind(o)),{tx$:o,rx$:i}}function Li({document$:e}){let t=le(),r=je(new URL("../versions.json",t.base)).pipe(ce(()=>R)),n=r.pipe(m(o=>{let[,i]=t.base.match(/([^/]+)\/?$/);return o.find(({version:s,aliases:a})=>s===i||a.includes(i))||o[0]}));r.pipe(m(o=>new Map(o.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),S(o=>v(document.body,"click").pipe(x(i=>!i.metaKey&&!i.ctrlKey),ae(n),S(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&o.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&o.get(c)===s?R:(i.preventDefault(),I(c))}}return R}),S(i=>{let{version:s}=o.get(i);return hr(new URL(i)).pipe(m(a=>{let f=Oe().href.replace(t.base,"");return a.includes(f.split("#")[0])?new URL(`../${s}/${f}`,t.base):new URL(i)}))})))).subscribe(o=>pr(o)),Y([r,n]).subscribe(([o,i])=>{K(".md-header__topic").appendChild(ei(o,i))}),e.pipe(S(()=>n)).subscribe(o=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){let a=((s=t.version)==null?void 0:s.default)||"latest";i=!o.aliases.includes(a),__md_set("__outdated",i,sessionStorage)}if(i)for(let a of te("outdated"))a.hidden=!1})}function ks(e,{rx$:t}){let r=(__search==null?void 0:__search.transform)||_i,{searchParams:n}=Oe();n.has("q")&&Ke("search",!0);let o=t.pipe(x(bt),oe(1),m(()=>n.get("q")||""));dt("search").pipe(x(a=>!a),oe(1)).subscribe(()=>{let a=new URL(location.href);a.searchParams.delete("q"),history.replaceState({},"",`${a}`)}),o.subscribe(a=>{a&&(e.value=a,e.focus())});let i=nr(e),s=A(v(e,"keyup"),v(e,"focus").pipe(ke(1)),o).pipe(m(()=>r(e.value)),N(""),B());return Y([s,i]).pipe(m(([a,c])=>({value:a,focus:c})),X(1))}function Ai(e,{tx$:t,rx$:r}){let n=new E,o=n.pipe(de(1));return n.pipe(J("value"),m(({value:i})=>({type:2,data:i}))).subscribe(t.next.bind(t)),n.pipe(J("focus")).subscribe(({focus:i})=>{i?(Ke("search",i),e.placeholder=""):e.placeholder=re("search.placeholder")}),v(e.form,"reset").pipe(ee(o)).subscribe(()=>e.focus()),ks(e,{tx$:t,rx$:r}).pipe(w(i=>n.next(i)),C(()=>n.complete()),m(i=>H({ref:e},i)),ie())}function Ci(e,{rx$:t},{query$:r}){let n=new E,o=Ao(e.parentElement).pipe(x(Boolean)),i=K(":scope > :first-child",e),s=K(":scope > :last-child",e),a=t.pipe(x(bt),oe(1));return n.pipe(ae(r),Mt(a)).subscribe(([{items:f},{value:u}])=>{if(u)switch(f.length){case 0:i.textContent=re("search.result.none");break;case 1:i.textContent=re("search.result.one");break;default:i.textContent=re("search.result.other",lr(f.length))}else i.textContent=re("search.result.placeholder")}),n.pipe(w(()=>s.innerHTML=""),S(({items:f})=>A(I(...f.slice(0,10)),I(...f.slice(10)).pipe(Ce(4),Nr(o),S(([u])=>u))))).subscribe(f=>s.appendChild(Jo(f))),t.pipe(x(vt),m(({data:f})=>f)).pipe(w(f=>n.next(f)),C(()=>n.complete()),m(f=>H({ref:e},f)))}function Hs(e,{query$:t}){return t.pipe(m(({value:r})=>{let n=Oe();return n.hash="",n.searchParams.delete("h"),n.searchParams.set("q",r),{url:n}}))}function Ri(e,t){let r=new E;return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),v(e,"click").subscribe(n=>n.preventDefault()),Hs(e,t).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))}function ki(e,{rx$:t},{keyboard$:r}){let n=new E,o=_e("search-query"),i=A(v(o,"keydown"),v(o,"focus")).pipe(Le(fe),m(()=>o.value),B());return n.pipe(Ze(i),m(([{suggestions:a},c])=>{let f=c.split(/([\s-]+)/);if((a==null?void 0:a.length)&&f[f.length-1]){let u=a[a.length-1];u.startsWith(f[f.length-1])&&(f[f.length-1]=u)}else f.length=0;return f})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(x(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&o.selectionStart===o.value.length&&(o.value=e.innerText);break}}),t.pipe(x(vt),m(({data:a})=>a)).pipe(w(a=>n.next(a)),C(()=>n.complete()),m(()=>({ref:e})))}function Hi(e,{index$:t,keyboard$:r}){let n=le();try{let o=(__search==null?void 0:__search.worker)||n.search,i=Mi(o,t),s=_e("search-query",e),a=_e("search-result",e),{tx$:c,rx$:f}=i;c.pipe(x(Ti),ut(f.pipe(x(bt))),oe(1)).subscribe(c.next.bind(c)),r.pipe(x(({mode:l})=>l==="search")).subscribe(l=>{let d=Ie();switch(l.type){case"Enter":if(d===s){let h=new Map;for(let b of Q(":first-child [href]",a)){let U=b.firstElementChild;h.set(b,parseFloat(U.getAttribute("data-md-score")))}if(h.size){let[[b]]=[...h].sort(([,U],[,G])=>G-U);b.click()}l.claim()}break;case"Escape":case"Tab":Ke("search",!1),s.blur();break;case"ArrowUp":case"ArrowDown":if(typeof d=="undefined")s.focus();else{let h=[s,...Q(":not(details) > [href], summary, details[open] [href]",a)],b=Math.max(0,(Math.max(0,h.indexOf(d))+h.length+(l.type==="ArrowUp"?-1:1))%h.length);h[b].focus()}l.claim();break;default:s!==Ie()&&s.focus()}}),r.pipe(x(({mode:l})=>l==="global")).subscribe(l=>{switch(l.type){case"f":case"s":case"/":s.focus(),s.select(),l.claim();break}});let u=Ai(s,i),p=Ci(a,i,{query$:u});return A(u,p).pipe(et(...te("search-share",e).map(l=>Ri(l,{query$:u})),...te("search-suggest",e).map(l=>ki(l,i,{keyboard$:r}))))}catch(o){return e.hidden=!0,Se}}function Pi(e,{index$:t,location$:r}){return Y([t,r.pipe(N(Oe()),x(n=>!!n.searchParams.get("h")))]).pipe(m(([n,o])=>rn(n.config,!0)(o.searchParams.get("h"))),m(n=>{var s;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,f=n(c);f.length>c.length&&o.set(a,f)}for(let[a,c]of o){let{childNodes:f}=M("span",null,c);a.replaceWith(...Array.from(f))}return{ref:e,nodes:o}}))}function Ps(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return Y([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(o,Math.max(0,a-i))-o,{height:s,locked:a>=i+o})),B((i,s)=>i.height===s.height&&i.locked===s.locked))}function nn(e,n){var o=n,{header$:t}=o,r=un(o,["header$"]);let i=K(".md-sidebar__scrollwrap",e),{y:s}=qe(i);return P(()=>{let a=new E;return a.pipe(Ae(0,xe),ae(t)).subscribe({next([{height:c},{height:f}]){i.style.height=`${c-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),a.pipe(Le(xe),oe(1)).subscribe(()=>{for(let c of Q(".md-nav__link--active[href]",e)){let f=cr(c);if(typeof f!="undefined"){let u=c.offsetTop-f.offsetTop,{height:p}=he(f);f.scrollTo({top:u-p/2})}}}),Ps(e,r).pipe(w(c=>a.next(c)),C(()=>a.complete()),m(c=>H({ref:e},c)))})}function $i(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return _t(je(`${r}/releases/latest`).pipe(ce(()=>R),m(n=>({version:n.tag_name})),De({})),je(r).pipe(ce(()=>R),m(n=>({stars:n.stargazers_count,forks:n.forks_count})),De({}))).pipe(m(([n,o])=>H(H({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return je(r).pipe(m(n=>({repositories:n.public_repos})),De({}))}}function Ii(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return je(r).pipe(ce(()=>R),m(({star_count:n,forks_count:o})=>({stars:n,forks:o})),De({}))}function ji(e){let[t]=e.match(/(git(?:hub|lab))/i)||[];switch(t.toLowerCase()){case"github":let[,r,n]=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);return $i(r,n);case"gitlab":let[,o,i]=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i);return Ii(o,i);default:return R}}var $s;function Is(e){return $s||($s=P(()=>{let t=__md_get("__source",sessionStorage);if(t)return I(t);if(te("consent").length){let n=__md_get("__consent");if(!(n&&n.github))return R}return ji(e.href).pipe(w(n=>__md_set("__source",n,sessionStorage)))}).pipe(ce(()=>R),x(t=>Object.keys(t).length>0),m(t=>({facts:t})),X(1)))}function Fi(e){let t=K(":scope > :last-child",e);return P(()=>{let r=new E;return r.subscribe(({facts:n})=>{t.appendChild(Xo(n)),t.classList.add("md-source__repository--active")}),Is(e).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function js(e,{viewport$:t,header$:r}){return ve(document.body).pipe(S(()=>dr(e,{header$:r,viewport$:t})),m(({offset:{y:n}})=>({hidden:n>=10})),J("hidden"))}function Ui(e,t){return P(()=>{let r=new E;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(Z("navigation.tabs.sticky")?I({hidden:!1}):js(e,t)).pipe(w(n=>r.next(n)),C(()=>r.complete()),m(n=>H({ref:e},n)))})}function Fs(e,{viewport$:t,header$:r}){let n=new Map,o=Q("[href^=\\#]",e);for(let a of o){let c=decodeURIComponent(a.hash.substring(1)),f=pe(`[id="${c}"]`);typeof f!="undefined"&&n.set(a,f)}let i=r.pipe(J("height"),m(({height:a})=>{let c=_e("main"),f=K(":scope > :first-child",c);return a+.8*(f.offsetTop-c.offsetTop)}),ie());return ve(document.body).pipe(J("height"),S(a=>P(()=>{let c=[];return I([...n].reduce((f,[u,p])=>{for(;c.length&&n.get(c[c.length-1]).tagName>=p.tagName;)c.pop();let l=p.offsetTop;for(;!l&&p.parentElement;)p=p.parentElement,l=p.offsetTop;return f.set([...c=[...c,u]].reverse(),l)},new Map))}).pipe(m(c=>new Map([...c].sort(([,f],[,u])=>f-u))),Ze(i),S(([c,f])=>t.pipe(Ur(([u,p],{offset:{y:l},size:d})=>{let h=l+d.height>=Math.floor(a.height);for(;p.length;){let[,b]=p[0];if(b-f=l&&!h)p=[u.pop(),...p];else break}return[u,p]},[[],[...c]]),B((u,p)=>u[0]===p[0]&&u[1]===p[1])))))).pipe(m(([a,c])=>({prev:a.map(([f])=>f),next:c.map(([f])=>f)})),N({prev:[],next:[]}),Ce(2,1),m(([a,c])=>a.prev.length{let o=new E,i=o.pipe(de(1));if(o.subscribe(({prev:s,next:a})=>{for(let[c]of a)c.classList.remove("md-nav__link--passed"),c.classList.remove("md-nav__link--active");for(let[c,[f]]of s.entries())f.classList.add("md-nav__link--passed"),f.classList.toggle("md-nav__link--active",c===s.length-1)}),Z("toc.follow")){let s=A(t.pipe(Re(1),m(()=>{})),t.pipe(Re(250),m(()=>"smooth")));o.pipe(x(({prev:a})=>a.length>0),ae(s)).subscribe(([{prev:a},c])=>{let[f]=a[a.length-1];if(f.offsetHeight){let u=cr(f);if(typeof u!="undefined"){let p=f.offsetTop-u.offsetTop,{height:l}=he(u);u.scrollTo({top:p-l/2,behavior:c})}}})}return Z("navigation.tracking")&&t.pipe(ee(i),J("offset"),Re(250),He(1),ee(n.pipe(He(1))),Tt({delay:250}),ae(o)).subscribe(([,{prev:s}])=>{let a=Oe(),c=s[s.length-1];if(c&&c.length){let[f]=c,{hash:u}=new URL(f.href);a.hash!==u&&(a.hash=u,history.replaceState({},"",`${a}`))}else a.hash="",history.replaceState({},"",`${a}`)}),Fs(e,{viewport$:t,header$:r}).pipe(w(s=>o.next(s)),C(()=>o.complete()),m(s=>H({ref:e},s)))})}function Us(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(m(({offset:{y:s}})=>s),Ce(2,1),m(([s,a])=>s>a&&a>0),B()),i=r.pipe(m(({active:s})=>s));return Y([i,o]).pipe(m(([s,a])=>!(s&&a)),B(),ee(n.pipe(He(1))),Fr(!0),Tt({delay:250}),m(s=>({hidden:s})))}function Wi(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new E,s=i.pipe(de(1));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(ee(s),J("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),Us(e,{viewport$:t,main$:n,target$:o}).pipe(w(a=>i.next(a)),C(()=>i.complete()),m(a=>H({ref:e},a)))}function Vi({document$:e,tablet$:t}){e.pipe(S(()=>Q(".md-toggle--indeterminate, [data-md-state=indeterminate]")),w(r=>{r.indeterminate=!0,r.checked=!1}),se(r=>v(r,"change").pipe(Wr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),ae(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function Ds(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function zi({document$:e}){e.pipe(S(()=>Q("[data-md-scrollfix]")),w(t=>t.removeAttribute("data-md-scrollfix")),x(Ds),se(t=>v(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Ni({viewport$:e,tablet$:t}){Y([dt("search"),t]).pipe(m(([r,n])=>r&&!n),S(r=>I(r).pipe(ke(r?400:100))),ae(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var tt=go(),vr=ko(),gt=jo(),on=Ro(),we=qo(),gr=Kr("(min-width: 960px)"),Ki=Kr("(min-width: 1220px)"),Qi=Fo(),Yi=le(),Bi=document.forms.namedItem("search")?(__search==null?void 0:__search.index)||je(new URL("search/search_index.json",Yi.base)):Se,an=new E;wi({alert$:an});Z("navigation.instant")&&Ei({document$:tt,location$:vr,viewport$:we});var qi;((qi=Yi.version)==null?void 0:qi.provider)==="mike"&&Li({document$:tt});A(vr,gt).pipe(ke(125)).subscribe(()=>{Ke("drawer",!1),Ke("search",!1)});on.pipe(x(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=pe("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=pe("[href][rel=next]");typeof r!="undefined"&&r.click();break}});Vi({document$:tt,tablet$:gr});zi({document$:tt});Ni({viewport$:we,tablet$:gr});var Qe=bi(_e("header"),{viewport$:we}),br=tt.pipe(m(()=>_e("main")),S(e=>yi(e,{viewport$:we,header$:Qe})),X(1)),Ws=A(...te("consent").map(e=>Yo(e,{target$:gt})),...te("dialog").map(e=>hi(e,{alert$:an})),...te("header").map(e=>vi(e,{viewport$:we,header$:Qe,main$:br})),...te("palette").map(e=>xi(e)),...te("search").map(e=>Hi(e,{index$:Bi,keyboard$:on})),...te("source").map(e=>Fi(e))),Vs=P(()=>A(...te("announce").map(e=>Qo(e)),...te("content").map(e=>di(e,{viewport$:we,target$:gt,print$:Qi})),...te("content").map(e=>Z("search.highlight")?Pi(e,{index$:Bi,location$:vr}):R),...te("header-title").map(e=>gi(e,{viewport$:we,header$:Qe})),...te("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Qr(Ki,()=>nn(e,{viewport$:we,header$:Qe,main$:br})):Qr(gr,()=>nn(e,{viewport$:we,header$:Qe,main$:br}))),...te("tabs").map(e=>Ui(e,{viewport$:we,header$:Qe})),...te("toc").map(e=>Di(e,{viewport$:we,header$:Qe,target$:gt})),...te("top").map(e=>Wi(e,{viewport$:we,header$:Qe,main$:br,target$:gt})))),Gi=tt.pipe(S(()=>Vs),et(Ws),X(1));Gi.subscribe();window.document$=tt;window.location$=vr;window.target$=gt;window.keyboard$=on;window.viewport$=we;window.tablet$=gr;window.screen$=Ki;window.print$=Qi;window.alert$=an;window.component$=Gi;})(); +//# sourceMappingURL=bundle.078830c0.min.js.map + diff --git a/3.4.1/assets/javascripts/bundle.078830c0.min.js.map b/3.4.1/assets/javascripts/bundle.078830c0.min.js.map new file mode 100644 index 0000000000..36366697c0 --- /dev/null +++ b/3.4.1/assets/javascripts/bundle.078830c0.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/focus-visible/dist/focus-visible.js", "node_modules/url-polyfill/url-polyfill.js", "node_modules/rxjs/node_modules/tslib/tslib.js", "node_modules/clipboard/dist/clipboard.js", "node_modules/escape-html/index.js", "node_modules/array-flat-polyfill/index.mjs", "src/assets/javascripts/bundle.ts", "node_modules/unfetch/polyfill/index.js", "node_modules/rxjs/node_modules/tslib/modules/index.js", "node_modules/rxjs/src/internal/util/isFunction.ts", "node_modules/rxjs/src/internal/util/createErrorClass.ts", "node_modules/rxjs/src/internal/util/UnsubscriptionError.ts", "node_modules/rxjs/src/internal/util/arrRemove.ts", "node_modules/rxjs/src/internal/Subscription.ts", "node_modules/rxjs/src/internal/config.ts", "node_modules/rxjs/src/internal/scheduler/timeoutProvider.ts", "node_modules/rxjs/src/internal/util/reportUnhandledError.ts", "node_modules/rxjs/src/internal/util/noop.ts", "node_modules/rxjs/src/internal/NotificationFactories.ts", "node_modules/rxjs/src/internal/util/errorContext.ts", "node_modules/rxjs/src/internal/Subscriber.ts", "node_modules/rxjs/src/internal/symbol/observable.ts", "node_modules/rxjs/src/internal/util/identity.ts", "node_modules/rxjs/src/internal/util/pipe.ts", "node_modules/rxjs/src/internal/Observable.ts", "node_modules/rxjs/src/internal/util/lift.ts", "node_modules/rxjs/src/internal/operators/OperatorSubscriber.ts", "node_modules/rxjs/src/internal/scheduler/animationFrameProvider.ts", "node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts", "node_modules/rxjs/src/internal/Subject.ts", "node_modules/rxjs/src/internal/scheduler/dateTimestampProvider.ts", "node_modules/rxjs/src/internal/ReplaySubject.ts", "node_modules/rxjs/src/internal/scheduler/Action.ts", "node_modules/rxjs/src/internal/scheduler/intervalProvider.ts", "node_modules/rxjs/src/internal/scheduler/AsyncAction.ts", "node_modules/rxjs/src/internal/Scheduler.ts", "node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts", "node_modules/rxjs/src/internal/scheduler/async.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts", "node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts", "node_modules/rxjs/src/internal/scheduler/animationFrame.ts", "node_modules/rxjs/src/internal/observable/empty.ts", "node_modules/rxjs/src/internal/util/isScheduler.ts", "node_modules/rxjs/src/internal/util/args.ts", "node_modules/rxjs/src/internal/util/isArrayLike.ts", "node_modules/rxjs/src/internal/util/isPromise.ts", "node_modules/rxjs/src/internal/util/isInteropObservable.ts", "node_modules/rxjs/src/internal/util/isAsyncIterable.ts", "node_modules/rxjs/src/internal/util/throwUnobservableError.ts", "node_modules/rxjs/src/internal/symbol/iterator.ts", "node_modules/rxjs/src/internal/util/isIterable.ts", "node_modules/rxjs/src/internal/util/isReadableStreamLike.ts", "node_modules/rxjs/src/internal/observable/innerFrom.ts", "node_modules/rxjs/src/internal/util/executeSchedule.ts", "node_modules/rxjs/src/internal/operators/observeOn.ts", "node_modules/rxjs/src/internal/operators/subscribeOn.ts", "node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts", "node_modules/rxjs/src/internal/scheduled/schedulePromise.ts", "node_modules/rxjs/src/internal/scheduled/scheduleArray.ts", "node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleAsyncIterable.ts", "node_modules/rxjs/src/internal/scheduled/scheduleReadableStreamLike.ts", "node_modules/rxjs/src/internal/scheduled/scheduled.ts", "node_modules/rxjs/src/internal/observable/from.ts", "node_modules/rxjs/src/internal/observable/of.ts", "node_modules/rxjs/src/internal/observable/throwError.ts", "node_modules/rxjs/src/internal/util/isDate.ts", "node_modules/rxjs/src/internal/operators/map.ts", "node_modules/rxjs/src/internal/util/mapOneOrManyArgs.ts", "node_modules/rxjs/src/internal/util/argsArgArrayOrObject.ts", "node_modules/rxjs/src/internal/util/createObject.ts", "node_modules/rxjs/src/internal/observable/combineLatest.ts", "node_modules/rxjs/src/internal/operators/mergeInternals.ts", "node_modules/rxjs/src/internal/operators/mergeMap.ts", "node_modules/rxjs/src/internal/operators/mergeAll.ts", "node_modules/rxjs/src/internal/operators/concatAll.ts", "node_modules/rxjs/src/internal/observable/concat.ts", "node_modules/rxjs/src/internal/observable/defer.ts", "node_modules/rxjs/src/internal/observable/fromEvent.ts", "node_modules/rxjs/src/internal/observable/fromEventPattern.ts", "node_modules/rxjs/src/internal/observable/timer.ts", "node_modules/rxjs/src/internal/observable/merge.ts", "node_modules/rxjs/src/internal/observable/never.ts", "node_modules/rxjs/src/internal/util/argsOrArgArray.ts", "node_modules/rxjs/src/internal/operators/filter.ts", "node_modules/rxjs/src/internal/observable/zip.ts", "node_modules/rxjs/src/internal/operators/audit.ts", "node_modules/rxjs/src/internal/operators/auditTime.ts", "node_modules/rxjs/src/internal/operators/bufferCount.ts", "node_modules/rxjs/src/internal/operators/catchError.ts", "node_modules/rxjs/src/internal/operators/scanInternals.ts", "node_modules/rxjs/src/internal/operators/combineLatest.ts", "node_modules/rxjs/src/internal/operators/combineLatestWith.ts", "node_modules/rxjs/src/internal/operators/concatMap.ts", "node_modules/rxjs/src/internal/operators/debounceTime.ts", "node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts", "node_modules/rxjs/src/internal/operators/take.ts", "node_modules/rxjs/src/internal/operators/ignoreElements.ts", "node_modules/rxjs/src/internal/operators/mapTo.ts", "node_modules/rxjs/src/internal/operators/delayWhen.ts", "node_modules/rxjs/src/internal/operators/delay.ts", "node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts", "node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts", "node_modules/rxjs/src/internal/operators/endWith.ts", "node_modules/rxjs/src/internal/operators/finalize.ts", "node_modules/rxjs/src/internal/operators/takeLast.ts", "node_modules/rxjs/src/internal/operators/merge.ts", "node_modules/rxjs/src/internal/operators/mergeWith.ts", "node_modules/rxjs/src/internal/operators/repeat.ts", "node_modules/rxjs/src/internal/operators/sample.ts", "node_modules/rxjs/src/internal/operators/scan.ts", "node_modules/rxjs/src/internal/operators/share.ts", "node_modules/rxjs/src/internal/operators/shareReplay.ts", "node_modules/rxjs/src/internal/operators/skip.ts", "node_modules/rxjs/src/internal/operators/skipUntil.ts", "node_modules/rxjs/src/internal/operators/startWith.ts", "node_modules/rxjs/src/internal/operators/switchMap.ts", "node_modules/rxjs/src/internal/operators/takeUntil.ts", "node_modules/rxjs/src/internal/operators/takeWhile.ts", "node_modules/rxjs/src/internal/operators/tap.ts", "node_modules/rxjs/src/internal/operators/throttle.ts", "node_modules/rxjs/src/internal/operators/throttleTime.ts", "node_modules/rxjs/src/internal/operators/withLatestFrom.ts", "node_modules/rxjs/src/internal/operators/zip.ts", "node_modules/rxjs/src/internal/operators/zipWith.ts", "src/assets/javascripts/browser/document/index.ts", "src/assets/javascripts/browser/element/_/index.ts", "src/assets/javascripts/browser/element/focus/index.ts", "src/assets/javascripts/browser/element/offset/_/index.ts", "src/assets/javascripts/browser/element/offset/content/index.ts", "node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js", "src/assets/javascripts/browser/element/size/_/index.ts", "src/assets/javascripts/browser/element/size/content/index.ts", "src/assets/javascripts/browser/element/visibility/index.ts", "src/assets/javascripts/browser/toggle/index.ts", "src/assets/javascripts/browser/keyboard/index.ts", "src/assets/javascripts/browser/location/_/index.ts", "src/assets/javascripts/utilities/h/index.ts", "src/assets/javascripts/utilities/string/index.ts", "src/assets/javascripts/browser/location/hash/index.ts", "src/assets/javascripts/browser/media/index.ts", "src/assets/javascripts/browser/request/index.ts", "src/assets/javascripts/browser/script/index.ts", "src/assets/javascripts/browser/viewport/offset/index.ts", "src/assets/javascripts/browser/viewport/size/index.ts", "src/assets/javascripts/browser/viewport/_/index.ts", "src/assets/javascripts/browser/viewport/at/index.ts", "src/assets/javascripts/browser/worker/index.ts", "src/assets/javascripts/_/index.ts", "src/assets/javascripts/components/_/index.ts", "src/assets/javascripts/components/announce/index.ts", "src/assets/javascripts/components/consent/index.ts", "src/assets/javascripts/components/content/code/_/index.ts", "src/assets/javascripts/templates/tooltip/index.tsx", "src/assets/javascripts/templates/annotation/index.tsx", "src/assets/javascripts/templates/clipboard/index.tsx", "src/assets/javascripts/templates/search/index.tsx", "src/assets/javascripts/templates/source/index.tsx", "src/assets/javascripts/templates/tabbed/index.tsx", "src/assets/javascripts/templates/table/index.tsx", "src/assets/javascripts/templates/version/index.tsx", "src/assets/javascripts/components/content/annotation/_/index.ts", "src/assets/javascripts/components/content/annotation/list/index.ts", "src/assets/javascripts/components/content/code/mermaid/index.ts", "src/assets/javascripts/components/content/details/index.ts", "src/assets/javascripts/components/content/table/index.ts", "src/assets/javascripts/components/content/tabs/index.ts", "src/assets/javascripts/components/content/_/index.ts", "src/assets/javascripts/components/dialog/index.ts", "src/assets/javascripts/components/header/_/index.ts", "src/assets/javascripts/components/header/title/index.ts", "src/assets/javascripts/components/main/index.ts", "src/assets/javascripts/components/palette/index.ts", "src/assets/javascripts/integrations/clipboard/index.ts", "src/assets/javascripts/integrations/sitemap/index.ts", "src/assets/javascripts/integrations/instant/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/transform/index.ts", "src/assets/javascripts/integrations/search/worker/message/index.ts", "src/assets/javascripts/integrations/search/worker/_/index.ts", "src/assets/javascripts/integrations/version/index.ts", "src/assets/javascripts/components/search/query/index.ts", "src/assets/javascripts/components/search/result/index.ts", "src/assets/javascripts/components/search/share/index.ts", "src/assets/javascripts/components/search/suggest/index.ts", "src/assets/javascripts/components/search/_/index.ts", "src/assets/javascripts/components/search/highlight/index.ts", "src/assets/javascripts/components/sidebar/index.ts", "src/assets/javascripts/components/source/facts/github/index.ts", "src/assets/javascripts/components/source/facts/gitlab/index.ts", "src/assets/javascripts/components/source/facts/_/index.ts", "src/assets/javascripts/components/source/_/index.ts", "src/assets/javascripts/components/tabs/index.ts", "src/assets/javascripts/components/toc/index.ts", "src/assets/javascripts/components/top/index.ts", "src/assets/javascripts/patches/indeterminate/index.ts", "src/assets/javascripts/patches/scrollfix/index.ts", "src/assets/javascripts/patches/scrolllock/index.ts", "src/assets/javascripts/polyfills/index.ts"], + "sourceRoot": "../../../..", + "sourcesContent": ["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. \u00AF\\_(\u30C4)_/\u00AF\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n", "(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if (iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(String(value).replace(/\\+/g, ' '));\r\n };\r\n\r\n var polyfillURLSearchParams = function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { writable: true, value: {} });\r\n var typeofSearchString = typeof searchString;\r\n\r\n if (typeofSearchString === 'undefined') {\r\n // do nothing\r\n } else if (typeofSearchString === 'string') {\r\n if (searchString !== '') {\r\n this._fromString(searchString);\r\n }\r\n } else if (searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(name, value);\r\n });\r\n } else if ((searchString !== null) && (typeofSearchString === 'object')) {\r\n if (Object.prototype.toString.call(searchString) === '[object Array]') {\r\n for (var i = 0; i < searchString.length; i++) {\r\n var entry = searchString[i];\r\n if ((Object.prototype.toString.call(entry) === '[object Array]') || (entry.length !== 2)) {\r\n this.append(entry[0], entry[1]);\r\n } else {\r\n throw new TypeError('Expected [string, any] as entry at index ' + i + ' of URLSearchParams\\'s input');\r\n }\r\n }\r\n } else {\r\n for (var key in searchString) {\r\n if (searchString.hasOwnProperty(key)) {\r\n this.append(key, searchString[key]);\r\n }\r\n }\r\n }\r\n } else {\r\n throw new TypeError('Unsupported input\\'s type for URLSearchParams');\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if (name in this._entries) {\r\n this._entries[name].push(String(value));\r\n } else {\r\n this._entries[name] = [String(value)];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [String(value)];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for (var name in this._entries) {\r\n if (this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for (var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push(name);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) {\r\n items.push(value);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n });\r\n return createIterator(items);\r\n };\r\n\r\n if (iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchArray = [];\r\n this.forEach(function(value, name) {\r\n searchArray.push(serializeParam(name) + '=' + serializeParam(value));\r\n });\r\n return searchArray.join('&');\r\n };\r\n\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n var checkIfURLSearchParamsSupported = function() {\r\n try {\r\n var URLSearchParams = global.URLSearchParams;\r\n\r\n return (\r\n (new URLSearchParams('?a=1').toString() === 'a=1') &&\r\n (typeof URLSearchParams.prototype.set === 'function') &&\r\n (typeof URLSearchParams.prototype.entries === 'function')\r\n );\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n if (!checkIfURLSearchParamsSupported()) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n var proto = global.URLSearchParams.prototype;\r\n\r\n if (typeof proto.sort !== 'function') {\r\n proto.sort = function() {\r\n var _this = this;\r\n var items = [];\r\n this.forEach(function(value, name) {\r\n items.push([name, value]);\r\n if (!_this._entries) {\r\n _this.delete(name);\r\n }\r\n });\r\n items.sort(function(a, b) {\r\n if (a[0] < b[0]) {\r\n return -1;\r\n } else if (a[0] > b[0]) {\r\n return +1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n if (_this._entries) { // force reset because IE keeps keys index\r\n _this._entries = {};\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n this.append(items[i][0], items[i][1]);\r\n }\r\n };\r\n }\r\n\r\n if (typeof proto._fromString !== 'function') {\r\n Object.defineProperty(proto, '_fromString', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function(searchString) {\r\n if (this._entries) {\r\n this._entries = {};\r\n } else {\r\n var keys = [];\r\n this.forEach(function(value, name) {\r\n keys.push(name);\r\n });\r\n for (var i = 0; i < keys.length; i++) {\r\n this.delete(keys[i]);\r\n }\r\n }\r\n\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for (var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new global.URL('b', 'http://a');\r\n u.pathname = 'c d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch (e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if (typeof url !== 'string') url = String(url);\r\n if (base && typeof base !== 'string') base = String(base);\r\n\r\n // Only create another document if the base is different from current location.\r\n var doc = document, baseElement;\r\n if (base && (global.location === void 0 || base !== global.location.href)) {\r\n base = base.toLowerCase();\r\n doc = document.implementation.createHTMLDocument('');\r\n baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n try {\r\n if (baseElement.href.indexOf(base) !== 0) throw new Error(baseElement.href);\r\n } catch (err) {\r\n throw new Error('URL unable to set base ' + base + ' due to ' + err);\r\n }\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n if (baseElement) {\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n }\r\n\r\n var inputElement = doc.createElement('input');\r\n inputElement.type = 'url';\r\n inputElement.value = url;\r\n\r\n if (anchorElement.protocol === ':' || !/:/.test(anchorElement.href) || (!inputElement.checkValidity() && !base)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n\r\n\r\n // create a linked searchParams which reflect its changes on URL\r\n var searchParams = new global.URLSearchParams(this.search);\r\n var enableSearchUpdate = true;\r\n var enableSearchParamsUpdate = true;\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n if (enableSearchUpdate) {\r\n enableSearchParamsUpdate = false;\r\n _this.search = searchParams.toString();\r\n enableSearchParamsUpdate = true;\r\n }\r\n };\r\n });\r\n\r\n Object.defineProperty(this, 'searchParams', {\r\n value: searchParams,\r\n enumerable: true\r\n });\r\n\r\n var search = void 0;\r\n Object.defineProperty(this, '_updateSearchParams', {\r\n enumerable: false,\r\n configurable: false,\r\n writable: false,\r\n value: function() {\r\n if (this.search !== search) {\r\n search = this.search;\r\n if (enableSearchParamsUpdate) {\r\n enableSearchUpdate = false;\r\n this.searchParams._fromString(this.search);\r\n enableSearchUpdate = true;\r\n }\r\n }\r\n }\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperty(proto, 'search', {\r\n get: function() {\r\n return this._anchorElement['search'];\r\n },\r\n set: function(value) {\r\n this._anchorElement['search'] = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href': {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/, '');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n this._updateSearchParams();\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname': {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/, '/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = { 'http:': 80, 'https:': 443, 'ftp:': 21 }[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== '';\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if (!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if ((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch (e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n", "/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n", "/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT \u00A9 Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "Array.prototype.flat||Object.defineProperty(Array.prototype,\"flat\",{configurable:!0,value:function r(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,function(a,e){return Array.isArray(e)?a.push.apply(a,r.call(e,t-1)):a.push(e),a},[]):Array.prototype.slice.call(this)},writable:!0}),Array.prototype.flatMap||Object.defineProperty(Array.prototype,\"flatMap\",{configurable:!0,value:function(r){return Array.prototype.map.apply(this,arguments).flat()},writable:!0})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"array-flat-polyfill\"\nimport \"focus-visible\"\nimport \"unfetch/polyfill\"\nimport \"url-polyfill\"\n\nimport {\n EMPTY,\n NEVER,\n Subject,\n defer,\n delay,\n filter,\n map,\n merge,\n mergeWith,\n shareReplay,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"./_\"\nimport {\n at,\n getOptionalElement,\n requestJSON,\n setToggle,\n watchDocument,\n watchKeyboard,\n watchLocation,\n watchLocationTarget,\n watchMedia,\n watchPrint,\n watchViewport\n} from \"./browser\"\nimport {\n getComponentElement,\n getComponentElements,\n mountAnnounce,\n mountBackToTop,\n mountConsent,\n mountContent,\n mountDialog,\n mountHeader,\n mountHeaderTitle,\n mountPalette,\n mountSearch,\n mountSearchHiglight,\n mountSidebar,\n mountSource,\n mountTableOfContents,\n mountTabs,\n watchHeader,\n watchMain\n} from \"./components\"\nimport {\n SearchIndex,\n setupClipboardJS,\n setupInstantLoading,\n setupVersionSelector\n} from \"./integrations\"\nimport {\n patchIndeterminate,\n patchScrollfix,\n patchScrolllock\n} from \"./patches\"\nimport \"./polyfills\"\n\n/* ----------------------------------------------------------------------------\n * Application\n * ------------------------------------------------------------------------- */\n\n/* Yay, JavaScript is available */\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Set up navigation observables and subjects */\nconst document$ = watchDocument()\nconst location$ = watchLocation()\nconst target$ = watchLocationTarget()\nconst keyboard$ = watchKeyboard()\n\n/* Set up media observables */\nconst viewport$ = watchViewport()\nconst tablet$ = watchMedia(\"(min-width: 960px)\")\nconst screen$ = watchMedia(\"(min-width: 1220px)\")\nconst print$ = watchPrint()\n\n/* Retrieve search index, if search is enabled */\nconst config = configuration()\nconst index$ = document.forms.namedItem(\"search\")\n ? __search?.index || requestJSON(\n new URL(\"search/search_index.json\", config.base)\n )\n : NEVER\n\n/* Set up Clipboard.js integration */\nconst alert$ = new Subject()\nsetupClipboardJS({ alert$ })\n\n/* Set up instant loading, if enabled */\nif (feature(\"navigation.instant\"))\n setupInstantLoading({ document$, location$, viewport$ })\n\n/* Set up version selector */\nif (config.version?.provider === \"mike\")\n setupVersionSelector({ document$ })\n\n/* Always close drawer and search on navigation */\nmerge(location$, target$)\n .pipe(\n delay(125)\n )\n .subscribe(() => {\n setToggle(\"drawer\", false)\n setToggle(\"search\", false)\n })\n\n/* Set up global keyboard handlers */\nkeyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getOptionalElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getOptionalElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n/* Set up patches */\npatchIndeterminate({ document$, tablet$ })\npatchScrollfix({ document$ })\npatchScrolllock({ viewport$, tablet$ })\n\n/* Set up header and main area observable */\nconst header$ = watchHeader(getComponentElement(\"header\"), { viewport$ })\nconst main$ = document$\n .pipe(\n map(() => getComponentElement(\"main\")),\n switchMap(el => watchMain(el, { viewport$, header$ })),\n shareReplay(1)\n )\n\n/* Set up control component observables */\nconst control$ = merge(\n\n /* Consent */\n ...getComponentElements(\"consent\")\n .map(el => mountConsent(el, { target$ })),\n\n /* Dialog */\n ...getComponentElements(\"dialog\")\n .map(el => mountDialog(el, { alert$ })),\n\n /* Header */\n ...getComponentElements(\"header\")\n .map(el => mountHeader(el, { viewport$, header$, main$ })),\n\n /* Color palette */\n ...getComponentElements(\"palette\")\n .map(el => mountPalette(el)),\n\n /* Search */\n ...getComponentElements(\"search\")\n .map(el => mountSearch(el, { index$, keyboard$ })),\n\n /* Repository information */\n ...getComponentElements(\"source\")\n .map(el => mountSource(el))\n)\n\n/* Set up content component observables */\nconst content$ = defer(() => merge(\n\n /* Announcement bar */\n ...getComponentElements(\"announce\")\n .map(el => mountAnnounce(el)),\n\n /* Content */\n ...getComponentElements(\"content\")\n .map(el => mountContent(el, { viewport$, target$, print$ })),\n\n /* Search highlighting */\n ...getComponentElements(\"content\")\n .map(el => feature(\"search.highlight\")\n ? mountSearchHiglight(el, { index$, location$ })\n : EMPTY\n ),\n\n /* Header title */\n ...getComponentElements(\"header-title\")\n .map(el => mountHeaderTitle(el, { viewport$, header$ })),\n\n /* Sidebar */\n ...getComponentElements(\"sidebar\")\n .map(el => el.getAttribute(\"data-md-type\") === \"navigation\"\n ? at(screen$, () => mountSidebar(el, { viewport$, header$, main$ }))\n : at(tablet$, () => mountSidebar(el, { viewport$, header$, main$ }))\n ),\n\n /* Navigation tabs */\n ...getComponentElements(\"tabs\")\n .map(el => mountTabs(el, { viewport$, header$ })),\n\n /* Table of contents */\n ...getComponentElements(\"toc\")\n .map(el => mountTableOfContents(el, { viewport$, header$, target$ })),\n\n /* Back-to-top button */\n ...getComponentElements(\"top\")\n .map(el => mountBackToTop(el, { viewport$, header$, main$, target$ }))\n))\n\n/* Set up component observables */\nconst component$ = document$\n .pipe(\n switchMap(() => content$),\n mergeWith(control$),\n shareReplay(1)\n )\n\n/* Subscribe to all components */\ncomponent$.subscribe()\n\n/* ----------------------------------------------------------------------------\n * Exports\n * ------------------------------------------------------------------------- */\n\nwindow.document$ = document$ /* Document observable */\nwindow.location$ = location$ /* Location subject */\nwindow.target$ = target$ /* Location target observable */\nwindow.keyboard$ = keyboard$ /* Keyboard observable */\nwindow.viewport$ = viewport$ /* Viewport observable */\nwindow.tablet$ = tablet$ /* Media tablet observable */\nwindow.screen$ = screen$ /* Media screen observable */\nwindow.print$ = print$ /* Media print observable */\nwindow.alert$ = alert$ /* Alert subject */\nwindow.component$ = component$ /* Component observable */\n", "self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,s){var r=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var c in r.open(n.method||\"get\",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},r.onerror=s,r.withCredentials=\"include\"==n.credentials,n.headers)r.setRequestHeader(c,n.headers[c]);r.send(n.body||null)})});\n", "import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ReplaySubject,\n Subject,\n fromEvent\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * Documents are implemented as subjects, so all downstream observables are\n * automatically updated when a new document is emitted.\n *\n * @returns Document subject\n */\nexport function watchDocument(): Subject {\n const document$ = new ReplaySubject(1)\n fromEvent(document, \"DOMContentLoaded\", { once: true })\n .subscribe(() => document$.next(document))\n\n /* Return document */\n return document$\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getElements(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T][]\n\nexport function getElements(\n selector: string, node?: ParentNode\n): T[]\n\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * Note that this function assumes that the element is present. If unsure if an\n * element is existent, use the `getOptionalElement` function instead.\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T]\n\nexport function getElement(\n selector: string, node?: ParentNode\n): T\n\nexport function getElement(\n selector: string, node: ParentNode = document\n): T {\n const el = getOptionalElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n\n /* Return element */\n return el\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an optional element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @returns Element or nothing\n */\nexport function getOptionalElement(\n selector: T, node?: ParentNode\n): HTMLElementTagNameMap[T] | undefined\n\nexport function getOptionalElement(\n selector: string, node?: ParentNode\n): T | undefined\n\nexport function getOptionalElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve the currently active element\n *\n * @returns Element or nothing\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement || undefined\n : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n debounceTime,\n distinctUntilChanged,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * Previously, this function used `focus` and `blur` events to determine whether\n * an element is focused, but this doesn't work if there are focusable elements\n * within the elements itself. A better solutions are `focusin` and `focusout`\n * events, which bubble up the tree and allow for more fine-grained control.\n *\n * `debounceTime` is necessary, because when a focus change happens inside an\n * element, the observable would first emit `false` and then `true` again.\n *\n * @param el - Element\n *\n * @returns Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(document.body, \"focusin\"),\n fromEvent(document.body, \"focusout\")\n )\n .pipe(\n debounceTime(1),\n map(() => {\n const active = getActiveElement()\n return typeof active !== \"undefined\"\n ? el.contains(active)\n : false\n }),\n startWith(el === getActiveElement()),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @returns Element offset\n */\nexport function getElementOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.offsetLeft,\n y: el.offsetTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @returns Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(window, \"load\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n animationFrameScheduler,\n auditTime,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\nimport { ElementOffset } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content offset (= scroll offset)\n *\n * @param el - Element\n *\n * @returns Element content offset\n */\nexport function getElementContentOffset(\n el: HTMLElement\n): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element content offset\n *\n * @param el - Element\n *\n * @returns Element content offset observable\n */\nexport function watchElementContentOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n auditTime(0, animationFrameScheduler),\n map(() => getElementContentOffset(el)),\n startWith(getElementContentOffset(el))\n )\n}\n", "/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ResizeObserver from \"resize-observer-polyfill\"\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n startWith,\n switchMap,\n tap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementSize {\n width: number /* Element width */\n height: number /* Element height */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Resize observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Resize observer observable\n *\n * This observable will create a `ResizeObserver` on the first subscription\n * and will automatically terminate it when there are no more subscribers.\n * It's quite important to centralize observation in a single `ResizeObserver`,\n * as the performance difference can be quite dramatic, as the link shows.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new ResizeObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element size\n *\n * @param el - Element\n *\n * @returns Element size\n */\nexport function getElementSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.offsetWidth,\n height: el.offsetHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element size\n *\n * This function returns an observable that subscribes to a single internal\n * instance of `ResizeObserver` upon subscription, and emit resize events until\n * termination. Note that this function should not be called with the same\n * element twice, as the first unsubscription will terminate observation.\n *\n * Sadly, we can't use the `DOMRect` objects returned by the observer, because\n * we need the emitted values to be consistent with `getElementSize`, which will\n * return the used values (rounded) and not actual values (unrounded). Thus, we\n * use the `offset*` properties. See the linked GitHub issue.\n *\n * @see https://bit.ly/3m0k3he - GitHub issue\n *\n * @param el - Element\n *\n * @returns Element size observable\n */\nexport function watchElementSize(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(() => getElementSize(el))\n )\n ),\n startWith(getElementSize(el))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ElementSize } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element content size (= scroll width and height)\n *\n * @param el - Element\n *\n * @returns Element content size\n */\nexport function getElementContentSize(\n el: HTMLElement\n): ElementSize {\n return {\n width: el.scrollWidth,\n height: el.scrollHeight\n }\n}\n\n/**\n * Retrieve the overflowing container of an element, if any\n *\n * @param el - Element\n *\n * @returns Overflowing container or nothing\n */\nexport function getElementContainer(\n el: HTMLElement\n): HTMLElement | undefined {\n let parent = el.parentElement\n while (parent)\n if (\n el.scrollWidth <= parent.scrollWidth &&\n el.scrollHeight <= parent.scrollHeight\n )\n parent = (el = parent).parentElement\n else\n break\n\n /* Return overflowing container */\n return parent ? el : undefined\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n shareReplay,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport {\n getElementContentSize,\n getElementSize,\n watchElementContentOffset\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Intersection observer entry subject\n */\nconst entry$ = new Subject()\n\n/**\n * Intersection observer observable\n *\n * This observable will create an `IntersectionObserver` on first subscription\n * and will automatically terminate it when there are no more subscribers.\n *\n * @see https://bit.ly/3iIYfEm - Google Groups on performance\n */\nconst observer$ = defer(() => of(\n new IntersectionObserver(entries => {\n for (const entry of entries)\n entry$.next(entry)\n }, {\n threshold: 0\n })\n))\n .pipe(\n switchMap(observer => merge(NEVER, of(observer))\n .pipe(\n finalize(() => observer.disconnect())\n )\n ),\n shareReplay(1)\n )\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch element visibility\n *\n * @param el - Element\n *\n * @returns Element visibility observable\n */\nexport function watchElementVisibility(\n el: HTMLElement\n): Observable {\n return observer$\n .pipe(\n tap(observer => observer.observe(el)),\n switchMap(observer => entry$\n .pipe(\n filter(({ target }) => target === el),\n finalize(() => observer.unobserve(el)),\n map(({ isIntersecting }) => isIntersecting)\n )\n )\n )\n}\n\n/**\n * Watch element boundary\n *\n * This function returns an observable which emits whether the bottom content\n * boundary (= scroll offset) of an element is within a certain threshold.\n *\n * @param el - Element\n * @param threshold - Threshold\n *\n * @returns Element boundary observable\n */\nexport function watchElementBoundary(\n el: HTMLElement, threshold = 16\n): Observable {\n return watchElementContentOffset(el)\n .pipe(\n map(({ y }) => {\n const visible = getElementSize(el)\n const content = getElementContentSize(el)\n return y >= (\n content.height - visible.height - threshold\n )\n }),\n distinctUntilChanged()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getElement } from \"../element\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map\n */\nconst toggles: Record = {\n drawer: getElement(\"[data-md-toggle=drawer]\"),\n search: getElement(\"[data-md-toggle=search]\")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the value of a toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value\n */\nexport function getToggle(name: Toggle): boolean {\n return toggles[name].checked\n}\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param name - Toggle\n * @param value - Toggle value\n */\nexport function setToggle(name: Toggle, value: boolean): void {\n if (toggles[name].checked !== value)\n toggles[name].click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param name - Toggle\n *\n * @returns Toggle value observable\n */\nexport function watchToggle(name: Toggle): Observable {\n const el = toggles[name]\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n share\n} from \"rxjs\"\n\nimport { getActiveElement } from \"../element\"\nimport { getToggle } from \"../toggle\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard {\n mode: KeyboardMode /* Keyboard mode */\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n * @param type - Key type\n *\n * @returns Test result\n */\nfunction isSusceptibleToKeyboard(\n el: HTMLElement, type: string\n): boolean {\n switch (el.constructor) {\n\n /* Input elements */\n case HTMLInputElement:\n /* @ts-expect-error - omit unnecessary type cast */\n if (el.type === \"radio\")\n return /^Arrow/.test(type)\n else\n return true\n\n /* Select element and textarea */\n case HTMLSelectElement:\n case HTMLTextAreaElement:\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @returns Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n mode: getToggle(\"search\") ? \"search\" : \"global\",\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n } as Keyboard)),\n filter(({ mode, type }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active, type)\n }\n return true\n }),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function returns a `URL` object (and not `Location`) to normalize the\n * typings across the application. Furthermore, locations need to be tracked\n * without setting them and `Location` is a singleton which represents the\n * current location.\n *\n * @returns URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @returns Location subject\n */\nexport function watchLocation(): Subject {\n return new Subject()\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { JSX as JSXInternal } from \"preact\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(el: HTMLElement, child: Child | Child[]): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @template T - Element type\n *\n * @param tag - HTML tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @returns Element\n */\nexport function h(\n tag: T, attributes?: Attributes | null, ...children: Child[]\n): HTMLElementTagNameMap[T]\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T\n\nexport function h(\n tag: string, attributes?: Attributes | null, ...children: Child[]\n): T {\n const el = document.createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of Object.keys(attributes)) {\n if (typeof attributes[attr] === \"undefined\")\n continue\n\n /* Set default attribute or boolean */\n if (typeof attributes[attr] !== \"boolean\")\n el.setAttribute(attr, attributes[attr])\n else\n el.setAttribute(attr, \"\")\n }\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el as T\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @returns Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0) { /* keep eating */ }\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with repository facts\n *\n * This is a reverse-engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @returns Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 0.000001) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n shareReplay,\n startWith\n} from \"rxjs\"\n\nimport { getOptionalElement } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @returns Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/**\n * Set location hash\n *\n * Setting a new fragment identifier via `location.hash` will have no effect\n * if the value doesn't change. When a new fragment identifier is set, we want\n * the browser to target the respective element at all times, which is why we\n * use this dirty little trick.\n *\n * @param hash - Location hash\n */\nexport function setLocationHash(hash: string): void {\n const el = h(\"a\", { href: hash })\n el.addEventListener(\"click\", ev => ev.stopPropagation())\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @returns Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n shareReplay(1)\n )\n}\n\n/**\n * Watch location target\n *\n * @returns Location target observable\n */\nexport function watchLocationTarget(): Observable {\n return watchLocationHash()\n .pipe(\n map(id => getOptionalElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\")\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n fromEvent,\n fromEventPattern,\n map,\n merge,\n startWith,\n switchMap\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * Note that although `MediaQueryList.addListener` is deprecated we have to\n * use it, because it's the only way to ensure proper downward compatibility.\n *\n * @see https://bit.ly/3dUBH2m - GitHub issue\n *\n * @param query - Media query\n *\n * @returns Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next => (\n media.addListener(() => next(media.matches))\n ))\n .pipe(\n startWith(media.matches)\n )\n}\n\n/**\n * Watch print mode\n *\n * @returns Print observable\n */\nexport function watchPrint(): Observable {\n const media = matchMedia(\"print\")\n return merge(\n fromEvent(window, \"beforeprint\").pipe(map(() => true)),\n fromEvent(window, \"afterprint\").pipe(map(() => false))\n )\n .pipe(\n startWith(media.matches)\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Toggle an observable with a media observable\n *\n * @template T - Data type\n *\n * @param query$ - Media observable\n * @param factory - Observable factory\n *\n * @returns Toggled observable\n */\nexport function at(\n query$: Observable, factory: () => Observable\n): Observable {\n return query$\n .pipe(\n switchMap(active => active ? factory() : EMPTY)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n from,\n map,\n of,\n shareReplay,\n switchMap,\n throwError\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the given URL\n *\n * If the request fails (e.g. when dispatched from `file://` locations), the\n * observable will complete without emitting a value.\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Response observable\n */\nexport function request(\n url: URL | string, options: RequestInit = { credentials: \"same-origin\" }\n): Observable {\n return from(fetch(`${url}`, options))\n .pipe(\n catchError(() => EMPTY),\n switchMap(res => res.status !== 200\n ? throwError(() => new Error(res.statusText))\n : of(res)\n )\n )\n}\n\n/**\n * Fetch JSON from the given URL\n *\n * @template T - Data type\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestJSON(\n url: URL | string, options?: RequestInit\n): Observable {\n return request(url, options)\n .pipe(\n switchMap(res => res.json()),\n shareReplay(1)\n )\n}\n\n/**\n * Fetch XML from the given URL\n *\n * @param url - Request URL\n * @param options - Options\n *\n * @returns Data observable\n */\nexport function requestXML(\n url: URL | string, options?: RequestInit\n): Observable {\n const dom = new DOMParser()\n return request(url, options)\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/xml\")),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n throwError\n} from \"rxjs\"\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create and load a `script` element\n *\n * This function returns an observable that will emit when the script was\n * successfully loaded, or throw an error if it didn't.\n *\n * @param src - Script URL\n *\n * @returns Script observable\n */\nexport function watchScript(src: string): Observable {\n const script = h(\"script\", { src })\n return defer(() => {\n document.head.appendChild(script)\n return merge(\n fromEvent(script, \"load\"),\n fromEvent(script, \"error\")\n .pipe(\n switchMap(() => (\n throwError(() => new ReferenceError(`Invalid script: ${src}`))\n ))\n )\n )\n .pipe(\n map(() => undefined),\n finalize(() => document.head.removeChild(script)),\n take(1)\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n merge,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @returns Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, scrollX),\n y: Math.max(0, scrollY)\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @returns Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\", { passive: true }),\n fromEvent(window, \"resize\", { passive: true })\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n startWith\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @returns Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @returns Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\", { passive: true })\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay\n} from \"rxjs\"\n\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @returns Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilKeyChanged,\n map\n} from \"rxjs\"\n\nimport { Header } from \"~/components\"\n\nimport { getElementOffset } from \"../../element\"\nimport { Viewport } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
/* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @returns Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const size$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\")\n )\n\n /* Compute element offset */\n const offset$ = combineLatest([size$, header$])\n .pipe(\n map(() => getElementOffset(el))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n fromEvent,\n map,\n share,\n switchMap,\n tap,\n throttle\n} from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data?: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that sends all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @returns Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEvent(worker, \"message\")\n .pipe(\n map(({ data }) => data as T)\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMap(() => rx$),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getLocation } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Feature flag\n */\nexport type Flag =\n | \"announce.dismiss\" /* Dismissable announcement bar */\n | \"content.code.annotate\" /* Code annotations */\n | \"content.lazy\" /* Lazy content elements */\n | \"content.tabs.link\" /* Link content tabs */\n | \"header.autohide\" /* Hide header */\n | \"navigation.expand\" /* Automatic expansion */\n | \"navigation.indexes\" /* Section pages */\n | \"navigation.instant\" /* Instant loading */\n | \"navigation.sections\" /* Section navigation */\n | \"navigation.tabs\" /* Tabs navigation */\n | \"navigation.tabs.sticky\" /* Tabs navigation (sticky) */\n | \"navigation.top\" /* Back-to-top button */\n | \"navigation.tracking\" /* Anchor tracking */\n | \"search.highlight\" /* Search highlighting */\n | \"search.share\" /* Search sharing */\n | \"search.suggest\" /* Search suggestions */\n | \"toc.follow\" /* Following table of contents */\n | \"toc.integrate\" /* Integrated table of contents */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Translation\n */\nexport type Translation =\n | \"clipboard.copy\" /* Copy to clipboard */\n | \"clipboard.copied\" /* Copied to clipboard */\n | \"search.config.lang\" /* Search language */\n | \"search.config.pipeline\" /* Search pipeline */\n | \"search.config.separator\" /* Search separator */\n | \"search.placeholder\" /* Search */\n | \"search.result.placeholder\" /* Type to start searching */\n | \"search.result.none\" /* No matching documents */\n | \"search.result.one\" /* 1 matching document */\n | \"search.result.other\" /* # matching documents */\n | \"search.result.more.one\" /* 1 more on this page */\n | \"search.result.more.other\" /* # more on this page */\n | \"search.result.term.missing\" /* Missing */\n | \"select.version.title\" /* Version selector */\n\n/**\n * Translations\n */\nexport type Translations = Record\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Versioning\n */\nexport interface Versioning {\n provider: \"mike\" /* Version provider */\n default?: string /* Default version */\n}\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n features: Flag[] /* Feature flags */\n translations: Translations /* Translations */\n search: string /* Search worker URL */\n tags?: Record /* Tags mapping */\n version?: Versioning /* Versioning */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration and make base URL absolute\n */\nconst script = getElement(\"#__config\")\nconst config: Config = JSON.parse(script.textContent!)\nconfig.base = `${new URL(config.base, getLocation())}`\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve global configuration\n *\n * @returns Global configuration\n */\nexport function configuration(): Config {\n return config\n}\n\n/**\n * Check whether a feature flag is enabled\n *\n * @param flag - Feature flag\n *\n * @returns Test result\n */\nexport function feature(flag: Flag): boolean {\n return config.features.includes(flag)\n}\n\n/**\n * Retrieve the translation for the given key\n *\n * @param key - Key to be translated\n * @param value - Positional value, if any\n *\n * @returns Translation\n */\nexport function translation(\n key: Translation, value?: string | number\n): string {\n return typeof value !== \"undefined\"\n ? config.translations[key].replace(\"#\", value.toString())\n : config.translations[key]\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElement, getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type\n */\nexport type ComponentType =\n | \"announce\" /* Announcement bar */\n | \"container\" /* Container */\n | \"consent\" /* Consent */\n | \"content\" /* Content */\n | \"dialog\" /* Dialog */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"header-topic\" /* Header topic */\n | \"main\" /* Main area */\n | \"outdated\" /* Version warning */\n | \"palette\" /* Color palette */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-result\" /* Search results */\n | \"search-share\" /* Search sharing */\n | \"search-suggest\" /* Search suggestions */\n | \"sidebar\" /* Sidebar */\n | \"skip\" /* Skip link */\n | \"source\" /* Repository information */\n | \"tabs\" /* Navigation tabs */\n | \"toc\" /* Table of contents */\n | \"top\" /* Back-to-top button */\n\n/**\n * Component\n *\n * @template T - Component type\n * @template U - Reference type\n */\nexport type Component<\n T extends {} = {},\n U extends HTMLElement = HTMLElement\n> =\n T & {\n ref: U /* Component reference */\n }\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component type map\n */\ninterface ComponentTypeMap {\n \"announce\": HTMLElement /* Announcement bar */\n \"container\": HTMLElement /* Container */\n \"consent\": HTMLElement /* Consent */\n \"content\": HTMLElement /* Content */\n \"dialog\": HTMLElement /* Dialog */\n \"header\": HTMLElement /* Header */\n \"header-title\": HTMLElement /* Header title */\n \"header-topic\": HTMLElement /* Header topic */\n \"main\": HTMLElement /* Main area */\n \"outdated\": HTMLElement /* Version warning */\n \"palette\": HTMLElement /* Color palette */\n \"search\": HTMLElement /* Search */\n \"search-query\": HTMLInputElement /* Search input */\n \"search-result\": HTMLElement /* Search results */\n \"search-share\": HTMLAnchorElement /* Search sharing */\n \"search-suggest\": HTMLElement /* Search suggestions */\n \"sidebar\": HTMLElement /* Sidebar */\n \"skip\": HTMLAnchorElement /* Skip link */\n \"source\": HTMLAnchorElement /* Repository information */\n \"tabs\": HTMLElement /* Navigation tabs */\n \"toc\": HTMLElement /* Table of contents */\n \"top\": HTMLAnchorElement /* Back-to-top button */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve the element for a given component or throw a reference error\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Element\n */\nexport function getComponentElement(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T] {\n return getElement(`[data-md-component=${type}]`, node)\n}\n\n/**\n * Retrieve all elements for a given component\n *\n * @template T - Component type\n *\n * @param type - Component type\n * @param node - Node of reference\n *\n * @returns Elements\n */\nexport function getComponentElements(\n type: T, node: ParentNode = document\n): ComponentTypeMap[T][] {\n return getElements(`[data-md-component=${type}]`, node)\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n fromEvent,\n map,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Announcement bar\n */\nexport interface Announce {\n hash: number /* Content hash */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar observable\n */\nexport function watchAnnounce(\n el: HTMLElement\n): Observable {\n const button = getElement(\".md-typeset > :first-child\", el)\n return fromEvent(button, \"click\", { once: true })\n .pipe(\n map(() => getElement(\".md-typeset\", el)),\n map(content => ({ hash: __md_hash(content.innerHTML) }))\n )\n}\n\n/**\n * Mount announcement bar\n *\n * @param el - Announcement bar element\n *\n * @returns Announcement bar component observable\n */\nexport function mountAnnounce(\n el: HTMLElement\n): Observable> {\n if (!feature(\"announce.dismiss\") || !el.childElementCount)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n startWith({ hash: __md_get(\"__announce\") })\n )\n .subscribe(({ hash }) => {\n if (hash && hash === (__md_get(\"__announce\") ?? hash)) {\n el.hidden = true\n\n /* Persist preference in local storage */\n __md_set(\"__announce\", hash)\n }\n })\n\n /* Create and return component */\n return watchAnnounce(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Consent\n */\nexport interface Consent {\n hidden: boolean /* Consent is hidden */\n}\n\n/**\n * Consent defaults\n */\nexport interface ConsentDefaults {\n analytics?: boolean /* Consent for Analytics */\n github?: boolean /* Consent for GitHub */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent observable\n */\nexport function watchConsent(\n el: HTMLElement, { target$ }: WatchOptions\n): Observable {\n return target$\n .pipe(\n map(target => ({ hidden: target !== el }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount consent\n *\n * @param el - Consent element\n * @param options - Options\n *\n * @returns Consent component observable\n */\nexport function mountConsent(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const internal$ = new Subject()\n internal$.subscribe(({ hidden }) => {\n el.hidden = hidden\n })\n\n /* Create and return component */\n return watchConsent(el, options)\n .pipe(\n tap(state => internal$.next(state)),\n finalize(() => internal$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n mergeWith,\n switchMap,\n take,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n getElementContentSize,\n watchElementSize,\n watchElementVisibility\n} from \"~/browser\"\nimport { renderClipboardButton } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotationList\n} from \"../../annotation\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Code block\n */\nexport interface CodeBlock {\n scrollable: boolean /* Code block overflows */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Global sequence number for code blocks\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find candidate list element directly following a code block\n *\n * @param el - Code block element\n *\n * @returns List element or nothing\n */\nfunction findCandidateList(el: HTMLElement): HTMLElement | undefined {\n if (el.nextElementSibling) {\n const sibling = el.nextElementSibling as HTMLElement\n if (sibling.tagName === \"OL\")\n return sibling\n\n /* Skip empty paragraphs - see https://bit.ly/3r4ZJ2O */\n else if (sibling.tagName === \"P\" && !sibling.children.length)\n return findCandidateList(sibling)\n }\n\n /* Everything else */\n return undefined\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch code block\n *\n * This function monitors size changes of the viewport, as well as switches of\n * content tabs with embedded code blocks, as both may trigger overflow.\n *\n * @param el - Code block element\n *\n * @returns Code block observable\n */\nexport function watchCodeBlock(\n el: HTMLElement\n): Observable {\n return watchElementSize(el)\n .pipe(\n map(({ width }) => {\n const content = getElementContentSize(el)\n return {\n scrollable: content.width > width\n }\n }),\n distinctUntilKeyChanged(\"scrollable\")\n )\n}\n\n/**\n * Mount code block\n *\n * This function ensures that an overflowing code block is focusable through\n * keyboard, so it can be scrolled without a mouse to improve on accessibility.\n * Furthermore, if code annotations are enabled, they are mounted if and only\n * if the code block is currently visible, e.g., not in a hidden content tab.\n *\n * Note that code blocks may be mounted eagerly or lazily. If they're mounted\n * lazily (on first visibility), code annotation anchor links will not work,\n * as they are evaluated on initial page load, and code annotations in general\n * might feel a little bumpier.\n *\n * @param el - Code block element\n * @param options - Options\n *\n * @returns Code block and annotation component observable\n */\nexport function mountCodeBlock(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const { matches: hover } = matchMedia(\"(hover)\")\n\n /* Defer mounting of code block - see https://bit.ly/3vHVoVD */\n const factory$ = defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ scrollable }) => {\n if (scrollable && hover)\n el.setAttribute(\"tabindex\", \"0\")\n else\n el.removeAttribute(\"tabindex\")\n })\n\n /* Render button for Clipboard.js integration */\n if (ClipboardJS.isSupported()) {\n const parent = el.closest(\"pre\")!\n parent.id = `__code_${++sequence}`\n parent.insertBefore(\n renderClipboardButton(parent.id),\n el\n )\n }\n\n /* Handle code annotations */\n const container = el.closest(\".highlight\")\n if (container instanceof HTMLElement) {\n const list = findCandidateList(container)\n\n /* Mount code annotations, if enabled */\n if (typeof list !== \"undefined\" && (\n container.classList.contains(\"annotate\") ||\n feature(\"content.code.annotate\")\n )) {\n const annotations$ = mountAnnotationList(list, el, options)\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n mergeWith(\n watchElementSize(container)\n .pipe(\n map(({ width, height }) => width && height),\n distinctUntilChanged(),\n switchMap(active => active ? annotations$ : EMPTY)\n )\n )\n )\n }\n }\n\n /* Create and return component */\n return watchCodeBlock(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n\n /* Mount code block lazily */\n if (feature(\"content.lazy\"))\n return watchElementVisibility(el)\n .pipe(\n filter(visible => visible),\n take(1),\n switchMap(() => factory$)\n )\n\n /* Mount code block */\n return factory$\n}\n", "/*\n * Copyright (c) 2016-2021 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a tooltip\n *\n * @param id - Tooltip identifier\n *\n * @returns Element\n */\nexport function renderTooltip(id?: string): HTMLElement {\n return (\n
\n
\n
\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\nimport { renderTooltip } from \"../tooltip\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render an annotation\n *\n * @param id - Annotation identifier\n * @param prefix - Tooltip identifier prefix\n *\n * @returns Element\n */\nexport function renderAnnotation(\n id: string | number, prefix?: string\n): HTMLElement {\n prefix = prefix ? `${prefix}_annotation_${id}` : undefined\n\n /* Render tooltip with anchor, if given */\n if (prefix) {\n const anchor = prefix ? `#${prefix}` : undefined\n return (\n \n )\n } else {\n return (\n \n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @returns Element\n */\nexport function renderClipboardButton(id: string): HTMLElement {\n return (\n code`}\n >\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ComponentChild } from \"preact\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport {\n SearchDocument,\n SearchMetadata,\n SearchResultItem\n} from \"~/integrations/search\"\nimport { h, truncate } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Render flag\n */\nconst enum Flag {\n TEASER = 1, /* Render teaser */\n PARENT = 2 /* Render as parent */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper function\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search document\n *\n * @param document - Search document\n * @param flag - Render flags\n *\n * @returns Element\n */\nfunction renderSearchDocument(\n document: SearchDocument & SearchMetadata, flag: Flag\n): HTMLElement {\n const parent = flag & Flag.PARENT\n const teaser = flag & Flag.TEASER\n\n /* Render missing query terms */\n const missing = Object.keys(document.terms)\n .filter(key => !document.terms[key])\n .reduce((list, key) => [\n ...list, {key}, \" \"\n ], [])\n .slice(0, -1)\n\n /* Assemble query string for highlighting */\n const url = new URL(document.location)\n if (feature(\"search.highlight\"))\n url.searchParams.set(\"h\", Object.entries(document.terms)\n .filter(([, match]) => match)\n .reduce((highlight, [value]) => `${highlight} ${value}`.trim(), \"\")\n )\n\n /* Render article or section, depending on flags */\n const { tags } = configuration()\n return (\n \n \n {parent > 0 &&
}\n

{document.title}

\n {teaser > 0 && document.text.length > 0 &&\n

\n {truncate(document.text, 320)}\n

\n }\n {document.tags && (\n
\n {document.tags.map(tag => {\n const id = tag.replace(/<[^>]+>/g, \"\")\n const type = tags\n ? id in tags\n ? `md-tag-icon md-tag-icon--${tags[id]}`\n : \"md-tag-icon\"\n : \"\"\n return (\n {tag}\n )\n })}\n
\n )}\n {teaser > 0 && missing.length > 0 &&\n

\n {translation(\"search.result.term.missing\")}: {...missing}\n

\n }\n \n
\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @returns Element\n */\nexport function renderSearchResultItem(\n result: SearchResultItem\n): HTMLElement {\n const threshold = result[0].score\n const docs = [...result]\n\n /* Find and extract parent article */\n const parent = docs.findIndex(doc => !doc.location.includes(\"#\"))\n const [article] = docs.splice(parent, 1)\n\n /* Determine last index above threshold */\n let index = docs.findIndex(doc => doc.score < threshold)\n if (index === -1)\n index = docs.length\n\n /* Partition sections */\n const best = docs.slice(0, index)\n const more = docs.slice(index)\n\n /* Render children */\n const children = [\n renderSearchDocument(article, Flag.PARENT | +(!parent && index === 0)),\n ...best.map(section => renderSearchDocument(section, Flag.TEASER)),\n ...more.length ? [\n
\n \n {more.length > 0 && more.length === 1\n ? translation(\"search.result.more.one\")\n : translation(\"search.result.more.other\", more.length)\n }\n \n {...more.map(section => renderSearchDocument(section, Flag.TEASER))}\n
\n ] : []\n ]\n\n /* Render search result */\n return (\n
  • \n {children}\n
  • \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"~/components\"\nimport { h, round } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render repository facts\n *\n * @param facts - Repository facts\n *\n * @returns Element\n */\nexport function renderSourceFacts(facts: SourceFacts): HTMLElement {\n return (\n
      \n {Object.entries(facts).map(([key, value]) => (\n
    • \n {typeof value === \"number\" ? round(value) : value}\n
    • \n ))}\n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabbed control type\n */\ntype TabbedControlType =\n | \"prev\"\n | \"next\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render control for content tabs\n *\n * @param type - Control type\n *\n * @returns Element\n */\nexport function renderTabbedControl(\n type: TabbedControlType\n): HTMLElement {\n const classes = `tabbed-control tabbed-control--${type}`\n return (\n \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @returns Element\n */\nexport function renderTable(table: HTMLElement): HTMLElement {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { configuration, translation } from \"~/_\"\nimport { h } from \"~/utilities\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Version\n */\nexport interface Version {\n version: string /* Version identifier */\n title: string /* Version title */\n aliases: string[] /* Version aliases */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version\n *\n * @param version - Version\n *\n * @returns Element\n */\nfunction renderVersion(version: Version): HTMLElement {\n const config = configuration()\n\n /* Ensure trailing slash - see https://bit.ly/3rL5u3f */\n const url = new URL(`../${version.version}/`, config.base)\n return (\n
  • \n \n {version.title}\n \n
  • \n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a version selector\n *\n * @param versions - Versions\n * @param active - Active version\n *\n * @returns Element\n */\nexport function renderVersionSelector(\n versions: Version[], active: Version\n): HTMLElement {\n return (\n
    \n \n {active.title}\n \n
      \n {versions.map(renderVersion)}\n
    \n
    \n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n debounceTime,\n defer,\n delay,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n switchMap,\n take,\n takeLast,\n takeUntil,\n tap,\n throttleTime,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n ElementOffset,\n getActiveElement,\n getElementSize,\n watchElementContentOffset,\n watchElementFocus,\n watchElementOffset,\n watchElementVisibility\n} from \"~/browser\"\n\nimport { Component } from \"../../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Annotation\n */\nexport interface Annotation {\n active: boolean /* Annotation is active */\n offset: ElementOffset /* Annotation offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n *\n * @returns Annotation observable\n */\nexport function watchAnnotation(\n el: HTMLElement, container: HTMLElement\n): Observable {\n const offset$ = defer(() => combineLatest([\n watchElementOffset(el),\n watchElementContentOffset(container)\n ]))\n .pipe(\n map(([{ x, y }, scroll]): ElementOffset => {\n const { width, height } = getElementSize(el)\n return ({\n x: x - scroll.x + width / 2,\n y: y - scroll.y + height / 2\n })\n })\n )\n\n /* Actively watch annotation on focus */\n return watchElementFocus(el)\n .pipe(\n switchMap(active => offset$\n .pipe(\n map(offset => ({ active, offset })),\n take(+!active || Infinity)\n )\n )\n )\n}\n\n/**\n * Mount annotation\n *\n * @param el - Annotation element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotation(\n el: HTMLElement, container: HTMLElement, { target$ }: MountOptions\n): Observable> {\n const [tooltip, index] = Array.from(el.children)\n\n /* Mount component on subscription */\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ offset }) {\n el.style.setProperty(\"--md-tooltip-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-tooltip-y\", `${offset.y}px`)\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-x\")\n el.style.removeProperty(\"--md-tooltip-y\")\n }\n })\n\n /* Start animation only when annotation is visible */\n watchElementVisibility(el)\n .pipe(\n takeUntil(done$)\n )\n .subscribe(visible => {\n el.toggleAttribute(\"data-md-visible\", visible)\n })\n\n /* Toggle tooltip presence to mitigate empty lines when copying */\n merge(\n push$.pipe(filter(({ active }) => active)),\n push$.pipe(debounceTime(250), filter(({ active }) => !active))\n )\n .subscribe({\n\n /* Handle emission */\n next({ active }) {\n if (active)\n el.prepend(tooltip)\n else\n tooltip.remove()\n },\n\n /* Handle complete */\n complete() {\n el.prepend(tooltip)\n }\n })\n\n /* Toggle tooltip visibility */\n push$\n .pipe(\n auditTime(16, animationFrameScheduler)\n )\n .subscribe(({ active }) => {\n tooltip.classList.toggle(\"md-tooltip--active\", active)\n })\n\n /* Track relative origin of tooltip */\n push$\n .pipe(\n throttleTime(125, animationFrameScheduler),\n filter(() => !!el.offsetParent),\n map(() => el.offsetParent!.getBoundingClientRect()),\n map(({ x }) => x)\n )\n .subscribe({\n\n /* Handle emission */\n next(origin) {\n if (origin)\n el.style.setProperty(\"--md-tooltip-0\", `${-origin}px`)\n else\n el.style.removeProperty(\"--md-tooltip-0\")\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-tooltip-0\")\n }\n })\n\n /* Allow to copy link without scrolling to anchor */\n fromEvent(index, \"click\")\n .pipe(\n takeUntil(done$),\n filter(ev => !(ev.metaKey || ev.ctrlKey))\n )\n .subscribe(ev => ev.preventDefault())\n\n /* Allow to open link in new tab or blur on close */\n fromEvent(index, \"mousedown\")\n .pipe(\n takeUntil(done$),\n withLatestFrom(push$)\n )\n .subscribe(([ev, { active }]) => {\n\n /* Open in new tab */\n if (ev.button !== 0 || ev.metaKey || ev.ctrlKey) {\n ev.preventDefault()\n\n /* Close annotation */\n } else if (active) {\n ev.preventDefault()\n\n /* Focus parent annotation, if any */\n const parent = el.parentElement!.closest(\".md-annotation\")\n if (parent instanceof HTMLElement)\n parent.focus()\n else\n getActiveElement()?.blur()\n }\n })\n\n /* Open and focus annotation on location target */\n target$\n .pipe(\n takeUntil(done$),\n filter(target => target === tooltip),\n delay(125)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchAnnotation(el, container)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n finalize,\n merge,\n share,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport {\n getElement,\n getElements,\n getOptionalElement\n} from \"~/browser\"\nimport { renderAnnotation } from \"~/templates\"\n\nimport { Component } from \"../../../_\"\nimport {\n Annotation,\n mountAnnotation\n} from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Find all annotation markers in the given code block\n *\n * @param container - Containing element\n *\n * @returns Annotation markers\n */\nfunction findAnnotationMarkers(container: HTMLElement): Text[] {\n const markers: Text[] = []\n for (const el of getElements(\".c, .c1, .cm\", container)) {\n const nodes: Text[] = []\n\n /* Find all text nodes in current element */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode())\n nodes.push(node as Text)\n\n /* Find all markers in each text node */\n for (let text of nodes) {\n let match: RegExpExecArray | null\n\n /* Split text at marker and add to list */\n while ((match = /(\\(\\d+\\))(!)?/.exec(text.textContent!))) {\n const [, id, force] = match\n if (typeof force === \"undefined\") {\n const marker = text.splitText(match.index)\n text = marker.splitText(id.length)\n markers.push(marker)\n\n /* Replace entire text with marker */\n } else {\n text.textContent = id\n markers.push(text)\n break\n }\n }\n }\n }\n return markers\n}\n\n/**\n * Swap the child nodes of two elements\n *\n * @param source - Source element\n * @param target - Target element\n */\nfunction swap(source: HTMLElement, target: HTMLElement): void {\n target.append(...Array.from(source.childNodes))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount annotation list\n *\n * This function analyzes the containing code block and checks for markers\n * referring to elements in the given annotation list. If no markers are found,\n * the list is left untouched. Otherwise, list elements are rendered as\n * annotations inside the code block.\n *\n * @param el - Annotation list element\n * @param container - Containing element\n * @param options - Options\n *\n * @returns Annotation component observable\n */\nexport function mountAnnotationList(\n el: HTMLElement, container: HTMLElement, { target$, print$ }: MountOptions\n): Observable> {\n\n /* Compute prefix for tooltip anchors */\n const parent = container.closest(\"[id]\")\n const prefix = parent?.id\n\n /* Find and replace all markers with empty annotations */\n const annotations = new Map()\n for (const marker of findAnnotationMarkers(container)) {\n const [, id] = marker.textContent!.match(/\\((\\d+)\\)/)!\n if (getOptionalElement(`li:nth-child(${id})`, el)) {\n annotations.set(id, renderAnnotation(id, prefix))\n marker.replaceWith(annotations.get(id)!)\n }\n }\n\n /* Keep list if there are no annotations to render */\n if (annotations.size === 0)\n return EMPTY\n\n /* Mount component on subscription */\n return defer(() => {\n const done$ = new Subject()\n\n /* Retrieve container pairs for swapping */\n const pairs: [HTMLElement, HTMLElement][] = []\n for (const [id, annotation] of annotations)\n pairs.push([\n getElement(\".md-typeset\", annotation),\n getElement(`li:nth-child(${id})`, el)\n ])\n\n /* Handle print mode - see https://bit.ly/3rgPdpt */\n print$\n .pipe(\n takeUntil(done$.pipe(takeLast(1)))\n )\n .subscribe(active => {\n el.hidden = !active\n\n /* Show annotations in code block or list (print) */\n for (const [inner, child] of pairs)\n if (!active)\n swap(child, inner)\n else\n swap(inner, child)\n })\n\n /* Create and return component */\n return merge(...[...annotations]\n .map(([, annotation]) => (\n mountAnnotation(annotation, container, { target$ })\n ))\n )\n .pipe(\n finalize(() => done$.complete()),\n share()\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { watchScript } from \"~/browser\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../../_\"\n\nimport themeCSS from \"./index.css\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid diagram\n */\nexport interface Mermaid {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Mermaid instance observable\n */\nlet mermaid$: Observable\n\n/**\n * Global sequence number for diagrams\n */\nlet sequence = 0\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch Mermaid script\n *\n * @returns Mermaid scripts observable\n */\nfunction fetchScripts(): Observable {\n return typeof mermaid === \"undefined\" || mermaid instanceof Element\n ? watchScript(\"https://unpkg.com/mermaid@9.1.7/dist/mermaid.min.js\")\n : of(undefined)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount Mermaid diagram\n *\n * @param el - Code block element\n *\n * @returns Mermaid diagram component observable\n */\nexport function mountMermaid(\n el: HTMLElement\n): Observable> {\n el.classList.remove(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n mermaid$ ||= fetchScripts()\n .pipe(\n tap(() => mermaid.initialize({\n startOnLoad: false,\n themeCSS,\n sequence: {\n actorFontSize: \"16px\", // Hack: mitigate https://bit.ly/3y0NEi3\n messageFontSize: \"16px\",\n noteFontSize: \"16px\"\n }\n })),\n map(() => undefined),\n shareReplay(1)\n )\n\n /* Render diagram */\n mermaid$.subscribe(() => {\n el.classList.add(\"mermaid\") // Hack: mitigate https://bit.ly/3CiN6Du\n const id = `__mermaid_${sequence++}`\n const host = h(\"div\", { class: \"mermaid\" })\n mermaid.mermaidAPI.render(id, el.textContent, (svg: string) => {\n\n /* Create a shadow root and inject diagram */\n const shadow = host.attachShadow({ mode: \"closed\" })\n shadow.innerHTML = svg\n\n /* Replace code block with diagram */\n el.replaceWith(host)\n })\n })\n\n /* Create and return component */\n return mermaid$\n .pipe(\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n filter,\n finalize,\n map,\n merge,\n tap\n} from \"rxjs\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Details\n */\nexport interface Details {\n action: \"open\" | \"close\" /* Details state */\n reveal?: boolean /* Details is revealed */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch details\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details observable\n */\nexport function watchDetails(\n el: HTMLDetailsElement, { target$, print$ }: WatchOptions\n): Observable
    {\n let open = true\n return merge(\n\n /* Open and focus details on location target */\n target$\n .pipe(\n map(target => target.closest(\"details:not([open])\")!),\n filter(details => el === details),\n map(() => ({\n action: \"open\", reveal: true\n }) as Details)\n ),\n\n /* Open details on print and close afterwards */\n print$\n .pipe(\n filter(active => active || !open),\n tap(() => open = el.open),\n map(active => ({\n action: active ? \"open\" : \"close\"\n }) as Details)\n )\n )\n}\n\n/**\n * Mount details\n *\n * This function ensures that `details` tags are opened on anchor jumps and\n * prior to printing, so the whole content of the page is visible.\n *\n * @param el - Details element\n * @param options - Options\n *\n * @returns Details component observable\n */\nexport function mountDetails(\n el: HTMLDetailsElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n push$.subscribe(({ action, reveal }) => {\n el.toggleAttribute(\"open\", action === \"open\")\n if (reveal)\n el.scrollIntoView()\n })\n\n /* Create and return component */\n return watchDetails(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\n\nimport { renderTable } from \"~/templates\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Data table\n */\nexport interface DataTable {}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Sentinel for replacement\n */\nconst sentinel = h(\"table\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount data table\n *\n * This function wraps a data table in another scrollable container, so it can\n * be smoothly scrolled on smaller screen sizes and won't break the layout.\n *\n * @param el - Data table element\n *\n * @returns Data table component observable\n */\nexport function mountDataTable(\n el: HTMLElement\n): Observable> {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n\n /* Create and return component */\n return of({ ref: el })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n asyncScheduler,\n auditTime,\n combineLatest,\n defer,\n finalize,\n fromEvent,\n map,\n merge,\n skip,\n startWith,\n subscribeOn,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContentOffset,\n getElementContentSize,\n getElementOffset,\n getElementSize,\n getElements,\n watchElementContentOffset,\n watchElementSize\n} from \"~/browser\"\nimport { renderTabbedControl } from \"~/templates\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content tabs\n */\nexport interface ContentTabs {\n active: HTMLLabelElement /* Active tab label */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch content tabs\n *\n * @param el - Content tabs element\n *\n * @returns Content tabs observable\n */\nexport function watchContentTabs(\n el: HTMLElement\n): Observable {\n const inputs = getElements(\":scope > input\", el)\n const initial = inputs.find(input => input.checked) || inputs[0]\n return merge(...inputs.map(input => fromEvent(input, \"change\")\n .pipe(\n map(() => getElement(`label[for=\"${input.id}\"]`))\n )\n ))\n .pipe(\n startWith(getElement(`label[for=\"${initial.id}\"]`)),\n map(active => ({ active }))\n )\n}\n\n/**\n * Mount content tabs\n *\n * This function scrolls the active tab into view. While this functionality is\n * provided by browsers as part of `scrollInfoView`, browsers will always also\n * scroll the vertical axis, which we do not want. Thus, we decided to provide\n * this functionality ourselves.\n *\n * @param el - Content tabs element\n * @param options - Options\n *\n * @returns Content tabs component observable\n */\nexport function mountContentTabs(\n el: HTMLElement, { viewport$ }: MountOptions\n): Observable> {\n\n /* Render content tab previous button for pagination */\n const prev = renderTabbedControl(\"prev\")\n el.append(prev)\n\n /* Render content tab next button for pagination */\n const next = renderTabbedControl(\"next\")\n el.append(next)\n\n /* Mount component on subscription */\n const container = getElement(\".tabbed-labels\", el)\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n combineLatest([push$, watchElementSize(el)])\n .pipe(\n auditTime(1, animationFrameScheduler),\n takeUntil(done$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ active }, size]) {\n const offset = getElementOffset(active)\n const { width } = getElementSize(active)\n\n /* Set tab indicator offset and width */\n el.style.setProperty(\"--md-indicator-x\", `${offset.x}px`)\n el.style.setProperty(\"--md-indicator-width\", `${width}px`)\n\n /* Scroll container to active content tab */\n const content = getElementContentOffset(container)\n if (\n offset.x < content.x ||\n offset.x + width > content.x + size.width\n )\n container.scrollTo({\n left: Math.max(0, offset.x - 16),\n behavior: \"smooth\"\n })\n },\n\n /* Handle complete */\n complete() {\n el.style.removeProperty(\"--md-indicator-x\")\n el.style.removeProperty(\"--md-indicator-width\")\n }\n })\n\n /* Hide content tab buttons on borders */\n combineLatest([\n watchElementContentOffset(container),\n watchElementSize(container)\n ])\n .pipe(\n takeUntil(done$)\n )\n .subscribe(([offset, size]) => {\n const content = getElementContentSize(container)\n prev.hidden = offset.x < 16\n next.hidden = offset.x > content.width - size.width - 16\n })\n\n /* Paginate content tab container on click */\n merge(\n fromEvent(prev, \"click\").pipe(map(() => -1)),\n fromEvent(next, \"click\").pipe(map(() => +1))\n )\n .pipe(\n takeUntil(done$)\n )\n .subscribe(direction => {\n const { width } = getElementSize(container)\n container.scrollBy({\n left: width * direction,\n behavior: \"smooth\"\n })\n })\n\n /* Set up linking of content tabs, if enabled */\n if (feature(\"content.tabs.link\"))\n push$.pipe(\n skip(1),\n withLatestFrom(viewport$)\n )\n .subscribe(([{ active }, { offset }]) => {\n const tab = active.innerText.trim()\n if (active.hasAttribute(\"data-md-switching\")) {\n active.removeAttribute(\"data-md-switching\")\n\n /* Determine viewport offset of active tab */\n } else {\n const y = el.offsetTop - offset.y\n\n /* Passively activate other tabs */\n for (const set of getElements(\"[data-tabs]\"))\n for (const input of getElements(\n \":scope > input\", set\n )) {\n const label = getElement(`label[for=\"${input.id}\"]`)\n if (\n label !== active &&\n label.innerText.trim() === tab\n ) {\n label.setAttribute(\"data-md-switching\", \"\")\n input.click()\n break\n }\n }\n\n /* Bring active tab into view */\n window.scrollTo({\n top: el.offsetTop - y\n })\n\n /* Persist active tabs in local storage */\n const tabs = __md_get(\"__tabs\") || []\n __md_set(\"__tabs\", [...new Set([tab, ...tabs])])\n }\n })\n\n /* Create and return component */\n return watchContentTabs(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n .pipe(\n subscribeOn(asyncScheduler)\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, merge } from \"rxjs\"\n\nimport { Viewport, getElements } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Annotation } from \"../annotation\"\nimport {\n CodeBlock,\n Mermaid,\n mountCodeBlock,\n mountMermaid\n} from \"../code\"\nimport {\n Details,\n mountDetails\n} from \"../details\"\nimport {\n DataTable,\n mountDataTable\n} from \"../table\"\nimport {\n ContentTabs,\n mountContentTabs\n} from \"../tabs\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Content\n */\nexport type Content =\n | Annotation\n | ContentTabs\n | CodeBlock\n | Mermaid\n | DataTable\n | Details\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n target$: Observable /* Location target observable */\n print$: Observable /* Media print observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount content\n *\n * This function mounts all components that are found in the content of the\n * actual article, including code blocks, data tables and details.\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Content component observable\n */\nexport function mountContent(\n el: HTMLElement, { viewport$, target$, print$ }: MountOptions\n): Observable> {\n return merge(\n\n /* Code blocks */\n ...getElements(\"pre:not(.mermaid) > code\", el)\n .map(child => mountCodeBlock(child, { target$, print$ })),\n\n /* Mermaid diagrams */\n ...getElements(\"pre.mermaid\", el)\n .map(child => mountMermaid(child)),\n\n /* Data tables */\n ...getElements(\"table:not([class])\", el)\n .map(child => mountDataTable(child)),\n\n /* Details */\n ...getElements(\"details\", el)\n .map(child => mountDetails(child, { target$, print$ })),\n\n /* Content tabs */\n ...getElements(\"[data-tabs]\", el)\n .map(child => mountContentTabs(child, { viewport$ }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n delay,\n finalize,\n map,\n merge,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Dialog\n */\nexport interface Dialog {\n message: string /* Dialog message */\n active: boolean /* Dialog is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n alert$: Subject /* Alert subject */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch dialog\n *\n * @param _el - Dialog element\n * @param options - Options\n *\n * @returns Dialog observable\n */\nexport function watchDialog(\n _el: HTMLElement, { alert$ }: WatchOptions\n): Observable {\n return alert$\n .pipe(\n switchMap(message => merge(\n of(true),\n of(false).pipe(delay(2000))\n )\n .pipe(\n map(active => ({ message, active }))\n )\n )\n )\n}\n\n/**\n * Mount dialog\n *\n * This function reveals the dialog in the right corner when a new alert is\n * emitted through the subject that is passed as part of the options.\n *\n * @param el - Dialog element\n * @param options - Options\n *\n * @returns Dialog component observable\n */\nexport function mountDialog(\n el: HTMLElement, options: MountOptions\n): Observable> {\n const inner = getElement(\".md-typeset\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ message, active }) => {\n el.classList.toggle(\"md-dialog--active\", active)\n inner.textContent = message\n })\n\n /* Create and return component */\n return watchDialog(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n combineLatestWith,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n map,\n of,\n shareReplay,\n startWith,\n switchMap,\n takeLast,\n takeUntil\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchToggle\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n height: number /* Header visible height */\n hidden: boolean /* Header is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute whether the header is hidden\n *\n * If the user scrolls past a certain threshold, the header can be hidden when\n * scrolling down, and shown when scrolling up.\n *\n * @param options - Options\n *\n * @returns Toggle observable\n */\nfunction isHidden({ viewport$ }: WatchOptions): Observable {\n if (!feature(\"header.autohide\"))\n return of(false)\n\n /* Compute direction and turning point */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => [a < b, b] as const),\n distinctUntilKeyChanged(0)\n )\n\n /* Compute whether header should be hidden */\n const hidden$ = combineLatest([viewport$, direction$])\n .pipe(\n filter(([{ offset }, [, y]]) => Math.abs(y - offset.y) > 100),\n map(([, [direction]]) => direction),\n distinctUntilChanged()\n )\n\n /* Compute threshold for hiding */\n const search$ = watchToggle(\"search\")\n return combineLatest([viewport$, search$])\n .pipe(\n map(([{ offset }, search]) => offset.y > 400 && !search),\n distinctUntilChanged(),\n switchMap(active => active ? hidden$ : of(false)),\n startWith(false)\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header observable\n */\nexport function watchHeader(\n el: HTMLElement, options: WatchOptions\n): Observable
    {\n return defer(() => combineLatest([\n watchElementSize(el),\n isHidden(options)\n ]))\n .pipe(\n map(([{ height }, hidden]) => ({\n height,\n hidden\n })),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.hidden === b.hidden\n )),\n shareReplay(1)\n )\n}\n\n/**\n * Mount header\n *\n * This function manages the different states of the header, i.e. whether it's\n * hidden or rendered with a shadow. This depends heavily on the main area.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @returns Header component observable\n */\nexport function mountHeader(\n el: HTMLElement, { header$, main$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject
    ()\n const done$ = push$.pipe(takeLast(1))\n push$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n combineLatestWith(header$)\n )\n .subscribe(([{ active }, { hidden }]) => {\n el.classList.toggle(\"md-header--shadow\", active && !hidden)\n el.hidden = hidden\n })\n\n /* Link to main area */\n main$.subscribe(push$)\n\n /* Create and return component */\n return header$\n .pipe(\n takeUntil(done$),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n tap\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElementSize,\n getOptionalElement,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { Header } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface HeaderTitle {\n active: boolean /* Header title is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header title\n *\n * @param el - Heading element\n * @param options - Options\n *\n * @returns Header title observable\n */\nexport function watchHeaderTitle(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchViewportAt(el, { viewport$, header$ })\n .pipe(\n map(({ offset: { y } }) => {\n const { height } = getElementSize(el)\n return {\n active: y >= height\n }\n }),\n distinctUntilKeyChanged(\"active\")\n )\n}\n\n/**\n * Mount header title\n *\n * This function swaps the header title from the site title to the title of the\n * current page when the user scrolls past the first headline.\n *\n * @param el - Header title element\n * @param options - Options\n *\n * @returns Header title component observable\n */\nexport function mountHeaderTitle(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ active }) => {\n el.classList.toggle(\"md-header__title--active\", active)\n })\n\n /* Obtain headline, if any */\n const heading = getOptionalElement(\"article h1\")\n if (typeof heading === \"undefined\")\n return EMPTY\n\n /* Create and return component */\n return watchHeaderTitle(heading, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n map,\n switchMap\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchElementSize\n} from \"~/browser\"\n\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Main area is active */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @returns Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable
    {\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(({ height }) => height),\n distinctUntilChanged()\n )\n\n /* Compute the main area's top and bottom borders */\n const border$ = adjust$\n .pipe(\n switchMap(() => watchElementSize(el)\n .pipe(\n map(({ height }) => ({\n top: el.offsetTop,\n bottom: el.offsetTop + height\n })),\n distinctUntilKeyChanged(\"bottom\")\n )\n )\n )\n\n /* Compute the main area's offset, visible height and if we scrolled past */\n return combineLatest([adjust$, border$, viewport$])\n .pipe(\n map(([header, { top, bottom }, { offset: { y }, size: { height } }]) => {\n height = Math.max(0, height\n - Math.max(0, top - y, header)\n - Math.max(0, height + y - bottom)\n )\n return {\n offset: top - header,\n height,\n active: top - header <= y\n }\n }),\n distinctUntilChanged((a, b) => (\n a.offset === b.offset &&\n a.height === b.height &&\n a.active === b.active\n ))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n defer,\n finalize,\n fromEvent,\n map,\n mergeMap,\n observeOn,\n of,\n shareReplay,\n startWith,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\nimport { Component } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Palette colors\n */\nexport interface PaletteColor {\n scheme?: string /* Color scheme */\n primary?: string /* Primary color */\n accent?: string /* Accent color */\n}\n\n/**\n * Palette\n */\nexport interface Palette {\n index: number /* Palette index */\n color: PaletteColor /* Palette colors */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch color palette\n *\n * @param inputs - Color palette element\n *\n * @returns Color palette observable\n */\nexport function watchPalette(\n inputs: HTMLInputElement[]\n): Observable {\n const current = __md_get(\"__palette\") || {\n index: inputs.findIndex(input => matchMedia(\n input.getAttribute(\"data-md-color-media\")!\n ).matches)\n }\n\n /* Emit changes in color palette */\n return of(...inputs)\n .pipe(\n mergeMap(input => fromEvent(input, \"change\")\n .pipe(\n map(() => input)\n )\n ),\n startWith(inputs[Math.max(0, current.index)]),\n map(input => ({\n index: inputs.indexOf(input),\n color: {\n scheme: input.getAttribute(\"data-md-color-scheme\"),\n primary: input.getAttribute(\"data-md-color-primary\"),\n accent: input.getAttribute(\"data-md-color-accent\")\n }\n } as Palette)),\n shareReplay(1)\n )\n}\n\n/**\n * Mount color palette\n *\n * @param el - Color palette element\n *\n * @returns Color palette component observable\n */\nexport function mountPalette(\n el: HTMLElement\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(palette => {\n document.body.setAttribute(\"data-md-color-switching\", \"\")\n\n /* Set color palette */\n for (const [key, value] of Object.entries(palette.color))\n document.body.setAttribute(`data-md-color-${key}`, value)\n\n /* Toggle visibility */\n for (let index = 0; index < inputs.length; index++) {\n const label = inputs[index].nextElementSibling\n if (label instanceof HTMLElement)\n label.hidden = palette.index !== index\n }\n\n /* Persist preference in local storage */\n __md_set(\"__palette\", palette)\n })\n\n /* Revert transition durations after color switch */\n push$.pipe(observeOn(asyncScheduler))\n .subscribe(() => {\n document.body.removeAttribute(\"data-md-color-switching\")\n })\n\n /* Create and return component */\n const inputs = getElements(\"input\", el)\n return watchPalette(inputs)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport ClipboardJS from \"clipboard\"\nimport {\n Observable,\n Subject,\n map,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport { getElement } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n alert$: Subject /* Alert subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Extract text to copy\n *\n * @param el - HTML element\n *\n * @returns Extracted text\n */\nfunction extract(el: HTMLElement): string {\n el.setAttribute(\"data-md-copying\", \"\")\n const text = el.innerText\n el.removeAttribute(\"data-md-copying\")\n return text\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up Clipboard.js integration\n *\n * @param options - Options\n */\nexport function setupClipboardJS(\n { alert$ }: SetupOptions\n): void {\n if (ClipboardJS.isSupported()) {\n new Observable(subscriber => {\n new ClipboardJS(\"[data-clipboard-target], [data-clipboard-text]\", {\n text: el => (\n el.getAttribute(\"data-clipboard-text\")! ||\n extract(getElement(\n el.getAttribute(\"data-clipboard-target\")!\n ))\n )\n })\n .on(\"success\", ev => subscriber.next(ev))\n })\n .pipe(\n tap(ev => {\n const trigger = ev.trigger as HTMLElement\n trigger.focus()\n }),\n map(() => translation(\"clipboard.copied\"))\n )\n .subscribe(alert$)\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n of,\n tap\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport { getElements, requestXML } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sitemap, i.e. a list of URLs\n */\nexport type Sitemap = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Preprocess a list of URLs\n *\n * This function replaces the `site_url` in the sitemap with the actual base\n * URL, to allow instant loading to work in occasions like Netlify previews.\n *\n * @param urls - URLs\n *\n * @returns URL path parts\n */\nfunction preprocess(urls: Sitemap): Sitemap {\n if (urls.length < 2)\n return [\"\"]\n\n /* Take the first two URLs and remove everything after the last slash */\n const [root, next] = [...urls]\n .sort((a, b) => a.length - b.length)\n .map(url => url.replace(/[^/]+$/, \"\"))\n\n /* Compute common prefix */\n let index = 0\n if (root === next)\n index = root.length\n else\n while (root.charCodeAt(index) === next.charCodeAt(index))\n index++\n\n /* Remove common prefix and return in original order */\n return urls.map(url => url.replace(root.slice(0, index), \"\"))\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch the sitemap for the given base URL\n *\n * @param base - Base URL\n *\n * @returns Sitemap observable\n */\nexport function fetchSitemap(base?: URL): Observable {\n const cached = __md_get(\"__sitemap\", sessionStorage, base)\n if (cached) {\n return of(cached)\n } else {\n const config = configuration()\n return requestXML(new URL(\"sitemap.xml\", base || config.base))\n .pipe(\n map(sitemap => preprocess(getElements(\"loc\", sitemap)\n .map(node => node.textContent!)\n )),\n catchError(() => EMPTY), // @todo refactor instant loading\n defaultIfEmpty([]),\n tap(sitemap => __md_set(\"__sitemap\", sitemap, sessionStorage, base))\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n NEVER,\n Observable,\n Subject,\n bufferCount,\n catchError,\n concatMap,\n debounceTime,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n fromEvent,\n map,\n merge,\n of,\n sample,\n share,\n skip,\n skipUntil,\n switchMap\n} from \"rxjs\"\n\nimport { configuration, feature } from \"~/_\"\nimport {\n Viewport,\n ViewportOffset,\n getElements,\n getOptionalElement,\n request,\n setLocation,\n setLocationHash\n} from \"~/browser\"\nimport { getComponentElement } from \"~/components\"\nimport { h } from \"~/utilities\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * History state\n */\nexport interface HistoryState {\n url: URL /* State URL */\n offset?: ViewportOffset /* State viewport offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n location$: Subject /* Location subject */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up instant loading\n *\n * When fetching, theoretically, we could use `responseType: \"document\"`, but\n * since all MkDocs links are relative, we need to make sure that the current\n * location matches the document we just loaded. Otherwise any relative links\n * in the document could use the old location.\n *\n * This is the reason why we need to synchronize history events and the process\n * of fetching the document for navigation changes (except `popstate` events):\n *\n * 1. Fetch document via `XMLHTTPRequest`\n * 2. Set new location via `history.pushState`\n * 3. Parse and emit fetched document\n *\n * For `popstate` events, we must not use `history.pushState`, or the forward\n * history will be irreversibly overwritten. In case the request fails, the\n * location change is dispatched regularly.\n *\n * @param options - Options\n */\nexport function setupInstantLoading(\n { document$, location$, viewport$ }: SetupOptions\n): void {\n const config = configuration()\n if (location.protocol === \"file:\")\n return\n\n /* Disable automatic scroll restoration */\n if (\"scrollRestoration\" in history) {\n history.scrollRestoration = \"manual\"\n\n /* Hack: ensure that reloads restore viewport offset */\n fromEvent(window, \"beforeunload\")\n .subscribe(() => {\n history.scrollRestoration = \"auto\"\n })\n }\n\n /* Hack: ensure absolute favicon link to omit 404s when switching */\n const favicon = getOptionalElement(\"link[rel=icon]\")\n if (typeof favicon !== \"undefined\")\n favicon.href = favicon.href\n\n /* Intercept internal navigation */\n const push$ = fetchSitemap()\n .pipe(\n map(paths => paths.map(path => `${new URL(path, config.base)}`)),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n switchMap(ev => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target) {\n const url = new URL(el.href)\n\n /* Canonicalize URL */\n url.search = \"\"\n url.hash = \"\"\n\n /* Check if URL should be intercepted */\n if (\n url.pathname !== location.pathname &&\n urls.includes(url.toString())\n ) {\n ev.preventDefault()\n return of({\n url: new URL(el.href)\n })\n }\n }\n }\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Intercept history back and forward */\n const pop$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n offset: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(push$, pop$)\n .pipe(\n distinctUntilChanged((a, b) => a.url.href === b.url.href),\n map(({ url }) => url)\n )\n .subscribe(location$)\n\n /* Fetch document via `XMLHTTPRequest` */\n const response$ = location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n switchMap(url => request(url.href)\n .pipe(\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n\n /* Set new location via `history.pushState` */\n push$\n .pipe(\n sample(response$)\n )\n .subscribe(({ url }) => {\n history.pushState({}, \"\", `${url}`)\n })\n\n /* Parse and emit fetched document */\n const dom = new DOMParser()\n response$\n .pipe(\n switchMap(res => res.text()),\n map(res => dom.parseFromString(res, \"text/html\"))\n )\n .subscribe(document$)\n\n /* Replace meta tags and components */\n document$\n .pipe(\n skip(1)\n )\n .subscribe(replacement => {\n for (const selector of [\n\n /* Meta tags */\n \"title\",\n \"link[rel=canonical]\",\n \"meta[name=author]\",\n \"meta[name=description]\",\n\n /* Components */\n \"[data-md-component=announce]\",\n \"[data-md-component=container]\",\n \"[data-md-component=header-topic]\",\n \"[data-md-component=outdated]\",\n \"[data-md-component=logo]\",\n \"[data-md-component=skip]\",\n ...feature(\"navigation.tabs.sticky\")\n ? [\"[data-md-component=tabs]\"]\n : []\n ]) {\n const source = getOptionalElement(selector)\n const target = getOptionalElement(selector, replacement)\n if (\n typeof source !== \"undefined\" &&\n typeof target !== \"undefined\"\n ) {\n source.replaceWith(target)\n }\n }\n })\n\n /* Re-evaluate scripts */\n document$\n .pipe(\n skip(1),\n map(() => getComponentElement(\"container\")),\n switchMap(el => getElements(\"script\", el)),\n concatMap(el => {\n const script = h(\"script\")\n if (el.src) {\n for (const name of el.getAttributeNames())\n script.setAttribute(name, el.getAttribute(name)!)\n el.replaceWith(script)\n\n /* Complete when script is loaded */\n return new Observable(observer => {\n script.onload = () => observer.complete()\n })\n\n /* Complete immediately */\n } else {\n script.textContent = el.textContent\n el.replaceWith(script)\n return EMPTY\n }\n })\n )\n .subscribe()\n\n /* Emit history state change */\n merge(push$, pop$)\n .pipe(\n sample(document$)\n )\n .subscribe(({ url, offset }) => {\n if (url.hash && !offset) {\n setLocationHash(url.hash)\n } else {\n window.scrollTo(0, offset?.y || 0)\n }\n })\n\n /* Debounce update of viewport offset */\n viewport$\n .pipe(\n skipUntil(push$),\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\")\n )\n .subscribe(({ offset }) => {\n history.replaceState(offset, \"\")\n })\n\n /* Set viewport offset from history */\n merge(push$, pop$)\n .pipe(\n bufferCount(2, 1),\n filter(([a, b]) => a.url.pathname === b.url.pathname),\n map(([, state]) => state)\n )\n .subscribe(({ offset }) => {\n window.scrollTo(0, offset?.y || 0)\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search transformation function\n *\n * @param value - Query value\n *\n * @returns Transformed query value\n */\nexport type SearchTransformFn = (value: string) => string\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * 1. Search for terms in quotation marks and prepend a `+` modifier to denote\n * that the resulting document must contain all terms, converting the query\n * to an `AND` query (as opposed to the default `OR` behavior). While users\n * may expect terms enclosed in quotation marks to map to span queries, i.e.\n * for which order is important, Lunr.js doesn't support them, so the best\n * we can do is to convert the terms to an `AND` query.\n *\n * 2. Replace control characters which are not located at the beginning of the\n * query or preceded by white space, or are not followed by a non-whitespace\n * character or are at the end of the query string. Furthermore, filter\n * unmatched quotation marks.\n *\n * 3. Trim excess whitespace from left and right.\n *\n * @param query - Query value\n *\n * @returns Transformed query value\n */\nexport function defaultTransform(query: string): string {\n return query\n .split(/\"([^\"]+)\"/g) /* => 1 */\n .map((terms, index) => index & 1\n ? terms.replace(/^\\b|^(?![^\\x00-\\x7F]|$)|\\s+/g, \" +\")\n : terms\n )\n .join(\"\")\n .replace(/\"|(?:^|\\s+)[*+\\-:^~]+(?=\\s+|$)/g, \"\") /* => 2 */\n .trim() /* => 3 */\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndex, SearchResult } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n READY, /* Search index ready */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndex /* Message data */\n}\n\n/**\n * Message indicating the search index is ready\n */\nexport interface SearchReadyMessage {\n type: SearchMessageType.READY /* Message type */\n}\n\n/**\n * Message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * Message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchReadyMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search ready messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchReadyMessage(\n message: SearchMessage\n): message is SearchReadyMessage {\n return message.type === SearchMessageType.READY\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @returns Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ObservableInput,\n Subject,\n from,\n map,\n share\n} from \"rxjs\"\n\nimport { configuration, feature, translation } from \"~/_\"\nimport { WorkerHandler, watchWorker } from \"~/browser\"\n\nimport { SearchIndex } from \"../../_\"\nimport {\n SearchOptions,\n SearchPipeline\n} from \"../../options\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search worker\n */\nexport type SearchWorker = WorkerHandler\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search index\n *\n * @param data - Search index\n *\n * @returns Search index\n */\nfunction setupSearchIndex({ config, docs }: SearchIndex): SearchIndex {\n\n /* Override default language with value from translation */\n if (config.lang.length === 1 && config.lang[0] === \"en\")\n config.lang = [\n translation(\"search.config.lang\")\n ]\n\n /* Override default separator with value from translation */\n if (config.separator === \"[\\\\s\\\\-]+\")\n config.separator = translation(\"search.config.separator\")\n\n /* Set pipeline from translation */\n const pipeline = translation(\"search.config.pipeline\")\n .split(/\\s*,\\s*/)\n .filter(Boolean) as SearchPipeline\n\n /* Determine search options */\n const options: SearchOptions = {\n pipeline,\n suggestions: feature(\"search.suggest\")\n }\n\n /* Return search index after defaulting */\n return { config, docs, options }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up search worker\n *\n * This function creates a web worker to set up and query the search index,\n * which is done using Lunr.js. The index must be passed as an observable to\n * enable hacks like _localsearch_ via search index embedding as JSON.\n *\n * @param url - Worker URL\n * @param index - Search index observable input\n *\n * @returns Search worker\n */\nexport function setupSearchWorker(\n url: string, index: ObservableInput\n): SearchWorker {\n const config = configuration()\n const worker = new Worker(url)\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n map(message => {\n if (isSearchResultMessage(message)) {\n for (const result of message.data.items)\n for (const document of result)\n document.location = `${new URL(document.location, config.base)}`\n }\n return message\n }),\n share()\n )\n\n /* Set up search index */\n from(index)\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data: setupSearchIndex(data)\n } as SearchSetupMessage))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return search worker */\n return { tx$, rx$ }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Subject,\n catchError,\n combineLatest,\n filter,\n fromEvent,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n getElement,\n getLocation,\n requestJSON,\n setLocation\n} from \"~/browser\"\nimport { getComponentElements } from \"~/components\"\nimport {\n Version,\n renderVersionSelector\n} from \"~/templates\"\n\nimport { fetchSitemap } from \"../sitemap\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Subject /* Document subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set up version selector\n *\n * @param options - Options\n */\nexport function setupVersionSelector(\n { document$ }: SetupOptions\n): void {\n const config = configuration()\n const versions$ = requestJSON(\n new URL(\"../versions.json\", config.base)\n )\n .pipe(\n catchError(() => EMPTY) // @todo refactor instant loading\n )\n\n /* Determine current version */\n const current$ = versions$\n .pipe(\n map(versions => {\n const [, current] = config.base.match(/([^/]+)\\/?$/)!\n return versions.find(({ version, aliases }) => (\n version === current || aliases.includes(current)\n )) || versions[0]\n })\n )\n\n /* Intercept inter-version navigation */\n versions$\n .pipe(\n map(versions => new Map(versions.map(version => [\n `${new URL(`../${version.version}/`, config.base)}`,\n version\n ]))),\n switchMap(urls => fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !ev.metaKey && !ev.ctrlKey),\n withLatestFrom(current$),\n switchMap(([ev, current]) => {\n if (ev.target instanceof Element) {\n const el = ev.target.closest(\"a\")\n if (el && !el.target && urls.has(el.href)) {\n const url = el.href\n // This is a temporary hack to detect if a version inside the\n // version selector or on another part of the site was clicked.\n // If we're inside the version selector, we definitely want to\n // find the same page, as we might have different deployments\n // due to aliases. However, if we're outside the version\n // selector, we must abort here, because we might otherwise\n // interfere with instant loading. We need to refactor this\n // at some point together with instant loading.\n //\n // See https://github.com/squidfunk/mkdocs-material/issues/4012\n if (!ev.target.closest(\".md-version\")) {\n const version = urls.get(url)!\n if (version === current)\n return EMPTY\n }\n ev.preventDefault()\n return of(url)\n }\n }\n return EMPTY\n }),\n switchMap(url => {\n const { version } = urls.get(url)!\n return fetchSitemap(new URL(url))\n .pipe(\n map(sitemap => {\n const location = getLocation()\n const path = location.href.replace(config.base, \"\")\n return sitemap.includes(path.split(\"#\")[0])\n ? new URL(`../${version}/${path}`, config.base)\n : new URL(url)\n })\n )\n })\n )\n )\n )\n .subscribe(url => setLocation(url))\n\n /* Render version selector and warning */\n combineLatest([versions$, current$])\n .subscribe(([versions, current]) => {\n const topic = getElement(\".md-header__topic\")\n topic.appendChild(renderVersionSelector(versions, current))\n })\n\n /* Integrate outdated version banner with instant loading */\n document$.pipe(switchMap(() => current$))\n .subscribe(current => {\n\n /* Check if version state was already determined */\n let outdated = __md_get(\"__outdated\", sessionStorage)\n if (outdated === null) {\n const latest = config.version?.default || \"latest\"\n outdated = !current.aliases.includes(latest)\n\n /* Persist version state in session storage */\n __md_set(\"__outdated\", outdated, sessionStorage)\n }\n\n /* Unhide outdated version banner */\n if (outdated)\n for (const warning of getComponentElements(\"outdated\"))\n warning.hidden = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n combineLatest,\n delay,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n share,\n shareReplay,\n startWith,\n take,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getLocation,\n setToggle,\n watchElementFocus,\n watchToggle\n} from \"~/browser\"\nimport {\n SearchMessageType,\n SearchQueryMessage,\n SearchWorker,\n defaultTransform,\n isSearchReadyMessage\n} from \"~/integrations\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { rx$ }: SearchWorker\n): Observable {\n const fn = __search?.transform || defaultTransform\n\n /* Immediately show search dialog */\n const { searchParams } = getLocation()\n if (searchParams.has(\"q\"))\n setToggle(\"search\", true)\n\n /* Intercept query parameter (deep link) */\n const param$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1),\n map(() => searchParams.get(\"q\") || \"\")\n )\n\n /* Remove query parameter when search is closed */\n watchToggle(\"search\")\n .pipe(\n filter(active => !active),\n take(1)\n )\n .subscribe(() => {\n const url = new URL(location.href)\n url.searchParams.delete(\"q\")\n history.replaceState({}, \"\", `${url}`)\n })\n\n /* Set query from parameter */\n param$.subscribe(value => { // TODO: not ideal - find a better way\n if (value) {\n el.value = value\n el.focus()\n }\n })\n\n /* Intercept focus and input events */\n const focus$ = watchElementFocus(el)\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1)),\n param$\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(\"\"),\n distinctUntilChanged(),\n )\n\n /* Combine into single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount search query\n *\n * @param el - Search query element\n * @param worker - Search worker\n *\n * @returns Search query component observable\n */\nexport function mountSearchQuery(\n el: HTMLInputElement, { tx$, rx$ }: SearchWorker\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n\n /* Handle value changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }): SearchQueryMessage => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Handle focus changes */\n push$\n .pipe(\n distinctUntilKeyChanged(\"focus\")\n )\n .subscribe(({ focus }) => {\n if (focus) {\n setToggle(\"search\", focus)\n el.placeholder = \"\"\n } else {\n el.placeholder = translation(\"search.placeholder\")\n }\n })\n\n /* Handle reset */\n fromEvent(el.form!, \"reset\")\n .pipe(\n takeUntil(done$)\n )\n .subscribe(() => el.focus())\n\n /* Create and return component */\n return watchSearchQuery(el, { tx$, rx$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state })),\n share()\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n filter,\n finalize,\n map,\n merge,\n of,\n skipUntil,\n switchMap,\n take,\n tap,\n withLatestFrom,\n zipWith\n} from \"rxjs\"\n\nimport { translation } from \"~/_\"\nimport {\n getElement,\n watchElementBoundary\n} from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchReadyMessage,\n isSearchResultMessage\n} from \"~/integrations\"\nimport { renderSearchResultItem } from \"~/templates\"\nimport { round } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result list\n *\n * This function performs a lazy rendering of the search results, depending on\n * the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchResult(\n el: HTMLElement, { rx$ }: SearchWorker, { query$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const boundary$ = watchElementBoundary(el.parentElement!)\n .pipe(\n filter(Boolean)\n )\n\n /* Retrieve nested components */\n const meta = getElement(\":scope > :first-child\", el)\n const list = getElement(\":scope > :last-child\", el)\n\n /* Wait until search is ready */\n const ready$ = rx$\n .pipe(\n filter(isSearchReadyMessage),\n take(1)\n )\n\n /* Update search result metadata */\n push$\n .pipe(\n withLatestFrom(query$),\n skipUntil(ready$)\n )\n .subscribe(([{ items }, { value }]) => {\n if (value) {\n switch (items.length) {\n\n /* No results */\n case 0:\n meta.textContent = translation(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n meta.textContent = translation(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n meta.textContent = translation(\n \"search.result.other\",\n round(items.length)\n )\n }\n } else {\n meta.textContent = translation(\"search.result.placeholder\")\n }\n })\n\n /* Update search result list */\n push$\n .pipe(\n tap(() => list.innerHTML = \"\"),\n switchMap(({ items }) => merge(\n of(...items.slice(0, 10)),\n of(...items.slice(10))\n .pipe(\n bufferCount(4),\n zipWith(boundary$),\n switchMap(([chunk]) => chunk)\n )\n ))\n )\n .subscribe(result => list.appendChild(\n renderSearchResultItem(result)\n ))\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n finalize,\n fromEvent,\n map,\n tap\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\n\nimport { Component } from \"../../_\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search sharing\n */\nexport interface SearchShare {\n url: URL /* Deep link for sharing */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n query$: Observable /* Search query observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search sharing\n *\n * @param _el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing observable\n */\nexport function watchSearchShare(\n _el: HTMLElement, { query$ }: WatchOptions\n): Observable {\n return query$\n .pipe(\n map(({ value }) => {\n const url = getLocation()\n url.hash = \"\"\n url.searchParams.delete(\"h\")\n url.searchParams.set(\"q\", value)\n return { url }\n })\n )\n}\n\n/**\n * Mount search sharing\n *\n * @param el - Search sharing element\n * @param options - Options\n *\n * @returns Search sharing component observable\n */\nexport function mountSearchShare(\n el: HTMLAnchorElement, options: MountOptions\n): Observable> {\n const push$ = new Subject()\n push$.subscribe(({ url }) => {\n el.setAttribute(\"data-clipboard-text\", el.href)\n el.href = `${url}`\n })\n\n /* Prevent following of link */\n fromEvent(el, \"click\")\n .subscribe(ev => ev.preventDefault())\n\n /* Create and return component */\n return watchSearchShare(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n asyncScheduler,\n combineLatestWith,\n distinctUntilChanged,\n filter,\n finalize,\n fromEvent,\n map,\n merge,\n observeOn,\n tap\n} from \"rxjs\"\n\nimport { Keyboard } from \"~/browser\"\nimport {\n SearchResult,\n SearchWorker,\n isSearchResultMessage\n} from \"~/integrations\"\n\nimport { Component, getComponentElement } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search suggestions\n */\nexport interface SearchSuggest {}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search suggestions\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container.\n *\n * @param el - Search result list element\n * @param worker - Search worker\n * @param options - Options\n *\n * @returns Search result list component observable\n */\nexport function mountSearchSuggest(\n el: HTMLElement, { rx$ }: SearchWorker, { keyboard$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n\n /* Retrieve query component and track all changes */\n const query = getComponentElement(\"search-query\")\n const query$ = merge(\n fromEvent(query, \"keydown\"),\n fromEvent(query, \"focus\")\n )\n .pipe(\n observeOn(asyncScheduler),\n map(() => query.value),\n distinctUntilChanged(),\n )\n\n /* Update search suggestions */\n push$\n .pipe(\n combineLatestWith(query$),\n map(([{ suggestions }, value]) => {\n const words = value.split(/([\\s-]+)/)\n if (suggestions?.length && words[words.length - 1]) {\n const last = suggestions[suggestions.length - 1]\n if (last.startsWith(words[words.length - 1]))\n words[words.length - 1] = last\n } else {\n words.length = 0\n }\n return words\n })\n )\n .subscribe(words => el.innerHTML = words\n .join(\"\")\n .replace(/\\s/g, \" \")\n )\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Right arrow: accept current suggestion */\n case \"ArrowRight\":\n if (\n el.innerText.length &&\n query.selectionStart === query.value.length\n )\n query.value = el.innerText\n break\n }\n })\n\n /* Filter search result message */\n const result$ = rx$\n .pipe(\n filter(isSearchResultMessage),\n map(({ data }) => data)\n )\n\n /* Create and return component */\n return result$\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(() => ({ ref: el }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n NEVER,\n Observable,\n ObservableInput,\n filter,\n merge,\n mergeWith,\n sample,\n take\n} from \"rxjs\"\n\nimport { configuration } from \"~/_\"\nimport {\n Keyboard,\n getActiveElement,\n getElements,\n setToggle\n} from \"~/browser\"\nimport {\n SearchIndex,\n SearchResult,\n isSearchQueryMessage,\n isSearchReadyMessage,\n setupSearchWorker\n} from \"~/integrations\"\n\nimport {\n Component,\n getComponentElement,\n getComponentElements\n} from \"../../_\"\nimport {\n SearchQuery,\n mountSearchQuery\n} from \"../query\"\nimport { mountSearchResult } from \"../result\"\nimport {\n SearchShare,\n mountSearchShare\n} from \"../share\"\nimport {\n SearchSuggest,\n mountSearchSuggest\n} from \"../suggest\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport type Search =\n | SearchQuery\n | SearchResult\n | SearchShare\n | SearchSuggest\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n keyboard$: Observable /* Keyboard observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search\n *\n * This function sets up the search functionality, including the underlying\n * web worker and all keyboard bindings.\n *\n * @param el - Search element\n * @param options - Options\n *\n * @returns Search component observable\n */\nexport function mountSearch(\n el: HTMLElement, { index$, keyboard$ }: MountOptions\n): Observable> {\n const config = configuration()\n try {\n const url = __search?.worker || config.search\n const worker = setupSearchWorker(url, index$)\n\n /* Retrieve query and result components */\n const query = getComponentElement(\"search-query\", el)\n const result = getComponentElement(\"search-result\", el)\n\n /* Re-emit query when search is ready */\n const { tx$, rx$ } = worker\n tx$\n .pipe(\n filter(isSearchQueryMessage),\n sample(rx$.pipe(filter(isSearchReadyMessage))),\n take(1)\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Set up search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\")\n )\n .subscribe(key => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: go to first (best) result */\n case \"Enter\":\n if (active === query) {\n const anchors = new Map()\n for (const anchor of getElements(\n \":first-child [href]\", result\n )) {\n const article = anchor.firstElementChild!\n anchors.set(anchor, parseFloat(\n article.getAttribute(\"data-md-score\")!\n ))\n }\n\n /* Go to result with highest score, if any */\n if (anchors.size) {\n const [[best]] = [...anchors].sort(([, a], [, b]) => b - a)\n best.click()\n }\n\n /* Otherwise omit form submission */\n key.claim()\n }\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(\"search\", false)\n query.blur()\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n query.focus()\n } else {\n const els = [query, ...getElements(\n \":not(details) > [href], summary, details[open] [href]\",\n result\n )]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n els[i].focus()\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n query.focus()\n }\n })\n\n /* Set up global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"global\"),\n )\n .subscribe(key => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n case \"/\":\n query.focus()\n query.select()\n\n /* Prevent scrolling of page */\n key.claim()\n break\n }\n })\n\n /* Create and return component */\n const query$ = mountSearchQuery(query, worker)\n const result$ = mountSearchResult(result, worker, { query$ })\n return merge(query$, result$)\n .pipe(\n mergeWith(\n\n /* Search sharing */\n ...getComponentElements(\"search-share\", el)\n .map(child => mountSearchShare(child, { query$ })),\n\n /* Search suggestions */\n ...getComponentElements(\"search-suggest\", el)\n .map(child => mountSearchSuggest(child, worker, { keyboard$ }))\n )\n )\n\n /* Gracefully handle broken search */\n } catch (err) {\n el.hidden = true\n return NEVER\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n ObservableInput,\n combineLatest,\n filter,\n map,\n startWith\n} from \"rxjs\"\n\nimport { getLocation } from \"~/browser\"\nimport {\n SearchIndex,\n setupSearchHighlighter\n} from \"~/integrations\"\nimport { h } from \"~/utilities\"\n\nimport { Component } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlighting\n */\nexport interface SearchHighlight {\n nodes: Map /* Map of replacements */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n index$: ObservableInput /* Search index observable */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search highlighting\n *\n * @param el - Content element\n * @param options - Options\n *\n * @returns Search highlighting component observable\n */\nexport function mountSearchHiglight(\n el: HTMLElement, { index$, location$ }: MountOptions\n): Observable> {\n return combineLatest([\n index$,\n location$\n .pipe(\n startWith(getLocation()),\n filter(url => !!url.searchParams.get(\"h\"))\n )\n ])\n .pipe(\n map(([index, url]) => setupSearchHighlighter(index.config, true)(\n url.searchParams.get(\"h\")!\n )),\n map(fn => {\n const nodes = new Map()\n\n /* Traverse text nodes and collect matches */\n const it = document.createNodeIterator(el, NodeFilter.SHOW_TEXT)\n for (let node = it.nextNode(); node; node = it.nextNode()) {\n if (node.parentElement?.offsetHeight) {\n const original = node.textContent!\n const replaced = fn(original)\n if (replaced.length > original.length)\n nodes.set(node as ChildNode, replaced)\n }\n }\n\n /* Replace original nodes with matches */\n for (const [node, text] of nodes) {\n const { childNodes } = h(\"span\", null, text)\n node.replaceWith(...Array.from(childNodes))\n }\n\n /* Return component */\n return { ref: el, nodes }\n })\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n animationFrameScheduler,\n auditTime,\n combineLatest,\n defer,\n distinctUntilChanged,\n finalize,\n map,\n observeOn,\n take,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementOffset,\n getElementSize,\n getElements\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n locked: boolean /* Sidebar is locked */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { viewport$, main$ }: WatchOptions\n): Observable {\n const parent = el.parentElement!\n const adjust =\n parent.offsetTop -\n parent.parentElement!.offsetTop\n\n /* Compute the sidebar's available height and if it should be locked */\n return combineLatest([main$, viewport$])\n .pipe(\n map(([{ offset, height }, { offset: { y } }]) => {\n height = height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n return {\n height,\n locked: y >= offset + adjust\n }\n }),\n distinctUntilChanged((a, b) => (\n a.height === b.height &&\n a.locked === b.locked\n ))\n )\n}\n\n/**\n * Mount sidebar\n *\n * This function doesn't set the height of the actual sidebar, but of its first\n * child \u2013 the `.md-sidebar__scrollwrap` element in order to mitigiate jittery\n * sidebars when the footer is scrolled into view. At some point we switched\n * from `absolute` / `fixed` positioning to `sticky` positioning, significantly\n * reducing jitter in some browsers (respectively Firefox and Safari) when\n * scrolling from the top. However, top-aligned sticky positioning means that\n * the sidebar snaps to the bottom when the end of the container is reached.\n * This is what leads to the mentioned jitter, as the sidebar's height may be\n * updated too slowly.\n *\n * This behaviour can be mitigiated by setting the height of the sidebar to `0`\n * while preserving the padding, and the height on its first element.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @returns Sidebar component observable\n */\nexport function mountSidebar(\n el: HTMLElement, { header$, ...options }: MountOptions\n): Observable> {\n const inner = getElement(\".md-sidebar__scrollwrap\", el)\n const { y } = getElementOffset(inner)\n return defer(() => {\n const push$ = new Subject()\n push$\n .pipe(\n auditTime(0, animationFrameScheduler),\n withLatestFrom(header$)\n )\n .subscribe({\n\n /* Handle emission */\n next([{ height }, { height: offset }]) {\n inner.style.height = `${height - 2 * y}px`\n el.style.top = `${offset}px`\n },\n\n /* Handle complete */\n complete() {\n inner.style.height = \"\"\n el.style.top = \"\"\n }\n })\n\n /* Bring active item into view on initial load */\n push$\n .pipe(\n observeOn(animationFrameScheduler),\n take(1)\n )\n .subscribe(() => {\n for (const item of getElements(\".md-nav__link--active[href]\", el)) {\n const container = getElementContainer(item)\n if (typeof container !== \"undefined\") {\n const offset = item.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2\n })\n }\n }\n })\n\n /* Create and return component */\n return watchSidebar(el, options)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map,\n zip\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * GitHub release (partial)\n */\ninterface Release {\n tag_name: string /* Tag name */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub repository facts\n *\n * @param user - GitHub user or organization\n * @param repo - GitHub repository\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n if (typeof repo !== \"undefined\") {\n const url = `https://api.github.com/repos/${user}/${repo}`\n return zip(\n\n /* Fetch version */\n requestJSON(`${url}/releases/latest`)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(release => ({\n version: release.tag_name\n })),\n defaultIfEmpty({})\n ),\n\n /* Fetch stars and forks */\n requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(info => ({\n stars: info.stargazers_count,\n forks: info.forks_count\n })),\n defaultIfEmpty({})\n )\n )\n .pipe(\n map(([release, info]) => ({ ...release, ...info }))\n )\n\n /* User or organization */\n } else {\n const url = `https://api.github.com/users/${user}`\n return requestJSON(url)\n .pipe(\n map(info => ({\n repositories: info.public_repos\n })),\n defaultIfEmpty({})\n )\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport {\n EMPTY,\n Observable,\n catchError,\n defaultIfEmpty,\n map\n} from \"rxjs\"\n\nimport { requestJSON } from \"~/browser\"\n\nimport { SourceFacts } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab repository facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n const url = `https://${base}/api/v4/projects/${encodeURIComponent(project)}`\n return requestJSON(url)\n .pipe(\n catchError(() => EMPTY), // @todo refactor instant loading\n map(({ star_count, forks_count }) => ({\n stars: star_count,\n forks: forks_count\n })),\n defaultIfEmpty({})\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable } from \"rxjs\"\n\nimport { fetchSourceFactsFromGitHub } from \"../github\"\nimport { fetchSourceFactsFromGitLab } from \"../gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository facts for repositories\n */\nexport interface RepositoryFacts {\n stars?: number /* Number of stars */\n forks?: number /* Number of forks */\n version?: string /* Latest version */\n}\n\n/**\n * Repository facts for organizations\n */\nexport interface OrganizationFacts {\n repositories?: number /* Number of repositories */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Repository facts\n */\nexport type SourceFacts =\n | RepositoryFacts\n | OrganizationFacts\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch repository facts\n *\n * @param url - Repository URL\n *\n * @returns Repository facts observable\n */\nexport function fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^/]+)\\/?([^/]+)?/i)!\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, slug] = url.match(/^.+?([^/]*gitlab[^/]+)\\/(.+?)\\/?$/i)!\n return fetchSourceFactsFromGitLab(base, slug)\n\n /* Everything else */\n default:\n return EMPTY\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n EMPTY,\n Observable,\n Subject,\n catchError,\n defer,\n filter,\n finalize,\n map,\n of,\n shareReplay,\n tap\n} from \"rxjs\"\n\nimport { getElement } from \"~/browser\"\nimport { ConsentDefaults } from \"~/components/consent\"\nimport { renderSourceFacts } from \"~/templates\"\n\nimport {\n Component,\n getComponentElements\n} from \"../../_\"\nimport {\n SourceFacts,\n fetchSourceFacts\n} from \"../facts\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information\n */\nexport interface Source {\n facts: SourceFacts /* Repository facts */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Repository information observable\n */\nlet fetch$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch repository information\n *\n * This function tries to read the repository facts from session storage, and\n * if unsuccessful, fetches them from the underlying provider.\n *\n * @param el - Repository information element\n *\n * @returns Repository information observable\n */\nexport function watchSource(\n el: HTMLAnchorElement\n): Observable {\n return fetch$ ||= defer(() => {\n const cached = __md_get(\"__source\", sessionStorage)\n if (cached) {\n return of(cached)\n } else {\n\n /* Check if consent is configured and was given */\n const els = getComponentElements(\"consent\")\n if (els.length) {\n const consent = __md_get(\"__consent\")\n if (!(consent && consent.github))\n return EMPTY\n }\n\n /* Fetch repository facts */\n return fetchSourceFacts(el.href)\n .pipe(\n tap(facts => __md_set(\"__source\", facts, sessionStorage))\n )\n }\n })\n .pipe(\n catchError(() => EMPTY),\n filter(facts => Object.keys(facts).length > 0),\n map(facts => ({ facts })),\n shareReplay(1)\n )\n}\n\n/**\n * Mount repository information\n *\n * @param el - Repository information element\n *\n * @returns Repository information component observable\n */\nexport function mountSource(\n el: HTMLAnchorElement\n): Observable> {\n const inner = getElement(\":scope > :last-child\", el)\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe(({ facts }) => {\n inner.appendChild(renderSourceFacts(facts))\n inner.classList.add(\"md-source__repository--active\")\n })\n\n /* Create and return component */\n return watchSource(el)\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n defer,\n distinctUntilKeyChanged,\n finalize,\n map,\n of,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n watchElementSize,\n watchViewportAt\n} from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation tabs\n */\nexport interface Tabs {\n hidden: boolean /* Navigation tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation tabs\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs observable\n */\nexport function watchTabs(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n return watchElementSize(document.body)\n .pipe(\n switchMap(() => watchViewportAt(el, { header$, viewport$ })),\n map(({ offset: { y } }) => {\n return {\n hidden: y >= 10\n }\n }),\n distinctUntilKeyChanged(\"hidden\")\n )\n}\n\n/**\n * Mount navigation tabs\n *\n * This function hides the navigation tabs when scrolling past the threshold\n * and makes them reappear in a nice CSS animation when scrolling back up.\n *\n * @param el - Navigation tabs element\n * @param options - Options\n *\n * @returns Navigation tabs component observable\n */\nexport function mountTabs(\n el: HTMLElement, options: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n },\n\n /* Handle complete */\n complete() {\n el.hidden = false\n }\n })\n\n /* Create and return component */\n return (\n feature(\"navigation.tabs.sticky\")\n ? of({ hidden: false })\n : watchTabs(el, options)\n )\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatestWith,\n debounceTime,\n defer,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n finalize,\n map,\n merge,\n of,\n repeat,\n scan,\n share,\n skip,\n startWith,\n switchMap,\n takeLast,\n takeUntil,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { feature } from \"~/_\"\nimport {\n Viewport,\n getElement,\n getElementContainer,\n getElementSize,\n getElements,\n getLocation,\n getOptionalElement,\n watchElementSize\n} from \"~/browser\"\n\nimport {\n Component,\n getComponentElement\n} from \"../_\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport interface TableOfContents {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch table of contents\n *\n * This is effectively a scroll spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the table of contents\n * needs to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents observable\n */\nexport function watchTableOfContents(\n el: HTMLElement, { viewport$, header$ }: WatchOptions\n): Observable {\n const table = new Map()\n\n /* Compute anchor-to-target mapping */\n const anchors = getElements(\"[href^=\\\\#]\", el)\n for (const anchor of anchors) {\n const id = decodeURIComponent(anchor.hash.substring(1))\n const target = getOptionalElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(anchor, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n map(({ height }) => {\n const main = getComponentElement(\"main\")\n const grid = getElement(\":scope > :first-child\", main)\n return height + 0.8 * (\n grid.offsetTop -\n main.offsetTop\n )\n }),\n share()\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = watchElementSize(document.body)\n .pipe(\n distinctUntilKeyChanged(\"height\"),\n\n /* Build index to map anchor paths to vertical offsets */\n switchMap(body => defer(() => {\n let path: HTMLAnchorElement[] = []\n return of([...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n [...path = [...path, anchor]].reverse(),\n offset\n )\n }, new Map()))\n })\n .pipe(\n\n /* Sort index by vertical offset (see https://bit.ly/30z6QSO) */\n map(index => new Map([...index].sort(([, a], [, b]) => a - b))),\n combineLatestWith(adjust$),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(([index, adjust]) => viewport$\n .pipe(\n scan(([prev, next], { offset: { y }, size }) => {\n const last = y + size.height >= Math.floor(body.height)\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y || last) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y && !last) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => (\n a[0] === b[0] &&\n a[1] === b[1]\n ))\n )\n )\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents\n *\n * @param el - Table of contents element\n * @param options - Options\n *\n * @returns Table of contents component observable\n */\nexport function mountTableOfContents(\n el: HTMLElement, { viewport$, header$, target$ }: MountOptions\n): Observable> {\n return defer(() => {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe(({ prev, next }) => {\n\n /* Look forward */\n for (const [anchor] of next) {\n anchor.classList.remove(\"md-nav__link--passed\")\n anchor.classList.remove(\"md-nav__link--active\")\n }\n\n /* Look backward */\n for (const [index, [anchor]] of prev.entries()) {\n anchor.classList.add(\"md-nav__link--passed\")\n anchor.classList.toggle(\n \"md-nav__link--active\",\n index === prev.length - 1\n )\n }\n })\n\n /* Set up following, if enabled */\n if (feature(\"toc.follow\")) {\n\n /* Toggle smooth scrolling only for anchor clicks */\n const smooth$ = merge(\n viewport$.pipe(debounceTime(1), map(() => undefined)),\n viewport$.pipe(debounceTime(250), map(() => \"smooth\" as const))\n )\n\n /* Bring active anchor into view */\n push$\n .pipe(\n filter(({ prev }) => prev.length > 0),\n withLatestFrom(smooth$)\n )\n .subscribe(([{ prev }, behavior]) => {\n const [anchor] = prev[prev.length - 1]\n if (anchor.offsetHeight) {\n\n /* Retrieve overflowing container and scroll */\n const container = getElementContainer(anchor)\n if (typeof container !== \"undefined\") {\n const offset = anchor.offsetTop - container.offsetTop\n const { height } = getElementSize(container)\n container.scrollTo({\n top: offset - height / 2,\n behavior\n })\n }\n }\n })\n }\n\n /* Set up anchor tracking, if enabled */\n if (feature(\"navigation.tracking\"))\n viewport$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"offset\"),\n debounceTime(250),\n skip(1),\n takeUntil(target$.pipe(skip(1))),\n repeat({ delay: 250 }),\n withLatestFrom(push$)\n )\n .subscribe(([, { prev }]) => {\n const url = getLocation()\n\n /* Set hash fragment to active anchor */\n const anchor = prev[prev.length - 1]\n if (anchor && anchor.length) {\n const [active] = anchor\n const { hash } = new URL(active.href)\n if (url.hash !== hash) {\n url.hash = hash\n history.replaceState({}, \"\", `${url}`)\n }\n\n /* Reset anchor when at the top */\n } else {\n url.hash = \"\"\n history.replaceState({}, \"\", `${url}`)\n }\n })\n\n /* Create and return component */\n return watchTableOfContents(el, { viewport$, header$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n Subject,\n bufferCount,\n combineLatest,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n endWith,\n finalize,\n map,\n repeat,\n skip,\n takeLast,\n takeUntil,\n tap\n} from \"rxjs\"\n\nimport { Viewport } from \"~/browser\"\n\nimport { Component } from \"../_\"\nimport { Header } from \"../header\"\nimport { Main } from \"../main\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Back-to-top button\n */\nexport interface BackToTop {\n hidden: boolean /* Back-to-top button is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n header$: Observable
    /* Header observable */\n main$: Observable
    /* Main area observable */\n target$: Observable /* Location target observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch back-to-top\n *\n * @param _el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top observable\n */\nexport function watchBackToTop(\n _el: HTMLElement, { viewport$, main$, target$ }: WatchOptions\n): Observable {\n\n /* Compute direction */\n const direction$ = viewport$\n .pipe(\n map(({ offset: { y } }) => y),\n bufferCount(2, 1),\n map(([a, b]) => a > b && b > 0),\n distinctUntilChanged()\n )\n\n /* Compute whether main area is active */\n const active$ = main$\n .pipe(\n map(({ active }) => active)\n )\n\n /* Compute threshold for hiding */\n return combineLatest([active$, direction$])\n .pipe(\n map(([active, direction]) => !(active && direction)),\n distinctUntilChanged(),\n takeUntil(target$.pipe(skip(1))),\n endWith(true),\n repeat({ delay: 250 }),\n map(hidden => ({ hidden }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Mount back-to-top\n *\n * @param el - Back-to-top element\n * @param options - Options\n *\n * @returns Back-to-top component observable\n */\nexport function mountBackToTop(\n el: HTMLElement, { viewport$, header$, main$, target$ }: MountOptions\n): Observable> {\n const push$ = new Subject()\n const done$ = push$.pipe(takeLast(1))\n push$.subscribe({\n\n /* Handle emission */\n next({ hidden }) {\n el.hidden = hidden\n if (hidden) {\n el.setAttribute(\"tabindex\", \"-1\")\n el.blur()\n } else {\n el.removeAttribute(\"tabindex\")\n }\n },\n\n /* Handle complete */\n complete() {\n el.style.top = \"\"\n el.hidden = true\n el.removeAttribute(\"tabindex\")\n }\n })\n\n /* Watch header height */\n header$\n .pipe(\n takeUntil(done$),\n distinctUntilKeyChanged(\"height\")\n )\n .subscribe(({ height }) => {\n el.style.top = `${height + 16}px`\n })\n\n /* Create and return component */\n return watchBackToTop(el, { viewport$, main$, target$ })\n .pipe(\n tap(state => push$.next(state)),\n finalize(() => push$.complete()),\n map(state => ({ ref: el, ...state }))\n )\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n takeWhile,\n tap,\n withLatestFrom\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch indeterminate checkboxes\n *\n * This function replaces the indeterminate \"pseudo state\" with the actual\n * indeterminate state, which is used to keep navigation always expanded.\n *\n * @param options - Options\n */\nexport function patchIndeterminate(\n { document$, tablet$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\n // @todo `data-md-state` is deprecated and removed in v9\n \".md-toggle--indeterminate, [data-md-state=indeterminate]\"\n )),\n tap(el => {\n el.indeterminate = true\n el.checked = false\n }),\n mergeMap(el => fromEvent(el, \"change\")\n .pipe(\n takeWhile(() => el.classList.contains(\"md-toggle--indeterminate\")),\n map(() => el)\n )\n ),\n withLatestFrom(tablet$)\n )\n .subscribe(([el, tablet]) => {\n el.classList.remove(\"md-toggle--indeterminate\")\n if (tablet)\n el.checked = false\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n filter,\n fromEvent,\n map,\n mergeMap,\n switchMap,\n tap\n} from \"rxjs\"\n\nimport { getElements } from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @returns Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n switchMap(() => getElements(\"[data-md-scrollfix]\")),\n tap(el => el.removeAttribute(\"data-md-scrollfix\")),\n filter(isAppleDevice),\n mergeMap(el => fromEvent(el, \"touchstart\")\n .pipe(\n map(() => el)\n )\n )\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n combineLatest,\n delay,\n map,\n of,\n switchMap,\n withLatestFrom\n} from \"rxjs\"\n\nimport {\n Viewport,\n watchToggle\n} from \"~/browser\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Media tablet observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch the document body to lock when search is open\n *\n * For mobile and tablet viewports, the search is rendered full screen, which\n * leads to scroll leaking when at the top or bottom of the search result. This\n * function locks the body when the search is in full screen mode, and restores\n * the scroll position when leaving.\n *\n * @param options - Options\n */\nexport function patchScrolllock(\n { viewport$, tablet$ }: PatchOptions\n): void {\n combineLatest([watchToggle(\"search\"), tablet$])\n .pipe(\n map(([active, tablet]) => active && !tablet),\n switchMap(active => of(active)\n .pipe(\n delay(active ? 400 : 100)\n )\n ),\n withLatestFrom(viewport$)\n )\n .subscribe(([active, { offset: { y }}]) => {\n if (active) {\n document.body.setAttribute(\"data-md-scrolllock\", \"\")\n document.body.style.top = `-${y}px`\n } else {\n const value = -1 * parseInt(document.body.style.top, 10)\n document.body.removeAttribute(\"data-md-scrolllock\")\n document.body.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n }\n })\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n"], + "mappings": "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", + "names": ["require_focus_visible", "__commonJSMin", "exports", "module", "global", "factory", "applyFocusVisiblePolyfill", "scope", "hadKeyboardEvent", "hadFocusVisibleRecently", "hadFocusVisibleRecentlyTimeout", "inputTypesAllowlist", "isValidFocusTarget", "el", "focusTriggersKeyboardModality", "type", "tagName", "addFocusVisibleClass", "removeFocusVisibleClass", "onKeyDown", "e", "onPointerDown", "onFocus", "onBlur", "onVisibilityChange", "addInitialPointerMoveListeners", "onInitialPointerMove", "removeInitialPointerMoveListeners", "event", "error", "require_url_polyfill", "__commonJSMin", "exports", "global", "checkIfIteratorIsSupported", "error", "iteratorSupported", "createIterator", "items", "iterator", "value", "serializeParam", "deserializeParam", "polyfillURLSearchParams", "URLSearchParams", "searchString", "typeofSearchString", "_this", "name", "i", "entry", "key", "proto", "callback", "thisArg", "entries", "searchArray", "checkIfURLSearchParamsSupported", "e", "a", "b", "keys", "attributes", "attribute", "checkIfURLIsSupported", "u", "polyfillURL", "_URL", "URL", "url", "base", "doc", "baseElement", "err", "anchorElement", "inputElement", "searchParams", "enableSearchUpdate", "enableSearchParamsUpdate", "methodName", "method", "search", "linkURLWithAnchorAttribute", "attributeName", "expectedPort", "addPortToOrigin", "blob", "getOrigin", "require_tslib", "__commonJSMin", "exports", "module", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "__createBinding", "factory", "root", "createExporter", "previous", "id", "v", "exporter", "extendStatics", "d", "b", "p", "__", "t", "s", "n", "e", "i", "decorators", "target", "key", "desc", "c", "r", "paramIndex", "decorator", "metadataKey", "metadataValue", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "reject", "fulfilled", "step", "rejected", "result", "body", "_", "f", "y", "g", "verb", "op", "m", "o", "k", "k2", "ar", "error", "il", "a", "j", "jl", "to", "from", "pack", "l", "q", "resume", "settle", "fulfill", "cooked", "raw", "__setModuleDefault", "mod", "receiver", "state", "kind", "require_clipboard", "__commonJSMin", "exports", "module", "root", "factory", "__webpack_modules__", "__unused_webpack_module", "__webpack_exports__", "__webpack_require__", "clipboard", "tiny_emitter", "tiny_emitter_default", "listen", "listen_default", "src_select", "select_default", "command", "type", "err", "ClipboardActionCut", "target", "selectedText", "actions_cut", "createFakeElement", "value", "isRTL", "fakeElement", "yPosition", "fakeCopyAction", "options", "ClipboardActionCopy", "actions_copy", "_typeof", "obj", "ClipboardActionDefault", "_options$action", "action", "container", "text", "actions_default", "clipboard_typeof", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "i", "descriptor", "_createClass", "protoProps", "staticProps", "_inherits", "subClass", "superClass", "_setPrototypeOf", "o", "p", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "_getPrototypeOf", "result", "NewTarget", "_possibleConstructorReturn", "self", "call", "_assertThisInitialized", "e", "getAttributeValue", "suffix", "element", "attribute", "Clipboard", "_Emitter", "_super", "trigger", "_this", "_this2", "selector", "actions", "support", "DOCUMENT_NODE_TYPE", "proto", "closest", "__unused_webpack_exports", "_delegate", "callback", "useCapture", "listenerFn", "listener", "delegate", "elements", "is", "listenNode", "listenNodeList", "listenSelector", "node", "nodeList", "select", "isReadOnly", "selection", "range", "E", "name", "ctx", "data", "evtArr", "len", "evts", "liveEvents", "__webpack_module_cache__", "moduleId", "getter", "definition", "key", "prop", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "r", "a", "e", "import_focus_visible", "n", "t", "s", "r", "o", "u", "i", "a", "e", "c", "import_url_polyfill", "import_tslib", "__extends", "__assign", "__rest", "__decorate", "__param", "__metadata", "__awaiter", "__generator", "__exportStar", "__createBinding", "__values", "__read", "__spread", "__spreadArrays", "__spreadArray", "__await", "__asyncGenerator", "__asyncDelegator", "__asyncValues", "__makeTemplateObject", "__importStar", "__importDefault", "__classPrivateFieldGet", "__classPrivateFieldSet", "tslib", "isFunction", "value", "createErrorClass", "createImpl", "_super", "instance", "ctorFunc", "UnsubscriptionError", "createErrorClass", "_super", "errors", "err", "i", "arrRemove", "arr", "item", "index", "Subscription", "initialTeardown", "errors", "_parentage", "_parentage_1", "__values", "_parentage_1_1", "parent_1", "initialFinalizer", "isFunction", "e", "UnsubscriptionError", "_finalizers", "_finalizers_1", "_finalizers_1_1", "finalizer", "execFinalizer", "err", "__spreadArray", "__read", "teardown", "_a", "parent", "arrRemove", "empty", "EMPTY_SUBSCRIPTION", "Subscription", "isSubscription", "value", "isFunction", "execFinalizer", "finalizer", "config", "timeoutProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "reportUnhandledError", "err", "timeoutProvider", "onUnhandledError", "config", "noop", "COMPLETE_NOTIFICATION", "createNotification", "errorNotification", "error", "nextNotification", "value", "kind", "context", "errorContext", "cb", "config", "isRoot", "_a", "errorThrown", "error", "captureError", "err", "Subscriber", "_super", "__extends", "destination", "_this", "isSubscription", "EMPTY_OBSERVER", "next", "error", "complete", "SafeSubscriber", "value", "handleStoppedNotification", "nextNotification", "err", "errorNotification", "COMPLETE_NOTIFICATION", "Subscription", "_bind", "bind", "fn", "thisArg", "ConsumerObserver", "partialObserver", "value", "error", "handleUnhandledError", "err", "SafeSubscriber", "_super", "__extends", "observerOrNext", "complete", "_this", "isFunction", "context_1", "config", "Subscriber", "handleUnhandledError", "error", "config", "captureError", "reportUnhandledError", "defaultErrorHandler", "err", "handleStoppedNotification", "notification", "subscriber", "onStoppedNotification", "timeoutProvider", "EMPTY_OBSERVER", "noop", "observable", "identity", "x", "pipe", "fns", "_i", "pipeFromArray", "identity", "input", "prev", "fn", "Observable", "subscribe", "operator", "observable", "observerOrNext", "error", "complete", "_this", "subscriber", "isSubscriber", "SafeSubscriber", "errorContext", "_a", "source", "sink", "err", "next", "promiseCtor", "getPromiseCtor", "resolve", "reject", "value", "operations", "_i", "pipeFromArray", "x", "getPromiseCtor", "promiseCtor", "_a", "config", "isObserver", "value", "isFunction", "isSubscriber", "Subscriber", "isSubscription", "hasLift", "source", "isFunction", "operate", "init", "liftedSource", "err", "createOperatorSubscriber", "destination", "onNext", "onComplete", "onError", "onFinalize", "OperatorSubscriber", "_super", "__extends", "shouldUnsubscribe", "_this", "value", "err", "closed_1", "_a", "Subscriber", "animationFrameProvider", "callback", "request", "cancel", "delegate", "handle", "timestamp", "Subscription", "args", "_i", "__spreadArray", "__read", "ObjectUnsubscribedError", "createErrorClass", "_super", "Subject", "_super", "__extends", "_this", "operator", "subject", "AnonymousSubject", "ObjectUnsubscribedError", "value", "errorContext", "_b", "__values", "_c", "observer", "err", "observers", "_a", "subscriber", "hasError", "isStopped", "EMPTY_SUBSCRIPTION", "Subscription", "arrRemove", "thrownError", "observable", "Observable", "destination", "source", "AnonymousSubject", "_super", "__extends", "destination", "source", "_this", "value", "_b", "_a", "err", "subscriber", "EMPTY_SUBSCRIPTION", "Subject", "dateTimestampProvider", "ReplaySubject", "_super", "__extends", "_bufferSize", "_windowTime", "_timestampProvider", "dateTimestampProvider", "_this", "value", "_a", "isStopped", "_buffer", "_infiniteTimeWindow", "subscriber", "subscription", "copy", "i", "adjustedBufferSize", "now", "last", "Subject", "Action", "_super", "__extends", "scheduler", "work", "state", "delay", "Subscription", "intervalProvider", "handler", "timeout", "args", "_i", "delegate", "__spreadArray", "__read", "handle", "AsyncAction", "_super", "__extends", "scheduler", "work", "_this", "state", "delay", "id", "_a", "_id", "intervalProvider", "_scheduler", "error", "_delay", "errored", "errorValue", "e", "actions", "arrRemove", "Action", "Scheduler", "schedulerActionCtor", "now", "work", "delay", "state", "dateTimestampProvider", "AsyncScheduler", "_super", "__extends", "SchedulerAction", "now", "Scheduler", "_this", "action", "actions", "error", "asyncScheduler", "AsyncScheduler", "AsyncAction", "async", "AnimationFrameAction", "_super", "__extends", "scheduler", "work", "_this", "id", "delay", "animationFrameProvider", "actions", "_a", "AsyncAction", "AnimationFrameScheduler", "_super", "__extends", "action", "flushId", "actions", "error", "AsyncScheduler", "animationFrameScheduler", "AnimationFrameScheduler", "AnimationFrameAction", "EMPTY", "Observable", "subscriber", "isScheduler", "value", "isFunction", "last", "arr", "popResultSelector", "args", "isFunction", "popScheduler", "isScheduler", "popNumber", "defaultValue", "isArrayLike", "x", "isPromise", "value", "isFunction", "isInteropObservable", "input", "isFunction", "observable", "isAsyncIterable", "obj", "isFunction", "createInvalidObservableTypeError", "input", "getSymbolIterator", "iterator", "isIterable", "input", "isFunction", "iterator", "readableStreamLikeToAsyncGenerator", "readableStream", "reader", "__await", "_a", "_b", "value", "done", "isReadableStreamLike", "obj", "isFunction", "innerFrom", "input", "Observable", "isInteropObservable", "fromInteropObservable", "isArrayLike", "fromArrayLike", "isPromise", "fromPromise", "isAsyncIterable", "fromAsyncIterable", "isIterable", "fromIterable", "isReadableStreamLike", "fromReadableStreamLike", "createInvalidObservableTypeError", "obj", "subscriber", "obs", "observable", "isFunction", "array", "i", "promise", "value", "err", "reportUnhandledError", "iterable", "iterable_1", "__values", "iterable_1_1", "asyncIterable", "process", "readableStream", "readableStreamLikeToAsyncGenerator", "asyncIterable_1", "__asyncValues", "asyncIterable_1_1", "executeSchedule", "parentSubscription", "scheduler", "work", "delay", "repeat", "scheduleSubscription", "observeOn", "scheduler", "delay", "operate", "source", "subscriber", "createOperatorSubscriber", "value", "executeSchedule", "err", "subscribeOn", "scheduler", "delay", "operate", "source", "subscriber", "scheduleObservable", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "schedulePromise", "input", "scheduler", "innerFrom", "subscribeOn", "observeOn", "scheduleArray", "input", "scheduler", "Observable", "subscriber", "i", "scheduleIterable", "input", "scheduler", "Observable", "subscriber", "iterator", "executeSchedule", "value", "done", "_a", "err", "isFunction", "scheduleAsyncIterable", "input", "scheduler", "Observable", "subscriber", "executeSchedule", "iterator", "result", "scheduleReadableStreamLike", "input", "scheduler", "scheduleAsyncIterable", "readableStreamLikeToAsyncGenerator", "scheduled", "input", "scheduler", "isInteropObservable", "scheduleObservable", "isArrayLike", "scheduleArray", "isPromise", "schedulePromise", "isAsyncIterable", "scheduleAsyncIterable", "isIterable", "scheduleIterable", "isReadableStreamLike", "scheduleReadableStreamLike", "createInvalidObservableTypeError", "from", "input", "scheduler", "scheduled", "innerFrom", "of", "args", "_i", "scheduler", "popScheduler", "from", "throwError", "errorOrErrorFactory", "scheduler", "errorFactory", "isFunction", "init", "subscriber", "Observable", "isValidDate", "value", "map", "project", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "isArray", "callOrApply", "fn", "args", "__spreadArray", "__read", "mapOneOrManyArgs", "map", "isArray", "getPrototypeOf", "objectProto", "getKeys", "argsArgArrayOrObject", "args", "first_1", "isPOJO", "keys", "key", "obj", "createObject", "keys", "values", "result", "key", "i", "combineLatest", "args", "_i", "scheduler", "popScheduler", "resultSelector", "popResultSelector", "_a", "argsArgArrayOrObject", "observables", "keys", "from", "result", "Observable", "combineLatestInit", "values", "createObject", "identity", "mapOneOrManyArgs", "valueTransform", "subscriber", "maybeSchedule", "length", "active", "remainingFirstValues", "i", "source", "hasFirstValue", "createOperatorSubscriber", "value", "execute", "subscription", "executeSchedule", "mergeInternals", "source", "subscriber", "project", "concurrent", "onBeforeNext", "expand", "innerSubScheduler", "additionalFinalizer", "buffer", "active", "index", "isComplete", "checkComplete", "outerNext", "value", "doInnerSub", "innerComplete", "innerFrom", "createOperatorSubscriber", "innerValue", "bufferedValue", "executeSchedule", "err", "mergeMap", "project", "resultSelector", "concurrent", "isFunction", "a", "i", "map", "b", "ii", "innerFrom", "operate", "source", "subscriber", "mergeInternals", "mergeAll", "concurrent", "mergeMap", "identity", "concatAll", "mergeAll", "concat", "args", "_i", "concatAll", "from", "popScheduler", "defer", "observableFactory", "Observable", "subscriber", "innerFrom", "nodeEventEmitterMethods", "eventTargetMethods", "jqueryMethods", "fromEvent", "target", "eventName", "options", "resultSelector", "isFunction", "mapOneOrManyArgs", "_a", "__read", "isEventTarget", "methodName", "handler", "isNodeStyleEventEmitter", "toCommonHandlerRegistry", "isJQueryStyleEventEmitter", "add", "remove", "isArrayLike", "mergeMap", "subTarget", "innerFrom", "Observable", "subscriber", "args", "_i", "fromEventPattern", "addHandler", "removeHandler", "resultSelector", "mapOneOrManyArgs", "Observable", "subscriber", "handler", "e", "_i", "retValue", "isFunction", "timer", "dueTime", "intervalOrScheduler", "scheduler", "async", "intervalDuration", "isScheduler", "Observable", "subscriber", "due", "isValidDate", "n", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "sources", "innerFrom", "mergeAll", "from", "EMPTY", "NEVER", "Observable", "noop", "isArray", "argsOrArgArray", "args", "filter", "predicate", "thisArg", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "zip", "args", "_i", "resultSelector", "popResultSelector", "sources", "argsOrArgArray", "Observable", "subscriber", "buffers", "completed", "sourceIndex", "innerFrom", "createOperatorSubscriber", "value", "buffer", "result", "__spreadArray", "__read", "i", "EMPTY", "audit", "durationSelector", "operate", "source", "subscriber", "hasValue", "lastValue", "durationSubscriber", "isComplete", "endDuration", "value", "cleanupDuration", "createOperatorSubscriber", "innerFrom", "auditTime", "duration", "scheduler", "asyncScheduler", "audit", "timer", "bufferCount", "bufferSize", "startBufferEvery", "operate", "source", "subscriber", "buffers", "count", "createOperatorSubscriber", "value", "toEmit", "buffers_1", "__values", "buffers_1_1", "buffer", "toEmit_1", "toEmit_1_1", "arrRemove", "buffers_2", "buffers_2_1", "catchError", "selector", "operate", "source", "subscriber", "innerSub", "syncUnsub", "handledResult", "createOperatorSubscriber", "err", "innerFrom", "scanInternals", "accumulator", "seed", "hasSeed", "emitOnNext", "emitBeforeComplete", "source", "subscriber", "hasState", "state", "index", "createOperatorSubscriber", "value", "i", "combineLatest", "args", "_i", "resultSelector", "popResultSelector", "pipe", "__spreadArray", "__read", "mapOneOrManyArgs", "operate", "source", "subscriber", "combineLatestInit", "argsOrArgArray", "combineLatestWith", "otherSources", "_i", "combineLatest", "__spreadArray", "__read", "concatMap", "project", "resultSelector", "isFunction", "mergeMap", "debounceTime", "dueTime", "scheduler", "asyncScheduler", "operate", "source", "subscriber", "activeTask", "lastValue", "lastTime", "emit", "value", "emitWhenIdle", "targetTime", "now", "createOperatorSubscriber", "defaultIfEmpty", "defaultValue", "operate", "source", "subscriber", "hasValue", "createOperatorSubscriber", "value", "take", "count", "EMPTY", "operate", "source", "subscriber", "seen", "createOperatorSubscriber", "value", "ignoreElements", "operate", "source", "subscriber", "createOperatorSubscriber", "noop", "mapTo", "value", "map", "delayWhen", "delayDurationSelector", "subscriptionDelay", "source", "concat", "take", "ignoreElements", "mergeMap", "value", "index", "mapTo", "delay", "due", "scheduler", "asyncScheduler", "duration", "timer", "delayWhen", "distinctUntilChanged", "comparator", "keySelector", "identity", "defaultCompare", "operate", "source", "subscriber", "previousKey", "first", "createOperatorSubscriber", "value", "currentKey", "a", "b", "distinctUntilKeyChanged", "key", "compare", "distinctUntilChanged", "x", "y", "endWith", "values", "_i", "source", "concat", "of", "__spreadArray", "__read", "finalize", "callback", "operate", "source", "subscriber", "takeLast", "count", "EMPTY", "operate", "source", "subscriber", "buffer", "createOperatorSubscriber", "value", "buffer_1", "__values", "buffer_1_1", "merge", "args", "_i", "scheduler", "popScheduler", "concurrent", "popNumber", "argsOrArgArray", "operate", "source", "subscriber", "mergeAll", "from", "__spreadArray", "__read", "mergeWith", "otherSources", "_i", "merge", "__spreadArray", "__read", "repeat", "countOrConfig", "count", "delay", "_a", "EMPTY", "operate", "source", "subscriber", "soFar", "sourceSub", "resubscribe", "notifier", "timer", "innerFrom", "notifierSubscriber_1", "createOperatorSubscriber", "subscribeToSource", "syncUnsub", "sample", "notifier", "operate", "source", "subscriber", "hasValue", "lastValue", "createOperatorSubscriber", "value", "noop", "scan", "accumulator", "seed", "operate", "scanInternals", "share", "options", "_a", "connector", "Subject", "_b", "resetOnError", "_c", "resetOnComplete", "_d", "resetOnRefCountZero", "wrapperSource", "connection", "resetConnection", "subject", "refCount", "hasCompleted", "hasErrored", "cancelReset", "reset", "resetAndUnsubscribe", "conn", "operate", "source", "subscriber", "dest", "handleReset", "SafeSubscriber", "value", "err", "innerFrom", "on", "args", "_i", "onSubscriber", "__spreadArray", "__read", "shareReplay", "configOrBufferSize", "windowTime", "scheduler", "bufferSize", "refCount", "_a", "_b", "_c", "share", "ReplaySubject", "skip", "count", "filter", "_", "index", "skipUntil", "notifier", "operate", "source", "subscriber", "taking", "skipSubscriber", "createOperatorSubscriber", "noop", "innerFrom", "value", "startWith", "values", "_i", "scheduler", "popScheduler", "operate", "source", "subscriber", "concat", "switchMap", "project", "resultSelector", "operate", "source", "subscriber", "innerSubscriber", "index", "isComplete", "checkComplete", "createOperatorSubscriber", "value", "innerIndex", "outerIndex", "innerFrom", "innerValue", "takeUntil", "notifier", "operate", "source", "subscriber", "innerFrom", "createOperatorSubscriber", "noop", "takeWhile", "predicate", "inclusive", "operate", "source", "subscriber", "index", "createOperatorSubscriber", "value", "result", "tap", "observerOrNext", "error", "complete", "tapObserver", "isFunction", "operate", "source", "subscriber", "_a", "isUnsub", "createOperatorSubscriber", "value", "err", "_b", "identity", "defaultThrottleConfig", "throttle", "durationSelector", "config", "operate", "source", "subscriber", "leading", "trailing", "hasValue", "sendValue", "throttled", "isComplete", "endThrottling", "send", "cleanupThrottling", "startThrottle", "value", "innerFrom", "createOperatorSubscriber", "throttleTime", "duration", "scheduler", "config", "asyncScheduler", "defaultThrottleConfig", "duration$", "timer", "throttle", "withLatestFrom", "inputs", "_i", "project", "popResultSelector", "operate", "source", "subscriber", "len", "otherValues", "hasValue", "ready", "i", "innerFrom", "createOperatorSubscriber", "value", "identity", "noop", "values", "__spreadArray", "__read", "zip", "sources", "_i", "operate", "source", "subscriber", "__spreadArray", "__read", "zipWith", "otherInputs", "_i", "zip", "__spreadArray", "__read", "watchDocument", "document$", "ReplaySubject", "fromEvent", "getElements", "selector", "node", "getElement", "el", "getOptionalElement", "getActiveElement", "watchElementFocus", "el", "merge", "fromEvent", "debounceTime", "map", "active", "getActiveElement", "startWith", "distinctUntilChanged", "getElementOffset", "el", "watchElementOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "getElementContentOffset", "el", "watchElementContentOffset", "merge", "fromEvent", "auditTime", "animationFrameScheduler", "map", "startWith", "MapShim", "getIndex", "arr", "key", "result", "entry", "index", "class_1", "value", "entries", "callback", "ctx", "_i", "_a", "isBrowser", "global$1", "requestAnimationFrame$1", "trailingTimeout", "throttle", "delay", "leadingCall", "trailingCall", "lastCallTime", "resolvePending", "proxy", "timeoutCallback", "timeStamp", "REFRESH_DELAY", "transitionKeys", "mutationObserverSupported", "ResizeObserverController", "observer", "observers", "changesDetected", "activeObservers", "_b", "propertyName", "isReflowProperty", "defineConfigurable", "target", "props", "getWindowOf", "ownerGlobal", "emptyRect", "createRectInit", "toFloat", "getBordersSize", "styles", "positions", "size", "position", "getPaddings", "paddings", "positions_1", "getSVGContentRect", "bbox", "getHTMLElementContentRect", "clientWidth", "clientHeight", "horizPad", "vertPad", "width", "height", "isDocumentElement", "vertScrollbar", "horizScrollbar", "isSVGGraphicsElement", "getContentRect", "createReadOnlyRect", "x", "y", "Constr", "rect", "ResizeObservation", "ResizeObserverEntry", "rectInit", "contentRect", "ResizeObserverSPI", "controller", "callbackCtx", "observations", "_this", "observation", "ResizeObserver", "method", "ResizeObserver_es_default", "entry$", "Subject", "observer$", "defer", "of", "ResizeObserver_es_default", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "getElementSize", "el", "watchElementSize", "tap", "filter", "target", "map", "startWith", "getElementContentSize", "el", "getElementContainer", "parent", "entry$", "Subject", "observer$", "defer", "of", "entries", "entry", "switchMap", "observer", "merge", "NEVER", "finalize", "shareReplay", "watchElementVisibility", "el", "tap", "filter", "target", "map", "isIntersecting", "watchElementBoundary", "threshold", "watchElementContentOffset", "y", "visible", "getElementSize", "content", "getElementContentSize", "distinctUntilChanged", "toggles", "getElement", "getToggle", "name", "setToggle", "value", "watchToggle", "el", "fromEvent", "map", "startWith", "isSusceptibleToKeyboard", "el", "type", "watchKeyboard", "fromEvent", "filter", "ev", "map", "getToggle", "mode", "active", "getActiveElement", "share", "getLocation", "setLocation", "url", "watchLocation", "Subject", "appendChild", "el", "child", "node", "h", "tag", "attributes", "children", "attr", "truncate", "value", "n", "i", "round", "digits", "getLocationHash", "setLocationHash", "hash", "el", "h", "ev", "watchLocationHash", "fromEvent", "map", "startWith", "filter", "shareReplay", "watchLocationTarget", "id", "getOptionalElement", "watchMedia", "query", "media", "fromEventPattern", "next", "startWith", "watchPrint", "merge", "fromEvent", "map", "at", "query$", "factory", "switchMap", "active", "EMPTY", "request", "url", "options", "from", "catchError", "EMPTY", "switchMap", "res", "throwError", "of", "requestJSON", "shareReplay", "requestXML", "dom", "map", "watchScript", "src", "script", "h", "defer", "merge", "fromEvent", "switchMap", "throwError", "map", "finalize", "take", "getViewportOffset", "watchViewportOffset", "merge", "fromEvent", "map", "startWith", "getViewportSize", "watchViewportSize", "fromEvent", "map", "startWith", "watchViewport", "combineLatest", "watchViewportOffset", "watchViewportSize", "map", "offset", "size", "shareReplay", "watchViewportAt", "el", "viewport$", "header$", "size$", "distinctUntilKeyChanged", "offset$", "combineLatest", "map", "getElementOffset", "height", "offset", "size", "x", "y", "watchWorker", "worker", "tx$", "rx$", "fromEvent", "map", "data", "throttle", "tap", "message", "switchMap", "share", "script", "getElement", "config", "getLocation", "configuration", "feature", "flag", "translation", "key", "value", "getComponentElement", "type", "node", "getElement", "getComponentElements", "getElements", "watchAnnounce", "el", "button", "getElement", "fromEvent", "map", "content", "mountAnnounce", "feature", "EMPTY", "defer", "push$", "Subject", "startWith", "hash", "_a", "tap", "state", "finalize", "__spreadValues", "watchConsent", "el", "target$", "map", "target", "mountConsent", "options", "internal$", "Subject", "hidden", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "renderTooltip", "id", "h", "renderAnnotation", "id", "prefix", "anchor", "h", "renderTooltip", "renderClipboardButton", "id", "h", "translation", "renderSearchDocument", "document", "flag", "parent", "teaser", "missing", "key", "list", "h", "url", "feature", "match", "highlight", "value", "tags", "configuration", "truncate", "tag", "id", "type", "translation", "renderSearchResultItem", "result", "threshold", "docs", "doc", "article", "index", "best", "more", "children", "section", "renderSourceFacts", "facts", "h", "key", "value", "round", "renderTabbedControl", "type", "classes", "h", "renderTable", "table", "h", "renderVersion", "version", "config", "configuration", "url", "h", "renderVersionSelector", "versions", "active", "translation", "watchAnnotation", "el", "container", "offset$", "defer", "combineLatest", "watchElementOffset", "watchElementContentOffset", "map", "x", "y", "scroll", "width", "height", "getElementSize", "watchElementFocus", "switchMap", "active", "offset", "take", "mountAnnotation", "target$", "tooltip", "index", "push$", "Subject", "done$", "takeLast", "watchElementVisibility", "takeUntil", "visible", "merge", "filter", "debounceTime", "auditTime", "animationFrameScheduler", "throttleTime", "origin", "fromEvent", "ev", "withLatestFrom", "_a", "parent", "getActiveElement", "target", "delay", "tap", "state", "finalize", "__spreadValues", "findAnnotationMarkers", "container", "markers", "el", "getElements", "nodes", "it", "node", "text", "match", "id", "force", "marker", "swap", "source", "target", "mountAnnotationList", "target$", "print$", "parent", "prefix", "annotations", "getOptionalElement", "renderAnnotation", "EMPTY", "defer", "done$", "Subject", "pairs", "annotation", "getElement", "takeUntil", "takeLast", "active", "inner", "child", "merge", "mountAnnotation", "finalize", "share", "sequence", "findCandidateList", "el", "sibling", "watchCodeBlock", "watchElementSize", "map", "width", "getElementContentSize", "distinctUntilKeyChanged", "mountCodeBlock", "options", "hover", "factory$", "defer", "push$", "Subject", "scrollable", "ClipboardJS", "parent", "renderClipboardButton", "container", "list", "feature", "annotations$", "mountAnnotationList", "tap", "state", "finalize", "__spreadValues", "mergeWith", "height", "distinctUntilChanged", "switchMap", "active", "EMPTY", "watchElementVisibility", "filter", "visible", "take", "mermaid$", "sequence", "fetchScripts", "watchScript", "of", "mountMermaid", "el", "tap", "mermaid_default", "map", "shareReplay", "id", "host", "h", "svg", "shadow", "watchDetails", "el", "target$", "print$", "open", "merge", "map", "target", "filter", "details", "active", "tap", "mountDetails", "options", "defer", "push$", "Subject", "action", "reveal", "state", "finalize", "__spreadValues", "sentinel", "h", "mountDataTable", "el", "renderTable", "of", "watchContentTabs", "el", "inputs", "getElements", "initial", "input", "merge", "fromEvent", "map", "getElement", "startWith", "active", "mountContentTabs", "viewport$", "prev", "renderTabbedControl", "next", "container", "defer", "push$", "Subject", "done$", "takeLast", "combineLatest", "watchElementSize", "auditTime", "animationFrameScheduler", "takeUntil", "size", "offset", "getElementOffset", "width", "getElementSize", "content", "getElementContentOffset", "watchElementContentOffset", "getElementContentSize", "direction", "feature", "skip", "withLatestFrom", "tab", "y", "set", "label", "tabs", "tap", "state", "finalize", "__spreadValues", "subscribeOn", "asyncScheduler", "mountContent", "el", "viewport$", "target$", "print$", "merge", "getElements", "child", "mountCodeBlock", "mountMermaid", "mountDataTable", "mountDetails", "mountContentTabs", "watchDialog", "_el", "alert$", "switchMap", "message", "merge", "of", "delay", "map", "active", "mountDialog", "el", "options", "inner", "getElement", "defer", "push$", "Subject", "tap", "state", "finalize", "__spreadValues", "isHidden", "viewport$", "feature", "of", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilKeyChanged", "hidden$", "combineLatest", "filter", "offset", "direction", "distinctUntilChanged", "search$", "watchToggle", "search", "switchMap", "active", "startWith", "watchHeader", "el", "options", "defer", "watchElementSize", "height", "hidden", "shareReplay", "mountHeader", "header$", "main$", "push$", "Subject", "done$", "takeLast", "combineLatestWith", "takeUntil", "state", "__spreadValues", "watchHeaderTitle", "el", "viewport$", "header$", "watchViewportAt", "map", "y", "height", "getElementSize", "distinctUntilKeyChanged", "mountHeaderTitle", "options", "defer", "push$", "Subject", "active", "heading", "getOptionalElement", "EMPTY", "tap", "state", "finalize", "__spreadValues", "watchMain", "el", "viewport$", "header$", "adjust$", "map", "height", "distinctUntilChanged", "border$", "switchMap", "watchElementSize", "distinctUntilKeyChanged", "combineLatest", "header", "top", "bottom", "y", "a", "b", "watchPalette", "inputs", "current", "input", "of", "mergeMap", "fromEvent", "map", "startWith", "shareReplay", "mountPalette", "el", "defer", "push$", "Subject", "palette", "key", "value", "index", "label", "observeOn", "asyncScheduler", "getElements", "tap", "state", "finalize", "__spreadValues", "import_clipboard", "extract", "el", "text", "setupClipboardJS", "alert$", "ClipboardJS", "Observable", "subscriber", "getElement", "ev", "tap", "map", "translation", "preprocess", "urls", "root", "next", "a", "b", "url", "index", "fetchSitemap", "base", "cached", "of", "config", "configuration", "requestXML", "map", "sitemap", "getElements", "node", "catchError", "EMPTY", "defaultIfEmpty", "tap", "setupInstantLoading", "document$", "location$", "viewport$", "config", "configuration", "fromEvent", "favicon", "getOptionalElement", "push$", "fetchSitemap", "map", "paths", "path", "switchMap", "urls", "filter", "ev", "el", "url", "of", "NEVER", "share", "pop$", "merge", "distinctUntilChanged", "a", "b", "response$", "distinctUntilKeyChanged", "request", "catchError", "setLocation", "sample", "dom", "res", "skip", "replacement", "selector", "feature", "source", "target", "getComponentElement", "getElements", "concatMap", "script", "h", "name", "Observable", "observer", "EMPTY", "offset", "setLocationHash", "skipUntil", "debounceTime", "bufferCount", "state", "import_escape_html", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "defaultTransform", "query", "terms", "index", "isSearchReadyMessage", "message", "isSearchQueryMessage", "isSearchResultMessage", "setupSearchIndex", "config", "docs", "translation", "options", "feature", "setupSearchWorker", "url", "index", "configuration", "worker", "tx$", "Subject", "rx$", "watchWorker", "map", "message", "isSearchResultMessage", "result", "document", "share", "from", "data", "setupVersionSelector", "document$", "config", "configuration", "versions$", "requestJSON", "catchError", "EMPTY", "current$", "map", "versions", "current", "version", "aliases", "switchMap", "urls", "fromEvent", "filter", "ev", "withLatestFrom", "el", "url", "of", "fetchSitemap", "sitemap", "path", "getLocation", "setLocation", "combineLatest", "getElement", "renderVersionSelector", "_a", "outdated", "latest", "warning", "getComponentElements", "watchSearchQuery", "el", "rx$", "fn", "defaultTransform", "searchParams", "getLocation", "setToggle", "param$", "filter", "isSearchReadyMessage", "take", "map", "watchToggle", "active", "url", "value", "focus$", "watchElementFocus", "value$", "merge", "fromEvent", "delay", "startWith", "distinctUntilChanged", "combineLatest", "focus", "shareReplay", "mountSearchQuery", "tx$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "translation", "takeUntil", "tap", "state", "finalize", "__spreadValues", "share", "mountSearchResult", "el", "rx$", "query$", "push$", "Subject", "boundary$", "watchElementBoundary", "filter", "meta", "getElement", "list", "ready$", "isSearchReadyMessage", "take", "withLatestFrom", "skipUntil", "items", "value", "translation", "round", "tap", "switchMap", "merge", "of", "bufferCount", "zipWith", "chunk", "result", "renderSearchResultItem", "isSearchResultMessage", "map", "data", "state", "finalize", "__spreadValues", "watchSearchShare", "_el", "query$", "map", "value", "url", "getLocation", "mountSearchShare", "el", "options", "push$", "Subject", "fromEvent", "ev", "tap", "state", "finalize", "__spreadValues", "mountSearchSuggest", "el", "rx$", "keyboard$", "push$", "Subject", "query", "getComponentElement", "query$", "merge", "fromEvent", "observeOn", "asyncScheduler", "map", "distinctUntilChanged", "combineLatestWith", "suggestions", "value", "words", "last", "filter", "mode", "key", "isSearchResultMessage", "data", "tap", "state", "finalize", "mountSearch", "el", "index$", "keyboard$", "config", "configuration", "url", "worker", "setupSearchWorker", "query", "getComponentElement", "result", "tx$", "rx$", "filter", "isSearchQueryMessage", "sample", "isSearchReadyMessage", "take", "mode", "key", "active", "getActiveElement", "anchors", "anchor", "getElements", "article", "best", "a", "b", "setToggle", "els", "i", "query$", "mountSearchQuery", "result$", "mountSearchResult", "merge", "mergeWith", "getComponentElements", "child", "mountSearchShare", "mountSearchSuggest", "err", "NEVER", "mountSearchHiglight", "el", "index$", "location$", "combineLatest", "startWith", "getLocation", "filter", "url", "map", "index", "setupSearchHighlighter", "fn", "_a", "nodes", "it", "node", "original", "replaced", "text", "childNodes", "h", "watchSidebar", "el", "viewport$", "main$", "parent", "adjust", "combineLatest", "map", "offset", "height", "y", "distinctUntilChanged", "a", "b", "mountSidebar", "_a", "_b", "header$", "options", "__objRest", "inner", "getElement", "getElementOffset", "defer", "push$", "Subject", "auditTime", "animationFrameScheduler", "withLatestFrom", "observeOn", "take", "item", "getElements", "container", "getElementContainer", "getElementSize", "tap", "state", "finalize", "__spreadValues", "fetchSourceFactsFromGitHub", "user", "repo", "url", "zip", "requestJSON", "catchError", "EMPTY", "map", "release", "defaultIfEmpty", "info", "__spreadValues", "fetchSourceFactsFromGitLab", "base", "project", "url", "requestJSON", "catchError", "EMPTY", "map", "star_count", "forks_count", "defaultIfEmpty", "fetchSourceFacts", "url", "type", "user", "repo", "fetchSourceFactsFromGitHub", "base", "slug", "fetchSourceFactsFromGitLab", "EMPTY", "fetch$", "watchSource", "el", "defer", "cached", "of", "getComponentElements", "consent", "EMPTY", "fetchSourceFacts", "tap", "facts", "catchError", "filter", "map", "shareReplay", "mountSource", "inner", "getElement", "push$", "Subject", "renderSourceFacts", "state", "finalize", "__spreadValues", "watchTabs", "el", "viewport$", "header$", "watchElementSize", "switchMap", "watchViewportAt", "map", "y", "distinctUntilKeyChanged", "mountTabs", "options", "defer", "push$", "Subject", "hidden", "feature", "of", "tap", "state", "finalize", "__spreadValues", "watchTableOfContents", "el", "viewport$", "header$", "table", "anchors", "getElements", "anchor", "id", "target", "getOptionalElement", "adjust$", "distinctUntilKeyChanged", "map", "height", "main", "getComponentElement", "grid", "getElement", "share", "watchElementSize", "switchMap", "body", "defer", "path", "of", "index", "offset", "a", "b", "combineLatestWith", "adjust", "scan", "prev", "next", "y", "size", "last", "distinctUntilChanged", "startWith", "bufferCount", "mountTableOfContents", "target$", "push$", "Subject", "done$", "takeLast", "feature", "smooth$", "merge", "debounceTime", "filter", "withLatestFrom", "behavior", "container", "getElementContainer", "getElementSize", "takeUntil", "skip", "repeat", "url", "getLocation", "active", "hash", "tap", "state", "finalize", "__spreadValues", "watchBackToTop", "_el", "viewport$", "main$", "target$", "direction$", "map", "y", "bufferCount", "a", "b", "distinctUntilChanged", "active$", "active", "combineLatest", "direction", "takeUntil", "skip", "endWith", "repeat", "hidden", "mountBackToTop", "el", "header$", "push$", "Subject", "done$", "takeLast", "distinctUntilKeyChanged", "height", "tap", "state", "finalize", "__spreadValues", "patchIndeterminate", "document$", "tablet$", "switchMap", "getElements", "tap", "el", "mergeMap", "fromEvent", "takeWhile", "map", "withLatestFrom", "tablet", "isAppleDevice", "patchScrollfix", "document$", "switchMap", "getElements", "tap", "el", "filter", "mergeMap", "fromEvent", "map", "top", "patchScrolllock", "viewport$", "tablet$", "combineLatest", "watchToggle", "map", "active", "tablet", "switchMap", "of", "delay", "withLatestFrom", "y", "value", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "document$", "watchDocument", "location$", "watchLocation", "target$", "watchLocationTarget", "keyboard$", "watchKeyboard", "viewport$", "watchViewport", "tablet$", "watchMedia", "screen$", "print$", "watchPrint", "config", "configuration", "index$", "requestJSON", "NEVER", "alert$", "Subject", "setupClipboardJS", "feature", "setupInstantLoading", "_a", "setupVersionSelector", "merge", "delay", "setToggle", "filter", "mode", "key", "prev", "getOptionalElement", "next", "patchIndeterminate", "patchScrollfix", "patchScrolllock", "header$", "watchHeader", "getComponentElement", "main$", "map", "switchMap", "el", "watchMain", "shareReplay", "control$", "getComponentElements", "mountConsent", "mountDialog", "mountHeader", "mountPalette", "mountSearch", "mountSource", "content$", "defer", "mountAnnounce", "mountContent", "mountSearchHiglight", "EMPTY", "mountHeaderTitle", "at", "mountSidebar", "mountTabs", "mountTableOfContents", "mountBackToTop", "component$", "mergeWith"] +} diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.ar.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.ar.min.js new file mode 100644 index 0000000000..248ddc5d14 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.ar.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ar=function(){this.pipeline.reset(),this.pipeline.add(e.ar.trimmer,e.ar.stopWordFilter,e.ar.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ar.stemmer))},e.ar.wordCharacters="ء-ٛٱـ",e.ar.trimmer=e.trimmerSupport.generateTrimmer(e.ar.wordCharacters),e.Pipeline.registerFunction(e.ar.trimmer,"trimmer-ar"),e.ar.stemmer=function(){var e=this;return e.result=!1,e.preRemoved=!1,e.sufRemoved=!1,e.pre={pre1:"ف ك ب و س ل ن ا ي ت",pre2:"ال لل",pre3:"بال وال فال تال كال ولل",pre4:"فبال كبال وبال وكال"},e.suf={suf1:"ه ك ت ن ا ي",suf2:"نك نه ها وك يا اه ون ين تن تم نا وا ان كم كن ني نن ما هم هن تك ته ات يه",suf3:"تين كهم نيه نهم ونه وها يهم ونا ونك وني وهم تكم تنا تها تني تهم كما كها ناه نكم هنا تان يها",suf4:"كموه ناها ونني ونهم تكما تموه تكاه كماه ناكم ناهم نيها وننا"},e.patterns=JSON.parse('{"pt43":[{"pt":[{"c":"ا","l":1}]},{"pt":[{"c":"ا,ت,ن,ي","l":0}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"و","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ي","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ا","l":2},{"c":"ل","l":3,"m":3}]},{"pt":[{"c":"م","l":0}]}],"pt53":[{"pt":[{"c":"ت","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":3},{"c":"ل","l":3,"m":4},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":3}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ن","l":4}]},{"pt":[{"c":"ت","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"م","l":0},{"c":"و","l":3}]},{"pt":[{"c":"ا","l":1},{"c":"و","l":3}]},{"pt":[{"c":"و","l":1},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"ا","l":2},{"c":"ن","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":1},{"c":"ا","l":3}]},{"pt":[{"c":"ي,ت,ا,ن","l":0},{"c":"ت","l":1}],"mPt":[{"c":"ف","l":0,"m":2},{"c":"ع","l":1,"m":3},{"c":"ا","l":2},{"c":"ل","l":3,"m":4}]},{"pt":[{"c":"ت,ي,ا,ن","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":2},{"c":"ي","l":3}]},{"pt":[{"c":"ا,ي,ت,ن","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ء","l":4}]}],"pt63":[{"pt":[{"c":"ا","l":0},{"c":"ت","l":2},{"c":"ا","l":4}]},{"pt":[{"c":"ا,ت,ن,ي","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"و","l":3}]},{"pt":[{"c":"م","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ي","l":1},{"c":"ي","l":3},{"c":"ا","l":4},{"c":"ء","l":5}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ا","l":4}]}],"pt54":[{"pt":[{"c":"ت","l":0}]},{"pt":[{"c":"ا,ي,ت,ن","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"م","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":2}]}],"pt64":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":1}]}],"pt73":[{"pt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ا","l":5}]}],"pt75":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":5}]}]}'),e.execArray=["cleanWord","removeDiacritics","cleanAlef","removeStopWords","normalizeHamzaAndAlef","removeStartWaw","removePre432","removeEndTaa","wordCheck"],e.stem=function(){var r=0;for(e.result=!1,e.preRemoved=!1,e.sufRemoved=!1;r=0)return!0},e.normalizeHamzaAndAlef=function(){return e.word=e.word.replace("ؤ","ء"),e.word=e.word.replace("ئ","ء"),e.word=e.word.replace(/([\u0627])\1+/gi,"ا"),!1},e.removeEndTaa=function(){return!(e.word.length>2)||(e.word=e.word.replace(/[\u0627]$/,""),e.word=e.word.replace("ة",""),!1)},e.removeStartWaw=function(){return e.word.length>3&&"و"==e.word[0]&&"و"==e.word[1]&&(e.word=e.word.slice(1)),!1},e.removePre432=function(){var r=e.word;if(e.word.length>=7){var t=new RegExp("^("+e.pre.pre4.split(" ").join("|")+")");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=6){var c=new RegExp("^("+e.pre.pre3.split(" ").join("|")+")");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=5){var l=new RegExp("^("+e.pre.pre2.split(" ").join("|")+")");e.word=e.word.replace(l,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.patternCheck=function(r){for(var t=0;t3){var t=new RegExp("^("+e.pre.pre1.split(" ").join("|")+")");e.word=e.word.replace(t,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.removeSuf1=function(){var r=e.word;if(0==e.sufRemoved&&e.word.length>3){var t=new RegExp("("+e.suf.suf1.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.removeSuf432=function(){var r=e.word;if(e.word.length>=6){var t=new RegExp("("+e.suf.suf4.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=5){var c=new RegExp("("+e.suf.suf3.split(" ").join("|")+")$");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=4){var l=new RegExp("("+e.suf.suf2.split(" ").join("|")+")$");e.word=e.word.replace(l,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.wordCheck=function(){for(var r=(e.word,[e.removeSuf432,e.removeSuf1,e.removePre1]),t=0,c=!1;e.word.length>=7&&!e.result&&t=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.de.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.de.min.js new file mode 100644 index 0000000000..f3b5c108c9 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.de.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `German` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!v.eq_s(1,e)||(v.ket=v.cursor,!v.in_grouping(p,97,252)))&&(v.slice_from(r),v.cursor=n,!0)}function i(){for(var r,n,i,s,t=v.cursor;;)if(r=v.cursor,v.bra=r,v.eq_s(1,"ß"))v.ket=v.cursor,v.slice_from("ss");else{if(r>=v.limit)break;v.cursor=r+1}for(v.cursor=t;;)for(n=v.cursor;;){if(i=v.cursor,v.in_grouping(p,97,252)){if(s=v.cursor,v.bra=s,e("u","U",i))break;if(v.cursor=s,e("y","Y",i))break}if(i>=v.limit)return void(v.cursor=n);v.cursor=i+1}}function s(){for(;!v.in_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}for(;!v.out_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}return!1}function t(){m=v.limit,l=m;var e=v.cursor+3;0<=e&&e<=v.limit&&(d=e,s()||(m=v.cursor,m=v.limit)return;v.cursor++}}}function c(){return m<=v.cursor}function u(){return l<=v.cursor}function a(){var e,r,n,i,s=v.limit-v.cursor;if(v.ket=v.cursor,(e=v.find_among_b(w,7))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:v.slice_del(),v.ket=v.cursor,v.eq_s_b(1,"s")&&(v.bra=v.cursor,v.eq_s_b(3,"nis")&&v.slice_del());break;case 3:v.in_grouping_b(g,98,116)&&v.slice_del()}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(f,4))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:if(v.in_grouping_b(k,98,116)){var t=v.cursor-3;v.limit_backward<=t&&t<=v.limit&&(v.cursor=t,v.slice_del())}}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(_,8))&&(v.bra=v.cursor,u()))switch(e){case 1:v.slice_del(),v.ket=v.cursor,v.eq_s_b(2,"ig")&&(v.bra=v.cursor,r=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-r,u()&&v.slice_del()));break;case 2:n=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-n,v.slice_del());break;case 3:if(v.slice_del(),v.ket=v.cursor,i=v.limit-v.cursor,!v.eq_s_b(2,"er")&&(v.cursor=v.limit-i,!v.eq_s_b(2,"en")))break;v.bra=v.cursor,c()&&v.slice_del();break;case 4:v.slice_del(),v.ket=v.cursor,e=v.find_among_b(b,2),e&&(v.bra=v.cursor,u()&&1==e&&v.slice_del())}}var d,l,m,h=[new r("",-1,6),new r("U",0,2),new r("Y",0,1),new r("ä",0,3),new r("ö",0,4),new r("ü",0,5)],w=[new r("e",-1,2),new r("em",-1,1),new r("en",-1,2),new r("ern",-1,1),new r("er",-1,1),new r("s",-1,3),new r("es",5,2)],f=[new r("en",-1,1),new r("er",-1,1),new r("st",-1,2),new r("est",2,1)],b=[new r("ig",-1,1),new r("lich",-1,1)],_=[new r("end",-1,1),new r("ig",-1,2),new r("ung",-1,1),new r("lich",-1,3),new r("isch",-1,2),new r("ik",-1,2),new r("heit",-1,3),new r("keit",-1,4)],p=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],g=[117,30,5],k=[117,30,4],v=new n;this.setCurrent=function(e){v.setCurrent(e)},this.getCurrent=function(){return v.getCurrent()},this.stem=function(){var e=v.cursor;return i(),v.cursor=e,t(),v.limit_backward=e,v.cursor=v.limit,a(),v.cursor=v.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.du.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.du.min.js new file mode 100644 index 0000000000..49a0f3f0ac --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.du.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e,r,i,o=C.cursor;;){if(C.bra=C.cursor,e=C.find_among(b,11))switch(C.ket=C.cursor,e){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(r=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=r);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=r;else if(n(r))break}else if(n(r))break}function n(e){return C.cursor=e,e>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,f=_,t()||(_=C.cursor,_<3&&(_=3),t()||(f=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var e;;)if(C.bra=C.cursor,e=C.find_among(p,3))switch(C.ket=C.cursor,e){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return f<=C.cursor}function a(){var e=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-e,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var e;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.slice_del(),w=!0,a())))}function m(){var e;u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.eq_s_b(3,"gem")||(C.cursor=C.limit-e,C.slice_del(),a())))}function d(){var e,r,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,e=C.find_among_b(h,5))switch(C.bra=C.cursor,e){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(z,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(r=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-r,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,e=C.find_among_b(k,6))switch(C.bra=C.cursor,e){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(j,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var f,_,w,b=[new r("",-1,6),new r("á",0,1),new r("ä",0,1),new r("é",0,2),new r("ë",0,2),new r("í",0,3),new r("ï",0,3),new r("ó",0,4),new r("ö",0,4),new r("ú",0,5),new r("ü",0,5)],p=[new r("",-1,3),new r("I",0,2),new r("Y",0,1)],g=[new r("dd",-1,-1),new r("kk",-1,-1),new r("tt",-1,-1)],h=[new r("ene",-1,2),new r("se",-1,3),new r("en",-1,2),new r("heden",2,1),new r("s",-1,3)],k=[new r("end",-1,1),new r("ig",-1,2),new r("ing",-1,1),new r("lijk",-1,3),new r("baar",-1,4),new r("bar",-1,5)],v=[new r("aa",-1,-1),new r("ee",-1,-1),new r("oo",-1,-1),new r("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(e){C.setCurrent(e)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var r=C.cursor;return e(),C.cursor=r,o(),C.limit_backward=r,C.cursor=C.limit,d(),C.cursor=C.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.es.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.es.min.js new file mode 100644 index 0000000000..2989d34265 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.es.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Spanish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.es=function(){this.pipeline.reset(),this.pipeline.add(e.es.trimmer,e.es.stopWordFilter,e.es.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.es.stemmer))},e.es.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.es.trimmer=e.trimmerSupport.generateTrimmer(e.es.wordCharacters),e.Pipeline.registerFunction(e.es.trimmer,"trimmer-es"),e.es.stemmer=function(){var s=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(){if(A.out_grouping(x,97,252)){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}return!0}function n(){if(A.in_grouping(x,97,252)){var s=A.cursor;if(e()){if(A.cursor=s,!A.in_grouping(x,97,252))return!0;for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}}return!1}return!0}function i(){var s,r=A.cursor;if(n()){if(A.cursor=r,!A.out_grouping(x,97,252))return;if(s=A.cursor,e()){if(A.cursor=s,!A.in_grouping(x,97,252)||A.cursor>=A.limit)return;A.cursor++}}g=A.cursor}function a(){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}return!0}function t(){var e=A.cursor;g=A.limit,p=g,v=g,i(),A.cursor=e,a()&&(p=A.cursor,a()&&(v=A.cursor))}function o(){for(var e;;){if(A.bra=A.cursor,e=A.find_among(k,6))switch(A.ket=A.cursor,e){case 1:A.slice_from("a");continue;case 2:A.slice_from("e");continue;case 3:A.slice_from("i");continue;case 4:A.slice_from("o");continue;case 5:A.slice_from("u");continue;case 6:if(A.cursor>=A.limit)break;A.cursor++;continue}break}}function u(){return g<=A.cursor}function w(){return p<=A.cursor}function c(){return v<=A.cursor}function m(){var e;if(A.ket=A.cursor,A.find_among_b(y,13)&&(A.bra=A.cursor,(e=A.find_among_b(q,11))&&u()))switch(e){case 1:A.bra=A.cursor,A.slice_from("iendo");break;case 2:A.bra=A.cursor,A.slice_from("ando");break;case 3:A.bra=A.cursor,A.slice_from("ar");break;case 4:A.bra=A.cursor,A.slice_from("er");break;case 5:A.bra=A.cursor,A.slice_from("ir");break;case 6:A.slice_del();break;case 7:A.eq_s_b(1,"u")&&A.slice_del()}}function l(e,s){if(!c())return!0;A.slice_del(),A.ket=A.cursor;var r=A.find_among_b(e,s);return r&&(A.bra=A.cursor,1==r&&c()&&A.slice_del()),!1}function d(e){return!c()||(A.slice_del(),A.ket=A.cursor,A.eq_s_b(2,e)&&(A.bra=A.cursor,c()&&A.slice_del()),!1)}function b(){var e;if(A.ket=A.cursor,e=A.find_among_b(S,46)){switch(A.bra=A.cursor,e){case 1:if(!c())return!1;A.slice_del();break;case 2:if(d("ic"))return!1;break;case 3:if(!c())return!1;A.slice_from("log");break;case 4:if(!c())return!1;A.slice_from("u");break;case 5:if(!c())return!1;A.slice_from("ente");break;case 6:if(!w())return!1;A.slice_del(),A.ket=A.cursor,e=A.find_among_b(C,4),e&&(A.bra=A.cursor,c()&&(A.slice_del(),1==e&&(A.ket=A.cursor,A.eq_s_b(2,"at")&&(A.bra=A.cursor,c()&&A.slice_del()))));break;case 7:if(l(P,3))return!1;break;case 8:if(l(F,3))return!1;break;case 9:if(d("at"))return!1}return!0}return!1}function f(){var e,s;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(W,12),A.limit_backward=s,e)){if(A.bra=A.cursor,1==e){if(!A.eq_s_b(1,"u"))return!1;A.slice_del()}return!0}return!1}function _(){var e,s,r,n;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(L,96),A.limit_backward=s,e))switch(A.bra=A.cursor,e){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"u")?(n=A.limit-A.cursor,A.eq_s_b(1,"g")?A.cursor=A.limit-n:A.cursor=A.limit-r):A.cursor=A.limit-r,A.bra=A.cursor;case 2:A.slice_del()}}function h(){var e,s;if(A.ket=A.cursor,e=A.find_among_b(z,8))switch(A.bra=A.cursor,e){case 1:u()&&A.slice_del();break;case 2:u()&&(A.slice_del(),A.ket=A.cursor,A.eq_s_b(1,"u")&&(A.bra=A.cursor,s=A.limit-A.cursor,A.eq_s_b(1,"g")&&(A.cursor=A.limit-s,u()&&A.slice_del())))}}var v,p,g,k=[new s("",-1,6),new s("á",0,1),new s("é",0,2),new s("í",0,3),new s("ó",0,4),new s("ú",0,5)],y=[new s("la",-1,-1),new s("sela",0,-1),new s("le",-1,-1),new s("me",-1,-1),new s("se",-1,-1),new s("lo",-1,-1),new s("selo",5,-1),new s("las",-1,-1),new s("selas",7,-1),new s("les",-1,-1),new s("los",-1,-1),new s("selos",10,-1),new s("nos",-1,-1)],q=[new s("ando",-1,6),new s("iendo",-1,6),new s("yendo",-1,7),new s("ándo",-1,2),new s("iéndo",-1,1),new s("ar",-1,6),new s("er",-1,6),new s("ir",-1,6),new s("ár",-1,3),new s("ér",-1,4),new s("ír",-1,5)],C=[new s("ic",-1,-1),new s("ad",-1,-1),new s("os",-1,-1),new s("iv",-1,1)],P=[new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,1)],F=[new s("ic",-1,1),new s("abil",-1,1),new s("iv",-1,1)],S=[new s("ica",-1,1),new s("ancia",-1,2),new s("encia",-1,5),new s("adora",-1,2),new s("osa",-1,1),new s("ista",-1,1),new s("iva",-1,9),new s("anza",-1,1),new s("logía",-1,3),new s("idad",-1,8),new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,2),new s("mente",-1,7),new s("amente",13,6),new s("ación",-1,2),new s("ución",-1,4),new s("ico",-1,1),new s("ismo",-1,1),new s("oso",-1,1),new s("amiento",-1,1),new s("imiento",-1,1),new s("ivo",-1,9),new s("ador",-1,2),new s("icas",-1,1),new s("ancias",-1,2),new s("encias",-1,5),new s("adoras",-1,2),new s("osas",-1,1),new s("istas",-1,1),new s("ivas",-1,9),new s("anzas",-1,1),new s("logías",-1,3),new s("idades",-1,8),new s("ables",-1,1),new s("ibles",-1,1),new s("aciones",-1,2),new s("uciones",-1,4),new s("adores",-1,2),new s("antes",-1,2),new s("icos",-1,1),new s("ismos",-1,1),new s("osos",-1,1),new s("amientos",-1,1),new s("imientos",-1,1),new s("ivos",-1,9)],W=[new s("ya",-1,1),new s("ye",-1,1),new s("yan",-1,1),new s("yen",-1,1),new s("yeron",-1,1),new s("yendo",-1,1),new s("yo",-1,1),new s("yas",-1,1),new s("yes",-1,1),new s("yais",-1,1),new s("yamos",-1,1),new s("yó",-1,1)],L=[new s("aba",-1,2),new s("ada",-1,2),new s("ida",-1,2),new s("ara",-1,2),new s("iera",-1,2),new s("ía",-1,2),new s("aría",5,2),new s("ería",5,2),new s("iría",5,2),new s("ad",-1,2),new s("ed",-1,2),new s("id",-1,2),new s("ase",-1,2),new s("iese",-1,2),new s("aste",-1,2),new s("iste",-1,2),new s("an",-1,2),new s("aban",16,2),new s("aran",16,2),new s("ieran",16,2),new s("ían",16,2),new s("arían",20,2),new s("erían",20,2),new s("irían",20,2),new s("en",-1,1),new s("asen",24,2),new s("iesen",24,2),new s("aron",-1,2),new s("ieron",-1,2),new s("arán",-1,2),new s("erán",-1,2),new s("irán",-1,2),new s("ado",-1,2),new s("ido",-1,2),new s("ando",-1,2),new s("iendo",-1,2),new s("ar",-1,2),new s("er",-1,2),new s("ir",-1,2),new s("as",-1,2),new s("abas",39,2),new s("adas",39,2),new s("idas",39,2),new s("aras",39,2),new s("ieras",39,2),new s("ías",39,2),new s("arías",45,2),new s("erías",45,2),new s("irías",45,2),new s("es",-1,1),new s("ases",49,2),new s("ieses",49,2),new s("abais",-1,2),new s("arais",-1,2),new s("ierais",-1,2),new s("íais",-1,2),new s("aríais",55,2),new s("eríais",55,2),new s("iríais",55,2),new s("aseis",-1,2),new s("ieseis",-1,2),new s("asteis",-1,2),new s("isteis",-1,2),new s("áis",-1,2),new s("éis",-1,1),new s("aréis",64,2),new s("eréis",64,2),new s("iréis",64,2),new s("ados",-1,2),new s("idos",-1,2),new s("amos",-1,2),new s("ábamos",70,2),new s("áramos",70,2),new s("iéramos",70,2),new s("íamos",70,2),new s("aríamos",74,2),new s("eríamos",74,2),new s("iríamos",74,2),new s("emos",-1,1),new s("aremos",78,2),new s("eremos",78,2),new s("iremos",78,2),new s("ásemos",78,2),new s("iésemos",78,2),new s("imos",-1,2),new s("arás",-1,2),new s("erás",-1,2),new s("irás",-1,2),new s("ís",-1,2),new s("ará",-1,2),new s("erá",-1,2),new s("irá",-1,2),new s("aré",-1,2),new s("eré",-1,2),new s("iré",-1,2),new s("ió",-1,2)],z=[new s("a",-1,1),new s("e",-1,2),new s("o",-1,1),new s("os",-1,1),new s("á",-1,1),new s("é",-1,2),new s("í",-1,1),new s("ó",-1,1)],x=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],A=new r;this.setCurrent=function(e){A.setCurrent(e)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return t(),A.limit_backward=e,A.cursor=A.limit,m(),A.cursor=A.limit,b()||(A.cursor=A.limit,f()||(A.cursor=A.limit,_())),A.cursor=A.limit,h(),A.cursor=A.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.fi.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.fi.min.js new file mode 100644 index 0000000000..29f5dfcea8 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.fi.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Finnish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=function(){var e=i.stemmerSupport.Among,r=i.stemmerSupport.SnowballProgram,n=new function(){function i(){f=A.limit,d=f,n()||(f=A.cursor,n()||(d=A.cursor))}function n(){for(var i;;){if(i=A.cursor,A.in_grouping(W,97,246))break;if(A.cursor=i,i>=A.limit)return!0;A.cursor++}for(A.cursor=i;!A.out_grouping(W,97,246);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}function t(){return d<=A.cursor}function s(){var i,e;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(h,10)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.in_grouping_b(x,97,246))return;break;case 2:if(!t())return}A.slice_del()}else A.limit_backward=e}function o(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(v,9))switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"k")||(A.cursor=A.limit-r,A.slice_del());break;case 2:A.slice_del(),A.ket=A.cursor,A.eq_s_b(3,"kse")&&(A.bra=A.cursor,A.slice_from("ksi"));break;case 3:A.slice_del();break;case 4:A.find_among_b(p,6)&&A.slice_del();break;case 5:A.find_among_b(g,6)&&A.slice_del();break;case 6:A.find_among_b(j,2)&&A.slice_del()}else A.limit_backward=e}function l(){return A.find_among_b(q,7)}function a(){return A.eq_s_b(1,"i")&&A.in_grouping_b(L,97,246)}function u(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(C,30)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.eq_s_b(1,"a"))return;break;case 2:case 9:if(!A.eq_s_b(1,"e"))return;break;case 3:if(!A.eq_s_b(1,"i"))return;break;case 4:if(!A.eq_s_b(1,"o"))return;break;case 5:if(!A.eq_s_b(1,"ä"))return;break;case 6:if(!A.eq_s_b(1,"ö"))return;break;case 7:if(r=A.limit-A.cursor,!l()&&(A.cursor=A.limit-r,!A.eq_s_b(2,"ie"))){A.cursor=A.limit-r;break}if(A.cursor=A.limit-r,A.cursor<=A.limit_backward){A.cursor=A.limit-r;break}A.cursor--,A.bra=A.cursor;break;case 8:if(!A.in_grouping_b(W,97,246)||!A.out_grouping_b(W,97,246))return}A.slice_del(),k=!0}else A.limit_backward=e}function c(){var i,e,r;if(A.cursor>=d)if(e=A.limit_backward,A.limit_backward=d,A.ket=A.cursor,i=A.find_among_b(P,14)){if(A.bra=A.cursor,A.limit_backward=e,1==i){if(r=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-r}A.slice_del()}else A.limit_backward=e}function m(){var i;A.cursor>=f&&(i=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.find_among_b(F,2)?(A.bra=A.cursor,A.limit_backward=i,A.slice_del()):A.limit_backward=i)}function w(){var i,e,r,n,t,s;if(A.cursor>=f){if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.eq_s_b(1,"t")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.in_grouping_b(W,97,246)&&(A.cursor=A.limit-r,A.slice_del(),A.limit_backward=e,n=A.limit-A.cursor,A.cursor>=d&&(A.cursor=d,t=A.limit_backward,A.limit_backward=A.cursor,A.cursor=A.limit-n,A.ket=A.cursor,i=A.find_among_b(S,2))))){if(A.bra=A.cursor,A.limit_backward=t,1==i){if(s=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-s}return void A.slice_del()}A.limit_backward=e}}function _(){var i,e,r,n;if(A.cursor>=f){for(i=A.limit_backward,A.limit_backward=f,e=A.limit-A.cursor,l()&&(A.cursor=A.limit-e,A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.in_grouping_b(y,97,228)&&(A.bra=A.cursor,A.out_grouping_b(W,97,246)&&A.slice_del()),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"j")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.eq_s_b(1,"o")?A.slice_del():(A.cursor=A.limit-r,A.eq_s_b(1,"u")&&A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"o")&&(A.bra=A.cursor,A.eq_s_b(1,"j")&&A.slice_del()),A.cursor=A.limit-e,A.limit_backward=i;;){if(n=A.limit-A.cursor,A.out_grouping_b(W,97,246)){A.cursor=A.limit-n;break}if(A.cursor=A.limit-n,A.cursor<=A.limit_backward)return;A.cursor--}A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,b=A.slice_to(),A.eq_v_b(b)&&A.slice_del())}}var k,b,d,f,h=[new e("pa",-1,1),new e("sti",-1,2),new e("kaan",-1,1),new e("han",-1,1),new e("kin",-1,1),new e("hän",-1,1),new e("kään",-1,1),new e("ko",-1,1),new e("pä",-1,1),new e("kö",-1,1)],p=[new e("lla",-1,-1),new e("na",-1,-1),new e("ssa",-1,-1),new e("ta",-1,-1),new e("lta",3,-1),new e("sta",3,-1)],g=[new e("llä",-1,-1),new e("nä",-1,-1),new e("ssä",-1,-1),new e("tä",-1,-1),new e("ltä",3,-1),new e("stä",3,-1)],j=[new e("lle",-1,-1),new e("ine",-1,-1)],v=[new e("nsa",-1,3),new e("mme",-1,3),new e("nne",-1,3),new e("ni",-1,2),new e("si",-1,1),new e("an",-1,4),new e("en",-1,6),new e("än",-1,5),new e("nsä",-1,3)],q=[new e("aa",-1,-1),new e("ee",-1,-1),new e("ii",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1),new e("ää",-1,-1),new e("öö",-1,-1)],C=[new e("a",-1,8),new e("lla",0,-1),new e("na",0,-1),new e("ssa",0,-1),new e("ta",0,-1),new e("lta",4,-1),new e("sta",4,-1),new e("tta",4,9),new e("lle",-1,-1),new e("ine",-1,-1),new e("ksi",-1,-1),new e("n",-1,7),new e("han",11,1),new e("den",11,-1,a),new e("seen",11,-1,l),new e("hen",11,2),new e("tten",11,-1,a),new e("hin",11,3),new e("siin",11,-1,a),new e("hon",11,4),new e("hän",11,5),new e("hön",11,6),new e("ä",-1,8),new e("llä",22,-1),new e("nä",22,-1),new e("ssä",22,-1),new e("tä",22,-1),new e("ltä",26,-1),new e("stä",26,-1),new e("ttä",26,9)],P=[new e("eja",-1,-1),new e("mma",-1,1),new e("imma",1,-1),new e("mpa",-1,1),new e("impa",3,-1),new e("mmi",-1,1),new e("immi",5,-1),new e("mpi",-1,1),new e("impi",7,-1),new e("ejä",-1,-1),new e("mmä",-1,1),new e("immä",10,-1),new e("mpä",-1,1),new e("impä",12,-1)],F=[new e("i",-1,-1),new e("j",-1,-1)],S=[new e("mma",-1,1),new e("imma",0,-1)],y=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],W=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],x=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],A=new r;this.setCurrent=function(i){A.setCurrent(i)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return i(),k=!1,A.limit_backward=e,A.cursor=A.limit,s(),A.cursor=A.limit,o(),A.cursor=A.limit,u(),A.cursor=A.limit,c(),A.cursor=A.limit,k?(m(),A.cursor=A.limit):(A.cursor=A.limit,w(),A.cursor=A.limit),_(),!0}};return function(i){return"function"==typeof i.update?i.update(function(i){return n.setCurrent(i),n.stem(),n.getCurrent()}):(n.setCurrent(i),n.stem(),n.getCurrent())}}(),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.fr.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.fr.min.js new file mode 100644 index 0000000000..68cd0094ae --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.fr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `French` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,s){return!(!W.eq_s(1,e)||(W.ket=W.cursor,!W.in_grouping(F,97,251)))&&(W.slice_from(r),W.cursor=s,!0)}function i(e,r,s){return!!W.eq_s(1,e)&&(W.ket=W.cursor,W.slice_from(r),W.cursor=s,!0)}function n(){for(var r,s;;){if(r=W.cursor,W.in_grouping(F,97,251)){if(W.bra=W.cursor,s=W.cursor,e("u","U",r))continue;if(W.cursor=s,e("i","I",r))continue;if(W.cursor=s,i("y","Y",r))continue}if(W.cursor=r,W.bra=r,!e("y","Y",r)){if(W.cursor=r,W.eq_s(1,"q")&&(W.bra=W.cursor,i("u","U",r)))continue;if(W.cursor=r,r>=W.limit)return;W.cursor++}}}function t(){for(;!W.in_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}for(;!W.out_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}return!1}function u(){var e=W.cursor;if(q=W.limit,g=q,p=q,W.in_grouping(F,97,251)&&W.in_grouping(F,97,251)&&W.cursor=W.limit){W.cursor=q;break}W.cursor++}while(!W.in_grouping(F,97,251))}q=W.cursor,W.cursor=e,t()||(g=W.cursor,t()||(p=W.cursor))}function o(){for(var e,r;;){if(r=W.cursor,W.bra=r,!(e=W.find_among(h,4)))break;switch(W.ket=W.cursor,e){case 1:W.slice_from("i");break;case 2:W.slice_from("u");break;case 3:W.slice_from("y");break;case 4:if(W.cursor>=W.limit)return;W.cursor++}}}function c(){return q<=W.cursor}function a(){return g<=W.cursor}function l(){return p<=W.cursor}function w(){var e,r;if(W.ket=W.cursor,e=W.find_among_b(C,43)){switch(W.bra=W.cursor,e){case 1:if(!l())return!1;W.slice_del();break;case 2:if(!l())return!1;W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")&&(W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU"));break;case 3:if(!l())return!1;W.slice_from("log");break;case 4:if(!l())return!1;W.slice_from("u");break;case 5:if(!l())return!1;W.slice_from("ent");break;case 6:if(!c())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(z,6))switch(W.bra=W.cursor,e){case 1:l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&W.slice_del()));break;case 2:l()?W.slice_del():a()&&W.slice_from("eux");break;case 3:l()&&W.slice_del();break;case 4:c()&&W.slice_from("i")}break;case 7:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(y,3))switch(W.bra=W.cursor,e){case 1:l()?W.slice_del():W.slice_from("abl");break;case 2:l()?W.slice_del():W.slice_from("iqU");break;case 3:l()&&W.slice_del()}break;case 8:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")))){W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU");break}break;case 9:W.slice_from("eau");break;case 10:if(!a())return!1;W.slice_from("al");break;case 11:if(l())W.slice_del();else{if(!a())return!1;W.slice_from("eux")}break;case 12:if(!a()||!W.out_grouping_b(F,97,251))return!1;W.slice_del();break;case 13:return c()&&W.slice_from("ant"),!1;case 14:return c()&&W.slice_from("ent"),!1;case 15:return r=W.limit-W.cursor,W.in_grouping_b(F,97,251)&&c()&&(W.cursor=W.limit-r,W.slice_del()),!1}return!0}return!1}function f(){var e,r;if(W.cursor=q){if(s=W.limit_backward,W.limit_backward=q,W.ket=W.cursor,e=W.find_among_b(P,7))switch(W.bra=W.cursor,e){case 1:if(l()){if(i=W.limit-W.cursor,!W.eq_s_b(1,"s")&&(W.cursor=W.limit-i,!W.eq_s_b(1,"t")))break;W.slice_del()}break;case 2:W.slice_from("i");break;case 3:W.slice_del();break;case 4:W.eq_s_b(2,"gu")&&W.slice_del()}W.limit_backward=s}}function b(){var e=W.limit-W.cursor;W.find_among_b(U,5)&&(W.cursor=W.limit-e,W.ket=W.cursor,W.cursor>W.limit_backward&&(W.cursor--,W.bra=W.cursor,W.slice_del()))}function d(){for(var e,r=1;W.out_grouping_b(F,97,251);)r--;if(r<=0){if(W.ket=W.cursor,e=W.limit-W.cursor,!W.eq_s_b(1,"é")&&(W.cursor=W.limit-e,!W.eq_s_b(1,"è")))return;W.bra=W.cursor,W.slice_from("e")}}function k(){if(!w()&&(W.cursor=W.limit,!f()&&(W.cursor=W.limit,!m())))return W.cursor=W.limit,void _();W.cursor=W.limit,W.ket=W.cursor,W.eq_s_b(1,"Y")?(W.bra=W.cursor,W.slice_from("i")):(W.cursor=W.limit,W.eq_s_b(1,"ç")&&(W.bra=W.cursor,W.slice_from("c")))}var p,g,q,v=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],h=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],z=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],y=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],C=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],x=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],I=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],P=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],U=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],F=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],S=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],W=new s;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){var e=W.cursor;return n(),W.cursor=e,u(),W.limit_backward=e,W.cursor=W.limit,k(),W.cursor=W.limit,b(),W.cursor=W.limit,d(),W.cursor=W.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.hi.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.hi.min.js new file mode 100644 index 0000000000..7dbc41402c --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.hi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.hu.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.hu.min.js new file mode 100644 index 0000000000..ed9d909f73 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.hu.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Hungarian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,n=L.cursor;if(d=L.limit,L.in_grouping(W,97,252))for(;;){if(e=L.cursor,L.out_grouping(W,97,252))return L.cursor=e,L.find_among(g,8)||(L.cursor=e,e=L.limit)return void(d=e);L.cursor++}if(L.cursor=n,L.out_grouping(W,97,252)){for(;!L.in_grouping(W,97,252);){if(L.cursor>=L.limit)return;L.cursor++}d=L.cursor}}function i(){return d<=L.cursor}function a(){var e;if(L.ket=L.cursor,(e=L.find_among_b(h,2))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e")}}function t(){var e=L.limit-L.cursor;return!!L.find_among_b(p,23)&&(L.cursor=L.limit-e,!0)}function s(){if(L.cursor>L.limit_backward){L.cursor--,L.ket=L.cursor;var e=L.cursor-1;L.limit_backward<=e&&e<=L.limit&&(L.cursor=e,L.bra=e,L.slice_del())}}function c(){var e;if(L.ket=L.cursor,(e=L.find_among_b(_,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function o(){L.ket=L.cursor,L.find_among_b(v,44)&&(L.bra=L.cursor,i()&&(L.slice_del(),a()))}function w(){var e;if(L.ket=L.cursor,(e=L.find_among_b(z,3))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("e");break;case 2:case 3:L.slice_from("a")}}function l(){var e;if(L.ket=L.cursor,(e=L.find_among_b(y,6))&&(L.bra=L.cursor,i()))switch(e){case 1:case 2:L.slice_del();break;case 3:L.slice_from("a");break;case 4:L.slice_from("e")}}function u(){var e;if(L.ket=L.cursor,(e=L.find_among_b(j,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function m(){var e;if(L.ket=L.cursor,(e=L.find_among_b(C,7))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:L.slice_del()}}function k(){var e;if(L.ket=L.cursor,(e=L.find_among_b(P,12))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 9:L.slice_del();break;case 2:case 5:case 8:L.slice_from("e");break;case 3:case 6:L.slice_from("a")}}function f(){var e;if(L.ket=L.cursor,(e=L.find_among_b(F,31))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:L.slice_del();break;case 2:case 5:case 10:case 14:case 19:L.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:L.slice_from("e")}}function b(){var e;if(L.ket=L.cursor,(e=L.find_among_b(S,42))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:L.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:L.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:L.slice_from("e")}}var d,g=[new n("cs",-1,-1),new n("dzs",-1,-1),new n("gy",-1,-1),new n("ly",-1,-1),new n("ny",-1,-1),new n("sz",-1,-1),new n("ty",-1,-1),new n("zs",-1,-1)],h=[new n("á",-1,1),new n("é",-1,2)],p=[new n("bb",-1,-1),new n("cc",-1,-1),new n("dd",-1,-1),new n("ff",-1,-1),new n("gg",-1,-1),new n("jj",-1,-1),new n("kk",-1,-1),new n("ll",-1,-1),new n("mm",-1,-1),new n("nn",-1,-1),new n("pp",-1,-1),new n("rr",-1,-1),new n("ccs",-1,-1),new n("ss",-1,-1),new n("zzs",-1,-1),new n("tt",-1,-1),new n("vv",-1,-1),new n("ggy",-1,-1),new n("lly",-1,-1),new n("nny",-1,-1),new n("tty",-1,-1),new n("ssz",-1,-1),new n("zz",-1,-1)],_=[new n("al",-1,1),new n("el",-1,2)],v=[new n("ba",-1,-1),new n("ra",-1,-1),new n("be",-1,-1),new n("re",-1,-1),new n("ig",-1,-1),new n("nak",-1,-1),new n("nek",-1,-1),new n("val",-1,-1),new n("vel",-1,-1),new n("ul",-1,-1),new n("nál",-1,-1),new n("nél",-1,-1),new n("ból",-1,-1),new n("ról",-1,-1),new n("tól",-1,-1),new n("bõl",-1,-1),new n("rõl",-1,-1),new n("tõl",-1,-1),new n("ül",-1,-1),new n("n",-1,-1),new n("an",19,-1),new n("ban",20,-1),new n("en",19,-1),new n("ben",22,-1),new n("képpen",22,-1),new n("on",19,-1),new n("ön",19,-1),new n("képp",-1,-1),new n("kor",-1,-1),new n("t",-1,-1),new n("at",29,-1),new n("et",29,-1),new n("ként",29,-1),new n("anként",32,-1),new n("enként",32,-1),new n("onként",32,-1),new n("ot",29,-1),new n("ért",29,-1),new n("öt",29,-1),new n("hez",-1,-1),new n("hoz",-1,-1),new n("höz",-1,-1),new n("vá",-1,-1),new n("vé",-1,-1)],z=[new n("án",-1,2),new n("én",-1,1),new n("ánként",-1,3)],y=[new n("stul",-1,2),new n("astul",0,1),new n("ástul",0,3),new n("stül",-1,2),new n("estül",3,1),new n("éstül",3,4)],j=[new n("á",-1,1),new n("é",-1,2)],C=[new n("k",-1,7),new n("ak",0,4),new n("ek",0,6),new n("ok",0,5),new n("ák",0,1),new n("ék",0,2),new n("ök",0,3)],P=[new n("éi",-1,7),new n("áéi",0,6),new n("ééi",0,5),new n("é",-1,9),new n("ké",3,4),new n("aké",4,1),new n("eké",4,1),new n("oké",4,1),new n("áké",4,3),new n("éké",4,2),new n("öké",4,1),new n("éé",3,8)],F=[new n("a",-1,18),new n("ja",0,17),new n("d",-1,16),new n("ad",2,13),new n("ed",2,13),new n("od",2,13),new n("ád",2,14),new n("éd",2,15),new n("öd",2,13),new n("e",-1,18),new n("je",9,17),new n("nk",-1,4),new n("unk",11,1),new n("ánk",11,2),new n("énk",11,3),new n("ünk",11,1),new n("uk",-1,8),new n("juk",16,7),new n("ájuk",17,5),new n("ük",-1,8),new n("jük",19,7),new n("éjük",20,6),new n("m",-1,12),new n("am",22,9),new n("em",22,9),new n("om",22,9),new n("ám",22,10),new n("ém",22,11),new n("o",-1,18),new n("á",-1,19),new n("é",-1,20)],S=[new n("id",-1,10),new n("aid",0,9),new n("jaid",1,6),new n("eid",0,9),new n("jeid",3,6),new n("áid",0,7),new n("éid",0,8),new n("i",-1,15),new n("ai",7,14),new n("jai",8,11),new n("ei",7,14),new n("jei",10,11),new n("ái",7,12),new n("éi",7,13),new n("itek",-1,24),new n("eitek",14,21),new n("jeitek",15,20),new n("éitek",14,23),new n("ik",-1,29),new n("aik",18,26),new n("jaik",19,25),new n("eik",18,26),new n("jeik",21,25),new n("áik",18,27),new n("éik",18,28),new n("ink",-1,20),new n("aink",25,17),new n("jaink",26,16),new n("eink",25,17),new n("jeink",28,16),new n("áink",25,18),new n("éink",25,19),new n("aitok",-1,21),new n("jaitok",32,20),new n("áitok",-1,22),new n("im",-1,5),new n("aim",35,4),new n("jaim",36,1),new n("eim",35,4),new n("jeim",38,1),new n("áim",35,2),new n("éim",35,3)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var n=L.cursor;return e(),L.limit_backward=n,L.cursor=L.limit,c(),L.cursor=L.limit,o(),L.cursor=L.limit,w(),L.cursor=L.limit,l(),L.cursor=L.limit,u(),L.cursor=L.limit,k(),L.cursor=L.limit,f(),L.cursor=L.limit,b(),L.cursor=L.limit,m(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.it.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.it.min.js new file mode 100644 index 0000000000..344b6a3c0c --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.it.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Italian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!x.eq_s(1,e)||(x.ket=x.cursor,!x.in_grouping(L,97,249)))&&(x.slice_from(r),x.cursor=n,!0)}function i(){for(var r,n,i,o,t=x.cursor;;){if(x.bra=x.cursor,r=x.find_among(h,7))switch(x.ket=x.cursor,r){case 1:x.slice_from("à");continue;case 2:x.slice_from("è");continue;case 3:x.slice_from("ì");continue;case 4:x.slice_from("ò");continue;case 5:x.slice_from("ù");continue;case 6:x.slice_from("qU");continue;case 7:if(x.cursor>=x.limit)break;x.cursor++;continue}break}for(x.cursor=t;;)for(n=x.cursor;;){if(i=x.cursor,x.in_grouping(L,97,249)){if(x.bra=x.cursor,o=x.cursor,e("u","U",i))break;if(x.cursor=o,e("i","I",i))break}if(x.cursor=i,x.cursor>=x.limit)return void(x.cursor=n);x.cursor++}}function o(e){if(x.cursor=e,!x.in_grouping(L,97,249))return!1;for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function t(){if(x.in_grouping(L,97,249)){var e=x.cursor;if(x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return o(e);x.cursor++}return!0}return o(e)}return!1}function s(){var e,r=x.cursor;if(!t()){if(x.cursor=r,!x.out_grouping(L,97,249))return;if(e=x.cursor,x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return x.cursor=e,void(x.in_grouping(L,97,249)&&x.cursor=x.limit)return;x.cursor++}k=x.cursor}function a(){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function u(){var e=x.cursor;k=x.limit,p=k,g=k,s(),x.cursor=e,a()&&(p=x.cursor,a()&&(g=x.cursor))}function c(){for(var e;;){if(x.bra=x.cursor,!(e=x.find_among(q,3)))break;switch(x.ket=x.cursor,e){case 1:x.slice_from("i");break;case 2:x.slice_from("u");break;case 3:if(x.cursor>=x.limit)return;x.cursor++}}}function w(){return k<=x.cursor}function l(){return p<=x.cursor}function m(){return g<=x.cursor}function f(){var e;if(x.ket=x.cursor,x.find_among_b(C,37)&&(x.bra=x.cursor,(e=x.find_among_b(z,5))&&w()))switch(e){case 1:x.slice_del();break;case 2:x.slice_from("e")}}function v(){var e;if(x.ket=x.cursor,!(e=x.find_among_b(S,51)))return!1;switch(x.bra=x.cursor,e){case 1:if(!m())return!1;x.slice_del();break;case 2:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del());break;case 3:if(!m())return!1;x.slice_from("log");break;case 4:if(!m())return!1;x.slice_from("u");break;case 5:if(!m())return!1;x.slice_from("ente");break;case 6:if(!w())return!1;x.slice_del();break;case 7:if(!l())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(P,4),e&&(x.bra=x.cursor,m()&&(x.slice_del(),1==e&&(x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&x.slice_del()))));break;case 8:if(!m())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(F,3),e&&(x.bra=x.cursor,1==e&&m()&&x.slice_del());break;case 9:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del())))}return!0}function b(){var e,r;x.cursor>=k&&(r=x.limit_backward,x.limit_backward=k,x.ket=x.cursor,e=x.find_among_b(W,87),e&&(x.bra=x.cursor,1==e&&x.slice_del()),x.limit_backward=r)}function d(){var e=x.limit-x.cursor;if(x.ket=x.cursor,x.in_grouping_b(y,97,242)&&(x.bra=x.cursor,w()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(1,"i")&&(x.bra=x.cursor,w()))))return void x.slice_del();x.cursor=x.limit-e}function _(){d(),x.ket=x.cursor,x.eq_s_b(1,"h")&&(x.bra=x.cursor,x.in_grouping_b(U,99,103)&&w()&&x.slice_del())}var g,p,k,h=[new r("",-1,7),new r("qu",0,6),new r("á",0,1),new r("é",0,2),new r("í",0,3),new r("ó",0,4),new r("ú",0,5)],q=[new r("",-1,3),new r("I",0,1),new r("U",0,2)],C=[new r("la",-1,-1),new r("cela",0,-1),new r("gliela",0,-1),new r("mela",0,-1),new r("tela",0,-1),new r("vela",0,-1),new r("le",-1,-1),new r("cele",6,-1),new r("gliele",6,-1),new r("mele",6,-1),new r("tele",6,-1),new r("vele",6,-1),new r("ne",-1,-1),new r("cene",12,-1),new r("gliene",12,-1),new r("mene",12,-1),new r("sene",12,-1),new r("tene",12,-1),new r("vene",12,-1),new r("ci",-1,-1),new r("li",-1,-1),new r("celi",20,-1),new r("glieli",20,-1),new r("meli",20,-1),new r("teli",20,-1),new r("veli",20,-1),new r("gli",20,-1),new r("mi",-1,-1),new r("si",-1,-1),new r("ti",-1,-1),new r("vi",-1,-1),new r("lo",-1,-1),new r("celo",31,-1),new r("glielo",31,-1),new r("melo",31,-1),new r("telo",31,-1),new r("velo",31,-1)],z=[new r("ando",-1,1),new r("endo",-1,1),new r("ar",-1,2),new r("er",-1,2),new r("ir",-1,2)],P=[new r("ic",-1,-1),new r("abil",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],F=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],S=[new r("ica",-1,1),new r("logia",-1,3),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,9),new r("anza",-1,1),new r("enza",-1,5),new r("ice",-1,1),new r("atrice",7,1),new r("iche",-1,1),new r("logie",-1,3),new r("abile",-1,1),new r("ibile",-1,1),new r("usione",-1,4),new r("azione",-1,2),new r("uzione",-1,4),new r("atore",-1,2),new r("ose",-1,1),new r("ante",-1,1),new r("mente",-1,1),new r("amente",19,7),new r("iste",-1,1),new r("ive",-1,9),new r("anze",-1,1),new r("enze",-1,5),new r("ici",-1,1),new r("atrici",25,1),new r("ichi",-1,1),new r("abili",-1,1),new r("ibili",-1,1),new r("ismi",-1,1),new r("usioni",-1,4),new r("azioni",-1,2),new r("uzioni",-1,4),new r("atori",-1,2),new r("osi",-1,1),new r("anti",-1,1),new r("amenti",-1,6),new r("imenti",-1,6),new r("isti",-1,1),new r("ivi",-1,9),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,6),new r("imento",-1,6),new r("ivo",-1,9),new r("ità",-1,8),new r("istà",-1,1),new r("istè",-1,1),new r("istì",-1,1)],W=[new r("isca",-1,1),new r("enda",-1,1),new r("ata",-1,1),new r("ita",-1,1),new r("uta",-1,1),new r("ava",-1,1),new r("eva",-1,1),new r("iva",-1,1),new r("erebbe",-1,1),new r("irebbe",-1,1),new r("isce",-1,1),new r("ende",-1,1),new r("are",-1,1),new r("ere",-1,1),new r("ire",-1,1),new r("asse",-1,1),new r("ate",-1,1),new r("avate",16,1),new r("evate",16,1),new r("ivate",16,1),new r("ete",-1,1),new r("erete",20,1),new r("irete",20,1),new r("ite",-1,1),new r("ereste",-1,1),new r("ireste",-1,1),new r("ute",-1,1),new r("erai",-1,1),new r("irai",-1,1),new r("isci",-1,1),new r("endi",-1,1),new r("erei",-1,1),new r("irei",-1,1),new r("assi",-1,1),new r("ati",-1,1),new r("iti",-1,1),new r("eresti",-1,1),new r("iresti",-1,1),new r("uti",-1,1),new r("avi",-1,1),new r("evi",-1,1),new r("ivi",-1,1),new r("isco",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("Yamo",-1,1),new r("iamo",-1,1),new r("avamo",-1,1),new r("evamo",-1,1),new r("ivamo",-1,1),new r("eremo",-1,1),new r("iremo",-1,1),new r("assimo",-1,1),new r("ammo",-1,1),new r("emmo",-1,1),new r("eremmo",54,1),new r("iremmo",54,1),new r("immo",-1,1),new r("ano",-1,1),new r("iscano",58,1),new r("avano",58,1),new r("evano",58,1),new r("ivano",58,1),new r("eranno",-1,1),new r("iranno",-1,1),new r("ono",-1,1),new r("iscono",65,1),new r("arono",65,1),new r("erono",65,1),new r("irono",65,1),new r("erebbero",-1,1),new r("irebbero",-1,1),new r("assero",-1,1),new r("essero",-1,1),new r("issero",-1,1),new r("ato",-1,1),new r("ito",-1,1),new r("uto",-1,1),new r("avo",-1,1),new r("evo",-1,1),new r("ivo",-1,1),new r("ar",-1,1),new r("ir",-1,1),new r("erà",-1,1),new r("irà",-1,1),new r("erò",-1,1),new r("irò",-1,1)],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],y=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],U=[17],x=new n;this.setCurrent=function(e){x.setCurrent(e)},this.getCurrent=function(){return x.getCurrent()},this.stem=function(){var e=x.cursor;return i(),x.cursor=e,u(),x.limit_backward=e,x.cursor=x.limit,f(),x.cursor=x.limit,v()||(x.cursor=x.limit,b()),x.cursor=x.limit,_(),x.cursor=x.limit_backward,c(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.ja.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.ja.min.js new file mode 100644 index 0000000000..5f254ebe91 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.ja.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(e=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=e);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=e;else if(n(e))break}else if(n(e))break}function n(r){return C.cursor=r,r>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,d=_,t()||(_=C.cursor,_<3&&(_=3),t()||(d=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var r;;)if(C.bra=C.cursor,r=C.find_among(p,3))switch(C.ket=C.cursor,r){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return d<=C.cursor}function a(){var r=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-r,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var r;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.slice_del(),w=!0,a())))}function m(){var r;u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.eq_s_b(3,"gem")||(C.cursor=C.limit-r,C.slice_del(),a())))}function f(){var r,e,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,r=C.find_among_b(h,5))switch(C.bra=C.cursor,r){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(j,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(e=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-e,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,r=C.find_among_b(k,6))switch(C.bra=C.cursor,r){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(z,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var d,_,w,b=[new e("",-1,6),new e("á",0,1),new e("ä",0,1),new e("é",0,2),new e("ë",0,2),new e("í",0,3),new e("ï",0,3),new e("ó",0,4),new e("ö",0,4),new e("ú",0,5),new e("ü",0,5)],p=[new e("",-1,3),new e("I",0,2),new e("Y",0,1)],g=[new e("dd",-1,-1),new e("kk",-1,-1),new e("tt",-1,-1)],h=[new e("ene",-1,2),new e("se",-1,3),new e("en",-1,2),new e("heden",2,1),new e("s",-1,3)],k=[new e("end",-1,1),new e("ig",-1,2),new e("ing",-1,1),new e("lijk",-1,3),new e("baar",-1,4),new e("bar",-1,5)],v=[new e("aa",-1,-1),new e("ee",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(r){C.setCurrent(r)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var e=C.cursor;return r(),C.cursor=e,o(),C.limit_backward=e,C.cursor=C.limit,f(),C.cursor=C.limit_backward,s(),!0}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.no.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.no.min.js new file mode 100644 index 0000000000..92bc7e4e89 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.no.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Norwegian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.pt.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.pt.min.js new file mode 100644 index 0000000000..6c16996d65 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.pt.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Portuguese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(k,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("a~");continue;case 2:z.slice_from("o~");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function n(){if(z.out_grouping(y,97,250)){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!0;z.cursor++}return!1}return!0}function i(){if(z.in_grouping(y,97,250))for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return g=z.cursor,!0}function o(){var e,r,s=z.cursor;if(z.in_grouping(y,97,250))if(e=z.cursor,n()){if(z.cursor=e,i())return}else g=z.cursor;if(z.cursor=s,z.out_grouping(y,97,250)){if(r=z.cursor,n()){if(z.cursor=r,!z.in_grouping(y,97,250)||z.cursor>=z.limit)return;z.cursor++}g=z.cursor}}function t(){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return!0}function a(){var e=z.cursor;g=z.limit,b=g,h=g,o(),z.cursor=e,t()&&(b=z.cursor,t()&&(h=z.cursor))}function u(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(q,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("ã");continue;case 2:z.slice_from("õ");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function w(){return g<=z.cursor}function m(){return b<=z.cursor}function c(){return h<=z.cursor}function l(){var e;if(z.ket=z.cursor,!(e=z.find_among_b(F,45)))return!1;switch(z.bra=z.cursor,e){case 1:if(!c())return!1;z.slice_del();break;case 2:if(!c())return!1;z.slice_from("log");break;case 3:if(!c())return!1;z.slice_from("u");break;case 4:if(!c())return!1;z.slice_from("ente");break;case 5:if(!m())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(j,4),e&&(z.bra=z.cursor,c()&&(z.slice_del(),1==e&&(z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del()))));break;case 6:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(C,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 7:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(P,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 8:if(!c())return!1;z.slice_del(),z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del());break;case 9:if(!w()||!z.eq_s_b(1,"e"))return!1;z.slice_from("ir")}return!0}function f(){var e,r;if(z.cursor>=g){if(r=z.limit_backward,z.limit_backward=g,z.ket=z.cursor,e=z.find_among_b(S,120))return z.bra=z.cursor,1==e&&z.slice_del(),z.limit_backward=r,!0;z.limit_backward=r}return!1}function d(){var e;z.ket=z.cursor,(e=z.find_among_b(W,7))&&(z.bra=z.cursor,1==e&&w()&&z.slice_del())}function v(e,r){if(z.eq_s_b(1,e)){z.bra=z.cursor;var s=z.limit-z.cursor;if(z.eq_s_b(1,r))return z.cursor=z.limit-s,w()&&z.slice_del(),!1}return!0}function p(){var e;if(z.ket=z.cursor,e=z.find_among_b(L,4))switch(z.bra=z.cursor,e){case 1:w()&&(z.slice_del(),z.ket=z.cursor,z.limit-z.cursor,v("u","g")&&v("i","c"));break;case 2:z.slice_from("c")}}function _(){if(!l()&&(z.cursor=z.limit,!f()))return z.cursor=z.limit,void d();z.cursor=z.limit,z.ket=z.cursor,z.eq_s_b(1,"i")&&(z.bra=z.cursor,z.eq_s_b(1,"c")&&(z.cursor=z.limit,w()&&z.slice_del()))}var h,b,g,k=[new r("",-1,3),new r("ã",0,1),new r("õ",0,2)],q=[new r("",-1,3),new r("a~",0,1),new r("o~",0,2)],j=[new r("ic",-1,-1),new r("ad",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],C=[new r("ante",-1,1),new r("avel",-1,1),new r("ível",-1,1)],P=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],F=[new r("ica",-1,1),new r("ância",-1,1),new r("ência",-1,4),new r("ira",-1,9),new r("adora",-1,1),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,8),new r("eza",-1,1),new r("logía",-1,2),new r("idade",-1,7),new r("ante",-1,1),new r("mente",-1,6),new r("amente",12,5),new r("ável",-1,1),new r("ível",-1,1),new r("ución",-1,3),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,1),new r("imento",-1,1),new r("ivo",-1,8),new r("aça~o",-1,1),new r("ador",-1,1),new r("icas",-1,1),new r("ências",-1,4),new r("iras",-1,9),new r("adoras",-1,1),new r("osas",-1,1),new r("istas",-1,1),new r("ivas",-1,8),new r("ezas",-1,1),new r("logías",-1,2),new r("idades",-1,7),new r("uciones",-1,3),new r("adores",-1,1),new r("antes",-1,1),new r("aço~es",-1,1),new r("icos",-1,1),new r("ismos",-1,1),new r("osos",-1,1),new r("amentos",-1,1),new r("imentos",-1,1),new r("ivos",-1,8)],S=[new r("ada",-1,1),new r("ida",-1,1),new r("ia",-1,1),new r("aria",2,1),new r("eria",2,1),new r("iria",2,1),new r("ara",-1,1),new r("era",-1,1),new r("ira",-1,1),new r("ava",-1,1),new r("asse",-1,1),new r("esse",-1,1),new r("isse",-1,1),new r("aste",-1,1),new r("este",-1,1),new r("iste",-1,1),new r("ei",-1,1),new r("arei",16,1),new r("erei",16,1),new r("irei",16,1),new r("am",-1,1),new r("iam",20,1),new r("ariam",21,1),new r("eriam",21,1),new r("iriam",21,1),new r("aram",20,1),new r("eram",20,1),new r("iram",20,1),new r("avam",20,1),new r("em",-1,1),new r("arem",29,1),new r("erem",29,1),new r("irem",29,1),new r("assem",29,1),new r("essem",29,1),new r("issem",29,1),new r("ado",-1,1),new r("ido",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("indo",-1,1),new r("ara~o",-1,1),new r("era~o",-1,1),new r("ira~o",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("ir",-1,1),new r("as",-1,1),new r("adas",47,1),new r("idas",47,1),new r("ias",47,1),new r("arias",50,1),new r("erias",50,1),new r("irias",50,1),new r("aras",47,1),new r("eras",47,1),new r("iras",47,1),new r("avas",47,1),new r("es",-1,1),new r("ardes",58,1),new r("erdes",58,1),new r("irdes",58,1),new r("ares",58,1),new r("eres",58,1),new r("ires",58,1),new r("asses",58,1),new r("esses",58,1),new r("isses",58,1),new r("astes",58,1),new r("estes",58,1),new r("istes",58,1),new r("is",-1,1),new r("ais",71,1),new r("eis",71,1),new r("areis",73,1),new r("ereis",73,1),new r("ireis",73,1),new r("áreis",73,1),new r("éreis",73,1),new r("íreis",73,1),new r("ásseis",73,1),new r("ésseis",73,1),new r("ísseis",73,1),new r("áveis",73,1),new r("íeis",73,1),new r("aríeis",84,1),new r("eríeis",84,1),new r("iríeis",84,1),new r("ados",-1,1),new r("idos",-1,1),new r("amos",-1,1),new r("áramos",90,1),new r("éramos",90,1),new r("íramos",90,1),new r("ávamos",90,1),new r("íamos",90,1),new r("aríamos",95,1),new r("eríamos",95,1),new r("iríamos",95,1),new r("emos",-1,1),new r("aremos",99,1),new r("eremos",99,1),new r("iremos",99,1),new r("ássemos",99,1),new r("êssemos",99,1),new r("íssemos",99,1),new r("imos",-1,1),new r("armos",-1,1),new r("ermos",-1,1),new r("irmos",-1,1),new r("ámos",-1,1),new r("arás",-1,1),new r("erás",-1,1),new r("irás",-1,1),new r("eu",-1,1),new r("iu",-1,1),new r("ou",-1,1),new r("ará",-1,1),new r("erá",-1,1),new r("irá",-1,1)],W=[new r("a",-1,1),new r("i",-1,1),new r("o",-1,1),new r("os",-1,1),new r("á",-1,1),new r("í",-1,1),new r("ó",-1,1)],L=[new r("e",-1,1),new r("ç",-1,2),new r("é",-1,1),new r("ê",-1,1)],y=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],z=new s;this.setCurrent=function(e){z.setCurrent(e)},this.getCurrent=function(){return z.getCurrent()},this.stem=function(){var r=z.cursor;return e(),z.cursor=r,a(),z.limit_backward=r,z.cursor=z.limit,_(),z.cursor=z.limit,p(),z.cursor=z.limit_backward,u(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.ro.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.ro.min.js new file mode 100644 index 0000000000..7277140181 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.ro.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Romanian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=function(){var i=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(e,i){L.eq_s(1,e)&&(L.ket=L.cursor,L.in_grouping(W,97,259)&&L.slice_from(i))}function n(){for(var i,r;;){if(i=L.cursor,L.in_grouping(W,97,259)&&(r=L.cursor,L.bra=r,e("u","U"),L.cursor=r,e("i","I")),L.cursor=i,L.cursor>=L.limit)break;L.cursor++}}function t(){if(L.out_grouping(W,97,259)){for(;!L.in_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}return!0}function a(){if(L.in_grouping(W,97,259))for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}function o(){var e,i,r=L.cursor;if(L.in_grouping(W,97,259)){if(e=L.cursor,!t())return void(h=L.cursor);if(L.cursor=e,!a())return void(h=L.cursor)}L.cursor=r,L.out_grouping(W,97,259)&&(i=L.cursor,t()&&(L.cursor=i,L.in_grouping(W,97,259)&&L.cursor=L.limit)return!1;L.cursor++}for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!1;L.cursor++}return!0}function c(){var e=L.cursor;h=L.limit,k=h,g=h,o(),L.cursor=e,u()&&(k=L.cursor,u()&&(g=L.cursor))}function s(){for(var e;;){if(L.bra=L.cursor,e=L.find_among(z,3))switch(L.ket=L.cursor,e){case 1:L.slice_from("i");continue;case 2:L.slice_from("u");continue;case 3:if(L.cursor>=L.limit)break;L.cursor++;continue}break}}function w(){return h<=L.cursor}function m(){return k<=L.cursor}function l(){return g<=L.cursor}function f(){var e,i;if(L.ket=L.cursor,(e=L.find_among_b(C,16))&&(L.bra=L.cursor,m()))switch(e){case 1:L.slice_del();break;case 2:L.slice_from("a");break;case 3:L.slice_from("e");break;case 4:L.slice_from("i");break;case 5:i=L.limit-L.cursor,L.eq_s_b(2,"ab")||(L.cursor=L.limit-i,L.slice_from("i"));break;case 6:L.slice_from("at");break;case 7:L.slice_from("aţi")}}function p(){var e,i=L.limit-L.cursor;if(L.ket=L.cursor,(e=L.find_among_b(P,46))&&(L.bra=L.cursor,m())){switch(e){case 1:L.slice_from("abil");break;case 2:L.slice_from("ibil");break;case 3:L.slice_from("iv");break;case 4:L.slice_from("ic");break;case 5:L.slice_from("at");break;case 6:L.slice_from("it")}return _=!0,L.cursor=L.limit-i,!0}return!1}function d(){var e,i;for(_=!1;;)if(i=L.limit-L.cursor,!p()){L.cursor=L.limit-i;break}if(L.ket=L.cursor,(e=L.find_among_b(F,62))&&(L.bra=L.cursor,l())){switch(e){case 1:L.slice_del();break;case 2:L.eq_s_b(1,"ţ")&&(L.bra=L.cursor,L.slice_from("t"));break;case 3:L.slice_from("ist")}_=!0}}function b(){var e,i,r;if(L.cursor>=h){if(i=L.limit_backward,L.limit_backward=h,L.ket=L.cursor,e=L.find_among_b(q,94))switch(L.bra=L.cursor,e){case 1:if(r=L.limit-L.cursor,!L.out_grouping_b(W,97,259)&&(L.cursor=L.limit-r,!L.eq_s_b(1,"u")))break;case 2:L.slice_del()}L.limit_backward=i}}function v(){var e;L.ket=L.cursor,(e=L.find_among_b(S,5))&&(L.bra=L.cursor,w()&&1==e&&L.slice_del())}var _,g,k,h,z=[new i("",-1,3),new i("I",0,1),new i("U",0,2)],C=[new i("ea",-1,3),new i("aţia",-1,7),new i("aua",-1,2),new i("iua",-1,4),new i("aţie",-1,7),new i("ele",-1,3),new i("ile",-1,5),new i("iile",6,4),new i("iei",-1,4),new i("atei",-1,6),new i("ii",-1,4),new i("ului",-1,1),new i("ul",-1,1),new i("elor",-1,3),new i("ilor",-1,4),new i("iilor",14,4)],P=[new i("icala",-1,4),new i("iciva",-1,4),new i("ativa",-1,5),new i("itiva",-1,6),new i("icale",-1,4),new i("aţiune",-1,5),new i("iţiune",-1,6),new i("atoare",-1,5),new i("itoare",-1,6),new i("ătoare",-1,5),new i("icitate",-1,4),new i("abilitate",-1,1),new i("ibilitate",-1,2),new i("ivitate",-1,3),new i("icive",-1,4),new i("ative",-1,5),new i("itive",-1,6),new i("icali",-1,4),new i("atori",-1,5),new i("icatori",18,4),new i("itori",-1,6),new i("ători",-1,5),new i("icitati",-1,4),new i("abilitati",-1,1),new i("ivitati",-1,3),new i("icivi",-1,4),new i("ativi",-1,5),new i("itivi",-1,6),new i("icităi",-1,4),new i("abilităi",-1,1),new i("ivităi",-1,3),new i("icităţi",-1,4),new i("abilităţi",-1,1),new i("ivităţi",-1,3),new i("ical",-1,4),new i("ator",-1,5),new i("icator",35,4),new i("itor",-1,6),new i("ător",-1,5),new i("iciv",-1,4),new i("ativ",-1,5),new i("itiv",-1,6),new i("icală",-1,4),new i("icivă",-1,4),new i("ativă",-1,5),new i("itivă",-1,6)],F=[new i("ica",-1,1),new i("abila",-1,1),new i("ibila",-1,1),new i("oasa",-1,1),new i("ata",-1,1),new i("ita",-1,1),new i("anta",-1,1),new i("ista",-1,3),new i("uta",-1,1),new i("iva",-1,1),new i("ic",-1,1),new i("ice",-1,1),new i("abile",-1,1),new i("ibile",-1,1),new i("isme",-1,3),new i("iune",-1,2),new i("oase",-1,1),new i("ate",-1,1),new i("itate",17,1),new i("ite",-1,1),new i("ante",-1,1),new i("iste",-1,3),new i("ute",-1,1),new i("ive",-1,1),new i("ici",-1,1),new i("abili",-1,1),new i("ibili",-1,1),new i("iuni",-1,2),new i("atori",-1,1),new i("osi",-1,1),new i("ati",-1,1),new i("itati",30,1),new i("iti",-1,1),new i("anti",-1,1),new i("isti",-1,3),new i("uti",-1,1),new i("işti",-1,3),new i("ivi",-1,1),new i("ităi",-1,1),new i("oşi",-1,1),new i("ităţi",-1,1),new i("abil",-1,1),new i("ibil",-1,1),new i("ism",-1,3),new i("ator",-1,1),new i("os",-1,1),new i("at",-1,1),new i("it",-1,1),new i("ant",-1,1),new i("ist",-1,3),new i("ut",-1,1),new i("iv",-1,1),new i("ică",-1,1),new i("abilă",-1,1),new i("ibilă",-1,1),new i("oasă",-1,1),new i("ată",-1,1),new i("ită",-1,1),new i("antă",-1,1),new i("istă",-1,3),new i("ută",-1,1),new i("ivă",-1,1)],q=[new i("ea",-1,1),new i("ia",-1,1),new i("esc",-1,1),new i("ăsc",-1,1),new i("ind",-1,1),new i("ând",-1,1),new i("are",-1,1),new i("ere",-1,1),new i("ire",-1,1),new i("âre",-1,1),new i("se",-1,2),new i("ase",10,1),new i("sese",10,2),new i("ise",10,1),new i("use",10,1),new i("âse",10,1),new i("eşte",-1,1),new i("ăşte",-1,1),new i("eze",-1,1),new i("ai",-1,1),new i("eai",19,1),new i("iai",19,1),new i("sei",-1,2),new i("eşti",-1,1),new i("ăşti",-1,1),new i("ui",-1,1),new i("ezi",-1,1),new i("âi",-1,1),new i("aşi",-1,1),new i("seşi",-1,2),new i("aseşi",29,1),new i("seseşi",29,2),new i("iseşi",29,1),new i("useşi",29,1),new i("âseşi",29,1),new i("işi",-1,1),new i("uşi",-1,1),new i("âşi",-1,1),new i("aţi",-1,2),new i("eaţi",38,1),new i("iaţi",38,1),new i("eţi",-1,2),new i("iţi",-1,2),new i("âţi",-1,2),new i("arăţi",-1,1),new i("serăţi",-1,2),new i("aserăţi",45,1),new i("seserăţi",45,2),new i("iserăţi",45,1),new i("userăţi",45,1),new i("âserăţi",45,1),new i("irăţi",-1,1),new i("urăţi",-1,1),new i("ârăţi",-1,1),new i("am",-1,1),new i("eam",54,1),new i("iam",54,1),new i("em",-1,2),new i("asem",57,1),new i("sesem",57,2),new i("isem",57,1),new i("usem",57,1),new i("âsem",57,1),new i("im",-1,2),new i("âm",-1,2),new i("ăm",-1,2),new i("arăm",65,1),new i("serăm",65,2),new i("aserăm",67,1),new i("seserăm",67,2),new i("iserăm",67,1),new i("userăm",67,1),new i("âserăm",67,1),new i("irăm",65,1),new i("urăm",65,1),new i("ârăm",65,1),new i("au",-1,1),new i("eau",76,1),new i("iau",76,1),new i("indu",-1,1),new i("ându",-1,1),new i("ez",-1,1),new i("ească",-1,1),new i("ară",-1,1),new i("seră",-1,2),new i("aseră",84,1),new i("seseră",84,2),new i("iseră",84,1),new i("useră",84,1),new i("âseră",84,1),new i("iră",-1,1),new i("ură",-1,1),new i("âră",-1,1),new i("ează",-1,1)],S=[new i("a",-1,1),new i("e",-1,1),new i("ie",1,1),new i("i",-1,1),new i("ă",-1,1)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var e=L.cursor;return n(),L.cursor=e,c(),L.limit_backward=e,L.cursor=L.limit,f(),L.cursor=L.limit,d(),L.cursor=L.limit,_||(L.cursor=L.limit,b(),L.cursor=L.limit),v(),L.cursor=L.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.ru.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.ru.min.js new file mode 100644 index 0000000000..186cc485c2 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.ru.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Russian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,t=new function(){function e(){for(;!W.in_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function t(){for(;!W.out_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function w(){b=W.limit,_=b,e()&&(b=W.cursor,t()&&e()&&t()&&(_=W.cursor))}function i(){return _<=W.cursor}function u(e,n){var r,t;if(W.ket=W.cursor,r=W.find_among_b(e,n)){switch(W.bra=W.cursor,r){case 1:if(t=W.limit-W.cursor,!W.eq_s_b(1,"а")&&(W.cursor=W.limit-t,!W.eq_s_b(1,"я")))return!1;case 2:W.slice_del()}return!0}return!1}function o(){return u(h,9)}function s(e,n){var r;return W.ket=W.cursor,!!(r=W.find_among_b(e,n))&&(W.bra=W.cursor,1==r&&W.slice_del(),!0)}function c(){return s(g,26)}function m(){return!!c()&&(u(C,8),!0)}function f(){return s(k,2)}function l(){return u(P,46)}function a(){s(v,36)}function p(){var e;W.ket=W.cursor,(e=W.find_among_b(F,2))&&(W.bra=W.cursor,i()&&1==e&&W.slice_del())}function d(){var e;if(W.ket=W.cursor,e=W.find_among_b(q,4))switch(W.bra=W.cursor,e){case 1:if(W.slice_del(),W.ket=W.cursor,!W.eq_s_b(1,"н"))break;W.bra=W.cursor;case 2:if(!W.eq_s_b(1,"н"))break;case 3:W.slice_del()}}var _,b,h=[new n("в",-1,1),new n("ив",0,2),new n("ыв",0,2),new n("вши",-1,1),new n("ивши",3,2),new n("ывши",3,2),new n("вшись",-1,1),new n("ившись",6,2),new n("ывшись",6,2)],g=[new n("ее",-1,1),new n("ие",-1,1),new n("ое",-1,1),new n("ые",-1,1),new n("ими",-1,1),new n("ыми",-1,1),new n("ей",-1,1),new n("ий",-1,1),new n("ой",-1,1),new n("ый",-1,1),new n("ем",-1,1),new n("им",-1,1),new n("ом",-1,1),new n("ым",-1,1),new n("его",-1,1),new n("ого",-1,1),new n("ему",-1,1),new n("ому",-1,1),new n("их",-1,1),new n("ых",-1,1),new n("ею",-1,1),new n("ою",-1,1),new n("ую",-1,1),new n("юю",-1,1),new n("ая",-1,1),new n("яя",-1,1)],C=[new n("ем",-1,1),new n("нн",-1,1),new n("вш",-1,1),new n("ивш",2,2),new n("ывш",2,2),new n("щ",-1,1),new n("ющ",5,1),new n("ующ",6,2)],k=[new n("сь",-1,1),new n("ся",-1,1)],P=[new n("ла",-1,1),new n("ила",0,2),new n("ыла",0,2),new n("на",-1,1),new n("ена",3,2),new n("ете",-1,1),new n("ите",-1,2),new n("йте",-1,1),new n("ейте",7,2),new n("уйте",7,2),new n("ли",-1,1),new n("или",10,2),new n("ыли",10,2),new n("й",-1,1),new n("ей",13,2),new n("уй",13,2),new n("л",-1,1),new n("ил",16,2),new n("ыл",16,2),new n("ем",-1,1),new n("им",-1,2),new n("ым",-1,2),new n("н",-1,1),new n("ен",22,2),new n("ло",-1,1),new n("ило",24,2),new n("ыло",24,2),new n("но",-1,1),new n("ено",27,2),new n("нно",27,1),new n("ет",-1,1),new n("ует",30,2),new n("ит",-1,2),new n("ыт",-1,2),new n("ют",-1,1),new n("уют",34,2),new n("ят",-1,2),new n("ны",-1,1),new n("ены",37,2),new n("ть",-1,1),new n("ить",39,2),new n("ыть",39,2),new n("ешь",-1,1),new n("ишь",-1,2),new n("ю",-1,2),new n("ую",44,2)],v=[new n("а",-1,1),new n("ев",-1,1),new n("ов",-1,1),new n("е",-1,1),new n("ие",3,1),new n("ье",3,1),new n("и",-1,1),new n("еи",6,1),new n("ии",6,1),new n("ами",6,1),new n("ями",6,1),new n("иями",10,1),new n("й",-1,1),new n("ей",12,1),new n("ией",13,1),new n("ий",12,1),new n("ой",12,1),new n("ам",-1,1),new n("ем",-1,1),new n("ием",18,1),new n("ом",-1,1),new n("ям",-1,1),new n("иям",21,1),new n("о",-1,1),new n("у",-1,1),new n("ах",-1,1),new n("ях",-1,1),new n("иях",26,1),new n("ы",-1,1),new n("ь",-1,1),new n("ю",-1,1),new n("ию",30,1),new n("ью",30,1),new n("я",-1,1),new n("ия",33,1),new n("ья",33,1)],F=[new n("ост",-1,1),new n("ость",-1,1)],q=[new n("ейше",-1,1),new n("н",-1,2),new n("ейш",-1,1),new n("ь",-1,3)],S=[33,65,8,232],W=new r;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){return w(),W.cursor=W.limit,!(W.cursor=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursors||e>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor>1),f=0,l=o0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.sv.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.sv.min.js new file mode 100644 index 0000000000..3e5eb64000 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.sv.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Swedish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.th.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.th.min.js new file mode 100644 index 0000000000..dee3aac6e5 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.th.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.tr.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.tr.min.js new file mode 100644 index 0000000000..563f6ec1f5 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.tr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Turkish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=function(){var i=r.stemmerSupport.Among,e=r.stemmerSupport.SnowballProgram,n=new function(){function r(r,i,e){for(;;){var n=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(r,i,e)){Dr.cursor=Dr.limit-n;break}if(Dr.cursor=Dr.limit-n,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function n(){var i,e;i=Dr.limit-Dr.cursor,r(Wr,97,305);for(var n=0;nDr.limit_backward&&(Dr.cursor--,e=Dr.limit-Dr.cursor,i()))?(Dr.cursor=Dr.limit-e,!0):(Dr.cursor=Dr.limit-n,r()?(Dr.cursor=Dr.limit-n,!1):(Dr.cursor=Dr.limit-n,!(Dr.cursor<=Dr.limit_backward)&&(Dr.cursor--,!!i()&&(Dr.cursor=Dr.limit-n,!0))))}function u(r){return t(r,function(){return Dr.in_grouping_b(Wr,97,305)})}function o(){return u(function(){return Dr.eq_s_b(1,"n")})}function s(){return u(function(){return Dr.eq_s_b(1,"s")})}function c(){return u(function(){return Dr.eq_s_b(1,"y")})}function l(){return t(function(){return Dr.in_grouping_b(Lr,105,305)},function(){return Dr.out_grouping_b(Wr,97,305)})}function a(){return Dr.find_among_b(ur,10)&&l()}function m(){return n()&&Dr.in_grouping_b(Lr,105,305)&&s()}function d(){return Dr.find_among_b(or,2)}function f(){return n()&&Dr.in_grouping_b(Lr,105,305)&&c()}function b(){return n()&&Dr.find_among_b(sr,4)}function w(){return n()&&Dr.find_among_b(cr,4)&&o()}function _(){return n()&&Dr.find_among_b(lr,2)&&c()}function k(){return n()&&Dr.find_among_b(ar,2)}function p(){return n()&&Dr.find_among_b(mr,4)}function g(){return n()&&Dr.find_among_b(dr,2)}function y(){return n()&&Dr.find_among_b(fr,4)}function z(){return n()&&Dr.find_among_b(br,2)}function v(){return n()&&Dr.find_among_b(wr,2)&&c()}function h(){return Dr.eq_s_b(2,"ki")}function q(){return n()&&Dr.find_among_b(_r,2)&&o()}function C(){return n()&&Dr.find_among_b(kr,4)&&c()}function P(){return n()&&Dr.find_among_b(pr,4)}function F(){return n()&&Dr.find_among_b(gr,4)&&c()}function S(){return Dr.find_among_b(yr,4)}function W(){return n()&&Dr.find_among_b(zr,2)}function L(){return n()&&Dr.find_among_b(vr,4)}function x(){return n()&&Dr.find_among_b(hr,8)}function A(){return Dr.find_among_b(qr,2)}function E(){return n()&&Dr.find_among_b(Cr,32)&&c()}function j(){return Dr.find_among_b(Pr,8)&&c()}function T(){return n()&&Dr.find_among_b(Fr,4)&&c()}function Z(){return Dr.eq_s_b(3,"ken")&&c()}function B(){var r=Dr.limit-Dr.cursor;return!(T()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,Z()))))}function D(){if(A()){var r=Dr.limit-Dr.cursor;if(S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T())return!1}return!0}function G(){if(W()){Dr.bra=Dr.cursor,Dr.slice_del();var r=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,x()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,T()||(Dr.cursor=Dr.limit-r)))),nr=!1,!1}return!0}function H(){if(!L())return!0;var r=Dr.limit-Dr.cursor;return!E()&&(Dr.cursor=Dr.limit-r,!j())}function I(){var r,i=Dr.limit-Dr.cursor;return!(S()||(Dr.cursor=Dr.limit-i,F()||(Dr.cursor=Dr.limit-i,P()||(Dr.cursor=Dr.limit-i,C()))))||(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,T()||(Dr.cursor=Dr.limit-r),!1)}function J(){var r,i=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,nr=!0,B()&&(Dr.cursor=Dr.limit-i,D()&&(Dr.cursor=Dr.limit-i,G()&&(Dr.cursor=Dr.limit-i,H()&&(Dr.cursor=Dr.limit-i,I()))))){if(Dr.cursor=Dr.limit-i,!x())return;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T()||(Dr.cursor=Dr.limit-r)}Dr.bra=Dr.cursor,Dr.slice_del()}function K(){var r,i,e,n;if(Dr.ket=Dr.cursor,h()){if(r=Dr.limit-Dr.cursor,p())return Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,a()&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))),!0;if(Dr.cursor=Dr.limit-r,w()){if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,e=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-e,!m()&&(Dr.cursor=Dr.limit-e,!K())))return!0;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}return!0}if(Dr.cursor=Dr.limit-r,g()){if(n=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-n,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-n,!K())return!1;return!0}}return!1}function M(r){if(Dr.ket=Dr.cursor,!g()&&(Dr.cursor=Dr.limit-r,!k()))return!1;var i=Dr.limit-Dr.cursor;if(d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-i,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-i,!K())return!1;return!0}function N(r){if(Dr.ket=Dr.cursor,!z()&&(Dr.cursor=Dr.limit-r,!b()))return!1;var i=Dr.limit-Dr.cursor;return!(!m()&&(Dr.cursor=Dr.limit-i,!d()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)}function O(){var r,i=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,!(!w()&&(Dr.cursor=Dr.limit-i,!v()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,!(!W()||(Dr.bra=Dr.cursor,Dr.slice_del(),!K()))||(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!(a()||(Dr.cursor=Dr.limit-r,m()||(Dr.cursor=Dr.limit-r,K())))||(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)))}function Q(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,!p()&&(Dr.cursor=Dr.limit-e,!f()&&(Dr.cursor=Dr.limit-e,!_())))return!1;if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,a())Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()||(Dr.cursor=Dr.limit-i);else if(Dr.cursor=Dr.limit-r,!W())return!0;return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,K(),!0}function R(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,W())return Dr.bra=Dr.cursor,Dr.slice_del(),void K();if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,q())if(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-r,!m())){if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!W())return;if(Dr.bra=Dr.cursor,Dr.slice_del(),!K())return}Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}else if(Dr.cursor=Dr.limit-e,!M(e)&&(Dr.cursor=Dr.limit-e,!N(e))){if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,y())return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,i=Dr.limit-Dr.cursor,void(a()?(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())):(Dr.cursor=Dr.limit-i,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,K())));if(Dr.cursor=Dr.limit-e,!O()){if(Dr.cursor=Dr.limit-e,d())return Dr.bra=Dr.cursor,void Dr.slice_del();Dr.cursor=Dr.limit-e,K()||(Dr.cursor=Dr.limit-e,Q()||(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,(a()||(Dr.cursor=Dr.limit-e,m()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))))}}}function U(){var r;if(Dr.ket=Dr.cursor,r=Dr.find_among_b(Sr,4))switch(Dr.bra=Dr.cursor,r){case 1:Dr.slice_from("p");break;case 2:Dr.slice_from("ç");break;case 3:Dr.slice_from("t");break;case 4:Dr.slice_from("k")}}function V(){for(;;){var r=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(Wr,97,305)){Dr.cursor=Dr.limit-r;break}if(Dr.cursor=Dr.limit-r,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function X(r,i,e){if(Dr.cursor=Dr.limit-r,V()){var n=Dr.limit-Dr.cursor;if(!Dr.eq_s_b(1,i)&&(Dr.cursor=Dr.limit-n,!Dr.eq_s_b(1,e)))return!0;Dr.cursor=Dr.limit-r;var t=Dr.cursor;return Dr.insert(Dr.cursor,Dr.cursor,e),Dr.cursor=t,!1}return!0}function Y(){var r=Dr.limit-Dr.cursor;(Dr.eq_s_b(1,"d")||(Dr.cursor=Dr.limit-r,Dr.eq_s_b(1,"g")))&&X(r,"a","ı")&&X(r,"e","i")&&X(r,"o","u")&&X(r,"ö","ü")}function $(){for(var r,i=Dr.cursor,e=2;;){for(r=Dr.cursor;!Dr.in_grouping(Wr,97,305);){if(Dr.cursor>=Dr.limit)return Dr.cursor=r,!(e>0)&&(Dr.cursor=i,!0);Dr.cursor++}e--}}function rr(r,i,e){for(;!Dr.eq_s(i,e);){if(Dr.cursor>=Dr.limit)return!0;Dr.cursor++}return(tr=i)!=Dr.limit||(Dr.cursor=r,!1)}function ir(){var r=Dr.cursor;return!rr(r,2,"ad")||(Dr.cursor=r,!rr(r,5,"soyad"))}function er(){var r=Dr.cursor;return!ir()&&(Dr.limit_backward=r,Dr.cursor=Dr.limit,Y(),Dr.cursor=Dr.limit,U(),!0)}var nr,tr,ur=[new i("m",-1,-1),new i("n",-1,-1),new i("miz",-1,-1),new i("niz",-1,-1),new i("muz",-1,-1),new i("nuz",-1,-1),new i("müz",-1,-1),new i("nüz",-1,-1),new i("mız",-1,-1),new i("nız",-1,-1)],or=[new i("leri",-1,-1),new i("ları",-1,-1)],sr=[new i("ni",-1,-1),new i("nu",-1,-1),new i("nü",-1,-1),new i("nı",-1,-1)],cr=[new i("in",-1,-1),new i("un",-1,-1),new i("ün",-1,-1),new i("ın",-1,-1)],lr=[new i("a",-1,-1),new i("e",-1,-1)],ar=[new i("na",-1,-1),new i("ne",-1,-1)],mr=[new i("da",-1,-1),new i("ta",-1,-1),new i("de",-1,-1),new i("te",-1,-1)],dr=[new i("nda",-1,-1),new i("nde",-1,-1)],fr=[new i("dan",-1,-1),new i("tan",-1,-1),new i("den",-1,-1),new i("ten",-1,-1)],br=[new i("ndan",-1,-1),new i("nden",-1,-1)],wr=[new i("la",-1,-1),new i("le",-1,-1)],_r=[new i("ca",-1,-1),new i("ce",-1,-1)],kr=[new i("im",-1,-1),new i("um",-1,-1),new i("üm",-1,-1),new i("ım",-1,-1)],pr=[new i("sin",-1,-1),new i("sun",-1,-1),new i("sün",-1,-1),new i("sın",-1,-1)],gr=[new i("iz",-1,-1),new i("uz",-1,-1),new i("üz",-1,-1),new i("ız",-1,-1)],yr=[new i("siniz",-1,-1),new i("sunuz",-1,-1),new i("sünüz",-1,-1),new i("sınız",-1,-1)],zr=[new i("lar",-1,-1),new i("ler",-1,-1)],vr=[new i("niz",-1,-1),new i("nuz",-1,-1),new i("nüz",-1,-1),new i("nız",-1,-1)],hr=[new i("dir",-1,-1),new i("tir",-1,-1),new i("dur",-1,-1),new i("tur",-1,-1),new i("dür",-1,-1),new i("tür",-1,-1),new i("dır",-1,-1),new i("tır",-1,-1)],qr=[new i("casına",-1,-1),new i("cesine",-1,-1)],Cr=[new i("di",-1,-1),new i("ti",-1,-1),new i("dik",-1,-1),new i("tik",-1,-1),new i("duk",-1,-1),new i("tuk",-1,-1),new i("dük",-1,-1),new i("tük",-1,-1),new i("dık",-1,-1),new i("tık",-1,-1),new i("dim",-1,-1),new i("tim",-1,-1),new i("dum",-1,-1),new i("tum",-1,-1),new i("düm",-1,-1),new i("tüm",-1,-1),new i("dım",-1,-1),new i("tım",-1,-1),new i("din",-1,-1),new i("tin",-1,-1),new i("dun",-1,-1),new i("tun",-1,-1),new i("dün",-1,-1),new i("tün",-1,-1),new i("dın",-1,-1),new i("tın",-1,-1),new i("du",-1,-1),new i("tu",-1,-1),new i("dü",-1,-1),new i("tü",-1,-1),new i("dı",-1,-1),new i("tı",-1,-1)],Pr=[new i("sa",-1,-1),new i("se",-1,-1),new i("sak",-1,-1),new i("sek",-1,-1),new i("sam",-1,-1),new i("sem",-1,-1),new i("san",-1,-1),new i("sen",-1,-1)],Fr=[new i("miş",-1,-1),new i("muş",-1,-1),new i("müş",-1,-1),new i("mış",-1,-1)],Sr=[new i("b",-1,1),new i("c",-1,2),new i("d",-1,3),new i("ğ",-1,4)],Wr=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],Lr=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],xr=[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],Ar=[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],Er=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],jr=[17],Tr=[65],Zr=[65],Br=[["a",xr,97,305],["e",Ar,101,252],["ı",Er,97,305],["i",jr,101,105],["o",Tr,111,117],["ö",Zr,246,252],["u",Tr,111,117]],Dr=new e;this.setCurrent=function(r){Dr.setCurrent(r)},this.getCurrent=function(){return Dr.getCurrent()},this.stem=function(){return!!($()&&(Dr.limit_backward=Dr.cursor,Dr.cursor=Dr.limit,J(),Dr.cursor=Dr.limit,nr&&(R(),Dr.cursor=Dr.limit_backward,er())))}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.tr.stemmer,"stemmer-tr"),r.tr.stopWordFilter=r.generateStopWordFilter("acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle".split(" ")),r.Pipeline.registerFunction(r.tr.stopWordFilter,"stopWordFilter-tr")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.vi.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.vi.min.js new file mode 100644 index 0000000000..22aed28c49 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.vi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/min/lunr.zh.min.js b/3.4.1/assets/javascripts/lunr/min/lunr.zh.min.js new file mode 100644 index 0000000000..7727bbe24d --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/min/lunr.zh.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("nodejieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/tinyseg.js b/3.4.1/assets/javascripts/lunr/tinyseg.js new file mode 100644 index 0000000000..167fa6dd69 --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/tinyseg.js @@ -0,0 +1,206 @@ +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + + return function(lunr) { + // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript + // (c) 2008 Taku Kudo + // TinySegmenter is freely distributable under the terms of a new BSD licence. + // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt + + function TinySegmenter() { + var patterns = { + "[一二三四五六七八九十百千万億兆]":"M", + "[一-龠々〆ヵヶ]":"H", + "[ぁ-ん]":"I", + "[ァ-ヴーア-ン゙ー]":"K", + "[a-zA-Za-zA-Z]":"A", + "[0-90-9]":"N" + } + this.chartype_ = []; + for (var i in patterns) { + var regexp = new RegExp(i); + this.chartype_.push([regexp, patterns[i]]); + } + + this.BIAS__ = -332 + this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378}; + this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920}; + this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266}; + this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352}; + this.BP2__ = {"BO":60,"OO":-1762}; + this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965}; + this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146}; + this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699}; + this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973}; + this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682}; + this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669}; + this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990}; + this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832}; + this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649}; + this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393}; + this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841}; + this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68}; + this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591}; + this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685}; + this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156}; + this.TW1__ = {"につい":-4681,"東京都":2026}; + this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216}; + this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287}; + this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865}; + this.UC1__ = {"A":484,"K":93,"M":645,"O":-505}; + this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646}; + this.UC3__ = {"A":-1370,"I":2311}; + this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646}; + this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831}; + this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387}; + this.UP1__ = {"O":-214}; + this.UP2__ = {"B":69,"O":935}; + this.UP3__ = {"B":189}; + this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422}; + this.UQ2__ = {"BH":216,"BI":113,"OK":1759}; + this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212}; + this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135}; + this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568}; + this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278}; + this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637}; + this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343}; + this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496}; + + return this; + } + TinySegmenter.prototype.ctype_ = function(str) { + for (var i in this.chartype_) { + if (str.match(this.chartype_[i][0])) { + return this.chartype_[i][1]; + } + } + return "O"; + } + + TinySegmenter.prototype.ts_ = function(v) { + if (v) { return v; } + return 0; + } + + TinySegmenter.prototype.segment = function(input) { + if (input == null || input == undefined || input == "") { + return []; + } + var result = []; + var seg = ["B3","B2","B1"]; + var ctype = ["O","O","O"]; + var o = input.split(""); + for (i = 0; i < o.length; ++i) { + seg.push(o[i]); + ctype.push(this.ctype_(o[i])) + } + seg.push("E1"); + seg.push("E2"); + seg.push("E3"); + ctype.push("O"); + ctype.push("O"); + ctype.push("O"); + var word = seg[3]; + var p1 = "U"; + var p2 = "U"; + var p3 = "U"; + for (var i = 4; i < seg.length - 3; ++i) { + var score = this.BIAS__; + var w1 = seg[i-3]; + var w2 = seg[i-2]; + var w3 = seg[i-1]; + var w4 = seg[i]; + var w5 = seg[i+1]; + var w6 = seg[i+2]; + var c1 = ctype[i-3]; + var c2 = ctype[i-2]; + var c3 = ctype[i-1]; + var c4 = ctype[i]; + var c5 = ctype[i+1]; + var c6 = ctype[i+2]; + score += this.ts_(this.UP1__[p1]); + score += this.ts_(this.UP2__[p2]); + score += this.ts_(this.UP3__[p3]); + score += this.ts_(this.BP1__[p1 + p2]); + score += this.ts_(this.BP2__[p2 + p3]); + score += this.ts_(this.UW1__[w1]); + score += this.ts_(this.UW2__[w2]); + score += this.ts_(this.UW3__[w3]); + score += this.ts_(this.UW4__[w4]); + score += this.ts_(this.UW5__[w5]); + score += this.ts_(this.UW6__[w6]); + score += this.ts_(this.BW1__[w2 + w3]); + score += this.ts_(this.BW2__[w3 + w4]); + score += this.ts_(this.BW3__[w4 + w5]); + score += this.ts_(this.TW1__[w1 + w2 + w3]); + score += this.ts_(this.TW2__[w2 + w3 + w4]); + score += this.ts_(this.TW3__[w3 + w4 + w5]); + score += this.ts_(this.TW4__[w4 + w5 + w6]); + score += this.ts_(this.UC1__[c1]); + score += this.ts_(this.UC2__[c2]); + score += this.ts_(this.UC3__[c3]); + score += this.ts_(this.UC4__[c4]); + score += this.ts_(this.UC5__[c5]); + score += this.ts_(this.UC6__[c6]); + score += this.ts_(this.BC1__[c2 + c3]); + score += this.ts_(this.BC2__[c3 + c4]); + score += this.ts_(this.BC3__[c4 + c5]); + score += this.ts_(this.TC1__[c1 + c2 + c3]); + score += this.ts_(this.TC2__[c2 + c3 + c4]); + score += this.ts_(this.TC3__[c3 + c4 + c5]); + score += this.ts_(this.TC4__[c4 + c5 + c6]); + // score += this.ts_(this.TC5__[c4 + c5 + c6]); + score += this.ts_(this.UQ1__[p1 + c1]); + score += this.ts_(this.UQ2__[p2 + c2]); + score += this.ts_(this.UQ3__[p3 + c3]); + score += this.ts_(this.BQ1__[p2 + c2 + c3]); + score += this.ts_(this.BQ2__[p2 + c3 + c4]); + score += this.ts_(this.BQ3__[p3 + c2 + c3]); + score += this.ts_(this.BQ4__[p3 + c3 + c4]); + score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); + score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); + score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); + score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); + var p = "O"; + if (score > 0) { + result.push(word); + word = ""; + p = "B"; + } + p1 = p2; + p2 = p3; + p3 = p; + word += seg[i]; + } + result.push(word); + + return result; + } + + lunr.TinySegmenter = TinySegmenter; + }; + +})); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/lunr/wordcut.js b/3.4.1/assets/javascripts/lunr/wordcut.js new file mode 100644 index 0000000000..146f4b44bc --- /dev/null +++ b/3.4.1/assets/javascripts/lunr/wordcut.js @@ -0,0 +1,6708 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.lunr || (g.lunr = {})).wordcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1; + }) + this.addWords(words, false) + } + if(finalize){ + this.finalizeDict(); + } + }, + + dictSeek: function (l, r, ch, strOffset, pos) { + var ans = null; + while (l <= r) { + var m = Math.floor((l + r) / 2), + dict_item = this.dict[m], + len = dict_item.length; + if (len <= strOffset) { + l = m + 1; + } else { + var ch_ = dict_item[strOffset]; + if (ch_ < ch) { + l = m + 1; + } else if (ch_ > ch) { + r = m - 1; + } else { + ans = m; + if (pos == LEFT) { + r = m - 1; + } else { + l = m + 1; + } + } + } + } + return ans; + }, + + isFinal: function (acceptor) { + return this.dict[acceptor.l].length == acceptor.strOffset; + }, + + createAcceptor: function () { + return { + l: 0, + r: this.dict.length - 1, + strOffset: 0, + isFinal: false, + dict: this, + transit: function (ch) { + return this.dict.transit(this, ch); + }, + isError: false, + tag: "DICT", + w: 1, + type: "DICT" + }; + }, + + transit: function (acceptor, ch) { + var l = this.dictSeek(acceptor.l, + acceptor.r, + ch, + acceptor.strOffset, + LEFT); + if (l !== null) { + var r = this.dictSeek(l, + acceptor.r, + ch, + acceptor.strOffset, + RIGHT); + acceptor.l = l; + acceptor.r = r; + acceptor.strOffset++; + acceptor.isFinal = this.isFinal(acceptor); + } else { + acceptor.isError = true; + } + return acceptor; + }, + + sortuniq: function(a){ + return a.sort().filter(function(item, pos, arr){ + return !pos || item != arr[pos - 1]; + }) + }, + + flatten: function(a){ + //[[1,2],[3]] -> [1,2,3] + return [].concat.apply([], a); + } +}; +module.exports = WordcutDict; + +}).call(this,"/dist/tmp") +},{"glob":16,"path":22}],3:[function(require,module,exports){ +var WordRule = { + createAcceptor: function(tag) { + if (tag["WORD_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + var lch = ch.toLowerCase(); + if (lch >= "a" && lch <= "z") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "WORD_RULE", + type: "WORD_RULE", + w: 1}; + } +}; + +var NumberRule = { + createAcceptor: function(tag) { + if (tag["NUMBER_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch >= "0" && ch <= "9") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "NUMBER_RULE", + type: "NUMBER_RULE", + w: 1}; + } +}; + +var SpaceRule = { + tag: "SPACE_RULE", + createAcceptor: function(tag) { + + if (tag["SPACE_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch == " " || ch == "\t" || ch == "\r" || ch == "\n" || + ch == "\u00A0" || ch=="\u2003"//nbsp and emsp + ) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: SpaceRule.tag, + w: 1, + type: "SPACE_RULE"}; + } +} + +var SingleSymbolRule = { + tag: "SINSYM", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (this.strOffset == 0 && ch.match(/^[\@\(\)\/\,\-\."`]$/)) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "SINSYM", + w: 1, + type: "SINSYM"}; + } +} + + +var LatinRules = [WordRule, SpaceRule, SingleSymbolRule, NumberRule]; + +module.exports = LatinRules; + +},{}],4:[function(require,module,exports){ +var _ = require("underscore") + , WordcutCore = require("./wordcut_core"); +var PathInfoBuilder = { + + /* + buildByPartAcceptors: function(path, acceptors, i) { + var + var genInfos = partAcceptors.reduce(function(genInfos, acceptor) { + + }, []); + + return genInfos; + } + */ + + buildByAcceptors: function(path, finalAcceptors, i) { + var self = this; + var infos = finalAcceptors.map(function(acceptor) { + var p = i - acceptor.strOffset + 1 + , _info = path[p]; + + var info = {p: p, + mw: _info.mw + (acceptor.mw === undefined ? 0 : acceptor.mw), + w: acceptor.w + _info.w, + unk: (acceptor.unk ? acceptor.unk : 0) + _info.unk, + type: acceptor.type}; + + if (acceptor.type == "PART") { + for(var j = p + 1; j <= i; j++) { + path[j].merge = p; + } + info.merge = p; + } + + return info; + }); + return infos.filter(function(info) { return info; }); + }, + + fallback: function(path, leftBoundary, text, i) { + var _info = path[leftBoundary]; + if (text[i].match(/[\u0E48-\u0E4E]/)) { + if (leftBoundary != 0) + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + mw: 0, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; +/* } else if(leftBoundary > 0 && path[leftBoundary].type !== "UNK") { + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; */ + } else { + return {p: leftBoundary, + mw: _info.mw, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; + } + }, + + build: function(path, finalAcceptors, i, leftBoundary, text) { + var basicPathInfos = this.buildByAcceptors(path, finalAcceptors, i); + if (basicPathInfos.length > 0) { + return basicPathInfos; + } else { + return [this.fallback(path, leftBoundary, text, i)]; + } + } +}; + +module.exports = function() { + return _.clone(PathInfoBuilder); +} + +},{"./wordcut_core":8,"underscore":25}],5:[function(require,module,exports){ +var _ = require("underscore"); + + +var PathSelector = { + selectPath: function(paths) { + var path = paths.reduce(function(selectedPath, path) { + if (selectedPath == null) { + return path; + } else { + if (path.unk < selectedPath.unk) + return path; + if (path.unk == selectedPath.unk) { + if (path.mw < selectedPath.mw) + return path + if (path.mw == selectedPath.mw) { + if (path.w < selectedPath.w) + return path; + } + } + return selectedPath; + } + }, null); + return path; + }, + + createPath: function() { + return [{p:null, w:0, unk:0, type: "INIT", mw:0}]; + } +}; + +module.exports = function() { + return _.clone(PathSelector); +}; + +},{"underscore":25}],6:[function(require,module,exports){ +function isMatch(pat, offset, ch) { + if (pat.length <= offset) + return false; + var _ch = pat[offset]; + return _ch == ch || + (_ch.match(/[กข]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/[มบ]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/\u0E49/) && ch.match(/[\u0E48-\u0E4B]/)); +} + +var Rule0 = { + pat: "เหก็ม", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (isMatch(Rule0.pat, this.strOffset,ch)) { + this.isFinal = (this.strOffset + 1 == Rule0.pat.length); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "THAI_RULE", + type: "THAI_RULE", + w: 1}; + } +}; + +var PartRule = { + createAcceptor: function(tag) { + return {strOffset: 0, + patterns: [ + "แก", "เก", "ก้", "กก์", "กา", "กี", "กิ", "กืก" + ], + isFinal: false, + transit: function(ch) { + var offset = this.strOffset; + this.patterns = this.patterns.filter(function(pat) { + return isMatch(pat, offset, ch); + }); + + if (this.patterns.length > 0) { + var len = 1 + offset; + this.isFinal = this.patterns.some(function(pat) { + return pat.length == len; + }); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "PART", + type: "PART", + unk: 1, + w: 1}; + } +}; + +var ThaiRules = [Rule0, PartRule]; + +module.exports = ThaiRules; + +},{}],7:[function(require,module,exports){ +var sys = require("sys") + , WordcutDict = require("./dict") + , WordcutCore = require("./wordcut_core") + , PathInfoBuilder = require("./path_info_builder") + , PathSelector = require("./path_selector") + , Acceptors = require("./acceptors") + , latinRules = require("./latin_rules") + , thaiRules = require("./thai_rules") + , _ = require("underscore"); + + +var Wordcut = Object.create(WordcutCore); +Wordcut.defaultPathInfoBuilder = PathInfoBuilder; +Wordcut.defaultPathSelector = PathSelector; +Wordcut.defaultAcceptors = Acceptors; +Wordcut.defaultLatinRules = latinRules; +Wordcut.defaultThaiRules = thaiRules; +Wordcut.defaultDict = WordcutDict; + + +Wordcut.initNoDict = function(dict_path) { + var self = this; + self.pathInfoBuilder = new self.defaultPathInfoBuilder; + self.pathSelector = new self.defaultPathSelector; + self.acceptors = new self.defaultAcceptors; + self.defaultLatinRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); + self.defaultThaiRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); +}; + +Wordcut.init = function(dict_path, withDefault, additionalWords) { + withDefault = withDefault || false; + this.initNoDict(); + var dict = _.clone(this.defaultDict); + dict.init(dict_path, withDefault, additionalWords); + this.acceptors.creators.push(dict); +}; + +module.exports = Wordcut; + +},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,"sys":28,"underscore":25}],8:[function(require,module,exports){ +var WordcutCore = { + + buildPath: function(text) { + var self = this + , path = self.pathSelector.createPath() + , leftBoundary = 0; + self.acceptors.reset(); + for (var i = 0; i < text.length; i++) { + var ch = text[i]; + self.acceptors.transit(ch); + + var possiblePathInfos = self + .pathInfoBuilder + .build(path, + self.acceptors.getFinalAcceptors(), + i, + leftBoundary, + text); + var selectedPath = self.pathSelector.selectPath(possiblePathInfos) + + path.push(selectedPath); + if (selectedPath.type !== "UNK") { + leftBoundary = i; + } + } + return path; + }, + + pathToRanges: function(path) { + var e = path.length - 1 + , ranges = []; + + while (e > 0) { + var info = path[e] + , s = info.p; + + if (info.merge !== undefined && ranges.length > 0) { + var r = ranges[ranges.length - 1]; + r.s = info.merge; + s = r.s; + } else { + ranges.push({s:s, e:e}); + } + e = s; + } + return ranges.reverse(); + }, + + rangesToText: function(text, ranges, delimiter) { + return ranges.map(function(r) { + return text.substring(r.s, r.e); + }).join(delimiter); + }, + + cut: function(text, delimiter) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + return this + .rangesToText(text, ranges, + (delimiter === undefined ? "|" : delimiter)); + }, + + cutIntoRanges: function(text, noText) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + if (!noText) { + ranges.forEach(function(r) { + r.text = text.substring(r.s, r.e); + }); + } + return ranges; + }, + + cutIntoArray: function(text) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + return ranges.map(function(r) { + return text.substring(r.s, r.e) + }); + } +}; + +module.exports = WordcutCore; + +},{}],9:[function(require,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":28}],10:[function(require,module,exports){ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + +},{}],11:[function(require,module,exports){ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + +},{"balanced-match":10,"concat-map":13}],12:[function(require,module,exports){ + +},{}],13:[function(require,module,exports){ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],14:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],15:[function(require,module,exports){ +(function (process){ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var isAbsolute = require("path-is-absolute") +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern) + } + + return { + matcher: new Minimatch(pattern), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = options.cwd + self.changedCwd = path.resolve(options.cwd) !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + self.nomount = !!options.nomount + + // disable comments and negation unless the user explicitly + // passes in false as the option. + options.nonegate = options.nonegate === false ? false : true + options.nocomment = options.nocomment === false ? false : true + deprecationWarning(options) + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +// TODO(isaacs): remove entirely in v6 +// exported to reset in tests +exports.deprecationWarned +function deprecationWarning(options) { + if (!options.nonegate || !options.nocomment) { + if (process.noDeprecation !== true && !exports.deprecationWarned) { + var msg = 'glob WARNING: comments and negation will be disabled in v6' + if (process.throwDeprecation) + throw new Error(msg) + else if (process.traceDeprecation) + console.trace(msg) + else + console.error(msg) + + exports.deprecationWarned = true + } + } +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + return !(/\/$/.test(e)) + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +}).call(this,require('_process')) +},{"_process":24,"minimatch":20,"path":22,"path-is-absolute":23}],16:[function(require,module,exports){ +(function (process){ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +glob.hasMagic = function (pattern, options_) { + var options = util._extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + var n = this.minimatch.set.length + this._processing = 0 + this.matches = new Array(n) + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + + function done () { + --self._processing + if (self._processing <= 0) + self._finish() + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + fs.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (this.matches[index][e]) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = this._makeAbs(e) + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + if (this.mark) + e = this._mark(e) + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er) + return cb() + + var isSym = lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return cb(null, false, stat) + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return cb() + + return cb(null, c, stat) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./sync.js":17,"_process":24,"assert":9,"events":14,"fs":12,"inflight":18,"inherits":19,"minimatch":20,"once":21,"path":22,"path-is-absolute":23,"util":28}],17:[function(require,module,exports){ +(function (process){ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = fs.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this.matches[index][e] = true + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + var abs = this._makeAbs(e) + if (this.mark) + e = this._mark(e) + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + // lstat failed, doesn't exist + return null + } + + var isSym = lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this.matches[index][prefix] = true +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + return false + } + + if (lstat.isSymbolicLink()) { + try { + stat = fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./glob.js":16,"_process":24,"assert":9,"fs":12,"minimatch":20,"path":22,"path-is-absolute":23,"util":28}],18:[function(require,module,exports){ +(function (process){ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} + +}).call(this,require('_process')) +},{"_process":24,"once":21,"wrappy":29}],19:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],20:[function(require,module,exports){ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + // "" only matches "" + if (pattern.trim() === '') return p === '' + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + if (typeof pattern === 'undefined') { + throw new TypeError('undefined pattern') + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError('pattern is too long') + } + + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd + } + + // should be unreachable. + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +},{"brace-expansion":11,"path":22}],21:[function(require,module,exports){ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + +},{"wrappy":29}],22:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":24}],23:[function(require,module,exports){ +(function (process){ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + +}).call(this,require('_process')) +},{"_process":24}],24:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],25:[function(require,module,exports){ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); + +},{}],26:[function(require,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"dup":19}],27:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],28:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":27,"_process":24,"inherits":26}],29:[function(require,module,exports){ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + +},{}]},{},[7])(7) +}); \ No newline at end of file diff --git a/3.4.1/assets/javascripts/workers/search.5bf1dace.min.js b/3.4.1/assets/javascripts/workers/search.5bf1dace.min.js new file mode 100644 index 0000000000..5b80d43c0e --- /dev/null +++ b/3.4.1/assets/javascripts/workers/search.5bf1dace.min.js @@ -0,0 +1,48 @@ +"use strict";(()=>{var ge=Object.create;var W=Object.defineProperty,ye=Object.defineProperties,me=Object.getOwnPropertyDescriptor,ve=Object.getOwnPropertyDescriptors,xe=Object.getOwnPropertyNames,G=Object.getOwnPropertySymbols,Se=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty,Qe=Object.prototype.propertyIsEnumerable;var J=(t,e,r)=>e in t?W(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,M=(t,e)=>{for(var r in e||(e={}))X.call(e,r)&&J(t,r,e[r]);if(G)for(var r of G(e))Qe.call(e,r)&&J(t,r,e[r]);return t},Z=(t,e)=>ye(t,ve(e));var K=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var be=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of xe(e))!X.call(t,i)&&i!==r&&W(t,i,{get:()=>e[i],enumerable:!(n=me(e,i))||n.enumerable});return t};var H=(t,e,r)=>(r=t!=null?ge(Se(t)):{},be(e||!t||!t.__esModule?W(r,"default",{value:t,enumerable:!0}):r,t));var z=(t,e,r)=>new Promise((n,i)=>{var s=u=>{try{a(r.next(u))}catch(c){i(c)}},o=u=>{try{a(r.throw(u))}catch(c){i(c)}},a=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,o);a((r=r.apply(t,e)).next())});var re=K((ee,te)=>{/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,c],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?h+=2:a==u&&(r+=n[c+1]*i[h+1],c+=2,h+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}s.str.length==1&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),y=s.str.charAt(1),g;y in s.node.edges?g=s.node.edges[y]:(g=new t.TokenSet,s.node.edges[y]=g),s.str.length==1&&(g.final=!0),i.push({node:g,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],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()}};/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof ee=="object"?te.exports=r():e.lunr=r()}(this,function(){return t})})()});var q=K((Re,ne)=>{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var Le=/["'&<>]/;ne.exports=we;function we(t){var e=""+t,r=Le.exec(e);if(!r)return e;var n,i="",s=0,o=0;for(s=r.index;s=0;r--){let n=t[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?e.insertBefore(this.previousSibling,n):e.replaceChild(n,this)}}}));var ie=H(q());function se(t){let e=new Map,r=new Set;for(let n of t){let[i,s]=n.location.split("#"),o=n.location,a=n.title,u=n.tags,c=(0,ie.default)(n.text).replace(/\s+(?=[,.:;!?])/g,"").replace(/\s+/g," ");if(s){let h=e.get(i);r.has(h)?e.set(o,{location:o,title:a,text:c,parent:h}):(h.title=n.title,h.text=c,r.add(h))}else e.set(o,M({location:o,title:a,text:c},u&&{tags:u}))}return e}var oe=H(q());function ae(t,e){let r=new RegExp(t.separator,"img"),n=(i,s,o)=>`${s}${o}`;return i=>{i=i.replace(/[\s*+\-:~^]+/g," ").trim();let s=new RegExp(`(^|${t.separator})(${i.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return o=>(e?(0,oe.default)(o):o).replace(s,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function ue(t){let e=new lunr.Query(["title","text"]);return new lunr.QueryParser(t,e).parse(),e.clauses}function ce(t,e){var i;let r=new Set(t),n={};for(let s=0;s!n.has(i)))]}var U=class{constructor({config:e,docs:r,options:n}){this.options=n,this.documents=se(r),this.highlight=ae(e,!1),lunr.tokenizer.separator=new RegExp(e.separator),this.index=lunr(function(){e.lang.length===1&&e.lang[0]!=="en"?this.use(lunr[e.lang[0]]):e.lang.length>1&&this.use(lunr.multiLanguage(...e.lang));let i=Ee(["trimmer","stopWordFilter","stemmer"],n.pipeline);for(let s of e.lang.map(o=>o==="en"?lunr:lunr[o]))for(let o of i)this.pipeline.remove(s[o]),this.searchPipeline.remove(s[o]);this.ref("location"),this.field("title",{boost:1e3}),this.field("text"),this.field("tags",{boost:1e6,extractor:s=>{let{tags:o=[]}=s;return o.reduce((a,u)=>[...a,...lunr.tokenizer(u)],[])}});for(let s of r)this.add(s,{boost:s.boost})})}search(e){if(e)try{let r=this.highlight(e),n=ue(e).filter(o=>o.presence!==lunr.Query.presence.PROHIBITED),i=this.index.search(`${e}*`).reduce((o,{ref:a,score:u,matchData:c})=>{let h=this.documents.get(a);if(typeof h!="undefined"){let{location:y,title:g,text:b,tags:m,parent:Q}=h,p=ce(n,Object.keys(c.metadata)),d=+!Q+ +Object.values(p).every(w=>w);o.push(Z(M({location:y,title:r(g),text:r(b)},m&&{tags:m.map(r)}),{score:u*(1+d),terms:p}))}return o},[]).sort((o,a)=>a.score-o.score).reduce((o,a)=>{let u=this.documents.get(a.location);if(typeof u!="undefined"){let c="parent"in u?u.parent.location:u.location;o.set(c,[...o.get(c)||[],a])}return o},new Map),s;if(this.options.suggestions){let o=this.index.query(a=>{for(let u of n)a.term(u.term,{fields:["title"],presence:lunr.Query.presence.REQUIRED,wildcard:lunr.Query.wildcard.TRAILING})});s=o.length?Object.keys(o[0].matchData.metadata):[]}return M({items:[...i.values()]},typeof s!="undefined"&&{suggestions:s})}catch(r){console.warn(`Invalid query: ${e} \u2013 see https://bit.ly/2s3ChXG`)}return{items:[]}}};var Y;function ke(t){return z(this,null,function*(){let e="../lunr";if(typeof parent!="undefined"&&"IFrameWorker"in parent){let n=document.querySelector("script[src]"),[i]=n.src.split("/worker");e=e.replace("..",i)}let r=[];for(let n of t.lang){switch(n){case"ja":r.push(`${e}/tinyseg.js`);break;case"hi":case"th":r.push(`${e}/wordcut.js`);break}n!=="en"&&r.push(`${e}/min/lunr.${n}.min.js`)}t.lang.length>1&&r.push(`${e}/min/lunr.multi.min.js`),r.length&&(yield importScripts(`${e}/min/lunr.stemmer.support.min.js`,...r))})}function Te(t){return z(this,null,function*(){switch(t.type){case 0:return yield ke(t.data.config),Y=new U(t.data),{type:1};case 2:return{type:3,data:Y?Y.search(t.data):{items:[]}};default:throw new TypeError("Invalid message type")}})}self.lunr=le.default;addEventListener("message",t=>z(void 0,null,function*(){postMessage(yield Te(t.data))}));})(); +//# sourceMappingURL=search.5bf1dace.min.js.map + diff --git a/3.4.1/assets/javascripts/workers/search.5bf1dace.min.js.map b/3.4.1/assets/javascripts/workers/search.5bf1dace.min.js.map new file mode 100644 index 0000000000..1df8be0efe --- /dev/null +++ b/3.4.1/assets/javascripts/workers/search.5bf1dace.min.js.map @@ -0,0 +1,8 @@ +{ + "version": 3, + "sources": ["node_modules/lunr/lunr.js", "node_modules/escape-html/index.js", "src/assets/javascripts/integrations/search/worker/main/index.ts", "src/assets/javascripts/polyfills/index.ts", "src/assets/javascripts/integrations/search/document/index.ts", "src/assets/javascripts/integrations/search/highlighter/index.ts", "src/assets/javascripts/integrations/search/query/_/index.ts", "src/assets/javascripts/integrations/search/_/index.ts"], + "sourceRoot": "../../../..", + "sourcesContent": ["/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.9\"\n/*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function () {\n return this\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport lunr from \"lunr\"\n\nimport \"~/polyfills\"\n\nimport { Search, SearchIndexConfig } from \"../../_\"\nimport {\n SearchMessage,\n SearchMessageType\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Add support for usage with `iframe-worker` polyfill\n *\n * While `importScripts` is synchronous when executed inside of a web worker,\n * it's not possible to provide a synchronous polyfilled implementation. The\n * cool thing is that awaiting a non-Promise is a noop, so extending the type\n * definition to return a `Promise` shouldn't break anything.\n *\n * @see https://bit.ly/2PjDnXi - GitHub comment\n */\ndeclare global {\n function importScripts(...urls: string[]): Promise | void\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nlet index: Search\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch (= import) multi-language support through `lunr-languages`\n *\n * This function automatically imports the stemmers necessary to process the\n * languages, which are defined through the search index configuration.\n *\n * If the worker runs inside of an `iframe` (when using `iframe-worker` as\n * a shim), the base URL for the stemmers to be loaded must be determined by\n * searching for the first `script` element with a `src` attribute, which will\n * contain the contents of this script.\n *\n * @param config - Search index configuration\n *\n * @returns Promise resolving with no result\n */\nasync function setupSearchLanguages(\n config: SearchIndexConfig\n): Promise {\n let base = \"../lunr\"\n\n /* Detect `iframe-worker` and fix base URL */\n if (typeof parent !== \"undefined\" && \"IFrameWorker\" in parent) {\n const worker = document.querySelector(\"script[src]\")!\n const [path] = worker.src.split(\"/worker\")\n\n /* Prefix base with path */\n base = base.replace(\"..\", path)\n }\n\n /* Add scripts for languages */\n const scripts = []\n for (const lang of config.lang) {\n switch (lang) {\n\n /* Add segmenter for Japanese */\n case \"ja\":\n scripts.push(`${base}/tinyseg.js`)\n break\n\n /* Add segmenter for Hindi and Thai */\n case \"hi\":\n case \"th\":\n scripts.push(`${base}/wordcut.js`)\n break\n }\n\n /* Add language support */\n if (lang !== \"en\")\n scripts.push(`${base}/min/lunr.${lang}.min.js`)\n }\n\n /* Add multi-language support */\n if (config.lang.length > 1)\n scripts.push(`${base}/min/lunr.multi.min.js`)\n\n /* Load scripts synchronously */\n if (scripts.length)\n await importScripts(\n `${base}/min/lunr.stemmer.support.min.js`,\n ...scripts\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Message handler\n *\n * @param message - Source message\n *\n * @returns Target message\n */\nexport async function handler(\n message: SearchMessage\n): Promise {\n switch (message.type) {\n\n /* Search setup message */\n case SearchMessageType.SETUP:\n await setupSearchLanguages(message.data.config)\n index = new Search(message.data)\n return {\n type: SearchMessageType.READY\n }\n\n /* Search query message */\n case SearchMessageType.QUERY:\n return {\n type: SearchMessageType.RESULT,\n data: index ? index.search(message.data) : { items: [] }\n }\n\n /* All other messages */\n default:\n throw new TypeError(\"Invalid message type\")\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Worker\n * ------------------------------------------------------------------------- */\n\n/* @ts-expect-error - expose Lunr.js in global scope, or stemmers won't work */\nself.lunr = lunr\n\n/* Handle messages */\naddEventListener(\"message\", async ev => {\n postMessage(await handler(ev.data))\n})\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Polyfills\n * ------------------------------------------------------------------------- */\n\n/* Polyfill `Object.entries` */\nif (!Object.entries)\n Object.entries = function (obj: object) {\n const data: [string, string][] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push([key, obj[key]])\n\n /* Return entries */\n return data\n }\n\n/* Polyfill `Object.values` */\nif (!Object.values)\n Object.values = function (obj: object) {\n const data: string[] = []\n for (const key of Object.keys(obj))\n // @ts-expect-error - ignore property access warning\n data.push(obj[key])\n\n /* Return values */\n return data\n }\n\n/* ------------------------------------------------------------------------- */\n\n/* Polyfills for `Element` */\nif (typeof Element !== \"undefined\") {\n\n /* Polyfill `Element.scrollTo` */\n if (!Element.prototype.scrollTo)\n Element.prototype.scrollTo = function (\n x?: ScrollToOptions | number, y?: number\n ): void {\n if (typeof x === \"object\") {\n this.scrollLeft = x.left!\n this.scrollTop = x.top!\n } else {\n this.scrollLeft = x!\n this.scrollTop = y!\n }\n }\n\n /* Polyfill `Element.replaceWith` */\n if (!Element.prototype.replaceWith)\n Element.prototype.replaceWith = function (\n ...nodes: Array\n ): void {\n const parent = this.parentNode\n if (parent) {\n if (nodes.length === 0)\n parent.removeChild(this)\n\n /* Replace children and create text nodes */\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i]\n if (typeof node !== \"object\")\n node = document.createTextNode(node)\n else if (node.parentNode)\n node.parentNode.removeChild(node)\n\n /* Replace child or insert before previous sibling */\n if (!i)\n parent.replaceChild(node, this)\n else\n parent.insertBefore(this.previousSibling!, node)\n }\n }\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport interface SearchDocument extends SearchIndexDocument {\n parent?: SearchIndexDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @returns Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n const parents = new Set()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location, title and tags */\n const location = doc.location\n const title = doc.title\n const tags = doc.tags\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path)!\n\n /* Ignore first section, override article */\n if (!parents.has(parent)) {\n parent.title = doc.title\n parent.text = text\n\n /* Remember that we processed the article */\n parents.add(parent)\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n ...tags && { tags }\n })\n }\n }\n return documents\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport escapeHTML from \"escape-html\"\n\nimport { SearchIndexConfig } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @param value - Value\n *\n * @returns Highlighted value\n */\nexport type SearchHighlightFn = (value: string) => string\n\n/**\n * Search highlight factory function\n *\n * @param query - Query value\n *\n * @returns Search highlight function\n */\nexport type SearchHighlightFactoryFn = (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n * @param escape - Whether to escape HTML\n *\n * @returns Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig, escape: boolean\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+\\-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n query\n .replace(/[|\\\\{}()[\\]^$+*?.-]/g, \"\\\\$&\")\n .replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight string value */\n return value => (\n escape\n ? escapeHTML(value)\n : value\n )\n .replace(match, highlight)\n .replace(/<\\/mark>(\\s+)]*>/img, \"$1\")\n }\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query clause\n */\nexport interface SearchQueryClause {\n presence: lunr.Query.presence /* Clause presence */\n term: string /* Clause term */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search query terms\n */\nexport type SearchQueryTerms = Record\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Parse a search query for analysis\n *\n * @param value - Query value\n *\n * @returns Search query clauses\n */\nexport function parseSearchQuery(\n value: string\n): SearchQueryClause[] {\n const query = new (lunr as any).Query([\"title\", \"text\"])\n const parser = new (lunr as any).QueryParser(value, query)\n\n /* Parse and return query clauses */\n parser.parse()\n return query.clauses\n}\n\n/**\n * Analyze the search query clauses in regard to the search terms found\n *\n * @param query - Search query clauses\n * @param terms - Search terms\n *\n * @returns Search query terms\n */\nexport function getSearchQueryTerms(\n query: SearchQueryClause[], terms: string[]\n): SearchQueryTerms {\n const clauses = new Set(query)\n\n /* Match query clauses against terms */\n const result: SearchQueryTerms = {}\n for (let t = 0; t < terms.length; t++)\n for (const clause of clauses)\n if (terms[t].startsWith(clause.term)) {\n result[clause.term] = true\n clauses.delete(clause)\n }\n\n /* Annotate unmatched non-stopword query clauses */\n for (const clause of clauses)\n if (lunr.stopWordFilter?.(clause.term as any))\n result[clause.term] = false\n\n /* Return query terms */\n return result\n}\n", "/*\n * Copyright (c) 2016-2022 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n SearchDocument,\n SearchDocumentMap,\n setupSearchDocumentMap\n} from \"../document\"\nimport {\n SearchHighlightFactoryFn,\n setupSearchHighlighter\n} from \"../highlighter\"\nimport { SearchOptions } from \"../options\"\nimport {\n SearchQueryTerms,\n getSearchQueryTerms,\n parseSearchQuery\n} from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index configuration\n */\nexport interface SearchIndexConfig {\n lang: string[] /* Search languages */\n separator: string /* Search separator */\n}\n\n/**\n * Search index document\n */\nexport interface SearchIndexDocument {\n location: string /* Document location */\n title: string /* Document title */\n text: string /* Document text */\n tags?: string[] /* Document tags */\n boost?: number /* Document boost */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search index\n *\n * This interfaces describes the format of the `search_index.json` file which\n * is automatically built by the MkDocs search plugin.\n */\nexport interface SearchIndex {\n config: SearchIndexConfig /* Search index configuration */\n docs: SearchIndexDocument[] /* Search index documents */\n options: SearchOptions /* Search options */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search metadata\n */\nexport interface SearchMetadata {\n score: number /* Score (relevance) */\n terms: SearchQueryTerms /* Search query terms */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result document\n */\nexport type SearchResultDocument = SearchDocument & SearchMetadata\n\n/**\n * Search result item\n */\nexport type SearchResultItem = SearchResultDocument[]\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result\n */\nexport interface SearchResult {\n items: SearchResultItem[] /* Search result items */\n suggestions?: string[] /* Search suggestions */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Compute the difference of two lists of strings\n *\n * @param a - 1st list of strings\n * @param b - 2nd list of strings\n *\n * @returns Difference\n */\nfunction difference(a: string[], b: string[]): string[] {\n const [x, y] = [new Set(a), new Set(b)]\n return [\n ...new Set([...x].filter(value => !y.has(value)))\n ]\n}\n\n/* ----------------------------------------------------------------------------\n * Class\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nexport class Search {\n\n /**\n * Search document mapping\n *\n * A mapping of URLs (including hash fragments) to the actual articles and\n * sections of the documentation. The search document mapping must be created\n * regardless of whether the index was prebuilt or not, as Lunr.js itself\n * only stores the actual index.\n */\n protected documents: SearchDocumentMap\n\n /**\n * Search highlight factory function\n */\n protected highlight: SearchHighlightFactoryFn\n\n /**\n * The underlying Lunr.js search index\n */\n protected index: lunr.Index\n\n /**\n * Search options\n */\n protected options: SearchOptions\n\n /**\n * Create the search integration\n *\n * @param data - Search index\n */\n public constructor({ config, docs, options }: SearchIndex) {\n this.options = options\n\n /* Set up document map and highlighter factory */\n this.documents = setupSearchDocumentMap(docs)\n this.highlight = setupSearchHighlighter(config, false)\n\n /* Set separator for tokenizer */\n lunr.tokenizer.separator = new RegExp(config.separator)\n\n /* Create search index */\n this.index = lunr(function () {\n\n /* Set up multi-language support */\n if (config.lang.length === 1 && config.lang[0] !== \"en\") {\n this.use((lunr as any)[config.lang[0]])\n } else if (config.lang.length > 1) {\n this.use((lunr as any).multiLanguage(...config.lang))\n }\n\n /* Compute functions to be removed from the pipeline */\n const fns = difference([\n \"trimmer\", \"stopWordFilter\", \"stemmer\"\n ], options.pipeline)\n\n /* Remove functions from the pipeline for registered languages */\n for (const lang of config.lang.map(language => (\n language === \"en\" ? lunr : (lunr as any)[language]\n ))) {\n for (const fn of fns) {\n this.pipeline.remove(lang[fn])\n this.searchPipeline.remove(lang[fn])\n }\n }\n\n /* Set up reference */\n this.ref(\"location\")\n\n /* Set up fields */\n this.field(\"title\", { boost: 1e3 })\n this.field(\"text\")\n this.field(\"tags\", { boost: 1e6, extractor: doc => {\n const { tags = [] } = doc as SearchDocument\n return tags.reduce((list, tag) => [\n ...list,\n ...lunr.tokenizer(tag)\n ], [] as lunr.Token[])\n } })\n\n /* Index documents */\n for (const doc of docs)\n this.add(doc, { boost: doc.boost })\n })\n }\n\n /**\n * Search for matching documents\n *\n * The search index which MkDocs provides is divided up into articles, which\n * contain the whole content of the individual pages, and sections, which only\n * contain the contents of the subsections obtained by breaking the individual\n * pages up at `h1` ... `h6`. As there may be many sections on different pages\n * with identical titles (for example within this very project, e.g. \"Usage\"\n * or \"Installation\"), they need to be put into the context of the containing\n * page. For this reason, section results are grouped within their respective\n * articles which are the top-level results that are returned.\n *\n * @param query - Query value\n *\n * @returns Search results\n */\n public search(query: string): SearchResult {\n if (query) {\n try {\n const highlight = this.highlight(query)\n\n /* Parse query to extract clauses for analysis */\n const clauses = parseSearchQuery(query)\n .filter(clause => (\n clause.presence !== lunr.Query.presence.PROHIBITED\n ))\n\n /* Perform search and post-process results */\n const groups = this.index.search(`${query}*`)\n\n /* Apply post-query boosts based on title and search query terms */\n .reduce((item, { ref, score, matchData }) => {\n const document = this.documents.get(ref)\n if (typeof document !== \"undefined\") {\n const { location, title, text, tags, parent } = document\n\n /* Compute and analyze search query terms */\n const terms = getSearchQueryTerms(\n clauses,\n Object.keys(matchData.metadata)\n )\n\n /* Highlight title and text and apply post-query boosts */\n const boost = +!parent + +Object.values(terms).every(t => t)\n item.push({\n location,\n title: highlight(title),\n text: highlight(text),\n ...tags && { tags: tags.map(highlight) },\n score: score * (1 + boost),\n terms\n })\n }\n return item\n }, [])\n\n /* Sort search results again after applying boosts */\n .sort((a, b) => b.score - a.score)\n\n /* Group search results by page */\n .reduce((items, result) => {\n const document = this.documents.get(result.location)\n if (typeof document !== \"undefined\") {\n const ref = \"parent\" in document\n ? document.parent!.location\n : document.location\n items.set(ref, [...items.get(ref) || [], result])\n }\n return items\n }, new Map())\n\n /* Generate search suggestions, if desired */\n let suggestions: string[] | undefined\n if (this.options.suggestions) {\n const titles = this.index.query(builder => {\n for (const clause of clauses)\n builder.term(clause.term, {\n fields: [\"title\"],\n presence: lunr.Query.presence.REQUIRED,\n wildcard: lunr.Query.wildcard.TRAILING\n })\n })\n\n /* Retrieve suggestions for best match */\n suggestions = titles.length\n ? Object.keys(titles[0].matchData.metadata)\n : []\n }\n\n /* Return items and suggestions */\n return {\n items: [...groups.values()],\n ...typeof suggestions !== \"undefined\" && { suggestions }\n }\n\n /* Log errors to console (for now) */\n } catch {\n console.warn(`Invalid query: ${query} \u2013 see https://bit.ly/2s3ChXG`)\n }\n }\n\n /* Return nothing in case of error or empty query */\n return { items: [] }\n }\n}\n"], + "mappings": "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L,CAAI,KACrDD,EAAIC,EAER,CAEA,OAAAG,EAAKP,EACLQ,EAAMzB,EACFwB,EAAG,KAAKJ,CAAC,GAAKK,EAAI,KAAKL,CAAC,IAC1BI,EAAKjB,EACLa,EAAIA,EAAE,QAAQI,EAAG,EAAE,GAKjBD,GAAW,MACbH,EAAIG,EAAQ,YAAY,EAAIH,EAAE,OAAO,CAAC,GAGjCA,CACT,EAEA,OAAO,SAAUhD,EAAO,CACtB,OAAOA,EAAM,OAAO+C,CAAa,CACnC,CACF,EAAG,EAEHpG,EAAK,SAAS,iBAAiBA,EAAK,QAAS,SAAS,EACtD;AAAA;AAAA;AAAA,GAkBAA,EAAK,uBAAyB,SAAU8G,EAAW,CACjD,IAAIC,EAAQD,EAAU,OAAO,SAAU7D,EAAM+D,EAAU,CACrD,OAAA/D,EAAK+D,GAAYA,EACV/D,CACT,EAAG,CAAC,CAAC,EAEL,OAAO,SAAUI,EAAO,CACtB,GAAIA,GAAS0D,EAAM1D,EAAM,SAAS,KAAOA,EAAM,SAAS,EAAG,OAAOA,CACpE,CACF,EAeArD,EAAK,eAAiBA,EAAK,uBAAuB,CAChD,IACA,OACA,QACA,SACA,QACA,MACA,SACA,OACA,KACA,QACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,UACA,OACA,MACA,KACA,MACA,SACA,QACA,OACA,MACA,KACA,OACA,SACA,OACA,OACA,QACA,MACA,OACA,MACA,MACA,MACA,MACA,OACA,KACA,MACA,OACA,MACA,MACA,MACA,UACA,IACA,KACA,KACA,OACA,KACA,KACA,MACA,OACA,QACA,MACA,OACA,SACA,MACA,KACA,QACA,OACA,OACA,KACA,UACA,KACA,MACA,MACA,KACA,MACA,QACA,KACA,OACA,KACA,QACA,MACA,MACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,KACA,OACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,MACA,KACA,MACA,OACA,KACA,QACA,MACA,KACA,OACA,OACA,OACA,QACA,QACA,QACA,MACA,OACA,MACA,OACA,OACA,QACA,MACA,MACA,MACF,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", + "names": ["require_lunr", "__commonJSMin", "exports", "module", "lunr", "config", "builder", "global", "message", "obj", "clone", "keys", "key", "val", "docRef", "fieldName", "stringValue", "s", "n", "fieldRef", "elements", "i", "other", "object", "a", "b", "intersection", "element", "posting", "documentCount", "documentsWithTerm", "x", "str", "metadata", "fn", "t", "len", "tokens", "sliceEnd", "sliceStart", "char", "sliceLength", "tokenMetadata", "label", "isRegistered", "serialised", "pipeline", "fnName", "fns", "existingFn", "newFn", "pos", "stackLength", "memo", "j", "result", "k", "token", "index", "start", "end", "pivotPoint", "pivotIndex", "insertIdx", "position", "sumOfSquares", "elementsLength", "otherVector", "dotProduct", "aLen", "bLen", "aVal", "bVal", "output", "step2list", "step3list", "c", "v", "C", "V", "mgr0", "meq1", "mgr1", "s_v", "re_mgr0", "re_mgr1", "re_meq1", "re_s_v", "re_1a", "re2_1a", "re_1b", "re2_1b", "re_1b_2", "re2_1b_2", "re3_1b_2", "re4_1b_2", "re_1c", "re_2", "re_3", "re_4", "re2_4", "re_5", "re_5_1", "re3_5", "porterStemmer", "w", "stem", "suffix", "firstch", "re", "re2", "re3", "re4", "fp", "stopWords", "words", "stopWord", "arr", "clause", "editDistance", "root", "stack", "frame", "noEditNode", "insertionNode", "substitutionNode", "charA", "charB", "transposeNode", "node", "final", "next", "edges", "edge", "labels", "qEdges", "qLen", "nEdges", "nLen", "q", "qEdge", "nEdge", "qNode", "word", "commonPrefix", "nextNode", "downTo", "childKey", "attrs", "queryString", "query", "parser", "matchingFields", "queryVectors", "termFieldCache", "requiredMatches", "prohibitedMatches", "terms", "clauseMatches", "m", "term", "termTokenSet", "expandedTerms", "field", "expandedTerm", "termIndex", "fieldPosting", "matchingDocumentRefs", "termField", "matchingDocumentsSet", "l", "matchingDocumentRef", "matchingFieldRef", "fieldMatch", "allRequiredMatches", "allProhibitedMatches", "matchingFieldRefs", "results", "matches", "fieldVector", "score", "docMatch", "match", "invertedIndex", "fieldVectors", "ref", "serializedIndex", "serializedVectors", "serializedInvertedIndex", "tokenSetBuilder", "tuple", "attributes", "number", "doc", "fields", "extractor", "fieldTerms", "metadataKey", "fieldRefs", "numberOfFields", "accumulator", "documentsWithField", "fieldRefsLength", "termIdfCache", "fieldLength", "termFrequencies", "termsLength", "fieldBoost", "docBoost", "tf", "idf", "scoreWithPrecision", "args", "clonedMetadata", "metadataKeys", "otherMatchData", "allFields", "options", "state", "subSlices", "type", "charCode", "lexer", "lexeme", "completedClause", "errorMessage", "nextLexeme", "possibleFields", "f", "boost", "factory", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "import_lunr", "obj", "data", "key", "x", "y", "nodes", "parent", "i", "node", "import_escape_html", "setupSearchDocumentMap", "docs", "documents", "parents", "doc", "path", "hash", "location", "title", "tags", "text", "escapeHTML", "parent", "__spreadValues", "import_escape_html", "setupSearchHighlighter", "config", "escape", "separator", "highlight", "_", "data", "term", "query", "match", "value", "escapeHTML", "parseSearchQuery", "value", "query", "getSearchQueryTerms", "terms", "_a", "clauses", "result", "t", "clause", "difference", "a", "b", "x", "y", "value", "Search", "config", "docs", "options", "setupSearchDocumentMap", "setupSearchHighlighter", "fns", "lang", "language", "fn", "doc", "tags", "list", "tag", "query", "highlight", "clauses", "parseSearchQuery", "clause", "groups", "item", "ref", "score", "matchData", "document", "location", "title", "text", "parent", "terms", "getSearchQueryTerms", "boost", "t", "__spreadProps", "__spreadValues", "items", "result", "suggestions", "titles", "builder", "e", "index", "setupSearchLanguages", "config", "__async", "base", "worker", "path", "scripts", "lang", "handler", "message", "Search", "lunr", "ev"] +} diff --git a/3.4.1/assets/stylesheets/main.20d9efc8.min.css b/3.4.1/assets/stylesheets/main.20d9efc8.min.css new file mode 100644 index 0000000000..d1d3d5ec74 --- /dev/null +++ b/3.4.1/assets/stylesheets/main.20d9efc8.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:transparent;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root,[data-md-color-scheme=default]{--md-default-fg-color:rgba(0,0,0,.87);--md-default-fg-color--light:rgba(0,0,0,.54);--md-default-fg-color--lighter:rgba(0,0,0,.32);--md-default-fg-color--lightest:rgba(0,0,0,.07);--md-default-bg-color:#fff;--md-default-bg-color--light:hsla(0,0%,100%,.7);--md-default-bg-color--lighter:hsla(0,0%,100%,.3);--md-default-bg-color--lightest:hsla(0,0%,100%,.12);--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7);--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:rgba(255,255,0,.5);--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(255,255,0,.5);--md-typeset-del-color:rgba(245,80,61,.15);--md-typeset-ins-color:rgba(11,213,112,.15);--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:rgba(0,0,0,.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:hsla(0,0%,100%,.7);--md-footer-fg-color--lighter:hsla(0,0%,100%,.3);--md-footer-bg-color:rgba(0,0,0,.87);--md-footer-bg-color--dark:rgba(0,0,0,.32);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.05),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.1),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.35)}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}body,input{font-feature-settings:"kern","liga";font-family:var(--md-text-font-family)}body,code,input,kbd,pre{color:var(--md-typeset-color)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr{position:relative}.md-typeset abbr[title]:-webkit-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}.md-typeset abbr[title]:-moz-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}[dir=ltr] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:is(:focus,:hover):after{left:0}[dir=rtl] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:is(:focus,:hover):after{right:0}.md-typeset abbr[title]:is(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li :-webkit-any(ul,ol),.md-typeset ul li :-webkit-any(ul,ol){margin-bottom:.5em;margin-top:.5em}.md-typeset ol li :-moz-any(ul,ol),.md-typeset ul li :-moz-any(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset ol li :-webkit-any(ul,ol),[dir=ltr] .md-typeset ul li :-webkit-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :-moz-any(ul,ol),[dir=ltr] .md-typeset ul li :-moz-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :is(ul,ol),[dir=ltr] .md-typeset ul li :is(ul,ol){margin-left:.625em}[dir=rtl] .md-typeset ol li :-webkit-any(ul,ol),[dir=rtl] .md-typeset ul li :-webkit-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :-moz-any(ul,ol),[dir=rtl] .md-typeset ul li :-moz-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :is(ul,ol),[dir=rtl] .md-typeset ul li :is(ul,ol){margin-right:.625em}.md-typeset ol li :is(ul,ol),.md-typeset ul li :is(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) :-webkit-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-moz-any(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :is(th,td)>:first-child{margin-top:0}.md-typeset table:not([class]) :-webkit-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-moz-any(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :is(th,td)>:last-child{margin-bottom:0}.md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:left}.md-typeset table:not([class]) :is(th,td):not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) :-webkit-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :-moz-any(th,td):not([align]){text-align:right}[dir=rtl] .md-typeset table:not([class]) :is(th,td):not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:-webkit-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:-moz-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:is(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:rgba(0,0,0,.54);height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:-webkit-any(:focus,:hover){opacity:.7}.md-footer__link:-moz-any(:focus,:hover){opacity:.7}.md-footer__link:is(:focus,:hover){opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:-webkit-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:-moz-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:is(:focus,:hover){color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:is(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:-webkit-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:-moz-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:is(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem transparent,0 .2rem .4rem transparent;color:var(--md-primary-bg-color);display:block;left:0;position:-webkit-sticky;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;justify-content:space-between;margin-top:.625em;overflow:hidden;scroll-snap-align:start;text-overflow:ellipsis;transition:color 125ms}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary :-webkit-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :-moz-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :is(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.9375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:-webkit-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:-moz-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:is(:checked,:indeterminate)~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);font-weight:700;margin-top:0;padding:0 .6rem;position:-webkit-sticky;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__link--index){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:rgba(0,0,0,.54);cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem transparent;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:rgba(0,0,0,.26);border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:hsla(0,0%,100%,.12)}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem rgba(0,0,0,.07);color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:transparent;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::-ms-input-placeholder{-ms-transition:color .25s;transition:color .25s}.md-search__input::placeholder{transition:color .25s}.md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::-ms-input-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>*{margin-left:.2rem}[dir=rtl] .md-search__options>*{margin-right:.2rem}.md-search__options>*{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>*{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more summary{color:var(--md-typeset-a-color);cursor:pointer;display:block;font-size:.64rem;outline:none;padding:.75em .8rem;scroll-snap-align:start;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more summary{padding-left:2.2rem}[dir=rtl] .md-search-result__more summary{padding-right:2.2rem}}.md-search-result__more summary:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary::marker{display:none}.md-search-result__more summary::-webkit-details-marker{display:none}.md-search-result__more summary~*>*{opacity:.65}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}.md-search-result__article--document .md-search-result__title{font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result__title{font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result__teaser{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--md-default-fg-color--light);display:-webkit-box;font-size:.64rem;line-height:1.6;margin:.5em 0;max-height:2rem;overflow:hidden;text-overflow:ellipsis}@media screen and (max-width:44.9375em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}.md-search-result__teaser mark{background-color:initial;text-decoration:underline}.md-search-result__terms{font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color)}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:-webkit-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-webkit-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:-moz-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-moz-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:is(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid transparent;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid transparent;border-right:.2rem solid transparent;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:-webkit-sticky;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;-ms-scroll-snap-type:none;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.1875em){.md-overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;padding:0;white-space:nowrap}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:-webkit-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:-moz-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:is(:focus,:hover){color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags{margin-bottom:.75em;margin-top:-.125em}[dir=ltr] .md-typeset .md-tag{margin-right:.5em}[dir=rtl] .md-typeset .md-tag{margin-left:.5em}.md-typeset .md-tag{background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-block;font-size:.64rem;font-weight:700;letter-spacing:normal;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em;vertical-align:middle}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;margin-right:.4em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon:-webkit-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:-moz-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:is(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}:-webkit-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:-moz-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:is(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation__index{cursor:pointer;font-family:var(--md-code-font-family);font-size:.85em;margin:0 1ch;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0}.md-annotation .md-annotation__index{color:#fff;transition:z-index .25s}.md-annotation .md-annotation__index:-webkit-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:-moz-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:is(:focus,:hover){color:#fff}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.125em;margin:0 -.4ch;padding:0 .4ch;position:absolute;top:0;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{animation:pulse 2s infinite}}.md-tooltip--active+.md-annotation__index:after{animation:none;transition:color .25s,background-color .25s}code .md-annotation__index{font-family:var(--md-code-font-family);font-size:inherit}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}.md-tooltip--active+.md-annotation__index{animation:none;transition:none;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:is(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:-webkit-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-webkit-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:-moz-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-moz-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:is(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.05rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition :-webkit-any(.admonition,details),.md-typeset details :-webkit-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :-moz-any(.admonition,details),.md-typeset details :-moz-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :is(.admonition,details),.md-typeset details :is(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.note){border-color:#448aff}.md-typeset :-moz-any(.admonition,details):-moz-any(.note){border-color:#448aff}.md-typeset :is(.admonition,details):is(.note){border-color:#448aff}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :is(.note)>:is(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):before{background-color:#448aff;mask-image:var(--md-admonition-icon--note)}.md-typeset :is(.note)>:is(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):after{color:#448aff}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):after{color:#448aff}.md-typeset :is(.note)>:is(.admonition-title,summary):after{color:#448aff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-moz-any(.admonition,details):-moz-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :is(.admonition,details):is(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--abstract)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.info,.todo){border-color:#00b8d4}.md-typeset :-moz-any(.admonition,details):-moz-any(.info,.todo){border-color:#00b8d4}.md-typeset :is(.admonition,details):is(.info,.todo){border-color:#00b8d4}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--info)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-moz-any(.admonition,details):-moz-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :is(.admonition,details):is(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--tip)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.success,.check,.done){border-color:#00c853}.md-typeset :-moz-any(.admonition,details):-moz-any(.success,.check,.done){border-color:#00c853}.md-typeset :is(.admonition,details):is(.success,.check,.done){border-color:#00c853}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):before{background-color:#00c853;mask-image:var(--md-admonition-icon--success)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):after{color:#00c853}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):after{color:#00c853}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):after{color:#00c853}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :-moz-any(.admonition,details):-moz-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :is(.admonition,details):is(.question,.help,.faq){border-color:#64dd17}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):before{background-color:#64dd17;mask-image:var(--md-admonition-icon--question)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):after{color:#64dd17}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-moz-any(.admonition,details):-moz-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :is(.admonition,details):is(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):before{background-color:#ff9100;mask-image:var(--md-admonition-icon--warning)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):after{color:#ff9100}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-moz-any(.admonition,details):-moz-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :is(.admonition,details):is(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):before{background-color:#ff5252;mask-image:var(--md-admonition-icon--failure)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):after{color:#ff5252}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.danger,.error){border-color:#ff1744}.md-typeset :-moz-any(.admonition,details):-moz-any(.danger,.error){border-color:#ff1744}.md-typeset :is(.admonition,details):is(.danger,.error){border-color:#ff1744}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):before{background-color:#ff1744;mask-image:var(--md-admonition-icon--danger)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):after{color:#ff1744}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.bug){border-color:#f50057}.md-typeset :-moz-any(.admonition,details):-moz-any(.bug){border-color:#f50057}.md-typeset :is(.admonition,details):is(.bug){border-color:#f50057}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :is(.bug)>:is(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):before{background-color:#f50057;mask-image:var(--md-admonition-icon--bug)}.md-typeset :is(.bug)>:is(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):after{color:#f50057}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):after{color:#f50057}.md-typeset :is(.bug)>:is(.admonition-title,summary):after{color:#f50057}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.example){border-color:#7c4dff}.md-typeset :-moz-any(.admonition,details):-moz-any(.example){border-color:#7c4dff}.md-typeset :is(.admonition,details):is(.example){border-color:#7c4dff}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :is(.example)>:is(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--example)}.md-typeset :is(.example)>:is(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :is(.example)>:is(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :-moz-any(.admonition,details):-moz-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :is(.admonition,details):is(.quote,.cite){border-color:#9e9e9e}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--quote)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:-webkit-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:-moz-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:is(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :-webkit-any(:hover,:target)>.headerlink{opacity:1;-webkit-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :-moz-any(:hover,:target)>.headerlink{opacity:1;-moz-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :is(:hover,:target)>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:-webkit-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:-moz-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:is(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset :-webkit-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :-moz-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :is(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-webkit-min-content;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset :-webkit-any(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset :-moz-any(del,ins,.comment).critic{box-decoration-break:clone}.md-typeset :is(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :is(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :is(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight :-webkit-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :-moz-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :is(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight :-webkit-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-moz-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :is(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-webkit-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-moz-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :is(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-webkit-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-moz-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-webkit-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :is(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-moz-any(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :is(.kc,.n){color:var(--md-code-hl-name-color)}.highlight :-webkit-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-moz-any(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :is(.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-webkit-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-moz-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :is(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-webkit-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :is(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-moz-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :is(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-webkit-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-moz-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :is(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-webkit-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-moz-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :is(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-webkit-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :-moz-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :is(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:-webkit-sticky;position:sticky;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable :-webkit-any(tbody,td){display:block;padding:0}.highlighttable :-moz-any(tbody,td){display:block;padding:0}.highlighttable :is(tbody,td){display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:-webkit-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:-moz-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:is(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid transparent;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,transparent);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,transparent);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/3.4.1/assets/stylesheets/main.20d9efc8.min.css.map b/3.4.1/assets/stylesheets/main.20d9efc8.min.css.map new file mode 100644 index 0000000000..5247bacd06 --- /dev/null +++ b/3.4.1/assets/stylesheets/main.20d9efc8.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/assets/stylesheets/main/extensions/pymdownx/_keys.scss","../../../src/assets/stylesheets/main.scss","src/assets/stylesheets/main/_resets.scss","src/assets/stylesheets/main/_colors.scss","src/assets/stylesheets/main/_icons.scss","src/assets/stylesheets/main/_typeset.scss","src/assets/stylesheets/utilities/_break.scss","src/assets/stylesheets/main/layout/_banner.scss","src/assets/stylesheets/main/layout/_base.scss","src/assets/stylesheets/main/layout/_clipboard.scss","src/assets/stylesheets/main/layout/_consent.scss","src/assets/stylesheets/main/layout/_content.scss","src/assets/stylesheets/main/layout/_dialog.scss","src/assets/stylesheets/main/layout/_feedback.scss","src/assets/stylesheets/main/layout/_footer.scss","src/assets/stylesheets/main/layout/_form.scss","src/assets/stylesheets/main/layout/_header.scss","src/assets/stylesheets/main/layout/_nav.scss","src/assets/stylesheets/main/layout/_search.scss","src/assets/stylesheets/main/layout/_select.scss","src/assets/stylesheets/main/layout/_sidebar.scss","src/assets/stylesheets/main/layout/_source.scss","src/assets/stylesheets/main/layout/_tabs.scss","src/assets/stylesheets/main/layout/_tag.scss","src/assets/stylesheets/main/layout/_tooltip.scss","src/assets/stylesheets/main/layout/_top.scss","src/assets/stylesheets/main/layout/_version.scss","src/assets/stylesheets/main/extensions/markdown/_admonition.scss","node_modules/material-design-color/material-color.scss","src/assets/stylesheets/main/extensions/markdown/_footnotes.scss","src/assets/stylesheets/main/extensions/markdown/_toc.scss","src/assets/stylesheets/main/extensions/pymdownx/_arithmatex.scss","src/assets/stylesheets/main/extensions/pymdownx/_critic.scss","src/assets/stylesheets/main/extensions/pymdownx/_details.scss","src/assets/stylesheets/main/extensions/pymdownx/_emoji.scss","src/assets/stylesheets/main/extensions/pymdownx/_highlight.scss","src/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss","src/assets/stylesheets/main/extensions/pymdownx/_tasklist.scss","src/assets/stylesheets/main/integrations/_mermaid.scss","src/assets/stylesheets/main/_modifiers.scss"],"names":[],"mappings":"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FJ,C0B10FE,iEACE,oB1By0FJ,C0B10FE,qDACE,oB1By0FJ,C0Br0FE,8EACE,mC1Bw0FJ,C0Bz0FE,wEACE,mC1Bw0FJ,C0Bz0FE,4DACE,mC1Bw0FJ,C0Br0FI,qFACE,wBAnBG,CAoBH,kDAAA,CAAA,0C1Bu0FN,C0Bz0FI,+EACE,wBAnBG,CAoBH,0C1Bu0FN,C0Bz0FI,mEACE,wBAnBG,CAoBH,kDAAA,CAAA,0C1Bu0FN,C0Bn0FI,oFACE,a1Bq0FN,C0Bt0FI,8EACE,a1Bq0FN,C0Bt0FI,kEACE,a1Bq0FN,C0Br1FE,iFACE,oB1Bw1FJ,C0Bz1FE,2EACE,oB1Bw1FJ,C0Bz1FE,+DACE,oB1Bw1FJ,C0Bp1FE,wFACE,mC1Bu1FJ,C0Bx1FE,kFACE,mC1Bu1FJ,C0Bx1FE,sEACE,mC1Bu1FJ,C0Bp1FI,+FACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bs1FN,C0Bx1FI,yFACE,wBAnBG,CAoBH,yC1Bs1FN,C0Bx1FI,6EACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bs1FN,C0Bl1FI,8FACE,a1Bo1FN,C0Br1FI,wFACE,a1Bo1FN,C0Br1FI,4EACE,a1Bo1FN,C0Bp2FE,iFACE,oB1Bu2FJ,C0Bx2FE,2EACE,oB1Bu2FJ,C0Bx2FE,+DACE,oB1Bu2FJ,C0Bn2FE,wFACE,kC1Bs2FJ,C0Bv2FE,kFACE,kC1Bs2FJ,C0Bv2FE,sEACE,kC1Bs2FJ,C0Bn2FI,+FACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bq2FN,C0Bv2FI,yFACE,wBAnBG,CAoBH,6C1Bq2FN,C0Bv2FI,6EACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bq2FN,C0Bj2FI,8FACE,a1Bm2FN,C0Bp2FI,wFACE,a1Bm2FN,C0Bp2FI,4EACE,a1Bm2FN,C0Bn3FE,gFACE,oB1Bs3FJ,C0Bv3FE,0EACE,oB1Bs3FJ,C0Bv3FE,8DACE,oB1Bs3FJ,C0Bl3FE,uFACE,oC1Bq3FJ,C0Bt3FE,iFACE,oC1Bq3FJ,C0Bt3FE,qEACE,oC1Bq3FJ,C0Bl3FI,8FACE,wBAnBG,CAoBH,sDAAA,CAAA,8C1Bo3FN,C0Bt3FI,wFACE,wBAnBG,CAoBH,8C1Bo3FN,C0Bt3FI,4EACE,wBAnBG,CAoBH,sDAAA,CAAA,8C1Bo3FN,C0Bh3FI,6FACE,a1Bk3FN,C0Bn3FI,uFACE,a1Bk3FN,C0Bn3FI,2EACE,a1Bk3FN,C0Bl4FE,wFACE,oB1Bq4FJ,C0Bt4FE,kFACE,oB1Bq4FJ,C0Bt4FE,sEACE,oB1Bq4FJ,C0Bj4FE,+FACE,mC1Bo4FJ,C0Br4FE,yFACE,mC1Bo4FJ,C0Br4FE,6EACE,mC1Bo4FJ,C0Bj4FI,sGACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bm4FN,C0Br4FI,gGACE,wBAnBG,CAoBH,6C1Bm4FN,C0Br4FI,oFACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bm4FN,C0B/3FI,qGACE,a1Bi4FN,C0Bl4FI,+FACE,a1Bi4FN,C0Bl4FI,mFACE,a1Bi4FN,C0Bj5FE,mFACE,oB1Bo5FJ,C0Br5FE,6EACE,oB1Bo5FJ,C0Br5FE,iEACE,oB1Bo5FJ,C0Bh5FE,0FACE,mC1Bm5FJ,C0Bp5FE,oFACE,mC1Bm5FJ,C0Bp5FE,wEACE,mC1Bm5FJ,C0Bh5FI,iGACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bk5FN,C0Bp5FI,2FACE,wBAnBG,CAoBH,6C1Bk5FN,C0Bp5FI,+EACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1Bk5FN,C0B94FI,gGACE,a1Bg5FN,C0Bj5FI,0FACE,a1Bg5FN,C0Bj5FI,8EACE,a1Bg5FN,C0Bh6FE,0EACE,oB1Bm6FJ,C0Bp6FE,oEACE,oB1Bm6FJ,C0Bp6FE,wDACE,oB1Bm6FJ,C0B/5FE,iFACE,mC1Bk6FJ,C0Bn6FE,2EACE,mC1Bk6FJ,C0Bn6FE,+DACE,mC1Bk6FJ,C0B/5FI,wFACE,wBAnBG,CAoBH,oDAAA,CAAA,4C1Bi6FN,C0Bn6FI,kFACE,wBAnBG,CAoBH,4C1Bi6FN,C0Bn6FI,sEACE,wBAnBG,CAoBH,oDAAA,CAAA,4C1Bi6FN,C0B75FI,uFACE,a1B+5FN,C0Bh6FI,iFACE,a1B+5FN,C0Bh6FI,qEACE,a1B+5FN,C0B/6FE,gEACE,oB1Bk7FJ,C0Bn7FE,0DACE,oB1Bk7FJ,C0Bn7FE,8CACE,oB1Bk7FJ,C0B96FE,uEACE,kC1Bi7FJ,C0Bl7FE,iEACE,kC1Bi7FJ,C0Bl7FE,qDACE,kC1Bi7FJ,C0B96FI,8EACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bg7FN,C0Bl7FI,wEACE,wBAnBG,CAoBH,yC1Bg7FN,C0Bl7FI,4DACE,wBAnBG,CAoBH,iDAAA,CAAA,yC1Bg7FN,C0B56FI,6EACE,a1B86FN,C0B/6FI,uEACE,a1B86FN,C0B/6FI,2DACE,a1B86FN,C0B97FE,oEACE,oB1Bi8FJ,C0Bl8FE,8DACE,oB1Bi8FJ,C0Bl8FE,kDACE,oB1Bi8FJ,C0B77FE,2EACE,oC1Bg8FJ,C0Bj8FE,qEACE,oC1Bg8FJ,C0Bj8FE,yDACE,oC1Bg8FJ,C0B77FI,kFACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1B+7FN,C0Bj8FI,4EACE,wBAnBG,CAoBH,6C1B+7FN,C0Bj8FI,gEACE,wBAnBG,CAoBH,qDAAA,CAAA,6C1B+7FN,C0B37FI,iFACE,a1B67FN,C0B97FI,2EACE,a1B67FN,C0B97FI,+DACE,a1B67FN,C0B78FE,wEACE,oB1Bg9FJ,C0Bj9FE,kEACE,oB1Bg9FJ,C0Bj9FE,sDACE,oB1Bg9FJ,C0B58FE,+EACE,kC1B+8FJ,C0Bh9FE,yEACE,kC1B+8FJ,C0Bh9FE,6DACE,kC1B+8FJ,C0B58FI,sFACE,wBAnBG,CAoBH,mDAAA,CAAA,2C1B88FN,C0Bh9FI,gFACE,wBAnBG,CAoBH,2C1B88FN,C0Bh9FI,oEACE,wBAnBG,CAoBH,mDAAA,CAAA,2C1B88FN,C0B18FI,qFACE,a1B48FN,C0B78FI,+EACE,a1B48FN,C0B78FI,mEACE,a1B48FN,C4B9mGA,MACE,wM5BinGF,C4BxmGE,sBACE,uCAAA,CACA,gB5B2mGJ,C4BxmGI,mCACE,a5B0mGN,C4B3mGI,mCACE,c5B0mGN,C4BtmGM,4BACE,sB5BwmGR,C4BrmGQ,mCACE,gC5BumGV,C4BnmGQ,2DAEE,SAAA,CADA,uBAAA,CAEA,e5BqmGV,C4BjmGQ,0EAEE,SAAA,CADA,uB5BomGV,C4BrmGQ,uEAEE,SAAA,CADA,uB5BomGV,C4BrmGQ,iEAEE,SAAA,CADA,u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J,CkCz1GE,6BACE,sClCw1GJ,CkCz1GE,uBACE,sClCw1GJ,CkCr1GE,cACE,yClCu1GJ,CkC30GE,4DACE,oClC60GJ,CkC90GE,yDACE,oClC60GJ,CkC90GE,mDACE,oClC60GJ,CkCr0GE,6CACE,qClCu0GJ,CkCx0GE,0CACE,qClCu0GJ,CkCx0GE,oCACE,qClCu0GJ,CkC7zGE,oDACE,oClC+zGJ,CkCh0GE,iDACE,oClC+zGJ,CkCh0GE,2CACE,oClC+zGJ,CkCtzGE,gDACE,qClCwzGJ,CkCzzGE,6CACE,qClCwzGJ,CkCzzGE,uCACE,qClCwzGJ,CkCnzGE,gCACE,kClCqzGJ,CkCtzGE,6BACE,kClCqzGJ,CkCtzGE,uBACE,kClCqzGJ,CkC/yGE,qCACE,sClCizGJ,CkClzGE,kCACE,sClCizGJ,CkClzGE,4BACE,sClCizGJ,CkC1yGE,yCACE,sClC4yGJ,CkC7yGE,sCACE,sClC4yGJ,CkC7yGE,gCACE,sClC4yGJ,CkCryGE,yCACE,qClCuyGJ,CkCxyGE,sCACE,qClCuyGJ,CkCxyGE,gCACE,qClCuyGJ,CkC9xGE,gDACE,qClCgyGJ,CkCjyGE,6CACE,qClCgyGJ,CkCjyGE,uCACE,qClCgyGJ,CkCxxGE,6CACE,sClC0xGJ,CkC3xGE,0CACE,sClC0xGJ,CkC3xGE,oCACE,sClC0xGJ,CkC/wGE,yDACE,qClCixGJ,CkClxGE,sDACE,qClCixGJ,CkClxGE,gDACE,qClCixGJ,CkC5wGE,iCAGE,mBAAA,CAFA,gBAAA,CACA,gBlC+wGJ,CkCjxGE,8BAGE,mBAAA,CAFA,gBAAA,CACA,gBlC+wGJ,CkCjxGE,wBAGE,mBAAA,CAFA,gBAAA,CACA,gBlC+wGJ,CkC3wGE,eACE,4ClC6wGJ,CkC1wGE,eACE,4ClC4wGJ,CkCxwGE,gBAIE,wCAAA,CAHA,aAAA,CACA,wBAAA,CACA,wBlC2wGJ,CkCtwGE,yBAOE,wCAAA,CACA,+DAAA,CACA,4BAAA,CACA,6BAAA,CARA,iBAAA,CAIA,eAAA,CADA,eAAA,CAFA,cAAA,CACA,oCAAA,CAHA,iBlCixGJ,CkCrwGI,6BACE,YlCu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","file":"main.css"} \ No newline at end of file diff --git a/3.4.1/assets/stylesheets/palette.cbb835fc.min.css b/3.4.1/assets/stylesheets/palette.cbb835fc.min.css new file mode 100644 index 0000000000..30f9264c3e --- /dev/null +++ b/3.4.1/assets/stylesheets/palette.cbb835fc.min.css @@ -0,0 +1 @@ +@media screen{[data-md-color-scheme=slate]{--md-hue:232;--md-default-fg-color:hsla(var(--md-hue),75%,95%,1);--md-default-fg-color--light:hsla(var(--md-hue),75%,90%,0.62);--md-default-fg-color--lighter:hsla(var(--md-hue),75%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),75%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,21%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,21%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,21%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,21%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,1);--md-code-bg-color:hsla(var(--md-hue),15%,15%,1);--md-code-hl-color:rgba(66,135,255,.15);--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(66,135,255,.3);--md-typeset-kbd-color:hsla(var(--md-hue),15%,94%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,94%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-table-color:hsla(var(--md-hue),75%,95%,0.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,12%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,10%,1);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.3),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.4),0 0 0.05rem rgba(0,0,0,.35)}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=slate] img[src$="#only-dark"]{display:initial}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#bd78c9}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a682e3}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#6c91d5}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff9575}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c7846b}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#6c91d5}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:rgba(255,25,71,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:rgba(245,0,86,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:rgba(223,65,251,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:rgba(124,77,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:rgba(66,135,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:rgba(0,145,235,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:rgba(0,186,214,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:rgba(0,189,164,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:rgba(0,199,83,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:rgba(99,222,23,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:rgba(176,235,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:rgba(255,213,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:rgba(255,170,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:rgba(255,145,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:rgba(255,110,66,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:#fff;--md-primary-fg-color--light:hsla(0,0%,100%,.7);--md-primary-fg-color--dark:rgba(0,0,0,.07);--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54);--md-typeset-a-color:#4051b5}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:rgba(0,0,0,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:rgba(0,0,0,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:rgba(0,0,0,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid rgba(0,0,0,.07)}}[data-md-color-primary=black]{--md-primary-fg-color:#000;--md-primary-fg-color--light:rgba(0,0,0,.54);--md-primary-fg-color--dark:#000;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-header{background-color:#000}@media screen and (max-width:59.9375em){[data-md-color-primary=black] .md-nav__source{background-color:rgba(0,0,0,.87)}}@media screen and (min-width:60em){[data-md-color-primary=black] .md-search__form{background-color:hsla(0,0%,100%,.12)}[data-md-color-primary=black] .md-search__form:hover{background-color:hsla(0,0%,100%,.3)}}@media screen and (max-width:76.1875em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:#000}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:#000}} \ No newline at end of file diff --git a/3.4.1/assets/stylesheets/palette.cbb835fc.min.css.map b/3.4.1/assets/stylesheets/palette.cbb835fc.min.css.map new file mode 100644 index 0000000000..96e380c878 --- /dev/null +++ b/3.4.1/assets/stylesheets/palette.cbb835fc.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["src/assets/stylesheets/palette/_scheme.scss","../../../src/assets/stylesheets/palette.scss","src/assets/stylesheets/palette/_accent.scss","src/assets/stylesheets/palette/_primary.scss","src/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"AA2BA,cAGE,6BAKE,YAAA,CAGA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CACA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CAGA,gDAAA,CACA,gDAAA,CAGA,uCAAA,CACA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,2CAAA,CAGA,uDAAA,CACA,6DAAA,CACA,2DAAA,CAGA,yDAAA,CAGA,mDAAA,CACA,mDAAA,CAGA,qDAAA,CACA,wDAAA,CAGA,wEAAA,CAKA,yEAAA,CAKA,yECxDF,CD6DE,kHAEE,YC3DJ,CD+DE,gHAEE,eC7DJ,CDoFE,yDACE,4BClFJ,CDiFE,2DACE,4BC/EJ,CD8EE,gEACE,4BC5EJ,CD2EE,2DACE,4BCzEJ,CDwEE,yDACE,4BCtEJ,CDqEE,0DACE,4BCnEJ,CDkEE,gEACE,4BChEJ,CD+DE,0DACE,4BC7DJ,CD4DE,2OACE,4BCjDJ,CDwDA,+FAGE,iCCtDF,CACF,CCjDE,2BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CD6CN,CCvDE,4BACE,4BAAA,CACA,mDAAA,CAOE,yBAAA,CACA,8CDoDN,CC9DE,8BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CD2DN,CCrEE,mCACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDkEN,CC5EE,8BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDyEN,CCnFE,4BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDgFN,CC1FE,kCACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CDuFN,CCjGE,4BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CD8FN,CCxGE,4BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CDqGN,CC/GE,6BACE,4BAAA,CACA,mDAAA,CAOE,yBAAA,CACA,8CD4GN,CCtHE,mCACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CDmHN,CC7HE,4BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CD6HN,CCpIE,8BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CDoIN,CC3IE,6BACE,yBAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CD2IN,CClJE,8BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CDkJN,CCzJE,mCACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDsJN,CE3JE,4BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwJN,CEnKE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgKN,CE3KE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwKN,CEnLE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgLN,CE3LE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwLN,CEnME,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgMN,CE3ME,mCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwMN,CEnNE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgNN,CE3NE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwNN,CEnOE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgON,CE3OE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwON,CEnPE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CFmPN,CE3PE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CF2PN,CEnQE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CFmQN,CE3QE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CF2QN,CEnRE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgRN,CE3RE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwRN,CEnSE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CAAA,CAKA,4BF4RN,CE5SE,kCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CAAA,CAKA,4BFqSN,CEtRE,sEACE,4BFyRJ,CE1RE,+DACE,4BF6RJ,CE9RE,iEACE,4BFiSJ,CElSE,gEACE,4BFqSJ,CEtSE,iEACE,4BFySJ,CEhSA,8BACE,0BAAA,CACA,+CAAA,CACA,2CAAA,CACA,qCAAA,CACA,4CAAA,CAGA,4BFiSF,CGrMI,mCDtFA,+CACE,gCF8RJ,CE3RI,qDACE,gCF6RN,CExRE,iEACE,qBF0RJ,CACF,CGhNI,sCDnEA,uCACE,0CFsRJ,CACF,CE7QA,8BACE,0BAAA,CACA,4CAAA,CACA,gCAAA,CACA,0BAAA,CACA,+CAAA,CAGA,4BF8QF,CE3QE,yCACE,qBF6QJ,CG9MI,wCDxDA,8CACE,gCFyQJ,CACF,CGtOI,mCD5BA,+CACE,oCFqQJ,CElQI,qDACE,mCFoQN,CACF,CG3NI,wCDjCA,iFACE,qBF+PJ,CACF,CGnPI,sCDLA,uCACE,qBF2PJ,CACF","file":"palette.css"} \ No newline at end of file diff --git a/3.4.1/configuration/index.html b/3.4.1/configuration/index.html new file mode 100644 index 0000000000..db84930f49 --- /dev/null +++ b/3.4.1/configuration/index.html @@ -0,0 +1,6467 @@ + + + + + + + + + + + + + + + + Configuration - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    SC4S Configuration Variables

    +

    Other than device filter creation, SC4S is almost entirely controlled by environment variables. Here are the categories +and variables needed to properly configure SC4S for your environment.

    +

    Global Configuration

    + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_USE_REVERSE_DNSyes or no(default)use reverse DNS to identify hosts when HOST is not valid in the syslog header
    SC4S_CONTAINER_HOSTstringvariable passed to the container to identify the actual log host for container implementations
    +
      +
    • +

      NOTE: Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http +destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as +syslog.

      +
    • +
    • +

      NOTE: Use of the SC4S_USE_REVERSE_DNS variable can have a significant impact on performance if the reverse DNS facility +(typically a caching nameserver) is not performant. If you notice events being indexed far later than their actual timestamp +in the event (latency between _indextime and _time), this is the first place to check.

      +
    • +
    +

    Configure use of external http proxy

    +

    Warning: Many http proxies are not provisioned with application traffic in mind. Ensure adequate capacity is available to avoid data +loss and or proxy outages. Note: the follow variables are lower case

    + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    http_proxyundefinedUse libcurl format proxy string “http://username:password@proxy.server:port”
    https_proxyundefinedUse libcurl format proxy string “http://username:password@proxy.server:port”
    +

    Splunk HEC Destination Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_DEST_SPLUNK_HEC_CIPHER_SUITEcomma separated listOpen SSL cipher suite list
    SC4S_DEST_SPLUNK_HEC_SSL_VERSIONcomma separated listOpen SSL version list
    SC4S_DEST_SPLUNK_HEC_WORKERSnumericNumber of destination workers (default: 10 threads). This should rarely need to be changed; consult sc4s community for advice on appropriate setting in extreme high- or low-volume environments.
    SC4S_DEST_SPLUNK_INDEXED_FIELDSr_unixtime,facility,
    severity,
    container,
    loghost,
    destport,
    fromhostip,
    proto

    none
    List of sc4s indexed fields that will be included with each event in Splunk (default is the entire list except “none”). Two other indexed fields, sc4s_vendor_product and sc4s_syslog_format, will also appear along with the fields selected via the list and cannot be turned on or off individually. If no indexed fields are desired (including the two internal ones), set the value to the single value of “none”. When setting this variable, separate multiple entries with commas and do not include extra spaces.

    This list maps to the following indexed fields that will appear in all Splunk events:
    facility: sc4s_syslog_facility
    severity: sc4s_syslog_severity
    container: sc4s_container
    loghost: sc4s_loghost
    dport: sc4s_destport
    fromhostip: sc4s_fromhostip
    proto: sc4s_proto
    +
      +
    • +

      NOTE: When using alternate HEC destinations, the destination operating parameters outlined above (CIPHER_SUITE, SSL_VERSION, etc.) can be +individually controlled per DESTID (see “Configuration of Additional Splunk HEC Destinations” immediately below). For example, to set the number of workers +for the alternate HEC destination d_hec_FOO to 24, set SC4S_DEST_SPLUNK_HEC_FOO_WORKERS=24.

      +
    • +
    • +

      NOTE2: Configuration files for destinations must have a .conf extension

      +
    • +
    +

    Configure additional PKI Trust Anchors

    +

    Additional trusted (private) Certificate authorities may be trusted by appending each PEM formatted certificate to /opt/sc4s/tls/trusted.pem

    +

    Configuration of timezone for legacy sources

    +

    Legacy sources (those that remain non compliant with RFC5424) often leave the recipient to +guess at the actual time zone offset. SC4S uses an advanced feature of syslog-ng to “guess” the correct time zone for real time sources. +However, this feature requires the source (device) clock to be synchronized to within +/- 30s of the SC4S system clock. +Industry accepted best practice is to set such legacy systems to GMT (sometimes inaccurately called UTC). +However, this is not always possible and in such cases two additional methods are available. For a list of time zones see. Only the “TZ Database name” OR “offset” format may be used.

    +

    Change Global default time zone

    +

    This setting is used when the container cost is not set for UTC (best practice). Using this setting is often confusing and should be avoided.

    +

    Set the SC4S_DEFAULT_TIMEZONE variable to a recognized “zone info” (Region/City) time zone format such as America/New_York. +Setting this value will force SC4S to use the specified timezone (and honor its associated Daylight Savings/Summer Time rules) +for all events without a timezone offset in the header or message payload.

    +

    SC4S Disk Buffer Configuration

    +

    Disk buffers in SC4S are allocated per destination. Keep this in mind when using additional destinations that have disk buffering configured. By +default, when alternate HEC destinations are configured as outlined above disk buffering will be configured identically to that of the main HEC +destination (unless overridden individually).

    +

    Important Notes Regarding Disk Buffering:

    +
      +
    • +

      “Reliable” disk buffering offers little advantage over “normal” disk buffering, at a significant performance penalty. +For this reason, normal disk buffering is recommended.

      +
    • +
    • +

      If you add destinations locally in your configuration, pay attention to the cumulative buffer requirements when allocating local +disk.

      +
    • +
    • +

      Disk buffer storage is configured via container volumes and is persistent between restarts of the container. +Be sure to account for disk space requirements on the local sc4s host when creating the container volumes in your respective +runtime environment (outlined in the “getting started” runtime docs). These volumes can grow significantly if there is +an extended outage to the SC4S destinations (HEC endpoints). See the “SC4S Disk Buffer Configuration” section on the Configuration +page for more info.

      +
    • +
    • +

      The values for the variables below represent the total sizes of the buffers for the destination. These sizes are divided by the +number of workers (threads) when setting the actual syslog-ng buffer options, because the buffer options apply to each worker rather than the +entire destination. Pay careful attention to this when using the “BYOE” version of SC4S, where direct access to the syslog-ng config files +may hide this nuance. Lastly, be sure to factor in the syslog-ng data structure overhead (approx. 2x raw message size) when calculating the +total buffer size needed. To determine the proper size of the disk buffer, consult the “Data Resilience” section below.

      +
    • +
    • +

      When changing the disk buffering directory, the new directory must exist. If it doesn’t, then syslog-ng will fail to start.

      +
    • +
    • +

      When changing the disk buffering directory, if buffering has previously occurred on that instance, a persist file may exist which will prevent syslog-ng from changing the directory.

      +
    • +
    +

    Disk Buffer Variables

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableValues/DefaultDescription
    SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_ENABLEyes(default) or noEnable local disk buffering
    SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_RELIABLEyes or no(default)Enable reliable/normal disk buffering (normal recommended)
    SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_MEMBUFSIZEbytes (10241024)Memory buffer size in bytes (used with reliable disk buffering)
    SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_MEMBUFLENGTHmessages (15000)Memory buffer size in message count (used with normal disk buffering)
    SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_DISKBUFSIZEbytes (53687091200)Size of local disk buffer in bytes (default 50 GB)
    SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_DIRpathLocation to store the disk buffer files. This variable should only be set when using BYOE; this location is fixed when using the Container.
    +

    Archive File Configuration

    +

    This feature is designed to support compliance or “diode mode” archival of all messages. Instructions for mounting the appropriate +local directory to use this feature are included in each “getting started” runtime document. The files will be stored in a folder +structure at the mount point using the pattern shown in the table below depending on the value of the SC4S_GLOBAL_ARCHIVE_MODE variable. +All events for both modes are formatted using syslog-ng’s EWMM template.

    + + + + + + + + + + + + + + + + + + + + +
    VariableValue/DefaultLocation/Pattern
    SC4S_GLOBAL_ARCHIVE_MODEcompliance(default)<archive mount>/${.splunk.sourcetype}/${HOST}/$YEAR-$MONTH-$DAY-archive.log
    SC4S_GLOBAL_ARCHIVE_MODEdiode<archive mount>/${YEAR}/${MONTH}/${DAY}/${fields.sc4s_vendor_product}_${YEAR}${MONTH}${DAY}${HOUR}${MIN}.log"
    +

    WARNING POTENTIAL OUTAGE CAUSING CONSEQUENCE

    +

    Use the following variables to select global archiving or per-source archiving. C4S does not prune the files that are created; +therefore the administrator must provide a means of log rotation to prune files and/or move them to an archival system to avoid exhaustion of disk space.

    + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_ARCHIVE_GLOBALyes or undefinedEnable archive of all vendor_products
    SC4S_ARCHIVE_<VENDOR_PRODUCT>yes(default) or undefinedSee sources section of documentation enables selective archival
    +

    Syslog Source Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableValues/DefaultDescription
    SC4S_SOURCE_TLS_ENABLEyes or no(default)Enable TLS globally. Be sure to configure the cert as shown immediately below.
    SC4S_LISTEN_DEFAULT_TLS_PORTundefined or 6514Enable a TLS listener on port 6514
    SC4S_LISTEN_DEFAULT_RFC6425_PORTundefined or 5425Enable a TLS listener on port 5425
    SC4S_SOURCE_TLS_OPTIONSno-sslv2Comma-separated list of the following options: no-sslv2, no-sslv3, no-tlsv1, no-tlsv11, no-tlsv12, none. See syslog-ng docs for the latest list and defaults
    SC4S_SOURCE_TLS_CIPHER_SUITESee opensslColon-delimited list of ciphers to support, e.g. ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384. See openssl docs for the latest list and defaults
    SC4S_SOURCE_TCP_MAX_CONNECTIONS2000Max number of TCP Connections
    SC4S_SOURCE_UDP_IW_USEyes or no(default)If we want to change the Initial Window Size for UDP
    SC4S_SOURCE_UDP_FETCH_LIMIT1000Number of events to fetch from server buffer at once
    SC4S_SOURCE_UDP_IW_SIZE250000Initial Window size
    SC4S_SOURCE_TCP_IW_SIZE20000000Initial Window size
    SC4S_SOURCE_TCP_FETCH_LIMIT2000Number of events to fetch from server buffer at once
    SC4S_SOURCE_UDP_SO_RCVBUFF17039360UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly.
    SC4S_SOURCE_TCP_SO_RCVBUFF17039360UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly.
    SC4S_SOURCE_TLS_SO_RCVBUFF17039360UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly.
    SC4S_SOURCE_RFC5426_SO_RCVBUFF17039360UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly.
    SC4S_SOURCE_RFC6587_SO_RCVBUFF17039360UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly.
    SC4S_SOURCE_RFC5425_SO_RCVBUFF17039360UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly.
    SC4S_SOURCE_LISTEN_UDP_SOCKETS4Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF
    SC4S_SOURCE_LISTEN_RFC5426_SOCKETS1Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF
    SC4S_SOURCE_LISTEN_RFC6587_SOCKETS1Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF
    SC4S_SOURCE_LISTEN_RFC5425_SOCKETS1Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF
    SC4S_SOURCE_STORE_RAWMSGundefined or “no”Store unprocessed “on the wire” raw message in the RAWMSG macro for use with the “fallback” sourcetype. Do not set this in production; substantial memory and disk overhead will result. Use for log path/filter development only.
    SC4S_IPV6_ENABLEyes or no(default)enable (dual-stack)IPv6 listeners and health checks
    +

    Syslog Source TLS Certificate Configuration

    +
      +
    • Create a folder /opt/sc4s/tls if not already done as part of the “getting started” process.
    • +
    • Uncomment the appropriate mount line in the unit or yaml file (again, documented in the “getting started” runtime documents).
    • +
    • Save the server private key in PEM format with NO PASSWORD to /opt/sc4s/tls/server.key
    • +
    • Save the server certificate in PEM format to /opt/sc4s/tls/server.pem
    • +
    • Ensure the entry SC4S_SOURCE_TLS_ENABLE=yes exists in /opt/sc4s/env_file
    • +
    +

    SC4S metadata configuration

    +

    Log Path overrides of index or metadata

    +

    A key aspect of SC4S is to properly set Splunk metadata prior to the data arriving in Splunk (and before any TA processing +takes place). The filters will apply the proper index, source, sourcetype, host, and timestamp metadata automatically by +individual data source. Proper values for this metadata, including a recommended index and output format (template), are +included with all “out-of-the-box” log paths included with SC4S and are chosen to properly interface with the corresponding +TA in Splunk. The administrator will need to ensure all recommended indexes be created to accept this data if the defaults +are not changed.

    +

    It will be common to override default values in many installations. To accommodate this, each log path consults +an internal lookup file that maps Splunk metadata to the specific data source being processed. This file contains the +defaults that are used by SC4S to set the appropriate Splunk metadata (index, host, source, and sourcetype) for each +data source. This file is not directly available to the administrator, but a copy of the file is deposited in the local mounted directory +(by default /opt/sc4s/local/context/splunk_metadata.csv.example) for reference. It is important to note that this copy is not used +directly, but is provided solely for reference. To add to the list, or to override default entries, simply create an override file without +the example extension (e.g. /opt/sc4s/local/context/splunk_metadata.csv) and modify it according to the instructions below.

    +

    splunk_metadata.csv is a CSV +file containing a “key” that is referenced in the log path for each data source. These keys are documented in the individual +source files in this section, and allow one to override Splunk metadata either in whole or part. The use of this file is best +shown by example. Here is the Netscreen “Sourcetype and Index Configuration” table from the Juniper +source documentation:

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    juniper_netscreennetscreen:firewallnetfwnone
    +

    Here is a line from a typical splunk_metadata.csv override file:

    +
    juniper_netscreen,index,ns_index
    +
    + +

    The columns in this file are key, metadata, and value. To make a change via the override file, consult the example file (or +the source documentation) for the proper key when overriding an existing source and modify and/or add rows in the table, specifying one or +more of the following metadata/value pairs for a given key:

    +
      +
    • key which refers to the vendor and product name of the data source, using the vendor_product convention. For overrides, these keys + will be listed in the example file. For new (custom) sources, be sure to choose a key that accurately reflects the vendor and product + being configured, and that matches what is specified in the log path.
    • +
    • index to specify an alternate value for index
    • +
    • source to specify an alternate value for source
    • +
    • host to specify an alternate value for host
    • +
    • sourcetype to specify an alternate value for sourcetype (be very careful when changing this; only do so if an upstream + TA is not being used, or a custom TA (built by you) is being used.)
    • +
    • sc4s_template to specify an alternate value for the syslog-ng template that will be used to format the event that will be + indexed by Splunk. Changing this carries the same warning as the sourcetype above; this will affect the upstream TA. The template + choices are documented elsewhere in this Configuration section.
    • +
    +

    In our example above, the juniper_netscreen key references a new index used for that data source called ns_index.

    +

    In general, for most deployments the index should be the only change needed; other default metadata should almost +never be overridden (particularly for the “Out of the Box” data sources). Even then, care should be taken when considering any alternates, +as the defaults for SC4S were chosen with best practices in mind.

    +
      +
    • +

      NOTE: The splunk_metadata.csv file is a true override file and the entire example file should not be copied over to the +override. In most cases, the override file is just one or two lines, unless an entire index category (e.g. netfw) needs to be overridden. +This is similar in concept to the “default” and “local” conf file precedence in Splunk Enterprise.

      +
    • +
    • +

      NOTE The splunk_metadata.csv file should always be appended with an appropriate new key and default for the index when building a custom +SC4S log path, as the new key will not exist in the internal lookup (nor the example file). Care should be taken during log path design to +choose appropriate index, sourcetype and template defaults so that admins are not compelled to override them. If the custom log path is later +added to the list of SC4S-supported sources, this addendum can be removed.

      +
    • +
    • +

      NOTE: As noted above, the splunk_metadata.csv.example file is provided for reference only and is not used directly by SC4S. However, +it is an exact copy of the internal file, and can therefore change from release to release. Be sure to check the example file first to make +sure the keys for any overrides map correctly to the ones in the example file.

      +
    • +
    +

    Override index or metadata based on host, ip, or subnet (compliance overrides)

    +

    In other cases it is appropriate to provide the same overrides but based on PCI scope, geography, or other criterion rather than globally. +This is accomplished by the use of a file that uniquely identifies these source exceptions via syslog-ng filters, +which maps to an associated lookup of alternate indexes, sources, or other metadata. In addition, (indexed) fields can also be +added to further classify the data.

    +
      +
    • +

      The conf and csv files referenced below will be populated into the /opt/sc4s/local/context directory when SC4S is run for the first +time after being set up according to the “getting started” runtime documents, in a similar fashion to splunk_metadata.csv. +After this first-time population of the files takes place, they can be edited (and SC4S restarted) for the changes to take effect. To get started:

      +
    • +
    • +

      Edit the file compliance_meta_by_source.conf to supply uniquely named filters to identify events subject to override.

      +
    • +
    • Edit the file compliance_meta_by_source.csv to supply appropriate field(s) and values.
    • +
    +

    The three columns in the csv file are filter name, field name, and value. Filter names in the conf file must match one or more +corresponding filter name rows in the csv file. The field name column obeys the following convention:

    +
      +
    • .splunk.index to specify an alternate value for index
    • +
    • .splunk.source to specify an alternate value for source
    • +
    • .splunk.sourcetype to specify an alternate value for sourcetype (be very careful when changing this; only do so if a downstream + TA is not being used, or a custom TA (built by you) is being used.)
    • +
    • fields.fieldname where fieldname will become the name of an indexed field sent to Splunk with the supplied value
    • +
    +

    This file construct is best shown by an example. Here is a sample compliance_meta_by_source.conf file:

    +
    filter f_test_test {
    +   host("something-*" type(glob)) or
    +   netmask(192.168.100.1/24)
    +};
    +
    + +

    and the corresponding compliance_meta_by_source.csv file:

    +
    f_test_test,.splunk.index,"pciindex"
    +f_test_test,fields.compliance,"pci"
    +
    + +

    First off, ensure that the filter name(s) in the conf file match +one or more rows in the csv file. In this case, any incoming message with a hostname starting with something- or arriving from a netmask +of 192.168.100.1/24 will match the f_test_test filter, and the corresponding entries in the csv file will be checked for overrides. +In this case, the new index is pciindex, and an indexed field named compliance will be sent to Splunk, with it’s value set to pci. +To add additional overrides, simply add another filter foo_bar {}; stanza to the conf file, and add appropriate entries to the csv file +that match the filter name(s) to the overrides you desire.

    +
      +
    • IMPORTANT: The files above are actual syslog-ng config file snippets that get parsed directly by the underlying syslog-ng +process. Take care that your syntax is correct; for more information on proper syslog-ng syntax, see the syslog-ng +documentation. +A syntax error will cause the runtime process to abort in the “preflight” phase at startup.
    • +
    +

    Finally, to update your changes for the systemd-based runtimes, restart SC4S using the commands:

    +
    sudo systemctl daemon-reload
    +sudo systemctl restart sc4s
    +
    + +

    For the Docker Swarm runtime, redeploy the updated service using the command:

    +
    docker stack deploy --compose-file docker-compose.yml sc4s
    +
    + +

    Dropping all data by ip or subnet (deprecated)

    +

    The usage of vendor_product_by_source to null queue is now deprecated. Please refer to the recommended method for dropping data in Filtering events from output.

    +

    In some cases rogue or port-probing data can be sent to SC4S from misconfigured devices or vulnerability scanners. Update +the vendor_product_by_source.conf filter f_null_queue with one or more ip/subnet masks to drop events without +logging. Note that drop metrics will be recorded.

    +

    Fixing (overriding) the host field

    +

    In some cases the host value is not present in an event (or an IP address is in its place). For administrators +who require a true hostname be attached to each event, SC4S provides an optional facility to perform a reverse IP to +name lookup. If the variable SC4S_USE_REVERSE_DNS is set to “yes”, SC4S +will first check host.csv and replace the value of host with the value specified that matches the incoming IP address. +If a value is not found in host.csv then a reverse DNS lookup will be attempted against the configured nameserver. +The IP address will only be used as the host value as a last resort.

    +
      +
    • NOTE: Use of this variable can have a significant impact on performance if the reverse DNS facility (typically a caching +nameserver) is not performant. If you notice events being indexed far later than their actual timestamp in the event (latency +between _indextime and _time), this is the first place to check.
    • +
    +

    Splunk Connect for Syslog output templates (syslog-ng templates)

    +

    Splunk Connect for Syslog utilizes the syslog-ng template mechanism to format the output payload (event) that will be sent to Splunk. +These templates can format the messages in a number of ways (straight text, JSON, etc.) as well as utilize the many syslog-ng +“macros” (fields) to specify what gets placed in the payload that is delivered to the destination. Here is a list of the templates +used in SC4S, which can be used in the metadata override section immediately above. New templates can also be added by the +administrator in the “local” section for local destinations; pay careful attention to the syntax as the templates are “live” +syslog-ng config code.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Template nameTemplate contentsNotes
    t_standard${DATE} ${HOST} ${MSGHDR}${MESSAGE}Standard template for most RFC3164 (standard syslog) traffic
    t_msg_only${MSGONLY}syslog-ng $MSG is sent, no headers (host, timestamp, etc.)
    t_msg_trim$(strip $MSGONLY)As above with whitespace stripped
    t_everything${ISODATE} ${HOST} ${MSGHDR}${MESSAGE}Standard template with ISO date format
    t_hdr_msg${MSGHDR}${MESSAGE}Useful for non-compliant syslog messages
    t_legacy_hdr_msg${LEGACY_MSGHDR}${MESSAGE}Useful for non-compliant syslog messages
    t_hdr_sdata_msg${MSGHDR}${MSGID} ${SDATA} ${MESSAGE}Useful for non-compliant syslog messages
    t_program_msg${PROGRAM}[${PID}]: ${MESSAGE}Useful for non-compliant syslog messages
    t_program_nopid_msg${PROGRAM}: ${MESSAGE}Useful for non-compliant syslog messages
    t_JSON_3164$(format-json –scope rfc3164
    –pair PRI=”<$PRI>”
    –key LEGACY_MSGHDR
    –exclude FACILITY
    –exclude PRIORITY)
    JSON output of all RFC3164-based syslog-ng macros. Useful with the “fallback” sourcetype to aid in new filter development.
    t_JSON_5424$(format-json –scope rfc5424
    –pair PRI=”<$PRI>”
    –key ISODATE
    –exclude DATE
    –exclude FACILITY
    –exclude PRIORITY)
    JSON output of all RFC5424-based syslog-ng macros; for use with RFC5424-compliant traffic.
    t_JSON_5424_SDATA$(format-json –scope rfc5424
    –pair PRI=”<$PRI>”
    –key ISODATE
    –exclude DATE
    –exclude FACILITY
    –exclude PRIORITY)
    –exclude MESSAGE
    JSON output of all RFC5424-based syslog-ng macros except for MESSAGE; for use with RFC5424-compliant traffic.
    +

    Data Resilience - Local Disk Buffer Configuration

    +

    SC4S provides capability to minimize the number of lost events if the connection to all the Splunk Indexers goes down. +This capability utilizes the disk buffering feature of Syslog-ng. SC4S receives a response from the Splunk HTTP Event +Collector (HEC) when a message is received successfully. If a confirmation message from the HEC endpoint is not +received (or a “server busy” reply, such as a “503” is sent), the load balancer will try the next HEC endpoint in the pool. +If all pool members are exhausted (such as would occur if there were a full network outage to the HEC endpoints), events +will queue to the local disk buffer on the SC4S Linux host. SC4S will continue attempting to send the failed +events while it buffers all new incoming events to disk. If the disk space allocated to disk buffering fills up then SC4S +will stop accepting new events and subsequent events will be lost. Once SC4S gets confirmation that events are again being +received by one or more indexers, events will then stream from the buffer using FIFO queueing. The number of +events in the disk buffer will reduce as long as the incoming event volume is less than the maximum SC4S (with the disk +buffer in the path) can handle. When all events have been emptied from the disk buffer, SC4S will resume streaming events +directly to Splunk.

    +

    For more detail on the Syslog-ng behavior the documentation can be found here: +https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.22/administration-guide/55#TOPIC-1209280

    +

    SC4S has disk buffering enabled by default and it is strongly recommended that you keep it on, however this feature does +have a performance cost. +Without disk buffering enabled SC4S can handle up to 345K EPS (800 bytes/event avg) +With “Normal” disk buffering enabled SC4S can handle up to 60K EPS (800 bytes/event avg) – This is still a lot of data!

    +

    To guard against data loss it is important to configure the appropriate type and amount of storage for SC4S disk buffering. +To estimate the storage allocation, follow these steps:

    +
      +
    • Start with your estimated maximum events per second that each SC4S server will experience. Based on the maximum +throughput of SC4S with disk buffering enabled, the conservative estimate for maximum events per second would be 60K +(however, you should use the maximum rate in your environment for this calculation, not the max rate SC4S can handle).
    • +
    • Next is your average estimated event size based on your data sources. It is common industry practice to estimate log +events as 800 bytes on average.
    • +
    • Then, factor in the maximum length of connectivity downtime you want disk buffering to be able to handle. This measure +is very much dependent on your risk tolerance.
    • +
    • Lastly, syslog-ng imposes significant overhead to maintain its internal data structures (primarily macros) so that the +data can be properly “played back” upon network restoration. This overhead currently runs at about 1.7x above the total +storage size for the raw messages themselves, and can be higher for “fallback” data sources due to the overlap of syslog-ng +macros (data fields) containing some or all of the original message.
    • +
    +

    For example, to protect against a full day of lost connectivity from SC4S to all your indexers at maximum throughput the +calculation would look like the following:

    +

    60,000 EPS * 86400 seconds * 800 bytes * 1.7 = 6.4 TB of storage

    +

    To configure storage allocation for the SC4S disk buffering, do the following:

    +
      +
    • Edit the file /opt/sc4s/default/env_file
    • +
    • Add the SC4S_DEST_SPLUNK_HEC_DISKBUFF_DISKBUFSIZE variable to the file and set the value to the number of bytes based +on your estimation (e.g. 7050240000000 in the example above)
    • +
    • Splunk does not recommend reducing the disk allocation below 500 GB
    • +
    • Restart SC4S
    • +
    +

    Given that in a connectivity outage to the Indexers events will be saved and read from disk until the buffer is emptied, +it is ideal to use the fastest type of storage available. For this reason, NVMe storage is recommended for SC4S disk buffering.

    +

    It is best to design your deployment so that the disk buffer will drain after connectivity is restored to the Splunk Indexers +(while incoming data continues at the same general rate). Since “your mileage may vary” with different combinations of +data load, instance type, and disk subsystem performance, it is good practice to provision a box that performs twice as +well as is required for your max EPS. This headroom will allow for rapid recovery after a connectivity outage.

    +

    eBPF

    +

    eBPF is a feature that helps with congestion of single heavy stream of data by utilizing multithreading. Used with SC4S_SOURCE_LISTEN_UDP_SOCKETS. +To leverage this feature you need host os to be able to use eBPF. Additional pre-requisite is running docker/podman in privileged mode.

    + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_ENABLE_EBPF=yesyes or no(default)use ebpf to leverage multithreading when consuming from a single connection
    SC4S_EBPF_NO_SOCKETS=4integersets number of threads to use, for optimal preformance it should not be less than value set for SC4S_SOURCE_LISTEN_UDP_SOCKETS
    +

    To run docker/podman in privileged mode edit service file (/lib/systemd/system/sc4s.service). +Add --privileged flag to docker/podman run command:

    +
    ExecStart=/usr/bin/podman run \
    +        -e "SC4S_CONTAINER_HOST=${SC4SHOST}" \
    +        -v "$SC4S_PERSIST_MOUNT" \
    +        -v "$SC4S_LOCAL_MOUNT" \
    +        -v "$SC4S_ARCHIVE_MOUNT" \
    +        -v "$SC4S_TLS_MOUNT" \
    +        --privileged \
    +        --env-file=/opt/sc4s/env_file \
    +        --health-cmd="/healthcheck.sh" \
    +        --health-interval=10s --health-retries=6 --health-timeout=6s \
    +        --network host \
    +        --name SC4S \
    +        --rm $SC4S_IMAGE
    +
    + +

    Misc options

    +
      +
    • SC4S_LISTEN_STATUS_PORT Change the “status” port used by the internal health check process default value is 8080
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/destinations/index.html b/3.4.1/destinations/index.html new file mode 100644 index 0000000000..fa647d0851 --- /dev/null +++ b/3.4.1/destinations/index.html @@ -0,0 +1,5792 @@ + + + + + + + + + + + + + + + + Destinations - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    SC4S Destination Configuration

    +

    Splunk Connect for Syslog can be configured to utilize any destination available in +syslog-ng OSE. The configuration system provides ease of use helpers to manage configuration +for the three most common destination needs, Splunk HEC, RFC5424 Syslog, and Legacy BSD Syslog.

    +

    In the getting started guide you configured the Splunk HEC “DEFAULT” destination to receive all traffic by default. The “DEFAULT” destination should be configured to accept all events to ensure that at least one +destination has the event to avoid data loss due to misconfiguration. The following example demonstrates configuration of a second HEC destination where only “selected” data will be sent.

    +

    Example 1 Send all events

    +
    #Note "OTHER" should be a meaningful name
    +SC4S_DEST_SPLUNK_HEC_OTHER_URL=https://splunk:8088
    +SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN=${SPLUNK_HEC_TOKEN}
    +SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY=no
    +SC4S_DEST_SPLUNK_HEC_OTHER_MODE=GLOBAL
    +
    + +

    Example 2 Send only cisco IOS Events

    +
    #Note "OTHER" should be a meaningful name
    +SC4S_DEST_SPLUNK_HEC_OTHER_URL=https://splunk:8088
    +SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN=${SPLUNK_HEC_TOKEN}
    +SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY=no
    +SC4S_DEST_SPLUNK_HEC_OTHER_MODE=SELECT
    +SC4S_DEST_CISCO_IOS_ALTERNATES=d_fmt_hec_OTHER
    +
    + +

    Example 3 Send only cisco IOS events that are not debug

    +
    #Note "OTHER" should be a meaningful name
    +SC4S_DEST_SPLUNK_HEC_OTHER_URL=https://splunk:8088
    +SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN=${SPLUNK_HEC_TOKEN}
    +SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY=no
    +SC4S_DEST_SPLUNK_HEC_OTHER_MODE=SELECT
    +
    + +
    #filename:
    +application sc4s-lp-cisco_ios_dest_fmt_other{{ source }}[sc4s-lp-dest-select-d_fmt_hec_other] {
    +    filter {
    +        'CISCO_IOS' eq "${fields.sc4s_vendor}_${fields.sc4s_product}"
    +        #Match any cisco event that is not like "%ACL-7-1234"
    +        and not message('^%[^\-]+-7-');
    +    };    
    +};
    +
    + +

    Example 4 Mcafee EPO send RFC5424 events without frames to third party system

    +

    Note in most cases when a destination requires syslog the requirement is referring to +legacy BSD syslog (RFC3194) not standard syslog RFC5424

    +

    The destination name is taken from the env var each destination must have a unique name regardless of type. +This value should be short and meaningful.

    +
    #env_file
    +SC4S_DEST_SYSLOG_MYSYS_HOST=172.17.0.1
    +SC4S_DEST_SYSLOG_MYSYS_PORT=514
    +SC4S_DEST_SYSLOG_MYSYS_MODE=SELECT
    +# set to #yes for ietf frames
    +SC4S_DEST_SYSLOG_MYSYS_IETF=no 
    +
    + +
    #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_syslog_msys.conf
    +application sc4s-lp-mcafee_epo_d_syslog_msys[sc4s-lp-dest-select-d_syslog_msys] {
    +    filter {
    +        'mcafee' eq "${fields.sc4s_vendor}"
    +        and 'epo' eq "${fields.sc4s_product}"
    +    };    
    +};
    +
    + +

    Example 5 Cisco ASA send to a third party SIEM

    +

    The destination name is taken from the env var each destination must have a unique name regardless of type. +This value should be short and meaningful

    +

    In most cases when a third party system needs “syslog” the requirement is to send “legacy BSD” as follows +This is often refereed to as RFC3194

    +
    #env_file
    +SC4S_DEST_BSD_OLDSIEM_HOST=172.17.0.1
    +SC4S_DEST_BSD_OLDSIEM_PORT=514
    +SC4S_DEST_BSD_OLDSIEM_MODE=SELECT
    +# set to #yes for ietf frames
    +
    + +
    #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_bsd_oldsiem.conf
    +application sc4s-lp-mcafee_epo_d_bsd_oldsiem[sc4s-lp-dest-select-d_bsd_oldsiem] {
    +    filter {
    +        'mcafee' eq "${fields.sc4s_vendor}"
    +        and 'epo' eq "${fields.sc4s_product}"
    +    };    
    +};
    +
    + +

    Example 6 Mcafee EPO send RFC5424 events without frames to third party system

    +

    The destination name is taken from the env var each destination must have a unique name regardless of type. +This value should be short and meaningful

    +
    #env_file
    +SC4S_DEST_SYSLOG_MYSYS_HOST=172.17.0.1
    +SC4S_DEST_SYSLOG_MYSYS_PORT=514
    +SC4S_DEST_SYSLOG_MYSYS_MODE=SELECT
    +# set to #yes for ietf frames
    +SC4S_DEST_SYSLOG_MYSYS_IETF=no 
    +
    + +
    #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_syslog_msys.conf
    +application sc4s-lp-mcafee_epo_d_syslog_msys[sc4s-lp-dest-select-d_syslog_msys] {
    +    filter {
    +        'cisco' eq "${fields.sc4s_vendor}"
    +        and 'asa' eq "${fields.sc4s_product}"
    +    };    
    +};
    +
    + +

    Supported Simple Destination configurations

    +

    SC4S Supports the following destination configurations via configuration. Any custom destination +can be supported (defined by syslog-ng OSE)

    +
      +
    • Splunk HTTP Event Collector (HEC)
    • +
    • RFC5424 format without frames i.e. <166>1 2022-02-02T14:59:55.000+00:00 kinetic-charlie - - - - %FTD-6-430003: DeviceUUID:
    • +
    • RFC5424 format with frames also known as RFC6587 123 <166>1 2022-02-02T14:59:55.000+00:00 kinetic-charlie - - - - %FTD-6-430003: DeviceUUID:
    • +
    • RFC3164 (BSD format) <134>Feb 2 13:43:05.000 horse-ammonia CheckPoint[26203]:
    • +
    +

    HEC Destination Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_DEST_SPLUNK_HEC_<ID>_URLurlURL(s) of the Splunk endpoint, can be a single URL space separated list
    SC4S_DEST_SPLUNK_HEC_<ID>_TOKENstringSplunk HTTP Event Collector Token
    SC4S_DEST_SPLUNK_HEC_<ID>_MODEstring“GLOBAL” or “SELECT”
    SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFYyes(default) or noverify HTTP(s) certificate
    +

    Syslog Standard destination.

    +

    Note: in many cases destinations incorrectly assert “syslog” support. IETF standards RFC5424, RFC5425, RFC6587 define the use of “syslog” as a network protocol. Often the actual configuration required is Legacy BSD syslog which is NOT a standard and was documented “historically” in RFC3164 see BSD Destination section.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_DEST_SYSLOG_<ID>_HOSTfqdn or ipthe FQDN or IP of the target
    SC4S_DEST_SYSLOG_<ID>_PORTnumber601 (default when framed) 514 (default when not framed)
    SC4S_DEST_SYSLOG_<ID>_IETFyes,nodefault “yes” use IETF Standard frames
    SC4S_DEST_SYSLOG_<ID>_TRANSPORTtcp,udp,tlsdefault tcp
    SC4S_DEST_SYSLOG_<ID>_MODEstring“GLOBAL” or “SELECT”
    +

    BSD legacy destination (Non standard)

    +

    Note: in many cases destinations incorrectly assert “syslog” support. IETF standards RFC5424, RFC5425, RFC6587 define the use of “syslog” as a network protocol. Often the actual configuration required is Legacy BSD syslog which is NOT a standard and was documented “historically” in RFC3164 see BSD Destination section.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_DEST_BSD_<ID>_HOSTfqdn or ipthe FQDN or IP of the target
    SC4S_DEST_BSD_<ID>_PORTnumberdefault 514
    SC4S_DEST_BSD_<ID>_TRANSPORTtcp,udp,tlsdefault tcp
    SC4S_DEST_BSD_<ID>_MODEstring“GLOBAL” or “SELECT”
    +

    Configuration of Filtered Alternate Destinations (Advanced)

    +

    Though source-specific forms of the variables configured above will limit configured alternate destinations to a specific data source, there +are cases where even more granularity is desired within a specific data source (e.g. to send all Cisco ASA “debug” traffic to Cisco Prime for +analysis). This extra traffic may or may not be needed in Splunk. To accommodate this use case, Filtered Alternate Destinations allow a +filter to be supplied to redirect a portion of a given source’s traffic to a list of alternate destinations (and, optionally, to prevent +matching events from being sent to Splunk). Again, these are configured through environment variables similar +to the ones above:

    + + + + + + + + + + + + + + + + + + + + +
    VariableValuesDescription
    SC4S_DEST_<VENDOR_PRODUCT>_ALT_FILTERsyslog-ng filterFilter to determine which events are sent to alternate destination(s)
    SC4S_DEST_<VENDOR_PRODUCT>_FILTERED_ALTERNATESComma or space-separated list of syslog-ng destinationsSend filtered events to alternate syslog-ng destinations using the VENDOR_PRODUCT syntax, e.g. SC4S_DEST_CISCO_ASA_FILTERED_ALTERNATES
    +
      +
    • +

      NOTE: This is an advanced capability, and filters and destinations using proper syslog-ng syntax must be constructed prior to utilizing +this feature.

      +
    • +
    • +

      NOTE: Unlike the standard alternate destinations configured above, the regular “mainline” destinations (including the primary HEC +destination or configured archive destination (d_hec or d_archive)) are not included for events matching the configured alternate +destination filter. If an event matches the filter, the list of filtered alternate destinations completely replaces any mainline destinations +including defaults and global or source-based standard alternate destinations. Be sure to include them in the filtered destination list if +desired.

      +
    • +
    • +

      HINT: Since the filtered alternate destinations completely replace the mainline destinations (including HEC to Splunk), a filter that +matches all traffic can be used with a destination list that does not include the standard HEC destination to effectively turn off HEC +for a given data source.

      +
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/developing/gh_clone.png b/3.4.1/developing/gh_clone.png new file mode 100644 index 0000000000000000000000000000000000000000..a654aadf298c5d8d0664743474e19e3a5a462d3c GIT binary patch literal 17417 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�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�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 b!zqZkM^_}4XB+*WE4O7N6vZn + + + + + + + + + + + + + + Development - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    + +
    +
    + + + +
    +
    + + + + +

    Development setup (BETA)

    +

    Get Docker

    +

    Development requires Docker desktop available for windows + and mac or Docker CE available for Linux. Visit (Docker)[https://www.docker.com/get-started] +for download instructions

    +

    Setup VS Code IDE

    +

    VS Code provides a free IDE experience that is effective for daily development with SC4S. Visit (Microsoft)[https://code.visualstudio.com/docs/introvideos/basics] +to download and install for your platform (windows/mac/linux)

    +

    Fork and Clone the github repository

    +

    Visit our repository at (Github)[https://github.com/splunk/splunk-connect-for-syslog] and “fork” our repository. This will allow you to make changes and submit pull requests.

    +

    How to Fork

    +

    Click the clone icon and select the location

    +

    How to Clone

    +

    Setup the project and install requirements

    +

    The following steps are required only on the first time run.

    +
      +
    • Install VS Code Extensions S
        +
      • Python
      • +
      • Test Explorer
      • +
      • “Python Test Explorer”
      • +
      +
    • +
    • From the terminal menu select “Run Task”
    • +
    • Select “Setup step 1: python venv” then “go without scanning output”
    • +
    • From the terminal menu select “Run Task”
    • +
    • Select “Setup step 2: python requirements” then “go without scanning output”
    • +
    +

    VS Code setup

    +

    Click the test lab icon

    +
      +
    • Run all tests. Icons on each test will turn green or red to indicate pass or fail. Though VS Code does not show the status +of any given test until all tests complete in the test tree, you can select “Show test output” near the top of the test +directory tree to see the terminal output of each test as it runs in the “Output” pane.
    • +
    +

    VS Code Debug

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/developing/vsc_debug.png b/3.4.1/developing/vsc_debug.png new file mode 100644 index 0000000000000000000000000000000000000000..e3950d4dd597e427f413b772f944f227fc16285e GIT binary patch literal 73250 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 J2PG^2{}215Ug-b; literal 0 HcmV?d00001 diff --git a/3.4.1/developing/vsc_run.png b/3.4.1/developing/vsc_run.png new file mode 100644 index 0000000000000000000000000000000000000000..a00fef184fb20017c530ab39b4f9d55cfb55e4a0 GIT binary patch literal 23843 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 + + + + + + + + + + + + + + Experiments - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Current Experimental Features

    +

    > 3.0.0

    +

    eBPF

    +

    eBPF is a feature that leverages Linux kernel infrastructure to evenly distribute the load especially in cases when there is a huge stream of messages incoming from a single appliance. +Prerequisite for using eBPF feature is a host machine with os that supports eBPF. It should be used only in cases when other ways of sc4s tuning are failing. Please refer to the instruction for configuration details. +To learn more visit this blog post.

    +

    SC4S Lite

    +

    In the new 3.0.0 update, we’ve introduced SC4S Lite. It’s designed for those who prefer speed and custom filters over the pre-set ones that come with the standard SC4S. It’s basically the same as our default version, minus the pre-defined filters and complex app_parser topics.More information can be found under dedicated page.

    +

    > 2.13.0

    +
      +
    • In env_file set SC4S_USE_NAME_CACHE=yes to enable caching last valid host string and replacing nill, null, or ipv4 with last good value and stores this information in the hostip.sqlite file.
        +
      • Benefit: More correct host name values in Splunk when source vendor fails to provide valid syslog message
      • +
      • Risk: Potential disk I/O usage (space, iops) Potential reduction in throughput when a high proportion of events are incomplete.
      • +
      +
    • +
    • To clear hostip.sqlite file, set SC4S_CLEAR_NAME_CACHE=yes flag in env_file. This action will automatically delete the hostip.sqlite file when sc4s restarts.
    • +
    • In env_file set SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG=yes To enable additional post processing to merge multiline vmware events. Recommend also enabling SC4S_USE_NAME_CACHE=yes as many events can be malformed or missing host name
    • +
    • In env_file set SC4S_USE_VPS_CACHE=yes To enable automatic configuration of vendor_product by source where possible. This feature caches “vendor” and “product” fields from to use in determination of the best values for +generic linux events for example without this feature the “vendor product by host” app parser must be configured to identify esx hosts so that esx SSHD events can be routed using the meta key vmware_vsphere_nix_syslog with this feature enabled a common event such containing “program=vpxa” will cache this value.
        +
      • Benefit: Less config interaction
      • +
      • Risk: Potential disk I/O usage (space, iops) Potential reduction in throughput when a high proportion of events are incomplete.
      • +
      • Risk: misidentification due to load balancers and relay sources.
      • +
      +
    • +
    • SC4S_SOURCE_PROXYCONNECT=yes for TCP and TLS connection expect “PROXY CONNECT” to provide the original client IP in SNAT load balancing
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/faq/index.html b/3.4.1/faq/index.html new file mode 100644 index 0000000000..5761d499f4 --- /dev/null +++ b/3.4.1/faq/index.html @@ -0,0 +1,5453 @@ + + + + + + + + + + + + + + + + SC4S FAQ - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Splunk Connect for Syslog (SC4S) Frequently Asked Questions

    +

    Q: The Universal Forwarder/files based architecture has been the documented Splunk best practice for a long time. Why switch to a HTTP Event Collector (HEC) based architecture?

    +

    A: Using HEC to stream events directly to the Indexers provides superior load balancing which has shown to produce dramatically more even data distribution across the Indexers. This even distribution results in significantly enhanced search performance. This benefit is especially valuable in large Splunk deployments.

    +

    The HEC architecture designed into SC4S is also far easier to administer with newer versions of syslog-ng, which SC4S takes advantage of. There are far fewer opportunities for mis-configuration, resulting in higher overall performance and customer adoption.

    +

    Lastly, HEC (and in particular, the “/event” endpoint) offers the opportunity for a far richer data stream to Splunk, with lower resource utilization at ingest. This rich data stream can be taken advantage of in next-generation TAs.

    +

    Q: Is the Splunk HTTP Event Collector (HEC) as reliable as the Splunk Universal Forwarder?

    +

    A: HEC utilizes standard HTTP mechanisms to confirm that the endpoint is responsive before sending data. The HEC architecture allows for the use of an industry standard load balancer between SC4S and the Indexer, or the included load balancing capability built into SC4S itself.

    +

    Q: What if my team doesn’t know how to manage containers?

    +

    A: SC4S supports both container-based and “bring-your-own-environment” (BYOE) deployment methods. That said, using a runtime like Podman to deploy and manage SC4S containers is exceptionally easy even for those with no prior “container experience”. Our application of container technology behaves much like a packaging system. The interaction is mostly via “systemctl” commands a Linux admin would use for other common administration activities. The best approach is to try it out in a lab to see what the experience is like for yourself!

    +

    BYOE is intended for advanced deployments that can not use the Splunk container for some reason. One possible reason is a need to “fork” SC4S in order to implement heavy bespoke customization. Though many will initially gravitate toward BYOE because managing config files and syslog-ng directly is “what they know”, most enterprises will have the best experience using the container approach.

    +

    Q: Can my team use SC4S if we are Windows only shop?

    +

    A: You can now run Docker on Windows! Microsoft has introduced public preview technology for Linux containers on Windows. Alternatively, a minimal Centos/Ubuntu Linux VM running on Windows hyper-v is a reliable production-grade choice.

    +

    Q: My company has the traditional UF/files based syslog architecture deployed and running, should I rip/replace a working installation with SC4S?

    +

    A: Generally speaking, if a deployment is working and you are happy with it, it’s best to leave it as is until there is need for major deployment changes such as higher scale. That said, the search performance gains realized from better data distribution is a benefit not to be overlooked. If Splunk users have complained about search performance or you are curious about the possible performance gains, we recommend doing an analysis of the data distribution across the indexers.

    +

    It may make sense to upgrade to SC4S if there is a change in administration as well. Properly architecting a performant UF/files syslog-ng deployment is difficult, and an administrative personnel change offers the opportunity to “make a break” to SC4S, where a new set of administrators would otherwise be tasked with understanding the existing (likely complicated) architecture.

    +

    Q: What is the best way to migrate to SC4S from an existing syslog architecture?

    +

    A: When exploring migration to SC4S we strongly recommend experimentation in a lab prior to deployment to production. There are a couple of approaches to consider:

    +

    One option is to stand up and configure the new SC4S infrastructure for all your sources, then confirm all the sourcetypes are being indexed as expected, and finally stop the existing syslog servers. This big bang approach may result in the fewest duplicate events in Splunk vs other options. In some large or complex environments this may not be feasible however.

    +

    A second option is to start with the sources currently sending events on port 514 (the default). In this case you would stand up the new SC4S infrastructure in its default configuration, confirm all the sourcetypes are being indexed as expected, then retire the old syslog servers listening on port 514. Once the 514 sources are complete you can move on to migrating any other sources one by one. To migrate these other sources you would configure SC4S filters to explicitly identify them either via unique port, hostID or CIDR block. Again, once you confirm that each sourcetype is successfully being indexed then you may disable the old syslog configurations for that source.

    +

    Q: How can SC4S be deployed to provide high availability?

    +

    A: It is challenging to provide HA for syslog because the syslog protocol itself was not designed with HA as a goal. See Performant AND Reliable Syslog UDP is best for an excellent overview of this topic.

    +

    The gist is that the protocol itself limits the extent to which you can make any syslog collection architecture HA; at best it can be made “mostly available”. Think of syslog as MP3 – it is a “lossy” protocol and there is nothing you can do to restore it to CD quality (lossless). Some have attempted to implement HA via front-side load balancers; please don’t! This is the most common architectural mistake folks make when architecting large-scale syslog data collection. So – how to make it “mostly available”? Keep it simple, and use OS clustering (shared IP) or even just VMs with vMotion. This simple architecture will encounter far less data loss over time than more complicated schemes. Another possible option being evaluated is containerization HA schemes for SC4S (centered around microk8s) that will take some of the admin burden of clustering away – but it is still OS clustering under the hood.

    +

    Q: I’m worried about data loss if SC4S goes down. Could I feed syslog to redundant SC4S servers to provide HA, without creating duplicate events in Splunk?

    +

    A: In many/most system design decisions there is some level of compromise. Any network protocol that doesn’t have an application level ack will lose data, as speed was selected over reliability in the design, this is the case with syslog. Use of a clustered IP with an active/passive node will however offer a level of resilience while keeping complexity to a minimum. +It could be possible to implement a far more complex solution utilizing an additional intermediary technology like Kafka, however the costs may outweigh the real world benefits.

    +

    Q: Can the SC4S container be deployed using OpenShift or K8s?

    +

    A: There are a number of reasons that OpenShift/K8s are not a good fit for syslog, SNMP or SIP. They can’t use UDP and TCP on the same port which breaks multiple Bluecoat and Cisco feeds among others. +Layered networking shrinks the maximum UDP message which causes data loss due to truncation and drops +Long lived TCP connections cause well known problems +OpenShift doesn’t actually use Podman, it uses a library to wrap OCI that Podman also uses. this wrapper around the wrapper has some shortcomings that prevent the service definitions SC4S requires. +Basically, K8s was built for a very different set of problems than syslog

    +

    Q: If the XL reference HW can handle just under 1 TB/day how can SC4S be scaled to handle large deployments of many TB/day?

    +

    A: SC4S is a distributed architecture. SC4S instances should be deployed in the same VLAN as the source devices. This means that each SC4S instance will only see a subset of the total syslog traffic in a large deployment. Even in a 100+ TB deployment the individual SC4S instances will see loads in GB/day not TB/day.

    +

    Q: How are security vulnerabilities handled with SC4S?

    +

    A: SC4S is comprised of several components including RHL, Syslog-ng and temporized configurations. If a vulnerability is found in the SC4S configurations, they will be given a critical priority in the Development queue. If vulnerabilities are identified in the third party components (RHL, Syslog-ng, etc.) the fixed versions will be pulled in upon the next SC4S release. Fixed security issues are identified by “[security]” in SC4S release notes.

    +

    Q: SC4S is being blocked by fapolicyd, how do I fix that? +Create a rule that allows running sc4s in fapolicyd configuration: +* Create the file /etc/fapolicyd/rules.d/15-sc4s.rules . +* Put this into the file: allow perm=open exe=/ : dir=/usr/lib64/ all trust=1 . +* Run fagenrules --load to load the new rule. +* Run systemctl restart fapolicyd to restart the process. +* Start sc4s systemctl start sc4s and verify there are no errors systemctl status sc4s.

    +

    Q: I am facing a unique issue that my postfilter configuration is not working although i don’t have any postfilter for the mentioned source?

    +

    A: There is a possibility that there is OOB postfilter for the source which will be applied , the same can be validated by checking the value of sc4s_tags in splunk UI, to fix this Please use a new topic called +[sc4s-finalfilter] please don’t use it in any other case as it can add the cost of the processing of data

    +

    Q: Where the config for the vendors should be placed? There are folders of app-parsers and its directories. Which one to use?
    +Does this also mean that csv files for metadata are no longer required?

    +

    A: It should be placed inside /opt/sc4s/local/config/*/.conf. +Most of the folders are placeholder and it will work in any of these folders if it has .conf extension.
    +It is required but it should be placed in local/context/*.csv. Using splunk_metadata.csv is good for metadata override but it is recommended to use .conf file for everything else in place of other csv files.

    +

    Q: Can we have a file using which we can create all default indexes in one go?

    +

    A: Refer this file which contains all indexes being created in one go.
    +Also, above file has lastChanceIndex configured, please use it only if it fits your requirement. If not, then please discard the use of lastChanceIndex.
    +For more information on this file, please refer Splunk docs.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/ansible-docker-podman/index.html b/3.4.1/gettingstarted/ansible-docker-podman/index.html new file mode 100644 index 0000000000..1862836819 --- /dev/null +++ b/3.4.1/gettingstarted/ansible-docker-podman/index.html @@ -0,0 +1,5596 @@ + + + + + + + + + + + + + + + + Podman/Docker - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Notice

    +

    SC4S installation can now be automated with Ansible. All you need to do now is provide a host on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.).

    +

    Initial Configuration

    +

    All you need to do before running sc4s with Ansible is providing env_file. In the env file provide at least proper Splunk endpoint and HEC token. +Create a file in ansible/resources catalog or edit example file.

    +
    SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=http://xxx.xxx.xxx.xxx:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxxxxxxxxxxxx
    +#Uncomment the following line if using untrusted SSL certificates
    +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +
    + +

    Next provide a host on which you want to run Docker Swarm cluster and host application in inventory file:

    +
    all:
    +  hosts:
    +  children:
    +    node:
    +      hosts:
    +        node_1:
    +          ansible_host:
    +
    + +

    Deploy SC4S

    +

    Now you can run ansible playbook to deploy the application if you have ansible installed on your host +or use docker ansible image provided in the package:

    +
    # From repository root
    +docker-compose -f ansible/docker-compose.yml build
    +docker-compose -f ansible/docker-compose.yml up -d
    +docker exec -it ansible_sc4s /bin/bash
    +
    + +

    Once you are in containers remote shell you can run Docker Swam ansible playbook. +If you are authenticating via username/password:

    +
    ansible-playbook -i path/to/inventory.yaml -u <username> --ask-pass path/to/playbooks/docker.yml
    +or
    +ansible-playbook -i path/to/inventory.yaml -u <username> --ask-pass path/to/playbooks/podman.yml
    +
    + +

    or using key pair:

    +
    ansible-playbook -i path/to/inventory.yaml -u <username> --key-file <key_file> path/to/playbooks/docker.yml
    +or
    +ansible-playbook -i path/to/inventory.yaml -u <username> --key-file <key_file> path/to/playbooks/podman.yml
    +
    + +

    Verify Proper Operation

    +

    SC4S has a number of “preflight” checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng +configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, +execute the following search in Splunk:

    +
    index=* sourcetype=sc4s:events "starting up"
    +
    + +

    This should yield an event similar to the following:

    +
    syslog-ng starting up; version='3.28.1'
    +
    + +

    You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same.

    +

    When the startup process proceeds normally (without syntax errors). If you do not see this, +follow the steps below before proceeding to deeper-level troubleshooting:

    +
      +
    • Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443).
    • +
    • Check to see that the proper indexes are created in Splunk, and that the token has access to them.
    • +
    • Ensure the proper operation of the load balancer if used.
    • +
    • Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service).
    • +
    +
    sudo docker ps
    +
    + +

    You will get an ID and , next:

    +
    docker logs <ID | image name> 
    +
    + +

    or:

    +
    sudo systemctl status sc4s
    +
    + +

    You should see events similar to those below in the output:

    +
    SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:fallback...
    +SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:events...
    +syslog-ng checking config
    +sc4s version=v1.36.0
    +starting goss
    +starting syslog-ng
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/ansible-docker-swarm/index.html b/3.4.1/gettingstarted/ansible-docker-swarm/index.html new file mode 100644 index 0000000000..2917427247 --- /dev/null +++ b/3.4.1/gettingstarted/ansible-docker-swarm/index.html @@ -0,0 +1,5652 @@ + + + + + + + + + + + + + + + + Docker Swarm - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Notice

    +

    SC4S installation can now be automated with Ansible. All you need to do now is provide list of hosts on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.). +This manual assumes that you have proper knowledge of Docker Swarm as setting up proper Swarm architecture/configuration is users duty.

    +

    Initial Configuration

    +

    All you need to do before running sc4s with Ansible is providing env_file. In the env file provide at least proper Splunk endpoint and HEC token. +Create a file in ansible/resources catalog or edit example file.

    +
    SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=http://xxx.xxx.xxx.xxx:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxxxxxxxxxxxx
    +#Uncomment the following line if using untrusted SSL certificates
    +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +
    + +

    Next provide a list of hosts on which you want to run Docker Swarm cluster and host application in inventory file:

    +
    all:
    +  hosts:
    +  children:
    +    manager:
    +      hosts:
    +        manager_node_1:
    +          ansible_host:
    +
    +    worker:
    +      hosts:
    +        worker_node_1:
    +          ansible_host:
    +        worker_node_2:
    +          ansible_host:
    +
    + +

    You can run your cluster with one or more manager nodes for more info about setting up a swarm refer to official docker documentation. +NOTICE: One of biggest advantages of using Docker Swarm for hosting SC4S is Swarm internal load balancer (routing mesh). To get to know the details refer to docker documentation.

    +

    Additionally, you can provide extra service configurations (ex. number of replicas) in /ansible/app/docker-compose.yml file:

    +
    version: "3.7"
    +services:
    +  sc4s:
    +    deploy:
    +      replicas: 2
    +      ...
    +
    + +

    Deploy SC4S

    +

    Now you can run ansible playbook to deploy the application if you have ansible installed on your host +or use docker ansible image provided in the package:

    +
    # From repository root
    +docker-compose -f ansible/docker-compose.yml build
    +docker-compose -f ansible/docker-compose.yml up -d
    +docker exec -it ansible_sc4s /bin/bash
    +
    + +

    Once you are in containers remote shell you can run Docker Swam ansible playbook. +If you are authenticating via username/password:

    +
    ansible-playbook -i path/to/inventory_swarm.yaml -u <username> --ask-pass path/to/playbooks/docker_swarm.yml
    +
    + +

    or using key pair:

    +
    ansible-playbook -i path/to/inventory_swarm.yaml -u <username> --key-file <key_file> path/to/playbooks/docker_swarm.yml
    +
    + +

    If the process was finished properly you should be able to check state of Swarm cluster and deployed stack from manager’s node remote shell: +Verify if stack was created: +sudo docker stack ls

    + + + + + + + + + + + + + + + +
    NAMESERVICESORCHESTRATOR
    sc4s1Swarm
    +

    You can scale your number of services: +sudo docker service update --replicas 2 sc4s_sc4s

    +

    See services running in a given stack: +sudo docker stack services sc4s

    + + + + + + + + + + + + + + + + + + + + + +
    IDNAMEMODEREPLICASIMAGEPORTS
    1xv9vvbizf3msc4s_sc4sreplicated2/2ghcr.io/splunk/splunk-connect-for-syslog/container3:latest:514->514/tcp, :601->601/tcp, :6514->6514/tcp, :514->514/udp
    +

    Verify Proper Operation

    +

    SC4S has a number of “preflight” checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng +configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, +execute the following search in Splunk:

    +
    index=* sourcetype=sc4s:events "starting up"
    +
    + +

    This should yield an event similar to the following:

    +
    syslog-ng starting up; version='3.28.1'
    +
    + +

    You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same.

    +

    When the startup process proceeds normally (without syntax errors). If you do not see this, +follow the steps below before proceeding to deeper-level troubleshooting:

    +
      +
    • Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443).
    • +
    • Check to see that the proper indexes are created in Splunk, and that the token has access to them.
    • +
    • Ensure the proper operation of the load balancer if used.
    • +
    • Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service).
    • +
    +
    sudo docker|podman ps
    +
    + +

    You will get an ID and , next:

    +
    docker|podman logs <ID | image name> 
    +
    + +

    You should see events similar to those below in the output:

    +
    SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:fallback...
    +SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:events...
    +syslog-ng checking config
    +sc4s version=v1.36.0
    +starting goss
    +starting syslog-ng
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/ansible-mk8s/index.html b/3.4.1/gettingstarted/ansible-mk8s/index.html new file mode 100644 index 0000000000..ef4e25333c --- /dev/null +++ b/3.4.1/gettingstarted/ansible-mk8s/index.html @@ -0,0 +1,5601 @@ + + + + + + + + + + + + + + + + mk8s - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Notice

    +

    SC4S installation can now be automated with Ansible. All you need to do now is provide list of hosts on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.). +This manual assumes that you have proper knowledge of microk8s as setting up proper kubernetes cluster architecture/configuration is users duty.

    +

    Initial Configuration

    +

    All you need to do before running sc4s with Ansible is providing proper values in values.yaml file (Splunk endpoint and HEC token). +Edit example file.

    +

    Next provide a list of hosts on which you want to run Docker Swarm cluster and host application in inventory file:

    +
    all:
    +  hosts:
    +  children:
    +    node:
    +      hosts:
    +        node_1:
    +          ansible_host:
    +
    + +

    or if you want to spin up HA cluster:

    +
    all:
    +  hosts:
    +  children:
    +    manager:
    +      hosts:
    +        manager:
    +          ansible_host:
    +
    +    workers:
    +      hosts:
    +        worker1:
    +          ansible_host:
    +        worker2:
    +          ansible_host:
    +
    + +

    Deploy SC4S

    +

    Now you can run ansible playbook to deploy the application if you have ansible installed on your host +or use docker ansible image provided in the package:

    +
    # From repository root
    +docker-compose -f ansible/docker-compose.yml build
    +docker-compose -f ansible/docker-compose.yml up -d
    +docker exec -it ansible_sc4s /bin/bash
    +
    + +

    Once you are in containers remote shell you can run Docker Swam ansible playbook. +If you are authenticating via username/password:

    +
    ansible-playbook -i path/to/inventory_mk8s.yaml -u <username> --ask-pass path/to/playbooks/microk8s.yml
    +
    + +

    or if you are running HA cluster:

    +
    ansible-playbook -i path/to/inventory_mk8s_ha.yaml -u <username> --ask-pass path/to/playbooks/microk8s_ha.yml
    +
    + +

    or using key pair:

    +
    ansible-playbook -i path/to/inventory_mk8s.yaml -u <username> --key-file <key_file> path/to/playbooks/microk8s.yml
    +
    + +

    Verify Proper Operation

    +

    SC4S has a number of “preflight” checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng +configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, +execute the following search in Splunk:

    +
    index=* sourcetype=sc4s:events "starting up"
    +
    + +

    This should yield an event similar to the following:

    +
    syslog-ng starting up; version='3.28.1'
    +
    + +

    You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same.

    +

    When the startup process proceeds normally (without syntax errors). If you do not see this, +follow the steps below before proceeding to deeper-level troubleshooting:

    +
      +
    • Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443).
    • +
    • Check to see that the proper indexes are created in Splunk, and that the token has access to them.
    • +
    • Ensure the proper operation of the load balancer if used.
    • +
    • Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service).
    • +
    +
    sudo microk8s kubectl get pods
    +sudo microk8s kubectl logs <podname>
    +
    + +

    You should see events similar to those below in the output:

    +
    SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:fallback...
    +SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:events...
    +syslog-ng checking config
    +sc4s version=v1.36.0
    +starting goss
    +starting syslog-ng
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/byoe-rhel8/index.html b/3.4.1/gettingstarted/byoe-rhel8/index.html new file mode 100644 index 0000000000..94fa1f9f11 --- /dev/null +++ b/3.4.1/gettingstarted/byoe-rhel8/index.html @@ -0,0 +1,5610 @@ + + + + + + + + + + + + + + + + Bring your own Envionment - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    SC4S “Bring Your Own Environment”

    +
      +
    • FOREWORD: The BYOE SC4S deliverable should be considered as a self/community supported option for SC4S deployment, and should be +considered only by those with specific needs based on advanced understanding of syslog-ng architectures and linux/syslog-ng +system administration and the ability to develop and automate testing in non-production environments. The container deliverable is the most often correct deliverable of SC4S for almost all enterprises. +If you are simply trying to “get syslog working”, the turnkey, container approach described in the other runtime documents will +be the fastest route to success.
    • +
    +

    The “Bring Your Own Environment” instructions that follow allow expert administrators to utilize the SC4S syslog-ng +config files directly on the host OS running on a hardware server or virtual machine. Administrators must provide an +appropriate host OS (RHEL 8 used in this document) as well as an up-to-date syslog-ng installation either built from source (not documented here) or +installed from community-built RPMs. Modification of the base configuration will be required for most customer +environments due to enterprise infrastructure variations. Once installed preparing an upgrade requires evaluation of the current environment compared to this reference then developing and testing a installation specific install plan. This activity is the responsibility of the administrator.

    +
      +
    • +

      NOTE: Installing or modifying system configurations can have unexpected consequences, and advanced linux system +administration and syslog-ng configuration experience is assumed when using the BYOE version of SC4S.

      +
    • +
    • +

      NOTE: Do not depend on the distribution-supplied version of syslog-ng, as it will likely be far too old. +Read this explanation +for the reason why syslog-ng builds are so dated in almost all RHEL/Debian distributions.

      +
    • +
    +

    BYOE Installation Instructions

    +

    These installation instructions assume a recent RHEL or CentOS-based release. Minor adjustments may have to be made for +Debian/Ubuntu. In addition, almost all pre-compiled binaries for syslog-ng assume installation in /etc/syslog-ng; these instructions +will reflect that.

    +

    The following installation instructions are summarized from a +blog +maintained by a developer at One Identity (formerly Balabit), who is the owner of the syslog-ng Open Source project. +It is always advisable to review the blog for the latest changes to the repo(s), as changes here are quite dynamic.

    +
      +
    • +

      Install CentOS or RHEL 8.0

      +
    • +
    • +

      Enable EPEL (Centos 8)

      +
    • +
    +
    dnf install 'dnf-command(copr)' -y
    +dnf install epel-release -y
    +dnf copr enable czanik/syslog-ng336  -y
    +dnf install syslog-ng syslog-ng-python syslog-ng-http python3-pip gcc python3-devel -y
    +
    + +
      +
    • Disable the distro-supplied syslog-ng unit file, as the syslog-ng process configured here will run as the sc4s +service. rsyslog will continue to be the system logger, but should be left enabled only if it is configured to not +listen on the same ports as sc4s. sc4s BYOE can be configured to provide local logging as well if desired.
    • +
    +
    sudo systemctl stop syslog-ng
    +sudo systemctl disable syslog-ng
    +
    + +
      +
    • +

      Download the latest bare_metal.tar from releases on github and untar the package in /etc/syslog-ng using the command example below.

      +
    • +
    • +

      NOTE: The wget process below will unpack a tarball with the sc4s version of the syslog-ng config files in the standard +/etc/syslog-ng location, and will overwrite existing content. Ensure that any previous configurations of syslog-ng are saved +if needed prior to executing the download step.

      +
    • +
    • +

      NOTE: At the time of writing, the latest major release is v1.33. The latest release is typically listed first on the page above, unless +there is an -alpha,-beta, or -rc release that is newer (which will be clearly indicated). For production use, select the latest that does not have an -rc, -alpha, or -beta suffix.

      +
    • +
    +
    sudo wget -c https://github.com/splunk/splunk-connect-for-syslog/releases/download/<latest release>/baremetal.tar -O - | sudo tar -x -C /etc/syslog-ng
    +
    + +
      +
    • Install python requirements
    • +
    +
    sudo pip3 install -r /etc/syslog-ng/requirements.txt
    +
    + +
      +
    • (Optional, for monitoring): Install goss and confirm that the version is v0.3.16 or newer. goss installs in +/usr/local/bin by default, so ensure that 1) entrypoint.sh is modified to include /usr/local/bin in the full path, +or 2) move the goss binary to /bin or /usr/bin.
    • +
    +
    curl -L https://github.com/aelsabbahy/goss/releases/latest/download/goss-linux-amd64 -o /usr/local/bin/goss
    +chmod +rx /usr/local/bin/goss
    +curl -L https://github.com/aelsabbahy/goss/releases/latest/download/dgoss -o /usr/local/bin/dgoss
    +# Alternatively, using the latest
    +# curl -L https://raw.githubusercontent.com/aelsabbahy/goss/latest/extras/dgoss/dgoss -o /usr/local/bin/dgoss
    +chmod +rx /usr/local/bin/dgoss
    +
    + +
      +
    • +

      There are two main options for running SC4S via systemd, the choice of which largely depends on administrator preference and +orchestration methodology: 1) the entrypoint.sh script (identical to that used in the container) can be run directly via systemd, +or 2) the script can be altered to preconfigure SC4S (after which only the syslog-ng are run via systemd). These +are by no means the only ways to run BYOE – as the name implies, the method you choose will be based on your custom needs.

      +
    • +
    • +

      To run the entrypoint.sh script directly in systemd, create the sc4s unit file /lib/systemd/system/sc4s.service and add the following +content:

      +
    • +
    +
    [Unit]
    +Description=SC4S Syslog Daemon
    +Documentation=https://splunk-connect-for-syslog.readthedocs.io/en/latest/
    +Wants=network.target network-online.target
    +After=network.target network-online.target
    +
    +[Service]
    +Type=simple
    +ExecStart=/etc/syslog-ng/entrypoint.sh
    +ExecReload=/bin/kill -HUP $MAINPID
    +EnvironmentFile=/etc/syslog-ng/env_file
    +StandardOutput=journal
    +StandardError=journal
    +Restart=on-abnormal
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    + +
      +
    • To run entrypoint.sh as a “preconfigure” script, modify the script by commenting out or removing the stanzas following the +OPTIONAL for BYOE comments in the script. This will prevent syslog-ng from being launched by the script. +Then create the sc4s unit file /lib/systemd/system/syslog-ng.service and add the following content:
    • +
    +
    [Unit]
    +Description=System Logger Daemon
    +Documentation=man:syslog-ng(8)
    +After=network.target
    +
    +[Service]
    +Type=notify
    +ExecStart=/usr/sbin/syslog-ng -F $SYSLOGNG_OPTS -p /var/run/syslogd.pid
    +ExecReload=/bin/kill -HUP $MAINPID
    +EnvironmentFile=-/etc/default/syslog-ng
    +EnvironmentFile=-/etc/sysconfig/syslog-ng
    +StandardOutput=journal
    +StandardError=journal
    +Restart=on-failure
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    + +
      +
    • Create the file /etc/syslog-ng/env_file and add the following environment variables (adjusting the URL/TOKEN appropriately):
    • +
    +
    # The following "path" variables can differ from the container defaults specified in the entrypoint.sh script. 
    +# These are *optional* for most BYOE installations, which do not differ from the install location used.
    +# in the container version of SC4S.  Failure to properly set these will cause startup failure.
    +#SC4S_ETC=/etc/syslog-ng
    +#SC4S_VAR=/etc/syslog-ng/var
    +#SC4S_BIN=/bin
    +#SC4S_SBIN=/usr/sbin
    +#SC4S_TLS=/etc/syslog-ng/tls
    +
    +# General Options
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://splunk.smg.aws:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=a778f63a-5dff-4e3c-a72c-a03183659e94
    +
    +# Uncomment the following line if using untrusted (self-signed) SSL certificates
    +# SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +
    + +
      +
    • Reload systemctl and restart syslog-ng (example here is shown for systemd option (1) above)
    • +
    +
    sudo systemctl daemon-reload
    +sudo systemctl enable sc4s
    +sudo systemctl start sc4s
    +
    + +

    Configure SC4S Listening Ports

    +

    Most enterprises use UDP/TCP port 514 as the default as their main listening port for syslog “soup” traffic, and TCP port 6514 for TLS. +The standard SC4S configuration reflect these defaults. These defaults can be changed by adding the following +additional environment variables with appropriate values to the env_file above:

    +
    SC4S_LISTEN_DEFAULT_TCP_PORT=514
    +SC4S_LISTEN_DEFAULT_UDP_PORT=514
    +SC4S_LISTEN_DEFAULT_RFC6587_PORT=601
    +SC4S_LISTEN_DEFAULT_RFC5426_PORT=601
    +SC4S_LISTEN_DEFAULT_RFC5425_PORT=5425
    +SC4S_LISTEN_DEFAULT_TLS_PORT=6514
    +
    + +

    Dedicated (Unique) Listening Ports

    +

    For certain source technologies, categorization by message content is impossible due to the lack of a unique “fingerprint” in +the data. In other cases, a unique listening port is required for certain devices due to network requirements in the enterprise. +For collection of such sources we provide a means of dedicating a unique listening port to a specific source.

    +

    Refer to the “Sources” documentation to identify the specific environment variables used to enable unique listening ports for the technology +in use.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/create-parser/index.html b/3.4.1/gettingstarted/create-parser/index.html new file mode 100644 index 0000000000..3457d6fc45 --- /dev/null +++ b/3.4.1/gettingstarted/create-parser/index.html @@ -0,0 +1,5738 @@ + + + + + + + + + + + + + + + + Create a parser - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Create a parser

    +

    The following is a step-by-step guide for adding new parsers.

    +

    Why create a parser?

    +

    Splunk Connect for Syslog can offload Splunk Indexers by performing operations that normally would have been done during index time, including +linebreaking, source/sourcetype setting, and timestamping. Creating a parser also reduces the need of using corresponding add-ons on indexers.

    +

    Before you start

    +
      +
    • Make sure you have read contribution standards.
    • +
    • For more background information on how filters and parser work, and what suits you best, read about sources onboarding.
    • +
    • Prepare your environment.
    • +
    • Create a new branch in the repository where you will apply your changes.
    • +
    +

    Start with a raw log message

    +

    If you already have a raw log message, you can skip this step. Otherwise, you need to extract one to have something to work with. +You can do this in multiple ways; here is a brief description of two of them:

    +

    tcpdump

    +

    You can use the tcpdump command to get incoming raw messages on a given port of your server.

    +
    tcpdump -n -s 0 -S -i any -v port 8088
    +
    +tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
    +09:54:26.051644 IP (tos 0x0, ttl 64, id 29465, offset 0, flags [DF], proto UDP (17), length 466)
    +10.202.22.239.41151 > 10.202.33.242.syslog: SYSLOG, length: 438
    +Facility local0 (16), Severity info (6)
    +Msg: 2022-04-28T16:16:15.466731-04:00 NTNX-21SM6M510425-B-CVM audispd[32075]: node=ntnx-21sm6m510425-b-cvm type=SYSCALL msg=audit(1651176975.464:2828209): arch=c000003e syscall=2 success=yes exit=6 a0=7f2955ac932e a1=2 a2=3e8 a3=3 items=1 ppid=29680 pid=4684 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=964698 comm=“sshd” exe=“/usr/sbin/sshd” subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 key=“logins”\0x0a
    +
    + +

    Wireshark

    +

    Or you can read the logs using Wireshark from the .pcap file. +From Wireshark go to Statistics->Conversations, then click on ‘Follow Stream’.

    +

    ws_conversation +Once you get your stream of messages, copy one of them. +NOTE: In UDP there usually will not be any message separators.

    +

    Create a unit test

    +

    It is recommended to use the existing test case that is the most similar to your use case. +The naming convention is test_vendor_product.py +Afterwards, you need to make sure that your log is being parsed correctly by creating a test case. +Assuming you have a raw message like this:

    +
    <14>1 2022-03-30T11:17:11.900862-04:00 host - - - - Carbon Black App Control event:  text="File 'c:\program files\azure advanced threat protection sensor\2.175.15073.51407\winpcap\x86\packet.dll' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode." type="Policy Enforcement" subtype="Execution block (unapproved file)" hostname="CORP\USER" username="NT AUTHORITY\SYSTEM" date="3/30/2022 3:16:40 PM" ip_address="10.0.0.3" process="c:\program files\azure advanced threat protection sensor\2.175.15073.51407\microsoft.tri.sensor.updater.exe" file_path="c:\program files\azure advanced threat protection sensor\2.175.15073.51407\winpcap\x86\packet.dll" file_name="packet.dll" file_hash="c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363" policy="High Enforcement - Domain Controllers" rule_name="Report read-only memory map operations on unapproved executables by .NET applications" process_key="00000433-0000-23d8-01d8-44491b26f203" server_version="8.5.4.3" file_trust="-2" file_threat="-2" process_trust="-2" process_threat="-2" prevalence="50"
    +
    + +

    You need to: +* make sure that the message is a valid python string, where escape characters are placed correctly. +* anonymize the data. +* rename functions. +* update index, and sourcetype fields. +* extract replace values with field names in test string.

    +

    Here you can see proper test case for Vmware Carbonblack Protect device:

    +
    # Copyright 2019 Splunk, Inc.
    +#
    +# Use of this source code is governed by a BSD-2-clause-style
    +# license that can be found in the LICENSE-BSD2 file or at
    +# https://opensource.org/licenses/BSD-2-Clause
    +
    +import shortuuid
    +from jinja2 import Environment, select_autoescape
    +
    +from .sendmessage import sendsingle
    +from .splunkutils import  splunk_single
    +from .timeutils import time_operations
    +import datetime
    +
    +env = Environment(autoescape=select_autoescape(default_for_string=False))
    +# Below is a raw message
    +# <14>1 2022-03-30T11:17:11.900862-04:00 host - - - - Carbon Black App Control event:  text="File 'c:\program files\azure advanced threat protection sensor\0.0.0.0\winpcap\x86\packet.dll' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode." type="Policy Enforcement" subtype="Execution block (unapproved file)" hostname="CORP\USER" username="NT AUTHORITY\SYSTEM" date="3/30/2022 3:16:40 PM" ip_address="0.0.0.0" process="c:\program files\azure advanced threat protection sensor\0.0.0.0\microsoft.tri.sensor.updater.exe" file_path="c:\program files\azure advanced threat protection sensor\0.0.0.0\winpcap\x86\packet.dll" file_name="packet.dll" file_hash="c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363" policy="High Enforcement - Domain Controllers" rule_name="Report read-only memory map operations on unapproved executables by .NET applications" process_key="00000433-0000-23d8-01d8-44491b26f203" server_version="0.0.0.0" file_trust="-2" file_threat="-2" process_trust="-2" process_threat="-2" prevalence="50"
    +
    +# Don't forget to rename the function
    +def test_vmware_carbonblack_protect(
    +    record_property,  setup_splunk, setup_sc4s
    +):
    +    host = f"{shortuuid.ShortUUID().random(length=5).lower()}-{shortuuid.ShortUUID().random(length=5).lower()}"
    +
    +    dt = datetime.datetime.now()
    +    iso, bsd, _, _, _, _, epoch = time_operations(dt)
    +
    +    # Tune time functions for Checkpoint
    +    epoch = epoch[:-3]
    +
    +    mt = env.from_string(
    +        # Extract mark, iso timestamp and host fields
    +        # Make sure all needed characters are escaped
    +        # If string contains single quotes wrap it in double qutes
    +        '{{ mark }} {{ iso }} {{ host }} - - - - Carbon Black App Control event:  text="File \'c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll\' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode." type="Policy Enforcement" subtype="Execution block (unapproved file)" hostname="CORP\\USER" username="NT AUTHORITY\\SYSTEM" date="3/30/2022 3:16:40 PM" ip_address="0.0.0.0" process="c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\microsoft.tri.sensor.updater.exe" file_path="c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll" file_name="packet.dll" file_hash="c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363" policy="High Enforcement - Domain Controllers" rule_name="Report read-only memory map operations on unapproved executables by .NET applications" process_key="00000433-0000-23d8-01d8-44491b26f203" server_version="0.0.0.0" file_trust="-2" file_threat="-2" process_trust="-2" process_threat="-2" prevalence="50"'
    +    )
    +    message = mt.render(mark="<134>1", host=host, bsd=bsd, iso=iso, epoch=epoch)
    +
    +    sendsingle(message, setup_sc4s[0], setup_sc4s[1][514])
    +
    +    st = env.from_string(
    +        # Make sure you changed index and sourcetype properly
    +        'search _time={{ epoch }} index=epintel host="{{ host }}" sourcetype="vmware:cb:protect"'
    +    )
    +    search = st.render(epoch=epoch, bsd=bsd, host=host)
    +
    +    result_count, _ = splunk_single(setup_splunk, search)
    +
    +    record_property("host", host)
    +    record_property("resultCount", result_count)
    +    record_property("message", message)
    +
    +    assert result_count == 1
    +
    + +

    NOTE: It is a known issue that the test case will timeout when it starts. When it fails, just re-run it.

    +

    Now run the test:

    +

    poetry run pytest test/test_vendor_product.py

    +

    This test will spin up a Splunk instance on your localhost and forward the parsed message there. +Now the parsed log should appear in Splunk: +parsed_log +As you can see, at this moment, the message is being parsed as a generic *nix:syslog sourcetype. +To assign it to the proper index and sourcetype you will need an actual parser. So far we have ensured that the fields in the messages are properly recognized.

    +

    Create a parser

    +

    Your parser needs to be declared in package/etc/conf.d/conflib. The naming convention is app-type-vendor_product.conf. +If there is a similar parser existing already you can use it as a reference. In the parser, make sure you assign the proper sourcetype, index, vendor, product, and template. +The template tells how your message should be parsed before sending it to Splunk. +The most basic configuration will only forward raw log with correct metadata. +Here is an example:

    +
    block parser app-syslog-vmware_cb-protect() {
    +    channel {
    +        rewrite {
    +            r_set_splunk_dest_default(
    +                index("epintel")
    +                sourcetype('vmware:cb:protect')
    +                vendor("vmware")
    +                product("cb-protect")
    +                template("t_msg_only")
    +            );
    +        };
    +    };
    +};
    +application app-syslog-vmware_cb-protect[sc4s-syslog] {
    +    filter {
    +        message('Carbon Black App Control event:  '  type(string)  flags(prefix));
    +    };  
    +    parser { app-syslog-vmware_cb-protect(); };
    +};
    +
    + +

    Now all messages that start with the string Carbon Black App Control event: will be routed to the proper index and assigned the given sourcetype: + +For more info about using message filtering go to sources documentation.

    +

    If you wish to apply more transformations you will need to add the parser:

    +
    block parser app-syslog-vmware_cb-protect() {
    +    channel {
    +        rewrite {
    +            r_set_splunk_dest_default(
    +                index("epintel")
    +                sourcetype('vmware:cb:protect')
    +                vendor("vmware")
    +                product("cb-protect")
    +                template("t_kv_values")
    +            );
    +        };
    +
    +        parser {
    +            csv-parser(delimiters(chars('') strings(': '))
    +                       columns('header', 'message')
    +                       prefix('.tmp.')
    +                       flags(greedy, drop-invalid));
    +            kv-parser(
    +                prefix(".values.")
    +                pair-separator(" ")
    +                template('${.tmp.message}')
    +            );
    +        };
    +    };
    +};
    +application app-syslog-vmware_cb-protect[sc4s-syslog] {
    +    filter {
    +        message('Carbon Black App Control event:  '  type(string)  flags(prefix));
    +    };  
    +    parser { app-syslog-vmware_cb-protect(); };
    +};
    +
    + +

    In this case, we will extract all fields that are nested in the raw log message first by using csv-parser to split Carbon Black App Control event +and the rest of message as a two separate fields named header and message. On top of that, we will use kv-parser to extract all key-value pairs +in the message field.

    +

    The best way to test your parser is to run a previously created test case. If you need more debugging, use docker ps to see running containers, +and docker logs to see what’s happening to the parsed message.

    +

    Once you are content with the results, you can commit your changes and open pull request.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/docker-compose-MacOS/index.html b/3.4.1/gettingstarted/docker-compose-MacOS/index.html new file mode 100644 index 0000000000..2c2d607c44 --- /dev/null +++ b/3.4.1/gettingstarted/docker-compose-MacOS/index.html @@ -0,0 +1,5605 @@ + + + + + + + + + + + + + + + + Docker Desktop + Compose (MacOS) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Install Docker Desktop for MacOS

    +

    Refer to Installation

    +

    SC4S Initial Configuration

    +

    SC4S can be run with docker-compose or directly from the CLI with the simple docker run command. Both options are outlined below.

    +
      +
    • +

      Create a directory on the server for local configurations and disk buffering. This should be available to all administrators, for example: +/opt/sc4s/

      +
    • +
    • +

      (Optional for docker-compose) Create a docker-compose.yml file in the directory created above, based on the template below:

      +
    • +
    • +

      IMPORTANT: Always use the latest compose file (below) with the current release. By default, the latest container is +automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes +that may have been made to the compose template file below (e.g. suggested mount points) are incorporated in production +prior to relaunching via compose.

      +
    • +
    +
    version: "3.7"
    +services:
    +  sc4s:
    +    deploy:
    +      replicas: 2
    +      restart_policy:
    +        condition: on-failure
    +    image: ghcr.io/splunk/splunk-connect-for-syslog/container2:2
    +    ports:
    +       - target: 514
    +         published: 514
    +         protocol: tcp
    +       - target: 514
    +         published: 514
    +         protocol: udp
    +       - target: 601
    +         published: 601
    +         protocol: tcp
    +       - target: 6514
    +         published: 6514
    +         protocol: tcp
    +    env_file:
    +      - /opt/sc4s/env_file
    +    volumes:
    +      - /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z
    +      - splunk-sc4s-var:/var/lib/syslog-ng
    +# Uncomment the following line if local disk archiving is desired
    +#     - /opt/sc4s/archive:/var/lib/syslog-ng/archive:z
    +# Map location of TLS custom TLS
    +#     - /opt/sc4s/tls:/etc/syslog-ng/tls:z
    +
    +volumes:
    +  splunk-sc4s-var:
    +
    + +
      +
    • Set /opt/sc4s folder as shared in Docker (Settings -> Resources -> File Sharing)
    • +
    • Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication +failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in +particular the state of the disk buffer. This is a required step.
    • +
    +
    sudo docker volume create splunk-sc4s-var
    +
    + +
      +
    • +

      NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in +/var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations +(typically HEC endpoints). See the “SC4S Disk Buffer Configuration” section on the Configuration page for more info.

      +
    • +
    • +

      IMPORTANT: When creating the directories below, ensure the directories created match the volume mounts specified in the +docker-compose.yml file (if used). Failure to do this will cause SC4S to abort at startup.

      +
    • +
    • +

      Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls

      +
    • +
    • +

      Create a file named /opt/sc4s/env_file and add the following environment variables and values:

      +
    • +
    +
    SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    +#Uncomment the following line if using untrusted SSL certificates
    +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +
    + +
      +
    • +

      Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC +Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this +feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog.

      +
    • +
    • +

      The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should +deviate from this.

      +
    • +
    • +

      NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to +uncomment the last line in the example above.

      +
    • +
    +

    Dedicated (Unique) Listening Ports

    +
      +
    • NOTE: Container networking differs on MacOS compared to that for linux. On Docker Desktop, there is no “host” networking driver, +so NAT networking must be used. For this reason, each listening port on the container must be mapped to a listening port on the host. +These port mappings are configured in the docker-compose.yml file or directly as a runtime option when run out of the CLI. +Be sure to update the docker-compose.yml file or CLI arguments when adding listening ports for new data sources.
    • +
    +

    Follow these steps to configure unique ports:

    +
      +
    • Modify the /opt/sc4s/env_file file to include the port-specific environment variable(s). Refer to the “Sources” +documentation to identify the specific environment variables that are mapped to each data source vendor/technology.
    • +
    • (Optional for docker-compose) The docker compose file used to start the SC4S container needs to be modified as well to reflect the additional listening ports configured by the environment variable(s) added above. The docker compose file +can be amended with additional target stanzas in the ports section of the file (after the default ports). For example, the following +additional target and published lines provide for 21 additional technology-specific UDP and TCP ports:
    • +
    +
           - target: 5000-5020
    +         published: 5000-5020
    +         protocol: tcp
    +       - target: 5000-5020
    +         published: 5000-5020
    +         protocol: udp
    +
    + + +

    Start/Restart SC4S

    +

    You can use the following command to directly start SC4S if you are not using docker-compose. Be sure to map the listening ports +(-p arguments) according to your needs:

    +
    /usr/bin/podman run -p 514:514 -p 514:514/udp -p 6514:6514 -p 5000-5020:5000-5020 -p 5000-5020:5000-5020/udp \
    +    --env-file=/opt/sc4s/env_file \
    +    --name SC4S \
    +    --rm splunk/scs:latest
    +
    + +

    If you are using docker-compose, from the catalog where you created compose file execute:

    +
    docker-compose up
    +
    + +

    Otherwise use docker-compose with -f flag pointing to the compose file

    +
    docker-compose up -f /path/to/compose/file/docker-compose.yml
    +
    + +

    Stop SC4S

    +

    If the container is run directly from the CLI, simply stop the container using the docker stop <containerID> command.

    +

    If using docker-compose, execute:

    +
    docker-compose down 
    +
    + +

    or

    +
    docker-compose down -f /path/to/compose/file/docker-compose.yml
    +
    + +

    Verify Proper Operation

    +

    SC4S has a number of “preflight” checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng +configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, +execute the following search in Splunk:

    +
    index=* sourcetype=sc4s:events "starting up"
    +
    + +

    This should yield an event similar to the following:

    +
    syslog-ng starting up; version='3.28.1'
    +
    + +

    When the startup process proceeds normally (without syntax errors). If you do not see this, +follow the steps below before proceeding to deeper-level troubleshooting:

    +
      +
    • Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443).
    • +
    • Check to see that the proper indexes are created in Splunk, and that the token has access to them.
    • +
    • Ensure the proper operation of the load balancer if used.
    • +
    • Lastly, execute the following command to check the sc4s startup process running in the container.
    • +
    +
    docker logs SC4S
    +
    + +

    You should see events similar to those below in the output:

    +
    syslog-ng checking config
    +sc4s version=v1.36.0
    +starting goss
    +starting syslog-ng
    +
    + +

    If you do not see the output above, proceed to the “Troubleshoot sc4s server” +and “Troubleshoot resources” sections for more detailed information.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/docker-compose/index.html b/3.4.1/gettingstarted/docker-compose/index.html new file mode 100644 index 0000000000..6aa69e779a --- /dev/null +++ b/3.4.1/gettingstarted/docker-compose/index.html @@ -0,0 +1,5579 @@ + + + + + + + + + + + + + + + + Docker Compose - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Install Docker Desktop

    +

    Refer to Installation

    +

    SC4S Initial Configuration

    +

    SC4S can be run with docker-compose or directly from the CLI with the simple docker run command. Both options are outlined below.

    +
      +
    • +

      Create a directory on the server for local configurations and disk buffering. This should be available to all administrators, for example: +/opt/sc4s/

      +
    • +
    • +

      (Optional for docker-compose) Create a docker-compose.yml file in the directory created above, based on the template below:

      +
    • +
    • +

      IMPORTANT: Always use the latest compose file (below) with the current release. By default, the latest container is +automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes +that may have been made to the compose template file below (e.g. suggested mount points) are incorporated in production +prior to relaunching via compose.

      +
    • +
    +
    version: "3.7"
    +services:
    +  sc4s:
    +    deploy:
    +      replicas: 2
    +      restart_policy:
    +        condition: on-failure
    +    image: ghcr.io/splunk/splunk-connect-for-syslog/container2:2
    +    ports:
    +       - target: 514
    +         published: 514
    +         protocol: tcp
    +       - target: 514
    +         published: 514
    +         protocol: udp
    +       - target: 601
    +         published: 601
    +         protocol: tcp
    +       - target: 6514
    +         published: 6514
    +         protocol: tcp
    +    env_file:
    +      - /opt/sc4s/env_file
    +    volumes:
    +      - /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z
    +      - splunk-sc4s-var:/var/lib/syslog-ng
    +# Uncomment the following line if local disk archiving is desired
    +#     - /opt/sc4s/archive:/var/lib/syslog-ng/archive:z
    +# Map location of TLS custom TLS
    +#     - /opt/sc4s/tls:/etc/syslog-ng/tls:z
    +
    +volumes:
    +  splunk-sc4s-var:
    +
    + +
      +
    • Set /opt/sc4s folder as shared in Docker (Settings -> Resources -> File Sharing)
    • +
    • Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication +failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in +particular the state of the disk buffer. This is a required step.
    • +
    +
    sudo docker volume create splunk-sc4s-var
    +
    + +
      +
    • +

      NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in +/var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations +(typically HEC endpoints). See the “SC4S Disk Buffer Configuration” section on the Configuration page for more info.

      +
    • +
    • +

      IMPORTANT: When creating the directories below, ensure the directories created match the volume mounts specified in the +docker-compose.yml file (if used). Failure to do this will cause SC4S to abort at startup.

      +
    • +
    • +

      Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls

      +
    • +
    • +

      Create a file named /opt/sc4s/env_file and add the following environment variables and values:

      +
    • +
    +
    SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    +#Uncomment the following line if using untrusted SSL certificates
    +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +
    + +
      +
    • +

      Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC +Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this +feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog.

      +
    • +
    • +

      The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should +deviate from this.

      +
    • +
    • +

      NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to +uncomment the last line in the example above.

      +
    • +
    +

    For more information about configuration refer to Docker and Podman basic configurations +and detailed configuration.

    +

    Start/Restart SC4S

    +

    You can use the following command to directly start SC4S if you are not using docker-compose. Be sure to map the listening ports +(-p arguments) according to your needs:

    +
    /usr/bin/podman run -p 514:514 -p 514:514/udp -p 6514:6514 -p 5000-5020:5000-5020 -p 5000-5020:5000-5020/udp \
    +    --env-file=/opt/sc4s/env_file \
    +    --name SC4S \
    +    --rm splunk/scs:latest
    +
    + +

    If you are using docker compose, from the catalog where you created compose file execute:

    +
    docker compose up
    +
    + +

    Otherwise use docker compose with -f flag pointing to the compose file

    +
    docker compose up -f /path/to/compose/file/docker-compose.yml
    +
    + +

    Stop SC4S

    +

    If the container is run directly from the CLI, simply stop the container using the docker stop <containerID> command.

    +

    If using docker compose, execute:

    +
    docker compose down 
    +
    + +

    or

    +
    docker compose down -f /path/to/compose/file/docker-compose.yml
    +
    + +

    Verify Proper Operation

    +

    SC4S has a number of “preflight” checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng +configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, +execute the following search in Splunk:

    +
    index=* sourcetype=sc4s:events "starting up"
    +
    + +

    This should yield an event similar to the following:

    +
    syslog-ng starting up; version='3.28.1'
    +
    + +

    When the startup process proceeds normally (without syntax errors). If you do not see this, +follow the steps below before proceeding to deeper-level troubleshooting:

    +
      +
    • Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443).
    • +
    • Check to see that the proper indexes are created in Splunk, and that the token has access to them.
    • +
    • Ensure the proper operation of the load balancer if used.
    • +
    • Lastly, execute the following command to check the sc4s startup process running in the container.
    • +
    +
    docker logs SC4S
    +
    + +

    You should see events similar to those below in the output:

    +
    syslog-ng checking config
    +sc4s version=v1.36.0
    +starting goss
    +starting syslog-ng
    +
    + +

    If you do not see the output above, proceed to the “Troubleshoot sc4s server” +and “Troubleshoot resources” sections for more detailed information.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/docker-podman-offline/index.html b/3.4.1/gettingstarted/docker-podman-offline/index.html new file mode 100644 index 0000000000..6ff1605616 --- /dev/null +++ b/3.4.1/gettingstarted/docker-podman-offline/index.html @@ -0,0 +1,5463 @@ + + + + + + + + + + + + + + + + Docker&Podman offline installation - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Offline Container Installation

    +

    Follow these instructions to “stage” SC4S by downloading the container so that it can be loaded “out of band” on a +host machine, such as an airgapped system, without internet connectivity.

    +
      +
    • Download container image “oci_container.tgz” from our Github Page. +The following example downloads v1.12; replace the URL with the latest release or pre-release version as desired.
    • +
    +
    sudo wget https://github.com/splunk/splunk-connect-for-syslog/releases/download/v1.12.0/oci_container.tar.gz
    +
    + +
      +
    • Distribute the container to the airgapped host machine using an appropriate file transfer utility.
    • +
    • Execute the following command, using docker or podman as appropriate
    • +
    +
    <podman or docker> load < oci_container.tar.gz
    +
    + +
      +
    • Note the container ID of the resultant load
    • +
    +
    Loaded image: docker.pkg.github.com/splunk/splunk-connect-for-syslog/ci:90196f77f7525bc55b3b966b5fa1ce74861c0250
    +
    + +
      +
    • Use the container ID to create a local label
    • +
    +
    <podman or docker> tag docker.pkg.github.com/splunk/splunk-connect-for-syslog/ci:90196f77f7525bc55b3b966b5fa1ce74861c0250 sc4slocal:latest
    +
    + +
      +
    • Use this local label sc4slocal:latest in the relevant unit or yaml file to launch SC4S (see the runtime options +above) by setting the SC4S_IMAGE environment variable in the unit file (example below), or the relevant image: tag +if using Docker Compose/Swarm. Using this label will cause the runtime to select the locally loaded image, and will not +attempt to obtain the container image via the internet.
    • +
    +
    Environment="SC4S_IMAGE=sc4slocal:latest"
    +
    + +
      +
    • Remove the entry
    • +
    +
    ExecStartPre=/usr/bin/docker pull $SC4S_IMAGE
    +
    + +

    from the relevant unit file when using systemd, as an external connection to pull the container is no longer needed (or available).

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/docker-systemd-general/index.html b/3.4.1/gettingstarted/docker-systemd-general/index.html new file mode 100644 index 0000000000..837ead099c --- /dev/null +++ b/3.4.1/gettingstarted/docker-systemd-general/index.html @@ -0,0 +1,5582 @@ + + + + + + + + + + + + + + + + Docker CE + systemd - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Install Docker CE

    +

    Refer to relevant installation guides:

    + +

    NOTE: READ FIRST (IPv4 forwarding)

    +

    Initial Setup

    +
      +
    • +

      IMPORTANT: Always use the latest unit file (below) with the current release. By default, the latest container is +automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes +that may have been made to the template unit file below (e.g. suggested mount points) are incorporated in production prior +to relaunching via systemd.

      +
    • +
    • +

      Create the systemd unit file /lib/systemd/system/sc4s.service based on the following template:

      +
    • +
    +

    Unit file

    +
    [Unit]
    +Description=SC4S Container
    +Wants=NetworkManager.service network-online.target docker.service
    +After=NetworkManager.service network-online.target docker.service
    +Requires=docker.service
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +[Service]
    +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest"
    +
    +# Required mount point for syslog-ng persist data (including disk buffer)
    +Environment="SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng"
    +
    +# Optional mount point for local overrides and configurations; see notes in docs
    +Environment="SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z"
    +
    +# Optional mount point for local disk archive (EWMM output) files
    +Environment="SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z"
    +
    +# Map location of TLS custom TLS
    +Environment="SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z"
    +
    +TimeoutStartSec=0
    +
    +ExecStartPre=/usr/bin/docker pull $SC4S_IMAGE
    +
    +# Note: /usr/bin/bash will not be valid path for all OS
    +# when startup fails on running bash check if the path is correct
    +ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)"
    +
    +ExecStart=/usr/bin/docker run \
    +        -e "SC4S_CONTAINER_HOST=${SC4SHOST}" \
    +        -v "$SC4S_PERSIST_MOUNT" \
    +        -v "$SC4S_LOCAL_MOUNT" \
    +        -v "$SC4S_ARCHIVE_MOUNT" \
    +        -v "$SC4S_TLS_MOUNT" \
    +        --env-file=/opt/sc4s/env_file \
    +        --network host \
    +        --name SC4S \
    +        --rm $SC4S_IMAGE
    +
    +Restart=on-abnormal
    +
    + +
      +
    • Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication +failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in +particular the state of the disk buffer. This is a required step.
    • +
    +
    sudo docker volume create splunk-sc4s-var
    +
    + +
      +
    • +

      NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in +/var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations +(typically HEC endpoints). See the “SC4S Disk Buffer Configuration” section on the Configuration page for more info.

      +
    • +
    • +

      Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls

      +
    • +
    • +

      Create a file named /opt/sc4s/env_file and add the following environment variables and values:

      +
    • +
    +
    SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    +#Uncomment the following line if using untrusted SSL certificates
    +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +
    + +
      +
    • +

      Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC +Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this +feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog.

      +
    • +
    • +

      The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should +deviate from this.

      +
    • +
    • +

      NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to +uncomment the last line in the example above.

      +
    • +
    +

    For more information about configuration refer to Docker and Podman basic configurations +and detailed configuration.

    +

    Configure SC4S for systemd and start SC4S

    +
    sudo systemctl daemon-reload
    +sudo systemctl enable sc4s
    +sudo systemctl start sc4s
    +
    + +

    Restart SC4S

    +
    sudo systemctl restart sc4s
    +
    + +

    If changes were made to the configuration Unit file above (e.g. to configure with dedicated ports), you must first stop SC4S and re-run +the systemd configuration commands:

    +
    sudo systemctl stop sc4s
    +sudo systemctl daemon-reload 
    +sudo systemctl enable sc4s
    +sudo systemctl start sc4s
    +
    + +

    Stop SC4S

    +
    sudo systemctl stop sc4s
    +
    + +

    Verify Proper Operation

    +

    SC4S has a number of “preflight” checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng +configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, +execute the following search in Splunk:

    +
    index=* sourcetype=sc4s:events "starting up"
    +
    + +

    This should yield an event similar to the following:

    +
    syslog-ng starting up; version='3.28.1'
    +
    + +

    When the startup process proceeds normally (without syntax errors). If you do not see this, +follow the steps below before proceeding to deeper-level troubleshooting:

    +
      +
    • Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443).
    • +
    • Check to see that the proper indexes are created in Splunk, and that the token has access to them.
    • +
    • Ensure the proper operation of the load balancer if used.
    • +
    • Lastly, execute the following command to check the sc4s startup process running in the container.
    • +
    +
    docker logs SC4S
    +
    + +

    You should see events similar to those below in the output:

    +
    syslog-ng checking config
    +sc4s version=v1.36.0
    +starting goss
    +starting syslog-ng
    +
    + +

    If you do not see the output above, proceed to the “Troubleshoot sc4s server” +and “Troubleshoot resources” sections for more detailed information.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/getting-started-runtime-configuration/index.html b/3.4.1/gettingstarted/getting-started-runtime-configuration/index.html new file mode 100644 index 0000000000..9eab8a107d --- /dev/null +++ b/3.4.1/gettingstarted/getting-started-runtime-configuration/index.html @@ -0,0 +1,5745 @@ + + + + + + + + + + + + + + + + Runtime Configuration - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    Implement a Container Runtime and SC4S

    +

    Prerequisites

    +
      +
    • Linux host with Docker (CE 19.x or greater) or Podman enabled, depending on runtime choice (below).
    • +
    • A network load balancer (NLB) configured for round-robin. Note: Special consideration may be required when more advanced products are used. +The optimal configuration of the load balancer will round-robin each http POST request (not each connection).
    • +
    • The host linux OS receive buffer size should be tuned to match the sc4s default to avoid dropping events (packets) at the network level. +The default receive buffer for sc4s is set to 16 MB for UDP traffic, which should be OK for most environments. To set the host OS kernel to +match this, edit /etc/sysctl.conf using the following whole-byte values corresponding to 16 MB:
    • +
    +
    net.core.rmem_default = 17039360
    +net.core.rmem_max = 17039360
    +
    + +

    and apply to the kernel:

    +
    sysctl -p
    +
    + +
      +
    • Ensure the kernel is not dropping packets by periodically monitoring the buffer with the command +netstat -su | grep "receive errors".
    • +
    • NOTE: Failure to account for high-volume traffic (especially UDP) by tuning the kernel will result in message loss, which can be very +unpredictable and difficult to detect. See this helpful discussion in the syslog-ng +Professional Edition +documentation regarding tuning syslog-ng in particular (via the SC4S_SOURCE_*_SO_RCVBUFF +environment variable in sc4s) as well as overall host kernel tuning. The default values for receive kernel buffers in most distros is 2 MB, +which has proven inadequate for many.
    • +
    +

    IPv4 Forwarding

    +

    In many distributions (e.g. CentOS provisioned in AWS), IPV4 forwarding is not enabled by default. +This needs to be enabled for container networking to function properly. The following is an example +to check and set this up; as usual this needs to be vetted with your enterprise security policy:

    +

    To check: +sudo sysctl net.ipv4.ip_forward +To set: +sudo sysctl net.ipv4.ip_forward=1

    +

    To ensure the change survives a reboot:

    +
      +
    • sysctl settings are defined through files in /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    • +
    • To override only specific settings, you can either add a file with a lexically later name in /etc/sysctl.d/ and put following setting there:
    • +
    +
    net.ipv4.ip_forward=1
    +
    + +
      +
    • or find this specific setting in one of existing configuration files (mentioned above) and set value to 1.
    • +
    +
    net.ipv4.ip_forward=1
    +
    + +

    Select a Container Runtime and SC4S Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Container Runtime and OrchestrationOperating Systems
    MicroK8sUbuntu with Microk8s
    Podman 1.7 & 1.9 + systemdRHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS
    Docker CE 19 (and greater) + systemdRHEL or CentOS >7.7 (best option), Debian or Ubuntu 18.04LTS
    Docker Desktop + ComposeMacOS
    Docker Desktop + ComposeRHEL or CentOS 8.1 & 8.2 (best option)
    Bring your own EnvironmentRHEL or CentOS 8.1 & 8.2 (best option)
    Offline Container InstallationRHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS
    Ansible+Docker SwarmRHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS
    Ansible+PodmanRHEL 7.x/8.x or CentOS 7.x/8.x (best option), Debian or Ubuntu 20.10LTS(and higher)
    Ansible+DockerRHEL 7.x/8.x or CentOS 7.x/8.x (best option), Debian or Ubuntu 18.04LTS(and higher)
    +

    Docker and Podman basic configurations

    +
      +
    • To run properly sc4s you need to create directories:/opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls
    • +
    • +

      /opt/sc4s/local will be used as a mount point for local overrides and configurations. +The empty local directory created above will populate with defaults and examples at the first invocation +of SC4S for local configurations and context overrides. Do not change the directory structure of +the files that are laid down; change (or add) only individual files if desired. SC4S depends on the directory layout +to read the local configurations properly. See the notes below for which files will be preserved on restarts. +In the local/config/ directory there are four subdirectories that allow you to provide support for device types +that are not provided out of the box in SC4S. To get you started, there is an example log path template (lp-example.conf.tmpl) +and a filter (example.conf) in the log_paths and filters subdirectories, respectively. These should not be used directly, +but copied as templates for your own log path development. They will get overwritten at each SC4S start.
      +In the local/context directory, if you change the “non-example” version of a file (e.g. splunk_metadata.csv) the changes +will be preserved on a restart.

      +
    • +
    • +

      /opt/sc4s/archive will be used as a mount point for local storage of syslog events +(if the optional mount is uncommented above). The events will be written in the syslog-ng EWMM format. See the “configuration” +document for details on the directory structure the archive uses.

      +
    • +
    • +

      /opt/sc4s/tls will be used as a mount point for custom TLS certificates +(if the optional mount is uncommented above).

      +
    • +
    • +

      IMPORTANT: When creating the directories above, ensure the directories created match the volume mounts specified in the +sc4s.service unit file. Failure to do this will cause SC4S to abort at startup.

      +
    • +
    +

    Dedicated (Unique) Listening Ports

    +

    For certain source technologies, categorization by message content is impossible due to the lack of a unique “fingerprint” in +the data. In other cases, a unique listening port is required for certain devices due to network requirements in the enterprise. +For collection of such sources, we provide a means of dedicating a unique listening port to a specific source.

    +

    Follow this step to configure unique ports for one or more sources:

    +
      +
    • Modify the /opt/sc4s/env_file file to include the port-specific environment variable(s). Refer to the “Sources” +documentation to identify the specific environment variables that are mapped to each data source vendor/technology.
    • +
    +

    Modify index destinations for Splunk

    +

    Log paths are preconfigured to utilize a convention of index destinations that are suitable for most customers.

    +
      +
    • If changes need to be made to index destinations, navigate to the /opt/sc4s/local/context directory to start.
    • +
    • Edit splunk_metadata.csv to review or change the index configuration as required for the data sources utilized in your +environment. The key (1st column) in this file uses the syntax vendor_product. Simply replace the index value (the 3rd column) in the +desired row with the index appropriate for your Splunk installation. The “Sources” document details the specific vendor_product keys (rows) +in this table that pertain to the individual data source filters that are included with SC4S.
    • +
    • Other Splunk metadata (e.g. source and sourcetype) can be overridden via this file as well. This is an advanced topic, and further +information is covered in the “Log Path overrides” section of the Configuration document.
    • +
    +

    Configure source filtering by source IP or host name

    +

    Legacy sources and non-standard-compliant sources require configuration by source IP or hostname as included in the event. The following steps +apply to support such sources. To identify sources that require this step, refer to the “sources” section of this documentation. See documentation +for your vendor/product to determine if specific configuration is required

    +

    Configure compliance index/metadata overrides

    +

    In some cases, devices that have been properly sourcetyped need to be further categorized by compliance, geography, or other criterion. +The two files compliance_meta_by_source.conf and compliance_meta_by_source.csv can be used for this purpose. These operate similarly to +the files above, where the conf file specifies a filter to uniquely identify the messages that should be overridden, and the csv file +lists one or more metadata items that can be overridden based on the filter name. This is an advanced topic, and further information is +covered in the “Override index or metadata based on host, ip, or subnet” section of the Configuration document.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/getting-started-splunk-setup/index.html b/3.4.1/gettingstarted/getting-started-splunk-setup/index.html new file mode 100644 index 0000000000..6a2eee4511 --- /dev/null +++ b/3.4.1/gettingstarted/getting-started-splunk-setup/index.html @@ -0,0 +1,5555 @@ + + + + + + + + + + + + + + + + Splunk Setup - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Splunk setup

    +

    Create Indexes

    +

    SC4S is pre-configured to map each sourcetype to a typical index. For new installations, it is best practice to create them in Splunk when +using the SC4S defaults. SC4S can be easily customized to use different indexes if desired.

    +
      +
    • email
    • +
    • epav
    • +
    • epintel
    • +
    • infraops
    • +
    • netauth
    • +
    • netdlp
    • +
    • netdns
    • +
    • netfw
    • +
    • netids
    • +
    • netlb
    • +
    • netops
    • +
    • netwaf
    • +
    • netproxy
    • +
    • netipam
    • +
    • oswin
    • +
    • oswinsec
    • +
    • osnix
    • +
    • print
    • +
    • em_metrics (Optional opt-in for SC4S operational metrics; ensure this is created as a metrics index)
    • +
    + +

    Install the following:

    + +

    Configure the Splunk HTTP Event Collector

    +
      +
    • Set up the Splunk HTTP Event Collector with the HEC endpoints behind a load balancer (VIP) configured for https round robin WITHOUT sticky +session. Alternatively, a list of HEC endpoint URLs can be configured in SC4S (native syslog-ng load balancing) if no load balancer is in +place. In most scenarios the recommendation is to use an external load balancer, as that makes longer term +maintenance simpler by eliminating the need to manually keep the list of HEC URLs specified in sc4s current. However, if a LB is not +available, native load balancing can be used with 10 or fewer Indexers where HEC is used exclusively for syslog.
    • +
    +

    In either case, it is strongly recommended that SC4S traffic be sent to HEC endpoints configured directly on the indexers rather than +an intermediate tier of HWFs.
    +- Create a HEC token that will be used by SC4S and ensure the token has access to place events in main, em_metrics, and all indexes used as +event destinations.

    +
      +
    • NOTE: It is recommended that the “Selected Indexes” on the token configuration page be left blank so that the token has access to +all indexes, including the lastChanceIndex. If this list is populated, extreme care must be taken to keep it up to date, as an attempt to +send data to an index not in this list will result in a 400 error from the HEC endpoint. Furthermore, the lastChanceIndex will not be +consulted in the event the index specified in the event is not configured on Splunk. Keep in mind just one bad message will “taint” the +whole batch (by default 1000 events) and prevent the entire batch from being sent to Splunk.
    • +
    • In case you are not using TLS on SC4S- turn off SSL on global settings for HEC in Splunk.
    • +
    • Refer to Splunk Cloud +or Splunk Enterprise for specific HEC configuration instructions based on your +Splunk type.
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/index.html b/3.4.1/gettingstarted/index.html new file mode 100644 index 0000000000..56e12e06cd --- /dev/null +++ b/3.4.1/gettingstarted/index.html @@ -0,0 +1,5558 @@ + + + + + + + + + + + + + + + + Read First - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Before you start

    +

    Getting Started

    +

    Splunk Connect for Syslog is a containerized distribution of syslog-ng with a configuration framework +designed to simplify getting syslog data into Splunk Enterprise and Splunk Cloud. Our approach is +to provide a runtime-agnostic solution allowing customers to deploy using the container runtime +environment of choice.

    +

    Planning Deployment

    +

    Syslog is an overloaded term that refers to multiple message formats AND optionally a wire protocol for +transmission of events between computer systems over UDP, TCP, or TLS. The protocol is designed to minimize +overhead on the sender favoring performance over reliability. This fundamental choice means any instability +or resource constraint will cause data to be lost in transmission.

    +
      +
    • +

      When practical and cost-effective (considering the importance of completeness as a requirement), place the sc4s +instance in the same VLAN as the source device.

      +
    • +
    • +

      Avoid crossing a Wireless network, WAN, Firewall, Load Balancer, or inline IDS.

      +
    • +
    • When High Availability of a single instance of SC4S is required, implement multi node clustering of the container +environment.
    • +
    • Avoid TCP except where the source is unable to contain the event to a single UDP packet.
    • +
    • Avoid TLS except where the event may cross untrusted network.
    • +
    • Plan for appropriately sized hardware
    • +
    +

    Implementation

    +

    Splunk Setup

    +

    Runtime configuration

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/k8s-microk8s/index.html b/3.4.1/gettingstarted/k8s-microk8s/index.html new file mode 100644 index 0000000000..972b677b6c --- /dev/null +++ b/3.4.1/gettingstarted/k8s-microk8s/index.html @@ -0,0 +1,5598 @@ + + + + + + + + + + + + + + + + MicroK8s + Linux - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Install MicroK8s

    +

    The SC4S deployment model with Microk8s uses specific features of this distribution of k8s. +While this may be reproducible with other distributions such an undertaking requires more advanced +awareness and responsibility for the administrator.

    +
      +
    • (metalLB) ensure source IP is preserved
    • +
    • Bring any operating system (window/centos/rhel/ubuntu/debian)
    • +
    +

    This configuration requires as least 2 IP addressed one for host and one for the internal load balancer. +We suggest allocation of 3 ip addresses for the host and 5-10 addresses for later use

    +

    FAQ

    +

    Question: How is this deployment model supported? +Answer: Similar to other deployment methods, Splunk supports the container itself and the procedural guidance for implementation but does not directly support +or otherwise provide resolutions for issues within the runtime environment.

    +

    Question: Why is this “load balancer” ok but others are not? +Answer: While we are using a load balancer with one instance per host, the traffic is restricted +to the entry node and one instance of sc4s will run per node. This limits the function of MetalLB to +the same function as a Cluster Manager.

    +

    Question: Is this a recommended deployment model? +Answer: Yes, the single-server microk8s model is a recommended option. The use of clustering does have additional tradeoffs and should be carefully considered +on a deployment-specific basis.

    +
    #we need to have a normal install of kubectl because of operator scripts
    +sudo snap install microk8s --classic --channel=1.24
    +# Basic setup of k8s
    +sudo usermod -a -G microk8s $USER
    +sudo chown -f -R $USER ~/.kube
    +
    +su - $USER
    +microk8s status --wait-ready
    +#Note when installing metallb you will be prompted for one or more IPs to used as entry points
    +#Into the cluster if your plan to enable clustering this IP should not be assigned to the host (floats)
    +#If you do not plan to cluster then this IP may be the same IP as the host
    +#Note2: a single IP in cidr format is x.x.x.x/32 use CIDR or range syntax
    +microk8s enable dns 
    +microk8s enable community
    +microk8s enable metallb 
    +microk8s enable rbac 
    +microk8s enable storage 
    +microk8s enable openebs 
    +microk8s enable helm3
    +microk8s status --wait-ready
    +
    + +

    Add SC4S Helm repo

    +
    microk8s helm3 repo add splunk-connect-for-syslog https://splunk.github.io/splunk-connect-for-syslog
    +microk8s helm3 repo update
    +
    + +

    Create a config file

    +

    Dependent on whether you want to store HEC token as a kubernetes secret create values.yaml file. +If you wish to provide HEC token value in plaintext configure it as in example below:

    +

    The HEC token can be configured either as a plane text or as a secret.

    +

    As Plaintext Configuration:

    +
    #values.yaml
    +splunk:
    +    hec_url: "https://xxx.xxx.xxx.xxx:8088/services/collector/event"
    +    hec_token: "00000000-0000-0000-0000-000000000000"
    +    hec_verify_tls: "yes"
    +
    + +

    As Secret Configuration:

    +
    #values.yaml
    +splunk:
    +    hec_url: "https://xxx.xxx.xxx.xxx:8088/services/collector/event"
    +    hec_verify_tls: "yes"
    +
    + +

    Install SC4S

    +
    microk8s helm3 install sc4s splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml
    +
    + +

    HEC token as a kubernetes secret:

    +
    export HEC_TOKEN="00000000-0000-0000-0000-000000000000" # provide your token here!
    +microk8s helm3 install sc4s --set splunk.hec_token=$HEC_TOKEN splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml
    +
    + +

    Upgrade SC4S

    +
    microk8s helm3 upgrade sc4s splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml
    +
    + +

    Setup for HA with multiple nodes

    +

    See https://microk8s.io/docs/high-availability

    +

    Note: Three identically-sized nodes are required for HA

    +
    #values.yaml
    +replicaCount: 6 #2x node count
    +splunk:
    +    hec_url: "https://xxx.xxx.xxx.xxx:8088/services/collector/event"
    +    hec_token: "00000000-0000-0000-0000-000000000000"
    +    hec_verify_tls: "yes"
    +
    + +

    Upgrade sc4s to apply the new config

    +

    Advanced Configuration

    +

    Using helm based deployment precludes direct configuration of environment variables and +context files but most configuration can be set via the values.yaml

    +
    sc4s:
    +  # Certificate as a k8s Secret with tls.key and tls.crt fields
    +  # Ideally produced and managed by cert-manager.io
    +  existingCert: example-com-tls
    +  #
    +  vendor_product:
    +    - name: checkpoint
    +      ports:
    +        tcp: [9000] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000
    +        udp: [9000]
    +      options:
    +        listen:
    +          old_host_rules: "yes" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes
    +
    +    - name: infoblox
    +      ports:
    +        tcp: [9001, 9002]
    +        tls: [9003]
    +    - name: fortinet
    +      ports:
    +        ietf_udp:
    +          - 9100
    +          - 9101
    +  context_files:
    +    splunk_metadata.csv: |-
    +      cisco_meraki,index,foo
    +    host.csv: |-
    +      192.168.1.1,foo
    +      192.168.1.2,moon
    +
    + +

    config_files and context_files are variables used to specify configuration and context files that need to be passed to the splunk-connect-for-syslog.

    +

    config_files: This variable contains a dictionary that maps the name of the configuration file to its content in the form of a YAML block scalar. +context_file: This variable contains a dictionary that maps the name of the context files to its content in the form of a YAML block scalar. The context file named splunk_metadata.csv and host.csv are being passed with the values.yaml

    +
    sc4s:
    +  # Certificate as a k8s Secret with tls.key and tls.crt fields
    +  # Ideally produced and managed by cert-manager.io
    +  #
    +  vendor_product:
    +    - name: checkpoint
    +      ports:
    +        tcp: [9000] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000
    +        udp: [9000]
    +      options:
    +        listen:
    +          old_host_rules: "yes" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes
    +
    +    - name: fortinet
    +      ports:
    +        ietf_udp:
    +          - 9100
    +          - 9101
    +  context_files:
    +    splunk_metadata.csv: |+
    +      cisco_meraki,index,foo
    +      cisco_asa,index,bar
    +  config_files:
    +    app-workaround-cisco_asa.conf: |+
    +      block parser app-postfilter-cisco_asa_metadata() {
    +        channel {
    +          rewrite {
    +            unset(value('fields.sc4s_recv_time'));
    +          };
    +        };
    +       };
    +      application app-postfilter-cisco_asa_metadata[sc4s-postfilter] {
    +        filter {
    +          'cisco' eq "${fields.sc4s_vendor}"
    +          and 'asa' eq "${fields.sc4s_product}"
    +        };
    +        parser { app-postfilter-cisco_asa_metadata(); };
    +       };
    +
    + +

    Resource Management

    +

    Generally two instances will be provisioned per node adjust requests and limits to +allow each instance to use about 40% of each node presuming no other workload is present

    +
    resources:
    +  limits:
    +    cpu: 100m
    +    memory: 128Mi
    +  requests:
    +    cpu: 100m
    +    memory: 128Mi
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/podman-systemd-general/index.html b/3.4.1/gettingstarted/podman-systemd-general/index.html new file mode 100644 index 0000000000..f581c7f063 --- /dev/null +++ b/3.4.1/gettingstarted/podman-systemd-general/index.html @@ -0,0 +1,5671 @@ + + + + + + + + + + + + + + + + Podman + systemd - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Install podman

    +

    Refer to Installation

    +

    NOTE: READ FIRST (IPv4 forwarding)

    +

    Initial Setup

    +
      +
    • +

      IMPORTANT: Always use the latest unit file (below) with the current release. By default, the latest container is +automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes +that may have been made to the template unit file below (e.g. suggested mount points) are incorporated in production prior +to relaunching via systemd.

      +
    • +
    • +

      Create the systemd unit file /lib/systemd/system/sc4s.service based on the following template:

      +
    • +
    +

    Unit file

    +
    [Unit]
    +Description=SC4S Container
    +Wants=NetworkManager.service network-online.target
    +After=NetworkManager.service network-online.target
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +[Service]
    +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest"
    +
    +# Required mount point for syslog-ng persist data (including disk buffer)
    +Environment="SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng"
    +
    +# Optional mount point for local overrides and configurations; see notes in docs
    +Environment="SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z"
    +
    +# Optional mount point for local disk archive (EWMM output) files
    +Environment="SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z"
    +
    +# Map location of TLS custom TLS
    +Environment="SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z"
    +
    +TimeoutStartSec=0
    +
    +ExecStartPre=/usr/bin/podman pull $SC4S_IMAGE
    +
    +# Note: /usr/bin/bash will not be valid path for all OS
    +# when startup fails on running bash check if the path is correct
    +ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)"
    +
    +ExecStart=/usr/bin/podman run \
    +        -e "SC4S_CONTAINER_HOST=${SC4SHOST}" \
    +        -v "$SC4S_PERSIST_MOUNT" \
    +        -v "$SC4S_LOCAL_MOUNT" \
    +        -v "$SC4S_ARCHIVE_MOUNT" \
    +        -v "$SC4S_TLS_MOUNT" \
    +        --env-file=/opt/sc4s/env_file \
    +        --health-cmd="/healthcheck.sh" \
    +        --health-interval=10s --health-retries=6 --health-timeout=6s \
    +        --network host \
    +        --name SC4S \
    +        --rm $SC4S_IMAGE
    +
    +Restart=on-abnormal
    +
    + +
      +
    • Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication +failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in +particular the state of the disk buffer. This is a required step.
    • +
    +
    sudo podman volume create splunk-sc4s-var
    +
    + +
      +
    • +

      NOTE: Be sure to account for disk space requirements for the podman volume created above. This volume is located in +/var/lib/containers/storage/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations +(typically HEC endpoints). See the “SC4S Disk Buffer Configuration” section on the Configuration page for more info.

      +
    • +
    • +

      Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls

      +
    • +
    +

    Create a file named /opt/sc4s/env_file and add the following environment variables and values:

    +
    SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    +#Uncomment the following line if using untrusted SSL certificates
    +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +
    + +
      +
    • +

      Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC +Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this +feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog.

      +
    • +
    • +

      The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should +deviate from this.

      +
    • +
    • +

      NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to +uncomment the last line in the example above.

      +
    • +
    +

    For more information about configuration refer to Docker and Podman basic configurations +and detailed configuration.

    +

    Configure SC4S for systemd and start SC4S

    +
    sudo systemctl daemon-reload
    +sudo systemctl enable sc4s
    +sudo systemctl start sc4s
    +
    + +

    Restart SC4S

    +
    sudo systemctl restart sc4s
    +
    + +

    If changes were made to the configuration Unit file above (e.g. to configure with dedicated ports), you must first stop SC4S and re-run +the systemd configuration commands:

    +
    sudo systemctl stop sc4s
    +sudo systemctl daemon-reload 
    +sudo systemctl enable sc4s
    +sudo systemctl start sc4s
    +
    + +

    Stop SC4S

    +
    sudo systemctl stop sc4s
    +
    + +

    Verify Proper Operation

    +

    SC4S has a number of “preflight” checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng +configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, +execute the following search in Splunk:

    +
    index=* sourcetype=sc4s:events "starting up"
    +
    + +

    This should yield an event similar to the following:

    +
    syslog-ng starting up; version='3.28.1'
    +
    + +

    When the startup process proceeds normally (without syntax errors). If you do not see this, +follow the steps below before proceeding to deeper-level troubleshooting:

    +
      +
    • Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443).
    • +
    • Check to see that the proper indexes are created in Splunk, and that the token has access to them.
    • +
    • Ensure the proper operation of the load balancer if used.
    • +
    • Lastly, execute the following command to check the sc4s startup process running in the container.
    • +
    +
    docker logs SC4S
    +
    + +

    You should see events similar to those below in the output:

    +
    syslog-ng checking config
    +sc4s version=v1.36.0
    +starting goss
    +starting syslog-ng
    +
    + +

    If you do not see the output above, proceed to the “Troubleshoot sc4s server” +and “Troubleshoot resources” sections for more detailed information.

    +

    SC4S non-root operation

    +

    NOTE:

    +

    Using non-root prevents the use of standard ports 514 and 601 many device can not alter their destination port this is not +a valid configuration for general use, and may only be appropriate for cases where accepting syslog from the public internet can not +be avoided.

    +

    Prequisites

    +

    Podman and slirp4netns installed.

    +

    Increase number of user namespaces

    +

    With user that has sudo privileges:

    +
    $ echo “user.max_user_namespaces=28633” > /etc/sysctl.d/userns.conf      
    +$ sysctl -p /etc/sysctl.d/userns.conf
    +
    + +

    Prepare sc4s user

    +

    Create a non-root user in which to run SC4S and prepare podman for non-root operation:

    +
    sudo useradd -m -d /home/sc4s -s /bin/bash sc4s
    +sudo passwd sc4s  # type password here
    +sudo su - sc4s
    +mkdir -p /home/sc4s/local
    +mkdir -p /home/sc4s/archive
    +mkdir -p /home/sc4s/tls
    +podman system migrate
    +
    + +

    Next login as different user and login back again as sc4s user not using su command. For example: ssh sc4s@localhost (using su will not set needed env variables).

    +

    Create unit file in changed location (with changes)

    +

    Create unit file under ~/.config/systemd/user/sc4s.service with following content:

    +
    [Unit]
    +User=sc4s
    +Description=SC4S Container
    +Wants=NetworkManager.service network-online.target
    +After=NetworkManager.service network-online.target
    +
    +[Install]
    +WantedBy=multi-user.target
    +
    +[Service]
    +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container2:2"
    +
    +# Required mount point for syslog-ng persist data (including disk buffer)
    +Environment="SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng"
    +
    +# Optional mount point for local overrides and configurations; see notes in docs
    +Environment="SC4S_LOCAL_MOUNT=/home/sc4s/local:/etc/syslog-ng/conf.d/local:z"
    +
    +# Optional mount point for local disk archive (EWMM output) files
    +Environment="SC4S_ARCHIVE_MOUNT=/home/sc4s/archive:/var/lib/syslog-ng/archive:z"
    +
    +# Map location of TLS custom TLS
    +Environment="SC4S_TLS_MOUNT=/home/sc4s/tls:/etc/syslog-ng/tls:z"
    +
    +TimeoutStartSec=0
    +
    +ExecStartPre=/usr/bin/podman pull $SC4S_IMAGE
    +
    +# Note: /usr/bin/bash will not be valid path for all OS
    +# when startup fails on running bash check if the path is correct
    +ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SC4SHOST=$(hostname -s)"
    +
    +ExecStart=/usr/bin/podman run -p 2514:514 -p 2514:514/udp -p 6514:6514  \
    +        -e "SC4S_CONTAINER_HOST=${SC4SHOST}" \
    +        -v "$SC4S_PERSIST_MOUNT" \
    +        -v "$SC4S_LOCAL_MOUNT" \
    +        -v "$SC4S_ARCHIVE_MOUNT" \
    +        -v "$SC4S_TLS_MOUNT" \
    +        --env-file=/opt/sc4s/env_file \
    +        --health-cmd="/healthcheck.sh" \
    +        --health-interval=10s --health-retries=6 --health-timeout=6s \
    +        --network host \
    +        --name SC4S \
    +        --rm $SC4S_IMAGE
    +
    +Restart=on-abnormal
    +
    + +

    Create env file

    +

    Create env_file at /home/sc4s/env_file .

    +
    SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=http://xxx.xxx.xxx.xxx:8088
    +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx
    +#Uncomment the following line if using untrusted SSL certificates
    +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no
    +SC4S_LISTEN_DEFAULT_TCP_PORT=8514
    +SC4S_LISTEN_DEFAULT_UDP_PORT=8514
    +SC4S_LISTEN_DEFAULT_RFC5426_PORT=8601
    +SC4S_LISTEN_DEFAULT_RFC6587_PORT=8601
    +
    + +

    Run service

    +

    To run service as non root user run systemctl command wit --user flag:

    +
    systemctl --user daemon-reload
    +systemctl --user enable sc4s
    +systemctl --user start sc4s
    +
    + +

    The remainder of the setup can be followed directly from the main setup instructions.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/gettingstarted/quickstart_guide/index.html b/3.4.1/gettingstarted/quickstart_guide/index.html new file mode 100644 index 0000000000..ca3e588696 --- /dev/null +++ b/3.4.1/gettingstarted/quickstart_guide/index.html @@ -0,0 +1,5570 @@ + + + + + + + + + + + + + + + + Quickstart Guide - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Quickstart Guide

    +

    Splunk setup

    +
      +
    • +

      Create the following default indexes that are used by SC4S

      +
        +
      • email
      • +
      • epav
      • +
      • netauth
      • +
      • netdlp
      • +
      • netdns
      • +
      • netfw
      • +
      • netids
      • +
      • netops
      • +
      • netwaf
      • +
      • netproxy
      • +
      • netipam
      • +
      • oswinsec
      • +
      • osnix
      • +
      • em_metrics (Optional opt-in for SC4S operational metrics; ensure this is created as a metrics index)
      • +
      +
    • +
    • +

      Create a HEC token for SC4S. When filling out the form for the token, it is recommended that the “Selected Indexes” pane be left blank and that a + lastChanceIndex be created so that all data received by SC4S will land somewhere in Splunk.

      +
    • +
    +

    SC4S setup (using RHEL 7.6)

    +
      +
    • +

      Set the host OS kernel to match the default receive buffer of sc4s which is set to 16MB

      +
        +
      • +

        Add following to /etc/sysctl.conf

        +

        net.core.rmem_default = 17039360 + net.core.rmem_max = 17039360

        +
      • +
      • +

        Apply to the kernel

        +

        sysctl -p

        +
      • +
      +
    • +
    • +

      Ensure the kernel is not dropping packets

      +

      netstat -su | grep "receive errors"

      +
    • +
    • +

      Create the systemd unit file /lib/systemd/system/sc4s.service. Copy and paste from the +SC4S sample unit file (Docker) or SC4S sample unit file (Podman) .

      +
    • +
    • +

      Install podman or docker

      +

      sudo yum -y install podman +or +sudo yum install docker-engine -y

      +
    • +
    • +

      Create a podman/docker local volume that will contain the disk buffer files and other SC4S state files +(choose one in the command below)

      +

      sudo podman|docker volume create splunk-sc4s-var

      +
    • +
    • +

      Create directories used as a mount point for local overrides and configurations

      +

      mkdir /opt/sc4s/local

      +

      mkdir /opt/sc4s/archive

      +

      mkdir /opt/sc4s/tls

      +
    • +
    • +

      Create the environment file /opt/sc4s/env_file and replace the HEC_URL and HEC_TOKEN as appropriate

      +

      SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088 + SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx + #Uncomment the following line if using untrusted SSL certificates + #SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no

      +
    • +
    • +

      Configure SC4S for systemd and start SC4S

      +

      sudo systemctl daemon-reload

      +

      sudo systemctl enable sc4s

      +

      sudo systemctl start sc4s

      +
    • +
    • +

      Check podman/docker logs for errors (choose one in command below)

      +

      sudo podman|docker logs SC4S

      +
    • +
    • +

      Search on Splunk for successful installation of SC4S

      +

      index=* sourcetype=sc4s:events "starting up"

      +
    • +
    • +

      Send sample data to default udp port 514 of SC4S host

      +

      echo “Hello SC4S” > /dev/udp/<SC4S_ip>/514

      +
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/index.html b/3.4.1/index.html new file mode 100644 index 0000000000..def1d1460f --- /dev/null +++ b/3.4.1/index.html @@ -0,0 +1,5545 @@ + + + + + + + + + + + + + + + + Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Welcome to Splunk Connect for Syslog!

    +

    Splunk Connect for Syslog is an open source packaged solution for +getting data into Splunk. It is based on the syslog-ng Open Source Edition (Syslog-NG OSE) and transports data to Splunk via the Splunk +HTTP event Collector (HEC) rather than writing events to disk for collection by a Universal Forwarder.

    +

    Product Goals

    +
      +
    • Bring a tested configuration and build of syslog-ng OSE to the market that will function consistently regardless of the underlying host’s linux distribution
    • +
    • Provide a container with the tested configuration for Docker/K8s that can be more easily deployed than upstream packages directly on a customer OS
    • +
    • Provide validated (testable and tested) implementations of filter and parse functions for common vendor products
    • +
    • Reduce latency and improve scale by balancing event distribution across Splunk Indexers
    • +
    +

    Support

    +
      +
    • Splunk Connect for Syslog is an open source project that is now officially supported by Splunk. That said, the notes below outlining community support are still highly relevant.
    • +
    +

    Splunk Connect for Syslog is an open source product developed by Splunkers with contributions from the community of partners and customers. +This unique product will be enhanced, maintained and supported by the community, led by Splunkers with deep subject matter expertise. The +primary reason why Splunk is taking this approach is to push product development closer to those that use and depend upon it. This direct +connection will help us all be more successful and move at a rapid pace.

    +

    Post a question to Splunk Answers using the tag “Splunk Connect For Syslog”

    +

    Join the #splunk-connect-for-syslog room in the splunk-usergroups Slack Workspace. If you don’t yet have an account sign up

    +

    Please use the GitHub issue tracker to submit bugs or request enhancements: https://github.com/splunk/splunk-connect-for-syslog/issues

    +

    Get involved, try it out, ask questions, contribute filters, and make new friends!

    +

    Contributing

    +

    We welcome feedback and contributions from the community! Please see our contribution guidelines for more information on how to get involved.

    +

    License

    +
      +
    • +

      Configuration and documentation licensed subject to CC0

      +
    • +
    • +

      Code and scripts licensed subject to BSD-2-Clause

      +
    • +
    • +

      Third Party Axoflow image of syslog-ng License

      +
    • +
    • +

      Third Party Syslog-NG (OSE) License

      +
    • +
    +

    References

    +
      +
    • Syslog-ng Documentation provided by Axoflow Docs
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/lb/index.html b/3.4.1/lb/index.html new file mode 100644 index 0000000000..0d3e16b1c1 --- /dev/null +++ b/3.4.1/lb/index.html @@ -0,0 +1,5484 @@ + + + + + + + + + + + + + + + + Load Balancers - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    A word about load balancers

    +

    Customers often “require” the use of load balancers incorrectly attempting to meet a business requirement for availability. In general load balancers are not recommended with the exception of a narrow use case where the Syslog Server must be exposed to untrusted clients on the internet such as Palo Alto Cortex.

    +

    Considerations

    +
      +
    • UDP MUST only pass a load balancer using DNAT. Source IP must be preserved. Note in this configuration a Load Balancer becomes a new single point of failure
    • +
    • TCP/TLS May use a DNAT configuration OR SNAT with “PROXY” Protocol enabled SC4S_SOURCE_PROXYCONNECT=yes (Experimental)
    • +
    • TCP/TLS load balancers do not consider the weight of individual connection load is frequently biased to one instance; all members in a single resource pool should be vertically scaled to accommodate the full workload.
    • +
    +

    Alternatives

    +

    The best deployment model for high availability is a Microk8s based deployment with MetalLB in BGP mode. This model uses a special class of load balancer that is implemented as destination network translation.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/lite/index.html b/3.4.1/lite/index.html new file mode 100644 index 0000000000..aee20bbcec --- /dev/null +++ b/3.4.1/lite/index.html @@ -0,0 +1,5486 @@ + + + + + + + + + + + + + + + + SC4S Lite - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    + +
    + + + +
    +
    + + + + +

    SC4S Lite

    +

    Purpose

    +

    SC4S Lite has been designed to provide a scalable, performance-oriented solution for syslog data ingestion into Splunk. +The addition of Pluggable Modular Parsers offers users the flexibility to incorporate custom data processing logic to suit specific use cases.

    +

    Architecture

    +

    architecture diagram

    +

    Components and Modules

    +

    SC4S Lite

    +

    The primary component of the system, SC4S Lite is built upon the SC4S, providing a lightweight, high-performance sc4s solution, the current SC4S is very complex and packed with too many oob parser support.

    +

    Pluggable Modular Parsers

    +

    The Pluggable Modular Parsers provide the ability to customize and extend the data processing logic of SC4S Lite. Users can create and integrate custom parsers to suit their specific needs, enhancing the flexibility of data processing.

    +

    Splunk Enterprise or Splunk Cloud

    +

    The Splunk platform is the destination for the syslog data. Splunk allows for comprehensive analysis, searching, and visualization of the processed data.

    +

    Data Flow

    +

    Source systems send syslog data to SC4S Lite. The data may be transmitted via UDP, TCP, or RELP, depending on the system’s capabilities and configurations. +SC4S Lite receives the syslog data and routes it through the appropriate parsers, as defined by user configurations. +The parsers in pluggable module process the data, including parsing, filtering, and enriching the data with metadata. +SC4S Lite forwards the processed syslog data to the Splunk platform over the HTTP Event Collector (HEC).

    +

    Security Considerations

    +

    SC4S Lite is built on an alpine lightweight container which has very little vulnerability as well as it supports secure syslog data transmission protocols (such as RELP and TLS over TCP) to protect the data in transit. Furthermore, the environment in which SC4S Lite is deployed enhances data security.

    +

    Scalability and Performance

    +

    SC4S Lite is designed to provide superior performance and scalability, thanks to the lightweight architecture and pluggable parsers, which distribute the processing load. It is also packed with ebpf program which can further enhance the performance. +Note: The actual performance may depend on factors such as the server capacity and network bandwidth.

    +

    Implementation Plan

    +

    The implementation of SC4S Lite involves several steps, including:

    + +

    NOTE: In the service file (for podman or docker) replace references of standard container image (container2 or container3) with container3lite. For microk8s replace reference to standard image in values.yaml file. +- Configuring source systems to send syslog data to SC4S Lite. +- Developing and integrating custom parsers as per specific needs. +- Configuring SC4S Lite to route syslog data through appropriate parsers and forward to Splunk. +- Testing the setup to ensure syslog data is correctly received, processed, and forwarded to Splunk.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/logo.png b/3.4.1/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6f098044f72325e8617c57dc11a8b10fade08c GIT binary patch literal 34258 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�ce73cp?QB~ebENJu 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 Q#5KLLl8O?gV#Wdg1LjH?MgRZ+ literal 0 HcmV?d00001 diff --git a/3.4.1/performance/index.html b/3.4.1/performance/index.html new file mode 100644 index 0000000000..cf052f6dee --- /dev/null +++ b/3.4.1/performance/index.html @@ -0,0 +1,5685 @@ + + + + + + + + + + + + + + + + Performance - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Performance and Sizing

    +

    Performance testing against our lab configuration produces the following results and limitations.

    +

    Tested Configurations

    +

    Splunk Cloud Noah

    +

    Environment

    +
      +
    • Loggen (syslog-ng 3.25.1) - m5zn.3xlarge
    • +
    • SC4S(2.30.0) + podman (4.0.2) - m5zn family
    • +
    • SC4S_DEST_SPLUNK_HEC_WORKERS=10 (default)
    • +
    • Splunk Cloud Noah 8.2.2203.2 - 3SH + 3IDX
    • +
    +
    /opt/syslog-ng/bin/loggen -i --rate=100000 --interval=1800 -P -F --sdata="[test name=\"stress17\"]" -s 800 --active-connections=10 <local_hostmane> <sc4s_external_tcp514_port>
    +
    + +

    Result

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SC4S instanceroot networkingslirp4netns networking
    m5zn.largeaverage rate = 21109.66 msg/sec, count=38023708, time=1801.25, (average) msg size=800, bandwidth=16491.92 kB/secaverage rate = 20738.39 msg/sec, count=37344765, time=1800.75, (average) msg size=800, bandwidth=16201.87 kB/sec
    m5zn.xlargeaverage rate = 34820.94 msg/sec, count=62687563, time=1800.28, (average) msg size=800, bandwidth=27203.86 kB/secaverage rate = 35329.28 msg/sec, count=63619825, time=1800.77, (average) msg size=800, bandwidth=27601.00 kB/sec
    m5zn.2xlargeaverage rate = 71929.91 msg/sec, count=129492418, time=1800.26, (average) msg size=800, bandwidth=56195.24 kB/secaverage rate = 70894.84 msg/sec, count=127630166, time=1800.27, (average) msg size=800, bandwidth=55386.60 kB/sec
    m5zn.2xlargeaverage rate = 85419.09 msg/sec, count=153778825, time=1800.29, (average) msg size=800, bandwidth=66733.66 kB/secaverage rate = 84733.71 msg/sec, count=152542466, time=1800.26, (average) msg size=800, bandwidth=66198.21 kB/sec
    +

    Splunk Enterprise

    +

    Environment

    +
      +
    • Loggen (syslog-ng 3.25.1) - m5zn.large
    • +
    • SC4S(2.30.0) + podman (4.0.2) - m5zn family
    • +
    • SC4S_DEST_SPLUNK_HEC_WORKERS=10 (default)
    • +
    • Splunk Enterprise 9.0.0 Standalone
    • +
    +
    /opt/syslog-ng/bin/loggen -i --rate=100000 --interval=600 -P -F --sdata="[test name=\"stress17\"]" -s 800 --active-connections=10 <local_hostmane> <sc4s_external_tcp514_port>
    +
    + +

    Result

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    SC4S instanceroot networkingslirp4netns networking
    m5zn.largeaverage rate = 21511.69 msg/sec, count=12930565, time=601.095, (average) msg size=800, bandwidth=16806.01 kB/sec
    average rate = 21583.13 msg/sec, count=12973491, time=601.094, (average) msg size=800, bandwidth=16861.82 kB/sec
    average rate = 20738.39 msg/sec, count=37344765, time=1800.75, (average) msg size=800, bandwidth=16201.87 kB/sec
    m5zn.xlargeaverage rate = 37514.29 msg/sec, count=22530855, time=600.594, (average) msg size=800, bandwidth=29308.04 kB/sec
    average rate = 37549.86 msg/sec, count=22552210, time=600.594, (average) msg size=800, bandwidth=29335.83 kB/sec
    average rate = 35329.28 msg/sec, count=63619825, time=1800.77, (average) msg size=800, bandwidth=27601.00 kB/sec
    m5zn.2xlargeaverage rate = 98580.10 msg/sec, count=59157495, time=600.096, (average) msg size=800, bandwidth=77015.70 kB/sec
    average rate = 99463.10 msg/sec, count=59687310, time=600.095, (average) msg size=800, bandwidth=77705.55 kB/sec
    average rate = 84733.71 msg/sec, count=152542466, time=1800.26, (average) msg size=800, bandwidth=66198.21 kB/sec
    +

    Guidance on sizing hardware

    +
      +
    • Though vCPU (hyper threading) was used, syslog processing is a CPU intensive task and oversubscription (sharing) of resources is not advised
    • +
    • The size of the instance must be larger than the absolute peek to prevent data loss; most sources can not buffer during times of congestion
    • +
    • CPU Speed is critical; slower or faster CPUs will impact throughput
    • +
    • Not all sources are equal in resource utilization. Well-formed “legacy BSD” syslog messages were used in this test, but many sources are not syslog compliant and will require additional resources to process.
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/resources/docker-compose.yml b/3.4.1/resources/docker-compose.yml new file mode 100644 index 0000000000..e836ba6327 --- /dev/null +++ b/3.4.1/resources/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.7" +services: + sc4s: + image: ghcr.io/splunk/splunk-connect-for-syslog/container3:latest + ports: + - target: 514 + published: 514 + protocol: tcp + - target: 514 + published: 514 + protocol: udp + - target: 601 + published: 601 + protocol: tcp + - target: 6514 + published: 6514 + protocol: tcp + env_file: + - /opt/sc4s/env_file + volumes: + - /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z + - splunk-sc4s-var:/var/lib/syslog-ng +# Uncomment the following line if local disk archiving is desired +# - /opt/sc4s/archive:/var/lib/syslog-ng/archive:z +# Map location of TLS custom TLS +# - /opt/sc4s/tls:/etc/syslog-ng/tls:z + +volumes: + splunk-sc4s-var: \ No newline at end of file diff --git a/3.4.1/resources/docker/sc4s.service b/3.4.1/resources/docker/sc4s.service new file mode 100644 index 0000000000..3e960be40f --- /dev/null +++ b/3.4.1/resources/docker/sc4s.service @@ -0,0 +1,44 @@ +[Unit] +Description=SC4S Container +Wants=NetworkManager.service network-online.target docker.service +After=NetworkManager.service network-online.target docker.service +Requires=docker.service + +[Install] +WantedBy=multi-user.target + +[Service] +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest" + +# Required mount point for syslog-ng persist data (including disk buffer) +Environment="SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng" + +# Optional mount point for local overrides and configurations; see notes in docs +Environment="SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z" + +# Optional mount point for local disk archive (EWMM output) files +Environment="SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z" + +# Map location of TLS custom TLS +Environment="SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z" + +TimeoutStartSec=0 + +ExecStartPre=/usr/bin/docker pull $SC4S_IMAGE + +# Note: /usr/bin/bash will not be valid path for all OS +# when startup fails on running bash check if the path is correct +ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)" + +ExecStart=/usr/bin/docker run \ + -e "SC4S_CONTAINER_HOST=${SC4SHOST}" \ + -v "$SC4S_PERSIST_MOUNT" \ + -v "$SC4S_LOCAL_MOUNT" \ + -v "$SC4S_ARCHIVE_MOUNT" \ + -v "$SC4S_TLS_MOUNT" \ + --env-file=/opt/sc4s/env_file \ + --network host \ + --name SC4S \ + --rm $SC4S_IMAGE + +Restart=on-abnormal \ No newline at end of file diff --git a/3.4.1/resources/env_file b/3.4.1/resources/env_file new file mode 100644 index 0000000000..d3d837fdf7 --- /dev/null +++ b/3.4.1/resources/env_file @@ -0,0 +1,4 @@ +SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088 +SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx +#Uncomment the following line if using untrusted SSL certificates +#SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no \ No newline at end of file diff --git a/3.4.1/resources/images/parser_dev_basic_output.png b/3.4.1/resources/images/parser_dev_basic_output.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0a9e7fe55dad2b1b14e8fcb810d23891fb6a42 GIT binary patch literal 206546 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
  • oqk^LA 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

    W!vht}24l=JE-43GR2$ylRa(k4V##j~6(f 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%0AaX61Z_|U`FZ#&dioaVSfavZtENtnD? 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

  • k+cX!5(E%4C7WUM_)MKb}%FLjx8^A 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

    ^fK1QJBZ9X_oP^ZnIve8Gi+W`~a_ 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%0D-042nN9sX#l2n^b;fH$j@d&fP7>X>2 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

    )Ni()?>j(hJR_yZ{huYg?T~@VXBie*W5#@jt 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

    bl=kN^_TKB=`5GcG-sIQRL;I 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%0AIV+=u6x5aOm_UeCc74*Ni%f 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

    kQDZbSo@xXiyRH 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

    +`sSK!h^)I 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

    ?*dfF{sg@(1 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 {oq4BhiyW#nf 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

    M9@0a37uuvD{c9NJjE#abD5LXYqouoNS|I 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�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

    H|p1|8R?lyrNUYHvMES2 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 z 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 1XHwbB*UO&6dc79koI`d>a%1-`V=hv2CU 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≺n!Pp!Iop`Gu5GUO26#Px4%tq z{9_0(sv(v^}H;1DrhlK3pe`a|GZ@Z_B21gf_TL;58Dl7leOch@$wJH=)&Fw};sJxXQr(PqyklB}#H4Ul<$$@0GucpUlStmZiYhp3Oj#9S_ zv-iss?^-KaLlNGQw++mLr6?J^T8;SGt<*N5B(l{5}v9lY-81@9M9skrhu4k84JuDdYWN>w#lY9^-2k(mXNOsQ|OS7YJdI zK}w?p^;|#bRf>~rl?-=`-1~-ivciC3ywbd*5VG? zm#!>yhU;F>-fc~a|I zKsejMOu4v*Nlx{b

    72}I@ykl5YR8BA%TGHPhYc;wPR($~hq#UH zA52fe{Le04jrw9_%qx2jB(TOizT^V^urp^Xn7%UHzA6!}%wv7}?%&N9Gk-UH; zRXwKt5OzqxTvJ(Ze7(#pYGUp_P59$4xyVDKbxZdD_Z8f8LE(ZwCcqw7@A>~e`WrOY z^nCr3mHDbHNwG=D=z6L|f_CzS`1+V%J`XtW?pQT}pm_bYBJPVMb%k?2S^^M?>R!H} z#8ftwW%PBcBTJ)QT;N>jJKxCKhIeK<%&_6&7DF~kX3Rc%og2i~kAlf2J%{bq%nm3Q zS*c16t4OVHaw43$4W8WNgtcR8R+Z@8&258nfbmn25i#&v(Eq zg-nUv_A#NEb_FerI83O>9db4w8#Z65t{~|S_YuE$)mL7xbt5jm*WA#hV3E3EzFwT7 z#=O^!zppdA7Y3qn>E-(yD6B}mcy|``V5=@`_Jael6vviwlN{y+j#abg#Vq^~_q<%_ zv?%BN(4C3mZ0u^_J8*4?SAq11uose|cMg&oX# z_1Gq7MicQ4^qM+X99*JCKN8AXbSuKFXP|nQ<{Cj)wnEP2Hl3~WnnR{RDcdA=qZ!(R z>0fO2E`MxkBkx!NqkYmOdcDqplIOK<(R(T2<*P|F{hlN5-FlSA$T{+0a-oQ_9zZB? zZ{l3!a*8CJ#iQZxow3DpJZ~(CjZH5ej3^GI(B|eo(!w0M<0GjOIy>0>)>2#=G&Etl zhGQ#tK(v zDsl71=Dy861|xlSBVCPQz-Pp8m(kdfr$ssDYrBPf*=zu+Iil?ICzb=etGcfd z#fG$yW4DdjA+({e-Rx-lw>>6|h#<_XB9U{GiYM%r{sYtFr#%|~+Jn}2wQsu+r`W(< zRw#0<_3(8wANCymu-NJ*Lx9Igqf;Q8kQ1WEZT~Xp%3wEffQO@L7#>b)*ZMZps6*Lh z7~JOiRnG&@k#!^U9=$_rve`XmheXAt4l~5-KOG>e{=3~p4ltf}$2sndhfP$6Z6iK_ z*>A_r2?u`fT7T2dcoW949k=@0l@sA|mhBKG^2Tge_|1wZSK>Wub@tB`8_zk@+HBU0 z>E_3=Fh@7si4|3d>6_I0_RxWXS3rG=Y3O$OqW@&s7ztuds9x%~%k@k6QPrx4y(#i# zb8D;*M=WhIHcy(<{<8VeykN6(d`3}6`Yq+PY1nGsf!qMivB0$~n!r+DPh-0sZ>xyo zTsmXsDLh^L+C!%?Q)I+EdntPbeUV7WXqtOM?bF|28IBcjfgg-+q9)61aw4|_nqWhL zfsEjMgiCR_=>D+39M=%MXudf%^nvyt2oui*cUNGmw1oy! z(xp`}OLSkmx@9g+NJPO*UiMilDl3?2^Y(b#%(xl5#_O;z8@xQE5+K$#6H-!~yoWa! z=JZm}#)rbsdTxeJ=NXcVSdql9k2KF&r)w^&mtNv^hf}}BUl=o;4x{xY=rM15w!p&HGgp?;iIj-t!N9fBR<#|{seIjNv+sJ- zeO%@q4?D?-p2*eJEAjAo5`6|6ht>kd~VajO4P{LJ(B_tp*1oW01i+N-3 zxt7^6%D!P5&~VzJgT^sMiEs>}5EBmK(9L zQ4t;0d!(2t8Y7v^=8q>Xd~+&(if?9L;K#&ohVCF4kB;F$Bx=7wB@4&5VchcUJ(Nvc zPn`3-j2MJX`zq!bQATYZFBtBy>Btcky$LicSem>JRHkA!`2PE?J`6?~+k#AqbzO^^ z_s4ZPUE%>5A)AA+6=qci%4^}zoEuAHb-`s#d@J~SKG*(bMT19`gZezB$h7T-4<)=e zogSsxv&nHQ8aSwk?00YIF(vHrGYu#WWKZr$QXzHXo};k<>d~)E85i;wN8o)|iUs`b zGCH5dmcrCV@Aw}L-~p6G&qB;(gkpd1A@k9Qx`QNd+Gi7`AqOHBnlxmm$@jU-ayiWW@)1uaC3KPb zA6-56Gz20~-m^^sI~^m4K|pQ75GAMx>STt%ixUsijddUvCkW4i)Te9Yx(~7_y4mhd;mQc zw!RBd*%rM&4xmWfJXY=xOPQp|B?G~asP}vuYOG8#zqICBmkeecYyyeI{oF6-8U+M= zWUeTd<#nkQfkIYWJ2ip`jk6lThT;BQB0ArJ(xd(#c7VAVda)URz_e_a)3(c@alHjC zfWP@vyO_X9lv)qre){R20%@Sw8fg+2i7;L)tG)&_Ot8TY6F^Ca`vg!fEN2O=C0R6Y z@cT0s3nY^*twVv|DERlVKB0bny<%^>LNS|9AAO%cKBK~Y^w_m!DKL0UizG>|o1BHsGHh#&=+Lsh!^o=3!}pkJ4#dsWb`ckM@xY=dSb{OsDKj%QrUx zMs>nyonin_;V>4w#*lC;F~ec)nf7)= z?+p^4mWvUd*+mfnD}Q;>_F!omanb`lauXdiJ;Jjy@hx|)Cbcu8_;HQ(4WOK{p zPty#1-s3uPrD$7ZWO3#qB!=7Q_knal{c^6a+#2^*IdSS(uxk|1E+QRi&sa_a+{09{ z?+pHT`V8T`?3>b@s#ax(?lNlEb@dFk9jaj7>peGx&LqfEg-HV-Im;xrC#`D?xS_d z!BQ&Z1B49zVt76Ik63({evEiv4HOhYxMcl0?HFB@A{Z-ZMJk+36dHjt2ZJgQ_&|K( zzaWs%Gtf33zPSXNBq=V(szN;L#d=pQezobL27o+6MOxOUl;p3y27Dpl1nR_;MA#@e zzIoAO$>qR@FUWxteyLy7bOyBIM{>8j)k@TS?(N#GYBxWIGWT&So# zeIzu@Xev&OT#yg5bks|=R}T<1Pm1-X@aPgMi`ZBF1^?J7-C|-J#bgPNpJoeP)3qVa z$a`z5VLb4)z%x^`#9-gFK4YC%DE#Ibz}BA&BplNM+nqS@!T-rCpin)|MbqVw)1_5k zykhjt`X?YlQ*DeD|S@Y?Sw}_UunUy*0yt%G2s|6YuE zvv;L)snV{YUMOAJx=vVVD&(Knw76j+yT)qVPfK@&eGqvbzW4)cGiWyEVa9FwG;aZP zfw(5DUGw6;3B3hBv7U+8;p|L}RlDl?0v9VJ(hE97a`YTYCiyS-NqG&8^#S3wAADFO zG)YlxSC(KM6?`@>L`n%kj)VVibMszf*asHoPV zWchM@cS$M}=$Ay&Bm!&@CC@hZT~|Na-zB!k>LwbJnRye`2*=fhLS6 zT-`0qWxbB#QKE)TDN$kTEg$w88(X$LhwDQB6YoPp&i_od2Lv7C&IuaB)s#pIm5NL! z$3fuTx3AR9S{pI}DqLmo`L*?8lHgo$uj)295+VhWhrDh8DS?7M0whUG!@+i0ABnbp zNn@C#D9$h=^)x&sPHCBx313!NhOXVsl(jgHx}mO3=;bGA&XvMhG1 zL(a@P3_h=f6;Dfq* zLnY4UeXqyqW6#dl@>jR3=j^t6{X@pW!?-Gk`tk=vg~sqseIxv!B2wrU%`Q{wU;cDcI|^wh!(XP00Tq%g7C63l(uKv1*AeI|)yZ6hkK7jVth$J4Ub5Lfvq8Wg1 zz|I8da`7}gMr~fZB{MR;rBu(4zL^YZXOw0cl`jQ$-d8rd^}j?7HIgG*A<>tJ1>Vlz zYhAb+nZXR$dTl>(Hv}YywtT>xxopDhWQRvS8z0hC2? z=#|>Dj@8up^0!Hq=GJ*~Xs3~PPh+*qbuDsGddT5g=YLTjH@i_wHO?!>4D07ZN64JM z-+e}(l=iM|^#RF3!pRK+oEhDXCK#5xr6s%dultLzxKp%0*8ajW6k5G-v9nn#w`WLs#^cq!0@1t}o5ieyurm5>zo>sUTVL8uy@&UgUxfEwJ#>rIr8Wh}sqLkEr!w z0JNY8UIeSZ0(%+wWKva1_S4TGu0$yY$)AY@UCTJ(^`VaTI_Cj5=&e6V{!^?=kMtf2Vvxq<+Z#PzP$MInM~>S zlhqOY=u7aQT!Xjzj>haOaCUEejT&*cYT;l3ojRYf~!GL&8pl!2VSr zidNLj3>sLvTACg`fh30vd>Y*ON`9FnTCDgPqU16MQ@N0pr2C9+O zipwGi1jmmmnn)clNULZrB%AJgWoVozgL<`5lm9$x2N*9p6>qb^8)8voTB}L&`Cg@O zlibvkBI<@mO51(0uDrJV2j65>hx^{KvB=K!X8GgFH~O${b3^j9(FUy}#+oRq{!(!_ z5`8mz)vYr@4<~|`9wGltTrE8|xrkMdlI=BaA_U59FVS|Frf6GbzO?^=)%Hvt)c-~N z{IEg7H=v#ylvb0I6^9Ry6cGljr%Uml2Ru)24*KsE%$fM6I151NzK0~uc?fOEoemR+h*(fbcYZv2B;_aPN zN673ek+n6s&XMJZ(18L5lKk9D~*nbHhcLxCtS73ZidvNPINrg?yMTw^WTKr3M2UL)f?{Ecl z76|#;rAUx`%C^D&m9JCVi%RX@FzY912oF$qumO!dgy}Tn zAZ>YTrI?XA#buq~khbP-^AxOZ4pA~e;%w1~oTv3|lC5T`PGfSGe6m4b^Qj&nRc*?< z<7mPdG{b$IxJK7vlB^5tpC{A}P-p5^>YKK-F@lDIw*>PD)qOd^k}$mh?<-6^c<8ngDsSL=)Ucd$!^OK-1TQ{`k45$LkbV_Or<-F!N%6T5m8$ao zUB<`m=-s(!S^pI6@AH{MxeYf(Fr_=sj14nG=f~Xdii_K>4Zp(=9hMX9X^CT>nbY0ex;Tug4T&9Rc|DncZmjzC?oP>7-+=4%|(ql>Yb$q>8{fGnlw2 zx%w7v)*w<4M+yvSFO-XX5w8EVw}oc}gr^hacKUQt@(&A4pUQs=pE>wV&TIRoW;UDC ztIy33U4U<0(Js}BjLU@YuZ=dW`MZ#(O)R*ZsD=ywg{ik+8^k6#EqmWxcvqU%fCbh7 zrtBSF!r?>8=e4A3mp4%~6YgnW;_`EygdRfu7M`=Z!t zI`j~ubHj=$_F;PQiFfJ17ZK?b9E-m$eZA8Pjy3IF$uo+4vnOa_Tq-*zwXq=;@wT&o zGx4|-atX<(bH#mbNpXfJj>(>xe2HNj#9TxCdUDr6v%cEb@zW2gj)Hd%GOh$C$LT5P z%x)qcZW_w#dDlPm(5RsAh#5jRSg?u;dHc*V=EbYlW*;GLRTC4Iw7p9uGAUbA?bUyVAEi zobU$jWb2uk8KW4Gf;sFq0FxoqUQlP)CbA|WgG5@;Eah7I`@ zUB`Tm`heT;DmSHHvCLGMQZ%RnPR?QNFTQHJru6z3h%LuDUv3s6y< zUYrH%Wnb0Xp60|8M_>?94tNWU%9AUtGF(bGc=V~;ARX9=oN!XNIAWm`hF!W=i9V}> z0*}F!br0&~>ncbilmOc}R9F`?saSt5m~q?CoY#bp@6~O4-z*Btc#-T465quKr6jDz zzfDe`I9%+bst1$14?Fm$NwUQ`CoMeK9s^wnGf8eW2i4NB)5=RKB43D zB};3=7oYv;XQwmm7}v(H=T~cOgotBkvqf8Fmr9J>oBe@6TbFb3_Fx8=o@vf7a=$&c zUR`^c#J2V#wGSPBp>Hb~K)P>TCD^*{+Ote|)7PpN(W&3kHYfkQ2cNDJ2iL8=JJwbe zdb6J?!_0pPc=9HGryQ_&Z7MEB5Is4X0Qyr$F|1mIzhjbFSJ~@RjqZth5{&-&CATvu zwfaTc)lAU0-G5BtT5#(@z=bFco9vn!wMe~TB&tkE(xR}fTb&{L#guE^DF|E1hmO8U(D9tyNG(XBxJgHzGgX5l`#0`8z>C%{`sq(HnE@GYWsTW(m%bW6=MNmzPrfspvx^KnWU{q{h)l~if5S0eq#2?2?0BD2DztcZWUHt}0Z^YjNA@SjO z$1P9jZUWn{&Z4u`Q?+_Jli_guz^+DInGMT?5C{VKdZ2Rj?tB!A3>$-8PE|8*3 zBBj+IIYNQt_2TZXIvgdTt$EM@!H+9gc$Gf|p$(#QNXLlhek%9Z_k91Tv$MYqGZ`c9vy# z{ES}MY>|#(_mk&o7oNE$+@WmFa0AqcgAHfB7|#8oFo-EcYMVi_u{0``2VyZ;h#2J3 zd(6KtsKT!#B0n_9c?r6Z*A7Lm9zgk9DlDfs{gyk=vf2V&UNZxdT5+v zhUmUmmZZzp|1d*3FwEY(wkvuV)BX7iAAXteRjDASJn-YS?3y9EmJHZQBe~}L=C53cq&Jm zdAZXs^jzYL6LPJukm6v2Jsjk^xYyLmZHnFC%QkHawA6$L>36Q1xuV%e^;Y{&NgW*K zLDG3TCk>T76%1I{E4Jp$_kFU9EMvMbJdJhKlN+WZ8UDp6fmy%OLOn+D-3$rMR%gVJ zh?gNWI;(ChTq9~_qtM(%f)$9hUJQXlVlkYGK>GE$jymixn_mvUz(+#5?7;amot z_L?uw0;g^?=SlCap<+Y!L?_X;OvX^fbB6@gPqoP>X|PH7I>PjYD-MG}jw(N0?4G0) z@2>NDDUzaQhjF9Ti`M~J5)Cs$AKx2_uwGfX@tTNq?*h|)nw0c|h zILSCKp8s@O@f=kgBPe4SWiKUOYtU5r8~zFCP&N&^i(N(+8^_r*x=&0cv3n5iylSg^ z(}ku;F-P88OoWS8+DtNw^JX&Y`ghp0wz!}cuL#|5$nDg%zG00X70VWl6csfRy1EOw zsj);ci|WX`3h%c)9oOKy`(*X2xEy9WRAWi2i|&CupMhEw)+puR1H|g6iQhrr3-0`a7t{pXjjPJxvl2~* zITHI_fuKa**n7o;iVSQoQdU6_y{?IOa< zj8xE{aKjhhPB|5r`N?I%4&Ux}*=g@y=b4?_`<;%3@-)zosy5=$iP zxB2$3mt8lKjZr}tE26<6X03*kKbls-u`KB;Q?Xv^J7!|HA~B-`*UTpD>CuEj%nnISt~b#hyG9Al z%T0AMFDP8~Gu`bj=5>RcclodsS6>37u=h$lIsOP zv`%dd{ca0M+ME1uTw)>*O^+A}oyN=H4}#(Vw{AcI+2#+?7lro`r(pL0F(K@Zo%aQK zivp{e3m@%LE+|RtdwlvNYu;f$RNfcBC1?!DqBIS&?q|&pTfx6}~ zVJ9KExWC{B&;oBGHI{@%5r{bno_=?bHAw40N z|J9otZopIcA?d(g@hSO-_6$R_vv0OK6AU`vg>Q?s+G^V!pKcO6ohtMa2zOoNhLIB2 z@CK>^aw$)?I4gB~yJ~x&G`uQ*x0|v{dMts25M)@>>O)@&K2#fyZKhPX7A#!Eo(@iY zH0aZ(9K+kex)4KARQI9vC6X0VT>Qn89s1-Zaq}}e6rOcr zu~A~Mnv#YB$B$^?pD=X*B2qLVMB&x{W9>b|+3f$g|6fs~HLEphBtdDfnpJy`qL-r8 zWh+WrB1X(2YR9HpqgHpTs8xFvK@?F{#0){~5g~%$f9Coh_p|%aee_u$^f+3H^Zb54 zpZ9oGJjsYeY>zz41pT`$v+kQ^OSw=V)2OAF5)R<%1@^JbC)qBcJLc0lSJlKu5f>q( zl1*A~gzFt+ptu+2S?(m)|Fmcmn6p_})Mg}1#WciVyW4z=ida>bl8%q-`}v??X%$x4 z^){w_bJpt*@atxjYo8a-?c@L<3!<_MO|?%GIuYCzh{ui}(z~1PxK6JRk6dt|oOP)# zJ9mwjR^in|fk=s6wLYA4?FUJ(Y0&%9;<(K@A9aiRlsEV036>oV*=YpxT}8Oy6@X_r zl{{Wq#w|zCeNs|bhkDuHh}TlCBx){d1#3*?hKZ~wHag$jAedi&!U+u+NvL);+aEY{ z&f?&bdElYNNZzJl9R+@6Kd;@J*^5oXWwlQe#r2X!!4*}(T&>RdU%t9< z=QeH5V|#IP*MhUbe4hvpN(Sjak2u$+Pijb#U2U8dV^>GZQ5#!F*AtmyXxw_Ape+pR zuXr_#ba%e_?A>EhqSxy50Y&4YZBN`_efZxwYh{76cIAnIK=l7)^|_@Qd9>{g$45om z85qv;`!Jm1803s#;W_2Ra3@wHf|ee|Xb^M`6*%Tf`@;axo8WZBySraDN zg6X3AtfInyJ$m#wO$R?ulCq)qw_=CguLghKuhR?n*as7WXN^O9+d*w8UTWV2FyCDt zUnT?8btG$0A1{QxBB5T{f&fU8KvD6_e$?%evBl9F=euI-=~}rlJo_X`Fhqg76vO4r z*Od4CY5aWw-v84DpgHb&)miM!TwHnDm;So=m#n$-G1UIzdOsCMSZ|M}7x`^zq?*$| z;Y^k*3Xd|rBxtD_8XB=maWaT8-0)!U@a(ja_~XaZFUTlLtLqcYrC}5S3V8NET@6ni zl=sc;V7)%=dJMJ!8-PnFCHQ6Zjx>{Ql@kR)uOU4$c6k#%*_uK^&4xK8{$Uu$ zA2#EK$hs&`^EE-jb>&MTcShR2n6|bTZ=cTZvhbtP6OuH_IozB}xQ}mXxL33| zvFFsl_U~}3h%1?0sS9)kt8KV};&sM{@Ge!WPaBfO_C}#Hu;ePOtG01JpvTo`M)CnZ zDM~~QCi0(#);bt^&bJWg&p4d3TP*%N66c~^#7UJnr@)ziB83^^S+$~h^xA}9sOv|v ze*9f9(@~}W>kG%*HfdE^&I^TF+an zvz;xR`OWrb!|e1|wV8QV&u z&a?HPY}wwSNZ*|t5B+awHKIM45~BTsF2+$c=iH>b7G;^|#M%ksh;Qc7Epn#7uhdel z*W!-SS~<6z;~8^;JfDlpgeEt2E8k~c)O=b?szqLr)5Ro2TQirJV5lbW_LkwpikzB_ zUgsooQ`M}W;^bJ)Vxk;OOq-XBIphjaT)%K0t}1lZ$p)4K&710sTE14BsXc~{5^3rC zOdaddJSc!7Vr3e;+@*7gq01io+6ZMMH36L#S82n1T4!yrV!(d7X1-@XqI9~kw+gvI z6)3Ba2p_&edM|^|2712SPKXW;6=vRWQJlib8KQ4{U_HFAWwxkPDK}_zf8I2S(A_>6 zpI)BCvHupw8#z5Hn`?x}g_mfq1EQ;q(DhDKeeXs2 z&ntFa;>dM$XG&00RatYr+ROG-G4s`5>N6QzmIW7!t*TmoLPJYsXlN(S@>e>(=;?@$ zffep@4?3^Zp)2Z+fZopq)l+##^N$EUVSeNLE|WxdUPQotuOkxIeU=|t1>YaYD^i3q zeLoQWrwsj<1dM6cU$=mx8Z49_sn4j3@c9vmt+P$ww%jc6DiXhqGHI*bKeQ_go7O7x z_>8R8uPf)*gRXHq)}hqIB4=%-<0HPbYj{Uryn<*dvYj47<<}q4)<6E8bP9HdWGnjdb3;>s%0pO1Qf8pE7OYX{|SX~k737fjg;CQc5* zcJNa(h=>lvn5qg+wQ`^ zzg^X`1xb2B>n^>Alhaj+>oi%{%@;~<_b6F)=7?=2+%T12xo7^FU*qG% z(|Y>#RRR4*kSzawb^xXb`$Kv=U$EiallQbxyEot|{_n_M>5%f9zv_>c8e}S9yeuV$ zM$hH5{5^@A1$)2U#-MVW&VU|<$-W`U^Q5nZ*TDRLlZi+5W?dp0Rh|PpZqyb{y{lo+ zklsaHzZG$F{}a6CLZN_kYjQ$o;g0J7f=MpXZO-3bc)9gkb3>>_Q+=67VGY@?)T1`5 z!L@`2g!h~=TF4HV9HshZ>&N^Z!0xY%4`>{y=nDV{@!=Msh^aPhuLQ{M#)L0a4hgk= zTByDmj6Krr&O-9&cN)XG3j$aaf$m|iobW2Z&h5BycBSS*fSb;^EFS8}^bC>fIzjTu z(wR7*)(Ef45|6u~WQf~mF`y*9zAU#Y)Uw+cJCmjf;PHZ)ptjzNc3M7So;5bMt)*O&?DhLdGivPgci^ zh5|%Q59V8n99RF!aEk>ou*fWFW^ai_dOK$N`}ZoxnWp_1l}}zg`pF@T1U0}TQci4W0M|@p2`7-nW{CN zjk(E4yljDHUTEKFL;d)@fxYx>7v-aXf-uV1es{(z9`#vb#( z^ZBJnN09ITs?U0Bn529C#o`WGbWneVld|F0>`0Aqw6dRJ;1`fuS35m$SSb-}h9rk= z)WUN2{5=Up;)gcFn69%{<>!l;VyFBKy0CsFbH-g`L+>d7Y(EYWqMwxb`K z+iYN89G7^s-y^Qj4V}))+YYlnX(#qgU%H4J#J+lm1d=kquhXY6*f)>H5>veEkpq6;&qi|A16_8! z-nJ0|n7ToSjbmzm6kyv^2Y;oFAWGaDIATyNK&jrb2P>PHeEbtIp6#0W8}Q3M#CTD! zqL3lyL6G_2B0v32W>o%0w&wT7qm8vL>PT$y5fgd-a71C`_Q8_}XG7v|h_gb9iPM(>xo@ZFw- z-Hx3tbDLk%0qVtxK;3%BF|ZYAz5tQVCFy}f=x6}+rIZtD>WKgzM+~oZ7FM+*Uds{; z+vhHBS>Dw6B-_-NgUq#(35)f2c5`&PN>->!un*jQTJ>F{RZ6s`vlj~cN}jSm`Us?c z+wM4^^lrkc`uzvi%FCKf6{IRUv~`FJ`uq*Q{>wQ~CHY3*X5waYm;@LkbS)7D>g3N zm6)FtF9{TAR2YKRtje7_nE9CW^vd6yuegz%QX%!eD@oAoU3`43{KX4VXHd_t-?;Pg zU8KFPZi&geuFULPuaTjf_{=%LBy-ZxYcROiQQ?LSDO{8-7WP;VBSp-Oom_V(DA(5a zgC&rF^dqQk=dIf z@YM>m1_R&C9zSvj4h;CI_-(rV`aO0(qhT%_HeS^-rXqFZ{JT(FVC?-wjpxMi#M6_W z&qwDSt4F9uN_+HAQMIsS)GJi2E2%%&Dy0m6*?X z^!5jSIuC$_L`b;$%_?-s05ooX?~LGrC?Ei2C;sy7xs=7;o?#VfIzA>BHc#Ik265}* zj)*F)^>tK2Vz&&`8wW7jm?4IFDA5A)fKE7xPR50rT=cWvgj9qB74H5%z*-NfF~(+& zkpx0E5BX3Qke602p0otfBcb?U6A7-MAB?da!FuERw1YLMPNS}0eH#b7T=!rscrl+J z<>%W^`IzOPzLii`ye2RwuD@arVB0&*fvWks9y9ngcOv}(A-qeJwE^>06p7;MhVnPA zhw49Spl$c^(>Lg~yiE_rOhE5`)9J8pb#}kTXbBPS6t}TOBx&uEhRcxtK4Y#~H-;NZ zRRe%Obkg0x5m90Kt*YyB^moYn6FT4*WzgiC@`h2a?kl<9-QK>)k@CV+RZM;Rf+XdN zV@)Z~^R(Ecu-UVY0@dAFYd!u^))%=AV1hq2LIbA!M^A5O96VZ7EZpz=q8DPF{MDbl zkNMWTGnk6>n_(#2McbiossFJ;MZwuaz5=W=`f4zO(Q(UaAd^Jz?2OXPY528APfxA!hV-a7uBlL{ z%vY<67DkO2%Fr%4MT!S&7Zy{FKGZ~JG_5smwz%NiD8T+g*e9l>{%2;jX!ayfx(*7i z*j#9vcD5@=uG7EYJKfmZs|#eh#}#b9Em(A?1R0oyNiIIw4Sf`- z_7L+L8+>?2dIU))R#45nThvtkun1vU7gdF}Ek++WTgNQ8h3#M)$gtK z)cY_}TcBgzD69e6DG~{x&H`S-FIn{93}foi9zNU$tF|buy%oX5o}0T2?Jjs=J28S4 zRf=QJ@m~u9q-8=z3!12f_}w+SAEL;GRFZJl{FZuYsSa_+iX6lt`wj75bikB-x~P>J1|M1@59 zx|b$ew6}ETo0`RYo%L*-&R=|{<<3Wli1}@w4`$Y5e0o-oad3fN*8nDg`M{G9$0@*_ zA`-2Ej-_uKqlC}tGgO}cZDPW~ssS;Ah>MAXH^3ucgJ1Dmx?HxSv0xK08e#-y5p&u) zb!U}Mc!_2=yv}qcnuDCyk@l54jJphT>*X7SWTJqvZV2EyYOVup{HusZu^(c7Ebz%1 zeq01t4|AVn@R)xgH-P0KSL%|;zaz)x#TJQFf8cc*QeyD(g^=MnCeQ~d1Od8}t+KZ~ zV0GY<$mJ*cZ0YSp{G)Ai?m}(AR?PWgXv4#h|ARJK!Q;=V?W-k|0dZ++ht6TJXAk*9 zHkD79~Tz^*9H@XQ!e1OS>ZSnXpk6;vOJK$}xCq>rp zM*6ju-b5MYp|UaWLmj#>G&F;dl0RU(ySta2XcZ5r@BzPXN+sLH?*f;HEs8A;9fe6W zj47$h0aN~4MG54bmGk*Q*cq|_1)<1-fI5ikL{_DiXzc#EYn;5LhV*iin;Wa`xfGdu z5n!AYs)p)CMwbeUU4m%S0TaSj;~D@E8^mfsk5`os1nw%BnuME}ZFd=AnUt5Sv*=V2 z&(Gb|w-b_rPru7pIs?vQ$1e^#!^`;Yu@wQGxWz>C(YL;bOh&(~zS zb#{WyKNK}RmeLZZz4LZX+6O7d{6a2#zc&hed2_|sUUT7!g`nzJ5ooc^3C38v@}pu} zK8x0pULqr>>Z5r(GjcpGgGtm+{G|@1B2|RR4$9p+?{ziuf5AAXxMa;Q8v0Vc#aaWY zf?oJF_a5I|;pDbz9V}Aqq3w2A0giMSd3|NCy~VdnY`Um)N%z)$pkgimX@8;@RwcTD zkxSE?1~0nX%2i(HyDoj-)c2jgo9f=Y;nDbjGe^r{xMwxVhms|est{r)vdyL~;o`g} zy{K5na@FJaqROxONX@m{UpjmtI!zv~kdcMxOB#LLi~t1&=mFL zZ|EKsGHt{o{|-_rUvDL+bWCScv<~OUI=*#j1gh!bEVZAYg}C}RA67p40nBrnyCm&P zT6xVM=+X!|JkOfc_iZnhNHd zrxdQ#J{S!2Kdr|;%NESg#fLW3jf zt2f9%*FInjV1PuTq*k@}dn`CBFIS#>!9oDp`aQ|=v^Grwms(+bM#J!j&u4&4l3C?Z32SL- z=IXSo6u#L^+EZQM1sJSrK$gjR1*xDS|ro)erHDelkqlo(2$8A-%k(c}rAT^zf$ z^a63qkp-LZ3%j z4U66y7We%&LcP{@6)BJyly!FTtZ$C(c8S6KJs}i|o?@*X4T7`!8~vEDNj>`M=x?;> zD}1o7P*)^VXOkLQ6g$P4aBDf#m%Q}Kqk1D0fhfGF2Q!qv*Xk!XVWR0RFS$vHR)S3c zgxL}GL(vmzcWN+e{EE<9b_LF!5Jk&It91k#y2!6Vd1(j9-hD+bS==SW_^OJf#Cp3y=N*{KTy`s!Y6d2Y>Dm z-NzjHJlqsgxsZz`*}Ja?LbEi#s`{?sz#6&4apeH1)e4bi-6@at`=Xu#x8 z3VpJJn&>{{H&SsCOWYFN=d57J;UeiJYPMMzzML9GX<+z6B_V!6i=&lRpFufiuB3qx zVxiz~;EzG*1XhNuw3m?((2U;bKVoKU7j*y>QY^=2DB^A|4*fslZ1Lf`PR@AKZ`6pj z=v$Wq5GFfBElMXqp=w1^U6Kk-V3=zr5+>>xH)04Cytj2%aVOzIaHob&f9^WuI}lXA z^WLJ5X8g%uXdVsT+(atP+U#GM9IX-pD}tGIX#3t z6a6v+_no%)18XA|YaKelk9rm@TP?}_SUuVZNqnHCJoPT&L-hY*-qa0^Cr48(e6Otz zXf$ta2R*!M66z;@_$$#0aOIi8*9`ytzL*9Xj@u8N`YPS+E)s%yHZkJ;JvHsBllXuM zyxh|3;LrDlEFBBhn|^&tq8fxs^Wx)~&z$p-va7>67qj@$PSN)()ZXvJ%`lrj`(x~z zRp(@uCaOgYp6?i&o4n&P@>OI0hT-*9G{mt>i|{7=m54Ihjq_yqZP@j>s$Ew5vuR}KEjlZ}6TTEJ$%_kfHLbbhQc=)3cUL>gJp z+E!cBRI$QHV$6-+x(Q*aUf@-wSX>6MiceOC*#ZBpT%p$gRvJNpAM_iFG3A>xq4TLR;3R+ z%8hRay7h8YmNakf?apUdh*mF;c&HBxh0;N1VQFBVq$yc5V57mGWQViBs^H08QH5$hqY~zJ!=61nxuWZa|Hiy6J=WdbVvKrpL8^769o-N#< z(Ud{V-fURxMWtk2&t{}Q{~^iPqtDuJtBoZUe_#7Bxq?rbxMTpYDO*frjk#NPRR%^y$av9&?kM#IJCZwJ?{u z(hSmg)7W{8xl_~Fxh1(PN^V%n^H*?QVHm^+qnTyGMh&@rG+D33l}+u$`9(BENRR*r zNMPCwcLS%!TDe|=E*dc>QOF&driSKayBQfCFLdSX(-hGUdbI$(=hRQna7>UP433`w z*mo>fesesB0$44u^N*!6`yR+n~q6KP!Sc z3X>qq)6;{@3VmkzChGF~-z}q@-@0hAnfrE2Sq(-!HY}r3QP*Ss7tanYm>8i-?J+SE zAU)kwt3$;J6$=sYHgLbEm2-I2EM+P-%=FY~d+r!-e$DjcBD^?ac|yjLpDiZK+y@I=frIlpTWJ_%sT*^`Jf*7bCF9 z^p0SiPLRNjG_}sUZqX3-%JYrx*2#&7KNz`$p$P!kL8$#6b}n#y=}%>GA*hX45_@@f zG08x6XmPeUc!bogSvxA`yZl*79jY;%JS3&E-3C3pXOGMEesT2}my7W<>Gi##FL@rM zAzIfbHtp#VQotecu(qW#(R-cQG+Vq2;xyh$%hEx6FJ?@tcB`B_R?VGF`F?B+n1&en zpDptzJ~MVRdW@I`e-}6XSyYE^_y<&Fj~vva2btJuJS#0gp+zd<^~u&tUPJx;ny!Ku zjQfOQDwM<_<(!H-twyC=guoput-#WPA8s=I)yb;3$R3#X|ET@`a$sb6J;0tViTV$x zO8i&BVEqyQnjfG~&V-BxO9PWU)Gx{hTa-a;-T=uJwsc2|@{I--7Oy!l+ey9BSNTsM z?K{`JHOIa^B4u%pz3rFk6s*V-8iQv&5t+&J|MW#<-mupHr(8JeyGn%7^zgC~1J?)3 zleAOUiV%9q;J^c!J=@V zn!mMj(&eG*(8DYAwd3g8dchuFXtM4IemUaTL>S*G*z7W3yMUQhl|?bhUds{iW|ivvazBhK#- zG|QmyQWUL%z9FHHv`T#vc{wI8`d;KCgLhsvi}^?dI_3I&fYPQ(Fb2MbLJgW_u%^TN z3_hfLp{pLnG8wpqOz(fX&`ZBqNA%DKP*!ad8>XkdrD0pnI)*xivX9^51TxAFc&B!{ znYB<#CPpau$VCH*@v!v=528hI(YGay_CM;Vy9rH?MZ9{Dgwev}u?E32@1Auxkpb_4 z(|UM9)27j-aNIcRUbpsOWz?Q>9!Y$|4ZG=}#*VAK zX2{V}noitRX%`Hvn${|Njc(CGe?^I2cmLgD>}|7P>@3VYdWC@Ft4$=XS&}C3QKb)vrQ|Gg}Rx_GwLI-edmqu52nXh(Bs#>ko(T2gPX7 zpj?(Y>uZvGnAg!F!Hb{Ov7U{7;3_pP?$NZCKk4Hr5N${LY@>;fAqV&q#LqhQUMxFG z_iGK$AMReXEEk3P^{5IKWv~2wWeM0d&HP$OGW@6NGdD4J5 zsEMY}hL2|LzffLevt*5+lP@>X7W*;Gq# zAyP^sik0iCVs2fLC5_vHm}oND)M?rJDXIJ>RO1>>9|sE_520jg+Q*SmZgIn;wMvt*jtCWcwg6OE^eI+YgF=dymQ;n5InhWo{b>@>x6g~?lSNs-xZ zqA$9Dm?@s~cbr$WrlHY1yGl32VFfP@uWN|m9qj3c0gX6~%wrs}JE&75CR#he=*!_u zvo7L7MDafm?jrzyIE$I3Gx}n3O`YOZnT6^Nm-G$ix_OL+6?Vky`fy3u;^SW&-G5l# zEzpan^s+UG*)Gg&EYp}~j3VoOZ-cbQC%+81M3^pyg@T_h(w0ouh!{p+D@=_^5Y6z} z-Bh@}q4}$`6^*4lPuFPV0Z_He#y=4^oTqAxZtKJDpJlCy25tKTWj3iogvmEwYC4Vk z%+`}qKI+7qwcrxGwv$w2(k{X0*1*(fI@=g=W3A<=3qp$8rf$l#?@ z1j5PNs%+}(sD8U?iqSRJwIn<5wHL#4W7At6Ns~Sai zyAB-yS08=*r=x_~v1)6&ij?b?)=WZynhxW^g?p4f4@VYkijc(+PV-}gFk?AA58 zhI!eB(pNg~xCAG>F6$hP0Bcd6E1K0exWq2Q7N)|vz$OWZtC36nEUn>fD0piz<(;Y) zVWdp5scLm1JMdi7ciQJsJAq*1;~o5U%)B##ujoqkN~;L2(Kk7i9nng5|F_Q%9hdA} znPP#~&@rJIJf^@w?WSSB`X7>;AO5wg?)eBuO@?B@r=~~ttjfCuH--)uSLI;(p*22uxt;94VOl-V%4NYPx*i92cl>b`A!; z5A=&{AXxM`<9~a)nHZJxafR{(?;MR49*qTv@#-u Rp(=~k)jfK>ly#($DtfYsWY ze48su64Ps_A6j>UpEmU4ZMDJ(cPv>QcC^H0*Lo(yC?!xW4{jn(cPTnOJ3Wm0FIVM9 z+vBvnv~G0VZI@feX=6*do?TpO-r~aB{1fm+!cMt8o!fzl)sU*e6x zk$DZZSV7C|qX=}jRM_@eTf^_Bvh|PAZ#I{K{2X|`vXoPqSA7O+Q9B9YZo6?r(t{Cv zh4O{YFPs&8ARQVHY718k5&WF%$)#oDN(0-Zs$oLqN55{C3=xIz%*j_ss&=LDeOexU z*7wTeu{`?U;EK_ushS5m?hHjrkBLA#hV^IdLv!hQdNDK@(Qu#p=H{38DHjE7GRE(! z_+B!GAll`hjgbpB-v+IxA`f#4%b_ZWg+3J_RI&Ga(9?12Irej@&2O}qQob!&T;-#_ zPz%_EdGwR8=CrpN{lR8_vb8j0bH#^iBMZXmg)?s*?NHN{huC^+P~&R+fqq>81s%9M zpZ}v@E#-XD?Y>N{#I)4_qsPVypSrSK<_gI?*1t4>s97PJVKJ{`N9b<2$qTrH;YhE8 zja-Vy?}1ODJ&i$VF0P|st~(iy@&=W=8fi9!s{QCP_htGvgKCE0tp9i}MM9vB9oxn* zGIA~~C(BDlC)t{%ai(1~bV2Ne*4l$R(dGyq$dsRl_K_bX&i37FKWx9JWEu* zJAd-$@)V|mbrz1fL|f3&!6|}*M>jRsG~ce$Wdcs>NKTscHo<}h8h%vWEv$QeX4MFkvts3ili%W=L zxJ-l(s6J+FY#0+1KRg)mUf7bY{qz*8tcl@3C{Z!a{;BT&cFee4x!oSzMDd#NvtBcK z$(q7yUG6(1>bw-g@1W}UAF}C)^$F?;92d>vd#=6LH*envx3%GuyRhM*vf0LE&GeS7 z{&%C$8nFHOe6rQS1*+NKAeJY}HaziJ{+I=qGLw{imTrlLfC%CAzKb2AQ45P5d08BP4YBzN(#n}6K zGt>=R-f}IYK8S!G9=(l2-PGLq0`(XMf%<^l>-06ar&1P{Zk>qoj+Typ1T|+>BpROM znoMepxv>9mjV^0^k=ga?L+UwOdeQEL|JP~J@~7*81f>KxCLe1CCYN6+gpkJ!01b_W zFHR%?2P~y^z8ci)Tk2o4k;_b8BR^zc>n$6<@8LWJ=s8`#>B6LV9N`|>B#WY4X$@Du zp>GiRv;I-xz&WAq)tXx$hX2F_O$8L!4D%CSv)oMNLe;M1n(ec04602iNJ`c&Xwel7 zk9B_kTU?s?7cdJjF@#tS9f$3**&t|1!?N!(@mG{LN{_^!-k=n}emLhFgKSpW7afeFC86q4UEhId}ltiV{o2VwA_k5~qb07#!tj7B&ttSCS4M$C^?BW&YTx2%5 zXC2VmTn2_pIfsSVht;fI#eLMXs8?7hZ-mv!kIY#>X+imTUrE_|pW`38(@SS!S37``HMSFuM;48Cc;6M3-f(f0F^up$PKi=IPTkIG)ihZ~ zeWkFxU8U>9n7B>!Ota;Xh0~O#jSbF8hghfbWp>rg`R)hC%?)pR~Ew?w_}&pfDQ6a3?X2W0eO#NqH(O zaxpB>9=P;ZF?nc z;9f6wN*2Z+0EgWn>Ww=;k#OB&V>aeG^Ifjr=UzNAc~Z4;f77omk%KC3ICgc*nemS4 z(faoQ(=X~#MMxD3G0bazOUqD4S7^Og@VBGXc^Z9>&z(uV!~)Ip=>jge7sU9#LIf~X z6Mpol?u69{I{9sa5p>hL9mX77@Q+I4Pof<8YQ17gt#5 zaJ$v51GeU3zf?f#92w*HdN!2H%qGN>Z=ZUgzs+~nmi9&{*nVwo%-C12+eoY%{>vY+ zLZ4^#9+4*qUAC>_SUqhG+hJhA3a%{l`+ajR^e57;CWA_i%6@jR{F$r03SlYi*9z$6 zf@-cEIdh>(j>sczK(fbI39e@{6 zY|E7+PwQpw*#3_NF~bqpj}ATjDM~)v*o*Yq{-6!5l(478pR6vM_oGq^(Z|&fnx81f z$r5O{9gioRv+M%|nI5$IAZvH_?b+N`>_bsCCTP}NN{MP-8CGcVwGVoCY80#Pqk5S4 zk@6bRTkq7|u!XmzCF^t)9sfnO2I<5~`#pX#uVcl+dI6(ka>nF;66ollxbx51-`=P! zKTkUCbZQnOAjTZY)*cy*)>H>B#|cT0OVPKSo23j5J(lz=KMdJ${k~X8C=4!+7DcG= zBEe8dXZ`(qG!uVJkwgIQd`7UJ_|4epiX0Br3ZCDW2k62IjQutwYRhi2c{fy}!JONh|o0a#&1e+Ea z*|UbX3LP%QMO&D3qs+HrU0|*St_SnRoILA&{Y^^_#|5LL3pb^hK3LaUEilfSXvGiA z*-IDiV3ilHX2)MqsXy(4=#0Vigjav*>U=J62?`5xYjt)hF4ZI%m~&Sz^Ty?Uk%@Lw z1$U5)v5yFuT1eP@)c%h6Y=VJE!mG`ZuTJy2^9lh0HsWPs8bx=N`ZI&w&wn~#%T52& zyi4OZl^?V*W_efI%-p*cwZ#2deLhjiuj>KvhZQGvDONXFYUGFhG5UgL`lo&ukORg` z?frX1b0(MfZ5MBH^6j!|CuX65nO;sILe%?u+fo+N52gS@dSJ+~nj~NK7tl9%-Q%R- zG;xBw<}fkQpm`8;8ZT0Vg$jPq(qWP(|0=vyF*pA8J4d*d_uCGyQzA5CRMn5o zSUi7)IxlfTY^+t*P$5pg#3k?V$VM*T=~Zi%MJ0UL%_t+E2y^ zwW>=lqv{^cUSn98c))Dl9`5YMh|r?SlrN|xQV)i%brrJR|0J$j#H-AcX|kf52Z7}D z0wACJ0aW%)^aa=wyTkM_AIOr|*}CgCD1?NlfqKH0_SWBq9M?Q3RM-q1a)ZO3?0P`s zEe=YOTM0X8_=r_1?UmKCMDH_2ol>9Fpk;Q2>3xP`>m&^>oIGB=#dTdXa9E>t!A_cx z5vcB#NA$076;TKj?@?_X(=9;MEKbyQ1H%tlq`tqFN}T)#?bTeRdKRMC29?!%1={n} zuul~*@ee$QX6t1oRG;wP#a^v9b)+d-u#eB@mAQit<%6-WJvsu_aY==+Eeqr$OaLX; zHfoA*J>WjtN+qyCEt^wK9;jGrhLIXZo8cs2Bz{IM2&YC20M|J!Qm-J$gu;uTm(>=U z+e<<16W(6+2pd|4w6Hn4fh;?^2nHjcCT|+!={%%o;}63?_5)ro}4t88>oKsph?Kov{pd{ z3qfHDN$Bg6vPTM{h3wXa+1~{dMG%?(vWHda%}a@*_`!VtowlE~Qa(%g1jEAmL7nak z8ePkh%cdIYpN~U5mIoB~1~v!ZZ_GSFh60qP@L>)73&z#XwCWx&%q?Pt>$G$)o{URr zB8$XdetgBFsunl%&^do@64MeKe}%j>Xq@HabII+fpl|rK%jDcdUCXWnV$o;yUGFnO z2)wyFbpeT&XsF(fv@?#pJ2D`1?E&nyP~-H&c%N0?&w&zkGigeLiUUf}npgF!)qYH- z``P|7tEBZFnY4<+04<^AhpQvv2)9-Nmy92G*E>JwvAK9>=#2al=S#J!49E2eD3vD( z%$0HukHz$m$v_i2DY*vZTSKn|1#*?TB z)k@`>bKx!h!&yLM##6nOKa=|$ zMRN~Jx$4`RxRr=%tIcw&Q-fa5$Xnv6+M5txqq3I1fxINoKiHu7S5}34xP05WoX_E} z(1q5m!8sriYatkqo-ZO-t#?&XM*3gT#7L{Ff`)mE$D~eM7 zQNOOImVFM~sMQW|D|BnOAVLc^_qFDVZM6F<-R)uV9n|f-u`=sX8r*!#1peLcG>9BF zpzYdUviiDd2;_*9QXG^HJ0Qcgd$a{Wrs3CArihZ9%8K92nhqY`r1c&wsEycalyR90 zCJtB^7h3Ti2~K>muhFyEO2959uP5)g!bXG&lLjl+LYx)9@ue?J&M#|KKZR+<%RmkM zKIXfWPur>eeC_HuQk9Neolz{*I@m@V5vvNvQT<7!?sK*EB+o8zLuEh#RC>-jH+VF_ z^aLi3d@{$F+af+q_FT6+X;Va$CGw@Lb!U3DY%gs0$~n>&fxf)DeBL6($Bszw5)!CH zw-XLot4O^1tc6(<^qog=6nUe#z@@x^nejT$Hjdz_1Wg&t6c~p#|u_P&D_Nv zWOiq^b{<}B-M%{ERc9yaD3?k7Iie}GS$qI(-NsJST43Q-n`2m7%UA<7C%B4BF!%79 z#VYY;s!#OmH20*^+AiD!iJHZF+u^4LyQ0;mmc7#pHYZJm{mIAoYf2l{&pDRl?_yhW zGP;|n3T4Bs@14U4=1m9xK_}9(IyY~j9>ZH6jty9Iul3n0d8G_fhk4XB$t{kq9*R?> zOQq`ljnzfzu3E7A>QN;uqN$fm+`Rt`h>rCYu3t3Gn}%xTv^r?4=8t-Qf>x1s*Ou`= zZCd(TJU?uXi%#5`Slw5fQ#-7?L+hF!iNdW0-hwYqWI*kMRq!^5yJy!zu4UGbkHzhW z6(BsD9C@b{kvnUs$1UMcPKi=VTgE^~eQ%@Ya|L?2s;CC08{!bUc|I>H9 z%6ZBzKOe|`lYlaD#|~EPj~S;mRF6lLM0tt$hp1BS3)cdTLmiY`qv%;??X zaFT1O@@5sM_Nqk*DjDM=Uom}H(mlSQM88UJYflUYb_h*-;~sp6yuQI-f+kF43o*~R z?3B7Ms`;K2w;mLCge&0Ai=NXMr-KQsXd9cy8`=Mv=}8@+WA9fhA}cN|r~YNP@qZ;y z`xSLUsE}34Jos1BkJsvTS?q!|$#Zx_Q%>M_`rdbwn*}FF_!E&JYiQr(m>Y56naZ=m z(S)1RsGt{BYYQ`CUjNmc!H*9CbAk#Hx#ce3QdLcq!H;|NSGFuE;Ioa{SqTT|H++hjK8QRa8^k==DyJ&v zSN_pA|6-RB!9-bqr@V4rh0&&6baq_04VnB)M5{0IgjNZq#0wr|G`1(BP$PeX%@4;NtU0Nf*)CO`|p%Yb(4*|^5 zV)dGXh)}##!#kIHow?pp#2Mr<;|M5@=bhZN6mL3%mx@Gm@Bi)E)9|{DUY{7Am zXPy#%&)@*KMGm>Shx7`O_B$EUIT~VEjxl@uieAHEH%U(pwSd{eP7d*Sc!#hB&B0aC zg*dgHSt~4|Y*-7B7$%}<(X`mK>>wTq1)vbFQ=G4*eVRA7w+0u%66VLVda_@55@Na z!`kpe!QZxi@DZ#kF(2d{`%1m0c0GMFbWuZGbnaj_UC9Q0Dfm7=@i9ybgySwgil#ko z36gE067*0p3R*m5dM8Cn*bfkHK)Ek}Q7DQ>$l2!@6IBiSa#nkCmNQVGt`{<^qqA09 zit?w2W{s0k9ko>p^!y6}XpGW{ZTZu?hIeb=&E=c+-C(DPXt~>Ko@~pVTsw#w)7tP! zO$UXHMLo(>>J4z|77Y8WG4(W0#oNb7{EhWyo;YC=h;9A2=3jug4t=sCGeI&dQ#6wX zpdGEs-mTj|ukwr5_&OAYsSW+iQT!v=`#E{13c`6XoS5DJIqM0~*({gRJTDC_T!ovl zLTV4Y-4mIr`e7+Owlv=SPjajIM`p6`0}4DG3Ld@kQm|PKMI2-73Gw~7csPE=!F&Vw zkmLfUgBM9c;(J?Zwg}>G+jZm(DJ=G_ndw2QOnr-p=Z|y%uXsTh@Gi@ z7R5R)gZcY|8D8s^Uxd(RI9wD-uX)^9w3-+??V4q8H09{sb~=%+D`@bA#&h)^41vOj zWCvCQ|K5FnEAhso-e~j3r?}dA3G6R87(RK;gPDY)xj%?}IF05<%OcVo(mc4YYQnJw z?CfK#Z<$ZAq@TJI%gKbM>-sLu6X4`P!8XF5AXDdl?Jnn2?j zOE9)-Ab#Zj!7Ao{fMDw$Ab_h=cYq zgfJingUR;gb(^8d%$nMXs}$Nm2<3KeE3WSbepU0ISC>x?Z+inQ6uk}3PX4#Jd? zU3Ye-P%1mww=niCg~rZUW2|EtjPbkXKIiw}^Vjp-=k%x3(P`$ozTeO1{eHdjl7e~J z6Gx|j9t;6klf1qs7w?=!&RDvjj-slG1`g#2RuJg10bQ0^wk}th$T$EE7G7zvaJ@I- zJDc+6_g4z^6_s|3@YWZk$X9xtZ;Q6y6hcaUmQi`VZsqnp*aH=yIBhinm_GO#_SkPO z(Vrh`m5Mt*G`Q*2wyL-3cN1m&U{=odbJrf`g!YtmUMCR%aw!hc8B0`SRtAi_-1K-P zVPNG5_^VH#MM9T;zQP>k0kk?{mw+U|%FB$SL$0C#XOFu^T)9?(&3kQu6mFG~uOE+q zr%;rhRD;(R(B<-rPA~u39v<$w_L70kSj3m;wpS0N_8@k8OJj8VR)U`UXZHbm5ljNC zIBFOY7eun<22Q3Ozzqn$Ot){4biHTp=E9Gz(9XPlRAE+hmDq6D!rkab&=G)|{QS_4FCBNOi^)ipI=e-Y z@B;{JxAw|;;2g#Z>=|vFPnf*uroYQEIIP+h-fT+luAWtf3)nfg*5bY_M>A#p7Meobjcf{_E{WFi=3yF;=?msOg z%ELDR?CR2|b^2FKCYy(*O50PdadZ=qz`RFonGpedFPKs6L}C*!hH$6utGc|kV|cxN zF}iS9-+=g|V`EvCO9|bdHs5M|7~?O;u}1-=mrEd)4bX$-Uy;(euWilvj+?ElNPV?` z9;f#^Wc)(2GESt>?gpAxB{Z z)(34ZRkL#GuKV;H)=&dZaKSKDG0|&ef|baVg8}wLVB=NC>_b)6(E!cCvtRjf@`Z5V zg5!+i;Xw7m;6jVAI)wNGNIc-wNE#Vql|F$2Wqc1v9f-ZsHVw$(4>eJZuvgM`#HqXU zXA?NLuFijte~4$YVyq6Kc7*VY2nLrYm>DDl=;%OU!SiO831*W*uL*wZyrsjuJPxBE z2uJS3wl?wth!~F^i3(?pqee}WUrC{@L7WGF3pSdC0FZIV_$taF&^&XSSrG`mF1r}0 zG7Awn0@jJ&xxZX;=Q=RxUw*2sG6Cdz1mIS@NV*hg?S;<$^hmxHkW3Q*xxQfjRE=Bc z+RvNfPwh_3{bpa~a1DiyZDMavq(_e3wy6V}dUf(>H%9L+DonkF2VVNp(|8OZs}xo&RG?;x+#bKK1hyaK&_KyUOcQ_7t^lc<4SRUq z=;!k_o@c*Hly1LLArl@*c`1h5<8rL54o6FqkbBHR(i}q6(ff67axO(p@B3%q-Xh6Na^0)(7V2pmhpa#C0H4XfKMzn9lmGdjGDS%(No6J9?Y6@mBI1Ka3 ze_lW-&t0B_fZfsyc@672Y5jMrzK!LR2!Ys-Br&F*y`uj845k2;en5ZB&D}Iq&-)l6 zSlY*do7Z#x;pmFJj5r*+lyO`Hp4T8Rdp!9PHBtX!Vk5MChkgn9{1E>{A?%WcgT4TH zSjoceA;Z+{-MkQyX8!EO1w4-xVXp2Z3(GdW)AMeZk0l6iD(zQ>kS}qLE9sG%i%e&w zt;h@n=juU7o}Wxto1%KdldBIt74<&jp6b_yy9zZP2Hi+zEmSVc|0pGqDblzQ=v72% zMb^xQqshVtudX+w|1thhY4IQC1uL-sj*?Gd&vptkpVl$KvS8gh8JMA+{5ovR=kPq) z8dz@Fm1S+Ls$_Ol^`9Q|X(y;CR2QaDbIcAt<$qD(?|}A}`~#-QbEPbQ7(TQ*8+R&D zwMB=T=ts;D4~8p=U7T5)827qmx>qW+xy(QKbwQZ?tf+o%Jzw~l(_&$~iA-Uf=5Y#( zDQ)!T%Byq@usQe{s2!x3Jhyw#-lkn(!>_}A?r+Fs5ff5~n;Hraiyl`?&{j*yrT~r8#i| zxvBJbO=~fosK+3+1(Ha7XZrM^e*EkMN7xi&`m&|VFvuw(3TXdUU1&+FpoTM9O(ZSa z>yZib>FK(|7q-*P#DEuumDk{HVIKwUc|$3O(ZY8m0+P-Nh~PaO4pYJ0{e1g$_Y_df z4ybSieVGC-dThs36cR6ayz?VZ6coHBV;tB!X*esTBpAr_=dv|OlCGqLN~h+m&oec5 zR@Hiq^Jhcq56(bJ#hxe%mxk_qlq9k40)X=dm*pG{3%e}7pf!VBTc5UG zGtK{`u_idFn2jj44naA1qepL3Z!3Eht$6kerPRa>p)uZ$2Z_eN%TICg04zJH(e=7R zkEpL5{vRqq$DraidsZj#K;|Wn@>KI0A2OLvhg+jj3b&3z<-0@NtJg*weXf6QDA{N{ ziVY^m8-u0WG(8ZMB=*$>V~dvCO#z8t=&u>S0ISH0w_mEN^_7uPhhLzwy&ZBuzX>rt1mzqHpH}Fo*u0PPzzdF6Y7JHR z()APK2;lG&SKijw)(`O<&O6*@zeMTVHaq)J(`=h)aK92aGhcf@WK@5mq zTTQqG`mTOX^_=FT9}yHA{!^z0&&=u|Z@xz0uZf&y_c;CFRN~#Kpg^21mYKCvmieNN zw~5B|6Bf37xAG(iOz(NyMUU8V`8In?9rs0J&YPHnPDnnw%e;|^n~`<3st{}odNSj= zz-!GY>EeRP9pLt?La)ORQC zVs9}=cnSAFo9M`DK20NkHBC)`y5bgT7x^;$AIz=SH@+p5M4>TW!dXkoOA5je9jOvk z4v(B`9s>Ym0=@!;Uo8v$>mNRnT-n<(*@%0xciA5Z_CAfTFIliKr>Y;$8!*T6jT%B$ zK%rbUZ!9&18ih_S=P=E3jGjBV77P{YRtnwsScjKgN08STycc{_DFahog25j980-OS?5RIO+CwEbuQ z1?Ngt7OolPKJ!-inY&98n4rn8;Lff)(_nqoKW*$6v(U3h0DITu9^( zyLGeFGu?8aAg=#$3!LKbku)mSe;<_;tnlNj5#s|y^W(bI%~sRhwh(Wk`3F9i74?FC zV~qDw2XJpuX&)BN&XXPK7XsRTa-;7b_H8{B$cHT%>_tlZZ$epnu4MCWC;;mx}~f8YOQ@p10iK3k0-=q<%MFfW}E!dCYFP}9CrYWDSa z$E+aeKH9BOu<=Rp-p?AxDg`Cs3^l4;2lCTjz9_+Lxg(-GThwob!U0zyn}+g9LHAEz z3=cCu@j1`FO z7YR7-ALn!WYNjyV9c(r-y7Au)wr0k(XHX`O(wDW(RX?jzR5{d>)V`^fXf)o4%?(v9 zxqFS}>Y35MbX$1mRdbnZ3xqo_0SyiFP`hV{o2SDf{nNpGa_7P!UQwY^UNs8mUogzF zys&(T;R4U-y$t_6oPY?ZDhoJuUuHGb6W@WFLl|lmJEHBQQoCUuskzE}@nKuD}_0fso*C65(MLRafQLVe)4?mUSqv~6dxf_;mhx2Io zmV8L3*oVh;>QUcuGQw*Mk(=KcnAHAZ)x10}Aun{{3v19~^_OUaZJvprWeb_XHE{Nt z4(GrU)hW$KUP^p8kbQJ3s8oA>zNhcQ7uH(B%@CkDRC7O{`6;u!j?}*>ceIEm#>{Vv zL7J)b?5y@w@@`)(S&$fAFXY+H6taBZto`8}v64M&?^|As;ziB^APB9cF2=VAGlqd` zj#*!v8)cE!MUeOue*8SImn&3r#VqngR)@>Tch0T{F@FD^$S+$L6MoYf^hh_2a}U{F z*5{b+ersGSU;fpixvGmu_&9G7O;k^O5Q2@vHh3(IXxB~w%#=8H#sNCCL%2PLW+&Bp zjh#A?a^67Xs_gsq*-w&S*EPd=gou43VE%Ovk5;mk9lsaTlX^hB-?1G>DG;6bl(#ss z{B>%yJfcDeQ#1Or=ITbfP;)HpshE+=2ypflX0{m_Wam3tl%f%(+R;a9h=Qe6dmBOI z(@*^ip&|XSqYfSwQ%yy8g?y5*ds#(liCPA{Ur^J`J3Kmq;*=3oL0Y_{pjJlbTy*rs zwijgXb2#a&++F?98i4vDAK!VwKM}`|D$5w#_jno-*@F~%xzp(?i<8#| ztx{*BWYpJ$)#_><;TlN3t*+;luxUW|A-!YcW%&u+XiIDZFj>$bp~}Oc`%UOi!j3~> z{21k!9f1dH^gb83NpUOCHS@UQXw3BzAMsM%^gY5MlfcAK7c$N_5Gz6cmd>J5f{7z{ zjh+sXD@aZziPbKS5$^hSMEzG?*NdT!?4dE2ZQlymox=0mF)*GL5y?G;;ReQK=k3Dc z&#Lou!5^r1p2I@1XRtuO^BqQ{{jBa*)s;edgE?SU5APM8kMC0?>E@!)!R$ zzx`H3bF&6A6JKBNnD7oHG5PK6b^ImI_{Z_9@y_!d;h&%Pa(alC_38sfF`$6AC3|SA zheXcz@+3018QDp4G=YZM~uaN1qR zC4Tg2hxS%yjM)I7^H#cWq+`7KK71hG;T4j^qjBM4#~E((8`y}>Z!Yql8s^&$l1;Fz|eqCJ72;&Sp4ec3w1EI$0#gTkPwZ{1c$zm>An&07NB z*$p@pj#p|;1OoFQmCj%nfWhJ*6ZneV311RquiX5XTB7{<<;pApGCq$j{ve}H=j*2WcbNg|s`^t2 zE)*mi5>|PfV^9R<%9L0gp1g(wB_)6k?#88+Sy4r?zw4B{Aq8#R;(hxm9q__k(w%+Utus7+D!c0@1@L%q}FN7?W_!{(-;UWH?s-ZkrC3mhre-nndG?iGNQ z#Z2=>dX6-Do0X4;%$^Hjbleg}@%>pg{_kek^wxl^=e6$w_C}s2H$S!X4n^D;8}w6wha%_$N2ij9CH;Bj)r- z*kPemq5<}b6Fx~!nkO$}c^oK~Gj%b+df^WsCkfICo*=EK=R!0kF&y)H{yJH&%kpWP z$V2c0$}^R0<`(|b=Gbaj0dx^+Dir@+-N}oGUDA{mdBt5?7xFXiV8?M(i1};h(?hW1 zjNRQvg04Vpmt#maa(avsyBYDB!M6IljuW%I)AlImtgtxqG@LUfCC?s|GPDQG&Xsgj z(XU=fS2Y2-e(M}syh4KiFvI8@fdFMU(Ay{C#ETKioYj^!TF^&K4nHIUb>1<%jkK<; zoSVenr9QU$BJBPK%!QGn3VDdR-gq2Rf?Ex^YkFjx;kqcCFZ$adxo8NYw4#smRjj~T z%NTk!$XmA|ASw>0lT2mBSl(@a2)+vLm^@t3y1zB5hqmTKU?UF+s`%HkiTeQ<{XI(FW9k9@-nE~CLK)M4^F;ni@!!(ZElNO zE=H38S3vuoyvzj6@$Op6#_WdpK`f$rw9W=BmVwuuS?E$=?kT`|OE&#-zPHD&{O1XK zzfk~*+jD1BroGSCem)&SC5BH22b!QoPe|HB3B%*wy5@a;3iQ)RK~vO&V4)dzQw4_LMt07BX6FwSfSb%wI|jrdwLCqR0D z%qwD;8HMbwOzUuZ!F)BMo=E29osm_xf-3WRKikztLFc8t5#`1Q$V^zxW zQo(^sN-DsF(Dp3L#TPxS{%&qLeEbP&@prT61|7m|1u)8IHN)yM-^phdEJ0~Up?BNi zjqdS!Gpm)o$9v$2vPza&a93gMV`=_|0%*Ncl=|#0~-mLSdWyyX2dLP zs>v4sy0c6lG$=ZpdeSM+EW5d@^44hilGWw|q)WP2`P^&-1flcTrRO24#4|@k$z@KH zLnAQ(vODW@^DswG5Op&8lgamhvnjoIXAg>bq)s`m~Gk?P3&<2LpklK zzJM4ZE@OMVzV{wq)6Y*<$~t8*#2X_EPS1>oB{|7JNotjvV6{}zuu|1d>zp!N3NGHB zW&x~bVnpDrz60IQ4+{M24`J88-koV? zs;L|ph6s$0Fu$ex0RaG{o6W;aY?snWgP0ig3Ebi5<&Roz4md)bLipT~eQ+V~{`lRh z>Y?0*=SV_akH{i#w%J#-ZXK&dljpHJyiyspk}!zzn0! z;b{Nwr}9My76dTX*)u`1yV}a`r5LE^HpRy_7wPUi@ZQ{k`G?bVW_N>uoMIKS}f5)v{uw3b( zsq6hyhf5^;8XgzA!x;5vLxzO zhmqov`GSgZ=_#bblR!a*Zi@sLB$TN$k7K(aK{jTtjHen`mYk zIHKhO0EWSuw^MTW<_Bx+*~b{{F6ZEFV|cl$y!WnVLsh&!ug(1Vq~cyZdUGkU*7NMw zyk$Gr;Qc~2e78{?)x1XQgf#*jk#EtCo;kucXA&`pN_4uXGjkpGEm3WAMyf14i8WU& zm)%a#9qI;6f~BVk(30{@^_z$^X%I--eNNYJ1 zB221fNeTwYr zRCnM=X`EA++)a30iTab9i+bEsm%hGuVAbDOo`R73_y}roM2zr|9%SLl6&)@yXOxtuB z$N(B);g3jXRd&Tun@}Ab*4u&cgUQtL2z$@v{KtEgE-BOwJ>IAG7jR>T>_|lgGu8;l z%G*#x7yIzM2f;w_;G0Dr0(GV31MerM(3p);xT%mqR-fk78ccRU`Mnu++tKQy+z@Yl z{MgJZ<-EmSR>6FyKJUM*=Hb!#Zgd;5`HtXgS_0Eno z!Z}ORBA!RNI?-9?iOh9PItru;v~$JpMkJmD3vh(29=*vix9Q42Ryv_8`?^`nLT70VI{C6OzL9 zKgk9gMDAkK2O;R4I^B%nk?vEyQ?$J*cJYF|9);6fgiw3p@vWhi18)%g$(R3-B$Pm zCXVp^)D#er;q)toMPW6&n4}c#stVFdQ};);Y^+NV`d2_1g4QQtp(Dh{A`r=0`YJ@n zru;ZQ&coJtWHXZIcU1!3pmGLkxiJzM;RkPLtKZS~rFKm`GaD>MI>zId{}})ogC2l9 z@LeHQ7~qQb(azbc@Qp6c-R|n@LAO}x^Kw!0(-oE6LOiVBA2DvichWZ)fx#{_%h=`2 z_wa6E_&*ng6_@T}f?E*$$~R_(1xWpJ_R1XG0_2Qcr)P*v5yzdtq0iMIqc)BQ-)d6l zf`mVqNm4|X#%B7m#Are?T>?rg8LX=@QcJeN={>ePKN4!W^gP0O+9ICDOP98$`-wFN z90XkePJ*oNUnRWrgOh{uv@L((D4%Cm#T#wmwu^zNsLUZnGcr2Y{`A9?)_*hy=-E`K zaM#Tl9GB>g>{ipDa<)0@4Hv1m%XN2-yW9B#2r!~fU%58^j(uQb`N)x$jY`Afl0fQR z7Y!HIteuplt~xndO#h{j?DRM<;on!P4sRC4NgQnY8HFtN%2v1Fm$N$*;bA}Djmh#T zdE`hgv%S9YxOMC5@#<)e;&F2{1RDcb?vJ_X=Sb}%`tg3^W&NeP<}h{_{Yy-tFM@pu z9z`6eB85YIEH##@YjC5KeV*^^;uZF(gZT?p@cQvOo!2{Q+@VUxdtP3S$n0PqvdSfoyKa2mXCH)Kv{QV;V(B)Q=omv>iZ+?(j0i96~ zdoL2E`SROKx6s^p|Mp$ZAab2+BEq@zA`JQp^E7&WxpVBp(?9InEkK@AkD@RhUHI8H z{N8aVhsc({)j~L;G2-*>CWM55pdwm~r3bOuqkP<)*zlNRaxnmoYsxC9k_>WM!R-dd z33|p1B)WPo!^$@r%Mqo6y6Pg*MN+f_%cSL}!mGW5xC8W-pwdcge=ncZDz(eJ7F@pk zChI9^vU$>%xb&Oa5SzND@G1P>D$&-fS!!-Dm4ME3RpC4An?**t&dq&A?)+hoyc(?8 zF*9ZM8dAHofHlYT2NZ5?888B}Y!uk)`PTBkP!gfqijS<0w=YK}vtFn-! zJ^anr$YDyz$wy(IvSgd^OhPPjj3B#?{>HxREQ-F;+*9Yhv#jT6xt)Po^JpDQgKczbARaN@MOQcr$$uXJib($|Da+c=?}Ry*ph7>Aqy8F7~hj%(|b z6uHt~xnHQ*{cnq%IM=9xx9oH@0m^tI`f4$FKnn<|UTbUTlFgen;o|thu5Co`5_(ENEoQz^@rnP@XpR8Q*8n^Yp`@jYz}77 zb}|azaPrT-e#psfyp^}F8xiZL+>4;$pJ#5w z;H!5{4X8O9O_caWEJ7jDlD6EF7DICK7O!2tQo4|-f@rs&iUH4&skptO6S!xaW|-9R z)Nc8#O6_hN?JzAwk)wfR3~BJ5x9zQyt8FK; z(sHv#XOn@J{@ez?QM*mlN}rR7hW3s~@T$E^J13-J>Y$B%BdbruFS6%|G)~n|o)-12 z@2HB|8CWgvH{D{)?;S+xAC3x4n}Pzjonw6)H(QN^nMTL&? zeY_-(yLcxTe_o#SH)vAW8a2);xW@-M(4we$h|Zf?O&!cmawg^@9GNqn#N?)pv=_a% z9`bvh3=fXW{;!@||D)aFdqvdu_6yZl%sNlObTL2Tufo`%S23#ZZ$E+_qFS(x{#hGX zS~N@zvmC$Wm=nV)alADhNZLw0v57%C@xkr;Zn8Dz^rS79=r@U}8&Gcy_&U8ZPXzjN zrOze~mwVBaHeY9~@Km|noJqN*-ah^CzNXns`HU=mbwh)xVM}Z;$q`yv00$CQ7X-_B zqEu?L$N3eL$v2Ao0!I$)*)LxYAc&M&XNX9WqhH9#i55`arVR)58VIVFconED`&F7Aatrn)QQTBf1%bwK6n@Ay*i9c|qmz5eB`JCIo^*H_n(wTQIM5Z

    }D0V!F#|h1h97eQ9&$w#^NKSUt}T&Q>_Ea*=KY6QIOtn6DMFJtGGM(J$naIX2;9$O+(+e{TlyV8N_*C=KfvKy045R zC++51@nxpw34F~s#531}J?l-=xiF8yESd;osz_0+z=RRYwG&5D)(S-pLe-Q*yH)l?5 zPfYzD?`n72U{NZ+(*Dv_*nC2PcDL%cr%IZ6yIzvx#v9{@ppU&QTcHMkYh?HAXlJ!= z%Q~HIvgINfqRuQ`nZU#S)|*Z`iLhY26jzG3={*9BLnlsga6eT4H6?UxR`0KX=s|En zTP~2AT8wZ#MrT}E-A&Jb6o6@G=kr&mvQLf({@E_WL+$&y;Vt4CsKj?m%UdX zCk2J5NXez`uvtfZ4TJquKhK!><22^J`X%gpW@bo%hM~BI+cN0(Bh4#b%x$2=myGHy z`Y#!op#mDL4PSH&2WKPpX?+p4O6BIOl7Sl{%bviB;mCBgc2T(}B+Ikt7^W?Hvd(*Q zxcz6ej0fdqdYFTg?s_=YZUI=Z1Y02PC95_3_zzoK!0TuuuwC@^6*Bi>T1uiG#SVc7 ziLMv*0FonN!HT4Sy7-m z%y*lAsVMaN?B2VZnlqo>lvKCW)#W)2Y{o*|Ha92yf}d0nI_oIi8P@GtTTYQ(`}ho= z@k)*0HJsS)>G@ylx{`0eYOa1iJIDS7=#qm zZfN^^sW(nVIB2LW1Mlx%h3|JYwxHXEaBEHeN&BAYFDmsOeH+Ogxv`6g{H%rJUfY^! zs^oF<29aF%Icu|RVuHY@GXAwog`At?tC(LG|@jxsC#sb5P=Q;#OZ1_<|a8uOK= z$u8?S@A=MMdSfSWSQwelVa+4~?@|n~gw*6J z|0|Rd1`P*=--m@I)C_$6#v*~`AY5@1z60xwe1Gk9x=D3Ocfb7r-mTBk(vz}jQoyLb zPERm$)0y|&^bfYOCggWbzc-grb;~8LX~1?8@gpoAU$=lpg?Kt`*8toDdCXNO&Qn1E z=E#IzY~qtE^7?o^M&89MhcBicNM9PTf9L|_#mMM=ych|L>+LJY{!;{m8aKeEpV$qt z8MH0Pi96P6$M=f%h6P>iw9i};Z6S-yinO@UPOfwOUDQVZzBMnK4v- z!N*~S-p{~3%Y@hp`PH_|7D-c$`G~E$2&e71cL7H1i+3dvdBGzGgg>61;a72AB&1W> zmFb;|Hb4lpD{Vw9Pon+7(O%#~N0nV|a8fOj6(71(d~t>M4xW?JA0DeLb(q>XTAV*2 zNjQDB^?olGeL`o{5Ff#(x}@aVoLM)kO!Ow?!FHoYLsSh8TeByOnt0;oO3UX-b}+z!bu(;PC*BevsW-_iYNqmkv*X zPLvu3w)$4Z-!dD$mbpY*3_{0-<*wu zZ7j^aP*$-)r~g;Zmb;i-S=_vDSFr80Ve5*16vTIH&Vw==A@#4mr$%O^Zq&8?0>kmc z(^u~QpZ{#C+4 z{VgJ!jac?Ip^{@*T1}s`OSwD%Amw6ACvj?kGP`DD0J1T0ANV(MBX=JnE96%`=e+() zlQb1M`%Efult{;7g+ztNFkkgZ9-w#B+URYC=ICPfpkn+JZl-gfI}a--K4y?W4l zUK;C5k4n8Rd4pR5niGMVh75Z<+E(1wz4Qon+W@t9fCTpGj&t2#LhRQ>(Q&;|I7%eW zSb4=Tj+boD#!^?p(Q5B0CFz6xJ7mc>7=?ACu(JDa{fnZQ|Cf*I5BpmhU#rM;JUq6c8^3qt|p>!aF-G8Vtv4+eB0QMHi zEZR;UyI@b{(uPM!r-ope9}u{euP%2*(1&thF>92je0!;sWLW>dj_wPFTTj;LRB&#f z`P0fxhwVl@?J_;0d&A@p=HEsTBCvn18u)h;=|o54d=glUjs}Ow>Q_gQuRSq4und+8 zrU8B!N;r}yJ2wxp`z1UtXeJU^T!B!}iWUq~cIlFD0|BY=i|N5*767ca?QPaht~LC) zK*Fi;F;P_A28hNW_iO`GY>L`hF6>(T?mY$mTYBXfcmTIC2yVWFu|2B7M<9>NkxH8B z+YiMso*ueNG|C*elz*4r_OAL}RFln<5PJEFo9?#isC_3ay~QGyabp|$Ef6T4DeT=x zkjkgbwCOLNs*ACv+CicU)ypLjq{<=dhQ@{H+} zGuz@{RtS3hr^4@e)e4z{l6(MZpLwz22RwY0_T;zLi<5Xzfi@|)BXOqWf#0(c_K_Eor2Pf$f!l!pMwTBMsLT#5m6B1mKF(C7Ir^~psPRPM z<+Ne8z9+|)iqdM@wAiY#1!W(b_82*GD{$nO2`W>TI2X9r)W7(3X|{w4R5KgPTQTp$s-xo7sXaC<(`_39T-$V6 zpCTq`3Y-Z}Dvh~v>WldRkc)yf!g#Kj!c<||$^cd@LPxq_G2?(mCR;a}V!K}n*oldN zyYFB|n>l@PN3rE^at;KtzIfFpVaMA5K~j9RPS4Z<{z>kwNcoI^v|s8OFYAl6N)3_> zX!8bavs~^B9^Qffp9S#6Pda9jl8BRU+yR;@S;r(4yC_d&lpmR1-v2C>2jwVxnmdK9 z2%gstw)@ut7=2|$B={G;ZNTGglswBxuTp5nujwJ_W;2H#zie2G^y$0g)Q3!M6((=R zLWlT(7Kd~aM4H2q!>~IcX1>mx`&~#TUS^vx|?>i_L+j5#Dywo4})0t?99J?vtUjp@N3RyMNnf z05#Bv7;n8td0(7&-_tT?Py(Pov-+wrSFK)HXDGTG{bCGs2(1QpWOTmhk2cb9kP1_9 z@9wdHY<0U<^5Jag;5P+y3c0F&LBiHR1~QV6LJHi2%H~><^j0GNo~R`{mfI_DNe`yU z#!0}gg_e2So(S!5O5x}&5p9TqRf)T4UV}b0UDh8ok62O|xO}&_!H1soGWB^-aC{~3 zXAvuy_f&=Pd}j#7X)yx&ZZlp!jb}6iJ4%g8j?rLKuw$MZerH-`HStH^m)BeWhxn7@ zo72<-(&e*@k0zA?Uzs^bw`Y|uJ6j#xVC5oKR)H+)m_=ELEDCR<#_U`}D)8cnt+KUL zUH}`~Q`?0auxPK|8SrzzoR63|*6QpM?5wQWHkXObytQGz_((jZ+vwMC-_p+v8^bb9 zhj#tPX3z~=qiI6tQoYQSG9U6cM@Ug&T7!1*NGj)}wFTnMClUt`fz1zH!=BRB^D9cz z1i$vA;DgDXyO7?^C2gywxx?jElPvN(1+R`4V-lsc+jO7rnp~qr`xUuT%aT&9$nD9P zOA(*q7VD(D`h1VSjrRNfK>i1>{rji6l|r4*D@LAX=45ulg0V5!@C;_He^i-u3F|9Q zWw9io`~M{KXA*R8wIxMCe=2`DFLo(SFRzTYQcPPR0!Ob&dGLMy@}|*7N=)SDFD3HY zMGYZSB68P*PQajq&^xbL3fAuk$?*v@k7Rr*RRmqA2{~K(1@k>D&Wo7uy7~@A>+NqM zQsR~q{*v?*Ot|Y*RLfTvxWDfHCV#*~E>7R(@%{*SFpl#)%kWUvLmIRHP{aQCi^WX8 z!HiDU^Xfujk8zRE%)~E(h0?pv)>7fV?zbl@1VUC1pC&!L7&%!W;cxTmBf)&puzux% zgdeJa@^f2!dQ$ou_h&I5LR-Ia%N<$N0Q7XnV1TznKH44X@QQ7C7)z-H#}#)I4l53!Sd;8@%JKLks zgGvavjALK&NSa&HbMb+g!(Q%NeO^yjHbQ$V|BMuqxAqN(#*D=m5(@VQ-yK+XIOPpI zg!4Ewk~eNWXfoVWB|ESy00(|8l>---OscqVhP%+A4@cgHzH5axCG$t{pXA^dH{LPK z=D1IdMn$R|$fC9@*huM%nD`N;Z1);Ym>K6flqhSP=Hf&s@N`5zrCR&Ggs_A2%Xui@(qsy=1#=&>bcX&CqrAEv!pD`FhRvG4J7FUpf`PSjT3Sc`t~H<27OyVR zxTRj8{q2grt+c4RheuAMev+`{Ehez`pSS$&5gRmVg#Vj}``W@hiI71)>w*Esn~PZ% z<|Pls7LCwZ#g0^veq={Ri6>pcIrM{$!hm(#Fc}DO?a?dDXy!P4uGUb5KZh%!msY|h zRvJZPG}Q;a<5pvLPa7~U(dE~$)4=NR%n6m4z#&@;4d%latwGJB60ZI|32z?~@h;BF z)LC|j0!Z=2_W9{T^m4J>jnEQ%Dq$7R;q|S*2yLTJ*aT35!CV^nO zpwq&03Fl$_%ghQ5c_$Zw(Ky}{A9k1msrh_QEQBM3!{ynu&YCs!Q_bv$^-W?&WHzI# zW~@9Y4y>Cd6O8@7DMWl&zA`Z3GECvh`NS5v<>QR)RrYldgX}RNCL*=h&SP>$PBo|Q zRy~$67|q%7=KXrua$U?UEnkCO#fzlJ^F^(~+G)kZzY*26chSbZ_g`ico}@WKHzR8} z>CAi)B_v+=8NsB@}U+56ooMp37MPuGC@IRPSd+8K(SSUnny_?yYPLQ_oq?HLi zIT%Yv%>rv4TEw|MKiQnFRLajoVXj;4&-xq6M>grMiuR4PX-0oP?dSRW4~!OjH;OB4 z2U@@=|53-%t#NDd^x%`>7}@NsNacg}o}&&xe4i6s=q*S1HccD0Iv)OfN^Dr`yFA(Y z*B1i#CEq|^1Lyu)0cvkZlV(8-x%QMbRctlI*viF0x9?3)))%>BNn zmE+;shBoD=&n0>wu1CCVhvcge<)L>$c*R?B!JPB97Ac&#oe}mU>55RLu~^?} z2Yr2E4%jl3vDsXCYBld5s}2}EYE7tt)bW}HL_5VkU*csU2%;~wkutEi8^ezKwPTAE zi?nfjn?7NOy~nK043Bg&$7?a(AXtAD#eVF)s&>Z)6}b0qfC&4iIa*a~ic#Abbo^Ce zz~g~nXp}TYMqcwf&ruI;$Ne_523q5m_NL~yXS9Vm1?iZvTPQ{}-gPRqqt6u0tKF+b z%?TbV^qJfIy+9Pqs z2lzPoh`L6zgCW%8)-2-`ogK-AI@}nfHXw@Ea;}-Hph6|pVL9&NDkpB?A;w3 zyvHb3W-8_&EZ!T%DaVqI{Wx@eoTnoxP&$73TcH=M&;6?{U8JMrt`HMro=NtJJYppwpT6zjbVp9Qedf=6j8 z9V|`T_|TKJZzU}cCm17bL_|dp-}HxXstFHf`NzidYLMJ?dg`m|cB-^ZaEtBAX;uSk zzp{|~H3I@<7mF`yo-UH4OEx-^RR5-?@p`!-R|jKD$?1b6gTpkY(+0Au@L75V$x*!l z{E<_XLuA#U`c6tQS8pC-W!!SU%sw)AVbS-Mfv2N5>?YgDx8pWi4%>~J2JK&!O20@C z?3Bhbe;B^Acp8oaF4KWDG7hQPyF&PbTWKb&-SX+pNeU^(S_qEdD8nCR_dSvOo*Fku zRn4vyzZBL^9CQmunQpXd-TUlop84|&P587Au~G#QSY+H6w~_L~hJ(Rsq{5yJ9~R>e z-M(e8sFC3WLUZ&6+Ml$(k?^hbb*7&EJUz*GQqG(gLp-J{qo|UEbV`N^d&hq>7IQ1* zBvihC3xbASI?Z4s-ohZ(uJBCnmo^y@_By&J^L?03SarO7IIGPW+a1^wfOy?5!~s)> z>cj2~p{JAOIyz%B=GC8X(}6V1m>sZK={dCvgN(Chq&ck5OV0t*9U1+`G+SLZCkM@Y z+s)X{mPi-IbjGKeDEvEgO-Arub%%<}4ga?5meQKf!JZCvpG)R zA>InRXk+NVtUZ(mjstxH4TGb4o%cdtZ4lD=)S>EEg%Zxo>66K^-~Rx^5ka9#*@`xo z8cU%o(gWxv)4h)nrNb`*TO6hwm7Ut8shXY+l#mG74WPXEV~O+4jX=TlC^1~`E-K4^ z5rib})ioW}X}q7qsFQD(To>KLzQw-V@$AkBnE1M7z~cqb+b@LjoMHnDgF)c5G+{vz zkVlKa>_9SbHMYiC^}-#AL=B|p@*@SJLRbSm6gwms>oIK5w=l0z6X~24<(_JNr$t-v;WSn`elF&!p07lJRj zm@bh5HCh||=vwFB*Rh|ALlHfF9Rx$u4lB8p>A)4THU=e8cJFVL0q}Sox*4)vDfZ=U zpXmw{QdTs?H!v(<&Z^-{h&o&v{Enj{mHnv3KkB~wJ1IE|%R{1Lg=&U4;sQxZb5cJ{ zr1sl}QkS8*!(*34gP0;mlHD3|!+(HJ9T^>oTk|G;g*2{R)_-z|8@YH+Pj;zFt0w~$ zTL$qHv+|_Ukv%&`9gGzoEqWFN_-10&KvtV5ANTFI>=2uZPs4Tozo?Q2h32u%)KpjW z{0E4o@za*q-ZM9?wsm@ph3=D=;P=-?9Sg6^mE4TmQ*Y6zFTAum{R}b0Z~f_5x4bbL z-tRhhhObFL^IKX#cV^HkgKc0A&q8v=yA9j#q9G-3?#X6PJuDt6&S(=silOL?8UAQ1 zfXN$ktPbfNDo!cXm0c^U>^)!9*z@~PEU~g`dyV6|-1ggK>C69*wR8Vxy8r+9m0UGf zIgCOM$(%YkCZ{ktL|tle(sif@4eUS`FuR?_iXI+yR4q_pI4bygM*JFHtQPL#(p~{PJRCO zIOh>x(=PytyXu+Fph8ryYsI|psW|cD|MO4nZ6SY`-itZsu8jXcA4b15Q9F6;=rKt& z_u(Hc|NNem-xHsFJpN^3E&6VJuZ@QnMrKvTnKfMGOj01lk^a(zKjwWWEgm{0U=9^Z z8I?F-FEn8tqMY{B44lMmtCzDSM%z4p)x;Ij0hxjvHiBhtSsj6`Lu8Z=Mghwk(?onN zdhgzy;d~cjeKh4djG=6;G{qV<0Y_W)P8>2WjO;QWvkJB{f|HSL;oF2a;J0GYN0gxS z7ua*EcCU}nFpF5Y^})&K#&tF&Eu4=$ZbpL9m&Z95O0f}RQI?TP`{IuZ$O#-FMg*a6 zn<`mP;-%9A!d<(`x?x`*@65Em*bIAp67Q?tV!+hCcEBoU)4vdta0@hqg9V zb+YtlgE=b)nTuS+%@3J}h5jNN=@do}K8>o~X9?5OGXMY!`BOCR1=*B zpPO)7`hK1s#GvT*^MloL1DoDt!ze%Gh|5Ba@6+A`r`A+OEnM&$`gT;7qEuMjjmabp zUXR(t8)rm~58Yp0VgaLMVOFYZOWQMI7dJ~{dN4F4f^^{>cND&SxMOEi4vO3?N$bgAYR(5n z5lN>4OWJ%64r27GKkm*la=k^>ekfb0^{YIo#+BAkdxxmp;0O#w?oR4(GUx;{rhVcGk=ksxf_E5|I!wptKOV@aZyvtaVYoWv%&GbBu2HIX z_+ic%xB5T$^c;_~#Wl}-C^!La5onQu>@Tzj3yBSjS&AKwJo-x9eD9vaI-+|7UhPHL z35twW`W(#IvuE#wxuEn|RGFCqNwi(eZW)}>dT7iYbvvnobRyc{*z;7i(8;Bk_4;&) zc91DHX8QSQiwpF$4Xa8+wb$C3bRiVF6NCd`s+**rdcj^gR@JAYqlHPJm+K##DxHEBzVI5Wi@@-d_WX@s2yvSQ~xanCy{6LLbIx6A3<@~cmILW zfxR9^H?HDubXE?#E>BOHwiv42J}Z>|$CZFCVYRArSLRo3QeWB~oKe`1s%S&h2NjGCndVQmp)pK3AoJp5#$I z@FeUd6I&bsAM63EYQ~?_yK5IR_p)~Sl|CsTs8W9b-N!`#$g(rS2B<-a=;_rLNw%q7 zHcNx4Mk7`Besg)j_M>z~&gu@yI^!FcJaDwHLe*Ny8>%mq8nZ$7Hvw2_g zPHSvyaguJSiO`Rrp9y`joBP&w1WHY9(*bGoi?^M0T5{TB5Jo zWVCtfcL8s|E^XjF$^c8SbIwyDzdG6M^ zr{}Qd53O$>{=Nq|A|7JBN$zZqfQVQKw1DDe;d>{Aj-ib~@}JPMpkrudP;81yiqfFs zUy8j{h1Bw?bIJ%{RhW|53WA>5IEq^RZh72Xed4x>fRKP9T)8FLu?0jyYf#k$Lw-no zIi{#QA^GJ<3|~U|cs$|Q!c$9;Bdb3#%Lq~V=t!(`~{#C(v&el zhH&!Le(*iU$&gJtLe^>u@>w&Ai3yoKP^=f0?RXE3w0-7Mrw>U!i zP5sV04*O-b226DhE55(keqBC4fzLjDGlL1{wr0NUJUh|xz!{emwu2_1GcccfUdb%~ zV*HY&pVgasYf%Dvj!pz+l9Z&fW!6w?myt!nYa9HHKKAX`eeNqxUNbn*rBsQtU1d_L=T7;hiq1RY2Ae}Bokpz&VTmg7 zVHWBxNb#DeKy{*E@n8k2`)BpO5@R*d4_+};7s>N02}Aq_vDHhMjLNKDEN=2kmQl!$ zdscN|t2`}&|A02QIM1saXScmPQ5Al?24;W zh|-7thK^@Xul@Qt(tn$i{{3E?0*8-+1LJ`qhD*J(gkau~o9tFfmE8AFCMlJJT<0Ou z+u?k)*rLYFx~FI~HOGvAi=<;F*L@v-kpk!RIV;H6U&9duW{pD$r_%;tbXp#|AbmFo zE9(hSCFRu?2TU$s&kw0~Uv)_0h^+aDEDHHP&KV2RZ;I(yxWh45FEJ;}*f(vIG7{bo zNzdcaKN^buod3RqbB1X9s2xP<>xX4jP1Q4u?|FKs7!DZ9(xoU#(A8Jq^u~)CjWc@X zM|N>h3tkHK|B@n0hu@TcTZ z@jo9YfdeVENl&9 z{3<@C9h@v?75T2*SSK_2mep>GSHg1QY~0hNbdoAA>~d_lf!~7IUh!Rk8+Q791HGWT z$enZ=7+YL{1ta+@3Bfq}UkSq$IUtO1_Q#MhMC0`l`jIH{md=9Z%K#ypWFc)S__}mO z&rE5h`33s%mB*BnJ}rSGcveO0r;Eg#N=?)O8A2X(|057e)$ir6B=KA_u9 zJW(sS53oyJLgl)5mcQhQkzMf*=87i25hLg`4h7tAg>_0xN_R1xchk)9YeQVS(jycF z4`2=@B(4EA2XY{dNK7yKbX(<(#<}V>RQJpKMK@`I2 z&8IIr{>rfpdmE1ajecJu9}lgXYW&Rp6-ul5sC-6DSrqGcp#+S= zB>eH?X3L{eYD&6egvs!+2au~RI$;k9dI@jdT?ciPRDmi?ZFi{*V=_+BT~6tN(#uZ< zK(2;)gl*NJDq@sp0PRnOg0;T3Rh112eIa$%K!+vzD;T7kD+gVei&Arx2F;Pn+e`jW zemT$EW9Pa~G*-UM6s?3$ED4|IeEZgXlHu=DX>7cAG!~ zE1|7tkyCY!1#g*1ACH3W@1tK^ee@I~w$6@lz=ep-U)PM`4#iNH1B2LY(mzFeyp}(e zt+tKma`ag6d$E<(!B_G%cgXn%4xoDSb;dBdO?TQiYvK&qW{J&`Hi$Vj(XFQ&y6)JV z2SEkkc(uYF)RGc)=fr>U$*R2o>h}>GZu;#!r4CHm$P`o>;Udk zL9%qht@bv3gw4XNLAu*ciJ2^$O{yD4xw&?GQ7>c17D?&U)pX$qBk}K6wGhgk`flio zo1FiLjA{L?6_~liUnggmUG-qJie)1rQuQ<>@^-?7_JZ-AU&as;Is)xa8jl*>FI#*w zL=0~mYatskB$r^)Vtce*b*!g*H1N4!? z<6?4TUf07n&MjhI%c77(^!KZtD2Ou9@<)f&70ITeyBk1(i%`MG~nTP-K_op{omduDBxa8{pAj^>S zOpZ#94680^7uECyWiIr!e`7I17lJxCJ9Djtw!-4un4$G3X7e9f^OqNs9O1oYMv++* ze=!N;iSJznK(ZzwDTjLmNKjRLc^9j;&0nb+-q zq6GiJ>IY53R37ge(*@c{QK#a%j7x|S}xU;qMN{d^rxy5iG?VB$-e`TDfu6uW zC8$Jt5B#SI1?4!})mI< zBUIp}HT20`*RC5PU|vPR`qJ;orLFb9ZCx=w8__sQMBT&*r+BrLs^!tN)Zwwul!e@( zWK(Ji>{ONc+JFHuI-Qa!`hQgnRFlBd?0K%>FJQR zKv}DEP^cs?ZjP1ER_duzlRcws*NI779S*NCGP)2=s$vxfK^eqhZt{GAGrFf#Nl(ec z3BGDlhwf?!9GoHS58Sq#0NUy|`0RdX*9wIA6u&dO@Kb@DK%9vOxeH6Y*d*U4UsnG; zUq>lokc`%M@yo+`88xmSueW-@Rw|i(T|++19`ntaM(BnKbfFDT)qc*~URwTL-|h2X zotW*$cRzdx7u#>&tbVMsck#)e*Hcqdr=$IsZufjlU5v4FuajjwKP4dCl2hn`d>30E_i9yT&`%eDv%54+k ziplz_M}%G3n2-AmVdGM*RfCcO{Wx63YrwL-lsyr(z{L{U)s|LS1%D)U>Zl1nU~Gin z+$8T*>uU0JV~o8x)uJ9n$!K6`ht%C2Nkvq9mQlljbzrUIf`9Ey4yk0{>DbCt^fA*u z3bjsCe9Odp2fNNT)ggH=Vf@kps;hocSTA&|3eX`bn*_n2C#*a#3ExHFaSs_vZK9)^KQiuA=~EkxDUKrzWR2jP$^`rE`^O;H~-g(&(CRl1=mN z%I~IH_qlH@@xnt=;(m(eqh>h#MZP#^ik?;j#FGl>j*><-;aVT&qVsK0&m0S*`s@HO;p z{F?{zpBR&&pula4pBtXLvh>=2`>j6r3#qL<=a)qHSUX`jl6ifjlij#hXQC-*kbEcV zQd9Q-exW@l9x%fPGc0*3bv7Y$&5)=tIhdSdQ2<% zyvfK&yB!?zWWqrm*VaTS3)5f$DO{JMQZ8KvI}Du_r76fuaO=m^RlUKB_d;zCS^=3e zt=G5;WtdWU2*r4EaD$~OkVBFmK}OqLn##?R`_)#P>7CMmc}(h7m8ETbi@5&rg8ybM z5a5OCOk3KfSmo!8cSXR_@+Cb76ab0&1^je9SC6Oj^%nz}vcQKJQyJ@Zz|-UrSqPk> z(ot(KJ^Yocdx|5re#~&GqyrA@3FFuUk?Gz{6@A**QRF5^O-Lb8P7wL8Qysm~V zEMY0MVZnQ+A@q?(w3N*x^K^Dy&!d%s$u%SO8R}GA-v=WD)h2MRU37y{A3VrCy6c4- zg>j&@j!^EwiRVW`KP^%2kQ!jOSd7udOquL=+jK3Gl=ITwt zJ%}B&ld@3}_8k>pBk(W&lgA{dIW7IP(o^)6_~Xj-6W%_AbBTvY2lJRD*-f$Q6)fP~ zdnf&hl>!6}3PD@I6K*AGC)TESD!-mPu#xcsVyMp;;?pRi}IkJ;9+sj9>ljMrtq zphb1NovSXq zzr7@cz?UMm+~vB|efmg-`g)Y4}6^c;{_M>}HYI!rp_f-KZ8O+(anl=gYkxQ+LavUus%c_5E8 za|@%^RJMGz(uuh8qT>MXrO;erv`A`QZR%xi_REEogrD0U#!sI4sM;M~6hD%SVG;W}4ak&l$OUIppjJ z4y)g4iO_^Jz`12p7Hn=w8za5E&7OAi$328Bhuv=dArzxkdaJ^;?I(~=)hP+i7`hBp zL=;6bKl`K$^8 zkofzT%HEh3JB)B9QC6a9Yq=w1AM*oBwy=?djZF4`a)7nXYOemXKoCTdOVkxqNKCLg zD`UQobzsk*ulDKm50r&heNUHe-$Fm49>Xa&C>~P$nhVSiNk%{x->lju_`+LDLkR@g z#5)KoVJe1~2NoTcQ|5QAD=d3A_>q2)E95g3BW<|@fEUwaR@7oc5FN&22y<7Jb$%2# znQvE09wKt8EYCfj0CXw!ZG2??m$dgiTLuji!pVHDi6sb3(g1h>0fhy@&6XX(I=QSL*oCk4;4Zxqv1ve}Ak9f96H)Nb(^WY;L7| z=XWp;f>km;NV@}nh8E0d`Z>6GbnT9hV-KNzF3_KJhtGMJ=ozG13LY}l(n=PCT(X!q1>O&}oXq%j7FEmAin3L_(a zTonyDeYB9DV6yzTg`>Vk5VA*q=Y?)SD*Q9 z8OaU+kjwQ?jm*C3Aj>F-7^CxF2R68nnZ8G@$pBc)9zR3Vot$|rp@5Sh=1EDt!xhzg zY*l&4zJ?RmfF2s1GpfgEcES~fZnXdgnso$N1nxZsyd1MNfKx(53X$_pDcvLl0Yqd2 z7778WPo*S(#m7M-7~E_#36&3vts=($Xv{#+pp^MWQ6cUuMVjp>|yLT=0wkYX4v*{vRg7NgLc5|Y3^WDfhzzim;y$l)?gf1C&IFO_Ef0IPbT4C3pmSOiO z%f>u@oqQqMw<9`$V;Xx@tA=GG$4LbkOh@0$X#Hi*kQ)MmoYswW^PXH2a_DAMHsva) zeq;D^|Bs=q=^b``*yQ>;+qQ+V^X(PqKL~q`$DZORu7$LL{jo`4WUH)*xu8yR9}yco zd&m$XM7My8(al;^;3wcPhynx%b!k2^R1Q{3)Xw_D(xXKy9AqVAE@V?9F55Qd9U*`- z297$G$5nCs>QprBl#;UwQNk_}T&LDf_Gieu3&Kg6{6T+vR}h#WCJzogTe`~c28oFo z6=hH#J9lE9^0}_HliD>#`|t&l>zy{xkYz;^<%c9mV?_50!_-+c`YR?aDF9u`RhCuR(6TFD}$qx}0%>1f&KTVvOY>`=bw7eag6 zEGHM4Jcn%tQLBs{)kgEOSC13k~M*qmfeTw|qhtsbO$Wn5*>f~sLzRr~> zJVsA2@}67VBO2N4>_>W0ug?jCK)2?*f%2)ntltmmbaE-G7gn=%AKO#hwU2=Zyl{ZB77p8P^^>8J2 zLkY?WIvkzKGgtS$h9|Ynd|-~SsO5wHyEQ&I~wxHm@Iz3pjNJvJdfD zF-{C|EKd5BSjK*^xV`-M{R9z3kuTz}q;v#WiSL4}Bohq;l?4xPN<4__$cnLY71ZOG zf*-%cRHRY8W6uzUwzw*Xl+Gyqt#b1DUc?Iukh(gS=xAkZKrcQOMa9h4z4*m z$e91;7aI|uW$mw$qUPw2WD5lX2d9*1e9gxj9QN2fs89|%8KgCB3%dCBpKsGXWoSuE zUGT`?y+whb*40?x>!>you;DiN!1`ZopJB~1ZeOG{gg#LGo>BGG$m83IP^*Kv&Y-oP zj7%|tTFccpk>E>3mTchmKtqBa3Y|0qQq##oUM}nQ}9QfA@%QSaC&0 z{o1fbQg!|3JAE=OZMexP8#TChNmyo8a}6r)T#qx|KFY}4Fx-h;KupXX)Q^p28^r3u zBvThloOHxxBy5i&m%n&jmhP_hD}Gll^D%ZD9w2T%HfwDlqqkHScCPuv5MPGj^=lK@ z!})j|qI~v-_2a@WN~2R*WuT7ISOG6~Pc@wGFQF7o_##V$YY-_ZV? z>T!7_Ns}s8nD0Tig_uUGhYuF(-I0I4ffXTlo{Wj{TUDu!usEsn=Im*w_K&B$qa{W( z$6`e3}# zNn?IC8OYDOZAaeHAV7m5Q-iDEWSXzv=w^-Da$JJ#H)N$Jj5NRAxr=^?G8!&lWsmq$ zboXyNC%{i94MNO6t@RWpm;Og-lr;W{*g_d{?AS5xF+qs8qKx9XW0CCKKa}XAC=3h@ zG6_}FXXU`r`B7gf8O>$SNW$s+`Uov#7Q2g4gqMq_1yYB!Z^aBJTf&iI=?3KPD!FOg8 zGHhE@1EeI!B&0oOuUSFPLgeT&7DjlokS9iG0i8slPNh>-X-)ZG9|7RhT67rNiMl`zfh_Am~Y|j3iv{J%8vT$ck&*c~29At@ibG z52%v>iR*s6+-!MnuJUJZzdj)ci~aQXt=qz4EB*s$SQ{=%Y3Zt{Of;C6vtMdYUf#2M zE^-V8&2M{^)h4zxCwq$QdT$0~r#_t{5s3(Y_Wr?@?rx1Rh}ornYC6w zJeCq{-mx)%FBB~>fDf~{GFPV1?x{1xJ!`f({!cr)X^K?HOq?Hlo_EcU^Jgfd|N6Y9 z(N8<7^MH85MsSf@45$R9dZt>9>u=UN>iz|<_m6d{dC%10Xh6H;#&e$Er15RF2wd3U zjmbI!_jjvkH0K)h<2so$X(v2ezTpP!+0Ha^w3+?FEMlD#KBUJrM>hH@=Ri1oguxr8 zUUo1`3IH7>|5GO+^~w}V*RAQY9V>>fjGn&)OYz08)O(wL6|&v#Z!sD3L7CK)|C)DS zmx%`L<7ii7fc~N%WHJ#X$Sv36WjB$=_Xrt;+j60TS(|f|Y>CK$;=n7=zlayHShgQBUGJ%Xy!x=gs@$&dc*>FpBdcY0^z-ZvL;lO8^N7yjOzE5~HQATlGcRW=rl4t~UqfBC4Q+xZg6>bjmjVUXf%B;DjUnW!sp z2qGo`jyJFn;kmNbU+y=(3z{DT`dW+NKTF|rxqd)Q!Qv0^7|<0^F!r7Gc4EOc_BiL~ z5HY-e-zyqxzp3uYxG7$lX|Bgwu8W?$eZ9^I z@#93mCRhUF<*2JE37DgU7>3?~zn95EZS1xDPHKrcKTAKC4O*R~>W{!)CsY9R?FvWAi>560=>l zJj`X{SmAF2gYZ(P`7be9JYfSwQ}E=J2gLt%G^c+bxJbf=T;sY?`#z6~c&g^@+rj+K zm!J}=Vl=&Dty8;oZGg$-++LAeb!(Db6a`4e?kbPSMXPx)C9K2?G@nYJX|qjl{bvp72VSZ=Y; z4mIb{5kt?dQnp43-5fRo^ey|H*1XNu4=P1}?hD|hi}d4Y*P~z2yka&+8(H~ugNfS7 zG}$K4nW#F=XF<&WrnIXSCognXNF1$#RzQCMse*2T4ADv;k%l3yY(}V3Z*NCviwMx# zIbtCizpv#nNCzafs$W<44Ox4V$xPa!8T%e zbZ!uf)P6EHs!;2T*q(zr&zSrRqF5~W;axzE^4u>`QBXk|PB`hrgdFXP7EpbyWFbqx z(&9juR*NE7f~M}1v4^ZvAhFe_wdkH&`Y3#;qIAfd^mhuMMKh7`lx!l7yDO*y%Q<70 z!)jdcy1%`I=RQlfertjLTbr?J83X#(e{=4Ub`pxNZ3H}KF+&Tn^(-Y3sXYe~N)vB? zM)R*mfRM_POtL6kUfB2;MBWk1D1NwMANy#%! z!h#%Sg%>Oa-!JR7g;K>2oxPm(G*#?r=aWCKr>;zxDryow)J@p113hl$RGM#F&E5xE zJn5Ngm|y=QIFcTas94XF`U33>N~C-6i}F)MxqMfl(!dAqm5J8>&jRSnPm9uyUD3mj z6&ZyiYa)ON!@BhAQ+n|PBl6ar5l{b;4Z!SNX;Wf#gO4Vo^K*AJ%yx+n~ z$4f9yzd=#}$FA{&u6cuL8}i+ay|v>$jW-X>q&J_5uUmDC@Szd4u0z~HyY`Qa)t!Os z7gpx!#@lVFi_iy7cT9G#nxX)K%xvOCo!te>&VsWO=XP}Z&B`opRV+1PCR24%iL>5e zN}yB^nkTj*M~|?AIL^^A3do` z_lb9Aza@$ojz3h?u2Ohp8jETDwc{H*-fbN3)udC*d6(jncCV7zUQvL2*4IG0B^kK6 zrLKv0@ZgAT5qS;`gXN~edq)TUVQ{$-2e&waTak&~95el8_*NG%fg8UIaD1E3ehM5` zdf4&er7nSM(77c1<(=NG^jqCB*Z0y1P;7&*Cfb4*zM;|V7}({f8;ElHPrebqgZaIn zoQJ&$w;mpQIR5ZGDFQAipav1qXxSSVZ#gspS)NmtAnTr@ z^N~8lg;oWDLl%;B4ai@Ge}852?agpt3Z>-E>g+b=k=}~hDRmS)v z5(t7N=2Qb38 z?!`Ffk0n0uTHp-awr~^-eA8+&>NPc6tXgbFrxRX1&>m~3_3CDprEYxUK(HLwrS4Q= zqwxvI;8od$BbNS`UE2zy;3KZ$H*)tv&hUElc5&pej5_uu-W`;4@ehgFIt6%pz=F!l}hR^zDR>0f9_rKE$?JDf|4A zm_AZIxL_XA7J794hHp@Hgni8Qy))mCzT1-v>&{2#XD*KxDd1CE+jQ~2OtT$k2G&iw zKYt(c3Cqj7&&U?0xUr@SY$qu`%;AAipj7bN;AqfRqUkk{aPdCric~W~0M^@dggx-e z)|R-rGP!Q+y0UBreacvn^3plNSaJJRd_-p}B4LerHJ$WA*Q>hKXlHm_iDy!?>nycd zxrm}BzX;k@y$W!(`r96Rr`R4~Qbp5QA7lT6VJOgi)e#txy#M6sm4|l|UnVZcHOF0f zdh4NKXXxv_0)i0f*Et|@kZOZZ!g2FZ8EJa~^J8E^`~4G-5V(1}6i@Yx^Hv64%g`Of z&BGI5g4CDH9CSQ)4W_iD$YB>Oe>Emxx}9m+=fzhjx)52qO1w7wuv*;NSGLd`aF8MD zT5KKosnM(N7oURnJW=8x2WOax3RcQ+wa$6C0VJ zTu)T-Po}+?X*47YgTdefW+6)ZTF+gMv|If<`24l$DSdzo!U37DwdMBS{-#JHH%bWV z1PjQ;CdNB=CG_42^jEpApXG($dWU}iLF<&~V3Nn522rNJ7CvD2xE9-Oe9ZV+Fp1}J z)t5l-m=ha{%bp#fujlf(7Cg$au-g>=0>E(i9)s^msBD?5RH0SJlhEVa*QvCHFwViyS*zO(Yrj4WPnIauIlq}H zSUf{4c>VXG^0H9)ZBAgQO1Wc|im2b8(TJ5++~`6p=geg5b4qS#q-quqC8ZmyNh~?C z_Sgl-{#~%P2(3w3@9|Op<;D?+=ahIhg>w99!`^lU&TlxK+wDG@1Er?j(uF-A?6wEe zX>wI%j|)!UBO-cJ)16Zi#d>eb zhO6sT|0I1wVlJ{%E>oVpse1dkprX4e?6_zs95tfb(`cCD_umxZra=56oZ-3NbIVp& z#z|-Bdm(xhCA8w%V`;}m0qd!w-}`G8U~jwR1=RBdj-zOHO5kaogCt|+d`>$^esE>kfl0CnuIiFy?+nlukXjf z9MW_gs%d#XX|76Vodhlrhl1dGL8%9BSf_ZTIA4hA_9AZOM<)%7r5;~%MzAeOZtSD^Uvh8JY3;GEKmbb827Wp!6ZWy?g zS!swx9Vu**3I1`%>K{PYyI^?lshG=R-WzgWx|c%*UZ~rZfg9Bfes%86*hXwO zfHI_UD2_W+_{iChj~8+|=jSzJ0s&Z?mWc5}11EvxXtd^alM>OAsZ3;Madf+Mx%*-qEKB)$ zb<^;vZP=0W^eTUzVcZX9mYyGKVXQG4+Y(*u^2@jXxcQr^c9A`GraeDD9W8l-2Y{7F zqw_W@a62nnyCFTPIV3Gfz0xIxwf8m}{jX`xVQ*BjS$AY(XRxVy5i1pH!}CI615f2j z4fK3X*?vJ)fgg9=$qUPxx~MeX4IgzCmgzC1?S&-Fhl4B3reZL0d7hyYwp zqV|6v9@-{r!*?znw-Pj0Ki6~aHt;#8PRT0@Ovtd}Bf!~W5?t6U@D=%Thjd{3{KCZx zR^y&>thX_wgJTkRX6s*Qf7t?^wuYSAS-za8=-wh9ukD3?h81Zyixb@QXU4t>iMU5Q zf|BqXDi7dJ4VqEnPtn7n^uOpDEy_fpdVuEyxv%&^u|GKP=obma3?|#81UBZRPDMvm4hKL3;Dd(OxVbd=B zVKp^rngu3x`Z&Uz#R5JQFH1^+rDPMe=o0CMQy0Y&@Y^*X4n(mOVS3(Ba-)%of7_|T zD)5OqlIKD2`=8_Kc#;+lDPq9NHJ$`TqYtd zkVNa+_wp^eEoSV$tzP z2;>zDqXr%|ET08%q1LFJQ$`O|CF?p}8lxpWD>u3v)3l230^zsk4oZBLspo? z`_$!oB0}FmGbJkFR~1+p#uK=8tLJnjv1*0)0d=2CRA>l^B$Q<-S3dYFoRg3{umW^p zAXeF#MqlhC@}+x>JzqAq-@Ka7so~H58(gaE=8TUzqqnBDVmGK>R9IyVfg-vD^?H=6 zSLl9P;YcNNyui32D+Q7 zt?EgUvIZSFH+CfQjrT3h4G?dqSNOa?j|H6_b`0Gl1f&P2U$G}UJI!?%VoUdW^)D|8 z6AG(tm2xBEW*TMK^;FkkXHf#pX^CZ) zpI2Ck)!$LteH9#H@dD^9B%`Cyia#JJ!D@$s)n*j$D$X3kDYk3lbWzB`QFhu(8zoKF zC666?Xu~L1cT2}Thalnk_ogPT&GN!0N3To;fa#zOkwe5r&eOG&5PYpORSa{=>&x%}m(L-@tEswl&KHT}kTNXP<7k z#&R`-$Ri?;diH(PVlwJhprM-A*>QWfoGX~9kX|*y^2OsSv{j5oc&pDh-SE+2$!-%o zZeGidtt#^R6={N~rNJU2xL5{~t*A;_ZtmH9UKmMUhtZqO8$T{qZs_jH=;WA`Iy7wD z@`y#DXeAg2GlaMs*x`xJyn)yBElRHq>TP?fl+&Pt;cYCl%dvow&@O7ljShDX1O8n=TX^~rtG#D>s~Z{;#INgsmrI++Vz z1?8jbEkemh)2(3ze5OQJ zUX;Ga1|C8!Tmu6g_#aafb={ja)~hvIIR@<4M_S*-_`+h^>GT!o+WV%np@g=w9hQ9T zCivAyTlJ#f6rAf1S~S@ZU!xoA)tqOxuo5TX0(;iTmntT{=5N#2xlc1U4!@zv8YwfW z;}&DMZl_iNXgrXDa(Bli)12!746mc{z|V`re1z>jwd#_+#I?|qB@%Ch&_aHt7sIJu zmI`FIgExJLbn&gWv4qG#d{{bOCm4WO1pGHMMvXn2se27X;@&FuzRm`w9ihe(=LNy9 zzI@Ob3s6y|!tjpO?38AB!OPH7Gy(!KTJtsZa7XgV7`RyV`e00Z>655aSx54vtLK{L z8VTUfB@dc@`M`(s<$!Q^J+H+omQ_3BGeTfDKJAv<`pm7#bZMWHRju=(4X0d0l3<(P zQdTsfKh)Mu?3zqG!qS^Ietqy^Zz0D#s^p@(*GWx*jR6MV$eRJ2KqK647foxk0^)w+~v&yn1sgoIPfWx9Rw8hx19P z_fu=qgQ=;^nsCPxr1(*&cFbEavVGvq(Y5z&fb5dUKle!%;vUT9I1#>GR-Z>kAjsFD<{noCSv)b%-Q^(sy1%>ED@h#t_*N5b-s1@Zp-rGdd=K*TznA&3= zg5l?}y(n6?MUVAp|F+GsIa=A+$ZL@6*!db1G&!7&fYa1>$YX6x;)*lFtJ*j=jkZDj z);_9+cUp5>Q|EFhS?hgarpyWhd)tUDpM;5Od}4yoTFdPp#OQ_E2ghn4@O;)w+SPs~BdF z$C7`LWHKVZ5$`o}krw3&rRYo#d#{u9@N&i-Pbqal-re=XvHlb<>Tp?U)TlS!$BdwX zSJ?id;JV!`y4@UKs|$glLVt(;w)J?>z-DGsyP~Vltf!>&!dU)mF~4e|TK`3_f@&s6 zEVP?dzL|4gZcA+%RS9{AKF(?Xq25WAGM-1O5l4sC^3Tf`Z$2@^?yUy0u=D7C9EI8cIlBz0C{<*W8Rd?fC>*w0zKX((?sxup$ct;m* zZ;x@v$i;4xfCx<@bBh>+0LJbyh~aMca27czCX@xxzWow49#7#7#fQdbs!TLFqq~!4 zJ6_m^E~zgw|7eC49pG)X6cx}bn<9t)lYQlKQ+D$|F@A3@G6C?H$M#m!E>Ns~W0Kta zg@Kj;iI}LJ%Q-JJX8g!k()+>851Ogh=q`Y0%p5jluIcD=Fz-?nJGp$h5#pocW=dTC zw$63Ue7)+`NoG>aY!YW`?go82n`?nD_TbG;iq|+)uOi3+JGjwdul@OaLL?w{2SAcO zDQhq<4;*avv?j%Aqt~oDHGgX>hOaC@yeM|PLp=sz`KNV9Y)|(T&P4wlHK1^{hv=Vw zyeRur`z@?Y7bdIwtv)G6l7cAhR)ID!_MXxot{bc>s{*tJW!f_jMG1bJPdsor zb7mdj{Nkl9yG!t?*3q5rrtNNYpL8|J0yM?DqZyj}$jBB)AbgF%kqJ-OKsR-wB3~~n zW(j$3+ZU(x3!eM4r!Yk5C z!@BBsLA|8=JREK2RUXkepIW!YkIi?4M;0ab3y(xH+?M8%QyYLEs;-TH`T6tR;HI2x zn&$`o;pcw738{C?i1nwPHaC|@(6wm(3uL(qhkik%KP|4`WFw7*PqDw?>J7`otBO-8 z6J>UEvE-=wX^o(|+JVwQy__4Op|I{4iQOjNNK@(t$qflC4!U*clX!lvlQK%G4QJN1 zZ&c%%Vgay+3D|%FY*(T3RYxx%@Fx72xBPX}(`(~z5nl}! ziL*mwYh*3!b!_0axrdTY@fsY0ie8O2cCdh7jz=9L*PFmYjbiHNm}RV>*!nh&K%F@o zjeqk}y`QhQMttrokOU}{LsEk!?MyyTYY@50B?s+jcLtxm=C~xv?cNTNzqHPmvx}G*XG?YWiSa1Aq zYCWrhcR$aTzQ(^kCH>%GL9PD7*?3S_8%Xg>cGLEB8$U4a>8c>0+#(VI7qAer*w0J> z7-(0Pjr2+2SLg^U@gacQl_ZR!?)LaVD{WqW%&c` zd_UlOVkO&{Y|2MXWmqb!rcrb@AT@0Dmq^ z&%|#}(E%kMi>?D$vS)qd6mlBJ|J0I(QZYGg0GF!}904Rr6_dAsJWjG(eR!%59m!9+ z8Lp3pt_OQ3)y@H1S{Hr|z^wsb6x`tV%7+~ed5!;2fTAr9QGium?U%UmF4x@jOxW3b ziVD1blKfI|lH!kvWW(7WU5YDzD6!h%<(SXDmCsG;d`$g6*3QG9&Ha7jr=_IF3Tcf7 zNzBtzqw3g%m~ph6wx>qbR$7~w71StEyIP~xFMU0{`W7Uizh}gd;=llBo z2j>sqWqh7I_vgB=>w4=-{tGc^B0rXflE(;b%rMni`XPZ;@6i)3G$mjcXp-JKBrEfw zkFF7V0&u^er4F&&VOaoff%vTwO>5oF+ER^pvXHz;C*cA9Y~)R^=EPw+E1Dv`n*t3w z_&1tCzwUX?2CP^-iBQUc`eNUHFMS)JL@w{();5R;q#V-=l-HvM^W&ABmhwJLBo{XX z(ye}gofld0=J3r{XLo{uD;T9VcY%XD>|R{{qFN{Z<5oD9`|D!xKRfLzg42 z{Q(7ysNjH`*P)~mHKh6bdGJ@m{SHsUqrrwx4+vhFD-RFO5`~>J*%qo2tV3BP6IFa$D@ltJf{wT+~-rdn#S;S2W4on=|uKougarL=4>(q zKRj9|J5SFRd@vHJqnA8@4d!=dsgC=wtN% z{AuWRH7a8yh$dOXh_q^nfy$B z&cM#QzYqLQf%u)I1g!n2(Q+pHP~=Q@up@fXV?W);MVsfe zyi(qDP)_y=)rj-A|B9pKk%cI?WBRj)34I9{jW+IKsc-vBohy-B|8hOY1mhtn9bzNJ z$bx4G^L~y6Yl>DfEnK(7PY`?(W*! zs61<)ws3eyg!QdsPKwUL6&U4`=5Hg=_E>07q6tyN)?4M;2rwa7AweSE!Y_vOqQuk8 zAg8^TxxUd&S?HI0!hMLxI}nFu;m^38c_7;YH$?;@@&bg0Gu%s&%0N`T0EYN07|(4r zAAU2OD3oKXW9%dQ4{`J*bTDk#rK2(UOvsrYD+`y1`jFZ%uZ}X*x>o@0jT4Z2rI?>X z3V^XFoPD{QgGH|C8(s7HJsZ$}`WAf+lw|Z=8Wqs5dcvLFTG`5WEnhWx#QDbAyoQq{ ziN6}F{rf8|Z4}q}sN8uHc;10S;-K%LFf{8#8Mqdi=)r>ah%jKD?gCZ5hOU5}ldAD$ zkM%Z>vz?tKCYL!#(bYFOldsuZxmHCtJr%rIjKoXUYyEV9Ugw%c>u;|ZM9hLn{d(M0 zQKJ`Ly_-VM{A8}BLs>eQ_n!)8VJUG}N`6W;tmbhRKD#5?$rLCUU}A!^U%!aro)|98 z!)ntsZ>!EnKy)PnsboI8C;-JnEF*tRFbjKw^zDrP<9A1oN)t7#y-5=yo$kzgh=5S; zoc3PN<5#cYl3%Sz0FP#hx~wiHWbSk}2F0;T{Y-5pKem&)SCr{0N`+c|rX;KV*1b-n zXBkYhmH&p45jGtx#-Ng^iQJ4VkVK{mA620z3QddgKXbJ#i$jsghLMZ0AGjV3mDo0t51qb#vbRh6DdVlV)M+%^+=i< zyVVluY_avx5Q2cWnKjmACXxA$4TFR#ceB`crVeZ)CC!~erEP~`IgTphBX{OD9{rVE zbh%WSGIV3MKf$6t^vxqM1}|-h(Rw+yH6JBAumuxp3Q6c`m9dR`h;CMfCe2pqbrr;^ zr{`?d{I>+e_{&*67eS`ziw{KrPIrW%Hj@a8y_o%l0YsAyM8thCBSf16&m!{D0$S?=9Gl*7*7+2fAe)Kod zE@*|25l@B2>XMS-D$XYL}*l{j|6-T$@z}R-SlwW zqP(t>&d=O$n+Z6PF3wZ1FJAh6`g5*n+A4}sx98O{edMzX?lIUKj^oAoZ#dkol@_9H z-!*iI-ooVg;h~Ir`*@@JNJxf96?@T@Hc18Pj}K}CK3=jP+5}}e{fPuqmpTS8)X1~M zZ=*~SqXG*b>K7nUaxNYAH!8UKOp()YJ|V$okE(;Fz-eQg>AHZ!$z1p|OFh%cuRm2u zEjkOzKVIKwl4{}PqT6{~62UX^m(7*5<`%?ny)kz_jK3M}qWIm?Wn=e)q=@s! zN#&W+UOyakB5Z0kUmCgg@hw2|(i%Ruq6v9KbaCX;K7FI{g<<&5Qld2OjTb(uNw}<; z9__MsEzplJP&l4ssTwlCBXVx)Noet7ipB5cHB>SG(7qu>Bx2l#MHhUac@1$T9TIly z96OxLUe6^AYwN66`FUcLSJYAMCJIVCc>qVu5&x533(FdFhfSq;VzLV5`=+cR$?8uB=6b7G1-Emfmao9lk9SHs2W_ z2_)|7FtTIo%K@zEi~j4(CnWc9Q;7s>G8C4DsB*dbP1U_{>ty=_i_-n6bzP|m%CS%s zf%Oc&_Euc1uID-|>qa^1@6Y0i45v~(?;Z}ihpE}lHYnm*2!i zGq63A!b1cnTpUh;qv2q<53imRDEF6WM%0BJ#_Qp3j7)flb2CH)UejL~?#jj0Nvq=u zDbXwMbA3ieyn{c4Tf=v^S(Gj!bk!>_g@93s(P$j3ip4gU6kh%k8@kkXKp)A%X`1R` zFVe!;RPoXLj?>TlohHowba}ExAD+}ZLq|i)#o2>jhFfaiT>4`N9^9aItHtRMwHnhe zpGY96Y>fVFMoP-PukE=51%5XF@TD-etv!yEQE)RBuEC`I|Y$Pih9EOi_O>#&{O| zUCJD)+l*L1d^Y7dZyqF7^tu=HC;BfjqQC*VrJVLEj3V_KAMQ?J>HG<%3aJKp=K;U) zf(HH44qQ&4Je4gh$zQ7iZf`C79PWPm6oOvWM}w*e|b@tsHMC6{zobh|S#G z?|};Ojl6GKw=)`OAJd{~JDdltl-$!=Pc3)0=rJa9)`#7ACBnK1q`lt=$qE?_t52a> zPjuh@ZAFdDEV5DROaH>-`{V0uo{6eU`vc4T1a$zDoi~_1H(lX3ifho+&^BFSRsmTp zfAEpnzH@uF7P3=havZK^L@>~Pu(O)XP(L5uT*$pA?DX=5ASvVW^rCEkrl?0~YlDFV zK}|&KEQF4Z3Pc=o8@WjAwtu1>ib~(qJW4iLLPv~_Lhkv2Fh^upPo;dXGm-esg|AJe zleCWmDy@kkV;Aog)?tOwebrUnjZ@BtsTd9HO$BC|e+S7Ak~<%5R^IHg*LV=J&5jD) z$e#N>JWFWb6Y2-?qa_i{=xf=j`go5l)uD{Ez1}zCL0-BC^n017WidldRvYC-tn|6L zzDE_IrKa%2aOe6VSK;nReZM;|qN}e+CScZZL6)oZlu=8jO=q)eql70$wI_?$`f*5k zA$2qrbC+!w5Gz!w=CgusORFrmO{gwN=mX9}f^J}ve@Y!DyDFrida)S9v zs+kZM4kPXqfC>tV4KyW&h0NgV<%{ELHBC|eKd7>d97u$JGf;aVP`gpO+nKq_K5^-A zsMHIc(Y2}>uZ`7)qk_X&G(ijS%IK*LDc~}KI(u&J-6eLOs04cTYkwkD^PUgnw-Jy^ zkE`1WCU6GGRjcDPKv{@cykn{Ot1TjRfG6TjI0w={@%NcOf$BtXg#ATWUHyZ&b95vQ zY2elGq9@_<<#`$C_ntz;&W9wrAzM&Mri;CV__sUg7U%}f{v=-oDb8IQ+)^y8Y%SoD zWH*Z7;-Mt?EnPb^55LV|q%>o=${kh5NiE?NhEiW1&9lTNmLY*UZuYRZ(`MlxL~1u| z(_FvxDd0bn`FMqXYd+gAgZY%SfTuMxwV!F(s%?~1G1d2-6#s4;Dm;JwucJF2e?!dw zBg--Cj-e!x1*FeNHwynp;5-t|?T%gobii79kdUj28MWHRB(LOBwB@8N>!u z=Ir%CG804AOn4}c(!~t&Na)@=??JOodF4Oigv7OnN z?$S1w59*G|vdMyh3c=E@6=h7DSLOO0s135+6LUKN&)B7lIYQ;QH$X&hO8@4Va(HGg zdJ9`<6+H0(vOZnse^|C$ojstd>Idptj>_J znN#4Bc}ug{Xb)|M7_#W`2HnSuR59p>F!Xb}Zl-UF)cdh3ecQa` zqe)y`q)S;l(7fdz#>mYJt?C&zx$0*Gd2n2>O_YHA%>>d-QLID|*Sw8a;L4b62M_e6^@DrfYNvQEaXKem2md`S#4U7LZ5$ztcvt>n z`#CEY#RPX{xUtOjWJCxcXjVG|=JM;(EwlxcX)fgMrM8QQpzExcT@RRwn3Z;48A$Qj zSL3h1@F;N#<7rFM1Xx8CWb0>DGhB!W@zO{kj<7JuS5w0N(t>HS<$*Mz?R@IC8QHRf zsu=Ls5|&&{k$T~t~zU3g@66_)RZ-VPJ4VPrO;uM?Q#l5%|AYRbQB7Q(nkSV5j2}ti; zX^Z1E@pFpY#)$jQ=}ZqrProR6p?I|&a!b0|t@DcP$Rxl|X{6Vxc4gngpbbAo5)T(=$tM(9g+m^F0`yr_RvbR*$_mNfk?&P=8}bX1gGq>wH(=KGe)!NhRB zX!~U${jaF5iHCo>IL2T5+?~|BsvUnXkRn~?4Ii#w<4`hjg*(2@;7yUIxRxGijJ%Td ziIjLUxN-j*l^2$ouwCVz#8!$CWRmuG;pVW4?UTu(vgRaRNg7*XO22=$W}=0Dwj8iJ zBawpVgDw}T1j1(bUS)=QE7{R(*-8?*vi1q6pp0l4j_FelMld8R9XoI*ilAig%cx+t zysdxs0~8-E>gw|TN4_62JNRfVU+`aq=;#K$3>8&_F>cq7>kUsMZks<*Ysy#Obnx6P zP*?tp#Y8U4+b(IW)L}0D1Wh{W2-5g&san~Ta0CbIjb%({22m%3O>B)jPQ)u33Elmu zD~|^sI$rlG%=mkvI%o8w619bNnQFa+XbY;5nc9~sJb6)d`j6p{>8+FysEfF_KP|Jt zF#eVMp*HbB%!#kDu0zO3txM+xJIv{s(8I5gSeu{yqQM44FH0H>PE)w#Rr#=5eV$4B zQ2XcJWTd$3Kfbsf8XLhI?v0?n+g8#BSKwHlUL9r#WkGbhT6m|$ z)Bz)DOZ_-J9Bv0^8NSLo@$zTlP-5$9IlIiIr1%6kP3_-Mqr*QZ;Ygtu@Z%SA7w*^o zgP4IYNxYD(e;iYW)vgQx1|&rt}q(%J|k){7npKdpBFZl&uIi7g7( zj5b(zw;(v4&i*iET^71nd?QVGvp$_I{-z!^_q*&$nt&X8aw+4)cT1Fu_K?;GA$0kP z{Ia~FQo*RsY+ZWmb+31=0uZLmp_G^N~cWH<47oXNHy>CXZSBn|ij06XD| zB6kc~VZThi^bWtrG9;@CUTBAq=J}TM z4WsH)_ZBG$9$V!3TG=6l}``zD6Qf9@F6=g0eY3l$ki>=2X(Jtjv>+Vbaa zy}obA=h(2jICy?C_&s!M$66gl7%~`t-#nkTe;;(PON|0AL1l zp`vm_LTedgti(KqCD=zeY=B!1nYA!@joOEI!!c^nK3PLg1^bC|gNs=$qp#ibQc7&T zHz=i;ox2S3V}6W3TY0iK<-QmFSX`4wz$qMA*Hd*ydo|sz4YMlImzbKEPw>HYtjDqW zPi}d4n4h+H*AZ#I9DtFWNm)t338xOncan`-!*R6>IWkK*;&r0j&sI(gEwf$}?F0_6fB@NHn7!;1I~&JMrj4+fWvy|ugTEMS4=p5=rm zO72xa+Cf2RtT#eC;%^?VjyItq6{dacnyd>P=SjBUn_y{LZ29`KK3=K-U4UqT>u;yG zE~JYFk^MPzak+vr-&~ukL5hOAoa%E=`3XHdZLWN>nKU6L1s{a#HUt&H)-X4~tPQF4 z9TpYD?C*9McSpVl+A`C6tvc(((JY!A*!}a zknidqJnNBO;LJSaBh!8eROt0dN8C{2WZ=ICY-_qorc~6H14=?6UWl;#COw7eBxTMv z;$$@{QVm!aFwMJ(GottBD~xBl;#GyiIqlH;AU9Cw-b)z4OF7xAD@-nARN^8>v&ZwO zlVU3ls4b+7hIh#h4${u4KNi}4C)_TUH%DhDqdo@$#L1fvE2{ESHtiVEwULxwti4h- z!ZOW0Md6gP`F@<<5o9+@M*`vEoGdLqxN5Kdi)OBSauUWC_L^w@tNE>Cfxx5DqK7F7 z5JN?qQJCh3sogne^Bj=Wf@=;rRg|k1x%Z7!0pY>N0j$`k76G}Zfa(-}M7_ij)O&6ErY%tqz zkV9-1)~7tZVa~T$EZZj8bknOb7u${ta%9QN;muq*yyI09Fdl7s89KfbjjXpf*rX(> z1w3yJAk>4;58p|Z^rbfw#>d9GBkMZXRlQ^@rj^~bmW}g+&8OR6;!0*|*Ez~>MMk{D zZmQP0FBz8DCZ7+i|H+Si9-da+679FrXl%J3*feEwGd%O9?+90_6cTlpQ$tQq3}(JLmMZRTY2UJ9Jq&_4ug7qZ4=uEa zkpXT4zEZszlZ!Fu`fc4vYQ^1Ff?kB}N)jp845mWxR0_X3)umREHU0>Bl(JFk)tKzB z@?VaZ>!6cX7yO+)#0B^z085jNKp-IStMGgT3olF2FER`PnlZdKg7;#9=p$MjbjK|= zpZP9>4AU^^@Pht@o%S>(9B2>j4@YkQ_{s&TjAwtw`Ft9;;vlchgIsr9S%{Ig+?<5( z*0XJn7)T4$-gtT1&LYjP&5G2q`bSIqvL#(UU&^qHR|1}LeAr0@kwUlfd34F ztf#F3l3|Od0R_&V*v_uJ`cH*!Kj?Z-I7kO1OfJtQu|<<%&sKB8V>|Rju9hlaMq+N; z-i-VUZ=@h`Htv2p-qVeU;=kq8F%V+wxmW;2!*+0btd-oilhipcC1Hv4vSyP*(&Cht zC*6ckaVK9}k67=whl%?axbI4mzFNOh;GZLW-Z36xRv$>lY>1^BcxtU3c}QnBRlBv z)-edsmv;9%Aj80bYK;yKh2LM%+eM0jM!HXS?nUl|!WGB~eR3NEP8~N7(urS2Tg-0;U*6zI+ ziYIn`lG)dysdjS(5~LXw)65;SvC#&nyZ4(jQswp{{MXb@JBAjFy72nad6Gf}s_;)b zqh6GsOzoM%d&Pr^BC;V9V)84wm`?YX(EC*(_!l1kHsZ~Fkv=BVai;~33U)_zZC?_I zluZS_J4!J&5oslYW10IW+SHZs)5qsuh7X_9)@o5_Wl!geuT{35TGsyIxWw!<-G zP2pa&=t{ghM};){Xj!rQOBXDttD5@UUu|~mo$QT*2c|0SS$d!~C$83W|q?Ylf)LhlAuN#4fz-azh5%o6I8cqh64L%E0TqKc3= zA%cmK3lCPXL^uIL>JI!`fL^;cRjW>ORwMqViMr6Gu!|QNxL7YT2wfgwzIE}QwcC)U z?>{+G)FdS@mWcuX!c~$EkHzPIefH(3?dfLJ5zA8szD2rO!J^!=5q^VyD=1xuvF>SM4XD?vMu!X3JePzBRbm|tNHKO_9*SjNWA5v4GlBZHEjBg69MsF}Z0zRR!TCn?Quz6i*BBXW8xkO6v=RepHp?!gb%L4rgnoLrSrt_INVwQ;Bk|8yQoG_1xesqcwERP zj#n&}xp*aYZhJ*quiTz1yryS)f9k|HkM`uL*-N^Zp>!6;<9JQqMpU{*DOEN*b4;OOdFpq%jPJ7 zFbm*>U9{_ATp%!hw>lO!OmmBG|D zmHtnc^_*%s&wRu$AU(UYDAowUx{pCyE^Y3gAiE1%9`*{YQ(g16an1H2irtrChN?UG zirKhi0z4oLnwb?tiETOrY%3m_0tBDHf%CuS=_pPg+ZN0-m3c>Ob!yh-1&nclAYPBA zYB0WLkhx1caZ?2Vc%8M~jm)#uKN<-jrQM7{=GN;J+jFx;361!uH%B^6KE)OL*u1{h zjJ?fSnnE~9I*>2djD1uhu3Hf50J@=6U@u<1~?=aUiT-s*+1UT%%;d*i9R zFR9b2$Lf+%g!rI3Kl>3VzN1> zw~(FjcaqcVp-poM?>;>zj!+!0qg~-ntPV6JEZ^OCF20;i?+9BgBbgBaqc?v=N%#C& z{tvU%a)3kgQE4cH#rkiUYVxWhiB~2yn~!H}dDl)>H4ftZBda{?uxnFxzfF(2s&({0 z!Re3PI5S7V5Qp5TGqUJI4F8CFqeh%+aT$!McFnjQkMQC+>xu;k_ z32JX_Yo_5{3o(7lx;Oh-{Osy;1`C&BPx+M~C&9~>y&0<4s^Tq?ea%%`&N)l{2{~0( z8?#B#GrBK7ha9aHatMr9O0rYszg2%yuOD}4Hr*^DLzUHz)E2@*GjW~4hMT5#(qA+- z)1?VuB|9URE}FJgxq=k;XuCR|20PD z$~OsJ16p-+2IJcZ+fxTyWC;F8^j4ehw5_Ib(iM)N3J4jGjM)dl#yOv@&< znSy2kMNqgx0U1mc4|*t1bH0NXs&a4B>=REoTuZRr5Uzk_VfC%X52=FK)mYdb{0nbw ziu$s&sPlk~iNqxSUA0@yrUh$nZuK5ndv%fJUZGr%zDUbExhUxffel|FEW*1(Q_|Fc zIj4EUfVHL5`IDa!mKd#u=`R%CYT4b^QyUC?0pmMx+bpsBZIYIpxnvGKUp^W!(%YjM zM^!wPQW2qvxcS=H{gmjk(OliXV`~D_cb>L;WFS2}VkZbok$HUQrp)(iq^t$Kp5G;vVOg6Fg|#UO;7UyX}PbV+uRyVEajJg{o!0vf6(VAQ`ltA?awm zP$jlI;t({s*Oxw-rv=Lr~S;I-5fSncd@YFyia`ff%jgYQ6m249~Z?{iwEP97F-IpGkm)aBoU?)J;& ze_9e>?BXi+@zyr7r3|<`uaJTkv0t@Tnr8jH^-QMzvn83%+*>_sSOiwFI1%suS0y|;hfbga3WWnf`9k35UEq~djH&oepOW88O% zT6ys3!DGXdo6MfV%AW=0t6kt8OVlQ?E$v5i4tc;<0-w64rx1vFv}49v@$}BkgHIu{ zm)X;S0{w)XXf0>fTxR`FzXjYGEqQA-qjf(3Z;KRY5k_Ol5#>E8N}QNfU-^zc)rQX% z21eeiwZ>Vm=58XnLsFbsg^w7+CkmUO5RT~6*h8_yY?2*|ZbW>^pehNg2U_x@aF*oR z{YGqq?Fv_PDj402NS3L&MN(A9R&Azx{*hfjTsCG@DfR50mCJB(PD`ww$z-nmq7l%; z{_xCHWspNRJvpU0v5G6kXWVh%p2>Juyr=&F*Ho8kba%_0*h#cYmvKuRv$>s%?!k#$ z_F3#<_GyCUsX;DjAjT=M$WG~d9k18fkb$kUQpg$MQ9$--x+`JJEW^hjgU_mFxlq0- zCLyG480*__HYux4jkUPXHS=_04_WIX&c5Yzn}3ex3-R-Qn0)XKc616w+*V-{=D$<7Xr!nwfEDQxM?HMgcODq9 z0?ux$-b98B?ozUMd>U@8e61Odli(U*wy1clihS>0SOZqlbfCod$gs@d{Cn;)-euGO zv-J=J-Ep^EQ45wNX$kc<&@z3C9K}gy#X77)h@vl&#I*y0JW0#Af&j_sH~+J1MajS` zrebxx^07ercS#?2d1P5`%n(oGaP!1bh4qmZspK12ph_?(Jy|{|J=OT!;Z-$eLrqRX zeLY(0G+klCkmMlmI|2*Js2*;UHWCRwBuvJZItVF4T_;E-L&rF{$)lPi3 z_F;%moaFv?U&nVJq*!EWSBi2OVQT;zV^vYTC%rh?l+ifR^f+Yi{hitB36|kTLS#$g z?fduB2aSWp^QfH}pW-?>D-|u5wc8~8JsB){N%OyTT)%U-^qof z^cz{VC}fm{R8_1#G5?SD=)ipTs1Zbl^G z--%GH;Gg=bax^WX1Ti7bEfkO|*N<)`w6?hxIa{^nt8Dm&=`2f4@lC~cu3)970#rBl ze*`Io%qYap&xeNC4sB)dX1JDq!#qB+b+*hvy1FrIKQRnhKC+}fzO9lViad=LR$Pm* z?>{)n-l?~Umu}4uhjop|4I&8*D+fLs%R7fzE$<9BQiED*N1Rz5sP=@qdO_mtQv09E zDpl?(0SP(ghc#JS)U*b^u!rxjJn{*}vLYbxID_iXyUl3TXmgOw(j zs&AzE3~ntuW*xoE2`CiC+zZLKTO2G=4>EagQRrCHm`nK~i#1<2$1MdG zW!o5S7J+-;?Do8#`q41lS4b_%$37;DXoN-FhgZ&QM=J0y6#>%!IY0icyy|k@yZe2q zbbJ5eF@5K}PS;a!@~Bm9&N)gHlxED39TsZ_=^=v~M)=JBoGG7YRSs_99dT~n`ERg0 zslgFrW>&MEp=r;~k4Yi>fFs*?pPu58E^-`i{3))UX~I z|9JXf9*EM)JCLL`zbgJlujS>@xu&e<)r^%(8THaM5}l?r1F%R0ef$r9q?Q53Kxwu| z-%HcKOOtFmLY^i4*8I(r-k#eO0+|128oQ|v4o1dXuvI@iA(A;Q=cii}$GbqTgx@0PXtXd=dY5Lrb!_W+Lv5prYr|N+f5Hiy zHCvo7E&u&6t)jStP!c{%%s3uPcu2QFby@lvD}`)%M5)A19}T<>@hhozACt)G5ss5JBZ+wKnv%AbFo9x^5D6c%eujTc6^+np#l(PEhh~^ z-P#@ZhE#YYe}qV6`O1uHfg~pJk3`v6VUHK4ui*n@Q6l~u=A>u)KmoJ+K0S{HMkd1C zfvQ!uEVM?KZO7YUEm{B|-39speFT1B!^8~m--c@YqnykXV%AUZLR5LvfU8^8WR>IK zI^9aLPOs~L=L5Odh$}+KmT!acy!(h|pnU{pMz1`9if}XX?P{6^;)Mle&@yxa#Q~Rc zDNB;}MujfRB0cA^|D0LX+FIlRr zz$4*qc}NAi2?BJYP7k21JJ8}&>XiH3yB0i}Jw25L1bb7_% zLQf6k%Y$2%Amcb|>YK^X!s+y4H!hyWU6qo|OH|HSFf>~EnAWY1q;k1@U*m&>$n(r@ zL`W)vm78}D=syOtuM(H-v8d?P)B3Ide`+IOmlk zyVy+e!CMI^XE1h*MhB>bx{piluc%N<-<&h6t)lXoGF7mT&1XJv*jpWe*I&tQsc>#A zCFd-7b?tnsXMisDO1fmJEU%rn^R(QgPWk%wi;e@%_1t{!)zrWMM=Q43)1Q8@ipl#$ zl1Sc!_)V80xq7ve?T+qQZ?T@}{a(q1>W99TN*$ej@3C8>1m9qZZbw!}=uRJYYZtKn z{=^O@*B|98P?z_21G{YW6PoAw>0R8aR7%8!i2p^0qhX?|ndu2a?q*R0Yj)hmHvy%w&8z(^ZAdp$2oz55XRxQ)(#))Oi{)LP5 zXvvrM%*^|=K1~>hqqduDTdA}c>ev)W5Ef^geO$>8+Zg0bn zV6R}#WzfGc%$}YA*BMG4SB_v)21BNQ>M$={yd|2o2Ny_>O4QBSH_;(#JXif$w`fdH z@W5lrK4E(r>^&~2QkLEyO1{`P&<<;rL>u4F#} zIL!I-#HA=+Vjd|j1ZUnO!+A8Wf5OwMj06%DOwq4H&}z7wWW<|U0O-PhCPYN^eL(Gt zE2v!c!QwgfScL!x2auAB+NysS4+Gk;Z9$^RjyQi!P^I)F-A4-P_f`Sc zogeqkmG8>Bz&j_6&=v$i`NVSkY7gM*9nhd9UitDGMJU?H@)s?*YI8F$%6%BQEy+V<0K zoMOJOkQWmVV>> z%c}0q$J0syZA@*X?AI%s+5>c3mR9S-c?MSG>6%dj33J>rA^M4)dJ$fcWv5mvo~Zo7 z_rOAF@Pr+Jb&`q7zo!*F|t z*}$i3eo{&-Cq_)MDpR{q_vx+H%xx{p6OOAy&RXK{{}W9A3!Cg0pO`NMUO6aIC>V|d z+y~BZF8GzYfM1gs%r2rX@co+fOEe-P8GJd>D-o6W`>Mu!jnScpTAEKZ^R)If^E3oe z5&v+^Uoe~h_-hdQanDt^FPd;vrp6p-E!={HL-nX&S@oG@Y{fe8upnD-m7Lq;l>1_& zs>tsOUw2>umwfl41#%hc+2TE33>de|s}q5*#-c_sF{#jcs!QVf+@GoSWOz6&7|2p8 zK3tMv)U=mU(tm^jHXNzrjqipepW15WY0hc>p+(eoKxu15ghR91oQqADWqiS5;K#I= zpTkClTIgmxVPtJy8~fT_RyXo=vuAR;qnJ10*~$UFu%!gG{J^Nkap6UVvd8^g-q<3~ z+FzYIn<1Lw7HHKT4fLN>=IPbHVdQ`5taWjmYiNnRcFwLH3^iy*C9CJdc7+M?fgQPS zhY;uPGG)*O9s^hG314kH`S@!ye!ve%&TcR{P}#URAK66WKP2R=U%X&8&>%BX8ochD zvKpa95f+PBq9^r;?Rsq)~Re}+}2CU{zCj!B0u6 zQa9EyeAPgzb2&8UaL@U$aNPIzo)VllC}W{8Ih$tf-7%@T<6s8rNTDZ0@2>2>LzXzoMm6f@Mh zKlG}4*1QwGRWdVxpwZe3O81(3RAGWAlNfq3&blvp{nK@7uJOnVLOQ(2Qf*Wiw1yIS zXHK{WJJA+;W7KMb%UeD>C7qu>k(J)5mi!N6Awi731mB5mHU#ri4g}+6%^2_JvCm!R zpy{l`I_i}on#?E>jXyQMc=YjcG2CN)6<&=vPUE47gk7#oad*~2%B+0+^_8gCWeTI_ zBeYF`UYG{OJ2}<#Y{}@%KJ7}rctwBkc3(p*f)P=)s<)?+4QWkL+XXutA`h2PM}IJJ z;MwgPH}TKHM8X)qn(S=z_zs&xPPBS~ytL zVM!;=MQnkBdqcwII&mc3aT|^1P3!>bZhu-!S{_H=(Y984uXTQJkFSalyimnI)T?k5 zC(Iv0uhLb7Ve$UiQ%hS1XYEFpYjuHV%(z0a^rj1OLo9^62~L?JHT|TCPRg zYL0mXhi#}rNo+tWL_|URi7#eKvi|@4ZpLJtSJb$N*mSWsmSbk?H-`nwVKgexqYyL=>J4#>R}=abjI&~Niz?} zY}`2IJAmf7Wd<#L-BL&h5*8A={&8a3bPcOD^2aC3u@|IZ{C#Z#9Zn~_b%L_J!csDT zda{&iZkTmx;g*=8(r2cpGTH`m|M+%laOg|MCafi##VQSQe#j~dPWIcJl(Y2?hC3lQ z%m%OFT~^*zWsB6_ypq9eSY+WzF=GFGwmFw6Gk8vXoQ2IVzy5LrzZ+0Du7`iN*Hr=J2s-5sCDfR zUmwsyI`$A^RgEs{W(p*m0%U?MR_^A z4kMV6n~}fZcl!!D^o@4wwJRk`l0yZJL<@rS-Lw~Bw>c}PKSyC51n;HNruQ7#MtC(Z z-@1b{AAg1C+AZ%*gOaCDemLCLmSr?hM0{NhzZw?%&?Db+T<5!kBrIG!5KF8^HT1?k zMjSkJkF~55s)m29yWlEbGslR*>lVDN0%CCcv5u;C?x%cuUJ*&AGq^5hyjX#-l3h+h z#NY;*B2eGY8%rz@#*DQEtYj&mJ9`FfJ$8jF+4HV6SIDrI9zyO33%!N{R?a8Bz=#-U zKB?&)dq-RCFe$KBm0}}%{yhz9G5qG*PU)xVC%7jsruD!XQgw4-Nj!o5vkx4}!XrX= z(m9fs0*f*PgK&2#?Ihw~(&&3$7p+L!H6i#o{B@J%-GuFl;D~P$F5963OSkJQ^?oeS zQ}cG|9qhv|`ySzMFBMIfKUJmqCzKDQg1f+a6I%8)2hvU3?MbOi0|6HlR>HX_2y9pp zQ=Nm#s|R#H6$%|hzptHW6PHq>U{3K{=wfXt{0oV$@1+qz@?icXxj~>-)l*8jY^^pV zR+w#4i@;E?y#0ltJ6nz&^Q_;hD?b4Tz00rv%`Eby5eR?CIH;*@Yeg<9oX@YsQbmk0 zwOp#xoUjM_?dQJ=-R@pTr^169wg-wFnZ?vsYN@KY-Zab^>}(#!RPpWb zX~M*JuMLH1C0BvK-(S(hlKnd-r{+r#8M8d(3MhbQ2wCy#{H1IM!ZIGf+wG(00@TW>Tz?+Un=%w>;z&7Qlu*(nsZ}w?Gb@eu4fVxg;JTTDvy<&Ttg(eol2yIEl`1^{jy0wsS5f zreON3qXyLurcst*91B-t$9iL|P8M==*v@*P5}aQW_pCeBGWrZ{t94tO_Xjj~dUV~v{MndtC2z)wE?n#PcPw`&&3J>f*50b`P4aA4C?qyy zs_eag&$)nK?dm90{c+un0|qDn9b$O`$L5#${anchg=(8m!yf_rUHQ&IcG9LmH9GMP zXMdI)&eQAH1nXD6@dJ&|P{vgAx%b^bV1K_L*wLc=)r}RZp>1yWok+^_A?Z|5g17SS z==0NJ`6b>Yj_eaiVbft&S`g{i#;o{D$pI}v9)M!TF_I6x+4*}R7R2qf(PX0HC8B`) zZ2Na@Fmx{Zj}OM+sHD@A_kG2Of${`VTh(@$qhYWKm|J)p9B4K>Z#b8i5E8BTbKW6- zH-*=(@6qAS9Grd-C1xvFcH#|lC0 zr^W^87m~n=N0NH?s1$t5}E}$vx^*livxs7Tsaar~7f}Wxgh<=HE z0*O2VRe2Z$GD2s#v1#*bTWbG48Z{@(ggIp@_vLXSjGfJeTp^K{L!t}-J}gd7I! zQ3K&c*dq9a8hc8o`VxPM698118?}5N6@meX%i1FJF1U?lf_a!JxXp@?BJ;JPp5mM{ z)aQsfWOc3`9?)dYa#EG+0-ntvAP}+|kzeg%x}l3dm3K>Gxz4$^O7E$G`_~5zU90{0 zaefqU>|1kfv3BysRaHQe;!=l!Kj7^J@9|$$jGcE+5Z2$BP_%O3D|_D~zJWHVL06Hv@3lmhFlRjPANk0S3OC=TdZZzXZCC+7%3aWNM4 zcdTWDD$YwJV5t_lq!6?$%=&VRUb;gprhKrv)4oL)xb$w9`FGyvLdFwv{gc(#32|R= zKIMK@Idz%LP8|Uee;=jPHa(8*V^Pm+EZ5Yna=Q^4^HA4PE3DxAK(o`pA%j*xBBUYn zk}YPrj}to{Epw5fTDTS$Juck7;_DcpEcYH3DpUQc+H5OOHn1qfvA}dRzn;J?zlNpD z{9Y~`Rh$3E+F7_Yx&MFos7Q#w0Ht9YsYfZ17&Qq61jbiUk%oaF-OWHk7!o5?Ko}fF zK@K@mTBL@=Kx%Z2(KR~#Jv-O+`w#pR7~AuCKJWMIb>GhJLd70?v(BZ{lWTar&hqFeZ5TQuL zh*n)VSjCa+y>=aaL$AmxvL*Plfqjz~2h2i6F=9vMvW$%Zz_g!Ky+e>7U8NW}}Z zmnUARfZ9MWL4_h|B0taYFaI^#Z1$PPmWGAG|0B#to3`dMA+55NheZ4Nkyqjk_3!sQ z(co<-OHZ%2rDs!fiSKs!mR(6gcnI5 zMB5(yKi6Q*H5r5A)_D5V;9oV|&rSt{%iEd0XdC8bdj9-&^oTzuT4J6$pr&)6-KMR1 zJ2|@f(YXig#ild|qA#@nPFD6zYow0qXy)l-;L!T*4I)fjq;jO z5nyYhh8N0x%EKNS8!jT?5j*S?61&i?HuidUheHuC%8XI9}CXtjN|QI6RCM%Tb{+F zsThP8kM+I`FN$Wac|Q>6V#gxk{1tpMWOBkMN{@9Hl)5jqhkoi3!-yl)SWm8<*zNCE zW+S9aUn@Vf0M=p5Y?US>9h@G{qU}~`V|{`*lr*eu8#<2Od|h)Ej=8xyDH!uzvV<&& z+Y`5UP1;R}{I9LBoA1Mtc{ZiMnHYB#1u=fp#_hC8veQ)@OyaFr773 z5n-pxLctI0>{Ag2G#tHtG>ZTnF2IJRlwgq7zrKcxQf*3IxsQUTQ8L7dhuLC%um4#; zXg&9oDcW0+TfAhx)x{0qNAATf=7qA?Sf{%9CVq}T@q5oj^m>Nd#M$>ONPQe$Uoj=DJ{{8|fqHZk31MxHSo+sUqKn1>jQ! zRP>w>N9&c(SEZq5-)fj{h6B~dss1MWh}*B@s&?t}1zWG+AchbpL0V|nw?~Wu0HRM! zE7O(7J3}D((>Qoiv19l#@nhYp|1SDS@C8`kW0Z~NP8s7}uL9nMCx{JKJ+|1nD4ysBOE2oh7li{f1k{C}|1jhMtgeHs7vIzMqT!}7{(uzP4>SI7 z)X=RI_`58X=R$hDvShqf$GM=6p6(JX&Sfp{!Oze`Ij0iA+GSieoYqBjV*@6YD7mARhRKD$k|8?HT7jcw6? z?f5HTPA~k6saVqbVD0fD=6wmi`80mBoPRUeA4sz_QRVhgl8r+LR6qM8C)c0ea$mJ< z#f1$>Pvj?lmY8UsYIw7ktJGdoRlKyOQrYchf9ZB+0D9DQaJ3EI7PVna z>vd>bQgF6Tx-S{npXSCAGtN{*)t4ICX9bYIJsM1pUF!6!TA*#;mqzlK$+L$Xiu(gN zPZ)jC++(f%`0}>|*Qa;sq<@V@L(p*yl9jV&iAJ@Dc_R5Jm?4XR(A$_S*{qw^*BCE4`Z;UdQr) z9GGs|V0~lkD-1WP0f^{B>jD7|uVN#+n@NxX>co76EPtbF!JtX8mXxg9Ub96VN(>gs z_A&^+tlSvZlU>?3-9yu_Rd7! zcs%AEA=pOJ-)Ws!f%~MO>9`;)!%r3RjnW|yrKIHeBfz@pq&fwqz9eEgD=WJDCxLnK zf~7KKViY6v60mBqhBg4`gA|CCU@6Isf*sLQajgpD8*7kTXS)guI7UDh33CT zFXEbcc6No}Cb2idZlm$GQ$tXCvH$uS##gpM3{0@g&2!X&IK&*{2APAh*1QJA=$dKU z*k^jQL&!aiG&vyA#7s~tNFh;D*%?xs={FS+5jl(1*F;1rw}R3fgm(M+8=AYm`N;K|9MhS>JReUdx1XI~QY{qsGtV?IFtO}l%J(;LXv?-&o;nKyIiEY|;!T*s z*8TNSA&Q{t=JC*tAJ@tXYnd4QdN1*MU$*hUy>5*{+r>!)ad8`Uw@)VD@WV&oJ3M2S zR-gTvN#`P>`|jIQXxM|EWommhVvYCz;)_pO6Wi1d#V0!oE4;K1+QrKwB`*r9I8Ipv z12Gsyft|_1yv8^SG8RJ*2MVJHq+%na)-B%DO&ENl1KEq`h#E5J*E?X;kw1F!hWGlou#MG=1>I*c& zFJ~{k)$n=Gn|^lA_MGd0_j1apnBpM`>Ill8OhAere^BQqKP{81`uZtT(8k74QI^D{|{T>M$$O)vH3c!r%DWR)R`C#oQPVLr~NqK zRyFnud@=?^p$Oj&)^bNzpYNyBN={IazhLA1EMo1b&51pP>MALj}n|YZYm;5bVQvT@m4aciBv934O$WqZv z-&%Y1@LK}eAiGfzU6QW6y&wh>2btWyG|Q2W5SX~uiSRb9mRKC#(eE8~&)^YcI77oJ zS0w!@Eei0~n<4w%DNUoH`*zls(p_`}??kKAd^BAL68la5AdCH{hhiPOq-XzY?1~=0 z9N*<5;By&cT=k|?Sf-=MKMri6mP5Q!f- zT^&1fs?^m@$iYV{0PtE1&g&S?f{eWEnf(0lpOC%n>&4A#*o?e$Qi1`ws9apmC-#)) zmVJc6GQwp!g7eHX?}fo+XMxG24msiERz;chypecJF=amXxnGlfHieHka8=j*mgj%^as0jYvPdJ;c zXD*I;myK&;&t9xqYe56dT9$Lchjxv(Jj`R4Pec7(j^u4Z?PCGQ7mHfC$7mLW$|GTrCN@YT_Gev5?x!I9j&r^u2&Ig_oUpW#@m z_JGHz*W*ibVIeI2xdi!N7y1d1mVgnkR^fIZuev(<=)wNI zhg$-5!zJvtw5@M@gsYZj0f;Ll#z%O5>@e|Mde+|SJ&IemsWOr&M96}a;ff-+CP=F$ z74n05L%WS1dILfCDq?4#S9pzr#yP0K4Tx{C7;|Dxoa~xN^v0Ugd=YMeaY0K%KPMF% zaMrgmd%N8}DY%N^bo+$&EJn}Xud*9#u?8XICyDb0$5rKS5~1bo!GT0V-FA1nG?;z( zG_0idHO|Lfmsu~{WjSv^SuVb3zWli7SVqigpxsVeqg3~H^WQj%+T<6}qvT`sWX+e1 zB^jeaFTR)#KDjv7v(xmwJh*Cn%s@7=vi+F;&h=3C6hB2f6=SFPgToBJv)yBkluEqO z@u1OMU$&nUTGk=Q&wFi)C3N;8rgau8QAON!y^YHN*Nvxl)>mxHt`Z>>3E%1EuFMx* zEb5D=#f0i;On|{H4#MsBDt0g8r-7WPqYr5njVg|bO#aJ+%rEgh$EiE}dl~Dk#lG5< zuc0?%#LtYoLTP|O^~DIovF_=SXA|D72CEH0AXv)DObd9A-gLXQX-TKSHsQS6_?QQK zvI2}_ipC4q^{YP$YW#?4#SlmG5UpP%s|F-cGSg`x7%uvT#^wGGIV=L??rE~E`EZ}~ z>Yl)MZ|LfuOrcc9ez%M4Mb%c_w7o=nl^&V685xPbr~ZH*YAr*#WDeyrPTd>6FF$@< znFWwl9$+|;Z0D3+o*@YP{KO%fX+ z?zA4?fTZYZIRYHBUTg9}|&WJQ}=M<)! z(!h2mdpjgCoAm>{*tNcnT$pg$>U8S2Px6}3z`|(GnCbFfV%d9^qh7v%5zg+V&P?LG zyn343PLC`AZw}tMsdyx_+LtYToO%a?O9~d3X4)WYcC%J@)Ecv~gO5`D*I1K1Hrr(| zz1`;ImligYiqc}zU(Dqt7x{RHNql25OvlJ*Ce;)x^5nP8Od;gMbvHX3Y}0W!rlAnK zxDxTP5e7dcJ}lIoDpTEG(lHM(u&5^-jd2E<9+mOMTCNDH;<^O%7P?L{tF4lQxj1d+ zy6euaVIAT{LXAX4SC>Bt`BDT>$e$t7qRd`8r=_87Z^sNQmP#KmvezQL+L>9$c?`S> z^Q%*%rvUg|+Bpz2-H+>5o12$0K5)5hF!$^?`Hkd}{)BU&LFQavN0l6mpd8q}*Y^ef ztt|`oC-3E*t$?b6yl#42l=erb5$^B}FZ}4iE#zOmB zk=Ia~mcnwuro5J94_|F^yPY!tx|A`^qltre30m|4@OP$9SyT1?|3= zayI(?xNI0GKgGzLFQt^XYSWz^_iVRX01vAD-9?v21 z6?#1IfshxR(S&%vx(IXE4k4efPqC6xe_)i`iF-XA^#rH6kuu3`VY!`FxeiVxlllHH zl@eZUawjuNHn>$@=GJ2(!T(Qo;KsD9vgxrhI0z{$@v{0gDY4HNy#(6_N+fIRd3PGt zWFEu?sar`ALq<;hvkJ5w@qBiK^pMUSX7Y-igBhX(M+4ocEg+ejocYN zycr_C>fLYjz3#~SB7-d8P4?Wu!uA`b*K5R3kn9gvs%cHh%$PN{(Qves{ zL9MZErk4+9xCQnc^d$}ZJ8OlmD9XLBO+9aWFczRpQn5K+6vMsT%g{Y6$8Lo#bE-5G zxUl5T^f7$eIsP=OvB=~Y?So4?%8&2vho7YRIoTK~5irGZ1gE%|=2NTB?@A7l-9gAb ze)E2n>i%~h@W(`xVp#+cjXk_(ew@k%E|>87G+phdSV7*2;mSBOS;=ZD(qF?_D~AyF z@AM+pTQb5L>MuJ)V@?Op=5bqTI_dVLbFg{noJB(0!D#BC)QN0~Zs;(V?ld3o`s;BIa@IYTSYWm`>6tL8{b+a|a0@EW+=X+WbgB=FIL*O>IIQF=x2Jn<9 zxIR2xF>0#yjA~7Nks163V7MtP{gd5@t|4n0k^5@m#GHQd9Q1jlWK7t$LJxv%Y}yZU zEH3;%3*gT2QWGFLsrF>1PO2=<038S4YK~XI{vtp})j|!pv4|jw#=^hIw5WpeP~Tnm zojps_ndZp@>}K6xl#rRudAD{JhfP+)3;Yb`tU8{PUlw(;n;(}j0Uq@>Ki~tTn64{& zk(3ro`7$Iq{Tg?$T3PXvz={&=vrlcj3~KM@HOL{65e*`_Bk$J>koNotuj$iXgy;Kb z(^M<(kT^g_8=@vraR>EXDVf1Q1qxi5eY78@+?A)*IQm?b%&Ti|Uwr=Xj}>?X-6sJ* zgSuGRUxN4WFuWlC;xQ;dxlu)18~+;G1Ksim*(6@6Vw-n1j*YvPfqsc+RuZ}3@}h+Z z{6RZIQ~}J8`G#jI5a+#HJNM?+GwNLfQrp@K$fj0@0P2r?@DbHZbPTL6;Pf2h%Y?)K z_&ijB2ikN_i+D;^(H#FuZM=)-*aezD2LiT#JAo7=>ekAJIGYaJ)EXJNg^p*Ew7`Y` z(T|GF>z)AxFc+tq$2HI2vOM~^!tD30Wd#9< zgi60~%gl3H-0R>OQk$}=XN6YCncM(2BB`L#=s}?fav`F=MXwNT zi>$O9{K=LxI`zzEN7+Zr?nvuZ83Kjd2_3Iv|2A2?9em1CbpG{M81oH;;{SH8m1}Ei zBK2$&A?p4A1IzS3+s;#b>AUQ=luu80ejgR5tlHWK z<;e(tY{poa-o@fsK$QvHWDCP7=t@jKl*$EXQ~- z=?%o|SY{z_X9<`Dj6KV#NOB171|KNssV6)lBr}IZaU6ksQiWKf56? zhj;QN@wUJ)K7-muuqpYj4$d9~eWQ$0!#i-5Mz{9GZ43SB{oO7WTyox65b*8X)@L)6 z9h7I9+K)wjbp4_0D$+{_^eyJ7ew(?qa)QOgc7mVTR~G7S^84FNnBDm5h}o3m^Pa_` z*M`n>hFK#YLLbH9{8qY#iSWt})v`rY$6z-gaeg0h;~eORIkmc_n)`C&Dyj#4VSo2Z z9ND`$n+#j{iOY4GHg&9Z{Wn52$O}9%`-7Q`Q+j70P9+s4{7NtUcDO?L*Vpcm^%4J| z2bcM0+a28KCGlGHBJ^1NWjrUI9vUBcSJM{{LL6z(s6SWxSMAjm>uUk-T6gz_${^cY z5eQ#s2cOU2qlhJRMfqxRT>_)=9JS3hN7VpBBwXI!3;)NT+O#}Oa8~P}a^Ko`rw`lJ zXw@hDfo_HZI_p%cQ0;Hce?7JE3=-Z5$+N8qm+DE5|IR(g+Y2HqnoS<^0+Vbg&ZOuN&+!zBfskujRg zO@nI0Vy&eLOV)<{>CoRvT~q4;C%`G~-!WG)fZ(P1e)BwQ8F*B?DWOBAMjR=e4!deB zfqjYMp+o#t`L}lct48)m?X$Pd(fr6fQOH{ZFB@4@v!VE5{PbabTkb*@3@F%Wsess- zieo<39klwWSQcu9pn!%a3>oL`$ke@VoHn3Q>|ZeI*$TfhlkrdQ&z;zun52f>s);o_ zdES#_R*Ziuac3<``~PF2BYq%Z~G1!~%t24r5SyaDz%GVJ%`} z_T4Si?!VZn0r~j*S?uzj1B=Eo?;9QB;+N$cpJfzVI#>*+yvvMfEYydCNhp(cuj*bt zm%oMPjjMl6hFmuadeRt^bDU72_ZzU4s_v)MuA6FOj-f25h-IS7kvQI=rqRBUuoBG$ z5smdR{ex$Cr%;*M-V+Y28u3 zI}m-E#6Av+0I?++G@dRN>`I3(jlpN;JPu$m%_A70z#3Pwg{eQ}!qP+W`lt7fKXx#9KyQ~N3539s z-s*k6A6W*Z487`=7!u;%@ib5(`SE{yqE*o0^Z@!3A)-+ssDV&$S&IOA!jC&Ygy8Ev<+I%G&)n2_OAE~pafo0w= zSVn?JDV#||Q*T4J3`5ss#PWU#fd`pjEaNA@b2y^!%KRQZcK16+`$|mcjlak|g>kVB z^>eWkNTnKN-bSFjTM=z2je;C3|4zW_Zp)y!@7Ex-H|0@6e*CVRW{1hKyrSp>JURFs zW8=HsI%3B&)$e95?pG?)zG^i}JDPc37bWjJ%~sNz?=ne)mXimqk1qS2g!2VBi#yAS zcUHF(wW>l-n;Q?D&CHIhu&Ue12c<8fgRgmQSJ1UhDSMg4^f(^k*q_<<=k;5M_BG21 zhiYp3JjwpxmWd6HtO;li#xse?Js|p3?kER6UnQ9}T$%|{l>g_=9N z+1&bZIq2|yuHo3B8kmjtu^yr`xZ6fR=J=C*$Ra9)CG1i&Q|CqQ%gdLfuir#le8$K( z9rf7U3<&;wKnqwj)4<8GIDE#6^hhT4;$)Ml?6s_}@CoA@c`H))GsqJZR1C!1FvK)Q zCviDFAKUmngMgog?SYD&uZ$4L`xRdQa+zVXv?Ky{g}AA(1Muc?MGZVyD^abAfteH= zTc7B5T4|902^Fm5TC7$c)lRYBO>AKizMGdSs6}n4&-c>8_5kn*EIDN+J`0pDgATj&rtT}jQUoGY7qw(3;NG^Z-lxnT(6T; zC=wAMK{uLm=%%^o&D=0|E6>j)OYvqqATV{JbDg`)TNxgl$FR|OvJqhw^<9J+p^2h~ z9fFy&43CC)bcNtz!!VIlgBT_LEln$L#m{H2`|g^<-zkO45ndSdT`&^E2{N?kZxmdg z6Dc{E^qUTYV&@h<|J-?R+qK7IImn@yI0Fhu5@2m3h57e)fc-o&$(PNCi$+MY7e(eo z3)}EM06o}!=B=MEL`RVH^HLSJu0&C;R^bfh9^gSxaj~+Oumshz&ddn6Q>Gi|SmIb0 zK%L7KscW)j&z!uE1gKt1{-b$KJ(#LXus7S+5Fd;{&=qO+0A7JrR?6sKez4c{3{HNk zT;)cfr9`1wVL5yVr{8>PDE(iqcnW>UKIaLE^+)dJ`*!N1mq zf(aJx*;Q)>exA#|WqA!~J#8)Leyu7MH}JnK-UA-H{aP&Hb=!%CZOm29+YLTt#U{v5 z7ZWyh?A0PWA-iLydrfD{NMqB{ z3v;?AXbv)!*C1faEX*X#V#{oMMHq84Jzme2--aYu)OX!e-PWx~#kaIyh9WEoQjZ=u zORNE@EZuwKrS90(Nr&-fYbFS2H0x>Rswt|8hTSLW?>%qfz>%Z5&?M408S!NMZ!c_)+a_xsu3AXk7xyo6WGrc5J;j)5J=JiAVP3!U3taQNVE zUXrwmWciUhFq#;PwY5_jKk8=2c?OEz;Z|o>K`dp;?T{OrFV1%G_zF<#;9OB$_*Ac6 zm_5FFxHAU*$a@vOH)u!))tw-gnap2OvLDrDWwjBA>zaK-lGWC$Z=XlXd~SM2QT9k=LF;Y3 z)usB|AFO3+qNV;T)2n}Ge_3RWsr$Btoy=O?H<<1zw_j5mp~^?5Sc9;`f5X?V%WhH; z843XehJ43#6ET#>%EtQ*@?*QRoZWYbw>GI0Kv*=f)+H(${rZT>TJkiqTod{1s@QfnNP3Uq-2Icm z6#6NBWWjPj3pj`-AJG#`#eyT`vBk6V7wGt;+@IDBLBx_&0k|?B@B`%(9pE?_5Id(h zQ?F-Y?mr)$oKbK25dDlz(jy<`X*x}{9-^5A$#oNDa%t(_OjJ?Bce_LUyWr?OW1HgV zW@jr#;1dDZ(~Ylt!5Y3#-GYTc1xX?cP-6$fY-F^m^wasomW48DpL<2UfzzqfH?SO0 zs7rak0Hu!fMBg{b1Gr8Etcj>%1IXz%n1X8LYhj+V;H`Dd=M~e-hSPU?r|--? zj6#HBj*G0}FFip5+I8)Nnm!B+gMM#&PLs#c6^Ly@1>Mn1M-=iZh<;Z3!L z>7}I9zcMDVeT)<@ZJ^Epi7q-w&BvNcQkbiOv)2Qpb_FN}9w_`RM3aV{`v24hk(iKu zAx**5|9mW@3~Jak;_i=BqRL*Zs^-VUmT>Me=J4yu{J#V)a$==4IPQCoRtWbi=xhMV zL;|Eesp*+aubAJl6)lSbtWrEuB=Vu}Hb2A7R`DGSpbf5k;>?|M$zm9SgZ3(}GbQYD zX+39?$?MqW^u@#4N1Qy3Guy7Ib?CTJR;iSfzGiT3VjAexVQicZ_*0=jbgF2?>N`v7 z0LSQ0PT_}lMj;#R%R%2S2}sd9;A0Taha~NIw;dcAPtE6E(?svK8u0xotcXzQ)8 zOG=4Vt=B!69O4_aBiq*}n+{`}xFRPjuYHj~V^S_9b%B}_eLK1@Q zP(k=SH-QWGG5fqw^&bDgpn*N5e@F?7-vTVs7&-=r@`vN z&Bwu>b`5DJ9jYNv-8UuEf3JKx%Tw*-j5OS?kYD#Aa;F5HA~`8l)3n1iErh8%TIZvd zYfn24(NF3f(o^=+6e-jRb<5^5IN*w8kiY}3NX9@ zXFyES9x0t2-tF)QO@tE0G;(@NwxXVY2{Nc(zDVU9Jyo zOfM4f;H4BD!zGUkNwhlju#46p*u|r(+?O2Uv({a9p(=vkAYKX!Of~G%^wKW>3N?N! z?|IS32U77`oBhNqFZOIW2|EC5 zI|lIjrw~`@k1gFeP(-FTnMUR_XQVidKpqL&(LBQUxsk{h>S++N%?*2WnxwuEVaIc=n&SLZ|}!xw7-=h3lDpt z<{Y}0zlZ@=U`VVWTXO=yz>G-|v0hUT_k6>fEC@Wej*T3>or0z4`ulY}_SuvFK{>F{ z8nli?E0dt}n#$*pZ_wPf=y%?Q!}j_TUaf``3x6fE|M;l#rk?N4?WToD7(N|ev`>GL z-E_ z+M+x`VqfKClpwJEzmd$Bb--MY`PT=NH*ryYogC7P(m^6|WX1C6HMQ;QbO%kRT}^zl z%@*PLjNCm_kAkeCC+wPxS5afc!tD#W`vT$FM95L6P}TAImQMUO;=QsK+rGr_ArH!$ zETy8xt(oBwC@HJK7RI!99q1CFd#DY=M@C0t8`^=+YNwjvK3WhFCyCG-lL>HAvtrrg zC|9QE2%)3Cg*V_C)4OV5S~p%DC#{9TSy};bjLqVHc_6JdAZ~dVb`2)Ae|F$1aoZXn zMHR{j3D9HEUsfWOpOp|3zZuh63i~UPqMoDkRDB-UI7w{_)TtQoo>(DOJu6U-Zlm*# zxw*stshqcW8=hcDX|Upe`KAf7{!ZD|oTu8j>5{I7 z-IPlMdqy4E4)oCWOva$KKcRK#KW+qjLA@cLpnK3#$P;KfMQL@i6Dt>Z1hPzu2mwOh zK_F-nKUO)W6lqScvZmSS@k97iLX>~_1d=(sA|D=*CrOjuus`MmilqA6nfTj@7YvTW zrTIW1!-9jx85|AxOaz+<%QjliV@SDNquZ+0&O<}cizkD91gSwn_&|=JU?{H4;I>92 z2c}gYjCFR$^(Yy)KNFhM^GU~;k%e_&Yr-&v)jY;d`U@kS$@nMq*nM-)*xvm5!}2i| zuSxT@3b7r5P}a0HOF!GcKa1oYm0dVWwov#^L^(z;IvARgK*sKQGHC&MrdhRxuX%rW z%C;N%Ifb7+X_VgSe9aI3rOYcd(B`X{^q3Wb<*RwNaX&$65}8bF=Tsyn!kRCJ9JeL9 z1`^9GfZQ2VBgH_)edV*VwNjaMcwx%r*<9GoYYeUlzqvBcr0KFUXf(WP3N!$pO3p zylx@FuZqsA)#|rGSeimVt4G@U@EeBEiK2|3xi*f!gKzJkHf7WBItqs!7c(7i?z#wN#klOQ&zC|{S8N7mWbg)4T<21 zPIsvFzgXlAx5RHpltJJ}NOD;-)>z|0mW+8*I>lJZ{#Bvl-5+mhl)(ga+f)tSIEi2}q2v4J%dSIKo@fLnX>U z4>DgxLBh7seNtjd&Wy@vK7@%zD}YG)RWnrND!ZFiE&Oj;tg9FndT*O<^pY{H+7CX} za*-aH-*M$CwxV)E_{-YnB;c2 zcvra*N-t;x8%;F(Hc6dU`2U*KteTl?G?C#nW^C8KHw?Y-^YW^oQ3&+L_M>jASHwz- zSSI)K;ZF2cc-`sS&|M`FL*Sm3ym{*V@6C&Rr&f33Ps}9M#V+2u-I{^gXJ9Kaykspp zy#XW`Fv`eOF6ekO>o!y4s;n2$x+qPl=1F~L&ZX_2oiTNrjVEYUKCD6~_~=#>kroqw zce~&7z`4P!(ruI=CKm&>+-zT3CrAM_g(d~Oo?)mEd^Fh~=0qhmu2wHv$+&nAgrU3bLe{E;|A|TG`XK4LrY2Q2a(FX~ zKIAlf(Ig)0ESwG2e&uO|P;z*T@<8TO4~G*@1mdh5OuEK5;$#bPE6a`}NnK3a+b{S= zG{vt1qMPY0CRb=&nIG^1EA~uv;idt171WSoFk!7D_e%gy-IcKNp6Bm4r?8hsu0Ju_ z9dPMh?nD$1wI&!)D^u+^|3SZTOr0n-YKwP1KOz%t?6E$>=t+>&iO_~86ONGe3S-D) zc(6A>XiRN7U5KSxgp_yqXU(vsi-{L{Izuw^M?aQOOjPl(=ihnS8y_K9-tQogm4vqM z@+0K|o=;r*bJN`7!?pywvMB2n27@-lE>r2(Ex9`}#dAV(^y!p7lM`)=vW}2F%#E*$ zD+NBt#m`1f{OTK@olIR4ng(jsIZTP7ZfEU@lBM2@DX?89V-%Afv=bZU2zJT_=A>&An{iHM*;jGc_6_{;EH!3R@p~(`|YFOWv6t6A0 zD`W@rVZBLd0iSO{mLLZcz&@2%aVEx{bB=?TJ>sUX=l9EA`z^+NpuX-@Q%@!j+FWv= zeG7GA-L~BUhF`CqE0?w11}EW<4H2*xOH%Ej=Me0AmGIv+eCu@aEmNBk+N+uAvc$RnG}V6OUHB!IFDPCT_L}wP!=_k0X?CaWx>fT{MeXO5 z9V%gf#$h!vQf>^7l?#aYy!2M3^*fc!X~WfypsR3OKLB1W#Uoyl@0zrVd6HVGllWO7 zUiB=&?+Rvj6?;vSn|cAjiW+jB?qV8`a1*GZjY+!uW~C#o`t=`QC$v^HqCUG73!Q%} zu+Ga0T=~vqOvumuaO(5xALV<=>|hc+XhgBnacWo0cc4ziZ_FVt{tRz%RLBhR>GZ>e z@&9)s1ICxYD}rcCP0 z`uZMkAQOW|(uol(;_4+T3EI(bqrO&~*rWtMpe057rF|6#?EwbZN%>Y5B8Vq770odNd}JK@zwr zo;hYW8#Wd^O1faMgV(R0?a>O-n|72d9)|B}#YiCgg>j0COLmviImJ{6uK1vXgb7i2t`)U8oGY@i zC6da2t7xctjHnq5j{PIP?f-t~v8-Xb;=gTvHzPD8)U(u>?|JvB)1pb7AxhJU?Qb#y}qUJE_68mlbnbzTpyY<~rpO=vlP$oMa;VDnRpqWjgd zbNZ@ENiKy8b$gy#7LkWn#AqPWEVBxv;(Q6uy!eECzWsrP&svI!i=blQ81$&Qpxc@U zvoIVDAg832JvE!@?mhfl0PzXSW_YA6XKEHae==N=U*a8uIrR#(L*$mrC!3ziCcKQA zp)=H91BjpV1F%F zB$7 z9K3Cse?L$9Ipp|_O4Hy|8m-U%K@Wv2L(oj8cps=;0lXQdmvt5vaa^eSfzIu?NG!H! zx4HjaT852ycIK{Av0UY(QiklAu?9=1Rn8PXBiLX~>_q%`;;ZK^SBx?IhDWwRetx4$ zTaW!H`pHcc+M}m&%X0F50py1hsPQ<ggp`H=2-D z^HDd$py3}A7O$^QuR|5rloVhphLcaLyCc4Q5cazpX@R1=>GAwg4m-8wv_x@&>}R2X ztSywhl{!6Tj%@QK*yic)$kaH*-S#2CKi$jXGG&oG`uExAC`wzfEEnuuPw>k>Ig#O} z*%EZ;;Jfx^q3O&rwaKtlWJL%wz@WFfvlY1lhVu5Z42Bt zpytmD+$!JWhEB1_sKeLw&BdU!XDM|Sp}Y5g2kyu#A}nm(y!FX#9INKR_nkW(kWxc} z@SXCI%Jae)mn0?wX~uxt9y#)5f+ytMg#21n!gkj@_pwmae12{YC?qMf(ru z%R$FpEE}D&H5UwzI>3#NhTK^~@_@rv^i#IIrbUleaXlt%A-fPeEfex+Vw4RvE*Kg# zLh$)vBG3$%#`6JWM6lpU**KuL-kC@#K;uYhiyuxNk`tUs`m66VKTfOmeVRs{*R#D( zm#OTpC#p1LWE^x8PM#pL@^)n0ihSD1J9qx-JEglr|k=8yWxex!cqO zTfrBF50*=H98{7%lz-T$Y#&ap zQL!<^8Vd6B=J|d|y>(3X`UP(=SXjk$zng1Ju0J}?U)#&d5%Se~M*pwVDBI}p%k+%% zWfhzL`N{I&T|T8;Co*A`bru=zlLSV283$m@1AeR3?r=&-5K7CM>YZ>ZeyCGyjuGib#IeYx=!Lk{lxI!5S&@Rhd&D}Jv&e_D-Xmu6U|GC?t6^iDWkoWo0 zv93IUUiz<2DB)Jo{l`*`!8{X!}c?aE{_3^|z=1t`!@B8?>ch*$OiZF%CCSJ%`n90GjkhrM(u~JmcZ*|nW|Tz zuBENs!iy;uii$5Cd(|74zm4SKDJD8XY?U+>j}!q=_WXAQG|EvmNNqWl8a?7)sk*)GmMnQ|l;a__(f zaEB$5BnYuBdwHTJbGa@62T%KM^-%au=-&jdQtZzUaQlQKse8p<_9eIGz0-3Hbg$k~ zO|AQNa+f7{m7*7NI=J}D?@>joO2`AZ-L|IXdZIOg+}0b{mfG5(j7mza+)XZe(Q^t5 zNIqXyrkLScu=V)@n>9$f^wB0#@kp7f-%ioUFV3s;DIryeb$-TYhcfT3^Og@|;XAN? zr^f9fm*Iu7_sW|l$2(b#d%L#$#_s5zjcxlI&(AySWXW1u?Rm9}HpWVoT6#OK6M+ZI zV})HRwGuy1CNM+ZIF4YnM?wg*~Cm zy#liKW8^ACM=l|q6Fyv5jwxP~-Px-tSE@4b(aRRfjx+O0pBi9eTqSw7*Aq;Skr6@e zooPW?IiY`RS+?h${n0xkH;r7d`r@E6=`Z06!j*~X>aXziAo_{;*A-G=vBi#%wGP_l zb?R+Tq3sq;5J$QQPiT&;%(Vp!AXef{iX9HT0qgDsDk~iK0{i=^-dxsR0F~ZWTe4 zj&ukjEp+KsKnOjQgq8q-v*LT+GtSTNhaYp00fUhM$&H^0j|&_?3P2Ud3BV#&9WkrxZ_}+zyak%H0$vg|uDo_tpVX>`*lS8&Vv?mKm+r$M zwVUA4B~?*%O`Z(lo^TF6eWSu7ZNz#EM~Z5b+P zZqpQP#G*}FjE7%b<5~wBJE{sAosr?m+e5rZI z-~E*oh%Xq&$44<*?u*)a((+Ae*dEu-zj*L@MieR;4l_cY#`7VCwNK^HY5zydBC*it zScIXfg`r%GO`>=@B)v=#z*Lhcdj9FEIC@SDZBL|;6z63?`S98T9nB+BN}~#x5mTyq z2ma0yNDsEQ1h|p>2jkn6zF;)5@8qbDF-Mh|VeX1)P3Ih~dt7qHAT*Zt6iFYIK5l4x zz_k^w#;G}rIG#taQ1rQQJ_t$@Lb2q3q=ixzB0y6?D7e0z!qb3aP~JrhbnX@4t5?|zM@4HcSGSO-R+hzPqJDiAGn z^u28YVBVEm=&PZiGtQRtJkhi_W3&x**oI#ulQuSt2BK@V9M+wJ#{}yamglX4&{w;2hM>cBQ{n+Fe?wZ#GgN1~ zYR_n&#>9b8kR9IMzky5+3lyL<19Yz@hQFHxoC!;_(!+|o%6(1I@%RLgu)juxZuuyrpgA7R+)d)GVz-I4&m%> z=|+ExpNmYz0Kbd~IoX0ZOb2-D8EtKwq8Cih_QJg$g4q3YU!5vI6FGxD>IdHo7&^$G zeL!wbS$>hOTYMwxD-VP6p?6-U50BiNY?qS0V<3(OUGPwH9|gMiu_GBY5_K6dbg!oE zY&9k8Glck--&u~lC=(Cai%}VHFaG>#r>r>@9m~HnX|jf?Zx4xHfgBQ~Q;yiYX5?>o z7Xhya#72$y$~b09-i8GS@(16#u^K7No#yBt2*|hN-CtT>0Fli;CV%PJDsgP-MY9Ea z**-1qWON`z3s8`;6Jo)(&T*#ZhpY8EAN%Ikz?0V31Z zsdPkrcA6n5yTCyih09h@bYu=9EQC_&8A&l+I){u8_Hy`4`UoJ0k%PkDlkb~;1o*Rn z{GJdVLAbNVpJYvm2&3OMKR6!1G<;|*{JWzyCrvT?GoG6IaX2=d5Eu#;z%l8c!<`2N za0pf0S)4MC70#AA&;1e~p-}(ZEHq=5ADFqFmbM#AbU{jloK9SzE!0?VOu1?abwH9j zU_TSIZ}mqFNY5z3h>WEnw>)T}BZ;hReN-S-sFfx!vg75Y9lRytlsBq1>K)oMrl2w% z-?AZFH^{T0oPUPnbb{pXbAND?Gr^2^&%B&B0n(@DQXS$R)&tsL0pbn7kr2tEoy6)zOAl`C*Ar9) z3!4OfG!vZciEL%hCbvM@>93^h0so^Nkp^;X$x?mZ6-!GC0tB{G4lM-QsJ=wObF^+S z`oDuZfak;L5itDKy25WTefqk-Bu)br{`PUvQQ&Vzn`-hb2vME2EIuD~`xS#SkY^Mx z0YF{EnD0S??YblAAS%y1QtGB2B`7XP+jj?q8KwRL$Y3_KKym@3P#CWa#?AU@juWD6 zM{lfsrMiQTUVw7O7_TPpmeX{kG+NU;_kxavt0kKjy%WvZu&fihMVA)|fd4~PE;L#b zUz=WwLmZPa!6Rk9foZ8Kv>sfTa3D@V7mWraEsg3ghB^61Yeyqd0H@x{2q;zht7tQFCfjq$^wNivx5cOh z4uH^+df*IcI@`Zq(#&E(07R_9*}F9@d=WdPtrga?j;ryMo$rSZvB`K1S`U!Q zmLz&D*wDL$!wHi^J<8L>xMuem!N3JtIJY;P-YhW67&q#a=}$VMng6~J)7o&d!FFhx zXNy?fuIh&K1N@}*WLoMIRu7O{%!4pcIOZ4XU$5og!6onJDw5rmJzZ8Asa1{Cba~{|Z1{bj_vIZGyPNVEa#-3EVXXpq?f7%1Qh@X} z#+Exdt$=FM(F5?W_!0rXS%7U@M5HRgPKzZS=SM@vNtp!Fys$wnU0m1JWhp_lc;7kU zK=fJ_+8JMRglS%V?J<*CfyKBa&qy3^g)-G@hP|1OdIL^xJUMJ^^aHx*3aAE}cScI{ z!EU;6BNP>>254=VlyUEyb&B{Z@;W-R(36wX@_VQJfz&u^+XU^r$qk%%6CzcR9zYt2 zABr7S92805q}-NJ4r-(d`0soK0HHS;u(v!fln$#%-{(zOUHGavcb

    !3o|tElWR z1}wR1**1q6X|uKnAwS-}_2FXTKR@D3W;4Ep^S#8+(Muxb#LD5runVwDuqohE2=*GL z3X@yb+UhWH(&rr!5{F$3d!~`M_(n2^B`5r8I@UNl&nvf&p#AJmwi%{n#k_94auQ&P zeMXU+1qA?qhy-BpaOKt$)qafv($1A#vOBwFvmNMy?INc_stqJn$njuLTG%6TtX<8A z{Cem#`}U|4zL|A;=jU&34Hko&*?uL8UbFEcQB$FxH5Cw;^)XFR#X;S;UGwKkc1#Z$ z&n^mo2tRtHR-+#VSgH26&S>0hyjopdJY1jw*13ll>t=nlJoPBW>MR4e<0b(wIM7RT zuy`|MK3jkUcW8@Z0b`8Z+-Dms>CA&2q4RJG5&Dh>Rp<6F@A7dl`SFuxNYfYyWjtJv zywVO#6VY$8qz75rx8~BP9wxNw4Q+>Dbrsoul6XM*e$j{csxD0wk$@A6?q| z^wS=*iWNay^9@~;E3SVpqxQE&#RK7Z1d<#{&kA1;-b8jW`eI+DxQD7bW$@ddMmXbY zMR=)FTK4z#hOd|IF)7Q}lFy$MVA7vGm|6IA@FcTdb`)U`>pl7g>d;*7QG*S7IaLg1 zP#wT{^R>g*F@+GH@sq4|ISPl+rwZJWi$Abv5UV9TlD<9v9rz8~}Vwl0{ z`pZu2Dly~k`Yo%Cs=;mCjxj+Cg0goIcJv?$fxpH?t3Cosm|D3WxBPlYQg^FLFK86M zc`-A4t+inOugxisC1Etzme4-{5maBFUtbn11^)qi2$O}eRmZ^7;az6zr#o^lYA`6C zdivv6zBTSF_ybNF{3Pl|l!iVOtkee8g9;B+zRj@BOrnFH#@N&g7sC)Rw;MXF0DPBT zqdVVwu{4Rf4MR=Xe&7@(juXO@C^UaF%>6sPA{|8sk!`E1c6z2fYqvn-v6aE%w?1%zSw@tkXKtUkzw#?p)W_bq-T&5)OPa6E!p(SPAPqn? z=c*3Nd4K#hik4dy&xY`0)x%V8HBb?(sclo$8f z`Y)7)hn~lyvGd;|8GM=pQ~s?ZD2BWnCZ=MC7qI`&WN^d@^)a*uth87@u1w+KgL>I& zAqEnZ%hEF@^&L1h2Yvyeh8pskL*c?Ptt`LKb==N^t&bP)`~pJ1_$bjk6;S)3fXb54 zVDMe|b5b^cn)IWFIOIS7h~^t;Yur~{9=aEHkKSNY!nr4$8^LWV zb*(!|)|2k{IVd9~T0m@`+sjGBstE7>9Mh~@(Z&^WUUQ*lDN7lA58uu~9tibY(Sr(DU0s6;THsnvw1ZnUT*iQi_+*p z&-hZPkF#9B??(~{yp&5`jgb7FWJrelnZRxZM>z^1Ued*Dd@TxZPD+v*o`Omx)t@y_fJ%p|iiER0CWP5pYr-|h~ zYpzoyALc67c)Y4f8=IzQJl7>b8s?Z^jWbbcr86)I+V0t356#QCD@%~WuQ{sBbBCtl z75bz z_tQq}7h$$AHlh14SE0QUItCVlHl@AN;A!0N_=>C^jR=kFA&fu3b9OjReGc4ZeN7%F z`I}>}*XJ}?C^Q;IWDxk$bH#_}H9*iXRh$u6K1v$=Ro^Ykjz4{@3B){&(qm(I*~#D# z6&EFegr$9F>}Y4O1D9rX=vu!w6^`VG6F&trNu1#MUo8X1#bubL(uHl>w%x2tjSO49 zF+7z2BtFs=P4p-6;d*1D4Fl+7|vsE6*6F=1-!MGHAPGVGin_X#iIq`bPw%Aw0ULt zWInJT#ng;Fl_((i-pH?!(q6VKBx?M^WX zna8JBlBFV&_%3`!HTRfEYW<^AmJGsbdEP-Nw`el0Gc=xha1hDX-Qyd_%v-8}?zfBO zy3ISYqV;6&mqvAtR;;G&zme;p9D`i|07W#3!#wIc6s1JM$=uUi;G@&L=W)^UQ^@ z=dns9L{DKjSdloLfS-C0>ho?39Pfc@@u=pv{~`qs0X_rF8|DUk18am)U=m8dx-MJd z?f^kBViL}INI@m7dRsbv8qNWx0{8lU&O^Hq(5)(AAg|~&kixMp0m~8Xc>wOi;~=fV zNVks0=82LwQqY>!URLMODtgZjL~(Vf;1gNzw>ZD%=P${nyL`5Wxr5PwQ2^`+Bzryp zJJ2L;u(b>T+TAQF!iN<)2oTNg_IKL~wN6!r-%-f|xZLq_o(#PsC85-#_cI0oZ42yz zBhHIT?^#x$b`b6h{h}25;Jw5?Q~7Al(=sxdmbUEyu}mT`a?-_-5+C!Nj9?ln_DC*% zMvBHcIIDQU2kacB4Yw-H-K1R;+gDvIWxcD1qMUWULDVTAN9v13V$u@&$+jwiK5`V^ z^*qqsfB6VD*v`NfbxM0508VgN)@iwQTw5OAGp^8|j|l8i***1i)Bvq-Iv2us$@I@9 zJ0dfH`yNr;%_Ca6SI;b0ROfgnEA>Y^0}B8Bm}j)Q?Z(@91T9S&)X}+;VYHgW4)CoR z&w4~t@m-vX-JF5Q3G#Qrnr={_wIDy(kKkkeCmBb&-5hB|ToC481@VnIuZmKfxHUPM z@GlxJiqcf93Br1qt%PpE)vyXY{p5g3T}aY#3&{VritQ58c+U;!E0W=2JxMe6;pBYu z4~~boS$?>DxvJ#l*qFq&z`?t2(PDcXbxMe@2JF4cD|1<>LRDR1YHCR-mr62WB1_8K z|HCfsPiIVtL|u(YPgd)E>apFc>su!AO7!fU#0e|i@M+2qH}aU|!Pq6p!V+K7SYfb| zd{9>J%deJV>{1@`8hRJ;rJ=W>^VMkRT!9m13%+Oz?kpg5qsaxtE z%lB1rz8`ky2{WpQa9tc|prJP0PjQ1wuy>mr+zxks$p(%Qj6^55`5!{Q))Zhl|DN5M zlmE1Z&a!rnI+uDqkTiHt-B4XyhJ#H5%%0*K(^of-5`^0VoM|Jt@J~I^2m2@| zeJ+d~y~~1Nz}QVh;w83-Bo@qR3_Dbc)p&VPj5K>WFGHpcN-B_xkdk)AM2Cejy}l9k zJkqaa`t~ih1oRqCr&kDs2{pEuTrL;LXLz58kgDyn+K`bz3gbm{FuwKk{Gs<9dRA`P zuhP&J8s9Z5Jr7`qV;9PpEOtI+2O0eeWBw5}2o|K^^jI|6nK0oQ){j*aIoS9LSp5^$ zXg)utIiMMVs(eC_htz-`<1D~M5>$QLtwdRc+Wy$H8Ur0sM$%pRkHOJKITl}uXW&d~ z&+NtgN$)mylrKYb+sNJWoBB!MM)5|5$xM(Kr57_uVpWpcp4~($ zpkcAEO>pS8@p^NuOXV#7U??OXXXTP$wJQi@k}y5RHzk>8A$w-|+6ek`}4;pI6}byv_LDge3|z#ez86 z`rSyq%xR>wl2aPrdgDe^3I!uOIfqq^Dz01=eIt#ctm zzRT|;S?U$U*X|e*!ox3QM!ZjqZ7q zKACUP+9Y@pp#yX8zKMjd!w_`yF|CjIS<>mMOlcatk)S9Sik^W4?J1~klarV^eWi77 z=xDzAXfGaI;K5TGfHW5Ho$|1-zv52wa<}GQOwJnqd8>>PF=hd-%Wt=ji&;)@);rXm z{^H>2{!zTf7VBP~@si(?^~vwGLxS=-uNo1BZ}``8C6!e}0&C;y5$w_n@myT&gZ{EM zDmdYGxe8}B#Jr1ipViE_{yu?}hM=DsAZC}L+kyJg)ME@tBsga|W8kuHhm@%sZzKYd zK`2n`;`Q(FnfXV~nvWJw5!Qxm@saxLQs3N8@g2OG32JAr0&__a|+D zAL&#R`1q^$)=NQ(e$+^yo|^_w*r|{!!I%dL1LXPpvU&Az4&fl8X-3FJ{-^lAy?{hUquF^!7a60t)Tbk*?w^uVQ|Wk9b~mCPqaK?+)A>(pNK0R9M`QMo#wF7( z&UN_0srLK_J$FwlgkGJ#NjP4`GvO2ds>>`Jsf=8xlbgQUA!{{Qy|OQH)@WpqeD&;} zbYP6~`}3mUJOW7qF}5zEBqA#fbF2_`9KXted=1k4lmuE}u4grX7B7d(T4IU`pfaEV ztU%h~b*x(=zfNcsQ=09ObchP~G_dgug%EJ&`%fL}6bbJ`EdvMY8XN>aVT2)8`tC>S zMsM`iZLCv#Z($OaZRgm)ZWo$v9(zaZxUJPj1-kn?izCQ>_B9ha zq4X)mN`0}yhBaWt^yK%`Lb<(n)fZ28h@;d*r@0N~l}QFiq}`3NwYiVek=j=qZO_?^ zRTuR4fv86vtzuNEb7)Vns6FG=fP#I)Vm{nT*@0^GJGti=vBq_a8DX)4FUC$GO4k%{ z(kbo|o*xjtl|9?ngE}N@NiK%vYG_h+!!+ghJ1o9r%Iiwr#Oo)Q0oRS(HW@D2XOSpx z=VA;$_~K6iu`kO;8j`LDjJHY#o|i|nS9eK^Eem!07~}IZqzY*Eo_x#}-+Qmhq)=8K zAtCcuF911cln>}BR(e)wg24405FW#NA%TGv41DXv>I&p0L=|YXc!ejtcrq(AsT4-% zuoz+ZQav$=2O3hp8O7l_4(N>)!F<_Nf+MIDWJh-wB;A}JY{aJhW43D-aK3BoXc!?G z6T!-Id(P9)N93?K_Tnlr!hW#Fa8*ofi#@;#xl{67?@LIyNligKVRmt&Yy?Hm)gs%X zVYUfOC_}%8p0`&OiX9YF6^@0y`uWPw;Wj==!4=-LtYzt0EAS&D0{H>*0525bZ^VST zu%aX3Q6@%$_?HHO6;I;j<_?-5=w~>YNE`is_Zv^BAnqXsCwpltE28jNG-O=E492~ z3c_X7Ng4;gxn%~Yqb_!Zh0|=%8GMSRE_t!hQtLp* zD31@%d9Uqd?kIN#9j>ZqqMH86eMGD>Jy}~VOil5uGO6`;J@m`YczG738Zah7 z?s2}Gdo=|Cj|^vto*xmL6fn6yyW$71@8D%t;bt?8=Z%&N)$TYHNq*6esa#)FZ`(J z#-v9<*Z!i{LziYv);;2h7{6)iNab^Battj z&88)?vkG==flFBoy3BLHE$zGcy+0D{(x_)d4JFi%|;zg$SAWUL!5U^VzM|6j7y?h=p<fyM5v3e)&ZL3CX`)_LugRMdJzXA zw-*lsCdpT4=AieO*_e4T3uIUxj@8#AX?~AxV8YeSE8XtTTp|i-@^0I)@|ASi`6IIU z-j32E4#nhOq$4-qx=FJ*sg_DwZg5Mtbw;~=k>jWRmflP^?W=jpo#JCe1_MTJBbS8l z7-e=|A`QBrU>|$_Q;!$wi-O05b8$l@UiD~4czgV-l#ZDfNnCLKRCRQI!($bHj>C^y zu69-ITA6zRfbhZ}=Ofl-fZ7_u{};qyf`5oNB;mzF#AnF)3u=J#sGD6_iQp{{M~_Fl zylE~CE#6BzVpL?J?ABk*cWHRM3473anJd2obvGENzVV@5z&oHwRU`6fHZ;hvxWcR8 z18=g^i;0UPivdeX2bUE(%Jnke7*y#(2G(d>+=B;6f~tGWa|K*Y$%fd^mrD}7R<9{; z=?d-MX5$pmz;=eSN((Cl{OWl25W+cAdAqAN-t6=A&(Q0^?aI?0wjC^rMRD5~h|k0e zK5T!eFXw%*`c3JHO=)J~bkG`EWD~_nV9(LsJ(V@`)p*s<^M)TeF4{&a**L3p;!&1w z;F!7DfBAFRLj8ZG=)=khWu8FS)3 z9u-VWfQmXDMJM5UlSiFnOF&Z_$E(i*)&NW6&Mt;+z2u8DwC`4-XGTJLERhU&`t1bX z4}Imw%cK~t2tV$DR@Sl~f|bS{Y*!7rt)l+j5juhi!r6svNN4Qm3@-Tyr=~^2!dxQ1 zH|IW$UOx!Qc2qlSQrR4eDkF0X#i2c+>Z~`$LO;v5$|>dgmO&L*4Q9LC^58;l@WV6i zM433-#aI6cSV?Mhj6Hirlkn0*%C>Il zY5KwZcz|NdW90c9ZlYf5dtU#sOaw}UPc!PHdxI|8b6mD=1qulu>ouaWgOb+zZYHOD z?;8`0ZBVT4@?};oeL(6alvf%c<3mt5J)ZfLBlh6bqS0AgFS$js=1MjuGp0Wj-z-T9 zi;4N~(kSJ2+thKzPFgypf6a&`7=M+D(s`n}H#nBqWm%fI<`ObE6^DxvZ==}G5TRMP zG#W%&Pojn6IB|(yf8OPV_^+>W4)$)6=2z9`+T_iMI@m$DSj#2FOJW4Yz}ph$j?*_| zA@0)tOGx96 zlz?ZLGMf$#w7Ak$Eq73$Ww;f$1r6!BAL)!NcT$j zzm@lNSfpYFW3s+MTSwGMi>^DNDuT&tfKxR}1T3^z9n&u8ldzC^0teq-2b>xKj`7hd zJ`tDBD~HfgnqIRUmkg>@7L9%gb=xlV#<15sUy&VE*(`dSrnue4fy}`(3$a>sfETkU z2Ix7B2Su0VO(+Ml$;v^%ez+kk(+tPq4-b~}YHd~N<8{T~PWP2h`2Ada|0)0PaI+zcmm})Cjw$B)$VvW3TW?$dYU1cW5^*l!+R>VT78#`O< z);rpI8wcdFd$M|HVkC=VE4qg#Mf%3Ou9UYEPNbgjQ@lN;#>+3gc?5G)wTr!9g#&+) zOIY-+V5H%a9{Nbk_?SqSj2ezvlg+{w{7OC?>fIeNruI(dL$Z48vTx1TjfsKmoHkRP zyB`(t*+=^yEeKBacz+SInJ@M)`DT=@+;Gq;Q3K`u)gx_`U6WsRAV)Ph%tOaAd_8(+ zubJ$qB6W)fuS0Ikz9_Y!Ns8kY7dx5Nz7JlQER@YUdq~bj zc&hS7$0){)l>g!*Ejh;;KWg0^!vrp-&OG>w7~<#P*((G992+{QbL$2#uh4UIsf(u! zI~dw3bHi;*N79zl)=D4D)MsA{0y9eV!V>^3vAJ>H@p7e)cu<>ZV)?z3`?*9)9d>xa zN$Ej)V5I z`ajl_lOZR2ouz7J@=m6U7Ipn{i*D{8yL3*5BG%v5O&sKB?K*i7UIlHS?>vkYDb6Y$ zE%Q-xuQ;aE^Y04S_`Ip_y!`ie!w>XqDzw0r%aHT+Vt)A#d_s0KDeZZ!Kk?adqvU$=W33cF?|X zG4bGdlQ^>IwYvLlTH-x_NY#|O>cr!q^lU2in5t#n*6MhG#@36^J2!}7Ey}T!Eh?o% zc+HV0j_t`4oSs4aYW$y~oEi!E`Ttf4<;31q)#d-IF!e?dRbVIZ=cdO0eqk33+1XeB zKfL*Vk~u?{QhUB=TfU5M&DfBUEh# zc<;jt`6e^mqn{-Cf28(DR|XwUrW-HZUrv53UK~3u<|F>g>>f`t{|rC=)n<@;!0FMO zBpIVNl;zCXb*`JtmCKS3p*}D8@(1G=11}wOFb#BT`A&+ z*u$zr*U;TIgzisjrR(APhc;Kj(stuy*A3U>;eJ0k8;cpBK<57!>R4g)rTev4nEyi* zTy5M8Qgkrv?4DN8y3hBTjvgIFvQ0hELT>7pOazv0l#9>&nnRb)VSg+AxKi3tbr^Zc zsCh_GC{XY8(DbS1i0yK}3zFdLkTg(F=tk(s%fDIt4?z-v<6YtsUhht-$Oog1Wn*cB zN*;0moYtKsD_84=-u>iy%&mp6UYb~cKCD-ef)T7?&G+&;y-9AwWy~DpZWsF8x41cR z)Y#mykj;N75HyDSecii%?Q{I)L~cR@pyEEs1RFYiKQRKGKmy+?VLz3e2)2DF`it`{ zo!MZ)(=0!avQH?hq!(R1Vy;C?zb_O$3vZPx@`(LosyWm9SU+<~(6PqMa<43fUmFLA zvn_7rF8j9ACrP|so18iBO|+_gM-DkF+goFft#uzfq~zIHuii^HZg}3FJ@weXVC?1E zLz1e@xT1^d4E7crFv)o7txmeB_?DbhIJPgE5Rc%kUiY#&7%MuDXHc7m5M_ZbtD0+z zHRgQ^!K2B_-V`|s{8w?hcri70hJ~s+Mg`vgn_7*KRrSVrYS91h&92cHNmczhL-$v2 zwwft{>WkJJo~B$UI+uZF(X`p zHs5IzDs8!ja06Atb!Lv>)fLYa4fKI@*}{Qk`UnZX}bmR440CB&%)y3-W4M zBZqsCHQK~%vh0MDkHfKy9p#KF)my&#^PE36LAJs2YU#ngR$P&bn~&+sY?k)tOi(bX zzUX=dM4Dhv{6_pxD5YWd{hzY4<|IuY{QOf10aA@sYTy1;_nPLkg`oMLx(8X@ABp^* z^0&eTu4(;Gtu`I~?_H&e8U5XZp8P3&)zq2)z3ZYke6tWz2sx=+Yp%jl3tItxi=@HM vzndvF-H$kEFqd|Q%oOZ5Iw6H^v6J8k0|m>ODh}CyfDZ#5Bkdwh+mQbU!i%gM literal 0 HcmV?d00001 diff --git a/3.4.1/resources/indexes.conf b/3.4.1/resources/indexes.conf new file mode 100644 index 0000000000..2ab80e6a53 --- /dev/null +++ b/3.4.1/resources/indexes.conf @@ -0,0 +1,116 @@ +[default] +lastChanceIndex = main + +[syslogng_metrics] +datatype=metric +homePath = $SPLUNK_DB/syslogng_metrics/db +coldPath = $SPLUNK_DB/syslogng_metrics/colddb +thawedPath = $SPLUNK_DB/syslogng_metrics/thaweddb + +[email] +homePath = $SPLUNK_DB/email/db +coldPath = $SPLUNK_DB/email/colddb +thawedPath = $SPLUNK_DB/email/thaweddb + +[epav] +homePath = $SPLUNK_DB/epav/db +coldPath = $SPLUNK_DB/epav/colddb +thawedPath = $SPLUNK_DB/epav/thaweddb + +[epintel] +homePath = $SPLUNK_DB/epintel/db +coldPath = $SPLUNK_DB/epintel/colddb +thawedPath = $SPLUNK_DB/epintel/thaweddb + +[em_metrics] +datatype=metric +homePath = $SPLUNK_DB/em_metrics/db +coldPath = $SPLUNK_DB/em_metrics/colddb +thawedPath = $SPLUNK_DB/em_metrics/thaweddb + +[syslogng_fallback] +homePath = $SPLUNK_DB/syslogng_fallback/db +coldPath = $SPLUNK_DB/syslogng_fallback/colddb +thawedPath = $SPLUNK_DB/syslogng_fallback/thaweddb + + +[test] +homePath = $SPLUNK_DB/test/db +coldPath = $SPLUNK_DB/test/colddb +thawedPath = $SPLUNK_DB/test/thaweddb + +[test2] +homePath = $SPLUNK_DB/test2/db +coldPath = $SPLUNK_DB/test2/colddb +thawedPath = $SPLUNK_DB/test2/thaweddb + +[infraops] +homePath = $SPLUNK_DB/infraops/db +coldPath = $SPLUNK_DB/infraops/colddb +thawedPath = $SPLUNK_DB/infraops/thaweddb + +[osnix] +homePath = $SPLUNK_DB/osnix/db +coldPath = $SPLUNK_DB/osnix/colddb +thawedPath = $SPLUNK_DB/osnix/thaweddb + +[oswin] +homePath = $SPLUNK_DB/oswin/db +coldPath = $SPLUNK_DB/oswin/colddb +thawedPath = $SPLUNK_DB/oswin/thaweddb + +[oswinsec] +homePath = $SPLUNK_DB/oswinsec/db +coldPath = $SPLUNK_DB/oswinsec/colddb +thawedPath = $SPLUNK_DB/oswinsec/thaweddb + +[netauth] +homePath = $SPLUNK_DB/netauth/db +coldPath = $SPLUNK_DB/netauth/colddb +thawedPath = $SPLUNK_DB/netauth/thaweddb + +[netdlp] +homePath = $SPLUNK_DB/netdlp/db +coldPath = $SPLUNK_DB/netdlp/colddb +thawedPath = $SPLUNK_DB/netdlp/thaweddb + +[netdns] +homePath = $SPLUNK_DB/netdns/db +coldPath = $SPLUNK_DB/netdns/colddb +thawedPath = $SPLUNK_DB/netdns/thaweddb + +[netfw] +homePath = $SPLUNK_DB/netfw/db +coldPath = $SPLUNK_DB/netfw/colddb +thawedPath = $SPLUNK_DB/netfw/thaweddb + +[netids] +homePath = $SPLUNK_DB/netids/db +coldPath = $SPLUNK_DB/netids/colddb +thawedPath = $SPLUNK_DB/netids/thaweddb + +[netipam] +homePath = $SPLUNK_DB/netipam/db +coldPath = $SPLUNK_DB/netipam/colddb +thawedPath = $SPLUNK_DB/netipam/thaweddb + +[netops] +homePath = $SPLUNK_DB/netops/db +coldPath = $SPLUNK_DB/netops/colddb +thawedPath = $SPLUNK_DB/netops/thaweddb + +[netproxy] +homePath = $SPLUNK_DB/netproxy/db +coldPath = $SPLUNK_DB/netproxy/colddb +thawedPath = $SPLUNK_DB/netproxy/thaweddb + +[netwaf] +homePath = $SPLUNK_DB/netwaf/db +coldPath = $SPLUNK_DB/netwaf/colddb +thawedPath = $SPLUNK_DB/netwaf/thaweddb + +[email] +homePath = $SPLUNK_DB/email/db +coldPath = $SPLUNK_DB/email/colddb +thawedPath = $SPLUNK_DB/email/thaweddb + diff --git a/3.4.1/resources/k8s/values_adv.yaml b/3.4.1/resources/k8s/values_adv.yaml new file mode 100644 index 0000000000..cb6380abcf --- /dev/null +++ b/3.4.1/resources/k8s/values_adv.yaml @@ -0,0 +1,29 @@ +sc4s: + # Certificate as a k8s Secret with tls.key and tls.crt fields + # Ideally produced and managed by cert-manager.io + existingCert: example-com-tls + # + vendor_product: + - name: checkpoint + ports: + tcp: [9000] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000 + udp: [9000] + options: + listen: + old_host_rules: "yes" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes + + - name: infoblox + ports: + tcp: [9001, 9002] + tls: [9003] + - name: fortinet + ports: + ietf_udp: + - 9100 + - 9101 + context_files: + splunk_metadata.csv: |- + cisco_meraki,index,foo + host.csv: |- + 192.168.1.1,foo + 192.168.1.2,moon \ No newline at end of file diff --git a/3.4.1/resources/k8s/values_adv_config_file.yaml b/3.4.1/resources/k8s/values_adv_config_file.yaml new file mode 100644 index 0000000000..1bd635a30d --- /dev/null +++ b/3.4.1/resources/k8s/values_adv_config_file.yaml @@ -0,0 +1,38 @@ +sc4s: + # Certificate as a k8s Secret with tls.key and tls.crt fields + # Ideally produced and managed by cert-manager.io + # + vendor_product: + - name: checkpoint + ports: + tcp: [9000] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000 + udp: [9000] + options: + listen: + old_host_rules: "yes" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes + + - name: fortinet + ports: + ietf_udp: + - 9100 + - 9101 + context_files: + splunk_metadata.csv: |+ + cisco_meraki,index,foo + cisco_asa,index,bar + config_files: + app-workaround-cisco_asa.conf: |+ + block parser app-postfilter-cisco_asa_metadata() { + channel { + rewrite { + unset(value('fields.sc4s_recv_time')); + }; + }; + }; + application app-postfilter-cisco_asa_metadata[sc4s-postfilter] { + filter { + 'cisco' eq "${fields.sc4s_vendor}" + and 'asa' eq "${fields.sc4s_product}" + }; + parser { app-postfilter-cisco_asa_metadata(); }; + }; \ No newline at end of file diff --git a/3.4.1/resources/k8s/values_basic.yaml b/3.4.1/resources/k8s/values_basic.yaml new file mode 100644 index 0000000000..495a513413 --- /dev/null +++ b/3.4.1/resources/k8s/values_basic.yaml @@ -0,0 +1,5 @@ +#values.yaml +splunk: + hec_url: "https://xxx.xxx.xxx.xxx:8088/services/collector/event" + hec_token: "00000000-0000-0000-0000-000000000000" + hec_verify_tls: "yes" \ No newline at end of file diff --git a/3.4.1/resources/k8s/values_basic_no_token.yaml b/3.4.1/resources/k8s/values_basic_no_token.yaml new file mode 100644 index 0000000000..0165a7adfe --- /dev/null +++ b/3.4.1/resources/k8s/values_basic_no_token.yaml @@ -0,0 +1,4 @@ +#values.yaml +splunk: + hec_url: "https://xxx.xxx.xxx.xxx:8088/services/collector/event" + hec_verify_tls: "yes" \ No newline at end of file diff --git a/3.4.1/resources/k8s/values_ha.yaml b/3.4.1/resources/k8s/values_ha.yaml new file mode 100644 index 0000000000..b9d1f3ca32 --- /dev/null +++ b/3.4.1/resources/k8s/values_ha.yaml @@ -0,0 +1,6 @@ +#values.yaml +replicaCount: 6 #2x node count +splunk: + hec_url: "https://xxx.xxx.xxx.xxx:8088/services/collector/event" + hec_token: "00000000-0000-0000-0000-000000000000" + hec_verify_tls: "yes" \ No newline at end of file diff --git a/3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example.conf b/3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example.conf new file mode 100644 index 0000000000..e5d16b774a --- /dev/null +++ b/3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example.conf @@ -0,0 +1,31 @@ +block parser app-syslog-vmware_cb-protect() { + channel { + rewrite { + r_set_splunk_dest_default( + index("epintel") + sourcetype('vmware:cb:protect') + vendor("vmware") + product("cb-protect") + template("t_kv_values") + ); + }; + + parser { + csv-parser(delimiters(chars('') strings(': ')) + columns('header', 'message') + prefix('.tmp.') + flags(greedy, drop-invalid)); + kv-parser( + prefix(".values.") + pair-separator(" ") + template('${.tmp.message}') + ); + }; + }; +}; +application app-syslog-vmware_cb-protect[sc4s-syslog] { + filter { + message('Carbon Black App Control event: ' type(string) flags(prefix)); + }; + parser { app-syslog-vmware_cb-protect(); }; +}; diff --git a/3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example_basic.conf b/3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example_basic.conf new file mode 100644 index 0000000000..3359addfa0 --- /dev/null +++ b/3.4.1/resources/parser_development/app-syslog-vmware_cb-protect_example_basic.conf @@ -0,0 +1,21 @@ +block parser app-syslog-vmware_cb-protect() { + channel { + rewrite { + r_set_splunk_dest_default( + index("epintel") + sourcetype('vmware:cb:protect') + vendor("vmware") + product("cb-protect") + template("t_msg_only") + ); + }; + }; +}; +application app-syslog-vmware_cb-protect[sc4s-syslog] { + filter { + message('Carbon Black App Control event: ' type(string) flags(prefix)); + }; + parser { app-syslog-vmware_cb-protect(); }; +}; + + diff --git a/3.4.1/resources/podman/sc4s.service b/3.4.1/resources/podman/sc4s.service new file mode 100644 index 0000000000..a1f3dd9f43 --- /dev/null +++ b/3.4.1/resources/podman/sc4s.service @@ -0,0 +1,45 @@ +[Unit] +Description=SC4S Container +Wants=NetworkManager.service network-online.target +After=NetworkManager.service network-online.target + +[Install] +WantedBy=multi-user.target + +[Service] +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest" + +# Required mount point for syslog-ng persist data (including disk buffer) +Environment="SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng" + +# Optional mount point for local overrides and configurations; see notes in docs +Environment="SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z" + +# Optional mount point for local disk archive (EWMM output) files +Environment="SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z" + +# Map location of TLS custom TLS +Environment="SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z" + +TimeoutStartSec=0 + +ExecStartPre=/usr/bin/podman pull $SC4S_IMAGE + +# Note: /usr/bin/bash will not be valid path for all OS +# when startup fails on running bash check if the path is correct +ExecStartPre=/usr/bin/bash -c "/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)" + +ExecStart=/usr/bin/podman run \ + -e "SC4S_CONTAINER_HOST=${SC4SHOST}" \ + -v "$SC4S_PERSIST_MOUNT" \ + -v "$SC4S_LOCAL_MOUNT" \ + -v "$SC4S_ARCHIVE_MOUNT" \ + -v "$SC4S_TLS_MOUNT" \ + --env-file=/opt/sc4s/env_file \ + --health-cmd="/healthcheck.sh" \ + --health-interval=10s --health-retries=6 --health-timeout=6s \ + --network host \ + --name SC4S \ + --rm $SC4S_IMAGE + +Restart=on-abnormal \ No newline at end of file diff --git a/3.4.1/resources/test_vmware_carbonblack_with_comments.py b/3.4.1/resources/test_vmware_carbonblack_with_comments.py new file mode 100644 index 0000000000..e53182eaeb --- /dev/null +++ b/3.4.1/resources/test_vmware_carbonblack_with_comments.py @@ -0,0 +1,53 @@ +# Copyright 2019 Splunk, Inc. +# +# Use of this source code is governed by a BSD-2-clause-style +# license that can be found in the LICENSE-BSD2 file or at +# https://opensource.org/licenses/BSD-2-Clause + +import shortuuid +from jinja2 import Environment, select_autoescape + +from .sendmessage import sendsingle +from .splunkutils import splunk_single +from .timeutils import time_operations +import datetime + +env = Environment(autoescape=select_autoescape(default_for_string=False)) +# Below is a raw message +# <14>1 2022-03-30T11:17:11.900862-04:00 host - - - - Carbon Black App Control event: text="File 'c:\program files\azure advanced threat protection sensor\0.0.0.0\winpcap\x86\packet.dll' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode." type="Policy Enforcement" subtype="Execution block (unapproved file)" hostname="CORP\USER" username="NT AUTHORITY\SYSTEM" date="3/30/2022 3:16:40 PM" ip_address="0.0.0.0" process="c:\program files\azure advanced threat protection sensor\0.0.0.0\microsoft.tri.sensor.updater.exe" file_path="c:\program files\azure advanced threat protection sensor\0.0.0.0\winpcap\x86\packet.dll" file_name="packet.dll" file_hash="c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363" policy="High Enforcement - Domain Controllers" rule_name="Report read-only memory map operations on unapproved executables by .NET applications" process_key="00000433-0000-23d8-01d8-44491b26f203" server_version="0.0.0.0" file_trust="-2" file_threat="-2" process_trust="-2" process_threat="-2" prevalence="50" + +# Don't forget to rename the function +def test_vmware_carbonblack_protect( + record_property, setup_splunk, setup_sc4s +): + host = f"{shortuuid.ShortUUID().random(length=5).lower()}-{shortuuid.ShortUUID().random(length=5).lower()}" + + dt = datetime.datetime.now() + iso, bsd, _, _, _, _, epoch = time_operations(dt) + + # Tune time functions for Checkpoint + epoch = epoch[:-3] + + mt = env.from_string( + # Extract mark, iso timestamp and host fields + # Make sure all needed characters are escaped + # If string contains single quotes wrap it in double qutes + '{{ mark }} {{ iso }} {{ host }} - - - - Carbon Black App Control event: text="File \'c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll\' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode." type="Policy Enforcement" subtype="Execution block (unapproved file)" hostname="CORP\\USER" username="NT AUTHORITY\\SYSTEM" date="3/30/2022 3:16:40 PM" ip_address="0.0.0.0" process="c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\microsoft.tri.sensor.updater.exe" file_path="c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll" file_name="packet.dll" file_hash="c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363" policy="High Enforcement - Domain Controllers" rule_name="Report read-only memory map operations on unapproved executables by .NET applications" process_key="00000433-0000-23d8-01d8-44491b26f203" server_version="0.0.0.0" file_trust="-2" file_threat="-2" process_trust="-2" process_threat="-2" prevalence="50"' + ) + message = mt.render(mark="<134>1", host=host, bsd=bsd, iso=iso, epoch=epoch) + + sendsingle(message, setup_sc4s[0], setup_sc4s[1][514]) + + st = env.from_string( + # Make sure you changed index and sourcetype properly + 'search _time={{ epoch }} index=epintel host="{{ host }}" sourcetype="vmware:cb:protect"' + ) + search = st.render(epoch=epoch, bsd=bsd, host=host) + + result_count, _ = splunk_single(setup_splunk, search) + + record_property("host", host) + record_property("resultCount", result_count) + record_property("message", message) + + assert result_count == 1 diff --git a/3.4.1/sc4slite_arch_diag.png b/3.4.1/sc4slite_arch_diag.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf72a5e512f42d6128126bc5738a52e1944e708 GIT binary patch literal 334321 zcmeFZg5)BQT01fRH zFD^FF(jPc8jfRH)#!O1;xq_4w!}E7G#%7jAXlVB%96$E3``FR8>n^~a$XnZMD11Ks z{^DH{-4`c~Z%gf4W8dyQLT!!t1~)WH2F))bJ4i(}+XI zrF=)6MvthKjFk_Zz#2@`AoPI(Z;rH|%3+T5sGoV`o6W_!6N}B8Gs2_WV$rofNNL5q zE%Fw>%Lkmf2~Db2=Xh!lMvU;PLTw@}-aRjYz3DNSwG2RhH>z9Y$ScNQs<2J=#Jo;3 zL~cc{pa5EbFw#&kR#HNH2pr?0VWCr_-2#r#fengI^FPP3==aeu|7gcRLkloN!}{wQ zWnh2v`3P(`eg52IM*5@S0Kdq9&G{3?f3C(R_=NeN<6FGIIW$RCDFp>!uWInl$jI8> z)W+ets%JjXfM+ZJ#vTprF3Zh^uJ97P3yeQ%_DaJ+L+P1_fsGXx%+N;Ph|Af^_GTP3 zF=r9r(8|aG#^7vaX>Bj!EY9@D6(Yd#O*1zW!ylJ8Sco%eC_QJ8vUz93AixFTf-pgE zGcYiSy)!fxc_}UXS9jo-IFqS^gRKZRHyjSiaTT;{B?5;6c)wNvpg9_5hpRd@vG#uls-QfnyBI5N@kOCN#9iXbRGjubk00>u_pV zr>>meleEflp#fpPj4!VBt<~ekUUS0yCfnXC*6_+SPM*L8Kfk`s* zBlv}SA!pcw}Ie^UXtVUB;v z^(PS<|0UO-JXicLcl{-z{|e(@qVccp`b&rYtLpy}jejlUjZp`@f`1)}|A@xFj>Nx? z#Q#PBH=^;cBk`{z@sD_^@n1*cKicx&nDNhO`(H=mUq|9kPT25kJpHzUtWq^;t{TW* zxN^WX>E>J+6zmerFFZ#$)YJ2WxOx3g!ww^zXGTGe&-(=9H}-0K*8Q!Ln%k^2k^V|{ zsR)5Cx0b5;{?kY@0B!lg)>iyGw572#q7j$|nZV43Ovq?&t}@uOXJRG1`^my7V3nRw zsIXtG*fZkJ7NqKci441H<5pWSBk}hv54(?)!rh6JJbg~5&HXT?dNb?W2CwU?!M(>KEzP<9 z4eqxZOeXB(i14GfX$>sQ*$HIN1QmS7j4|h29-$&W%jOCAGObf?m5uPwADNGrEYKZC zSrrW3iZedT-`Q6Y;3K?ugj`?;F^xK*9AW2HBLPb1P645!<*!xlY3*8WGI);xNK@Cc zLEi6{{;}~EiO}UmiS2%n3DW*poFw(CTcx@09Hda!{(VqGv>)>Fj=OY;;}_VMhhs-l zg=dAoM8?7hhvDO(HN;$+zDO67T?AxxFkFZ;_Z^kr%II6Xy{ZDp4n-bxDplKuRx{fv z#wWdpW28e7*8AWt4s(X%$|Gyhuc3Ej44HL;6|H(*25WOT`stOl)#QDMiaK9hXT%u9 zc{*rMIKg4<=hnn-5*}`&7rB?Pfo(cg0#}pfW<@Cg(aW6sO8Hyl%v*l;z+SF7NJ=H3 z8Ga2FI|WJHmIFDP`hT3b^P)yhJDH~X;k)dT0h=uC_R@`v5q^u>QUg9Mi8miZ9%gHg z@Yp?vuMe9P$!s~7>`xLTpF18G{LmI!OKgD{mmOM8H0Sn&6n-~Tsps}z|IUBrOrHS> zRcq~Y=5b7VL`i^ckfn1e(TXNR&cU{#Dfp~h(1VpJP>M*dz`~VKRATq2__%2LPPvx5 z%xKw&ucXf~l7&SNIU6}YnDD!&qcMYpjpuVttQ=fm5oyOh9miT*q&3fT`C+lOmdQt{ath~b!piM}n**}LcJ#!F zv02aG5a6~Qr7CQg>!%mEt0h7dJ+K$PPrGFfTZ}d4VPsu2+@~LN5uY?f)Y(3xGPK=Z zQ2^*IwzjVMJ3KR=55oWtljPa$!hx4|N`-1l>W6)}#osDxp;bMiunEDpSmKT1w*i#42^VP%%QP-!d9>BYt!`Z&owEWAIc$b?sQ z(g-`H+a-D1W7dE~y?lo-^jRJVtV!Yp3(krDMvJ2K(yl#Q{#8wNg7%H7hpqz9#3x3gt;{S0(3MDO_jG#Q zw*Z38#i>%K@RtGkOQHPXV0b$!eTsqv?m&dzT|;1KpE&A?U~21TDpGWbjC?9oN_d5D z^0u5d=$E{yXX=&}W*plGix6p&P8yqXGE1(>)3zn*6H0|Cn!7R^3Q=^OY8M#2}PSYXR2Z?vNJo*cD55#)5>d&`&N^iqAvU zw4KgCANgs?z|7-DmxLFjviyCe|4A5BGZzp0qU-tV+vX~D$?^}rnz_p1XhRUR45xmZ zhB*kojLO@ur+1#MA^e)s6Rbcr%N907Q<$4S@qw;&diaRe;QdO|PhnO1$h=`)v*9A` z;K$RjVK_+&e7v*Cl%_-_+V!xmd0bIVbjhGrh1+Y{)>K@cS~}|cuKXTf#b(We#Si8) zE5JHC+cQo{ATS81&^6|Fp#MhX<0wew%JE##iEmRMu=zhgr}K7voRfQR_?XZlxN>9S z$Zxn_a;AQNvcO7u+1k-zDDOTp_pIdzC1cbOU#;S1)@F4!wBQI=ve5iWsNdQvXY_rU zjc}bxbH*x%j%B2^ih$kTU^2YRQBOi&)h+&D%7Utrqg%D7EXc}ru{tfFakdi><8mS`^*cW1vQ&A7{*LYyRc_H4_l`@-;~3e(x6(FC$KZ07;ce|4<21x2 zy|3fGXE?N9&SyCG$ClPuE5Q;8`#p}v@}I4_L0P=2p=L^WKBgbvy8c=)a0*S#$a)@{ zaDBAE2m9DjnZ^brXi#7BY<{PLi@S08@qB6)$gyX%mhgOj7~ju-y}tHbif-7jObVo? z=;;z~Mm!o`)|UIKGj0AsP~Tqq*GUk!49|QyZQhL7x~QM}oAM*82cfDL3Hx?tX%MO~ z3EB#a0oq4?OslUp6&E2}6NBxJ&BZQXj5QwdjN9gmU7gNfn6Qrr3Qa7Y)q;lMm}X&# zPqxRl6`5EG-g3n*%K;kfVs!n@Z#9@GMv8Bf=LMwx;A9r;Q|~2CpZit&W&YI1l4 zqlnhJHM4O_>`*%$>TOlLNZdVDQ727vlPLECi+7g}X_E#brNjCLJxV(e8UeOtedo=K zS-QE>o;r5RsDgv`#%GY5;{@>9_oVsq8+`0{w(yz`mggg1!>{+IFFKg3q)op#8S8b$KLXpo=&L7Aw#rK2@k#;)0lx?udGT0@ zJKAa@TYBp|US&*6wK2$#Nt0qj&;JoWcxFKatRxn5MyarDNsK zqIztwUaQ1CX{ny#qnW|sTYy5?{r^=6Tmmq(Z+47uPF`!~66KRsyy=3|=Vi)lMUWqC ze6KUd`?4Z_8bj;Kd0+IKQ74#8P4h6P+C6{JKU~hK1iuGei%34WmR4u(Qz}->Q1TrO z%_-%;-rx@prLt1xkV$(*ThPVnXD8Yygbd=rC$=g%l+i}L_O7m;czbRYQW{sNR%n#= zcHNj9o8?|7iU~-3>KGof|78&V!Lh@P-ii?rw29|G3SJGEnLRpOCjp&(O{5X7w0%t> z3N`O2S66Qz*%%ZJanDW65kj6;w-+1mO>5-y3uv>ZPzn?{E(o5QrhGZ`4x1_o!|AIJ z%AR=*666xyQnR92=g2cpRz7xke*S|{obne;RKDEuDD)S#OW9Fqa0JpaubUjF3QlK0 zvu+6*>-LqzUiC=5v1Cz&^}n@bA~%*yvW?e5IGH2bc!I-Qr8BQN_H+18O=bk8_6L1Y z!-t_|Ex8fnI_VkTsX`41@qEIhXR0^C#Mf&9uSBCOf1;o?L8bo_T?5^>0`@27E00XA z*%M!?-d~}v`|cB6s5v8(!@ug3mrN-YomIDArnWq`r%hYdY6c?kPr>t{cOqVS0_ZHQ z;`LX*)mbVS!m!=VsRm-8%qC#Y?;P~-U}7x&eoGb^Zb9+*(m3w*)Oue=&ZEQZbwxI- zMXQ_vo!28vL;6XU-0nm3PT3EM#9A{Vx(xz6(s*@#4xn`0gVGmkE(hQ#VF3&3kMdfl z4=ip=9lJZ_ono~Sz}0G_l+Q9kTU13Q(xM)VM|DSG*FDbak#c(JIC?6n>zW)?nFhKs z2?lv4zcmTlxY2k%Z2HLAAGg2+xiuwj=H^PaFFQkdcb&r-&)y(6^997d8#2a$;}ieeiHJspb9nDr|V@8k^IoHD6eT#roYfYwA63egWaEYLr7r(T% zd~RC!%wK=IS59?+qI$c1J_!;^HxauR|KVsG@~dyu*>9qaD}2b+GO4XSY|Db;#~%NZ z!FOND^@+>o7bY~Rak(ytu5E&(jI3TeI%5CnnrGZ%utwa4lF-oM@N6-9>^dH`?}t`7 z>m#&+y1rSg_iPQ3pA0QsbZ$f^IN#&Cza(HX=0gTeDqJhxj zVQ^vNe7Z)N1{#vUCuvDjdl z<85)CGGIZO?h>%an!3-ewrZf&as_vCH>1Nlpv-hxE%T%U{LZCmw4Xw_Wkw6WhRfdC zPwhD>=8Wm~-}~;=Twcn?o!zZD!8Sw@;LatZx~;X77dzC}Qn|w?O1;#_|Ju*#qC8q@ zw1?U=%kwOKx2W3DN>2!CT(;n;jRN>ot&v&_<0e2rm)8F8Qj|Yc>#IM)LlEu5w0o~r zND7GDV!m%_Aic8czrIa?yE}xN2bigc3+Y4hb1nP{zrPZ*qzWhG6dEV`)!CT1A59|u zK#$TRSpQ%|T;B_ZDEL)efcM}ID>-(DossB0w-Gh5+%|2iuFV*C8Z&LtJbSCjtpV|; z&;Yd<`?jQ|v?EDrrIB<9t)7?}$reEMNnc6t{`tup7l7t1o#Jm@0J%>|kP}Ivcb*93 zry_(ghqz?)I?r6pHcfXpl{%g5m+?ZY+5aV?7_XOmS&;e{Mdqtkgo0dxK4Z}CHvY)F1CI%L7({c5eOcZ>@qL24yrP(Dp2S zm5SS8s>4@uzi&tFK_MM!xdE?bLT{L6U(M=E3Q--mQkwyR1G>xuJT_G(w|B1(5{v|w zY9vhO3WFZ?z<#z5_CNRY$)!qBX%(WaD7Y6kQ66K!|GoK%IwCy9A8MfzMVNr$G=!#_ zrD~rqx4M<6m*jf!QgmCwmAg6~Vp{wro*57`d*3{Z-`axd8(YxcaOGng%@TB`ne+ax zRrC52PR`Ar`nrwuXFrAuiprxWs?T%4ZO`l~oyO0s6*G^O5#mt^R~b<`l_FQ??@k#C zEyXQY{h|o(3CD<*s6YCaCJ;E~4;^`_N?13JpwW?vi}5+BC^0iH-O*{4|59cC^Ab{@ z(|2YN)4mrJI*nG>EHX>t&AcQn`wUHJl*;UT=Z5Y)&E6VUri_KeAB|eAwY>R4q4F zyfP6q{60owkA1xlI^n@#nL*jM5pU)y%V)!UFQiT9J9jJ(f4 z<_-uQXbat=2>yWVj1ITkNH@qH{odU}_^RGObE+2Q1CNKS+M@L6Z_I~JF7)^2g9VZZ zSzZ4e(e)|)^U&>Lsig7(9+i55WbW{cW7voxgoReUt|o=m{n?{0^3`_Fe(_bU5>OJa z3qPv@wM?(g(7}H?jb;`;pdQ!Pd{}q9kfehAL{}rBL!)RkpdsKl%oK+$w(kFVXIx<} zkFz{;Gw$+crKKhl#}}t|8=-wJYcsx*acOcWMt}jJT89sR>nX5!3&3`3D#3lkc`QNL zuB)HYn{&w&0t7Oh$DIPx&ADNZC%#xsl&HVma6X|Q&*E{T&ub=~(15XpY7HJc`_lmZ7R&U`PN$-<*AIx?_v>HoB6WJbz9rfaD9@mvX_# zufU4K4oweVeMsLN3$p=`j@FF0SiotBi*3mGt=3Yf@O}u}ef4!3wmVOTjdqWGson8x z&sTCOBfR`2T<+2IOBSx`&~RZ=-M%8tWU7euL5gcFQzQd1WW8E*42ZZVtH#4i3NbAR z*sAXaB|He$>1RlAw5pK{nJh9xn%-XEXt> zay;bz?ps6$5WzZks5I^0vR&><*qyZR@yn14_eZVtWUEL#y?U|y&2eM6*nXwE*lMD@ z*r+qM*v>%5s9;_4dZ9f$yQd?Ht$A%AJ8CM7PV{Bk)tT z{FIUeGOLVzzM1s+ld~!FgO-tPV#P~m6W=Y=&lane>VrqqMB!W|em2u5*0zO#q48WY zTDE%I#a1c@1$(Y>j6|5Z}D`;zPjo=>*t{`oFgg-UGq`E9l?gc=ohiWe%y#$5RG=U6-X8^uBv`6tJ>M62UZ&v$fqWz8?N3k1!s-hq#X(pGRME27vP= z_J1(Xb+Dy9TfwwD87lH{tUMaGAg}qABv|wT?{liXBw3*S`N=}KAjXk}4l1!Ro4dDY z{XmAwuY){&GJtrGmCw?MSaGFYCxLq)`A>jMrS>Vg8l@qVrti-mF(&GiXo7LqKjxS!``Bj(Zj73RX$ z0OX^z)~c$1qJdCdh%tb7itnV@e!vt_qCcX(J>k*0zDKD0bSg+tWK(9+W}CJGM-6Py z^_J%8z%)+DG3%d@(5idyD>Z_RiPQm7qa^Qv!Q%5m(dH#xXZYy5!#l8nY3JtIEXjwg zqPE=LluCeE50*XtxfMuq>Un+aIj7!mrbd>KO@@v8DX}?c{C{o7yAD z#G!X)5Ig9VQlOP(knNSGsNb&MKoSa0ek3C-(n_S1;FF$n+pc1p^t`@&0BcNHv~g~x zL26F#$AT%2{SHe=g##vsRQ8umB+lQQ{Ic;F026FiE`;rN!|VBiwtcRjhY8mNifo6h zoH3p5P0U;gXj8hwi##tknl)$6h8+kaaDU88l-Sc8r)$%ws4)A447+74LKZNLSt(Dor^?GShrd45c1C)6tT;QfczLKi!Joo6ZP!8Yq!(ab&jF9@`q%+j|| z>-Sh{UVuvWWl%qSz@SrxoxHxRdFqga8popyQXIfc%Kry@aTl&x+D3VvS9s!Iqa?1$ zNfJq=vIQcs5hMkqoC+8WhBNOvIoHqBF(G8I3ynd)jw$+*o- zzw^^CsbqF*HPs(QHF393zGg$9Q9mOad^nv}+lA;x92ECOc~3s!ED*l`%6{g(xZYO3 zE)0v!&+3+1U^-8pGkjP-cL*_h(^X=^+s52J%tx0RPwTeb%PcIA+2pJ=;{k)X@yz;7cp-fm%lbvR!vPZT)F) zwOe$D0CX{n)BN-2Q?e!n*^2$vVGr%mE%xguyn?zSUWxFt&RkANc9BF-s0l1lZ^1?y<5Yy4$)T|QT5j!jYero3CKmX45q z3j)$PZfq*@k}p4(`78DQu9Ze!ZKqef=0YyN18-T*IX`Oa{Kr<+ir&ZaW-qyI(N(^$ zR8?)74becL4;_D5q2hw|K^qJ}4ygx3KED7X+hTA^29z(@;=$@)YK5{8XqX3P`a0`- z5#wP>YsUJ|h1m_qt@u@oIX-^r4W~e?tES!N=qP=Q^a5jUlty{!g}Pm#XL5P&NAm9) zO}RojN}4q$-Mdqk#HJeGaUW!+j>;R`%89Bx)(bE0qMJUE@ii9H&my*JQPRiKwLD== z-3(rGh!?CcW-Po|yk(#l0MeiLkr+qOt#*-uLV~Rd*|s(#TY3kA-pDqh44+!7` z2F>v;Pc3N|f=jA4Xg#~a<44YX(d$q2bWmG;UB`0n>8ue$tPAfOYYBNyms zzhIiw&t2mTiR8U8-N^eAu*RutEw~n2OGJ@<+dN)UG6js*($s{*nMYzC*1zv-$NGKUii7OUf67L_4TgmxRio(z z+)!1NgP@Vf^MgPNcKNFVa_m7u_veZZ-`v$+12VW~-VjqW1%y4G zP>`+qa+*ZAMPlW6s!UGl)tBz|k)I^>VPQA!7U_29kRx!f62`TGv2gN_LbE>dA9m$Sy(o+J zT~6i#2CDbV_M)2rPwaHpn;5}xv2%T8;~L&H7%3eXe_)bxCpJ-%Vae!6V16w_0@f{> zd6v%NU0!2f_!(*EFTt5)ow5+qXSyv~!!B~BY^-EBxLI$2*Du>>FhQ~JU_tcD0lgjZ z9GNYONn<23D16r-VofY9U)9udh8NzWiuXw4zb}$LPY~VcAg2MisKLi>$^-GyQ1XDq z153N*EtY|00=v6HB?A$;CU6g8m6&OU1VPk@CLiK-UOOJjSl{=cblWf(ry?1T4b?lk zVh56B`TplPy30Rm_b$gr>ILvF2JNTSCjbbuD}tD3-~@2ur>yytQFsf~J9n#XqDHyRU{iW%s~2U3)T0QGiHir~KShFrm|1HM zSY!46j!Tal(i;<}Uley=y9JEyaa=RQ!U*C4NyZZH?G|016%DwqOPn+j8?zF~lNH|; z)#rF3f#ll}nr(I#8*B8BKbzX|5WG0{yoQr;kWMPxWk^NoU`Z=RQUxXk7I46PW<%rC z$gu-!PNb<=$Gii3B!+R1!1yH2q{@3fl^^tid(X~iuAyU0TFkD@2TZ%)R;2X3tC*qW z_!tny^+t3zX}y!i+j9vn%c9>=1866bzHHF5NFgs&6P3X!5hfX07Y$8|)^g{?JET|T zjg8Pg!`(RnGrlKWu~?_WZXv?gXOSIcv~CVMWh`ZWM^0YCD@djwhWGJJFVuoYk;=Ay zE$-I(<@ubejB8v|z(Q~e=}wib$6m1R7dX`}7iNq3*+<*C>PGB6(S~NPQ{z24Sunoy z8(#Z4SFbx;r<3FoBQzsuH`^2O5+0jK0xcYHUS&D2z5Z+>lAd16z9p_A8PX`R(AP#T zsKtIFtH-tsuScci;E&L)1QL(nU&Z4;1AJgXL8q1{=YygIv&aCAz1G9d(Ewug9S^Tz}`c|W6>c7Gk2?Uy_4nl;};gRLEtt%}lDXz1yJ zyCns-#}?NsZQ3~3UzS)?IgXTs*0Y5ervz*=Ia*yWt{Y1@h>PnCnHd&hvM~!B2CCY3 zj7&MW5xI!euf5p#u_2^HWf=RPN}&2@?z-|wFVSIAebSew4Be&Lz%S@zLg=TCl##$D z+`hnY1n}e{Rj|}swr@Nu`FTM+%$D`z`s2DaWw^AWuk-ea?v)zZ%{oW|KCw?d#dx37y2>FG)B}91|VE7Xu z3549$M#B}mcxEGlbWGxWtS5`jZqo&mm}BrnSz1Zjw*ikD51<&N zw=LCkr~HwcSxcEf&RgugXu9t9A3qmTQGJziTN@>=m%_;hx`GZ4?uCOFk420 z@^Y&ng=P7ga~_W&mo9GK``h~pe%L8yT9rd#tui+&4#0zHMH0fUzu|pP`?CQ*_@^m z>fO4Mh$j`CN}56~yov3X5J=+dmLHCarNKL!Pg7PE=`NZ75whg7-_#7E8TQ%ZW{|1T zn0*eNMvZF*$TAa%aL!u`TDZT#$L%=-Q^kvsn*CC1~zql`UAr4JcDJ50s+@7Pm) z8!KkalASkcZZp-|5p0<$q!DO6t0XQ-rD;54`?AAMc*llH)RSx40nS>l$a{5!Pn#A_ zEq`&TC8IEEl@l-h@W_4n$OU*t213??Z9sN+@yEW$V!oiVn}ScZ$ErC{R}_Oy8y34@ zdQ4yd)V;y}s(ah&9JUACA8C>%Vp^e(zHhf_Wi@2bWQtp%4W4Lwr07YHPDp1+b=BS0 z_A=$EY}ugttWW;XdJb$tOsplv7bGPn5p;X^MCaM2Io>b(qQhgOI39DztjbNw(8_|B zxGbRuGW-%6GlXG!UBfC=5GWq`Ml#jdfBp-=SGQ$(B~_G`oJIo|GFBqmRyAzlai z_7SUbYAOS(J_leL8gNm#Ww_mlK);%w!j!vU`sErjnF-={BX{|Fh|0EC+EXf991%Rf z8{luP<2Dw&Z62{w(+2ygeOc_ys6~=QnsX0FbGdcYU?Sfa9W~c1rf0X30{884-$r#% z!cUmrM#Te;7PAUg@gh;@VsDXFB<^sF+@nLca7@bq~C`Vm9 zdpL_ThAw#Aym)@6tzZJVyfuMr+Y&`)X-_n_X^Sp+$c>h=#lqE>LPab5Lp8JGB7a@= zKtbw{oR|Gv@p5&4IxZ+#2xCSrF(ty9`n28_$T0x~i#H!wU z8Q%!iA3pokQzmI3XvFKtWp8QKQ2t8P%1L!W<;>c(95v-Wk^;M?oF@OHRJax{SDR7B zq86_i-6%r}M3pa2bP`h90c@}o*MD*-v^Y>B(D?&NaAol0UlO)~?YM1$qqsk8+$JXO zMnV__r0u2kV_`6&7AcM!z-eG=9k(v94flkj%17@*r6OI2S2E-=n(TceGy3hpwlF7O z1j2n)3iK2uYuFk_%p?HUIwr^7oekRuP&~oga~x(452yUx&$nz8=Q%L8r{FUw+gNPI z+o=IO=^S`I$8|gIYfS8bhj@THJxap2W6L1xtG%t)4#MD4pi9M;e9Q{_cuxsX?Y~Id z6|fn4nLm+BAi3d<-^3_Z==M&MW-g5NW^AIXZqVb?YCJ3RTt~f)q3+E@^J2WGN3N(?N$x?;F<8urD6?&>* z7$Il(iY^&wU1po|^X@+ON1C&LC7M_j`f4Rg;juB_SeXkVPqbeVFngXeJ5a8@GL^Ae zKySm;1{4<@soL>pl{AuLi79zKtY^7Wo+^c_k0MT|i&;DbbW6A`tKQj+9_4l-hx51; z9W{@4!h(Faru5{(lrK-$Z0EyO{0xZcZnuNPD1e3>+x5Nd<~I%>PX;B0DBrZsteKKL zaC^>5G7k|{x)80(Qc!tbUm(@&SJ(+ zH!&?qKjAA$91>uElO5yI(4AI3$HTnplS7lWm3h4EV;bxn^0f=6kBY{(BPJ%sAwVFV zF8BSyqhiP^r67I6<3aL-R52*YC_#hTe-Z0&((hL(_oPwi*AMq~xfHO7W8)-0%Jj0y zrV=p-U|F$#Sqj6pTl;ig%+~_8Q}byXAx_Z$ z`UjUYFeC*MAE}rzI&QX3%TLm7VPIcjZ=_3QQu5u7|Ai?Tc3JzCU$9R2ch?Xna^>80 z9RoWJiab46Qrmb$`-~yYf=%hKz2#=k^W!$(#;fAP_0HyU3vOcI1sPl#cw6@Ec@tEj z)tZ^lFVTf4oahB|T$=KbBBJL+j>~?PV1AW5Vs7AMR}rY$?j~x^VG=diG`14yywQa{{(_$oxcxPWWFe6v}Io3m-LlAk;UQ$p4@sZ4muAtDg8`WK+U(R znnaapl1!H%PJMxNcBEqhM96mbaW#38v;1v_r_BBPlFlp5RDsnYo&Khs{SaXo+A+Xo z8#U=4yUA(a#LJW!F~8Z3DMGNc`pgnzUN97sQ`Q5V6Syqq9$_G6pXEx4p(3_9QPBWo z4rZfH9@hr2fwm{*eA)1%-@k|cVRZ3W&+JD;74aCmqLLZ!A*-Gg2aqE9?Vq5@ZL&21 zO!o1|>Dfp_s!%h%=5|;%CXq9Itkz zC9CG}3zOOE$&)<`H48i5T)&Qna{SZM7CpmQ!1FOvV!R^Q01};pP#u~ieEA}L$&kfLQNfVr@Fni zV*91_Vw7VM5sg5PJnk1Z^!)`i<}0~eD%4~S-`r#b`P^VsKy!&txZi@O5JlMKk)F`$ zkI%LOR~{0Sp3HF*y-ENh84VdqI?+!Z^fcS%TXuPvPg)mkzZl>YUJs9Z$djf*qgQblRmg0h#?O=q+<-xQ9A1n^ z@CExg9>>6#I3TLD4I^=#$HF+T0;7HNfbNk1@$Ims9Ii~I)|)p98yoiR{4`7t-t%MZ z^>`e8b1)I+IU>i_yTH=7OaW?)O;&&iIkcx_gKSxK?LqL%iQ zYcO6QH~zq6X6XHH`n{@aUvwuUq?g9d2Rxr}#3Hjou~7&w?D3{;Bc(zTu#~A+NUujb zE^pu0clouTY271cOc1B34NL>$&^&WlcHUlhg=v z;~r?)fJv!v{F8$@Uh>h8%mE|WKS82RpT4bJ8rIA`nZAgP9%X_e$nin3cbMp%Q80S& zt=T4WUfhkrD9Fh~!{x-m7mW5@y){rIHpc?0F21Z|0(h~*)~fV^%--kL2SXGCdueQE^_W8a5^h`{kZN_Dya9-hk9`cB$kZ3{|m0QfhN?5K-69*b^V6&{# zSE*HNsIG#DD(GMLMeWgHwa=5Iw|EA<^|5*gw9H&bkJ*H5%-c+s3tI*nSdQ1T zK%0smo#keHc-vK_n%$fb&o6}9#GhMS=xJpMP9w0iF*g4iQ+Aij>6eqi8HC9Vu@P^Bb??pp#BE{7Br=8{Q=O`Hnqs1NSrT zDKJO)k{`+PDTJ$YFF!y3%aVacmLK6~KK#T!U<= zs#6qYoPU$JR$&rUz`bCuM){(zkksV(qGLR|oRiPDWq>u(##62&a|ZV&pt~)11sL95 zAYB+0V26F2Ax2k?{i?4OsnX>G#-s_lKWb}T)eWdjvC}41reyLngX=TFdT8w)q0O^B zZO^I04va^}mWDr@4OoJt=M?(9r;1s!k=7oGrdcReNFE>2HGhfjQq${;u0S0t zFi*WSzL-NS1XQ-n0Z3XS?VZRz5J>Qj3-sPawbfs40RH!-SzaumGeB+L-a^KV-V};uNbnCdt%C5^i)+0cw3;C zE;yrBDRe?MmUB$-yVB=^tyi##qQ+>e($BlP;rvG9TA&y?a_mPqaMVo^Ts=ZJcKXK4 zlk%Aj5$f4z4lEajHKx`?e#0HRCg#D|GY3*y^1kN2FSl{!5Qe8zSaL0jSn^noEmJ^} z(^KKS^IcARq}QIy-b1*Ly&!+*((Ws)y;28a#m?Ed6B18SNm8RXtbx~!jJ7Lr^!8mT z^MPN)2pji+9O_dFz2=nNzzf{*90p!^jS2Sth!(ul_cb6x|>61>5LEo6Fg`iAAkz z1vWi4lwdtc)&vuU%XPQTscXK;Elgc=xAdU)9_*Pc3}DI4i{geQ6PTohpC3RmrX@(y zFajI!T+$f;4`VW$C1l=%S%rGnO^}tOyaizFDyDj&)6$bL-{{ABJ@`=zH6-bD6JsY| zkYg+1?JOVYiP`AG(#}DI?Zj7At_@9dEBe#3T9O$lV-(@1U_#^2iSkDz2A_dc_;`7B z^PrZoPTVg&pjH){xWPPr?kkD;3rPzUq{TB&#^r4QvN|s~Z&n|byd+p@# zM0(XUlID_HeS4mw8v>+PC#S-{20aeKJp(FbzP)+E0;oQbDok3&*kiKdX>kk=jJ0-& zt3B|K<@g55xDc2yZ6rBvU5hR&0SUA-j-EM-shsJ03A@-*O2F;D1)wjG0O{jY zh!-;rPcwg%pM^~surL4cAzTzdHevM|}`ZU2LQ223uGt=E&R zP{xo2q$WTkV(H=vXt8Gcns46Vfq-nA>XShGA6ix0ZK*GR;9+i#0$#B_~kVHZGnZjGQ%%GdL7li_NGcclrVreFpf`tR>_ zGDW;v5Mgj>hDT;woYdRWpTgf;_zA(9g^HO!pX8{xKNLrgNISfi}^3Myr4jaBZw6GSR}$O$(U zsOyk&xt(t`r&dhSI?cFhkCMhQjTf^(?>w(9nqB;CvOss;UC!$XooxVa>`7TupM)5#u0NuBwwohhf`XVSub-?L zTE$vo4di6HJ=PJ=!ZjUj5*#KSiT)q9zACQDuI*DoBsPtJbeD8@ceiwkba!{Rq;!|k z-LUDF?(PQZp4*vs<~Q&6JSXe}j_wuLy4JrIPP&dZGCN*v33Y_iF+Mxni>39Q?m29V z?Ywu^6;LOq0t1071Wrpp=1C|%$OnWC3$yM0P%KE zn~1~?+Y8$omf3cZ+S+)PIT`&6EKg;g6_g8i?swVlv~v@tQn=5G11q0GO*~R10OoJ2FtfG!69Rv4 z0H^E}xxgnOfhE*ILqAygDHDJZ{tn@v`oPFwMBLqt4)svsCHk!&%-$JX7in;F+cxjhGQw@Xj_2R1j7GyqtcS)Oc4|Y#C_bA1}GOIZ|??YME-&cG-dZ=LJNM71%?R6dt zEha|lJr|fqg~NUZNBc5RnfB|Xv|0L7im&{4OK~FwcqH8z$%LFrBE$u8%Niinp1F9c z<=CCPWqGKAj?MMmFAx;4e>-w!pH!|&q<`vh<(+ZCb+6g@b8j=0bPQhOu|@P;cOv3f zs}itk_Hx~2kGL()a-+}idTh3P?!IT<3PtMM?qO28ko8I<;y1V3G2?XIQbjwTnD4Az zcB9CPF}|t@8oRu^-n&=r-Wy?vH15BnXah{CFONUL4aY_gKoZ0D_0s8G%jCuVTnFup zXnV>Y7QN-@^noQkk@Ko7Ikn|Zd0Fh8gwy}n^3FzP?f{xIY$5Clwzl(S)wV}Pfj_BN zCP*3DtylhxLSmyA(;ginfsPW?^z=yxJ2!RL3Z-Ka#h_GTr(o3A?~n55uyxq3utQM5aPSC1XOX zQQ}Z5t0nNntHhgjrGk9Ge#W8}`~arj)XFme`T2PxyPE&%$3(#$1JMa7k^(vCK!Rro z;mkoIZs5Z+>cS^V;DpG#LgTaBLvn{ULgTy0U0>+u64eMbe=8gy1G#a$BVkjpHVDm; zn+m3*6i7u^F!~KJxq?;_z5C&C&-SAa+q|TI9Odjrz09_uSo(z(O}X-(JK*~_(zfJ1 zmVV&QqlcsNuc#^b8g1c`Wb6aOfHHXqrCssiJGPaM=fze=?LdeqXy4zB({$!9Im;B@ ztTRUy+gGFP^(7T*ot!_z6^%tlf$XE30E`sf+CUdNE8|v=PB;{92dR!D0F}KT&2(#i zz4ZMet6WVR{||z&4lZzgfIQp>MK4SSjr_q;^%EWRBF-0mGHdD>Zpkt0Y;#i+&ryR5KH32iIsv8(|J18Yav%iP+qCOe`G=ED`2yr(T?J7 zJj2S~*ZY11-MV!%t!lr#5`ky?3B5tz(Os5eCOq;Wy|=d+-4t9c@XUqheKBcwUEH?3 zad#;;IPf|9&^Bd+mLP@QuxhDk)kWCaB2AbndS=bC1lhA*t$0mTJH0{Gi+Sn!_hm=#LtNgaDivz0~}IRqHYz`TZUG9$(2ISyOz{XY0}tn z2HTH2=E%Lz04*v-k>#)= zT^3)udBD5AFC9%}O0rWYtA~J~{`-@RG|(uJ_dN{Tu_rSQjvV~@rQ-&EcgY1*lU(4& z7bG4e5v1Ac18pFx86*oW%^y}CRvMNSHm<2^vPb}}d2$Q2C_D?Dkn987?;x7Eq-=rMsb+U-_zr!$Dv&eH0ISAp@b9 zNnuuvBJ($q;@V@z|LE{?;Jw}-_YU%0LVa@Q_N#t9%zmYYTh}oRyVNY9B!=XHwlwM? zJY^KWCPxZ#fz~r3GY5$BK_fN=UORe}`b}6$>`e|zS?pM2qn()NXJVTpmXucxBVeh! z8?JgLlNpUZ)4$IW%|U+U9PqvQ;+xdZjh*lw_I^bQP&JX!OIB6kAxXiGbB$ii<9$F6s|+0~L4b`|bN0hTnj4{(2FJFQ76UL*u) zC{|I(#ubR;bjGIo8CYl}v;(~>2BTag1e~Y}KNy=nudO1pbckFKn}gj4Vp79XqPeQ< zWgWt~68r)ohM>lwo;M|a-ETi7ZSQFLF?n*v!M0xEyM{D&o}QKptV?kGm#fae8x5NR zM1buliFO<&&aM3M$;EP8q1VF_zM14y!g5(2e>v-T%Wg*IXc?=jSSQ6^!Sg40s8gx6 zJGg0QB1tJKmLs?Qq26$v$2OYeh3&KzDvybQ$>*q5DempEa=R5it1Ou);+&cjYh49p zTxURg40zRk#e=X~#=4(A7#WpeDd9+cwc?UhS`h zyY-lQRd%ziznZ)4r3=6nBk_Gq5s#4Jj-{1jjjD#X&{%J>g@3t<$BE!7B2=rAXRYG?3xRn&8!bHSi2gy`aqF0IkUNBK~P#jv^Ow3Jm=Iaoqs9vwscPOi8 z33MS$;*Z3M9w!eQP`L@M-KbFjB4KqIyf6`Ib%h78N!nNax<_OXD6*(un}6a7xtJ7s zP`-0j-v&$zD4vU9A3TG+pgo~)o;S~|_n;ZJwy>+Y7Vw*Or7U=FM9=%_V)I_v_}*^x zVZXu|+I{UtaEt6|!W%pEN*wIhOv31>7j8W#{s-o*YUj)~$m|}S(6s>_VL#aN-8Z`l z07`K9g3;6LasWVLr4ahij-2rYn}wYZyy%`;2n|u0501Kw`g_74Mq?0~xXzacoP7_V z+sL_^GU_iv61XmA*y7xWe)Ia%KMhYi7MO~p|D6Z+j*D8vs<-=t%l(!XQFnrOysST4 z#t++EANxkfTFzsk;e{I-t9JsyzL;gP&v@RMII!vthY3Qb8+b8oTv2JH!27Gl_%a)fG zYxfKx>qZs!pSOJ5e~s4o{m@6|cS*7K3Wf9Zv51#&Cwgtu##kN4vNxB#_K ziL71OM(fP&`t0OYeaW)9&^-XIeZxnGxqG3{;6uv}6HuprntsfVV2Hu#^PjU(r(V1T zvG=V9w%W8Xoiv^HS6vk~;hi5>l&?A4?Pm4=X(oK5$9rAZ583YY=FGU?&Rv@lOx5qO4PWCQGWdn*51Rz`A5qz!1P?}yw*r~&iDH;BAz2`4JfY3KNE=A1NF_;tqBEA7!?QD%{;X~AE5b(6mdNfz-xk+K6ial-x(N+ag0;Q)Ha zao1=TBofCC$4qu;dwx4%MM{2tfOi;zZrTXs9>>~;^!(1=o4#0+hzN&ebs+~@VDjA} zcZs=F@RY}7L^4jCe}7ubj?L^^0X2@gkK-GK$YV5QY}~WJJK5deT$Jf3h&wNXS^a}F zgEQ9a&kdI)y$(a~2rnnr1GoRD>=ROb$Ee^ih0&;qhpn_NUKCvZRNQ@1TR=|5IWUSI zG8*f?8OrB;4_1&zLP2-&!VYY6A-J&Yfr%{-^}&%c0~aM$D^S z9kAac-sdZ7?>4)gV7sH8Qak3g(i;1oekW_|^$xmmZ`Y$pq4* zEL>psL|+-n%W3@$5`vp^wtshy5vR^A^G$2L-6ZC+^4YkLbPj>5?gRFnsz>>$MGsxd zDWZ183gKJ%AyHg82dapmfr#DM&-)MQ?d^@9M(D**d^WVri@B2I= z^5I$YvdhcV;iskev+Xi{${>$mKVQTL05THW*4whG8@BnNk+U{(o!bg+6es0%mC!6i z%B}BGp}r_7qc4@7J*CCj=3aYXRWE9=+EzL@;gIX9E3L~?XhkdAw0(VhE1#X#Ea+&N zzTIAe_PER^5)O)}W$bUtp*#BA+k14u1@RJ5(J^hz!7F>;Y%vXJ-7{W^1Mv$nQF4g5 z6bT`+Z`4@)3zq;nse8O)IEKFxR>Wl(P!dTLnN2%L60t`fuR)l-n~bs%?w!qT% zL>}1~HPV)f?s7jWg)VwL8+7~Xb;V@lA`jgK+Qi$$>AvfG9PJ4If$W32zqpOg#7W6R zPjSmTPI9}egR(3|))j3@M(J;moB(aiv>8ZuwSgn3GcixGTW`Zf0Dx2gwgl$uFyQ_i zQy-(W#DsL|uxd}g=&(Xo&RP6Zm!bE^LMCtgcRVgb!Ik@sCG9bZPYEXfHNhK6GJkz$ ziX}I*Fp|JU2FKz@y=`a9$+8DFNS)Q>Vg87B@kL&}kI2Sd$SC_g76JB?wo23kI z3Y?dcI?Q*fI$P|o>elSf1)Lchp9jDA_auYJ%3qPHuNU&SRGJ*MSCUx;cAooj+NF4$A$P(BVfTE;u z{Z+fiecS>_8AN(VUHP_=HxtQin?|yD>QEIm^|RRS-D&)gjW+s9w;cC$Z0x*_&XhWJf zzDlq3<=ARFA3e&rsEOR!GUG0N%b)c@|JDl3En|m8+o96sl6Bv}nYL{N1DB8E!c|dH z)e~R?Nx{qZxs~L+?aIA)W*~&0c$t{!nH0c_3h=^MLqIHys6A#GSc|ot%P`Fh-KiuX zS+tJg=Xrn*zS(c+d%VfHZzHB6w3dHhx6m;A36hIj8b!DV4#z+z1U*gY= z6);-FuKzBly^ZLOn-9}V`HIQsdnS8Rv!lU3;Q47vXNW-b31g7P*C<29@sqNJ<>Rl% zed^eyTS?;Gqe-Sve#@)ykeKrW`w88)>jhVA);PM+|AZnQ=E21=8VnJvX?H~?X!;V` zCq%byHY4D4Cm?U}XOpG&r(CZ%T+x}I-e}vlv#q#oM<1S<&&`>xx@3tOJdiwASFgYW z#)!&f4=&FJX)B_(@9&5p2y+u-~zY*+HS8B)`J08)YAxg zcncbp&ZE|0ViV7|Wrx$pQvxO+rwP6}Z*c-`q87Ec{d+y{pB1Px6vAYf4sLapt zxuTBFBavxPWUkQYq5LVk@nHW3^I4oxyqUChLR;k~oh9 z+;^`{tdq4&m{~Qk5MtgTuIyH8?W9&w+~fU&#PA%%8T{z`_}SuN3hKQQ``Za{OztT9 z1+suYg@1qI&$W=}v^mdaOXA+@4<}>hU)Gk7^CrkEza^IIKQ-yIUH_1KN{)Woa{9q& zR;rQqpY*)*U{oS5K{P+C)-})b_Cq*`WJ;qK=U$()UwaitUd3#lSr{AC@7CBZk{jE| z+qn791{_2e61<3%x*|i|&1rqy%KUh$9|TZV>?cBv&*V)rJ+f3c3ae?YdzmH4P}+_? z3{(7|{`=AkJnQrw1!%8A-3~8bkfUH{x4S7W-9>p$!=~CRL{MFNg-)hRt&!4%2adJ8 zlQSO`2teLnj}I5EA~*(Ub1$U=JuCVWFSu&RTJ2*#WHuz`x#{OTHyF?fSv z4KLxtmyq)L6XgAvY*2BQ7k!)EIn-wJ`5SG9*Y!{pF$Fw(pGjnco}TFAXk z`^Yvzf)vTSI7;}fu{3i{((BCqnBeL7p2d5vmmQW(S+A`vD;t@dfGL6>GPp{@qd{W7Fx}@>Hbd1G1hxZJgZ(K+3QWp0gUjk)olyZ@0tnw%Y;H z=;C4wBtRwn{XOsO#(!%A|AvZa#6rvWQG(=W6tM9gmynNwgy;g0>VHGzNilhd{u#@x z%}I+L*fCs6+YAkEu+-K1IZ?B%l>no%bvgI5BEt1R|I=;z)7a*4Y#W_bBqaCpP;nN* z0AY;l!TKG*-ml=s2>dB_5;5kw)oA|ljpr&x(=?{szV1gv)hU0~!8NiyS7Awg+cBcy z9j*Q%URa zpq_9EK-@s!L5mkF!;<;DZM->?TMS<8nfRjcsTWt&)H)O8Z-_|%8o{K;Q`GOgumv+uq!_Pf zmBEe=ADeS8np@vE4;w$B$Y z4+DL3K0Uo%IDelF%GYaEw=7rg6<1%*%MHSwLx6l>@sCI4Cf<9%bg}l-9v)NSRdylA zVdMMXnV&%B%s#UKu@VopmlCVt@0vPRfxmH&1L_kp!bFq^umCu}<9i!_ zhqWj5&zz#J&k0>(lpyBhx9s-2*O+7JDQGCk?2EO@cR7t{CQ?ZS-^--cbURwg9-R~> zZnH8ovtG>K(ta$~c8;BKwes;;56jR{BJrWkonH$JyO?a-t3_)U?{fP;f@M#W<;Di5<*o@+u=4D@P^UMhmXI(K-qFwlmRZ zYGlK%06i|tz?`ez^mMAVrC;!b+74a}CN*xg1kF#iTo~`fGsWBRhQ6dKkn|eW_djmd z%Fuyhok>7t@%>y8tm8KdggMEb9xzJi))>};LdG+6ur0|#0knt;Q&S7SY+Ja4XT(aJ z6?Ib_4yndXs9cSsm{UT{E=NWZ+r6NaU_NQV=ozL&M?34q<}lgHG=K9>E!C8mvspx( zcW?^GYI((@1N+Sjg%^dU3u80VJ6N+q3S(Qbg7frIP@th9garTj<1Yd0U%2>whB39E zbb>xk_Zl#O!mHxNmP|8u{{ca_Y9THv-W2(0C#_ZygxPkbRhRW3B)45CtJ!QXdN&s2X0pW4PEQBm0Q+v2zZ_ssn#mXrR|dXAbFA5VO^ zq>M;_Ib0H=K(~b{LhVs4cxw=@tU^w?Ek77-SrOagGk=p~FQk6op;(%LcM@i2i+E%) zgVI@q5ch#rn{|EYRS%DM=sH_vUlI3RRf9yA3UUG)A&SC$$2A$-+YLwDT4`|Jjd`9V zY;(aWnVisuJSqwp_~R+MQ$EAv!JRF!bKo#47xV7zJH-tt`-2GD)jt-?M!a~J3^pxD zhb?nTh(O776j*c|QNw*Wj9838!DmVX)Mo^ZF0gpcn3_iYe2Sc@qk?UIrsbCbMeDj& z;qE(3CxlF6u+9`Tze|sYCz5fl&|g7sA${SE!urZ?c@5wcklc0&p>`gty^07-v-GUHlz>v5=4a`z~?z*tIL$N(KbB<^?n3bW{f`64edj zZLk`JCmX858NyToQLMs^#f%L(N32baE*|l$7TBzFBJ=7NZZ3p{ch>oC+E8Lsa5Q5k z)EulrDz=$94+`TYS4lPUbb&Qr{oO+xOdWq+5G04raVC zpj<^15`+yz^slc;WM=9j>)zTTk&}~~e12{_VxXf_n-l6?l7NSZVK&IiDJlxV!No0Y zZvH_Fxfu^BjP&_`3?49)T@)f+#2|VS^2vcZM!UY_^m*FbX6g1yJpIeLtL;rcheRg`?K;#i}R!e8$@3(x&CJ=cD*21Yt;8&K#>Hwq%e$OeZVH zJ75K}znhU(8B%)h=;&BiRh7f9Syh?weXs@m7CP}gu9e8n7qyB+Kb3U@Ht_M$$ElC!16o4dFt{gbm|QhqmVw(L=S<|#1RPb31ofI5z8cDV#QhA$Ah zgw|M6mzryG9~@AjxSD!lv_Uw@ng*T?`x7=7K>N9um5EtHcSKxiW}HHf`TB&{q{QtVJQ9h|%VS@3gU7dOWljeLsz{us z_%_c<3yYHdbma`aqeZb(?S`yHfVyQMvRMw=mBomPi76X|bgBEJz4W~2LK3eSGe1c4 z22mcR5|ML!R%!U_$Bg?ho; z#rxF|IAe40IkUl`8fMT z^WztVnSQ2a5hsz9!4vBh9(&cZcz9JR^Zk~h+#Ka3<5*lV2?i6ay_ly(6K({m4b)^75|69ypTvRUtDOZoXIJG;D|toeCh+rS zk}(S?ESyw%1Ikx^lZ|=V|G<>ryt+{vMnbdCa&t8k1UaaK;m*}68o6(~>6ox5z@ulEw~##rpD{0?FsL^q62wGQ|77R|)4@f~=C~^Eq9}K9%b8}&tMMEZ7#z&06;9|N z#sy9*j`nXZEq~IN(9zMIZjRK{4&0t@PiH14g)ZH63f&j4Ls6gzHKFfYN64@eU`RI2U-33F)903*JtSLes?00w zmKt8e%U_Hgp9F_HmLw@EiY0xKF4e4~|{oK>J%{(N^UumZeXPP+>B*3L6_!xOsTg@S&uRYla9nNNosweVcuN=+vH` zo(R^1^K(iH#HJ#Do&W!I|9@vaG7Ll}Bepv}Dh$*YIgz$A1(5L|56)vl^VC)nyQ*hq zZOao^6eE?%mD5u+gW1+F5J zgznF?ZK3##ZCE246&HhHoQQPZ#%DJPjyXXx4cSsq-$-LW_64GdOo@*ynP*GM!-s*A z!-qf&>x%bW-wQ~NurW+A<82OM=(bewGV{Rq7#~fs6u-I?FibF;8|WM>U~^K!HZ1=z zML5Y?Wkh7L)q4(NwA&_akN$grM|ang)YbIVL%TS8d1X}ScUCxn?{03W!Cf>Y+Nd8; zNeQK(@1I7T5mFhkad4CgDG*%FR;YuzNgtx)L=gU2Erd2=V4<*2oqvU(!w~Du65+>u zX6FR^sjQBh9v;0tc;YFf&RlLACkl6)cASMX`svk^zG*1Y6|($hPl6weR|r1{gUnHa3DQQ|Kvmf6ofl~fHfpKN~rol~2?a+AYY7Oog zDK*wl_LQTu>PUj(^1K0V!;7CBr(|qP%-%AdzVmIK+S>gbR!G10c)wL!yyjYOxnNxt z+`-5D#b|ir_i3kKc?+Sw57!9`YrwEy@j9TZgD$Jz(xLhtX-YBNHHMrqQL zu6QoZBq+R|S2)?;7PPYIxkM+w#>kF^6jW+4_*`dpU8FAaG`Qq$aS!e+ zwB^>Z7W%o_dCaZ6s!IflQ66y&9hAY=c@XfC5b1PB&0C=PaI4_m@nytCq^z;;!rDL+oHeE1oJGqt@?MY86)zZ+3(Sf?w{ z>Fxh!0T33`!jqaZtb$)CK2n;Refq>{)<ial!mDHR7b77Vvb$=vwLgSyc`SM zB`kb~8x9=GxZ!6M^K?Po6uyE+dYVARrb397{g=_X=t9x>Y}f^pcBV3|-eXR9_SHpZ z`2*hG|Z6)zfKG!~6%QXXGGo+|Q2(N6F_aHF`v#jcYH2SUWF{3WtfX@4>XZnyB1zm6xns=^`7Ng*Zd~R) zR>{lQV1quSs>!!iY!|h)iH|H=2Zo#@fx`N*fgggODHguK2FhKa^aizx1NERaL>}{B zrnM>;b_JN${s;UriCP%u|JKKb~M z_8^Fn#9BH7iNZM|kYbNtBtd8anHDm*%Oras_3y`i?nx4E{TPuMBc(Rw1QC z_9N#=6^*cil4@}|{2-8C`nFE7tu>gWlv7Qt%$%#SzyfziqKK-8I)a`=Y%=&b5tqQ5 z3^ovLit!_SS5A|t%maDEyM(XIa@Cv{LejAfB^Is9;uKwjf5i{U}h2l@2Pr*9+ z>hkccgI~D41`A~pj$mF>$jGNe}N*Pi9h8mB#D7LFpX=|0|)S}KcGr#pb zk!x^GGB;qvBt1`bqr!UR{oV46#a{{fq3e~P2$WhE78n%f2huv#(xazlHZU~I+S~s| zt&CsTUqlfHQ~$dssGE5_Rb@vU&-~YxeVh~#$I1DS1@15VtV>llzr?05ymL*vAz^Ta zRm4^5Ao=~gWBW>?y{`jhEsplx8@#oKjBQxte<110C6`R zTym_4#Ufm3wvbixf(6Q8b5Ol=yz&p4%p@YHTK99y`n=cXLl9lu*PJ;AE8tc!^x zAO&xj2?ljzrI^3Ykf#ZF&eD2}QnJ>Y4c8TUBjuwq1`@wf)jfVlg7*}N{pP5Qio`S%0cQCiYm+NU*2m@H)g$j+Gc$_G^ZIG&zE!%ug#TJ z$>h0@dsQ;+wQXf7KK~Y*S4}`2&io0(CnVwR_J9Zxd96UWTF{>J`GM}aP}u)Sk=An{ z#(QS5-C3>pG5Yw+!SJr5s{XoY>+MN?NI&N4HIGHD91DvI5fihjD48H{R>9mHds(?P z>}gR9zcIu!-p8^7571HEmE~0z2Ik z%4ES^Q-gO7Plpcb%k}lE)ws#2Ej%rO`_7w;klmBHGLFk#q#2B*H`^cI8LPMULG?>nMxhxa8_PUuAiZHK%@(f?{b3>botEFn(6%YpCEC-rcFZR6`}6 zoeMJUXqCzL&-BY|*M`w^DnwG!E8Py$p-|_?2rXFGf8`k#-4AV;Gl#(wk*f%4be?-m zId4C>ykDS-j*XpqsHHqS`H>KTVP<(OsFjC@h`gRBjzYWcu}gV zfL#p3!FB0GDb6IUEG$NxkvVqD6dT+1Ge@V4cH`~jylDq?DWl{Q62H9X9bd)X)FG>C zC|^>QZqL9+g7bE<%&N`w^+yQn)j2Hsws2G6#?*^!nlFbAHpoZCeEH82U2%ZDR)O%qDGMb47brbs{1~SkmlY>An-A`Ii zT($BeX)JS=d?{gA=5pg!Eo3^D_?ju8kde*q^?2CgMkz`q?B>kxJRVf_o(QuiXSo2Q zQQ=%wqndLvt2C^GQxH7CpuG32M$>KI9@Td56^zPZfhJ(ZGJzlK>EY9-I`-WHc1|e zwB%DyJv@oz?)1`Jc;j{J!TrGb^s?_Gl(Ul)^?(;v7*vdE7!jKiw{HH4Y3S?oGwtlm zoDxlv_;8lHmQJe54NP)QBa8!E7|CGnZP)bDvltbX;+GczlBd8icqwmlv07B)8ddw?zZb!G>9 zx0)aM`<5jNR&mF(s+igHg{iO13(uWqk@}1-Y+!_k&ave$085E1Hf!w!imaXQW%BC3 z07x32Azfv#IgvID&dr-t>N9#ia-EbXini!0noots4k+6TAk6S?NEK1}R(6B#1s2wiKnzKT^X{W=r;8NV?3LstdLR^k#I@K5 zWC1A!Ugt!4uS>Z0r~UbjINLl@1$?OZ-w;NIpIWA7)@+{BxjY|ba9Z4xxG!u=+uK#d zn4&aWcp5L%xvF-^@8S8SGdbu7U+T4T1_o8YYPS zsYNJ3C4rTNO$bqLjMJ5a1fxNb<9gSDD~=`w1EL1uFxVn~?toT;8ng<%X&2;j$|tIy z{TeXt{qk{aJV4_|Ch%BOz<5t+c3$U0>zicj9e#~+`4LrpgARa&($ksC9l09kS<3Znb~YPVy$fm}03N$24(Y}r1!+jFp5f2j zY-5!Yymy>;2u{nT)1#)FX2zRto}|Wk+O|)7{Zq$&%!+^3%~i}|SqHvlfeqx2XtYBN z6q$KQFit!=Rg82Hv5U(K>0TLFKI$9qrIFoTx>pmGMMg*EF;-u4IyWUoX}K zmwM}KY=y7)GzzDy+lK#eiF__hyo0amX~09?P@j+F@bM#-1MAb|JnP${*f24h(k%r# z%};cgw!*3N=L;=VgKAPVi`HSq^h6Sjx8e28|s_>Jy{-udz7gLIfyNg+W2#MWS@f`AV$bf5duS|fVQ%PA|XTcEfi z5AiS?bklv6w7Y7s2UNXe=u7}NJl9s8l%^=iF6f zy|&57=k+%(=R2!hGcp)l__79}EK<>n^Jx4>(~d`-S*r!t4f`2wPRTD^;H_aX-m5SY zAx`E11OwN=g@x!Vdx&jE(@y1}?s&@BJbn=t??02vG&I|TDif2r16f5Xlmdm*lmcJ+ zvYG|2Zhod5ZuQkVZTv=kZ0&qoH=B6vNiO~9j0MigBba~0`5e^!xJA8m#sCnuEBb9F z9RI@A&P51f8=}h1^O)_%0>}4iPFekDqPjGtuD1!M;TP#6*0lX@^jvmWjY*|Ng zhyj}GE54o^M|0;%l%Ap#)GpoYmPM6P`9*>JyjJJq5y~|f87q$UcZSQTL9JTVVOcjVBb5Lzh3Ds>69fKgS zXwJmaNL|2=(BOwkg^!AHH@Ii?W`qd1{E^GFBVvR=%9QXi z3F^J{1>^gz(Ydcm<{$jHo@ubRZC9 z%42C=eDh?>m?-TipSgZ9Exl~^#weEyU=34#y=A3Cl$+eKBy!@v7v{?Bv1$Z?0AuFV zB8FV~c2>Vf-r&`P%pC|Hf`GVUY%G7=o;p^AFpqN(%{Kq${pC8c^F{w7Mb-yxR9#?^Y%y6!#RCEmP(|L&>)%E4(yi(8FQNxP3Sb8th`@S% z6w2zlTQ)%<;5kJ3wkrmW_gk#Y4FojZ3t5aTl2oTrLHmSxQ1Pnj2uYyd>e_6an8`0 zjA2CNO0&8JWLtGy^BYtOWXg5{+igXG-te}Y$a&Zf5J$WlDmc1*1n5-Bqw=2ej@RX1d?Y2Z zpD=IV2e{eH-4qMFroBGTo#)=Y^S&x1%(?ASR}&yk8S{f~jy4)0@=+X3gZqxl0b}N2 zg!ewnm85;rB@TaHQF{|-Fy8b~QxwI{I{-?oOUv)?q1Za|Fb!H@j)0tJ4rbiJ3=PNG5;hL;_zw=9>lCEFibO0K{n zII=IVtOhCtLss7DE6LwQ(5L-xl(9iM>v3s*Dab7^LS-LYauvZa$0_LK7#E4@ciffK=c{&^#J=u4>9q&cXFA3XC?R+d zFJ5SS{*alP5@bE-C zCd0Wq#TLo-~sV<>Cr=aeuj9<021jUGBLQe z9q}+kdPIynJg+~WH1IkaOE1^7^O8B^S^I`=A5d&rRKN@xwfRzb?3pb`JWD03gA5?P+_FRh(r|| z4V>H*3#GMEv-6=zkh8cRA@KpE$vI4CL+iub&5*?Tlqq4SOf+42nAw6H9i6pB)`Xp> zlZM!5vhU_J0dClMZSsyR(=(069M+2+feW|V^Oe8H`7-1WV0GVzI~?`et5y1wV%99u zW{P*hZUw0@+biwdq1fA_vf*PRP{7hdNYE3t;|BFX{Ni%oQt@~@owvW$z244#Ye#{Z z3;gc63zP++UEa^tGqC_R?IZhD^j{=mV}4zkXfVkvPHf9B?<&`^iAlww9!EgGoio*685oag!82bJn(}#p%?r zZMrAc2*P>37|6lU1{DtpEIO?CHy?VL{I`j0^Q~EAST38YprO#5pBA&QIQ8%@A&b}! zPP9Gn)(*g>rdzv2#O^rFAtyFxY`rn<5k?ed$K1gv%0f|QVw zqu%wyn4H4o^$F`~;P%^ZV}(g_jQd?GXqOovb2EmX^J*3=acGn@Nl}0twa@PKNGuKd zQ@6Zx475fxqhztAVu71F*Ao{w2M6`Ntc6`ccMQH~DHe6`uj9uXh#7(=*+z*Fb0Z_w z%_Q*Su5x^;l_Y8TRMtzZ5|jmPhD5pla=r*nL@uH2Yqp4J_k*K;u7M-eUb?xBjg}a> z9d~a2KnI+IVaQs~LvsfdIxh9b|Dx=zqN@C&zEP=7Bh99}ySr1m8)Qp^ba!_Pf*{=> zrGOyaph$OvNO$Lk^Kiy{#`}%$@68!p>}%Gu)?9P`YV|P24kUN%eLR8UYP=RN+{|l} z&m(`1HgtJP9AyDX(ziv`~R=y#DsL&=kV99WVuI``wgsc zXIE$4Xn(%mA1AH9kph>qo~Czhft!xIbtM+f70RkeO~;ItaL+DR!u(s;8lWPKi)I(>#(XFaa?QDDZx zv%3dx2T!YqXugMk?zF0-BM|uo>u5Y1#_=f<&L5Qc%v~m?<%xl=hSx3?vC=~*=VV?904IZ0|kL86xSQu=Q&CA*#S?`85RrnG4dI!csDbw z2nZ5CsklcXB^7m^pXyi2rkWJ%J?)oWo;L-_kW(T|xX1|fy+Z~_Q$Js_sX#Z_8?uKdxJb4R_4(MOV}ed}3eoF+yUCOr4M%^qhYpV|yD1imjD8rl z+*l^l*o%y%kS;7Y?^^5rxP>Q6=I-HC^r)Hmba`K!W}f4AeKu(2YN6jj1T3xaMz^briv`iB7nBq;n3H~#D3HTzq(U^1PGymu&Robd zffeCi%zim>M6$izfevH`AsKaKhX2HMaktPe1bsQK|6$^=@&Ghvp zilvxTQf#zSaEzyaI1Q4?2A10-6cFP|;>y7Hf2%JasYANcEp}i0VJ)sH)~Nq~z+WuS z(wjlSo12^N(0h-^BE!Ot4zc~i!(xUfEawTFAMha~v9E%HF78BF{{+P&A|l#)dxP&z z?rnEQbM_xv4UX_z|ACiz&tshealV)HC)n*b(Quv(_u1Wa%`MdY2tE0m7|3wCZv3jQ z0dITL@>A=#a)&#|@lVz6beF#AhP?@6IR8EPnW%z^jQ9G2#b~s5L5Nq0wyoqS^V@Xu zu~&Rl>9nm7tI3apc(#-}`ok(y9oTz+u5B{^xanfXkOr;2_V($^k-_pOTk5S5E<2U@ zr;7(3=)JtQv3@ajG`<%roOH~v=Waa`@t{=D@bc;>b<#P7-3xWuq@c4N(HV|Y!`}Xc zg)`HL&>rKVPpCu}{Z6x;7qjFx>*s>LXIm!|7wmy*BL)|yqRV>Wp(ZCV<#5?`Co1Fj zex&Aav4UN{O~LZsF*nCV`mfOgF8Ecwq9iPTi8Do2VSwks$jIvdrD3SrhCMX8J-}M zaV`gCFE~Gv8pE3nDzt_$TLtgWhYdBVH1SD$udaVpb!oKyZp1x>wXM^Awi&OV$dihu z8ark3t+wUHOPje`91ECRHHC42$#yc3#`YN-g4UXtxbsU8fx=l0lvxYcyPALdmqZUIV zpSWv@y|bt&(Ret>8cQ)jNsBl^&7%N@(t9Pc#q%Gv&gm%yAV^5HQY>^0hsj$!z(sde zj4Id^2wgFBCw=`IvMy$hNjLkWcb{1QV$@LDx^6pJW2_E}CbBt7_GEoX>atLBxgND~ z6A@-O_qX9FAcxXR$%ue%xP^Mihup!j7Ku39xs4y zUTJ~49{Y4!-F}3|^{jR5xQoGLyp5nFpd!r=IYJ`A_|C46Thy(X=ExgCexMAlV_Y@y z5ig3Aq%XNCi0qDw${_+7)Id(jR0<*`Z7HQoSmrnY#f39sBU;r3$ZTugzTstowyV-> z=({WkeUSiR!#bsRw3i<|CE78*pg|Mii`0Qz1mUaXf4&Pmj5sVlgd-$PrZ)(f6TWow z0uMw%_KbS6r)C$OciK1YRNN*uPsmDUok$8V({&Zyd6)*BAYw{-PX|u6r*lr9_Op4@ zpS<0;XO8wuWQb?Whm(=(=L~mRmh6t?eq{VIQL0Y-I%!ZlAZnt-cSy!i14AM}Udm!a z(lT3E#KEifqhP5VH8^zmPNW()R*`tlSmDN@;8L}?V*+{(qZpTZkrtH*>+Vb%`LVEo zdij-n%oG;}R`r*X>1#5@lar#zoog*9j_~wNQQFU`-RB1km9~4B>c8g=?-vPOFY`AV z2_$sod|0`)g^F(YdnisNxNa3*5C-bAPhqba!zDS`xC{vawnUw9>`fK!|IMX^$iIHk z&b{kd|MhWvZj#ixJZ#Et)O%#`h{d&W-sQ-~G=Zb}iaCyhBW<2}qI|6>>ibixUisb6 zl^RmAtHgu}lUJNUPjo6BP+C^wX2)dE(8sYcX2ZAg4&nhZErDl`m4*Zz9g1sF1hB(Lwn z<_vM@+;t{_gq~a+oGu;+Z%yX9t_)3|C#RJ)+-HDIHcL!YGs?{MYx?3MCO$Dx!7c7E;8+q#aX~h)|_di}=XTp7)Wi zP1ZK|eXr0v14FlKS9n-l@LO5xb?k~D7&Dl7i;9jdD^(zfGa4@%22fSvY9mANAnT?j z)9TQt_J*UAP9*?1zB@iQr7yYSBnYalbW2Dcu@sQIP;(Kqe1_%N=I)%g-HG< z9S8H@6a?OhbK09nhax21Zafz=m_G)w4{E$`y&-Rf<0s>RG^qe%Y7-M3s42!;@ipprxd@R&= zqnZ4PKi&pg)+9{+&g(2**nCUb)1~~z!YMz*jIR;P=$8$c z`{{)FnVC7r$78nhF@BnZ;dSQk8aUt%u7ZpHSSf`RrWoM*j-Q$$JjDO?Kl)gGad_8M zJzK~n8mEi;@5Cur7@sW%&ESs|put z>G!VlMkl0z`MUH$v|Qv@){N!KkD{gogH7vb6qE2tlXA#u`wk|=83_wiU4R9uk=;Ed zOwGxecDG!Z@eUSSWsn(rk}w*H2D`tL|DP!*%@Ra=Uoq$YH$ z(=tDw$PSyrh?0)VvI2}|LbsF?w^dDw?xyB!HvY;QwnZ1NP+(QHlU8p>KWrzUW?Ni6>Ad>BA)vL|HgzqJSnqOu^z`Cd5`b3h{t2F7q8* z$St>F+Z8e%z8sHclz3gKe=Czk#xEnV{WHRDbIo4HC@v(agp=A<1Z{V3a2fu}ipDNa)++pG zl*2vE596Lq3T#vN#;y0I$>_~rd5i@L+vAu53z~dB2?VnM`y+~AWvpC8+Y{MdObs=v5+EpQClVp?QAe*|l->xmnywQHT=d zw=9!v(=ULDY9C)_(pK@xsU#Ax{T&sUPP5tMD+o#UFR*My4cPwiz%|KUXQVsfQv`E1;T3Htm96XRov#UKx6u|5NJ z9dfL~SCn~6^UJ>5`_^Ki`QIf9ktYq&gh`xuBpESz4lW&iBxX&_jwo`+mrcG19(cZP zPt>EyEmf#Qw&<>(Zg?)kjk}qcH0B-g_Xz_%pAuxXy3U-r9H9QF_A&5is#~?<{GPvT zG@nI;?`5**SWI*8c!v}w(UYI8c_Cve+>VIu_AW!`Xr_IUu4amew9Lk%t60!teNW2~ zcp!)KR@qV1bIftxPKSD^15;y&m>Y5p&VuMP!`gH`_ixIjY_jI0EiNhX`h8a)sd0?; z;?weAN-U2O8Oi&hifZjN{zor^(T%X!z}7&PVgUzSWj59Fhojm-n~=%qT^dA!2p{zQL0L zq__@Mk_DR#g|@m3;v#QSo$?Cr#zv68LV_7NJA=5J-wgHKdr7j}juZ8x^djv!H+Y0pEwUan3W=zt zD<@&2qsWfFlfrF-CXmUhjnU}Bd3d*zdT$p6nmhWyB87Q2XR9T@JNn`FfJ~Qh7bbp- zJnK^X<}8Mzt=qIgF{rSD$24C_qpdwc(@2OxGfW6gf9UQR)h+IJ$tV5%5S*9!b$Zcj zDWsb3&m%NMSZY=Ln4EJOlmah;LszStY3*u}o!+5N%*)qnp%Why%0Qb%l;T<*gS{jK zG;gv$9Z1vWC#B9x4J#Fc6<|U%e{D1Rd87?IpE8aFxg^HM8IyM_$Xd+rE>JccWO7t% z2>ELb1n+#cWzH_WGI8?0Gq8j9qoy4?7AOP|RdiJm%Ig}2cD28dSM5~#-3NeFcs+`~ zR0|U_o?==&iW|5`C@dXUWL@sLq&59Czou2`K(OlE%?>m4g)!qlo%oA^C-K!PUsSKV z<&W^r`dDYGx6&J%wKguhT3M}UVq0{G9uU3HZasR`^!~kMGWaAA_e@*A5NOf2}4 zU}dVFbrC!8BLaLM9&@yW(aH0}@9VOAV!IqsW8FBu7&>9|UVE^`5QFa_J(_;p#(L!D z!d99`m9rtsZ{{|FSx_Qk%mcy+HhITzQ%}7?RZR#sYl3!bZ4y!5BI=)f4Z!`+ zu6aERZ&`y*i7i>){1}5 zi36AVP9wBh1rPSvC8=9=&h`gET|fsG?>f2Hu)(t-k*RN_VbEP6CdkpdxM>vF@^z!Z zx*vo9YH`mtrrH$HHHB3l@itT!CF0k#D{*J6bsNDiRk-X7YfrggYJiN?r}9U?$ld>I z-%lb{rJ+!uq@M!e2xMaznjm&F%SdrJ4US+TcpQZ{JWlxHkyDFqv{^!DUV7q%sHVlG zIV3A9(lcj7Ouu)IKXEwUX&fc4s0+9HC32>7&k(v89!9qVnwqSORr-|gbYvcBcGVo8 z)1tQ!Ffh+w|B$cZ{&=obd3vmfj8HC`;TOSYdu)#dx{|+EKWNI$cTY;G;TIQFa@%p7 z?72Jmf(@GaSsbg$p@3s8e_*p%Q)2~&q*E+Zl`JfhOre{JX+B?Or=Bbn$SXL!;>;2jl!)7@(Rdm_8VY-}#I^!Y zumE{uLnowCW*KAPRl6`t2;H1T;jg6%4+)EF;KO)vtYIvv)EWTJg6HVIF0PmQ0);{w z+;&v61aFv$p3j5S0fW_K&co^OhPigr7IN&ISH=W`*1wip3aKjp6EhWRdIo-ZxSHo9 zHY-{P3-}HVYl*(Rjw7t?hVhkV1gCq=u-aOK*{Jk;u$-|$+ zA>kogZ8cI3!8QS+g}7PeOoZ~t@Q2ZA3junK2_6Dg`>bd4(r0*sev&20<0IDe@~F_C zlzRlYrOTGaQ|~vhU>!I@?60cPA2%bzZ~TB(CoKD)-yn?|4c{q1h8ynWPj$KmuJbR= zN^^GJqdTmUr5ma=uFz*PzvomVE9y+_{~P##kzA*gGDEP9n!n4->;F7`(VLb>B#{%! zto@s9{e)gssn2I=K@c6$R|n0hX-wVo4~fNqGVZ#J>TD0pk_>wEuHzz<8dv1FL`Ir_ zvW+H9nE_Jw?um8#tjxD%K+JAjbn`fK`%_b0=lMKVt6{h#7}7Pme3?#WC+Z6xy=J?K zwBJWCA`#dpWU)Ng?pZoP&2XGpzJp<6`~Bc~$>K7$xo%I5Rs%TilkKaw+Gdf%roXcR zo(QS0kqt_G4eCXCw3EbiFBWH zQ6X)sPkU!^@eisuy?O@KB&Y-KXuPsA(bj@54*H24<9*7c+tJoNQ;qycf;9%f>xh<^ zAkE&c=X?tb(U(zPbfSvG1aJ_|!{NA@AOS0m0*oGK*Mhiv_tE%{{>ndR1MPy&#n%%u ztY_HkVtJfxQxpGD>XTq$qZt^sF*%cq?g~=NwNCLYBgG^~LbYy<7?I1K`5vJSO0u?t z_DecURCG8%hn$WN>ePL8W^{8_T1|oMsWsJcqID3Gr$wW&>C4HS%u%O^E8L+*d>Tw? zKDsH3{xR&b9S3wse0?(R?Ja)w6h*Fa;P&v|??gUq&3_C-Wuoul?Zj?B>KJiVWB}`5p^8OlGmG~tHHT-84Q1HTvYr%Jkie`Si626~gxhstnQC zXIDj{w(c?6B&R17*`$%->dsgqa$yPR^Iq9a9>+TWdWw+EdAkZjNclo~qu+v8EFnz0LaQW%+(e``Tp zK{p1=XPHudzUj^RJR!K$RmiQ{X;QZhuuJmPpDQFdjFf<2{6_4-kVPG+8{t*0S zjOF#v;Qbul%Ic$RExrQAyz3|3ud zs$6MI^$mQ4$7T9TVZ-a+23dvoG_}5Ox(y+|x$q(%eYTw5V4$qbZ%!_nybSG0ei)96W&?0% zTdX6NLJU_Q{|qHdOddX$BT`qg3^aD`tl%8aU@BHQ%Z8u-*RLvbNJ5 zqQXJef_#3g=T3^RO`t{!h#61`0fAeg*hBE)$aQFQOm)X#rkgf*XfAbYl}iWvcHNKh z##O_Oh4B;@!*qr<(LXfdA&H3%{3tK$jIw|-&J4h0A~c+wxFL<0AQI2k1_4R8xz&Qb zi_U&_kZk3_GsYx#fHc&Vr1k(~h8^c0W#WAx{Q6nnbH=%wcHf$KM8As+emrB38Sr+x z;QipK+?Bw`SU_Uvu2oflNCTsZ$$O%Wh48h7O@L+rh9t1sthzENIWu(41G(Z^PyN6Q z6>v#Jvb9k6yb7Gm$Cc?m)_T8pmJj-AU_L7vK?DNe$-3DznHD$!)7KwL5GM!{uC{$x ztDiQBOE*I1GuXZ~Ilzdu1uSSM@TIqo*m}s>2oij-eye9@&t>+mhXP>6Mz%Dub0ifD zQ=EJ9g)-$>;gc1yM5W%!4=v;J*;^f?dy{AKHKkj1na-x)N0LB-3kR6{Lu1MG<={gC z48H&Pn;;o5lrAqVI*jL_YrpR*C)_2cwc5mT`EZch&@_<&4(~=)coUxX?g~G|JWf#> zQ=j04w;%vBYXO|W$Ghb|JGhsnR>ou@xKL2JBvi=>(t&;>`Et}p%qv_G_`qLYdXV46 z_+Q_i#1>U>G;AW%kjh&A;XHz2TL3^6bb@?15(u7gZ~>UN%@&n*V|~Xa)Z3h$3gxua zyDGiX9J!cWas6;3Q4t}YDeL#1(I=L!rG;jyuQan%cp5_`IH0EH$Pj}|eS#*hM&g00 zvM->3@K9C@e)pMunS14yR#e%fy!tq@170+?&$3BhKKURwSDJI0;pve}m(>WGg(xM_ z60fUomy9-O;?neEoLaW=j!l3ddh5iu=8;1D9&=px;Cum%0C3r_oycWv%{(J7S()p-d#ZJYNfd22F zce6~fuds+Z;v8I9zwsP=hz!r(WXSsU`q9NlmwkJT1iSWbKfeSj50X zPPSV?|Mm(CAwiTuz0KD!=c=oV3T+?>SVK5Kr8amTA%t%3<+sd7mtPYCEcbg`K+oe) zoeAuWLmSh$)cFZJM{CD-%WcJQNkrV19!o;MBOQKxjp7}F4nO>VSpb!!<1;+&e#PT6 zTG#;KHzonjo(3c=6?=7A%}Xh-lV2(C8l|#vYYzsgO3!xoh`+PFIN-1fjZWb*Wbqg! z?NMB=L%oP&%Cl-#{}t4Y@TCDiIs3sAXUM< zfa|X&dzq*J(Zjt3d4k&tAQotF{tR#tn6}OUGTs(Z9)`wy@=VKn{0P%;cS^pXy;%g4 zmHl4~l!*jp6Mg@%@0F!SZNdTWUpjUw6BUr{LIz`2Rah!mCPWdSNzYoy;%BHQ^GC~d z)){TuG|V_4$)vf(F={G3>-!R2x{(Ca=Mnp`iQGEmmWY+dEwkIO_`AMS<aVJaIEnk%%h97DVGznr`uIzTxzXe}5cS|nBb%1J;K`^J30sh+cjKoo-ph}2lG z0@$?g(oNmV{nYF3y-4t#CbL94GJr4AZ7oazHr=_F+wWM?C}q2Yf8bX%^8%*mcPX`A zr=o(cGCAV$tWv(Q=!L8JtnltQg*QN{-QiU5B7GSwNV}_ebb!GEh{y5sfCr)!81T3l zrg>#An#4+f);EyOfA+`G?A{)6c>yPyc>k=S?2dW25b>{50wv2xvcl*Jvoc3d!!32OFPZf_|ayH%sND zLmWR9-Q^;M=}CawygyAE88R}^rU2Y10_4HSj0nT#`=SaMY#&heHNB!$)SlmXYFDDw zdUR?AAIxp)Bb^@$M4_0`ZVzm;Ep{BgfD_u`M4ef>_OHdsM&rxyzUlqQX`5fcgP6gT zV7z}GmuHn0{Up?T9nNc!+wVt14aAnfq0;?uLVE$w(Q5DtbO67jxAHp+Bv>y%+Gz+X z5wVmX8^0`>W8@D6GOJi|o#v&`q3oI~--{?)hwA<@Z@tEcVH3*EX_i~4_>z{_7C!bW z7Q7=#_E)E6Mxo^m9*-)YgFL(kBBzU)ES~mCSu`xWlqE9U7K}%$4-&*Eyv%7}m5lJ&jU$eDo%T$WI66?Y@3 zrz_*bkiiJ+^XCg7ozbf)T=KSpWh7E&p3uRVN7isk^WEx;x_CHeVRfu%;ds#qjNWRG zdYe}*y2aa0B!%9 zrsvb47C@D;aDKa zZ`U1UQD15<0Hm3T?LMw>PzNigPk+Xv>i4-|-Wfjw!CxI&A3eo^6_NHuIE3_%D_Lh- zo|^9%nCgrffE3N{$R3+z@}6KwEf?y!FVF=c5p7x5kaFq67e&VJOe{`*$58n=+prZc z*M$~2U2gwtcHf{gc7%*{_T3x@sCN`w3{ucV6v0vF{PAJn1&AH^(^}C8NJJ~hlfX?V zus|o9_KlkXxco-)>27LFZpo{JcKA;tzxR=ri=? z+VRO{)?)n}`GUmIY{%0ideK0C&hfKPTUWJTHsWQtyg zfYoIe%IlfX3cR5N(^=1>Oh8fu8Fl$gQEtem=VvmRr8(l~#}6cyy~F!?t!fuY62$Ik zvW39yAU=$8B8b9`nnp-ew7g5hs-mjl5~wOz`h`lPa;@`oR^Gr`afmN$G*%*uM1z#A zV~UlkNol|RT$RI2&Wy|f5yQl!^2lH)a#$ui`-BLAs3{zzOA%U{Y5IO{^f>Vb`OX7; zZd$c$xZKX+O7Y(K?UDXrgYm_E-D>2x9pC-7=z&ij2VrNqHM|L#1}|D*!3+l`u*E;x z=e!j99GGevAPQD{athn1{l(i7?5+0rjJ<`~Bkc2Zb1QqqT&X%;h^a5kd*q!-L>V548|VrE#f7UOwuDtVUOs5jI@ORBO}cSK%Ad~``W%CEd%$5 z9Sd9H)bjdH1IHuY)*zb}r|=urs6bT*`6v2Kf_RmCB`*Vsf3T}ea4>CzHKtbY5P8q% zt?6qf{~Xm~AqRjeEIXt|LXo}kzG#d$XHJSHX*tYc$>1E8X)o3M5+JW?TLXduH!nu) za@W3vcLzP8uiVZMkJrJHI!*@b@Q{fq2tS?CPv1YntZwJlyr^n!o5-i8k!2EXus}0s z@D2~H!y3 z#qAm|bcn`~Zm=mphpbb^!~p3&s1S82!@|c))?dmLZ#TP^(g;PB&|5oXRa!fe_`QUt zjf6j6spP0jSV;Ycjb?%k>FEI%A`LK#iz_H`OE)xdNJZRnTF^>~`8Cu0kdv(XjvkcZ zu2~2{?YD1bjLfp1$eN86ASd>b4-avz6w1{p+Y+x)e1l7cDezv%=p>!P3^j{vNutLL zhB3x@1qb5XO@pSo3C(MvsptV+8CWMDf9#pv=S-ZbaNKE6l7|y6? zl^{9D))?VGS(r?Ap*cD_l%v4HY^G43RMDO{oEVRP2b`|mbp^ko7llGma`mfr;Iwr~ zW8+A_Ixe0YcY`rgWrH+tG=lopgeY;yIG!f0J^Ak&%oaG*O_@(z%8otKjXso6tArBWq4xw{MK$fPK5OFv#wGhLtP> znQxfbl>eN(uF>KMZ90jHK_#wDJEuTF!QE)F+mn;QqA1L-$iVh6Vq6_hNRvr`*zrTX z0i}=}qLA*#ooSamq3U(>RdieRsTmcMHBmVScCymTbUsDTS4K~toyDXxo-dqIKI|r) zA`|aLXD>etJpIJL6%BM1FKP0;MKc`HJqay2vz=ydmR!J+NwfG?E}g7LRk?c>B0Bx} z8%A7?@-qtoigxxeMdJhuE84OYYZ&Cjv)pe&!Ub2MeOZYFA-W-at)!E$PjhO*GkG)l+I(}Fg)q$ z+cqwz#g&%Hgn|*-1v~14>rUm+pU=^67Y`&U!l8zn-14A*;Mb>=>P!~Em`Ruy*C23? zN78S7<~0OM(r=*1ccWE_lemi^Bj`n@9uc4NIkIwQSef(oJ@d^8RvZWT`H}?v=?N~2 z5PT}E%{y3ukUbY-m+(cH4w`5oO*KEUzdncsT3HKVOXg?}Cj!k$g5i%wh~_ijlEwj# zf@SvRVk5IJJcz6#t1fD5hmoS}xi#O%zi>ro zIWHuO7W4|^$i4I4Qoe})yfchr6(#?>sPGUY>wUB*iiSGe3XRoLF#FfKHpch-3+ z+7)6xTI&CA?fOM+2CXp(g|qe{Ow7g;@DS1C%~qeVfgkN=kUcGgZAH?(O_=M!#yf*p zL#R^nk^asj_qfUKGUKC`XP}g&R-~?dPmn3X4J(S->LHnhO_g~$< zpxpbk5nW%94G_g&JQoq3-*U|z1~OdRC2TwHPoVcI&A^AVGtut3)-vs2Fl(lLxY)v<59FZh5q zif^&)p>&NBZPY$oa{PLUGzcufHr58`~9hzz&dQzmrSB_`P`F~+F; zCE>FQ*qPu!TKkjzW4$CbWINO7Q%i$USEwr=Vl=bmR$fW{+kD3hiVndsnCco#5Jv9g z;{S%hK1E~)eI+9&FFTm4otm7)zPh^7u(qaua_%N)U1Wdy{KWBYojU4&96W4nlk4jg z=+uwjIy>`#e9wxGPJ7t!=XF`IGo`RBPT6xrX-D8kV5()D=}59`Aur0xrLJ6`&vK7R z{y)b-BG|+Eu^q0o;clPkwfY6gla5M;6y-`akz9%=eT*}-z|PFPJROXa$VfWH(#c

    A5iKhWC4RxV>HN0x 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%0DlCwh&PG7;X3;!hrX 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

    IHM>b> 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

    jCbZ(5`NTrF5~30fy@#j^0;M_Iysad5hl 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 literal 0 HcmV?d00001 diff --git a/3.4.1/search/search_index.json b/3.4.1/search/search_index.json new file mode 100644 index 0000000000..fb79a5932e --- /dev/null +++ b/3.4.1/search/search_index.json @@ -0,0 +1 @@ +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Welcome to Splunk Connect for Syslog! \u00b6 Splunk Connect for Syslog is an open source packaged solution for getting data into Splunk. It is based on the syslog-ng Open Source Edition (Syslog-NG OSE) and transports data to Splunk via the Splunk HTTP event Collector (HEC) rather than writing events to disk for collection by a Universal Forwarder. Product Goals \u00b6 Bring a tested configuration and build of syslog-ng OSE to the market that will function consistently regardless of the underlying host\u2019s linux distribution Provide a container with the tested configuration for Docker/K8s that can be more easily deployed than upstream packages directly on a customer OS Provide validated (testable and tested) implementations of filter and parse functions for common vendor products Reduce latency and improve scale by balancing event distribution across Splunk Indexers Support \u00b6 Splunk Connect for Syslog is an open source project that is now officially supported by Splunk. That said, the notes below outlining community support are still highly relevant. Splunk Connect for Syslog is an open source product developed by Splunkers with contributions from the community of partners and customers. This unique product will be enhanced, maintained and supported by the community, led by Splunkers with deep subject matter expertise. The primary reason why Splunk is taking this approach is to push product development closer to those that use and depend upon it. This direct connection will help us all be more successful and move at a rapid pace. Post a question to Splunk Answers using the tag \u201cSplunk Connect For Syslog\u201d Join the #splunk-connect-for-syslog room in the splunk-usergroups Slack Workspace. If you don\u2019t yet have an account sign up Please use the GitHub issue tracker to submit bugs or request enhancements: https://github.com/splunk/splunk-connect-for-syslog/issues Get involved, try it out, ask questions, contribute filters, and make new friends! Contributing \u00b6 We welcome feedback and contributions from the community! Please see our contribution guidelines for more information on how to get involved. License \u00b6 Configuration and documentation licensed subject to CC0 Code and scripts licensed subject to BSD-2-Clause Third Party Axoflow image of syslog-ng License Third Party Syslog-NG (OSE) License References \u00b6 Syslog-ng Documentation provided by Axoflow Docs","title":"Home"},{"location":"#welcome-to-splunk-connect-for-syslog","text":"Splunk Connect for Syslog is an open source packaged solution for getting data into Splunk. It is based on the syslog-ng Open Source Edition (Syslog-NG OSE) and transports data to Splunk via the Splunk HTTP event Collector (HEC) rather than writing events to disk for collection by a Universal Forwarder.","title":"Welcome to Splunk Connect for Syslog!"},{"location":"#product-goals","text":"Bring a tested configuration and build of syslog-ng OSE to the market that will function consistently regardless of the underlying host\u2019s linux distribution Provide a container with the tested configuration for Docker/K8s that can be more easily deployed than upstream packages directly on a customer OS Provide validated (testable and tested) implementations of filter and parse functions for common vendor products Reduce latency and improve scale by balancing event distribution across Splunk Indexers","title":"Product Goals"},{"location":"#support","text":"Splunk Connect for Syslog is an open source project that is now officially supported by Splunk. That said, the notes below outlining community support are still highly relevant. Splunk Connect for Syslog is an open source product developed by Splunkers with contributions from the community of partners and customers. This unique product will be enhanced, maintained and supported by the community, led by Splunkers with deep subject matter expertise. The primary reason why Splunk is taking this approach is to push product development closer to those that use and depend upon it. This direct connection will help us all be more successful and move at a rapid pace. Post a question to Splunk Answers using the tag \u201cSplunk Connect For Syslog\u201d Join the #splunk-connect-for-syslog room in the splunk-usergroups Slack Workspace. If you don\u2019t yet have an account sign up Please use the GitHub issue tracker to submit bugs or request enhancements: https://github.com/splunk/splunk-connect-for-syslog/issues Get involved, try it out, ask questions, contribute filters, and make new friends!","title":"Support"},{"location":"#contributing","text":"We welcome feedback and contributions from the community! Please see our contribution guidelines for more information on how to get involved.","title":"Contributing"},{"location":"#license","text":"Configuration and documentation licensed subject to CC0 Code and scripts licensed subject to BSD-2-Clause Third Party Axoflow image of syslog-ng License Third Party Syslog-NG (OSE) License","title":"License"},{"location":"#references","text":"Syslog-ng Documentation provided by Axoflow Docs","title":"References"},{"location":"CONTRIBUTING/","text":"CONTRIBUTING \u00b6 Splunk welcomes contributions from the SC4S community, and your feedback and enhancements are appreciated. There\u2019s always code that can be clarified, functionality that can be extended, and new data filters to develop, and documentation to refine. If you see something you think should be fixed or added, go for it! Data Safety \u00b6 Splunk Connect for Syslog is a community built and maintained product. Anyone with internet access can get a Splunk GitHub account and participate. As with any publicly available repository, care must be taken to never share private data via Issues, Pull Requests or any other mechanisms. Any data that is shared in the Splunk Connect for Syslog GitHub repository is made available to the entire Community without limits. Members of the Community and/or their employers (including Splunk) assume no responsibility or liability for any damages resulting from the sharing of private data via the Splunk GitHub. Any data samples shared in the Splunk GitHub repository must be free of private data. * Working locally, identify potentially sensitive field values in data samples (Public IP address, URL, Hostname, Etc.) * Replace all potentially sensitive field values with synthetic values * Manually review data samples to re-confirm they are free of private data before sharing in the Splunk GitHub Prerequisites \u00b6 When contributing to this repository, please first discuss the change you wish to make via a GitHub issue or Slack message with the owners of this repository. Setup Development Environment \u00b6 For a basic development environment docker and a bash shell is all that is required. For a more complete IDE experience see our wiki (Setup PyCharm)[https://github.com/splunk/splunk-connect-for-syslog/wiki/SC4S-Development-Setup-Using-PyCharm] Feature Requests and Bug Reports \u00b6 Have ideas on improvements or found a problem? While the community encourages everyone to contribute code, it is also appreciated when someone reports an issue. Please report any issues or bugs you find through GitHub\u2019s issue tracker. If you are reporting a bug, please include the following details: Your operating system name and version Any details about your local setup that might be helpful in troubleshooting (ex. container runtime you use, etc.) Data sample (in raw, \u201con the wire\u201d format) Detailed steps to reproduce the bug We want to hear about your enhancements as well. Feel free to submit them as issues: Explain in detail how they should work Keep the scope as narrow as possible. This will make it easier to implement Fixing Issues \u00b6 Look through our issue tracker to find problems to fix! Feel free to comment and tag community members of this project with any questions or concerns. Pull Requests \u00b6 What is a \u201cpull request\u201d? It informs the project\u2019s core developers about the changes you want to review and merge. Once you submit a pull request, it enters a stage of code review where you and others can discuss its potential modifications and even add more commits to it later on. If you want to learn more, please consult this tutorial on how pull requests work in the GitHub Help Center. Here\u2019s an overview of how you can make a pull request against this project: Fork the Splunk-connect-for-syslog GitHub repository Clone your fork using git and create a branch off develop git clone git @github . com : YOUR_GITHUB_USERNAME / splunk - connect - for - syslog . git cd splunk - connect - for - syslog This project uses \u2018develop\u2019 for all development activity, so create your branch off that git checkout -b your-bugfix-branch-name develop Run all the tests to verify your environment cd splunk - connect - for - syslog . / test - with - compose . sh Make your changes, commit and push once your tests have passed git commit -m \"\" git push Submit a pull request through the GitHub website using the changes from your forked codebase Code Review \u00b6 There are two aspects of code review: giving and receiving. To make it easier for your PR to receive reviews, consider the reviewers will need you to: Follow the project coding conventions Write good commit messages Break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue Reviewers are highly encouraged to revisit the Code of Conduct and must go above and beyond to promote a collaborative, respectful community. When reviewing PRs from others, \u201cThe Gentle Art of Patch Review\u201d suggests an iterative series of focuses which is designed to lead new contributors to positive collaboration without inundating them initially with nuances: Is the idea behind the contribution sound? Is the contribution architected correctly? Is the contribution polished? For this project, we require that at least 2 approvals are given and a build from our continuous integration system is successful off of your branch. Please note that any new changes made with your existing pull request during review will automatically unapprove and retrigger another build/round of tests. Testing \u00b6 Testing is the responsibility of all contributors. In general, we try to adhere to TDD, writing the test first. There are multiple types of tests. The location of the test code varies with type, as do the specifics of the environment needed to successfully run the test. Review existing tests in the tests folder of the repo We could always use improvements to our documentation! Anyone can contribute to these docs - whether you\u2019re new to the project, you\u2019ve been around a long time, and whether you self-identify as a developer, an end user, or someone who just can\u2019t stand seeing typos. What exactly is needed? More complementary documentation. Have you perhaps found something unclear? More examples or generic templates that others can use. Blog posts, articles and such \u2013 they\u2019re all very much appreciated. You can also edit documentation files directly in the GitHub web interface, without creating a local copy. This can be convenient for small typos or grammar fixes. Release Notes \u00b6 To add commit messages to release notes, tag the message in following format [ TYPE ] < commit message > [TYPE] can be among the following * FEATURE * FIX * DOC * TEST * CI * REVERT * FILTERADD * FILTERMOD Sample commit : git commit - m \"[TEST] test-message\"","title":"CONTRIBUTING"},{"location":"CONTRIBUTING/#contributing","text":"Splunk welcomes contributions from the SC4S community, and your feedback and enhancements are appreciated. There\u2019s always code that can be clarified, functionality that can be extended, and new data filters to develop, and documentation to refine. If you see something you think should be fixed or added, go for it!","title":"CONTRIBUTING"},{"location":"CONTRIBUTING/#data-safety","text":"Splunk Connect for Syslog is a community built and maintained product. Anyone with internet access can get a Splunk GitHub account and participate. As with any publicly available repository, care must be taken to never share private data via Issues, Pull Requests or any other mechanisms. Any data that is shared in the Splunk Connect for Syslog GitHub repository is made available to the entire Community without limits. Members of the Community and/or their employers (including Splunk) assume no responsibility or liability for any damages resulting from the sharing of private data via the Splunk GitHub. Any data samples shared in the Splunk GitHub repository must be free of private data. * Working locally, identify potentially sensitive field values in data samples (Public IP address, URL, Hostname, Etc.) * Replace all potentially sensitive field values with synthetic values * Manually review data samples to re-confirm they are free of private data before sharing in the Splunk GitHub","title":"Data Safety"},{"location":"CONTRIBUTING/#prerequisites","text":"When contributing to this repository, please first discuss the change you wish to make via a GitHub issue or Slack message with the owners of this repository.","title":"Prerequisites"},{"location":"CONTRIBUTING/#setup-development-environment","text":"For a basic development environment docker and a bash shell is all that is required. For a more complete IDE experience see our wiki (Setup PyCharm)[https://github.com/splunk/splunk-connect-for-syslog/wiki/SC4S-Development-Setup-Using-PyCharm]","title":"Setup Development Environment"},{"location":"CONTRIBUTING/#feature-requests-and-bug-reports","text":"Have ideas on improvements or found a problem? While the community encourages everyone to contribute code, it is also appreciated when someone reports an issue. Please report any issues or bugs you find through GitHub\u2019s issue tracker. If you are reporting a bug, please include the following details: Your operating system name and version Any details about your local setup that might be helpful in troubleshooting (ex. container runtime you use, etc.) Data sample (in raw, \u201con the wire\u201d format) Detailed steps to reproduce the bug We want to hear about your enhancements as well. Feel free to submit them as issues: Explain in detail how they should work Keep the scope as narrow as possible. This will make it easier to implement","title":"Feature Requests and Bug Reports"},{"location":"CONTRIBUTING/#fixing-issues","text":"Look through our issue tracker to find problems to fix! Feel free to comment and tag community members of this project with any questions or concerns.","title":"Fixing Issues"},{"location":"CONTRIBUTING/#pull-requests","text":"What is a \u201cpull request\u201d? It informs the project\u2019s core developers about the changes you want to review and merge. Once you submit a pull request, it enters a stage of code review where you and others can discuss its potential modifications and even add more commits to it later on. If you want to learn more, please consult this tutorial on how pull requests work in the GitHub Help Center. Here\u2019s an overview of how you can make a pull request against this project: Fork the Splunk-connect-for-syslog GitHub repository Clone your fork using git and create a branch off develop git clone git @github . com : YOUR_GITHUB_USERNAME / splunk - connect - for - syslog . git cd splunk - connect - for - syslog This project uses \u2018develop\u2019 for all development activity, so create your branch off that git checkout -b your-bugfix-branch-name develop Run all the tests to verify your environment cd splunk - connect - for - syslog . / test - with - compose . sh Make your changes, commit and push once your tests have passed git commit -m \"\" git push Submit a pull request through the GitHub website using the changes from your forked codebase","title":"Pull Requests"},{"location":"CONTRIBUTING/#code-review","text":"There are two aspects of code review: giving and receiving. To make it easier for your PR to receive reviews, consider the reviewers will need you to: Follow the project coding conventions Write good commit messages Break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue Reviewers are highly encouraged to revisit the Code of Conduct and must go above and beyond to promote a collaborative, respectful community. When reviewing PRs from others, \u201cThe Gentle Art of Patch Review\u201d suggests an iterative series of focuses which is designed to lead new contributors to positive collaboration without inundating them initially with nuances: Is the idea behind the contribution sound? Is the contribution architected correctly? Is the contribution polished? For this project, we require that at least 2 approvals are given and a build from our continuous integration system is successful off of your branch. Please note that any new changes made with your existing pull request during review will automatically unapprove and retrigger another build/round of tests.","title":"Code Review"},{"location":"CONTRIBUTING/#testing","text":"Testing is the responsibility of all contributors. In general, we try to adhere to TDD, writing the test first. There are multiple types of tests. The location of the test code varies with type, as do the specifics of the environment needed to successfully run the test. Review existing tests in the tests folder of the repo We could always use improvements to our documentation! Anyone can contribute to these docs - whether you\u2019re new to the project, you\u2019ve been around a long time, and whether you self-identify as a developer, an end user, or someone who just can\u2019t stand seeing typos. What exactly is needed? More complementary documentation. Have you perhaps found something unclear? More examples or generic templates that others can use. Blog posts, articles and such \u2013 they\u2019re all very much appreciated. You can also edit documentation files directly in the GitHub web interface, without creating a local copy. This can be convenient for small typos or grammar fixes.","title":"Testing"},{"location":"CONTRIBUTING/#release-notes","text":"To add commit messages to release notes, tag the message in following format [ TYPE ] < commit message > [TYPE] can be among the following * FEATURE * FIX * DOC * TEST * CI * REVERT * FILTERADD * FILTERMOD Sample commit : git commit - m \"[TEST] test-message\"","title":"Release Notes"},{"location":"architecture/","text":"SC4S Architectural Considerations \u00b6 There are some key architectural considerations and recommendations that will yield extremely performant and reliable syslog data collection while minimizing the \u201cover-engineering\u201d that is common in many syslog data collection designs. These recommendations are not specific to Splunk Connect for Syslog, but rather stem from the syslog protocol itself \u2013 and its age. The syslog Protocol \u00b6 The syslog protocol was designed in the mid 1980s to offer very high-speed, network-based logging for network and security devices that were (especially at the time) starved for CPU and I/O resources. For this reason, the protocol was designed for speed and efficiency at the expense of resiliency/reliability. UDP was chosen due to its ability to \u201csend and forget\u201d the events over the network without regard (or acknowledgment) of receipt. In later years, TCP was added as a transport, as well as TLS/SSL. In spite of these additions, UDP still retains favor as a syslog transport for most data centers, and for the same reasons as originally designed. Because of these tradeoffs selected by the original designers (and retained to this day), traditional methods used to provide scale and resiliency do not necessarily transfer to the syslog world. We will discuss (and reference) some of the salient points below. Collector Location \u00b6 Due to syslog being a \u201csend and forget\u201d protocol, it does not perform well when routed through substantial (and especially WAN) network infrastructure. This includes front-side load balancers. The most reliable way to collect syslog traffic is to provide for edge (not centralized) collection. Resist the urge to centrally locate any syslog server (sc4s included) and expect the UDP and (stateless) TCP traffic to \u201cmake it\u201d. Data loss will undoubtedly occur. syslog Data Collection at Scale \u00b6 In concert with attempts to centralize syslog, many admins will co-locate several syslog-ng servers for horizontal scale, and load balance to them with a front-side load balancer. For many reasons (that go beyond this short discussion) this is not a best practice. Briefly: The attempt to load balance for scale (and HA \u2013 see below) will actually cause more data loss due to normal device operations and attendant buffer loss than would be the case if a simple, robust single server (or shared-IP cluster) were used. Front-side load balancing will also cause inadequate data distribution on the upstream side, leading to data unevenness on the indexers. HA Considerations and Challenges \u00b6 In addition to scale, many opt to load balance for high availability. While a sound approach for stateful, application-level protocols such as http, it does not work well for stateless, unacknowledged syslog traffic. Again, in the attempt to design for HA, more data ends up being lost vs. more simple designs such as vMotioned VMs. With syslog, always remember that the protocol itself is lossy, and there will be data loss (think CD-quality (lossless) vs. MP3). Syslog data collection can be made, at best, \u201cMostly Available\u201d. UDP vs. TCP \u00b6 For running syslog UDP is recommended over TCP. The syslogd daemon was originally configured to use UDP for log forwarding to reduce overhead. While UDP is an unreliable protocol, it\u2019s streaming method does not require the overhead of establishing a network session. This protocol also reduces network load as the network stream with no required receipt verification or window adjustment. While TCP could seem a better choice because it uses ACKS and there should not be data loss, there are some cases when it\u2019s possible: * The TCP session is closed events published while the system is creating a new session will be lost. (Closed Window Case) * The remote side is busy and can not ack fast enough events are lost due to local buffer full * A single ack is lost by the network and the client closes the connection. (local and remote buffer lost) * The remote server restarts for any reason (local buffer lost) * The remote server restarts without closing the connection (local buffer plus timeout time lost) * The client side restarts without closing the connection Additionally as stated before it causes more overhead on the network. TCP should be used in case of the syslog event is larger than the maximum size of the UDP packet on your network typically limited to Web Proxy, DLP and IDs type sources. To decrease drawbacks of TCP you can use TLS over TCP: * The TLS can continue a session over a broken TCP reducing buffer loss conditions * The TLS will fill packets for more efficient use of wire * The TLS will compress in most cases","title":"Architectural Considerations"},{"location":"architecture/#sc4s-architectural-considerations","text":"There are some key architectural considerations and recommendations that will yield extremely performant and reliable syslog data collection while minimizing the \u201cover-engineering\u201d that is common in many syslog data collection designs. These recommendations are not specific to Splunk Connect for Syslog, but rather stem from the syslog protocol itself \u2013 and its age.","title":"SC4S Architectural Considerations"},{"location":"architecture/#the-syslog-protocol","text":"The syslog protocol was designed in the mid 1980s to offer very high-speed, network-based logging for network and security devices that were (especially at the time) starved for CPU and I/O resources. For this reason, the protocol was designed for speed and efficiency at the expense of resiliency/reliability. UDP was chosen due to its ability to \u201csend and forget\u201d the events over the network without regard (or acknowledgment) of receipt. In later years, TCP was added as a transport, as well as TLS/SSL. In spite of these additions, UDP still retains favor as a syslog transport for most data centers, and for the same reasons as originally designed. Because of these tradeoffs selected by the original designers (and retained to this day), traditional methods used to provide scale and resiliency do not necessarily transfer to the syslog world. We will discuss (and reference) some of the salient points below.","title":"The syslog Protocol"},{"location":"architecture/#collector-location","text":"Due to syslog being a \u201csend and forget\u201d protocol, it does not perform well when routed through substantial (and especially WAN) network infrastructure. This includes front-side load balancers. The most reliable way to collect syslog traffic is to provide for edge (not centralized) collection. Resist the urge to centrally locate any syslog server (sc4s included) and expect the UDP and (stateless) TCP traffic to \u201cmake it\u201d. Data loss will undoubtedly occur.","title":"Collector Location"},{"location":"architecture/#syslog-data-collection-at-scale","text":"In concert with attempts to centralize syslog, many admins will co-locate several syslog-ng servers for horizontal scale, and load balance to them with a front-side load balancer. For many reasons (that go beyond this short discussion) this is not a best practice. Briefly: The attempt to load balance for scale (and HA \u2013 see below) will actually cause more data loss due to normal device operations and attendant buffer loss than would be the case if a simple, robust single server (or shared-IP cluster) were used. Front-side load balancing will also cause inadequate data distribution on the upstream side, leading to data unevenness on the indexers.","title":"syslog Data Collection at Scale"},{"location":"architecture/#ha-considerations-and-challenges","text":"In addition to scale, many opt to load balance for high availability. While a sound approach for stateful, application-level protocols such as http, it does not work well for stateless, unacknowledged syslog traffic. Again, in the attempt to design for HA, more data ends up being lost vs. more simple designs such as vMotioned VMs. With syslog, always remember that the protocol itself is lossy, and there will be data loss (think CD-quality (lossless) vs. MP3). Syslog data collection can be made, at best, \u201cMostly Available\u201d.","title":"HA Considerations and Challenges"},{"location":"architecture/#udp-vs-tcp","text":"For running syslog UDP is recommended over TCP. The syslogd daemon was originally configured to use UDP for log forwarding to reduce overhead. While UDP is an unreliable protocol, it\u2019s streaming method does not require the overhead of establishing a network session. This protocol also reduces network load as the network stream with no required receipt verification or window adjustment. While TCP could seem a better choice because it uses ACKS and there should not be data loss, there are some cases when it\u2019s possible: * The TCP session is closed events published while the system is creating a new session will be lost. (Closed Window Case) * The remote side is busy and can not ack fast enough events are lost due to local buffer full * A single ack is lost by the network and the client closes the connection. (local and remote buffer lost) * The remote server restarts for any reason (local buffer lost) * The remote server restarts without closing the connection (local buffer plus timeout time lost) * The client side restarts without closing the connection Additionally as stated before it causes more overhead on the network. TCP should be used in case of the syslog event is larger than the maximum size of the UDP packet on your network typically limited to Web Proxy, DLP and IDs type sources. To decrease drawbacks of TCP you can use TLS over TCP: * The TLS can continue a session over a broken TCP reducing buffer loss conditions * The TLS will fill packets for more efficient use of wire * The TLS will compress in most cases","title":"UDP vs. TCP"},{"location":"configuration/","text":"SC4S Configuration Variables \u00b6 Other than device filter creation, SC4S is almost entirely controlled by environment variables. Here are the categories and variables needed to properly configure SC4S for your environment. Global Configuration \u00b6 Variable Values Description SC4S_USE_REVERSE_DNS yes or no(default) use reverse DNS to identify hosts when HOST is not valid in the syslog header SC4S_CONTAINER_HOST string variable passed to the container to identify the actual log host for container implementations NOTE: Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. NOTE: Use of the SC4S_USE_REVERSE_DNS variable can have a significant impact on performance if the reverse DNS facility (typically a caching nameserver) is not performant. If you notice events being indexed far later than their actual timestamp in the event (latency between _indextime and _time ), this is the first place to check. Configure use of external http proxy \u00b6 Warning: Many http proxies are not provisioned with application traffic in mind. Ensure adequate capacity is available to avoid data loss and or proxy outages. Note: the follow variables are lower case Variable Values Description http_proxy undefined Use libcurl format proxy string \u201chttp://username:password@proxy.server:port\u201d https_proxy undefined Use libcurl format proxy string \u201chttp://username:password@proxy.server:port\u201d Splunk HEC Destination Configuration \u00b6 Variable Values Description SC4S_DEST_SPLUNK_HEC_CIPHER_SUITE comma separated list Open SSL cipher suite list SC4S_DEST_SPLUNK_HEC_SSL_VERSION comma separated list Open SSL version list SC4S_DEST_SPLUNK_HEC_WORKERS numeric Number of destination workers (default: 10 threads). This should rarely need to be changed; consult sc4s community for advice on appropriate setting in extreme high- or low-volume environments. SC4S_DEST_SPLUNK_INDEXED_FIELDS r_unixtime,facility, severity, container, loghost, destport, fromhostip, proto none List of sc4s indexed fields that will be included with each event in Splunk (default is the entire list except \u201cnone\u201d). Two other indexed fields, sc4s_vendor_product and sc4s_syslog_format , will also appear along with the fields selected via the list and cannot be turned on or off individually. If no indexed fields are desired (including the two internal ones), set the value to the single value of \u201cnone\u201d. When setting this variable, separate multiple entries with commas and do not include extra spaces. This list maps to the following indexed fields that will appear in all Splunk events: facility: sc4s_syslog_facility severity: sc4s_syslog_severity container: sc4s_container loghost: sc4s_loghost dport: sc4s_destport fromhostip: sc4s_fromhostip proto: sc4s_proto NOTE: When using alternate HEC destinations, the destination operating parameters outlined above ( CIPHER_SUITE , SSL_VERSION , etc.) can be individually controlled per DESTID (see \u201cConfiguration of Additional Splunk HEC Destinations\u201d immediately below). For example, to set the number of workers for the alternate HEC destination d_hec_FOO to 24, set SC4S_DEST_SPLUNK_HEC_FOO_WORKERS=24 . NOTE2: Configuration files for destinations must have a .conf extension Configure additional PKI Trust Anchors \u00b6 Additional trusted (private) Certificate authorities may be trusted by appending each PEM formatted certificate to /opt/sc4s/tls/trusted.pem Configuration of timezone for legacy sources \u00b6 Legacy sources (those that remain non compliant with RFC5424) often leave the recipient to guess at the actual time zone offset. SC4S uses an advanced feature of syslog-ng to \u201cguess\u201d the correct time zone for real time sources. However, this feature requires the source (device) clock to be synchronized to within +/- 30s of the SC4S system clock. Industry accepted best practice is to set such legacy systems to GMT (sometimes inaccurately called UTC). However, this is not always possible and in such cases two additional methods are available. For a list of time zones see . Only the \u201cTZ Database name\u201d OR \u201coffset\u201d format may be used. Change Global default time zone \u00b6 This setting is used when the container cost is not set for UTC (best practice). Using this setting is often confusing and should be avoided. Set the SC4S_DEFAULT_TIMEZONE variable to a recognized \u201czone info\u201d (Region/City) time zone format such as America/New_York . Setting this value will force SC4S to use the specified timezone (and honor its associated Daylight Savings/Summer Time rules) for all events without a timezone offset in the header or message payload. SC4S Disk Buffer Configuration \u00b6 Disk buffers in SC4S are allocated per destination . Keep this in mind when using additional destinations that have disk buffering configured. By default, when alternate HEC destinations are configured as outlined above disk buffering will be configured identically to that of the main HEC destination (unless overridden individually). Important Notes Regarding Disk Buffering: \u00b6 \u201cReliable\u201d disk buffering offers little advantage over \u201cnormal\u201d disk buffering, at a significant performance penalty. For this reason, normal disk buffering is recommended. If you add destinations locally in your configuration, pay attention to the cumulative buffer requirements when allocating local disk. Disk buffer storage is configured via container volumes and is persistent between restarts of the container. Be sure to account for disk space requirements on the local sc4s host when creating the container volumes in your respective runtime environment (outlined in the \u201cgetting started\u201d runtime docs). These volumes can grow significantly if there is an extended outage to the SC4S destinations (HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. The values for the variables below represent the total sizes of the buffers for the destination. These sizes are divided by the number of workers (threads) when setting the actual syslog-ng buffer options, because the buffer options apply to each worker rather than the entire destination. Pay careful attention to this when using the \u201cBYOE\u201d version of SC4S, where direct access to the syslog-ng config files may hide this nuance. Lastly, be sure to factor in the syslog-ng data structure overhead (approx. 2x raw message size) when calculating the total buffer size needed. To determine the proper size of the disk buffer, consult the \u201cData Resilience\u201d section below. When changing the disk buffering directory, the new directory must exist. If it doesn\u2019t, then syslog-ng will fail to start. When changing the disk buffering directory, if buffering has previously occurred on that instance, a persist file may exist which will prevent syslog-ng from changing the directory. Disk Buffer Variables \u00b6 Variable Values/Default Description SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_ENABLE yes(default) or no Enable local disk buffering SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_RELIABLE yes or no(default) Enable reliable/normal disk buffering (normal recommended) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_MEMBUFSIZE bytes (10241024) Memory buffer size in bytes (used with reliable disk buffering) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_MEMBUFLENGTH messages (15000) Memory buffer size in message count (used with normal disk buffering) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_DISKBUFSIZE bytes (53687091200) Size of local disk buffer in bytes (default 50 GB) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_DIR path Location to store the disk buffer files. This variable should only be set when using BYOE; this location is fixed when using the Container. Archive File Configuration \u00b6 This feature is designed to support compliance or \u201cdiode mode\u201d archival of all messages. Instructions for mounting the appropriate local directory to use this feature are included in each \u201cgetting started\u201d runtime document. The files will be stored in a folder structure at the mount point using the pattern shown in the table below depending on the value of the SC4S_GLOBAL_ARCHIVE_MODE variable. All events for both modes are formatted using syslog-ng\u2019s EWMM template. Variable Value/Default Location/Pattern SC4S_GLOBAL_ARCHIVE_MODE compliance(default) /${.splunk.sourcetype}/${HOST}/$YEAR-$MONTH-$DAY-archive.log SC4S_GLOBAL_ARCHIVE_MODE diode /${YEAR}/${MONTH}/${DAY}/${fields.sc4s_vendor_product}_${YEAR}${MONTH}${DAY}${HOUR}${MIN}.log\" WARNING POTENTIAL OUTAGE CAUSING CONSEQUENCE Use the following variables to select global archiving or per-source archiving. C4S does not prune the files that are created; therefore the administrator must provide a means of log rotation to prune files and/or move them to an archival system to avoid exhaustion of disk space. Variable Values Description SC4S_ARCHIVE_GLOBAL yes or undefined Enable archive of all vendor_products SC4S_ARCHIVE_ yes(default) or undefined See sources section of documentation enables selective archival Syslog Source Configuration \u00b6 Variable Values/Default Description SC4S_SOURCE_TLS_ENABLE yes or no(default) Enable TLS globally. Be sure to configure the cert as shown immediately below. SC4S_LISTEN_DEFAULT_TLS_PORT undefined or 6514 Enable a TLS listener on port 6514 SC4S_LISTEN_DEFAULT_RFC6425_PORT undefined or 5425 Enable a TLS listener on port 5425 SC4S_SOURCE_TLS_OPTIONS no-sslv2 Comma-separated list of the following options: no-sslv2, no-sslv3, no-tlsv1, no-tlsv11, no-tlsv12, none . See syslog-ng docs for the latest list and defaults SC4S_SOURCE_TLS_CIPHER_SUITE See openssl Colon-delimited list of ciphers to support, e.g. ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384 . See openssl docs for the latest list and defaults SC4S_SOURCE_TCP_MAX_CONNECTIONS 2000 Max number of TCP Connections SC4S_SOURCE_UDP_IW_USE yes or no(default) If we want to change the Initial Window Size for UDP SC4S_SOURCE_UDP_FETCH_LIMIT 1000 Number of events to fetch from server buffer at once SC4S_SOURCE_UDP_IW_SIZE 250000 Initial Window size SC4S_SOURCE_TCP_IW_SIZE 20000000 Initial Window size SC4S_SOURCE_TCP_FETCH_LIMIT 2000 Number of events to fetch from server buffer at once SC4S_SOURCE_UDP_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_TCP_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_TLS_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_RFC5426_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_RFC6587_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_RFC5425_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_LISTEN_UDP_SOCKETS 4 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_LISTEN_RFC5426_SOCKETS 1 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_LISTEN_RFC6587_SOCKETS 1 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_LISTEN_RFC5425_SOCKETS 1 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_STORE_RAWMSG undefined or \u201cno\u201d Store unprocessed \u201con the wire\u201d raw message in the RAWMSG macro for use with the \u201cfallback\u201d sourcetype. Do not set this in production; substantial memory and disk overhead will result. Use for log path/filter development only. SC4S_IPV6_ENABLE yes or no(default) enable (dual-stack)IPv6 listeners and health checks Syslog Source TLS Certificate Configuration \u00b6 Create a folder /opt/sc4s/tls if not already done as part of the \u201cgetting started\u201d process. Uncomment the appropriate mount line in the unit or yaml file (again, documented in the \u201cgetting started\u201d runtime documents). Save the server private key in PEM format with NO PASSWORD to /opt/sc4s/tls/server.key Save the server certificate in PEM format to /opt/sc4s/tls/server.pem Ensure the entry SC4S_SOURCE_TLS_ENABLE=yes exists in /opt/sc4s/env_file SC4S metadata configuration \u00b6 Log Path overrides of index or metadata \u00b6 A key aspect of SC4S is to properly set Splunk metadata prior to the data arriving in Splunk (and before any TA processing takes place). The filters will apply the proper index, source, sourcetype, host, and timestamp metadata automatically by individual data source. Proper values for this metadata, including a recommended index and output format (template), are included with all \u201cout-of-the-box\u201d log paths included with SC4S and are chosen to properly interface with the corresponding TA in Splunk. The administrator will need to ensure all recommended indexes be created to accept this data if the defaults are not changed. It will be common to override default values in many installations. To accommodate this, each log path consults an internal lookup file that maps Splunk metadata to the specific data source being processed. This file contains the defaults that are used by SC4S to set the appropriate Splunk metadata ( index , host , source , and sourcetype ) for each data source. This file is not directly available to the administrator, but a copy of the file is deposited in the local mounted directory (by default /opt/sc4s/local/context/splunk_metadata.csv.example ) for reference. It is important to note that this copy is not used directly, but is provided solely for reference. To add to the list, or to override default entries, simply create an override file without the example extension (e.g. /opt/sc4s/local/context/splunk_metadata.csv ) and modify it according to the instructions below. splunk_metadata.csv is a CSV file containing a \u201ckey\u201d that is referenced in the log path for each data source. These keys are documented in the individual source files in this section, and allow one to override Splunk metadata either in whole or part. The use of this file is best shown by example. Here is the Netscreen \u201cSourcetype and Index Configuration\u201d table from the Juniper source documentation : key sourcetype index notes juniper_netscreen netscreen:firewall netfw none Here is a line from a typical splunk_metadata.csv override file: juniper_netscreen,index,ns_index The columns in this file are key , metadata , and value . To make a change via the override file, consult the example file (or the source documentation) for the proper key when overriding an existing source and modify and/or add rows in the table, specifying one or more of the following metadata/value pairs for a given key : key which refers to the vendor and product name of the data source, using the vendor_product convention. For overrides, these keys will be listed in the example file. For new (custom) sources, be sure to choose a key that accurately reflects the vendor and product being configured, and that matches what is specified in the log path. index to specify an alternate value for index source to specify an alternate value for source host to specify an alternate value for host sourcetype to specify an alternate value for sourcetype (be very careful when changing this; only do so if an upstream TA is not being used, or a custom TA (built by you) is being used.) sc4s_template to specify an alternate value for the syslog-ng template that will be used to format the event that will be indexed by Splunk. Changing this carries the same warning as the sourcetype above; this will affect the upstream TA. The template choices are documented elsewhere in this Configuration section. In our example above, the juniper_netscreen key references a new index used for that data source called ns_index . In general, for most deployments the index should be the only change needed; other default metadata should almost never be overridden (particularly for the \u201cOut of the Box\u201d data sources). Even then, care should be taken when considering any alternates, as the defaults for SC4S were chosen with best practices in mind. NOTE: The splunk_metadata.csv file is a true override file and the entire example file should not be copied over to the override. In most cases, the override file is just one or two lines, unless an entire index category (e.g. netfw ) needs to be overridden. This is similar in concept to the \u201cdefault\u201d and \u201clocal\u201d conf file precedence in Splunk Enterprise. NOTE The splunk_metadata.csv file should always be appended with an appropriate new key and default for the index when building a custom SC4S log path, as the new key will not exist in the internal lookup (nor the example file). Care should be taken during log path design to choose appropriate index, sourcetype and template defaults so that admins are not compelled to override them. If the custom log path is later added to the list of SC4S-supported sources, this addendum can be removed. NOTE: As noted above, the splunk_metadata.csv.example file is provided for reference only and is not used directly by SC4S. However, it is an exact copy of the internal file, and can therefore change from release to release. Be sure to check the example file first to make sure the keys for any overrides map correctly to the ones in the example file. Override index or metadata based on host, ip, or subnet (compliance overrides) \u00b6 In other cases it is appropriate to provide the same overrides but based on PCI scope, geography, or other criterion rather than globally. This is accomplished by the use of a file that uniquely identifies these source exceptions via syslog-ng filters, which maps to an associated lookup of alternate indexes, sources, or other metadata. In addition, (indexed) fields can also be added to further classify the data. The conf and csv files referenced below will be populated into the /opt/sc4s/local/context directory when SC4S is run for the first time after being set up according to the \u201cgetting started\u201d runtime documents, in a similar fashion to splunk_metadata.csv . After this first-time population of the files takes place, they can be edited (and SC4S restarted) for the changes to take effect. To get started: Edit the file compliance_meta_by_source.conf to supply uniquely named filters to identify events subject to override. Edit the file compliance_meta_by_source.csv to supply appropriate field(s) and values. The three columns in the csv file are filter name , field name , and value . Filter names in the conf file must match one or more corresponding filter name rows in the csv file. The field name column obeys the following convention: .splunk.index to specify an alternate value for index .splunk.source to specify an alternate value for source .splunk.sourcetype to specify an alternate value for sourcetype (be very careful when changing this; only do so if a downstream TA is not being used, or a custom TA (built by you) is being used.) fields.fieldname where fieldname will become the name of an indexed field sent to Splunk with the supplied value This file construct is best shown by an example. Here is a sample compliance_meta_by_source.conf file: filter f_test_test { host(\"something-*\" type(glob)) or netmask(192.168.100.1/24) }; and the corresponding compliance_meta_by_source.csv file: f_test_test,.splunk.index,\"pciindex\" f_test_test,fields.compliance,\"pci\" First off, ensure that the filter name(s) in the conf file match one or more rows in the csv file. In this case, any incoming message with a hostname starting with something- or arriving from a netmask of 192.168.100.1/24 will match the f_test_test filter, and the corresponding entries in the csv file will be checked for overrides. In this case, the new index is pciindex , and an indexed field named compliance will be sent to Splunk, with it\u2019s value set to pci . To add additional overrides, simply add another filter foo_bar {}; stanza to the conf file, and add appropriate entries to the csv file that match the filter name(s) to the overrides you desire. IMPORTANT: The files above are actual syslog-ng config file snippets that get parsed directly by the underlying syslog-ng process. Take care that your syntax is correct; for more information on proper syslog-ng syntax, see the syslog-ng documentation . A syntax error will cause the runtime process to abort in the \u201cpreflight\u201d phase at startup. Finally, to update your changes for the systemd-based runtimes, restart SC4S using the commands: sudo systemctl daemon - reload sudo systemctl restart sc4s For the Docker Swarm runtime, redeploy the updated service using the command: docker stack deploy --compose-file docker-compose.yml sc4s Dropping all data by ip or subnet (deprecated) \u00b6 The usage of vendor_product_by_source to null queue is now deprecated. Please refer to the recommended method for dropping data in Filtering events from output . In some cases rogue or port-probing data can be sent to SC4S from misconfigured devices or vulnerability scanners. Update the vendor_product_by_source.conf filter f_null_queue with one or more ip/subnet masks to drop events without logging. Note that drop metrics will be recorded. Fixing (overriding) the host field \u00b6 In some cases the host value is not present in an event (or an IP address is in its place). For administrators who require a true hostname be attached to each event, SC4S provides an optional facility to perform a reverse IP to name lookup. If the variable SC4S_USE_REVERSE_DNS is set to \u201cyes\u201d, SC4S will first check host.csv and replace the value of host with the value specified that matches the incoming IP address. If a value is not found in host.csv then a reverse DNS lookup will be attempted against the configured nameserver. The IP address will only be used as the host value as a last resort. NOTE: Use of this variable can have a significant impact on performance if the reverse DNS facility (typically a caching nameserver) is not performant. If you notice events being indexed far later than their actual timestamp in the event (latency between _indextime and _time ), this is the first place to check. Splunk Connect for Syslog output templates (syslog-ng templates) \u00b6 Splunk Connect for Syslog utilizes the syslog-ng template mechanism to format the output payload (event) that will be sent to Splunk. These templates can format the messages in a number of ways (straight text, JSON, etc.) as well as utilize the many syslog-ng \u201cmacros\u201d (fields) to specify what gets placed in the payload that is delivered to the destination. Here is a list of the templates used in SC4S, which can be used in the metadata override section immediately above. New templates can also be added by the administrator in the \u201clocal\u201d section for local destinations; pay careful attention to the syntax as the templates are \u201clive\u201d syslog-ng config code. Template name Template contents Notes t_standard ${DATE} ${HOST} ${MSGHDR}${MESSAGE} Standard template for most RFC3164 (standard syslog) traffic t_msg_only ${MSGONLY} syslog-ng $MSG is sent, no headers (host, timestamp, etc.) t_msg_trim $(strip $MSGONLY) As above with whitespace stripped t_everything ${ISODATE} ${HOST} ${MSGHDR}${MESSAGE} Standard template with ISO date format t_hdr_msg ${MSGHDR}${MESSAGE} Useful for non-compliant syslog messages t_legacy_hdr_msg ${LEGACY_MSGHDR}${MESSAGE} Useful for non-compliant syslog messages t_hdr_sdata_msg ${MSGHDR}${MSGID} ${SDATA} ${MESSAGE} Useful for non-compliant syslog messages t_program_msg ${PROGRAM}[${PID}]: ${MESSAGE} Useful for non-compliant syslog messages t_program_nopid_msg ${PROGRAM}: ${MESSAGE} Useful for non-compliant syslog messages t_JSON_3164 $(format-json \u2013scope rfc3164 \u2013pair PRI=\u201d<$PRI>\u201d \u2013key LEGACY_MSGHDR \u2013exclude FACILITY \u2013exclude PRIORITY) JSON output of all RFC3164-based syslog-ng macros. Useful with the \u201cfallback\u201d sourcetype to aid in new filter development. t_JSON_5424 $(format-json \u2013scope rfc5424 \u2013pair PRI=\u201d<$PRI>\u201d \u2013key ISODATE \u2013exclude DATE \u2013exclude FACILITY \u2013exclude PRIORITY) JSON output of all RFC5424-based syslog-ng macros; for use with RFC5424-compliant traffic. t_JSON_5424_SDATA $(format-json \u2013scope rfc5424 \u2013pair PRI=\u201d<$PRI>\u201d \u2013key ISODATE \u2013exclude DATE \u2013exclude FACILITY \u2013exclude PRIORITY) \u2013exclude MESSAGE JSON output of all RFC5424-based syslog-ng macros except for MESSAGE; for use with RFC5424-compliant traffic. Data Resilience - Local Disk Buffer Configuration \u00b6 SC4S provides capability to minimize the number of lost events if the connection to all the Splunk Indexers goes down. This capability utilizes the disk buffering feature of Syslog-ng. SC4S receives a response from the Splunk HTTP Event Collector (HEC) when a message is received successfully. If a confirmation message from the HEC endpoint is not received (or a \u201cserver busy\u201d reply, such as a \u201c503\u201d is sent), the load balancer will try the next HEC endpoint in the pool. If all pool members are exhausted (such as would occur if there were a full network outage to the HEC endpoints), events will queue to the local disk buffer on the SC4S Linux host. SC4S will continue attempting to send the failed events while it buffers all new incoming events to disk. If the disk space allocated to disk buffering fills up then SC4S will stop accepting new events and subsequent events will be lost. Once SC4S gets confirmation that events are again being received by one or more indexers, events will then stream from the buffer using FIFO queueing. The number of events in the disk buffer will reduce as long as the incoming event volume is less than the maximum SC4S (with the disk buffer in the path) can handle. When all events have been emptied from the disk buffer, SC4S will resume streaming events directly to Splunk. For more detail on the Syslog-ng behavior the documentation can be found here: https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.22/administration-guide/55#TOPIC-1209280 SC4S has disk buffering enabled by default and it is strongly recommended that you keep it on, however this feature does have a performance cost. Without disk buffering enabled SC4S can handle up to 345K EPS (800 bytes/event avg) With \u201cNormal\u201d disk buffering enabled SC4S can handle up to 60K EPS (800 bytes/event avg) \u2013 This is still a lot of data! To guard against data loss it is important to configure the appropriate type and amount of storage for SC4S disk buffering. To estimate the storage allocation, follow these steps: Start with your estimated maximum events per second that each SC4S server will experience. Based on the maximum throughput of SC4S with disk buffering enabled, the conservative estimate for maximum events per second would be 60K (however, you should use the maximum rate in your environment for this calculation, not the max rate SC4S can handle). Next is your average estimated event size based on your data sources. It is common industry practice to estimate log events as 800 bytes on average. Then, factor in the maximum length of connectivity downtime you want disk buffering to be able to handle. This measure is very much dependent on your risk tolerance. Lastly, syslog-ng imposes significant overhead to maintain its internal data structures (primarily macros) so that the data can be properly \u201cplayed back\u201d upon network restoration. This overhead currently runs at about 1.7x above the total storage size for the raw messages themselves, and can be higher for \u201cfallback\u201d data sources due to the overlap of syslog-ng macros (data fields) containing some or all of the original message. For example, to protect against a full day of lost connectivity from SC4S to all your indexers at maximum throughput the calculation would look like the following: 60,000 EPS * 86400 seconds * 800 bytes * 1.7 = 6.4 TB of storage To configure storage allocation for the SC4S disk buffering, do the following: Edit the file /opt/sc4s/default/env_file Add the SC4S_DEST_SPLUNK_HEC_DISKBUFF_DISKBUFSIZE variable to the file and set the value to the number of bytes based on your estimation (e.g. 7050240000000 in the example above) Splunk does not recommend reducing the disk allocation below 500 GB Restart SC4S Given that in a connectivity outage to the Indexers events will be saved and read from disk until the buffer is emptied, it is ideal to use the fastest type of storage available. For this reason, NVMe storage is recommended for SC4S disk buffering. It is best to design your deployment so that the disk buffer will drain after connectivity is restored to the Splunk Indexers (while incoming data continues at the same general rate). Since \u201cyour mileage may vary\u201d with different combinations of data load, instance type, and disk subsystem performance, it is good practice to provision a box that performs twice as well as is required for your max EPS. This headroom will allow for rapid recovery after a connectivity outage. eBPF \u00b6 eBPF is a feature that helps with congestion of single heavy stream of data by utilizing multithreading. Used with SC4S_SOURCE_LISTEN_UDP_SOCKETS. To leverage this feature you need host os to be able to use eBPF. Additional pre-requisite is running docker/podman in privileged mode. Variable Values Description SC4S_ENABLE_EBPF=yes yes or no(default) use ebpf to leverage multithreading when consuming from a single connection SC4S_EBPF_NO_SOCKETS=4 integer sets number of threads to use, for optimal preformance it should not be less than value set for SC4S_SOURCE_LISTEN_UDP_SOCKETS To run docker/podman in privileged mode edit service file (/lib/systemd/system/sc4s.service). Add --privileged flag to docker/podman run command: ExecStart = /usr/bin/podman run \\ -e \"SC4S_CONTAINER_HOST= ${ SC4SHOST } \" \\ -v \" $SC4S_PERSIST_MOUNT \" \\ -v \" $SC4S_LOCAL_MOUNT \" \\ -v \" $SC4S_ARCHIVE_MOUNT \" \\ -v \" $SC4S_TLS_MOUNT \" \\ --privileged \\ --env-file = /opt/sc4s/env_file \\ --health-cmd = \"/healthcheck.sh\" \\ --health-interval = 10s --health-retries = 6 --health-timeout = 6s \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE Misc options \u00b6 SC4S_LISTEN_STATUS_PORT Change the \u201cstatus\u201d port used by the internal health check process default value is 8080","title":"Configuration"},{"location":"configuration/#sc4s-configuration-variables","text":"Other than device filter creation, SC4S is almost entirely controlled by environment variables. Here are the categories and variables needed to properly configure SC4S for your environment.","title":"SC4S Configuration Variables"},{"location":"configuration/#global-configuration","text":"Variable Values Description SC4S_USE_REVERSE_DNS yes or no(default) use reverse DNS to identify hosts when HOST is not valid in the syslog header SC4S_CONTAINER_HOST string variable passed to the container to identify the actual log host for container implementations NOTE: Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. NOTE: Use of the SC4S_USE_REVERSE_DNS variable can have a significant impact on performance if the reverse DNS facility (typically a caching nameserver) is not performant. If you notice events being indexed far later than their actual timestamp in the event (latency between _indextime and _time ), this is the first place to check.","title":"Global Configuration"},{"location":"configuration/#configure-use-of-external-http-proxy","text":"Warning: Many http proxies are not provisioned with application traffic in mind. Ensure adequate capacity is available to avoid data loss and or proxy outages. Note: the follow variables are lower case Variable Values Description http_proxy undefined Use libcurl format proxy string \u201chttp://username:password@proxy.server:port\u201d https_proxy undefined Use libcurl format proxy string \u201chttp://username:password@proxy.server:port\u201d","title":"Configure use of external http proxy"},{"location":"configuration/#splunk-hec-destination-configuration","text":"Variable Values Description SC4S_DEST_SPLUNK_HEC_CIPHER_SUITE comma separated list Open SSL cipher suite list SC4S_DEST_SPLUNK_HEC_SSL_VERSION comma separated list Open SSL version list SC4S_DEST_SPLUNK_HEC_WORKERS numeric Number of destination workers (default: 10 threads). This should rarely need to be changed; consult sc4s community for advice on appropriate setting in extreme high- or low-volume environments. SC4S_DEST_SPLUNK_INDEXED_FIELDS r_unixtime,facility, severity, container, loghost, destport, fromhostip, proto none List of sc4s indexed fields that will be included with each event in Splunk (default is the entire list except \u201cnone\u201d). Two other indexed fields, sc4s_vendor_product and sc4s_syslog_format , will also appear along with the fields selected via the list and cannot be turned on or off individually. If no indexed fields are desired (including the two internal ones), set the value to the single value of \u201cnone\u201d. When setting this variable, separate multiple entries with commas and do not include extra spaces. This list maps to the following indexed fields that will appear in all Splunk events: facility: sc4s_syslog_facility severity: sc4s_syslog_severity container: sc4s_container loghost: sc4s_loghost dport: sc4s_destport fromhostip: sc4s_fromhostip proto: sc4s_proto NOTE: When using alternate HEC destinations, the destination operating parameters outlined above ( CIPHER_SUITE , SSL_VERSION , etc.) can be individually controlled per DESTID (see \u201cConfiguration of Additional Splunk HEC Destinations\u201d immediately below). For example, to set the number of workers for the alternate HEC destination d_hec_FOO to 24, set SC4S_DEST_SPLUNK_HEC_FOO_WORKERS=24 . NOTE2: Configuration files for destinations must have a .conf extension","title":"Splunk HEC Destination Configuration"},{"location":"configuration/#configure-additional-pki-trust-anchors","text":"Additional trusted (private) Certificate authorities may be trusted by appending each PEM formatted certificate to /opt/sc4s/tls/trusted.pem","title":"Configure additional PKI Trust Anchors"},{"location":"configuration/#configuration-of-timezone-for-legacy-sources","text":"Legacy sources (those that remain non compliant with RFC5424) often leave the recipient to guess at the actual time zone offset. SC4S uses an advanced feature of syslog-ng to \u201cguess\u201d the correct time zone for real time sources. However, this feature requires the source (device) clock to be synchronized to within +/- 30s of the SC4S system clock. Industry accepted best practice is to set such legacy systems to GMT (sometimes inaccurately called UTC). However, this is not always possible and in such cases two additional methods are available. For a list of time zones see . Only the \u201cTZ Database name\u201d OR \u201coffset\u201d format may be used.","title":"Configuration of timezone for legacy sources"},{"location":"configuration/#change-global-default-time-zone","text":"This setting is used when the container cost is not set for UTC (best practice). Using this setting is often confusing and should be avoided. Set the SC4S_DEFAULT_TIMEZONE variable to a recognized \u201czone info\u201d (Region/City) time zone format such as America/New_York . Setting this value will force SC4S to use the specified timezone (and honor its associated Daylight Savings/Summer Time rules) for all events without a timezone offset in the header or message payload.","title":"Change Global default time zone"},{"location":"configuration/#sc4s-disk-buffer-configuration","text":"Disk buffers in SC4S are allocated per destination . Keep this in mind when using additional destinations that have disk buffering configured. By default, when alternate HEC destinations are configured as outlined above disk buffering will be configured identically to that of the main HEC destination (unless overridden individually).","title":"SC4S Disk Buffer Configuration"},{"location":"configuration/#important-notes-regarding-disk-buffering","text":"\u201cReliable\u201d disk buffering offers little advantage over \u201cnormal\u201d disk buffering, at a significant performance penalty. For this reason, normal disk buffering is recommended. If you add destinations locally in your configuration, pay attention to the cumulative buffer requirements when allocating local disk. Disk buffer storage is configured via container volumes and is persistent between restarts of the container. Be sure to account for disk space requirements on the local sc4s host when creating the container volumes in your respective runtime environment (outlined in the \u201cgetting started\u201d runtime docs). These volumes can grow significantly if there is an extended outage to the SC4S destinations (HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. The values for the variables below represent the total sizes of the buffers for the destination. These sizes are divided by the number of workers (threads) when setting the actual syslog-ng buffer options, because the buffer options apply to each worker rather than the entire destination. Pay careful attention to this when using the \u201cBYOE\u201d version of SC4S, where direct access to the syslog-ng config files may hide this nuance. Lastly, be sure to factor in the syslog-ng data structure overhead (approx. 2x raw message size) when calculating the total buffer size needed. To determine the proper size of the disk buffer, consult the \u201cData Resilience\u201d section below. When changing the disk buffering directory, the new directory must exist. If it doesn\u2019t, then syslog-ng will fail to start. When changing the disk buffering directory, if buffering has previously occurred on that instance, a persist file may exist which will prevent syslog-ng from changing the directory.","title":"Important Notes Regarding Disk Buffering:"},{"location":"configuration/#disk-buffer-variables","text":"Variable Values/Default Description SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_ENABLE yes(default) or no Enable local disk buffering SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_RELIABLE yes or no(default) Enable reliable/normal disk buffering (normal recommended) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_MEMBUFSIZE bytes (10241024) Memory buffer size in bytes (used with reliable disk buffering) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_MEMBUFLENGTH messages (15000) Memory buffer size in message count (used with normal disk buffering) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_DISKBUFSIZE bytes (53687091200) Size of local disk buffer in bytes (default 50 GB) SC4S_DEST_SPLUNK_HEC_DEFAULT_DISKBUFF_DIR path Location to store the disk buffer files. This variable should only be set when using BYOE; this location is fixed when using the Container.","title":"Disk Buffer Variables"},{"location":"configuration/#archive-file-configuration","text":"This feature is designed to support compliance or \u201cdiode mode\u201d archival of all messages. Instructions for mounting the appropriate local directory to use this feature are included in each \u201cgetting started\u201d runtime document. The files will be stored in a folder structure at the mount point using the pattern shown in the table below depending on the value of the SC4S_GLOBAL_ARCHIVE_MODE variable. All events for both modes are formatted using syslog-ng\u2019s EWMM template. Variable Value/Default Location/Pattern SC4S_GLOBAL_ARCHIVE_MODE compliance(default) /${.splunk.sourcetype}/${HOST}/$YEAR-$MONTH-$DAY-archive.log SC4S_GLOBAL_ARCHIVE_MODE diode /${YEAR}/${MONTH}/${DAY}/${fields.sc4s_vendor_product}_${YEAR}${MONTH}${DAY}${HOUR}${MIN}.log\" WARNING POTENTIAL OUTAGE CAUSING CONSEQUENCE Use the following variables to select global archiving or per-source archiving. C4S does not prune the files that are created; therefore the administrator must provide a means of log rotation to prune files and/or move them to an archival system to avoid exhaustion of disk space. Variable Values Description SC4S_ARCHIVE_GLOBAL yes or undefined Enable archive of all vendor_products SC4S_ARCHIVE_ yes(default) or undefined See sources section of documentation enables selective archival","title":"Archive File Configuration"},{"location":"configuration/#syslog-source-configuration","text":"Variable Values/Default Description SC4S_SOURCE_TLS_ENABLE yes or no(default) Enable TLS globally. Be sure to configure the cert as shown immediately below. SC4S_LISTEN_DEFAULT_TLS_PORT undefined or 6514 Enable a TLS listener on port 6514 SC4S_LISTEN_DEFAULT_RFC6425_PORT undefined or 5425 Enable a TLS listener on port 5425 SC4S_SOURCE_TLS_OPTIONS no-sslv2 Comma-separated list of the following options: no-sslv2, no-sslv3, no-tlsv1, no-tlsv11, no-tlsv12, none . See syslog-ng docs for the latest list and defaults SC4S_SOURCE_TLS_CIPHER_SUITE See openssl Colon-delimited list of ciphers to support, e.g. ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384 . See openssl docs for the latest list and defaults SC4S_SOURCE_TCP_MAX_CONNECTIONS 2000 Max number of TCP Connections SC4S_SOURCE_UDP_IW_USE yes or no(default) If we want to change the Initial Window Size for UDP SC4S_SOURCE_UDP_FETCH_LIMIT 1000 Number of events to fetch from server buffer at once SC4S_SOURCE_UDP_IW_SIZE 250000 Initial Window size SC4S_SOURCE_TCP_IW_SIZE 20000000 Initial Window size SC4S_SOURCE_TCP_FETCH_LIMIT 2000 Number of events to fetch from server buffer at once SC4S_SOURCE_UDP_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_TCP_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_TLS_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_RFC5426_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_RFC6587_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_RFC5425_SO_RCVBUFF 17039360 UDP server buffer size in bytes. Make sure that the host OS kernel is configured similarly . SC4S_SOURCE_LISTEN_UDP_SOCKETS 4 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_LISTEN_RFC5426_SOCKETS 1 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_LISTEN_RFC6587_SOCKETS 1 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_LISTEN_RFC5425_SOCKETS 1 Number of kernel sockets per active UDP port, which configures multi-threading of the UDP input buffer in the kernel to prevent packet loss. Total UDP input buffer is the multiple of SOCKETS * SO_RCVBUFF SC4S_SOURCE_STORE_RAWMSG undefined or \u201cno\u201d Store unprocessed \u201con the wire\u201d raw message in the RAWMSG macro for use with the \u201cfallback\u201d sourcetype. Do not set this in production; substantial memory and disk overhead will result. Use for log path/filter development only. SC4S_IPV6_ENABLE yes or no(default) enable (dual-stack)IPv6 listeners and health checks","title":"Syslog Source Configuration"},{"location":"configuration/#syslog-source-tls-certificate-configuration","text":"Create a folder /opt/sc4s/tls if not already done as part of the \u201cgetting started\u201d process. Uncomment the appropriate mount line in the unit or yaml file (again, documented in the \u201cgetting started\u201d runtime documents). Save the server private key in PEM format with NO PASSWORD to /opt/sc4s/tls/server.key Save the server certificate in PEM format to /opt/sc4s/tls/server.pem Ensure the entry SC4S_SOURCE_TLS_ENABLE=yes exists in /opt/sc4s/env_file","title":"Syslog Source TLS Certificate Configuration"},{"location":"configuration/#sc4s-metadata-configuration","text":"","title":"SC4S metadata configuration"},{"location":"configuration/#log-path-overrides-of-index-or-metadata","text":"A key aspect of SC4S is to properly set Splunk metadata prior to the data arriving in Splunk (and before any TA processing takes place). The filters will apply the proper index, source, sourcetype, host, and timestamp metadata automatically by individual data source. Proper values for this metadata, including a recommended index and output format (template), are included with all \u201cout-of-the-box\u201d log paths included with SC4S and are chosen to properly interface with the corresponding TA in Splunk. The administrator will need to ensure all recommended indexes be created to accept this data if the defaults are not changed. It will be common to override default values in many installations. To accommodate this, each log path consults an internal lookup file that maps Splunk metadata to the specific data source being processed. This file contains the defaults that are used by SC4S to set the appropriate Splunk metadata ( index , host , source , and sourcetype ) for each data source. This file is not directly available to the administrator, but a copy of the file is deposited in the local mounted directory (by default /opt/sc4s/local/context/splunk_metadata.csv.example ) for reference. It is important to note that this copy is not used directly, but is provided solely for reference. To add to the list, or to override default entries, simply create an override file without the example extension (e.g. /opt/sc4s/local/context/splunk_metadata.csv ) and modify it according to the instructions below. splunk_metadata.csv is a CSV file containing a \u201ckey\u201d that is referenced in the log path for each data source. These keys are documented in the individual source files in this section, and allow one to override Splunk metadata either in whole or part. The use of this file is best shown by example. Here is the Netscreen \u201cSourcetype and Index Configuration\u201d table from the Juniper source documentation : key sourcetype index notes juniper_netscreen netscreen:firewall netfw none Here is a line from a typical splunk_metadata.csv override file: juniper_netscreen,index,ns_index The columns in this file are key , metadata , and value . To make a change via the override file, consult the example file (or the source documentation) for the proper key when overriding an existing source and modify and/or add rows in the table, specifying one or more of the following metadata/value pairs for a given key : key which refers to the vendor and product name of the data source, using the vendor_product convention. For overrides, these keys will be listed in the example file. For new (custom) sources, be sure to choose a key that accurately reflects the vendor and product being configured, and that matches what is specified in the log path. index to specify an alternate value for index source to specify an alternate value for source host to specify an alternate value for host sourcetype to specify an alternate value for sourcetype (be very careful when changing this; only do so if an upstream TA is not being used, or a custom TA (built by you) is being used.) sc4s_template to specify an alternate value for the syslog-ng template that will be used to format the event that will be indexed by Splunk. Changing this carries the same warning as the sourcetype above; this will affect the upstream TA. The template choices are documented elsewhere in this Configuration section. In our example above, the juniper_netscreen key references a new index used for that data source called ns_index . In general, for most deployments the index should be the only change needed; other default metadata should almost never be overridden (particularly for the \u201cOut of the Box\u201d data sources). Even then, care should be taken when considering any alternates, as the defaults for SC4S were chosen with best practices in mind. NOTE: The splunk_metadata.csv file is a true override file and the entire example file should not be copied over to the override. In most cases, the override file is just one or two lines, unless an entire index category (e.g. netfw ) needs to be overridden. This is similar in concept to the \u201cdefault\u201d and \u201clocal\u201d conf file precedence in Splunk Enterprise. NOTE The splunk_metadata.csv file should always be appended with an appropriate new key and default for the index when building a custom SC4S log path, as the new key will not exist in the internal lookup (nor the example file). Care should be taken during log path design to choose appropriate index, sourcetype and template defaults so that admins are not compelled to override them. If the custom log path is later added to the list of SC4S-supported sources, this addendum can be removed. NOTE: As noted above, the splunk_metadata.csv.example file is provided for reference only and is not used directly by SC4S. However, it is an exact copy of the internal file, and can therefore change from release to release. Be sure to check the example file first to make sure the keys for any overrides map correctly to the ones in the example file.","title":"Log Path overrides of index or metadata"},{"location":"configuration/#override-index-or-metadata-based-on-host-ip-or-subnet-compliance-overrides","text":"In other cases it is appropriate to provide the same overrides but based on PCI scope, geography, or other criterion rather than globally. This is accomplished by the use of a file that uniquely identifies these source exceptions via syslog-ng filters, which maps to an associated lookup of alternate indexes, sources, or other metadata. In addition, (indexed) fields can also be added to further classify the data. The conf and csv files referenced below will be populated into the /opt/sc4s/local/context directory when SC4S is run for the first time after being set up according to the \u201cgetting started\u201d runtime documents, in a similar fashion to splunk_metadata.csv . After this first-time population of the files takes place, they can be edited (and SC4S restarted) for the changes to take effect. To get started: Edit the file compliance_meta_by_source.conf to supply uniquely named filters to identify events subject to override. Edit the file compliance_meta_by_source.csv to supply appropriate field(s) and values. The three columns in the csv file are filter name , field name , and value . Filter names in the conf file must match one or more corresponding filter name rows in the csv file. The field name column obeys the following convention: .splunk.index to specify an alternate value for index .splunk.source to specify an alternate value for source .splunk.sourcetype to specify an alternate value for sourcetype (be very careful when changing this; only do so if a downstream TA is not being used, or a custom TA (built by you) is being used.) fields.fieldname where fieldname will become the name of an indexed field sent to Splunk with the supplied value This file construct is best shown by an example. Here is a sample compliance_meta_by_source.conf file: filter f_test_test { host(\"something-*\" type(glob)) or netmask(192.168.100.1/24) }; and the corresponding compliance_meta_by_source.csv file: f_test_test,.splunk.index,\"pciindex\" f_test_test,fields.compliance,\"pci\" First off, ensure that the filter name(s) in the conf file match one or more rows in the csv file. In this case, any incoming message with a hostname starting with something- or arriving from a netmask of 192.168.100.1/24 will match the f_test_test filter, and the corresponding entries in the csv file will be checked for overrides. In this case, the new index is pciindex , and an indexed field named compliance will be sent to Splunk, with it\u2019s value set to pci . To add additional overrides, simply add another filter foo_bar {}; stanza to the conf file, and add appropriate entries to the csv file that match the filter name(s) to the overrides you desire. IMPORTANT: The files above are actual syslog-ng config file snippets that get parsed directly by the underlying syslog-ng process. Take care that your syntax is correct; for more information on proper syslog-ng syntax, see the syslog-ng documentation . A syntax error will cause the runtime process to abort in the \u201cpreflight\u201d phase at startup. Finally, to update your changes for the systemd-based runtimes, restart SC4S using the commands: sudo systemctl daemon - reload sudo systemctl restart sc4s For the Docker Swarm runtime, redeploy the updated service using the command: docker stack deploy --compose-file docker-compose.yml sc4s","title":"Override index or metadata based on host, ip, or subnet (compliance overrides)"},{"location":"configuration/#dropping-all-data-by-ip-or-subnet-deprecated","text":"The usage of vendor_product_by_source to null queue is now deprecated. Please refer to the recommended method for dropping data in Filtering events from output . In some cases rogue or port-probing data can be sent to SC4S from misconfigured devices or vulnerability scanners. Update the vendor_product_by_source.conf filter f_null_queue with one or more ip/subnet masks to drop events without logging. Note that drop metrics will be recorded.","title":"Dropping all data by ip or subnet (deprecated)"},{"location":"configuration/#fixing-overriding-the-host-field","text":"In some cases the host value is not present in an event (or an IP address is in its place). For administrators who require a true hostname be attached to each event, SC4S provides an optional facility to perform a reverse IP to name lookup. If the variable SC4S_USE_REVERSE_DNS is set to \u201cyes\u201d, SC4S will first check host.csv and replace the value of host with the value specified that matches the incoming IP address. If a value is not found in host.csv then a reverse DNS lookup will be attempted against the configured nameserver. The IP address will only be used as the host value as a last resort. NOTE: Use of this variable can have a significant impact on performance if the reverse DNS facility (typically a caching nameserver) is not performant. If you notice events being indexed far later than their actual timestamp in the event (latency between _indextime and _time ), this is the first place to check.","title":"Fixing (overriding) the host field"},{"location":"configuration/#splunk-connect-for-syslog-output-templates-syslog-ng-templates","text":"Splunk Connect for Syslog utilizes the syslog-ng template mechanism to format the output payload (event) that will be sent to Splunk. These templates can format the messages in a number of ways (straight text, JSON, etc.) as well as utilize the many syslog-ng \u201cmacros\u201d (fields) to specify what gets placed in the payload that is delivered to the destination. Here is a list of the templates used in SC4S, which can be used in the metadata override section immediately above. New templates can also be added by the administrator in the \u201clocal\u201d section for local destinations; pay careful attention to the syntax as the templates are \u201clive\u201d syslog-ng config code. Template name Template contents Notes t_standard ${DATE} ${HOST} ${MSGHDR}${MESSAGE} Standard template for most RFC3164 (standard syslog) traffic t_msg_only ${MSGONLY} syslog-ng $MSG is sent, no headers (host, timestamp, etc.) t_msg_trim $(strip $MSGONLY) As above with whitespace stripped t_everything ${ISODATE} ${HOST} ${MSGHDR}${MESSAGE} Standard template with ISO date format t_hdr_msg ${MSGHDR}${MESSAGE} Useful for non-compliant syslog messages t_legacy_hdr_msg ${LEGACY_MSGHDR}${MESSAGE} Useful for non-compliant syslog messages t_hdr_sdata_msg ${MSGHDR}${MSGID} ${SDATA} ${MESSAGE} Useful for non-compliant syslog messages t_program_msg ${PROGRAM}[${PID}]: ${MESSAGE} Useful for non-compliant syslog messages t_program_nopid_msg ${PROGRAM}: ${MESSAGE} Useful for non-compliant syslog messages t_JSON_3164 $(format-json \u2013scope rfc3164 \u2013pair PRI=\u201d<$PRI>\u201d \u2013key LEGACY_MSGHDR \u2013exclude FACILITY \u2013exclude PRIORITY) JSON output of all RFC3164-based syslog-ng macros. Useful with the \u201cfallback\u201d sourcetype to aid in new filter development. t_JSON_5424 $(format-json \u2013scope rfc5424 \u2013pair PRI=\u201d<$PRI>\u201d \u2013key ISODATE \u2013exclude DATE \u2013exclude FACILITY \u2013exclude PRIORITY) JSON output of all RFC5424-based syslog-ng macros; for use with RFC5424-compliant traffic. t_JSON_5424_SDATA $(format-json \u2013scope rfc5424 \u2013pair PRI=\u201d<$PRI>\u201d \u2013key ISODATE \u2013exclude DATE \u2013exclude FACILITY \u2013exclude PRIORITY) \u2013exclude MESSAGE JSON output of all RFC5424-based syslog-ng macros except for MESSAGE; for use with RFC5424-compliant traffic.","title":"Splunk Connect for Syslog output templates (syslog-ng templates)"},{"location":"configuration/#data-resilience-local-disk-buffer-configuration","text":"SC4S provides capability to minimize the number of lost events if the connection to all the Splunk Indexers goes down. This capability utilizes the disk buffering feature of Syslog-ng. SC4S receives a response from the Splunk HTTP Event Collector (HEC) when a message is received successfully. If a confirmation message from the HEC endpoint is not received (or a \u201cserver busy\u201d reply, such as a \u201c503\u201d is sent), the load balancer will try the next HEC endpoint in the pool. If all pool members are exhausted (such as would occur if there were a full network outage to the HEC endpoints), events will queue to the local disk buffer on the SC4S Linux host. SC4S will continue attempting to send the failed events while it buffers all new incoming events to disk. If the disk space allocated to disk buffering fills up then SC4S will stop accepting new events and subsequent events will be lost. Once SC4S gets confirmation that events are again being received by one or more indexers, events will then stream from the buffer using FIFO queueing. The number of events in the disk buffer will reduce as long as the incoming event volume is less than the maximum SC4S (with the disk buffer in the path) can handle. When all events have been emptied from the disk buffer, SC4S will resume streaming events directly to Splunk. For more detail on the Syslog-ng behavior the documentation can be found here: https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.22/administration-guide/55#TOPIC-1209280 SC4S has disk buffering enabled by default and it is strongly recommended that you keep it on, however this feature does have a performance cost. Without disk buffering enabled SC4S can handle up to 345K EPS (800 bytes/event avg) With \u201cNormal\u201d disk buffering enabled SC4S can handle up to 60K EPS (800 bytes/event avg) \u2013 This is still a lot of data! To guard against data loss it is important to configure the appropriate type and amount of storage for SC4S disk buffering. To estimate the storage allocation, follow these steps: Start with your estimated maximum events per second that each SC4S server will experience. Based on the maximum throughput of SC4S with disk buffering enabled, the conservative estimate for maximum events per second would be 60K (however, you should use the maximum rate in your environment for this calculation, not the max rate SC4S can handle). Next is your average estimated event size based on your data sources. It is common industry practice to estimate log events as 800 bytes on average. Then, factor in the maximum length of connectivity downtime you want disk buffering to be able to handle. This measure is very much dependent on your risk tolerance. Lastly, syslog-ng imposes significant overhead to maintain its internal data structures (primarily macros) so that the data can be properly \u201cplayed back\u201d upon network restoration. This overhead currently runs at about 1.7x above the total storage size for the raw messages themselves, and can be higher for \u201cfallback\u201d data sources due to the overlap of syslog-ng macros (data fields) containing some or all of the original message. For example, to protect against a full day of lost connectivity from SC4S to all your indexers at maximum throughput the calculation would look like the following: 60,000 EPS * 86400 seconds * 800 bytes * 1.7 = 6.4 TB of storage To configure storage allocation for the SC4S disk buffering, do the following: Edit the file /opt/sc4s/default/env_file Add the SC4S_DEST_SPLUNK_HEC_DISKBUFF_DISKBUFSIZE variable to the file and set the value to the number of bytes based on your estimation (e.g. 7050240000000 in the example above) Splunk does not recommend reducing the disk allocation below 500 GB Restart SC4S Given that in a connectivity outage to the Indexers events will be saved and read from disk until the buffer is emptied, it is ideal to use the fastest type of storage available. For this reason, NVMe storage is recommended for SC4S disk buffering. It is best to design your deployment so that the disk buffer will drain after connectivity is restored to the Splunk Indexers (while incoming data continues at the same general rate). Since \u201cyour mileage may vary\u201d with different combinations of data load, instance type, and disk subsystem performance, it is good practice to provision a box that performs twice as well as is required for your max EPS. This headroom will allow for rapid recovery after a connectivity outage.","title":"Data Resilience - Local Disk Buffer Configuration"},{"location":"configuration/#ebpf","text":"eBPF is a feature that helps with congestion of single heavy stream of data by utilizing multithreading. Used with SC4S_SOURCE_LISTEN_UDP_SOCKETS. To leverage this feature you need host os to be able to use eBPF. Additional pre-requisite is running docker/podman in privileged mode. Variable Values Description SC4S_ENABLE_EBPF=yes yes or no(default) use ebpf to leverage multithreading when consuming from a single connection SC4S_EBPF_NO_SOCKETS=4 integer sets number of threads to use, for optimal preformance it should not be less than value set for SC4S_SOURCE_LISTEN_UDP_SOCKETS To run docker/podman in privileged mode edit service file (/lib/systemd/system/sc4s.service). Add --privileged flag to docker/podman run command: ExecStart = /usr/bin/podman run \\ -e \"SC4S_CONTAINER_HOST= ${ SC4SHOST } \" \\ -v \" $SC4S_PERSIST_MOUNT \" \\ -v \" $SC4S_LOCAL_MOUNT \" \\ -v \" $SC4S_ARCHIVE_MOUNT \" \\ -v \" $SC4S_TLS_MOUNT \" \\ --privileged \\ --env-file = /opt/sc4s/env_file \\ --health-cmd = \"/healthcheck.sh\" \\ --health-interval = 10s --health-retries = 6 --health-timeout = 6s \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE","title":"eBPF"},{"location":"configuration/#misc-options","text":"SC4S_LISTEN_STATUS_PORT Change the \u201cstatus\u201d port used by the internal health check process default value is 8080","title":"Misc options"},{"location":"destinations/","text":"SC4S Destination Configuration \u00b6 Splunk Connect for Syslog can be configured to utilize any destination available in syslog-ng OSE. The configuration system provides ease of use helpers to manage configuration for the three most common destination needs, Splunk HEC, RFC5424 Syslog, and Legacy BSD Syslog. In the getting started guide you configured the Splunk HEC \u201cDEFAULT\u201d destination to receive all traffic by default. The \u201cDEFAULT\u201d destination should be configured to accept all events to ensure that at least one destination has the event to avoid data loss due to misconfiguration. The following example demonstrates configuration of a second HEC destination where only \u201cselected\u201d data will be sent. Example 1 Send all events \u00b6 #Note \"OTHER\" should be a meaningful name SC4S_DEST_SPLUNK_HEC_OTHER_URL = https://splunk:8088 SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN = ${ SPLUNK_HEC_TOKEN } SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY = no SC4S_DEST_SPLUNK_HEC_OTHER_MODE = GLOBAL Example 2 Send only cisco IOS Events \u00b6 #Note \"OTHER\" should be a meaningful name SC4S_DEST_SPLUNK_HEC_OTHER_URL = https://splunk:8088 SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN = ${ SPLUNK_HEC_TOKEN } SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY = no SC4S_DEST_SPLUNK_HEC_OTHER_MODE = SELECT SC4S_DEST_CISCO_IOS_ALTERNATES = d_fmt_hec_OTHER Example 3 Send only cisco IOS events that are not debug \u00b6 #Note \"OTHER\" should be a meaningful name SC4S_DEST_SPLUNK_HEC_OTHER_URL = https://splunk:8088 SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN = ${ SPLUNK_HEC_TOKEN } SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY = no SC4S_DEST_SPLUNK_HEC_OTHER_MODE = SELECT #filename: application sc4s - lp - cisco_ios_dest_fmt_other {{ source }}[ sc4s - lp - dest - select - d_fmt_hec_other ] { filter { ' CISCO_IOS ' eq \"${fields.sc4s_vendor}_${fields.sc4s_product}\" #Match any cisco event that is not like \"%ACL-7-1234\" and not message ( ' ^% [ ^ \\ - ] + -7 - ' ); }; }; Example 4 Mcafee EPO send RFC5424 events without frames to third party system \u00b6 Note in most cases when a destination requires syslog the requirement is referring to legacy BSD syslog (RFC3194) not standard syslog RFC5424 The destination name is taken from the env var each destination must have a unique name regardless of type. This value should be short and meaningful. #env_file SC4S_DEST_SYSLOG_MYSYS_HOST = 172 .17.0.1 SC4S_DEST_SYSLOG_MYSYS_PORT = 514 SC4S_DEST_SYSLOG_MYSYS_MODE = SELECT # set to #yes for ietf frames SC4S_DEST_SYSLOG_MYSYS_IETF = no #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_syslog_msys.conf application sc4s - lp - mcafee_epo_d_syslog_msys [ sc4s - lp - dest - select - d_syslog_msys ] { filter { ' mcafee ' eq \"${fields.sc4s_vendor}\" and ' epo ' eq \"${fields.sc4s_product}\" }; }; Example 5 Cisco ASA send to a third party SIEM \u00b6 The destination name is taken from the env var each destination must have a unique name regardless of type. This value should be short and meaningful In most cases when a third party system needs \u201csyslog\u201d the requirement is to send \u201clegacy BSD\u201d as follows This is often refereed to as RFC3194 #env_file SC4S_DEST_BSD_OLDSIEM_HOST = 172 .17.0.1 SC4S_DEST_BSD_OLDSIEM_PORT = 514 SC4S_DEST_BSD_OLDSIEM_MODE = SELECT # set to #yes for ietf frames #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_bsd_oldsiem.conf application sc4s - lp - mcafee_epo_d_bsd_oldsiem [ sc4s - lp - dest - select - d_bsd_oldsiem ] { filter { ' mcafee ' eq \"${fields.sc4s_vendor}\" and ' epo ' eq \"${fields.sc4s_product}\" }; }; Example 6 Mcafee EPO send RFC5424 events without frames to third party system \u00b6 The destination name is taken from the env var each destination must have a unique name regardless of type. This value should be short and meaningful #env_file SC4S_DEST_SYSLOG_MYSYS_HOST = 172 .17.0.1 SC4S_DEST_SYSLOG_MYSYS_PORT = 514 SC4S_DEST_SYSLOG_MYSYS_MODE = SELECT # set to #yes for ietf frames SC4S_DEST_SYSLOG_MYSYS_IETF = no #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_syslog_msys.conf application sc4s - lp - mcafee_epo_d_syslog_msys [ sc4s - lp - dest - select - d_syslog_msys ] { filter { ' cisco ' eq \"${fields.sc4s_vendor}\" and ' asa ' eq \"${fields.sc4s_product}\" }; }; Supported Simple Destination configurations \u00b6 SC4S Supports the following destination configurations via configuration. Any custom destination can be supported (defined by syslog-ng OSE) Splunk HTTP Event Collector (HEC) RFC5424 format without frames i.e. <166>1 2022-02-02T14:59:55.000+00:00 kinetic-charlie - - - - %FTD-6-430003: DeviceUUID: RFC5424 format with frames also known as RFC6587 123 <166>1 2022-02-02T14:59:55.000+00:00 kinetic-charlie - - - - %FTD-6-430003: DeviceUUID: RFC3164 (BSD format) <134>Feb 2 13:43:05.000 horse-ammonia CheckPoint[26203]: HEC Destination Configuration \u00b6 Variable Values Description SC4S_DEST_SPLUNK_HEC__URL url URL(s) of the Splunk endpoint, can be a single URL space separated list SC4S_DEST_SPLUNK_HEC__TOKEN string Splunk HTTP Event Collector Token SC4S_DEST_SPLUNK_HEC__MODE string \u201cGLOBAL\u201d or \u201cSELECT\u201d SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY yes(default) or no verify HTTP(s) certificate Syslog Standard destination. \u00b6 Note: in many cases destinations incorrectly assert \u201csyslog\u201d support. IETF standards RFC5424, RFC5425, RFC6587 define the use of \u201csyslog\u201d as a network protocol. Often the actual configuration required is Legacy BSD syslog which is NOT a standard and was documented \u201chistorically\u201d in RFC3164 see BSD Destination section. Variable Values Description SC4S_DEST_SYSLOG__HOST fqdn or ip the FQDN or IP of the target SC4S_DEST_SYSLOG__PORT number 601 (default when framed) 514 (default when not framed) SC4S_DEST_SYSLOG__IETF yes,no default \u201cyes\u201d use IETF Standard frames SC4S_DEST_SYSLOG__TRANSPORT tcp,udp,tls default tcp SC4S_DEST_SYSLOG__MODE string \u201cGLOBAL\u201d or \u201cSELECT\u201d BSD legacy destination (Non standard) \u00b6 Note: in many cases destinations incorrectly assert \u201csyslog\u201d support. IETF standards RFC5424, RFC5425, RFC6587 define the use of \u201csyslog\u201d as a network protocol. Often the actual configuration required is Legacy BSD syslog which is NOT a standard and was documented \u201chistorically\u201d in RFC3164 see BSD Destination section. Variable Values Description SC4S_DEST_BSD__HOST fqdn or ip the FQDN or IP of the target SC4S_DEST_BSD__PORT number default 514 SC4S_DEST_BSD__TRANSPORT tcp,udp,tls default tcp SC4S_DEST_BSD__MODE string \u201cGLOBAL\u201d or \u201cSELECT\u201d Configuration of Filtered Alternate Destinations (Advanced) \u00b6 Though source-specific forms of the variables configured above will limit configured alternate destinations to a specific data source, there are cases where even more granularity is desired within a specific data source (e.g. to send all Cisco ASA \u201cdebug\u201d traffic to Cisco Prime for analysis). This extra traffic may or may not be needed in Splunk. To accommodate this use case, Filtered Alternate Destinations allow a filter to be supplied to redirect a portion of a given source\u2019s traffic to a list of alternate destinations (and, optionally, to prevent matching events from being sent to Splunk). Again, these are configured through environment variables similar to the ones above: Variable Values Description SC4S_DEST__ALT_FILTER syslog-ng filter Filter to determine which events are sent to alternate destination(s) SC4S_DEST__FILTERED_ALTERNATES Comma or space-separated list of syslog-ng destinations Send filtered events to alternate syslog-ng destinations using the VENDOR_PRODUCT syntax, e.g. SC4S_DEST_CISCO_ASA_FILTERED_ALTERNATES NOTE: This is an advanced capability, and filters and destinations using proper syslog-ng syntax must be constructed prior to utilizing this feature. NOTE: Unlike the standard alternate destinations configured above, the regular \u201cmainline\u201d destinations (including the primary HEC destination or configured archive destination ( d_hec or d_archive )) are not included for events matching the configured alternate destination filter. If an event matches the filter, the list of filtered alternate destinations completely replaces any mainline destinations including defaults and global or source-based standard alternate destinations. Be sure to include them in the filtered destination list if desired. HINT: Since the filtered alternate destinations completely replace the mainline destinations (including HEC to Splunk), a filter that matches all traffic can be used with a destination list that does not include the standard HEC destination to effectively turn off HEC for a given data source.","title":"Destinations"},{"location":"destinations/#sc4s-destination-configuration","text":"Splunk Connect for Syslog can be configured to utilize any destination available in syslog-ng OSE. The configuration system provides ease of use helpers to manage configuration for the three most common destination needs, Splunk HEC, RFC5424 Syslog, and Legacy BSD Syslog. In the getting started guide you configured the Splunk HEC \u201cDEFAULT\u201d destination to receive all traffic by default. The \u201cDEFAULT\u201d destination should be configured to accept all events to ensure that at least one destination has the event to avoid data loss due to misconfiguration. The following example demonstrates configuration of a second HEC destination where only \u201cselected\u201d data will be sent.","title":"SC4S Destination Configuration"},{"location":"destinations/#example-1-send-all-events","text":"#Note \"OTHER\" should be a meaningful name SC4S_DEST_SPLUNK_HEC_OTHER_URL = https://splunk:8088 SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN = ${ SPLUNK_HEC_TOKEN } SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY = no SC4S_DEST_SPLUNK_HEC_OTHER_MODE = GLOBAL","title":"Example 1 Send all events"},{"location":"destinations/#example-2-send-only-cisco-ios-events","text":"#Note \"OTHER\" should be a meaningful name SC4S_DEST_SPLUNK_HEC_OTHER_URL = https://splunk:8088 SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN = ${ SPLUNK_HEC_TOKEN } SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY = no SC4S_DEST_SPLUNK_HEC_OTHER_MODE = SELECT SC4S_DEST_CISCO_IOS_ALTERNATES = d_fmt_hec_OTHER","title":"Example 2 Send only cisco IOS Events"},{"location":"destinations/#example-3-send-only-cisco-ios-events-that-are-not-debug","text":"#Note \"OTHER\" should be a meaningful name SC4S_DEST_SPLUNK_HEC_OTHER_URL = https://splunk:8088 SC4S_DEST_SPLUNK_HEC_OTHER_TOKEN = ${ SPLUNK_HEC_TOKEN } SC4S_DEST_SPLUNK_HEC_OTHER_TLS_VERIFY = no SC4S_DEST_SPLUNK_HEC_OTHER_MODE = SELECT #filename: application sc4s - lp - cisco_ios_dest_fmt_other {{ source }}[ sc4s - lp - dest - select - d_fmt_hec_other ] { filter { ' CISCO_IOS ' eq \"${fields.sc4s_vendor}_${fields.sc4s_product}\" #Match any cisco event that is not like \"%ACL-7-1234\" and not message ( ' ^% [ ^ \\ - ] + -7 - ' ); }; };","title":"Example 3 Send only cisco IOS events that are not debug"},{"location":"destinations/#example-4-mcafee-epo-send-rfc5424-events-without-frames-to-third-party-system","text":"Note in most cases when a destination requires syslog the requirement is referring to legacy BSD syslog (RFC3194) not standard syslog RFC5424 The destination name is taken from the env var each destination must have a unique name regardless of type. This value should be short and meaningful. #env_file SC4S_DEST_SYSLOG_MYSYS_HOST = 172 .17.0.1 SC4S_DEST_SYSLOG_MYSYS_PORT = 514 SC4S_DEST_SYSLOG_MYSYS_MODE = SELECT # set to #yes for ietf frames SC4S_DEST_SYSLOG_MYSYS_IETF = no #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_syslog_msys.conf application sc4s - lp - mcafee_epo_d_syslog_msys [ sc4s - lp - dest - select - d_syslog_msys ] { filter { ' mcafee ' eq \"${fields.sc4s_vendor}\" and ' epo ' eq \"${fields.sc4s_product}\" }; };","title":"Example 4 Mcafee EPO send RFC5424 events without frames to third party system"},{"location":"destinations/#example-5-cisco-asa-send-to-a-third-party-siem","text":"The destination name is taken from the env var each destination must have a unique name regardless of type. This value should be short and meaningful In most cases when a third party system needs \u201csyslog\u201d the requirement is to send \u201clegacy BSD\u201d as follows This is often refereed to as RFC3194 #env_file SC4S_DEST_BSD_OLDSIEM_HOST = 172 .17.0.1 SC4S_DEST_BSD_OLDSIEM_PORT = 514 SC4S_DEST_BSD_OLDSIEM_MODE = SELECT # set to #yes for ietf frames #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_bsd_oldsiem.conf application sc4s - lp - mcafee_epo_d_bsd_oldsiem [ sc4s - lp - dest - select - d_bsd_oldsiem ] { filter { ' mcafee ' eq \"${fields.sc4s_vendor}\" and ' epo ' eq \"${fields.sc4s_product}\" }; };","title":"Example 5 Cisco ASA send to a third party SIEM"},{"location":"destinations/#example-6-mcafee-epo-send-rfc5424-events-without-frames-to-third-party-system","text":"The destination name is taken from the env var each destination must have a unique name regardless of type. This value should be short and meaningful #env_file SC4S_DEST_SYSLOG_MYSYS_HOST = 172 .17.0.1 SC4S_DEST_SYSLOG_MYSYS_PORT = 514 SC4S_DEST_SYSLOG_MYSYS_MODE = SELECT # set to #yes for ietf frames SC4S_DEST_SYSLOG_MYSYS_IETF = no #filename: /opt/sc4s/local/config/app_parsers/selectors/sc4s-lp-mcafee_epo_d_syslog_msys.conf application sc4s - lp - mcafee_epo_d_syslog_msys [ sc4s - lp - dest - select - d_syslog_msys ] { filter { ' cisco ' eq \"${fields.sc4s_vendor}\" and ' asa ' eq \"${fields.sc4s_product}\" }; };","title":"Example 6 Mcafee EPO send RFC5424 events without frames to third party system"},{"location":"destinations/#supported-simple-destination-configurations","text":"SC4S Supports the following destination configurations via configuration. Any custom destination can be supported (defined by syslog-ng OSE) Splunk HTTP Event Collector (HEC) RFC5424 format without frames i.e. <166>1 2022-02-02T14:59:55.000+00:00 kinetic-charlie - - - - %FTD-6-430003: DeviceUUID: RFC5424 format with frames also known as RFC6587 123 <166>1 2022-02-02T14:59:55.000+00:00 kinetic-charlie - - - - %FTD-6-430003: DeviceUUID: RFC3164 (BSD format) <134>Feb 2 13:43:05.000 horse-ammonia CheckPoint[26203]:","title":"Supported Simple Destination configurations"},{"location":"destinations/#hec-destination-configuration","text":"Variable Values Description SC4S_DEST_SPLUNK_HEC__URL url URL(s) of the Splunk endpoint, can be a single URL space separated list SC4S_DEST_SPLUNK_HEC__TOKEN string Splunk HTTP Event Collector Token SC4S_DEST_SPLUNK_HEC__MODE string \u201cGLOBAL\u201d or \u201cSELECT\u201d SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY yes(default) or no verify HTTP(s) certificate","title":"HEC Destination Configuration"},{"location":"destinations/#syslog-standard-destination","text":"Note: in many cases destinations incorrectly assert \u201csyslog\u201d support. IETF standards RFC5424, RFC5425, RFC6587 define the use of \u201csyslog\u201d as a network protocol. Often the actual configuration required is Legacy BSD syslog which is NOT a standard and was documented \u201chistorically\u201d in RFC3164 see BSD Destination section. Variable Values Description SC4S_DEST_SYSLOG__HOST fqdn or ip the FQDN or IP of the target SC4S_DEST_SYSLOG__PORT number 601 (default when framed) 514 (default when not framed) SC4S_DEST_SYSLOG__IETF yes,no default \u201cyes\u201d use IETF Standard frames SC4S_DEST_SYSLOG__TRANSPORT tcp,udp,tls default tcp SC4S_DEST_SYSLOG__MODE string \u201cGLOBAL\u201d or \u201cSELECT\u201d","title":"Syslog Standard destination."},{"location":"destinations/#bsd-legacy-destination-non-standard","text":"Note: in many cases destinations incorrectly assert \u201csyslog\u201d support. IETF standards RFC5424, RFC5425, RFC6587 define the use of \u201csyslog\u201d as a network protocol. Often the actual configuration required is Legacy BSD syslog which is NOT a standard and was documented \u201chistorically\u201d in RFC3164 see BSD Destination section. Variable Values Description SC4S_DEST_BSD__HOST fqdn or ip the FQDN or IP of the target SC4S_DEST_BSD__PORT number default 514 SC4S_DEST_BSD__TRANSPORT tcp,udp,tls default tcp SC4S_DEST_BSD__MODE string \u201cGLOBAL\u201d or \u201cSELECT\u201d","title":"BSD legacy destination (Non standard)"},{"location":"destinations/#configuration-of-filtered-alternate-destinations-advanced","text":"Though source-specific forms of the variables configured above will limit configured alternate destinations to a specific data source, there are cases where even more granularity is desired within a specific data source (e.g. to send all Cisco ASA \u201cdebug\u201d traffic to Cisco Prime for analysis). This extra traffic may or may not be needed in Splunk. To accommodate this use case, Filtered Alternate Destinations allow a filter to be supplied to redirect a portion of a given source\u2019s traffic to a list of alternate destinations (and, optionally, to prevent matching events from being sent to Splunk). Again, these are configured through environment variables similar to the ones above: Variable Values Description SC4S_DEST__ALT_FILTER syslog-ng filter Filter to determine which events are sent to alternate destination(s) SC4S_DEST__FILTERED_ALTERNATES Comma or space-separated list of syslog-ng destinations Send filtered events to alternate syslog-ng destinations using the VENDOR_PRODUCT syntax, e.g. SC4S_DEST_CISCO_ASA_FILTERED_ALTERNATES NOTE: This is an advanced capability, and filters and destinations using proper syslog-ng syntax must be constructed prior to utilizing this feature. NOTE: Unlike the standard alternate destinations configured above, the regular \u201cmainline\u201d destinations (including the primary HEC destination or configured archive destination ( d_hec or d_archive )) are not included for events matching the configured alternate destination filter. If an event matches the filter, the list of filtered alternate destinations completely replaces any mainline destinations including defaults and global or source-based standard alternate destinations. Be sure to include them in the filtered destination list if desired. HINT: Since the filtered alternate destinations completely replace the mainline destinations (including HEC to Splunk), a filter that matches all traffic can be used with a destination list that does not include the standard HEC destination to effectively turn off HEC for a given data source.","title":"Configuration of Filtered Alternate Destinations (Advanced)"},{"location":"experiments/","text":"Current Experimental Features \u00b6 > 3.0.0 \u00b6 eBPF \u00b6 eBPF is a feature that leverages Linux kernel infrastructure to evenly distribute the load especially in cases when there is a huge stream of messages incoming from a single appliance. Prerequisite for using eBPF feature is a host machine with os that supports eBPF. It should be used only in cases when other ways of sc4s tuning are failing. Please refer to the instruction for configuration details. To learn more visit this blog post. SC4S Lite \u00b6 In the new 3.0.0 update, we\u2019ve introduced SC4S Lite. It\u2019s designed for those who prefer speed and custom filters over the pre-set ones that come with the standard SC4S. It\u2019s basically the same as our default version, minus the pre-defined filters and complex app_parser topics.More information can be found under dedicated page. > 2.13.0 \u00b6 In env_file set SC4S_USE_NAME_CACHE=yes to enable caching last valid host string and replacing nill, null, or ipv4 with last good value and stores this information in the hostip.sqlite file. Benefit: More correct host name values in Splunk when source vendor fails to provide valid syslog message Risk: Potential disk I/O usage (space, iops) Potential reduction in throughput when a high proportion of events are incomplete. To clear hostip.sqlite file, set SC4S_CLEAR_NAME_CACHE=yes flag in env_file. This action will automatically delete the hostip.sqlite file when sc4s restarts. In env_file set SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG=yes To enable additional post processing to merge multiline vmware events. Recommend also enabling SC4S_USE_NAME_CACHE=yes as many events can be malformed or missing host name In env_file set SC4S_USE_VPS_CACHE=yes To enable automatic configuration of vendor_product by source where possible. This feature caches \u201cvendor\u201d and \u201cproduct\u201d fields from to use in determination of the best values for generic linux events for example without this feature the \u201cvendor product by host\u201d app parser must be configured to identify esx hosts so that esx SSHD events can be routed using the meta key vmware_vsphere_nix_syslog with this feature enabled a common event such containing \u201cprogram=vpxa\u201d will cache this value. Benefit: Less config interaction Risk: Potential disk I/O usage (space, iops) Potential reduction in throughput when a high proportion of events are incomplete. Risk: misidentification due to load balancers and relay sources. SC4S_SOURCE_PROXYCONNECT=yes for TCP and TLS connection expect \u201cPROXY CONNECT\u201d to provide the original client IP in SNAT load balancing","title":"Experiments"},{"location":"experiments/#current-experimental-features","text":"","title":"Current Experimental Features"},{"location":"experiments/#300","text":"","title":"> 3.0.0"},{"location":"experiments/#ebpf","text":"eBPF is a feature that leverages Linux kernel infrastructure to evenly distribute the load especially in cases when there is a huge stream of messages incoming from a single appliance. Prerequisite for using eBPF feature is a host machine with os that supports eBPF. It should be used only in cases when other ways of sc4s tuning are failing. Please refer to the instruction for configuration details. To learn more visit this blog post.","title":"eBPF"},{"location":"experiments/#sc4s-lite","text":"In the new 3.0.0 update, we\u2019ve introduced SC4S Lite. It\u2019s designed for those who prefer speed and custom filters over the pre-set ones that come with the standard SC4S. It\u2019s basically the same as our default version, minus the pre-defined filters and complex app_parser topics.More information can be found under dedicated page.","title":"SC4S Lite"},{"location":"experiments/#2130","text":"In env_file set SC4S_USE_NAME_CACHE=yes to enable caching last valid host string and replacing nill, null, or ipv4 with last good value and stores this information in the hostip.sqlite file. Benefit: More correct host name values in Splunk when source vendor fails to provide valid syslog message Risk: Potential disk I/O usage (space, iops) Potential reduction in throughput when a high proportion of events are incomplete. To clear hostip.sqlite file, set SC4S_CLEAR_NAME_CACHE=yes flag in env_file. This action will automatically delete the hostip.sqlite file when sc4s restarts. In env_file set SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG=yes To enable additional post processing to merge multiline vmware events. Recommend also enabling SC4S_USE_NAME_CACHE=yes as many events can be malformed or missing host name In env_file set SC4S_USE_VPS_CACHE=yes To enable automatic configuration of vendor_product by source where possible. This feature caches \u201cvendor\u201d and \u201cproduct\u201d fields from to use in determination of the best values for generic linux events for example without this feature the \u201cvendor product by host\u201d app parser must be configured to identify esx hosts so that esx SSHD events can be routed using the meta key vmware_vsphere_nix_syslog with this feature enabled a common event such containing \u201cprogram=vpxa\u201d will cache this value. Benefit: Less config interaction Risk: Potential disk I/O usage (space, iops) Potential reduction in throughput when a high proportion of events are incomplete. Risk: misidentification due to load balancers and relay sources. SC4S_SOURCE_PROXYCONNECT=yes for TCP and TLS connection expect \u201cPROXY CONNECT\u201d to provide the original client IP in SNAT load balancing","title":"> 2.13.0"},{"location":"faq/","text":"Splunk Connect for Syslog (SC4S) Frequently Asked Questions \u00b6 Q: The Universal Forwarder/files based architecture has been the documented Splunk best practice for a long time. Why switch to a HTTP Event Collector (HEC) based architecture? A: Using HEC to stream events directly to the Indexers provides superior load balancing which has shown to produce dramatically more even data distribution across the Indexers. This even distribution results in significantly enhanced search performance. This benefit is especially valuable in large Splunk deployments. The HEC architecture designed into SC4S is also far easier to administer with newer versions of syslog-ng, which SC4S takes advantage of. There are far fewer opportunities for mis-configuration, resulting in higher overall performance and customer adoption. Lastly, HEC (and in particular, the \u201c/event\u201d endpoint) offers the opportunity for a far richer data stream to Splunk, with lower resource utilization at ingest. This rich data stream can be taken advantage of in next-generation TAs. Q: Is the Splunk HTTP Event Collector (HEC) as reliable as the Splunk Universal Forwarder? A: HEC utilizes standard HTTP mechanisms to confirm that the endpoint is responsive before sending data. The HEC architecture allows for the use of an industry standard load balancer between SC4S and the Indexer, or the included load balancing capability built into SC4S itself. Q: What if my team doesn\u2019t know how to manage containers? A: SC4S supports both container-based and \u201cbring-your-own-environment\u201d (BYOE) deployment methods. That said, using a runtime like Podman to deploy and manage SC4S containers is exceptionally easy even for those with no prior \u201ccontainer experience\u201d. Our application of container technology behaves much like a packaging system. The interaction is mostly via \u201csystemctl\u201d commands a Linux admin would use for other common administration activities. The best approach is to try it out in a lab to see what the experience is like for yourself! BYOE is intended for advanced deployments that can not use the Splunk container for some reason. One possible reason is a need to \u201cfork\u201d SC4S in order to implement heavy bespoke customization. Though many will initially gravitate toward BYOE because managing config files and syslog-ng directly is \u201cwhat they know\u201d, most enterprises will have the best experience using the container approach. Q: Can my team use SC4S if we are Windows only shop? A: You can now run Docker on Windows! Microsoft has introduced public preview technology for Linux containers on Windows. Alternatively, a minimal Centos/Ubuntu Linux VM running on Windows hyper-v is a reliable production-grade choice. Q: My company has the traditional UF/files based syslog architecture deployed and running, should I rip/replace a working installation with SC4S? A: Generally speaking, if a deployment is working and you are happy with it, it\u2019s best to leave it as is until there is need for major deployment changes such as higher scale. That said, the search performance gains realized from better data distribution is a benefit not to be overlooked. If Splunk users have complained about search performance or you are curious about the possible performance gains, we recommend doing an analysis of the data distribution across the indexers. It may make sense to upgrade to SC4S if there is a change in administration as well. Properly architecting a performant UF/files syslog-ng deployment is difficult, and an administrative personnel change offers the opportunity to \u201cmake a break\u201d to SC4S, where a new set of administrators would otherwise be tasked with understanding the existing (likely complicated) architecture. Q: What is the best way to migrate to SC4S from an existing syslog architecture? A: When exploring migration to SC4S we strongly recommend experimentation in a lab prior to deployment to production. There are a couple of approaches to consider: One option is to stand up and configure the new SC4S infrastructure for all your sources, then confirm all the sourcetypes are being indexed as expected, and finally stop the existing syslog servers. This big bang approach may result in the fewest duplicate events in Splunk vs other options. In some large or complex environments this may not be feasible however. A second option is to start with the sources currently sending events on port 514 (the default). In this case you would stand up the new SC4S infrastructure in its default configuration, confirm all the sourcetypes are being indexed as expected, then retire the old syslog servers listening on port 514. Once the 514 sources are complete you can move on to migrating any other sources one by one. To migrate these other sources you would configure SC4S filters to explicitly identify them either via unique port, hostID or CIDR block. Again, once you confirm that each sourcetype is successfully being indexed then you may disable the old syslog configurations for that source. Q: How can SC4S be deployed to provide high availability? A: It is challenging to provide HA for syslog because the syslog protocol itself was not designed with HA as a goal. See Performant AND Reliable Syslog UDP is best for an excellent overview of this topic. The gist is that the protocol itself limits the extent to which you can make any syslog collection architecture HA; at best it can be made \u201cmostly available\u201d. Think of syslog as MP3 \u2013 it is a \u201clossy\u201d protocol and there is nothing you can do to restore it to CD quality (lossless). Some have attempted to implement HA via front-side load balancers; please don\u2019t! This is the most common architectural mistake folks make when architecting large-scale syslog data collection. So \u2013 how to make it \u201cmostly available\u201d? Keep it simple, and use OS clustering (shared IP) or even just VMs with vMotion. This simple architecture will encounter far less data loss over time than more complicated schemes. Another possible option being evaluated is containerization HA schemes for SC4S (centered around microk8s) that will take some of the admin burden of clustering away \u2013 but it is still OS clustering under the hood. Q: I\u2019m worried about data loss if SC4S goes down. Could I feed syslog to redundant SC4S servers to provide HA, without creating duplicate events in Splunk? A: In many/most system design decisions there is some level of compromise. Any network protocol that doesn\u2019t have an application level ack will lose data, as speed was selected over reliability in the design, this is the case with syslog. Use of a clustered IP with an active/passive node will however offer a level of resilience while keeping complexity to a minimum. It could be possible to implement a far more complex solution utilizing an additional intermediary technology like Kafka, however the costs may outweigh the real world benefits. Q: Can the SC4S container be deployed using OpenShift or K8s? A: There are a number of reasons that OpenShift/K8s are not a good fit for syslog, SNMP or SIP. They can\u2019t use UDP and TCP on the same port which breaks multiple Bluecoat and Cisco feeds among others. Layered networking shrinks the maximum UDP message which causes data loss due to truncation and drops Long lived TCP connections cause well known problems OpenShift doesn\u2019t actually use Podman, it uses a library to wrap OCI that Podman also uses. this wrapper around the wrapper has some shortcomings that prevent the service definitions SC4S requires. Basically, K8s was built for a very different set of problems than syslog Q: If the XL reference HW can handle just under 1 TB/day how can SC4S be scaled to handle large deployments of many TB/day? A: SC4S is a distributed architecture. SC4S instances should be deployed in the same VLAN as the source devices. This means that each SC4S instance will only see a subset of the total syslog traffic in a large deployment. Even in a 100+ TB deployment the individual SC4S instances will see loads in GB/day not TB/day. Q: How are security vulnerabilities handled with SC4S? A: SC4S is comprised of several components including RHL, Syslog-ng and temporized configurations. If a vulnerability is found in the SC4S configurations, they will be given a critical priority in the Development queue. If vulnerabilities are identified in the third party components (RHL, Syslog-ng, etc.) the fixed versions will be pulled in upon the next SC4S release. Fixed security issues are identified by \u201c[security]\u201d in SC4S release notes. Q: SC4S is being blocked by fapolicyd , how do I fix that? Create a rule that allows running sc4s in fapolicyd configuration: * Create the file /etc/fapolicyd/rules.d/15-sc4s.rules . * Put this into the file: allow perm=open exe=/ : dir=/usr/lib64/ all trust=1 . * Run fagenrules --load to load the new rule. * Run systemctl restart fapolicyd to restart the process. * Start sc4s systemctl start sc4s and verify there are no errors systemctl status sc4s. Q: I am facing a unique issue that my postfilter configuration is not working although i don\u2019t have any postfilter for the mentioned source? A: There is a possibility that there is OOB postfilter for the source which will be applied , the same can be validated by checking the value of sc4s_tags in splunk UI, to fix this Please use a new topic called [sc4s-finalfilter] please don\u2019t use it in any other case as it can add the cost of the processing of data Q: Where the config for the vendors should be placed? There are folders of app-parsers and its directories. Which one to use? Does this also mean that csv files for metadata are no longer required? A: It should be placed inside /opt/sc4s/local/config/*/.conf . Most of the folders are placeholder and it will work in any of these folders if it has .conf extension. It is required but it should be placed in local/context/*.csv . Using splunk_metadata.csv is good for metadata override but it is recommended to use .conf file for everything else in place of other csv files. Q: Can we have a file using which we can create all default indexes in one go? A: Refer this file which contains all indexes being created in one go. Also, above file has lastChanceIndex configured, please use it only if it fits your requirement. If not, then please discard the use of lastChanceIndex. For more information on this file, please refer Splunk docs .","title":"SC4S FAQ"},{"location":"faq/#splunk-connect-for-syslog-sc4s-frequently-asked-questions","text":"Q: The Universal Forwarder/files based architecture has been the documented Splunk best practice for a long time. Why switch to a HTTP Event Collector (HEC) based architecture? A: Using HEC to stream events directly to the Indexers provides superior load balancing which has shown to produce dramatically more even data distribution across the Indexers. This even distribution results in significantly enhanced search performance. This benefit is especially valuable in large Splunk deployments. The HEC architecture designed into SC4S is also far easier to administer with newer versions of syslog-ng, which SC4S takes advantage of. There are far fewer opportunities for mis-configuration, resulting in higher overall performance and customer adoption. Lastly, HEC (and in particular, the \u201c/event\u201d endpoint) offers the opportunity for a far richer data stream to Splunk, with lower resource utilization at ingest. This rich data stream can be taken advantage of in next-generation TAs. Q: Is the Splunk HTTP Event Collector (HEC) as reliable as the Splunk Universal Forwarder? A: HEC utilizes standard HTTP mechanisms to confirm that the endpoint is responsive before sending data. The HEC architecture allows for the use of an industry standard load balancer between SC4S and the Indexer, or the included load balancing capability built into SC4S itself. Q: What if my team doesn\u2019t know how to manage containers? A: SC4S supports both container-based and \u201cbring-your-own-environment\u201d (BYOE) deployment methods. That said, using a runtime like Podman to deploy and manage SC4S containers is exceptionally easy even for those with no prior \u201ccontainer experience\u201d. Our application of container technology behaves much like a packaging system. The interaction is mostly via \u201csystemctl\u201d commands a Linux admin would use for other common administration activities. The best approach is to try it out in a lab to see what the experience is like for yourself! BYOE is intended for advanced deployments that can not use the Splunk container for some reason. One possible reason is a need to \u201cfork\u201d SC4S in order to implement heavy bespoke customization. Though many will initially gravitate toward BYOE because managing config files and syslog-ng directly is \u201cwhat they know\u201d, most enterprises will have the best experience using the container approach. Q: Can my team use SC4S if we are Windows only shop? A: You can now run Docker on Windows! Microsoft has introduced public preview technology for Linux containers on Windows. Alternatively, a minimal Centos/Ubuntu Linux VM running on Windows hyper-v is a reliable production-grade choice. Q: My company has the traditional UF/files based syslog architecture deployed and running, should I rip/replace a working installation with SC4S? A: Generally speaking, if a deployment is working and you are happy with it, it\u2019s best to leave it as is until there is need for major deployment changes such as higher scale. That said, the search performance gains realized from better data distribution is a benefit not to be overlooked. If Splunk users have complained about search performance or you are curious about the possible performance gains, we recommend doing an analysis of the data distribution across the indexers. It may make sense to upgrade to SC4S if there is a change in administration as well. Properly architecting a performant UF/files syslog-ng deployment is difficult, and an administrative personnel change offers the opportunity to \u201cmake a break\u201d to SC4S, where a new set of administrators would otherwise be tasked with understanding the existing (likely complicated) architecture. Q: What is the best way to migrate to SC4S from an existing syslog architecture? A: When exploring migration to SC4S we strongly recommend experimentation in a lab prior to deployment to production. There are a couple of approaches to consider: One option is to stand up and configure the new SC4S infrastructure for all your sources, then confirm all the sourcetypes are being indexed as expected, and finally stop the existing syslog servers. This big bang approach may result in the fewest duplicate events in Splunk vs other options. In some large or complex environments this may not be feasible however. A second option is to start with the sources currently sending events on port 514 (the default). In this case you would stand up the new SC4S infrastructure in its default configuration, confirm all the sourcetypes are being indexed as expected, then retire the old syslog servers listening on port 514. Once the 514 sources are complete you can move on to migrating any other sources one by one. To migrate these other sources you would configure SC4S filters to explicitly identify them either via unique port, hostID or CIDR block. Again, once you confirm that each sourcetype is successfully being indexed then you may disable the old syslog configurations for that source. Q: How can SC4S be deployed to provide high availability? A: It is challenging to provide HA for syslog because the syslog protocol itself was not designed with HA as a goal. See Performant AND Reliable Syslog UDP is best for an excellent overview of this topic. The gist is that the protocol itself limits the extent to which you can make any syslog collection architecture HA; at best it can be made \u201cmostly available\u201d. Think of syslog as MP3 \u2013 it is a \u201clossy\u201d protocol and there is nothing you can do to restore it to CD quality (lossless). Some have attempted to implement HA via front-side load balancers; please don\u2019t! This is the most common architectural mistake folks make when architecting large-scale syslog data collection. So \u2013 how to make it \u201cmostly available\u201d? Keep it simple, and use OS clustering (shared IP) or even just VMs with vMotion. This simple architecture will encounter far less data loss over time than more complicated schemes. Another possible option being evaluated is containerization HA schemes for SC4S (centered around microk8s) that will take some of the admin burden of clustering away \u2013 but it is still OS clustering under the hood. Q: I\u2019m worried about data loss if SC4S goes down. Could I feed syslog to redundant SC4S servers to provide HA, without creating duplicate events in Splunk? A: In many/most system design decisions there is some level of compromise. Any network protocol that doesn\u2019t have an application level ack will lose data, as speed was selected over reliability in the design, this is the case with syslog. Use of a clustered IP with an active/passive node will however offer a level of resilience while keeping complexity to a minimum. It could be possible to implement a far more complex solution utilizing an additional intermediary technology like Kafka, however the costs may outweigh the real world benefits. Q: Can the SC4S container be deployed using OpenShift or K8s? A: There are a number of reasons that OpenShift/K8s are not a good fit for syslog, SNMP or SIP. They can\u2019t use UDP and TCP on the same port which breaks multiple Bluecoat and Cisco feeds among others. Layered networking shrinks the maximum UDP message which causes data loss due to truncation and drops Long lived TCP connections cause well known problems OpenShift doesn\u2019t actually use Podman, it uses a library to wrap OCI that Podman also uses. this wrapper around the wrapper has some shortcomings that prevent the service definitions SC4S requires. Basically, K8s was built for a very different set of problems than syslog Q: If the XL reference HW can handle just under 1 TB/day how can SC4S be scaled to handle large deployments of many TB/day? A: SC4S is a distributed architecture. SC4S instances should be deployed in the same VLAN as the source devices. This means that each SC4S instance will only see a subset of the total syslog traffic in a large deployment. Even in a 100+ TB deployment the individual SC4S instances will see loads in GB/day not TB/day. Q: How are security vulnerabilities handled with SC4S? A: SC4S is comprised of several components including RHL, Syslog-ng and temporized configurations. If a vulnerability is found in the SC4S configurations, they will be given a critical priority in the Development queue. If vulnerabilities are identified in the third party components (RHL, Syslog-ng, etc.) the fixed versions will be pulled in upon the next SC4S release. Fixed security issues are identified by \u201c[security]\u201d in SC4S release notes. Q: SC4S is being blocked by fapolicyd , how do I fix that? Create a rule that allows running sc4s in fapolicyd configuration: * Create the file /etc/fapolicyd/rules.d/15-sc4s.rules . * Put this into the file: allow perm=open exe=/ : dir=/usr/lib64/ all trust=1 . * Run fagenrules --load to load the new rule. * Run systemctl restart fapolicyd to restart the process. * Start sc4s systemctl start sc4s and verify there are no errors systemctl status sc4s. Q: I am facing a unique issue that my postfilter configuration is not working although i don\u2019t have any postfilter for the mentioned source? A: There is a possibility that there is OOB postfilter for the source which will be applied , the same can be validated by checking the value of sc4s_tags in splunk UI, to fix this Please use a new topic called [sc4s-finalfilter] please don\u2019t use it in any other case as it can add the cost of the processing of data Q: Where the config for the vendors should be placed? There are folders of app-parsers and its directories. Which one to use? Does this also mean that csv files for metadata are no longer required? A: It should be placed inside /opt/sc4s/local/config/*/.conf . Most of the folders are placeholder and it will work in any of these folders if it has .conf extension. It is required but it should be placed in local/context/*.csv . Using splunk_metadata.csv is good for metadata override but it is recommended to use .conf file for everything else in place of other csv files. Q: Can we have a file using which we can create all default indexes in one go? A: Refer this file which contains all indexes being created in one go. Also, above file has lastChanceIndex configured, please use it only if it fits your requirement. If not, then please discard the use of lastChanceIndex. For more information on this file, please refer Splunk docs .","title":"Splunk Connect for Syslog (SC4S) Frequently Asked Questions"},{"location":"lb/","text":"A word about load balancers \u00b6 Customers often \u201crequire\u201d the use of load balancers incorrectly attempting to meet a business requirement for availability. In general load balancers are not recommended with the exception of a narrow use case where the Syslog Server must be exposed to untrusted clients on the internet such as Palo Alto Cortex. Considerations \u00b6 UDP MUST only pass a load balancer using DNAT. Source IP must be preserved. Note in this configuration a Load Balancer becomes a new single point of failure TCP/TLS May use a DNAT configuration OR SNAT with \u201cPROXY\u201d Protocol enabled SC4S_SOURCE_PROXYCONNECT=yes (Experimental) TCP/TLS load balancers do not consider the weight of individual connection load is frequently biased to one instance; all members in a single resource pool should be vertically scaled to accommodate the full workload. Alternatives \u00b6 The best deployment model for high availability is a Microk8s based deployment with MetalLB in BGP mode. This model uses a special class of load balancer that is implemented as destination network translation.","title":"Load Balancers"},{"location":"lb/#a-word-about-load-balancers","text":"Customers often \u201crequire\u201d the use of load balancers incorrectly attempting to meet a business requirement for availability. In general load balancers are not recommended with the exception of a narrow use case where the Syslog Server must be exposed to untrusted clients on the internet such as Palo Alto Cortex.","title":"A word about load balancers"},{"location":"lb/#considerations","text":"UDP MUST only pass a load balancer using DNAT. Source IP must be preserved. Note in this configuration a Load Balancer becomes a new single point of failure TCP/TLS May use a DNAT configuration OR SNAT with \u201cPROXY\u201d Protocol enabled SC4S_SOURCE_PROXYCONNECT=yes (Experimental) TCP/TLS load balancers do not consider the weight of individual connection load is frequently biased to one instance; all members in a single resource pool should be vertically scaled to accommodate the full workload.","title":"Considerations"},{"location":"lb/#alternatives","text":"The best deployment model for high availability is a Microk8s based deployment with MetalLB in BGP mode. This model uses a special class of load balancer that is implemented as destination network translation.","title":"Alternatives"},{"location":"lite/","text":"SC4S Lite \u00b6 Purpose \u00b6 SC4S Lite has been designed to provide a scalable, performance-oriented solution for syslog data ingestion into Splunk. The addition of Pluggable Modular Parsers offers users the flexibility to incorporate custom data processing logic to suit specific use cases. Architecture \u00b6 Components and Modules \u00b6 SC4S Lite \u00b6 The primary component of the system, SC4S Lite is built upon the SC4S, providing a lightweight, high-performance sc4s solution, the current SC4S is very complex and packed with too many oob parser support. Pluggable Modular Parsers \u00b6 The Pluggable Modular Parsers provide the ability to customize and extend the data processing logic of SC4S Lite. Users can create and integrate custom parsers to suit their specific needs, enhancing the flexibility of data processing. Splunk Enterprise or Splunk Cloud \u00b6 The Splunk platform is the destination for the syslog data. Splunk allows for comprehensive analysis, searching, and visualization of the processed data. Data Flow \u00b6 Source systems send syslog data to SC4S Lite. The data may be transmitted via UDP, TCP, or RELP, depending on the system\u2019s capabilities and configurations. SC4S Lite receives the syslog data and routes it through the appropriate parsers, as defined by user configurations. The parsers in pluggable module process the data, including parsing, filtering, and enriching the data with metadata. SC4S Lite forwards the processed syslog data to the Splunk platform over the HTTP Event Collector (HEC). Security Considerations \u00b6 SC4S Lite is built on an alpine lightweight container which has very little vulnerability as well as it supports secure syslog data transmission protocols (such as RELP and TLS over TCP) to protect the data in transit. Furthermore, the environment in which SC4S Lite is deployed enhances data security. Scalability and Performance \u00b6 SC4S Lite is designed to provide superior performance and scalability, thanks to the lightweight architecture and pluggable parsers, which distribute the processing load. It is also packed with ebpf program which can further enhance the performance. Note: The actual performance may depend on factors such as the server capacity and network bandwidth. Implementation Plan \u00b6 The implementation of SC4S Lite involves several steps, including: Setting up the SC4S Lite environment. Installing sc4s lite version following the instruction chosen environment . NOTE: In the service file (for podman or docker) replace references of standard container image ( container2 or container3 ) with container3lite . For microk8s replace reference to standard image in values.yaml file. - Configuring source systems to send syslog data to SC4S Lite. - Developing and integrating custom parsers as per specific needs. - Configuring SC4S Lite to route syslog data through appropriate parsers and forward to Splunk. - Testing the setup to ensure syslog data is correctly received, processed, and forwarded to Splunk.","title":"SC4S Lite"},{"location":"lite/#sc4s-lite","text":"","title":"SC4S Lite"},{"location":"lite/#purpose","text":"SC4S Lite has been designed to provide a scalable, performance-oriented solution for syslog data ingestion into Splunk. The addition of Pluggable Modular Parsers offers users the flexibility to incorporate custom data processing logic to suit specific use cases.","title":"Purpose"},{"location":"lite/#architecture","text":"","title":"Architecture"},{"location":"lite/#components-and-modules","text":"","title":"Components and Modules"},{"location":"lite/#sc4s-lite_1","text":"The primary component of the system, SC4S Lite is built upon the SC4S, providing a lightweight, high-performance sc4s solution, the current SC4S is very complex and packed with too many oob parser support.","title":"SC4S Lite"},{"location":"lite/#pluggable-modular-parsers","text":"The Pluggable Modular Parsers provide the ability to customize and extend the data processing logic of SC4S Lite. Users can create and integrate custom parsers to suit their specific needs, enhancing the flexibility of data processing.","title":"Pluggable Modular Parsers"},{"location":"lite/#splunk-enterprise-or-splunk-cloud","text":"The Splunk platform is the destination for the syslog data. Splunk allows for comprehensive analysis, searching, and visualization of the processed data.","title":"Splunk Enterprise or Splunk Cloud"},{"location":"lite/#data-flow","text":"Source systems send syslog data to SC4S Lite. The data may be transmitted via UDP, TCP, or RELP, depending on the system\u2019s capabilities and configurations. SC4S Lite receives the syslog data and routes it through the appropriate parsers, as defined by user configurations. The parsers in pluggable module process the data, including parsing, filtering, and enriching the data with metadata. SC4S Lite forwards the processed syslog data to the Splunk platform over the HTTP Event Collector (HEC).","title":"Data Flow"},{"location":"lite/#security-considerations","text":"SC4S Lite is built on an alpine lightweight container which has very little vulnerability as well as it supports secure syslog data transmission protocols (such as RELP and TLS over TCP) to protect the data in transit. Furthermore, the environment in which SC4S Lite is deployed enhances data security.","title":"Security Considerations"},{"location":"lite/#scalability-and-performance","text":"SC4S Lite is designed to provide superior performance and scalability, thanks to the lightweight architecture and pluggable parsers, which distribute the processing load. It is also packed with ebpf program which can further enhance the performance. Note: The actual performance may depend on factors such as the server capacity and network bandwidth.","title":"Scalability and Performance"},{"location":"lite/#implementation-plan","text":"The implementation of SC4S Lite involves several steps, including: Setting up the SC4S Lite environment. Installing sc4s lite version following the instruction chosen environment . NOTE: In the service file (for podman or docker) replace references of standard container image ( container2 or container3 ) with container3lite . For microk8s replace reference to standard image in values.yaml file. - Configuring source systems to send syslog data to SC4S Lite. - Developing and integrating custom parsers as per specific needs. - Configuring SC4S Lite to route syslog data through appropriate parsers and forward to Splunk. - Testing the setup to ensure syslog data is correctly received, processed, and forwarded to Splunk.","title":"Implementation Plan"},{"location":"performance/","text":"Performance and Sizing \u00b6 Performance testing against our lab configuration produces the following results and limitations. Tested Configurations \u00b6 Splunk Cloud Noah \u00b6 Environment \u00b6 Loggen (syslog-ng 3.25.1) - m5zn.3xlarge SC4S(2.30.0) + podman (4.0.2) - m5zn family SC4S_DEST_SPLUNK_HEC_WORKERS=10 (default) Splunk Cloud Noah 8.2.2203.2 - 3SH + 3IDX /opt/syslog-ng/bin/loggen -i --rate = 100000 --interval = 1800 -P -F --sdata = \"[test name=\\\"stress17\\\"]\" -s 800 --active-connections = 10 Result \u00b6 SC4S instance root networking slirp4netns networking m5zn.large average rate = 21109.66 msg/sec, count=38023708, time=1801.25, (average) msg size=800, bandwidth=16491.92 kB/sec average rate = 20738.39 msg/sec, count=37344765, time=1800.75, (average) msg size=800, bandwidth=16201.87 kB/sec m5zn.xlarge average rate = 34820.94 msg/sec, count=62687563, time=1800.28, (average) msg size=800, bandwidth=27203.86 kB/sec average rate = 35329.28 msg/sec, count=63619825, time=1800.77, (average) msg size=800, bandwidth=27601.00 kB/sec m5zn.2xlarge average rate = 71929.91 msg/sec, count=129492418, time=1800.26, (average) msg size=800, bandwidth=56195.24 kB/sec average rate = 70894.84 msg/sec, count=127630166, time=1800.27, (average) msg size=800, bandwidth=55386.60 kB/sec m5zn.2xlarge average rate = 85419.09 msg/sec, count=153778825, time=1800.29, (average) msg size=800, bandwidth=66733.66 kB/sec average rate = 84733.71 msg/sec, count=152542466, time=1800.26, (average) msg size=800, bandwidth=66198.21 kB/sec Splunk Enterprise \u00b6 Environment \u00b6 Loggen (syslog-ng 3.25.1) - m5zn.large SC4S(2.30.0) + podman (4.0.2) - m5zn family SC4S_DEST_SPLUNK_HEC_WORKERS=10 (default) Splunk Enterprise 9.0.0 Standalone /opt/syslog-ng/bin/loggen -i --rate = 100000 --interval = 600 -P -F --sdata = \"[test name=\\\"stress17\\\"]\" -s 800 --active-connections = 10 Result \u00b6 SC4S instance root networking slirp4netns networking m5zn.large average rate = 21511.69 msg/sec, count=12930565, time=601.095, (average) msg size=800, bandwidth=16806.01 kB/sec average rate = 21583.13 msg/sec, count=12973491, time=601.094, (average) msg size=800, bandwidth=16861.82 kB/sec average rate = 20738.39 msg/sec, count=37344765, time=1800.75, (average) msg size=800, bandwidth=16201.87 kB/sec m5zn.xlarge average rate = 37514.29 msg/sec, count=22530855, time=600.594, (average) msg size=800, bandwidth=29308.04 kB/sec average rate = 37549.86 msg/sec, count=22552210, time=600.594, (average) msg size=800, bandwidth=29335.83 kB/sec average rate = 35329.28 msg/sec, count=63619825, time=1800.77, (average) msg size=800, bandwidth=27601.00 kB/sec m5zn.2xlarge average rate = 98580.10 msg/sec, count=59157495, time=600.096, (average) msg size=800, bandwidth=77015.70 kB/sec average rate = 99463.10 msg/sec, count=59687310, time=600.095, (average) msg size=800, bandwidth=77705.55 kB/sec average rate = 84733.71 msg/sec, count=152542466, time=1800.26, (average) msg size=800, bandwidth=66198.21 kB/sec Guidance on sizing hardware \u00b6 Though vCPU (hyper threading) was used, syslog processing is a CPU intensive task and oversubscription (sharing) of resources is not advised The size of the instance must be larger than the absolute peek to prevent data loss; most sources can not buffer during times of congestion CPU Speed is critical; slower or faster CPUs will impact throughput Not all sources are equal in resource utilization. Well-formed \u201clegacy BSD\u201d syslog messages were used in this test, but many sources are not syslog compliant and will require additional resources to process.","title":"Performance"},{"location":"performance/#performance-and-sizing","text":"Performance testing against our lab configuration produces the following results and limitations.","title":"Performance and Sizing"},{"location":"performance/#tested-configurations","text":"","title":"Tested Configurations"},{"location":"performance/#splunk-cloud-noah","text":"","title":"Splunk Cloud Noah"},{"location":"performance/#environment","text":"Loggen (syslog-ng 3.25.1) - m5zn.3xlarge SC4S(2.30.0) + podman (4.0.2) - m5zn family SC4S_DEST_SPLUNK_HEC_WORKERS=10 (default) Splunk Cloud Noah 8.2.2203.2 - 3SH + 3IDX /opt/syslog-ng/bin/loggen -i --rate = 100000 --interval = 1800 -P -F --sdata = \"[test name=\\\"stress17\\\"]\" -s 800 --active-connections = 10 ","title":"Environment"},{"location":"performance/#result","text":"SC4S instance root networking slirp4netns networking m5zn.large average rate = 21109.66 msg/sec, count=38023708, time=1801.25, (average) msg size=800, bandwidth=16491.92 kB/sec average rate = 20738.39 msg/sec, count=37344765, time=1800.75, (average) msg size=800, bandwidth=16201.87 kB/sec m5zn.xlarge average rate = 34820.94 msg/sec, count=62687563, time=1800.28, (average) msg size=800, bandwidth=27203.86 kB/sec average rate = 35329.28 msg/sec, count=63619825, time=1800.77, (average) msg size=800, bandwidth=27601.00 kB/sec m5zn.2xlarge average rate = 71929.91 msg/sec, count=129492418, time=1800.26, (average) msg size=800, bandwidth=56195.24 kB/sec average rate = 70894.84 msg/sec, count=127630166, time=1800.27, (average) msg size=800, bandwidth=55386.60 kB/sec m5zn.2xlarge average rate = 85419.09 msg/sec, count=153778825, time=1800.29, (average) msg size=800, bandwidth=66733.66 kB/sec average rate = 84733.71 msg/sec, count=152542466, time=1800.26, (average) msg size=800, bandwidth=66198.21 kB/sec","title":"Result"},{"location":"performance/#splunk-enterprise","text":"","title":"Splunk Enterprise"},{"location":"performance/#environment_1","text":"Loggen (syslog-ng 3.25.1) - m5zn.large SC4S(2.30.0) + podman (4.0.2) - m5zn family SC4S_DEST_SPLUNK_HEC_WORKERS=10 (default) Splunk Enterprise 9.0.0 Standalone /opt/syslog-ng/bin/loggen -i --rate = 100000 --interval = 600 -P -F --sdata = \"[test name=\\\"stress17\\\"]\" -s 800 --active-connections = 10 ","title":"Environment"},{"location":"performance/#result_1","text":"SC4S instance root networking slirp4netns networking m5zn.large average rate = 21511.69 msg/sec, count=12930565, time=601.095, (average) msg size=800, bandwidth=16806.01 kB/sec average rate = 21583.13 msg/sec, count=12973491, time=601.094, (average) msg size=800, bandwidth=16861.82 kB/sec average rate = 20738.39 msg/sec, count=37344765, time=1800.75, (average) msg size=800, bandwidth=16201.87 kB/sec m5zn.xlarge average rate = 37514.29 msg/sec, count=22530855, time=600.594, (average) msg size=800, bandwidth=29308.04 kB/sec average rate = 37549.86 msg/sec, count=22552210, time=600.594, (average) msg size=800, bandwidth=29335.83 kB/sec average rate = 35329.28 msg/sec, count=63619825, time=1800.77, (average) msg size=800, bandwidth=27601.00 kB/sec m5zn.2xlarge average rate = 98580.10 msg/sec, count=59157495, time=600.096, (average) msg size=800, bandwidth=77015.70 kB/sec average rate = 99463.10 msg/sec, count=59687310, time=600.095, (average) msg size=800, bandwidth=77705.55 kB/sec average rate = 84733.71 msg/sec, count=152542466, time=1800.26, (average) msg size=800, bandwidth=66198.21 kB/sec","title":"Result"},{"location":"performance/#guidance-on-sizing-hardware","text":"Though vCPU (hyper threading) was used, syslog processing is a CPU intensive task and oversubscription (sharing) of resources is not advised The size of the instance must be larger than the absolute peek to prevent data loss; most sources can not buffer during times of congestion CPU Speed is critical; slower or faster CPUs will impact throughput Not all sources are equal in resource utilization. Well-formed \u201clegacy BSD\u201d syslog messages were used in this test, but many sources are not syslog compliant and will require additional resources to process.","title":"Guidance on sizing hardware"},{"location":"upgrade/","text":"Upgrading Splunk Connect for Syslog \u00b6 Splunk Connect for Syslog is updated regularly using a CI/CD development process. The notes below outline significant changes that must be taken into account prior and after an upgrade. Ensure to follow specific instructions below to ensure a smooth transition to a new version of SC4S in production. Upgrade process \u00b6 Check the current version of SC4S by running sudo logs SC4S . For the latest version, use the latest tag for the SC4S image in the sc4s.service unit file: [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\" Restart the service sudo systemctl restart sc4s Using the \u201c3\u201d version is recommended, but a specific version can be set in the unit file if desired: [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:3.0.0\" See the release information for more detail. Upgrade Notes \u00b6 Version 3 does not introduce any breaking change. To upgrade to version 3 review service file and change container reference from container2 to container3 . For a step by step guide see here . Need up migrating legacy \u201clog paths\u201d or v1 app-parsers for v2. Open an issue with the original config attached and a compressed pcap of sample data for testing and we will evaluate inclusion of the source in an upcoming release. Upgrade from <2.23.0 \u00b6 Vmware vsphere fix esx and vcenter sourcetype for TA compatibility Upgrade from <2 \u00b6 Before upgrading to 2.x review sc4s.service and manually update differences compared to current doc EXPERIMENTAL SNMP Trap feature has been removed migrate to Splunk Connect for SNMP Legacy \u201cgomplate\u201d log path template support was deprecated in 1.x and has been removed in 2.x log paths must be migrated to app-parser style config prior to upgrade Check env_file for \u201cMICROFOCUS_ARCSIGHT\u201d variables and replace with CEF variables see source doc Remove old style \u201cCISCO_*_LEGACY\u201d from env_file and replace per docs New images will no longer be published to docker.io please review current getting started docs and update the sc4s.service file accordingly Internal metrics will now use \u201cmulti\u201d format by default if using unsupported versions of Splunk <8.1 see configuration doc to revert to \u201cevent\u201d or \u201csingle\u201d format. Internal metrics will now use the _metrics index by default update vendor_product key \u2018sc4s_metrics\u2019 to change the index Deprecated use of vendor_product_by_source for null queue or dropping events see See Filtering events from output this use will be removed in v3 Deprecated use of vendor_product_by_source for identification of source by host/ip see new app-parser syntax documented per applicable product Deprecated use of SPLUNK_HEC_ALT_DESTS this variable is no longer used and will be ignored Deprecated use of SC4S_DEST_GLOBAL_ALTERNATES this variable will be removed in future major versions see Destinations section in configuration Corrected Vendor/Product keys BREAKING Please see source doc pages and revise configuration as part of upgrade Zscaler (multiple changes) dell_emc_powerswitch_n F5_BIGIP INFOBLOX Dell RSA SecureID ubiquiti SC4S will now use \u201csplunk as the vendor value, \u201csc4s\u201d as the product Fireye HX Juniper ossec Palo Alto Networks Pulse Connect ricoh tanium tintri Vmware esx,vcenter,nsx,horizon Wallix Bastion Internal Changes .dest_key field is no longer used sc4s_vendor_product is read only and will be removed sc4s_vendor new contains \u201cvendor\u201d portion of vendor_product sc4s_vendor_product new contains \u201cproduct\u201d portion of vendor product sc4s_class new contains additional data previously concatenated to vendor_product removed meta_key Custom \u201capp-parsers\u201d Critical Change #Current app parsers contain one or more lines vendor_product ( ' value_here ' ) #This must change to failure to make this change will prevent sc4s from starting vendor ( ' value ' ) product ( ' here ' )","title":"Upgrading SC4S"},{"location":"upgrade/#upgrading-splunk-connect-for-syslog","text":"Splunk Connect for Syslog is updated regularly using a CI/CD development process. The notes below outline significant changes that must be taken into account prior and after an upgrade. Ensure to follow specific instructions below to ensure a smooth transition to a new version of SC4S in production.","title":"Upgrading Splunk Connect for Syslog"},{"location":"upgrade/#upgrade-process","text":"Check the current version of SC4S by running sudo logs SC4S . For the latest version, use the latest tag for the SC4S image in the sc4s.service unit file: [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\" Restart the service sudo systemctl restart sc4s Using the \u201c3\u201d version is recommended, but a specific version can be set in the unit file if desired: [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:3.0.0\" See the release information for more detail.","title":"Upgrade process"},{"location":"upgrade/#upgrade-notes","text":"Version 3 does not introduce any breaking change. To upgrade to version 3 review service file and change container reference from container2 to container3 . For a step by step guide see here . Need up migrating legacy \u201clog paths\u201d or v1 app-parsers for v2. Open an issue with the original config attached and a compressed pcap of sample data for testing and we will evaluate inclusion of the source in an upcoming release.","title":"Upgrade Notes"},{"location":"upgrade/#upgrade-from-2230","text":"Vmware vsphere fix esx and vcenter sourcetype for TA compatibility","title":"Upgrade from <2.23.0"},{"location":"upgrade/#upgrade-from-2","text":"Before upgrading to 2.x review sc4s.service and manually update differences compared to current doc EXPERIMENTAL SNMP Trap feature has been removed migrate to Splunk Connect for SNMP Legacy \u201cgomplate\u201d log path template support was deprecated in 1.x and has been removed in 2.x log paths must be migrated to app-parser style config prior to upgrade Check env_file for \u201cMICROFOCUS_ARCSIGHT\u201d variables and replace with CEF variables see source doc Remove old style \u201cCISCO_*_LEGACY\u201d from env_file and replace per docs New images will no longer be published to docker.io please review current getting started docs and update the sc4s.service file accordingly Internal metrics will now use \u201cmulti\u201d format by default if using unsupported versions of Splunk <8.1 see configuration doc to revert to \u201cevent\u201d or \u201csingle\u201d format. Internal metrics will now use the _metrics index by default update vendor_product key \u2018sc4s_metrics\u2019 to change the index Deprecated use of vendor_product_by_source for null queue or dropping events see See Filtering events from output this use will be removed in v3 Deprecated use of vendor_product_by_source for identification of source by host/ip see new app-parser syntax documented per applicable product Deprecated use of SPLUNK_HEC_ALT_DESTS this variable is no longer used and will be ignored Deprecated use of SC4S_DEST_GLOBAL_ALTERNATES this variable will be removed in future major versions see Destinations section in configuration Corrected Vendor/Product keys BREAKING Please see source doc pages and revise configuration as part of upgrade Zscaler (multiple changes) dell_emc_powerswitch_n F5_BIGIP INFOBLOX Dell RSA SecureID ubiquiti SC4S will now use \u201csplunk as the vendor value, \u201csc4s\u201d as the product Fireye HX Juniper ossec Palo Alto Networks Pulse Connect ricoh tanium tintri Vmware esx,vcenter,nsx,horizon Wallix Bastion Internal Changes .dest_key field is no longer used sc4s_vendor_product is read only and will be removed sc4s_vendor new contains \u201cvendor\u201d portion of vendor_product sc4s_vendor_product new contains \u201cproduct\u201d portion of vendor product sc4s_class new contains additional data previously concatenated to vendor_product removed meta_key Custom \u201capp-parsers\u201d Critical Change #Current app parsers contain one or more lines vendor_product ( ' value_here ' ) #This must change to failure to make this change will prevent sc4s from starting vendor ( ' value ' ) product ( ' here ' )","title":"Upgrade from <2"},{"location":"v3_upgrade/","text":"Upgrading Splunk Connect for Syslog v2 -> v3 \u00b6 Upgrade process (for version newer than 2.3.0) \u00b6 In general the upgrade process consists of three steps: - change of container version - restart of service - validation NOTE: Version 3 of SC4S is using alpine linux distribution as base image in opposition to previous versions which used UBI (Red Hat) image. Docker/Podman \u00b6 Update container image version \u00b6 In the service file: /lib/systemd/system/sc4s.service container image reference should be updated to version 3 with latest tag: [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\" Restart sc4s service \u00b6 Restart the service: sudo systemctl restart sc4s Validate \u00b6 After the above command is executed successfully, the following information with the version becomes visible in the container logs: sudo podman logs SC4S for podman or sudo docker logs SC4S for docker. Expected output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype = sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype = sc4s:events... syslog-ng checking config sc4s version = 3 .0.0 starting goss starting syslog-ng If you are upgrading from version lower than 2.3.0 please refer to this guide .","title":"Upgrading Splunk Connect for Syslog v2 -> v3"},{"location":"v3_upgrade/#upgrading-splunk-connect-for-syslog-v2-v3","text":"","title":"Upgrading Splunk Connect for Syslog v2 -> v3"},{"location":"v3_upgrade/#upgrade-process-for-version-newer-than-230","text":"In general the upgrade process consists of three steps: - change of container version - restart of service - validation NOTE: Version 3 of SC4S is using alpine linux distribution as base image in opposition to previous versions which used UBI (Red Hat) image.","title":"Upgrade process (for version newer than 2.3.0)"},{"location":"v3_upgrade/#dockerpodman","text":"","title":"Docker/Podman"},{"location":"v3_upgrade/#update-container-image-version","text":"In the service file: /lib/systemd/system/sc4s.service container image reference should be updated to version 3 with latest tag: [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\"","title":"Update container image version"},{"location":"v3_upgrade/#restart-sc4s-service","text":"Restart the service: sudo systemctl restart sc4s","title":"Restart sc4s service"},{"location":"v3_upgrade/#validate","text":"After the above command is executed successfully, the following information with the version becomes visible in the container logs: sudo podman logs SC4S for podman or sudo docker logs SC4S for docker. Expected output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype = sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype = sc4s:events... syslog-ng checking config sc4s version = 3 .0.0 starting goss starting syslog-ng If you are upgrading from version lower than 2.3.0 please refer to this guide .","title":"Validate"},{"location":"developing/","text":"Development setup (BETA) \u00b6 Get Docker \u00b6 Development requires Docker desktop available for windows + and mac or Docker CE available for Linux. Visit (Docker)[https://www.docker.com/get-started] for download instructions Setup VS Code IDE \u00b6 VS Code provides a free IDE experience that is effective for daily development with SC4S. Visit (Microsoft)[https://code.visualstudio.com/docs/introvideos/basics] to download and install for your platform (windows/mac/linux) Fork and Clone the github repository \u00b6 Visit our repository at (Github)[https://github.com/splunk/splunk-connect-for-syslog] and \u201cfork\u201d our repository. This will allow you to make changes and submit pull requests. Click the clone icon and select the location Setup the project and install requirements \u00b6 The following steps are required only on the first time run. Install VS Code Extensions S Python Test Explorer \u201cPython Test Explorer\u201d From the terminal menu select \u201cRun Task\u201d Select \u201cSetup step 1: python venv\u201d then \u201cgo without scanning output\u201d From the terminal menu select \u201cRun Task\u201d Select \u201cSetup step 2: python requirements\u201d then \u201cgo without scanning output\u201d Click the test lab icon \u00b6 Run all tests. Icons on each test will turn green or red to indicate pass or fail. Though VS Code does not show the status of any given test until all tests complete in the test tree, you can select \u201cShow test output\u201d near the top of the test directory tree to see the terminal output of each test as it runs in the \u201cOutput\u201d pane.","title":"Development"},{"location":"developing/#development-setup-beta","text":"","title":"Development setup (BETA)"},{"location":"developing/#get-docker","text":"Development requires Docker desktop available for windows + and mac or Docker CE available for Linux. Visit (Docker)[https://www.docker.com/get-started] for download instructions","title":"Get Docker"},{"location":"developing/#setup-vs-code-ide","text":"VS Code provides a free IDE experience that is effective for daily development with SC4S. Visit (Microsoft)[https://code.visualstudio.com/docs/introvideos/basics] to download and install for your platform (windows/mac/linux)","title":"Setup VS Code IDE"},{"location":"developing/#fork-and-clone-the-github-repository","text":"Visit our repository at (Github)[https://github.com/splunk/splunk-connect-for-syslog] and \u201cfork\u201d our repository. This will allow you to make changes and submit pull requests. Click the clone icon and select the location","title":"Fork and Clone the github repository"},{"location":"developing/#setup-the-project-and-install-requirements","text":"The following steps are required only on the first time run. Install VS Code Extensions S Python Test Explorer \u201cPython Test Explorer\u201d From the terminal menu select \u201cRun Task\u201d Select \u201cSetup step 1: python venv\u201d then \u201cgo without scanning output\u201d From the terminal menu select \u201cRun Task\u201d Select \u201cSetup step 2: python requirements\u201d then \u201cgo without scanning output\u201d","title":"Setup the project and install requirements"},{"location":"developing/#click-the-test-lab-icon","text":"Run all tests. Icons on each test will turn green or red to indicate pass or fail. Though VS Code does not show the status of any given test until all tests complete in the test tree, you can select \u201cShow test output\u201d near the top of the test directory tree to see the terminal output of each test as it runs in the \u201cOutput\u201d pane.","title":"Click the test lab icon"},{"location":"gettingstarted/","text":"Before you start \u00b6 Getting Started \u00b6 Splunk Connect for Syslog is a containerized distribution of syslog-ng with a configuration framework designed to simplify getting syslog data into Splunk Enterprise and Splunk Cloud. Our approach is to provide a runtime-agnostic solution allowing customers to deploy using the container runtime environment of choice. Planning Deployment \u00b6 Syslog is an overloaded term that refers to multiple message formats AND optionally a wire protocol for transmission of events between computer systems over UDP, TCP, or TLS. The protocol is designed to minimize overhead on the sender favoring performance over reliability. This fundamental choice means any instability or resource constraint will cause data to be lost in transmission. When practical and cost-effective (considering the importance of completeness as a requirement), place the sc4s instance in the same VLAN as the source device. Avoid crossing a Wireless network, WAN, Firewall, Load Balancer, or inline IDS. When High Availability of a single instance of SC4S is required, implement multi node clustering of the container environment. Avoid TCP except where the source is unable to contain the event to a single UDP packet. Avoid TLS except where the event may cross untrusted network. Plan for appropriately sized hardware Implementation \u00b6 Splunk Setup \u00b6 Runtime configuration \u00b6","title":"Read First"},{"location":"gettingstarted/#before-you-start","text":"","title":"Before you start"},{"location":"gettingstarted/#getting-started","text":"Splunk Connect for Syslog is a containerized distribution of syslog-ng with a configuration framework designed to simplify getting syslog data into Splunk Enterprise and Splunk Cloud. Our approach is to provide a runtime-agnostic solution allowing customers to deploy using the container runtime environment of choice.","title":"Getting Started"},{"location":"gettingstarted/#planning-deployment","text":"Syslog is an overloaded term that refers to multiple message formats AND optionally a wire protocol for transmission of events between computer systems over UDP, TCP, or TLS. The protocol is designed to minimize overhead on the sender favoring performance over reliability. This fundamental choice means any instability or resource constraint will cause data to be lost in transmission. When practical and cost-effective (considering the importance of completeness as a requirement), place the sc4s instance in the same VLAN as the source device. Avoid crossing a Wireless network, WAN, Firewall, Load Balancer, or inline IDS. When High Availability of a single instance of SC4S is required, implement multi node clustering of the container environment. Avoid TCP except where the source is unable to contain the event to a single UDP packet. Avoid TLS except where the event may cross untrusted network. Plan for appropriately sized hardware","title":"Planning Deployment"},{"location":"gettingstarted/#implementation","text":"","title":"Implementation"},{"location":"gettingstarted/#splunk-setup","text":"","title":"Splunk Setup"},{"location":"gettingstarted/#runtime-configuration","text":"","title":"Runtime configuration"},{"location":"gettingstarted/ansible-docker-podman/","text":"Notice \u00b6 SC4S installation can now be automated with Ansible. All you need to do now is provide a host on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.). Initial Configuration \u00b6 All you need to do before running sc4s with Ansible is providing env_file . In the env file provide at least proper Splunk endpoint and HEC token. Create a file in ansible/resources catalog or edit example file . SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = http : // xxx . xxx . xxx . xxx : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Next provide a host on which you want to run Docker Swarm cluster and host application in inventory file: all : hosts : children : node : hosts : node_1 : ansible_host : Deploy SC4S \u00b6 Now you can run ansible playbook to deploy the application if you have ansible installed on your host or use docker ansible image provided in the package: # From repository root docker-compose -f ansible/docker-compose.yml build docker-compose -f ansible/docker-compose.yml up -d docker exec -it ansible_sc4s /bin/bash Once you are in containers remote shell you can run Docker Swam ansible playbook. If you are authenticating via username/password: ansible-playbook -i path/to/inventory.yaml -u --ask-pass path/to/playbooks/docker.yml or ansible-playbook -i path/to/inventory.yaml -u --ask-pass path/to/playbooks/podman.yml or using key pair: ansible-playbook -i path/to/inventory.yaml -u --key-file path/to/playbooks/docker.yml or ansible-playbook -i path/to/inventory.yaml -u --key-file path/to/playbooks/podman.yml Verify Proper Operation \u00b6 SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same. When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service). sudo docker ps You will get an ID and , next: docker logs or: sudo systemctl status sc4s You should see events similar to those below in the output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:events... syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng","title":"Podman/Docker"},{"location":"gettingstarted/ansible-docker-podman/#notice","text":"SC4S installation can now be automated with Ansible. All you need to do now is provide a host on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.).","title":"Notice"},{"location":"gettingstarted/ansible-docker-podman/#initial-configuration","text":"All you need to do before running sc4s with Ansible is providing env_file . In the env file provide at least proper Splunk endpoint and HEC token. Create a file in ansible/resources catalog or edit example file . SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = http : // xxx . xxx . xxx . xxx : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Next provide a host on which you want to run Docker Swarm cluster and host application in inventory file: all : hosts : children : node : hosts : node_1 : ansible_host :","title":"Initial Configuration"},{"location":"gettingstarted/ansible-docker-podman/#deploy-sc4s","text":"Now you can run ansible playbook to deploy the application if you have ansible installed on your host or use docker ansible image provided in the package: # From repository root docker-compose -f ansible/docker-compose.yml build docker-compose -f ansible/docker-compose.yml up -d docker exec -it ansible_sc4s /bin/bash Once you are in containers remote shell you can run Docker Swam ansible playbook. If you are authenticating via username/password: ansible-playbook -i path/to/inventory.yaml -u --ask-pass path/to/playbooks/docker.yml or ansible-playbook -i path/to/inventory.yaml -u --ask-pass path/to/playbooks/podman.yml or using key pair: ansible-playbook -i path/to/inventory.yaml -u --key-file path/to/playbooks/docker.yml or ansible-playbook -i path/to/inventory.yaml -u --key-file path/to/playbooks/podman.yml","title":"Deploy SC4S"},{"location":"gettingstarted/ansible-docker-podman/#verify-proper-operation","text":"SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same. When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service). sudo docker ps You will get an ID and , next: docker logs or: sudo systemctl status sc4s You should see events similar to those below in the output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:events... syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng","title":"Verify Proper Operation"},{"location":"gettingstarted/ansible-docker-swarm/","text":"Notice \u00b6 SC4S installation can now be automated with Ansible. All you need to do now is provide list of hosts on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.). This manual assumes that you have proper knowledge of Docker Swarm as setting up proper Swarm architecture/configuration is users duty. Initial Configuration \u00b6 All you need to do before running sc4s with Ansible is providing env_file . In the env file provide at least proper Splunk endpoint and HEC token. Create a file in ansible/resources catalog or edit example file . SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = http : // xxx . xxx . xxx . xxx : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Next provide a list of hosts on which you want to run Docker Swarm cluster and host application in inventory file: all : hosts : children : manager : hosts : manager_node_1 : ansible_host : worker : hosts : worker_node_1 : ansible_host : worker_node_2 : ansible_host : You can run your cluster with one or more manager nodes for more info about setting up a swarm refer to official docker documentation . NOTICE: One of biggest advantages of using Docker Swarm for hosting SC4S is Swarm internal load balancer (routing mesh). To get to know the details refer to docker documentation . Additionally, you can provide extra service configurations (ex. number of replicas) in /ansible/app/docker-compose.yml file: version : \"3.7\" services : sc4s : deploy : replicas : 2 ... Deploy SC4S \u00b6 Now you can run ansible playbook to deploy the application if you have ansible installed on your host or use docker ansible image provided in the package: # From repository root docker-compose -f ansible/docker-compose.yml build docker-compose -f ansible/docker-compose.yml up -d docker exec -it ansible_sc4s /bin/bash Once you are in containers remote shell you can run Docker Swam ansible playbook. If you are authenticating via username/password: ansible-playbook -i path/to/inventory_swarm.yaml -u --ask-pass path/to/playbooks/docker_swarm.yml or using key pair: ansible-playbook -i path/to/inventory_swarm.yaml -u --key-file path/to/playbooks/docker_swarm.yml If the process was finished properly you should be able to check state of Swarm cluster and deployed stack from manager\u2019s node remote shell: Verify if stack was created: sudo docker stack ls NAME SERVICES ORCHESTRATOR sc4s 1 Swarm You can scale your number of services: sudo docker service update --replicas 2 sc4s_sc4s See services running in a given stack: sudo docker stack services sc4s ID NAME MODE REPLICAS IMAGE PORTS 1xv9vvbizf3m sc4s_sc4s replicated 2/2 ghcr.io/splunk/splunk-connect-for-syslog/container3:latest :514->514/tcp, :601->601/tcp, :6514->6514/tcp, :514->514/udp Verify Proper Operation \u00b6 SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same. When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service). sudo docker | podman ps You will get an ID and , next: docker | podman logs You should see events similar to those below in the output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:events... syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng","title":"Docker Swarm"},{"location":"gettingstarted/ansible-docker-swarm/#notice","text":"SC4S installation can now be automated with Ansible. All you need to do now is provide list of hosts on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.). This manual assumes that you have proper knowledge of Docker Swarm as setting up proper Swarm architecture/configuration is users duty.","title":"Notice"},{"location":"gettingstarted/ansible-docker-swarm/#initial-configuration","text":"All you need to do before running sc4s with Ansible is providing env_file . In the env file provide at least proper Splunk endpoint and HEC token. Create a file in ansible/resources catalog or edit example file . SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = http : // xxx . xxx . xxx . xxx : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Next provide a list of hosts on which you want to run Docker Swarm cluster and host application in inventory file: all : hosts : children : manager : hosts : manager_node_1 : ansible_host : worker : hosts : worker_node_1 : ansible_host : worker_node_2 : ansible_host : You can run your cluster with one or more manager nodes for more info about setting up a swarm refer to official docker documentation . NOTICE: One of biggest advantages of using Docker Swarm for hosting SC4S is Swarm internal load balancer (routing mesh). To get to know the details refer to docker documentation . Additionally, you can provide extra service configurations (ex. number of replicas) in /ansible/app/docker-compose.yml file: version : \"3.7\" services : sc4s : deploy : replicas : 2 ...","title":"Initial Configuration"},{"location":"gettingstarted/ansible-docker-swarm/#deploy-sc4s","text":"Now you can run ansible playbook to deploy the application if you have ansible installed on your host or use docker ansible image provided in the package: # From repository root docker-compose -f ansible/docker-compose.yml build docker-compose -f ansible/docker-compose.yml up -d docker exec -it ansible_sc4s /bin/bash Once you are in containers remote shell you can run Docker Swam ansible playbook. If you are authenticating via username/password: ansible-playbook -i path/to/inventory_swarm.yaml -u --ask-pass path/to/playbooks/docker_swarm.yml or using key pair: ansible-playbook -i path/to/inventory_swarm.yaml -u --key-file path/to/playbooks/docker_swarm.yml If the process was finished properly you should be able to check state of Swarm cluster and deployed stack from manager\u2019s node remote shell: Verify if stack was created: sudo docker stack ls NAME SERVICES ORCHESTRATOR sc4s 1 Swarm You can scale your number of services: sudo docker service update --replicas 2 sc4s_sc4s See services running in a given stack: sudo docker stack services sc4s ID NAME MODE REPLICAS IMAGE PORTS 1xv9vvbizf3m sc4s_sc4s replicated 2/2 ghcr.io/splunk/splunk-connect-for-syslog/container3:latest :514->514/tcp, :601->601/tcp, :6514->6514/tcp, :514->514/udp","title":"Deploy SC4S"},{"location":"gettingstarted/ansible-docker-swarm/#verify-proper-operation","text":"SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same. When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service). sudo docker | podman ps You will get an ID and , next: docker | podman logs You should see events similar to those below in the output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:events... syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng","title":"Verify Proper Operation"},{"location":"gettingstarted/ansible-mk8s/","text":"Notice \u00b6 SC4S installation can now be automated with Ansible. All you need to do now is provide list of hosts on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.). This manual assumes that you have proper knowledge of microk8s as setting up proper kubernetes cluster architecture/configuration is users duty. Initial Configuration \u00b6 All you need to do before running sc4s with Ansible is providing proper values in values.yaml file (Splunk endpoint and HEC token). Edit example file . Next provide a list of hosts on which you want to run Docker Swarm cluster and host application in inventory file: all : hosts : children : node : hosts : node_1 : ansible_host : or if you want to spin up HA cluster: all : hosts : children : manager : hosts : manager : ansible_host : workers : hosts : worker1 : ansible_host : worker2 : ansible_host : Deploy SC4S \u00b6 Now you can run ansible playbook to deploy the application if you have ansible installed on your host or use docker ansible image provided in the package: # From repository root docker-compose -f ansible/docker-compose.yml build docker-compose -f ansible/docker-compose.yml up -d docker exec -it ansible_sc4s /bin/bash Once you are in containers remote shell you can run Docker Swam ansible playbook. If you are authenticating via username/password: ansible-playbook -i path/to/inventory_mk8s.yaml -u --ask-pass path/to/playbooks/microk8s.yml or if you are running HA cluster: ansible-playbook -i path/to/inventory_mk8s_ha.yaml -u --ask-pass path/to/playbooks/microk8s_ha.yml or using key pair: ansible-playbook -i path/to/inventory_mk8s.yaml -u --key-file path/to/playbooks/microk8s.yml Verify Proper Operation \u00b6 SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same. When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service). sudo microk8s kubectl get pods sudo microk8s kubectl logs You should see events similar to those below in the output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:events... syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng","title":"mk8s"},{"location":"gettingstarted/ansible-mk8s/#notice","text":"SC4S installation can now be automated with Ansible. All you need to do now is provide list of hosts on which you want to run SC4S and basic configuration (Splunk endpoint, HEC token, TLS configuration, etc.). This manual assumes that you have proper knowledge of microk8s as setting up proper kubernetes cluster architecture/configuration is users duty.","title":"Notice"},{"location":"gettingstarted/ansible-mk8s/#initial-configuration","text":"All you need to do before running sc4s with Ansible is providing proper values in values.yaml file (Splunk endpoint and HEC token). Edit example file . Next provide a list of hosts on which you want to run Docker Swarm cluster and host application in inventory file: all : hosts : children : node : hosts : node_1 : ansible_host : or if you want to spin up HA cluster: all : hosts : children : manager : hosts : manager : ansible_host : workers : hosts : worker1 : ansible_host : worker2 : ansible_host :","title":"Initial Configuration"},{"location":"gettingstarted/ansible-mk8s/#deploy-sc4s","text":"Now you can run ansible playbook to deploy the application if you have ansible installed on your host or use docker ansible image provided in the package: # From repository root docker-compose -f ansible/docker-compose.yml build docker-compose -f ansible/docker-compose.yml up -d docker exec -it ansible_sc4s /bin/bash Once you are in containers remote shell you can run Docker Swam ansible playbook. If you are authenticating via username/password: ansible-playbook -i path/to/inventory_mk8s.yaml -u --ask-pass path/to/playbooks/microk8s.yml or if you are running HA cluster: ansible-playbook -i path/to/inventory_mk8s_ha.yaml -u --ask-pass path/to/playbooks/microk8s_ha.yml or using key pair: ansible-playbook -i path/to/inventory_mk8s.yaml -u --key-file path/to/playbooks/microk8s.yml","title":"Deploy SC4S"},{"location":"gettingstarted/ansible-mk8s/#verify-proper-operation","text":"SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' You can verify if all services in swarm cluster are working by checking sc4s_container field in splunk- each service should be recognized by different container id. All other fields should be the same. When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container (on the node that is hosting sc4s service). sudo microk8s kubectl get pods sudo microk8s kubectl logs You should see events similar to those below in the output: SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:fallback... SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index = main for sourcetype=sc4s:events... syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng","title":"Verify Proper Operation"},{"location":"gettingstarted/byoe-rhel8/","text":"SC4S \u201cBring Your Own Environment\u201d \u00b6 FOREWORD: The BYOE SC4S deliverable should be considered as a self/community supported option for SC4S deployment, and should be considered only by those with specific needs based on advanced understanding of syslog-ng architectures and linux/syslog-ng system administration and the ability to develop and automate testing in non-production environments. The container deliverable is the most often correct deliverable of SC4S for almost all enterprises. If you are simply trying to \u201cget syslog working\u201d, the turnkey, container approach described in the other runtime documents will be the fastest route to success. The \u201cBring Your Own Environment\u201d instructions that follow allow expert administrators to utilize the SC4S syslog-ng config files directly on the host OS running on a hardware server or virtual machine. Administrators must provide an appropriate host OS (RHEL 8 used in this document) as well as an up-to-date syslog-ng installation either built from source (not documented here) or installed from community-built RPMs. Modification of the base configuration will be required for most customer environments due to enterprise infrastructure variations. Once installed preparing an upgrade requires evaluation of the current environment compared to this reference then developing and testing a installation specific install plan. This activity is the responsibility of the administrator. NOTE: Installing or modifying system configurations can have unexpected consequences, and advanced linux system administration and syslog-ng configuration experience is assumed when using the BYOE version of SC4S. NOTE: Do not depend on the distribution-supplied version of syslog-ng, as it will likely be far too old. Read this explanation for the reason why syslog-ng builds are so dated in almost all RHEL/Debian distributions. BYOE Installation Instructions \u00b6 These installation instructions assume a recent RHEL or CentOS-based release. Minor adjustments may have to be made for Debian/Ubuntu. In addition, almost all pre-compiled binaries for syslog-ng assume installation in /etc/syslog-ng ; these instructions will reflect that. The following installation instructions are summarized from a blog maintained by a developer at One Identity (formerly Balabit), who is the owner of the syslog-ng Open Source project. It is always advisable to review the blog for the latest changes to the repo(s), as changes here are quite dynamic. Install CentOS or RHEL 8.0 Enable EPEL (Centos 8) dnf install 'dnf-command(copr)' -y dnf install epel-release -y dnf copr enable czanik/syslog-ng336 -y dnf install syslog-ng syslog-ng-python syslog-ng-http python3-pip gcc python3-devel -y Disable the distro-supplied syslog-ng unit file, as the syslog-ng process configured here will run as the sc4s service. rsyslog will continue to be the system logger, but should be left enabled only if it is configured to not listen on the same ports as sc4s. sc4s BYOE can be configured to provide local logging as well if desired. sudo systemctl stop syslog-ng sudo systemctl disable syslog-ng Download the latest bare_metal.tar from releases on github and untar the package in /etc/syslog-ng using the command example below. NOTE: The wget process below will unpack a tarball with the sc4s version of the syslog-ng config files in the standard /etc/syslog-ng location, and will overwrite existing content. Ensure that any previous configurations of syslog-ng are saved if needed prior to executing the download step. NOTE: At the time of writing, the latest major release is v1.33 . The latest release is typically listed first on the page above, unless there is an -alpha , -beta , or -rc release that is newer (which will be clearly indicated). For production use, select the latest that does not have an -rc , -alpha , or -beta suffix. sudo wget -c https://github.com/splunk/splunk-connect-for-syslog/releases/download//baremetal.tar -O - | sudo tar -x -C /etc/syslog-ng Install python requirements sudo pip3 install -r /etc/syslog-ng/requirements.txt (Optional, for monitoring): Install goss and confirm that the version is v0.3.16 or newer. goss installs in /usr/local/bin by default, so ensure that 1) entrypoint.sh is modified to include /usr/local/bin in the full path, or 2) move the goss binary to /bin or /usr/bin . curl - L https : // github . com / aelsabbahy / goss / releases / latest / download / goss - linux - amd64 - o / usr / local / bin / goss chmod + rx / usr / local / bin / goss curl - L https : // github . com / aelsabbahy / goss / releases / latest / download / dgoss - o / usr / local / bin / dgoss # Alternatively, using the latest # curl -L https://raw.githubusercontent.com/aelsabbahy/goss/latest/extras/dgoss/dgoss -o /usr/local/bin/dgoss chmod + rx / usr / local / bin / dgoss There are two main options for running SC4S via systemd, the choice of which largely depends on administrator preference and orchestration methodology: 1) the entrypoint.sh script (identical to that used in the container) can be run directly via systemd, or 2) the script can be altered to preconfigure SC4S (after which only the syslog-ng are run via systemd). These are by no means the only ways to run BYOE \u2013 as the name implies, the method you choose will be based on your custom needs. To run the entrypoint.sh script directly in systemd, create the sc4s unit file /lib/systemd/system/sc4s.service and add the following content: [Unit] Description = SC4S Syslog Daemon Documentation = https://splunk-connect-for-syslog.readthedocs.io/en/latest/ Wants = network.target network-online.target After = network.target network-online.target [Service] Type = simple ExecStart = /etc/syslog-ng/entrypoint.sh ExecReload = /bin/kill -HUP $MAINPID EnvironmentFile = /etc/syslog-ng/env_file StandardOutput = journal StandardError = journal Restart = on-abnormal [Install] WantedBy = multi-user.target To run entrypoint.sh as a \u201cpreconfigure\u201d script, modify the script by commenting out or removing the stanzas following the OPTIONAL for BYOE comments in the script. This will prevent syslog-ng from being launched by the script. Then create the sc4s unit file /lib/systemd/system/syslog-ng.service and add the following content: [Unit] Description = System Logger Daemon Documentation = man:syslog-ng(8) After = network.target [Service] Type = notify ExecStart = /usr/sbin/syslog-ng -F $SYSLOGNG_OPTS -p /var/run/syslogd.pid ExecReload = /bin/kill -HUP $MAINPID EnvironmentFile = -/etc/default/syslog-ng EnvironmentFile = -/etc/sysconfig/syslog-ng StandardOutput = journal StandardError = journal Restart = on-failure [Install] WantedBy = multi-user.target Create the file /etc/syslog-ng/env_file and add the following environment variables (adjusting the URL/TOKEN appropriately): # The following \"path\" variables can differ from the container defaults specified in the entrypoint.sh script. # These are *optional* for most BYOE installations, which do not differ from the install location used. # in the container version of SC4S. Failure to properly set these will cause startup failure. #SC4S_ETC=/etc/syslog-ng #SC4S_VAR=/etc/syslog-ng/var #SC4S_BIN=/bin #SC4S_SBIN=/usr/sbin #SC4S_TLS=/etc/syslog-ng/tls # General Options SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // splunk . smg . aws : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = a778f63a - 5 dff - 4e3 c - a72c - a03183659e94 # Uncomment the following line if using untrusted (self-signed) SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no Reload systemctl and restart syslog-ng (example here is shown for systemd option (1) above) sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s Configure SC4S Listening Ports \u00b6 Most enterprises use UDP/TCP port 514 as the default as their main listening port for syslog \u201csoup\u201d traffic, and TCP port 6514 for TLS. The standard SC4S configuration reflect these defaults. These defaults can be changed by adding the following additional environment variables with appropriate values to the env_file above: SC4S_LISTEN_DEFAULT_TCP_PORT=514 SC4S_LISTEN_DEFAULT_UDP_PORT=514 SC4S_LISTEN_DEFAULT_RFC6587_PORT=601 SC4S_LISTEN_DEFAULT_RFC5426_PORT=601 SC4S_LISTEN_DEFAULT_RFC5425_PORT=5425 SC4S_LISTEN_DEFAULT_TLS_PORT=6514 Dedicated (Unique) Listening Ports \u00b6 For certain source technologies, categorization by message content is impossible due to the lack of a unique \u201cfingerprint\u201d in the data. In other cases, a unique listening port is required for certain devices due to network requirements in the enterprise. For collection of such sources we provide a means of dedicating a unique listening port to a specific source. Refer to the \u201cSources\u201d documentation to identify the specific environment variables used to enable unique listening ports for the technology in use.","title":"Bring your own Envionment"},{"location":"gettingstarted/byoe-rhel8/#sc4s-bring-your-own-environment","text":"FOREWORD: The BYOE SC4S deliverable should be considered as a self/community supported option for SC4S deployment, and should be considered only by those with specific needs based on advanced understanding of syslog-ng architectures and linux/syslog-ng system administration and the ability to develop and automate testing in non-production environments. The container deliverable is the most often correct deliverable of SC4S for almost all enterprises. If you are simply trying to \u201cget syslog working\u201d, the turnkey, container approach described in the other runtime documents will be the fastest route to success. The \u201cBring Your Own Environment\u201d instructions that follow allow expert administrators to utilize the SC4S syslog-ng config files directly on the host OS running on a hardware server or virtual machine. Administrators must provide an appropriate host OS (RHEL 8 used in this document) as well as an up-to-date syslog-ng installation either built from source (not documented here) or installed from community-built RPMs. Modification of the base configuration will be required for most customer environments due to enterprise infrastructure variations. Once installed preparing an upgrade requires evaluation of the current environment compared to this reference then developing and testing a installation specific install plan. This activity is the responsibility of the administrator. NOTE: Installing or modifying system configurations can have unexpected consequences, and advanced linux system administration and syslog-ng configuration experience is assumed when using the BYOE version of SC4S. NOTE: Do not depend on the distribution-supplied version of syslog-ng, as it will likely be far too old. Read this explanation for the reason why syslog-ng builds are so dated in almost all RHEL/Debian distributions.","title":"SC4S \"Bring Your Own Environment\""},{"location":"gettingstarted/byoe-rhel8/#byoe-installation-instructions","text":"These installation instructions assume a recent RHEL or CentOS-based release. Minor adjustments may have to be made for Debian/Ubuntu. In addition, almost all pre-compiled binaries for syslog-ng assume installation in /etc/syslog-ng ; these instructions will reflect that. The following installation instructions are summarized from a blog maintained by a developer at One Identity (formerly Balabit), who is the owner of the syslog-ng Open Source project. It is always advisable to review the blog for the latest changes to the repo(s), as changes here are quite dynamic. Install CentOS or RHEL 8.0 Enable EPEL (Centos 8) dnf install 'dnf-command(copr)' -y dnf install epel-release -y dnf copr enable czanik/syslog-ng336 -y dnf install syslog-ng syslog-ng-python syslog-ng-http python3-pip gcc python3-devel -y Disable the distro-supplied syslog-ng unit file, as the syslog-ng process configured here will run as the sc4s service. rsyslog will continue to be the system logger, but should be left enabled only if it is configured to not listen on the same ports as sc4s. sc4s BYOE can be configured to provide local logging as well if desired. sudo systemctl stop syslog-ng sudo systemctl disable syslog-ng Download the latest bare_metal.tar from releases on github and untar the package in /etc/syslog-ng using the command example below. NOTE: The wget process below will unpack a tarball with the sc4s version of the syslog-ng config files in the standard /etc/syslog-ng location, and will overwrite existing content. Ensure that any previous configurations of syslog-ng are saved if needed prior to executing the download step. NOTE: At the time of writing, the latest major release is v1.33 . The latest release is typically listed first on the page above, unless there is an -alpha , -beta , or -rc release that is newer (which will be clearly indicated). For production use, select the latest that does not have an -rc , -alpha , or -beta suffix. sudo wget -c https://github.com/splunk/splunk-connect-for-syslog/releases/download//baremetal.tar -O - | sudo tar -x -C /etc/syslog-ng Install python requirements sudo pip3 install -r /etc/syslog-ng/requirements.txt (Optional, for monitoring): Install goss and confirm that the version is v0.3.16 or newer. goss installs in /usr/local/bin by default, so ensure that 1) entrypoint.sh is modified to include /usr/local/bin in the full path, or 2) move the goss binary to /bin or /usr/bin . curl - L https : // github . com / aelsabbahy / goss / releases / latest / download / goss - linux - amd64 - o / usr / local / bin / goss chmod + rx / usr / local / bin / goss curl - L https : // github . com / aelsabbahy / goss / releases / latest / download / dgoss - o / usr / local / bin / dgoss # Alternatively, using the latest # curl -L https://raw.githubusercontent.com/aelsabbahy/goss/latest/extras/dgoss/dgoss -o /usr/local/bin/dgoss chmod + rx / usr / local / bin / dgoss There are two main options for running SC4S via systemd, the choice of which largely depends on administrator preference and orchestration methodology: 1) the entrypoint.sh script (identical to that used in the container) can be run directly via systemd, or 2) the script can be altered to preconfigure SC4S (after which only the syslog-ng are run via systemd). These are by no means the only ways to run BYOE \u2013 as the name implies, the method you choose will be based on your custom needs. To run the entrypoint.sh script directly in systemd, create the sc4s unit file /lib/systemd/system/sc4s.service and add the following content: [Unit] Description = SC4S Syslog Daemon Documentation = https://splunk-connect-for-syslog.readthedocs.io/en/latest/ Wants = network.target network-online.target After = network.target network-online.target [Service] Type = simple ExecStart = /etc/syslog-ng/entrypoint.sh ExecReload = /bin/kill -HUP $MAINPID EnvironmentFile = /etc/syslog-ng/env_file StandardOutput = journal StandardError = journal Restart = on-abnormal [Install] WantedBy = multi-user.target To run entrypoint.sh as a \u201cpreconfigure\u201d script, modify the script by commenting out or removing the stanzas following the OPTIONAL for BYOE comments in the script. This will prevent syslog-ng from being launched by the script. Then create the sc4s unit file /lib/systemd/system/syslog-ng.service and add the following content: [Unit] Description = System Logger Daemon Documentation = man:syslog-ng(8) After = network.target [Service] Type = notify ExecStart = /usr/sbin/syslog-ng -F $SYSLOGNG_OPTS -p /var/run/syslogd.pid ExecReload = /bin/kill -HUP $MAINPID EnvironmentFile = -/etc/default/syslog-ng EnvironmentFile = -/etc/sysconfig/syslog-ng StandardOutput = journal StandardError = journal Restart = on-failure [Install] WantedBy = multi-user.target Create the file /etc/syslog-ng/env_file and add the following environment variables (adjusting the URL/TOKEN appropriately): # The following \"path\" variables can differ from the container defaults specified in the entrypoint.sh script. # These are *optional* for most BYOE installations, which do not differ from the install location used. # in the container version of SC4S. Failure to properly set these will cause startup failure. #SC4S_ETC=/etc/syslog-ng #SC4S_VAR=/etc/syslog-ng/var #SC4S_BIN=/bin #SC4S_SBIN=/usr/sbin #SC4S_TLS=/etc/syslog-ng/tls # General Options SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // splunk . smg . aws : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = a778f63a - 5 dff - 4e3 c - a72c - a03183659e94 # Uncomment the following line if using untrusted (self-signed) SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no Reload systemctl and restart syslog-ng (example here is shown for systemd option (1) above) sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s","title":"BYOE Installation Instructions"},{"location":"gettingstarted/byoe-rhel8/#configure-sc4s-listening-ports","text":"Most enterprises use UDP/TCP port 514 as the default as their main listening port for syslog \u201csoup\u201d traffic, and TCP port 6514 for TLS. The standard SC4S configuration reflect these defaults. These defaults can be changed by adding the following additional environment variables with appropriate values to the env_file above: SC4S_LISTEN_DEFAULT_TCP_PORT=514 SC4S_LISTEN_DEFAULT_UDP_PORT=514 SC4S_LISTEN_DEFAULT_RFC6587_PORT=601 SC4S_LISTEN_DEFAULT_RFC5426_PORT=601 SC4S_LISTEN_DEFAULT_RFC5425_PORT=5425 SC4S_LISTEN_DEFAULT_TLS_PORT=6514","title":"Configure SC4S Listening Ports"},{"location":"gettingstarted/byoe-rhel8/#dedicated-unique-listening-ports","text":"For certain source technologies, categorization by message content is impossible due to the lack of a unique \u201cfingerprint\u201d in the data. In other cases, a unique listening port is required for certain devices due to network requirements in the enterprise. For collection of such sources we provide a means of dedicating a unique listening port to a specific source. Refer to the \u201cSources\u201d documentation to identify the specific environment variables used to enable unique listening ports for the technology in use.","title":"Dedicated (Unique) Listening Ports"},{"location":"gettingstarted/create-parser/","text":"Create a parser \u00b6 The following is a step-by-step guide for adding new parsers. Why create a parser? \u00b6 Splunk Connect for Syslog can offload Splunk Indexers by performing operations that normally would have been done during index time, including linebreaking, source/sourcetype setting, and timestamping. Creating a parser also reduces the need of using corresponding add-ons on indexers. Before you start \u00b6 Make sure you have read contribution standards . For more background information on how filters and parser work, and what suits you best, read about sources onboarding . Prepare your environment . Create a new branch in the repository where you will apply your changes. Start with a raw log message \u00b6 If you already have a raw log message, you can skip this step. Otherwise, you need to extract one to have something to work with. You can do this in multiple ways; here is a brief description of two of them: tcpdump \u00b6 You can use the tcpdump command to get incoming raw messages on a given port of your server. tcpdump -n -s 0 -S -i any -v port 8088 tcpdump: listening on any, link-type LINUX_SLL ( Linux cooked ) , capture size 262144 bytes 09 :54:26.051644 IP ( tos 0x0, ttl 64 , id 29465 , offset 0 , flags [ DF ] , proto UDP ( 17 ) , length 466 ) 10 .202.22.239.41151 > 10 .202.33.242.syslog: SYSLOG, length: 438 Facility local0 ( 16 ) , Severity info ( 6 ) Msg: 2022 -04-28T16:16:15.466731-04:00 NTNX-21SM6M510425-B-CVM audispd [ 32075 ] : node = ntnx-21sm6m510425-b-cvm type = SYSCALL msg = audit ( 1651176975 .464:2828209 ) : arch = c000003e syscall = 2 success = yes exit = 6 a0 = 7f2955ac932e a1 = 2 a2 = 3e8 a3 = 3 items = 1 ppid = 29680 pid = 4684 auid = 1000 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty =( none ) ses = 964698 comm = \u201csshd\u201d exe = \u201c/usr/sbin/sshd\u201d subj = system_u:system_r:sshd_t:s0-s0:c0.c1023 key = \u201clogins\u201d \\0 x0a Wireshark \u00b6 Or you can read the logs using Wireshark from the .pcap file. From Wireshark go to Statistics->Conversations, then click on \u2018Follow Stream\u2019. Once you get your stream of messages, copy one of them. NOTE: In UDP there usually will not be any message separators. Create a unit test \u00b6 It is recommended to use the existing test case that is the most similar to your use case. The naming convention is test_vendor_product.py Afterwards, you need to make sure that your log is being parsed correctly by creating a test case. Assuming you have a raw message like this: < 14 >1 2022 -03-30T11:17:11.900862-04:00 host - - - - Carbon Black App Control event: text = \"File 'c:\\program files\\azure advanced threat protection sensor\\2.175.15073.51407\\winpcap\\x86\\packet.dll' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode.\" type = \"Policy Enforcement\" subtype = \"Execution block (unapproved file)\" hostname = \"CORP\\USER\" username = \"NT AUTHORITY\\SYSTEM\" date = \"3/30/2022 3:16:40 PM\" ip_address = \"10.0.0.3\" process = \"c:\\program files\\azure advanced threat protection sensor\\2.175.15073.51407\\microsoft.tri.sensor.updater.exe\" file_path = \"c:\\program files\\azure advanced threat protection sensor\\2.175.15073.51407\\winpcap\\x86\\packet.dll\" file_name = \"packet.dll\" file_hash = \"c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363\" policy = \"High Enforcement - Domain Controllers\" rule_name = \"Report read-only memory map operations on unapproved executables by .NET applications\" process_key = \"00000433-0000-23d8-01d8-44491b26f203\" server_version = \"8.5.4.3\" file_trust = \"-2\" file_threat = \"-2\" process_trust = \"-2\" process_threat = \"-2\" prevalence = \"50\" You need to: * make sure that the message is a valid python string, where escape characters are placed correctly. * anonymize the data. * rename functions. * update index, and sourcetype fields. * extract replace values with field names in test string. Here you can see proper test case for Vmware Carbonblack Protect device: # Copyright 2019 Splunk, Inc. # # Use of this source code is governed by a BSD-2-clause-style # license that can be found in the LICENSE-BSD2 file or at # https://opensource.org/licenses/BSD-2-Clause import shortuuid from jinja2 import Environment , select_autoescape from .sendmessage import sendsingle from .splunkutils import splunk_single from .timeutils import time_operations import datetime env = Environment ( autoescape = select_autoescape ( default_for_string = False )) # Below is a raw message # <14>1 2022-03-30T11:17:11.900862-04:00 host - - - - Carbon Black App Control event: text=\"File 'c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode.\" type=\"Policy Enforcement\" subtype=\"Execution block (unapproved file)\" hostname=\"CORP\\USER\" username=\"NT AUTHORITY\\SYSTEM\" date=\"3/30/2022 3:16:40 PM\" ip_address=\"0.0.0.0\" process=\"c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\microsoft.tri.sensor.updater.exe\" file_path=\"c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll\" file_name=\"packet.dll\" file_hash=\"c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363\" policy=\"High Enforcement - Domain Controllers\" rule_name=\"Report read-only memory map operations on unapproved executables by .NET applications\" process_key=\"00000433-0000-23d8-01d8-44491b26f203\" server_version=\"0.0.0.0\" file_trust=\"-2\" file_threat=\"-2\" process_trust=\"-2\" process_threat=\"-2\" prevalence=\"50\" # Don't forget to rename the function def test_vmware_carbonblack_protect ( record_property , setup_splunk , setup_sc4s ): host = f \" { shortuuid . ShortUUID () . random ( length = 5 ) . lower () } - { shortuuid . ShortUUID () . random ( length = 5 ) . lower () } \" dt = datetime . datetime . now () iso , bsd , _ , _ , _ , _ , epoch = time_operations ( dt ) # Tune time functions for Checkpoint epoch = epoch [: - 3 ] mt = env . from_string ( # Extract mark, iso timestamp and host fields # Make sure all needed characters are escaped # If string contains single quotes wrap it in double qutes '{{ mark }} {{ iso }} {{ host }} - - - - Carbon Black App Control event: text=\"File \\' c: \\\\ program files \\\\ azure advanced threat protection sensor \\\\ 0.0.0.0 \\\\ winpcap \\\\ x86 \\\\ packet.dll \\' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode.\" type=\"Policy Enforcement\" subtype=\"Execution block (unapproved file)\" hostname=\"CORP \\\\ USER\" username=\"NT AUTHORITY \\\\ SYSTEM\" date=\"3/30/2022 3:16:40 PM\" ip_address=\"0.0.0.0\" process=\"c: \\\\ program files \\\\ azure advanced threat protection sensor \\\\ 0.0.0.0 \\\\ microsoft.tri.sensor.updater.exe\" file_path=\"c: \\\\ program files \\\\ azure advanced threat protection sensor \\\\ 0.0.0.0 \\\\ winpcap \\\\ x86 \\\\ packet.dll\" file_name=\"packet.dll\" file_hash=\"c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363\" policy=\"High Enforcement - Domain Controllers\" rule_name=\"Report read-only memory map operations on unapproved executables by .NET applications\" process_key=\"00000433-0000-23d8-01d8-44491b26f203\" server_version=\"0.0.0.0\" file_trust=\"-2\" file_threat=\"-2\" process_trust=\"-2\" process_threat=\"-2\" prevalence=\"50\"' ) message = mt . render ( mark = \"<134>1\" , host = host , bsd = bsd , iso = iso , epoch = epoch ) sendsingle ( message , setup_sc4s [ 0 ], setup_sc4s [ 1 ][ 514 ]) st = env . from_string ( # Make sure you changed index and sourcetype properly 'search _time={{ epoch }} index=epintel host=\"{{ host }}\" sourcetype=\"vmware:cb:protect\"' ) search = st . render ( epoch = epoch , bsd = bsd , host = host ) result_count , _ = splunk_single ( setup_splunk , search ) record_property ( \"host\" , host ) record_property ( \"resultCount\" , result_count ) record_property ( \"message\" , message ) assert result_count == 1 NOTE: It is a known issue that the test case will timeout when it starts. When it fails, just re-run it. Now run the test: poetry run pytest test/test_vendor_product.py This test will spin up a Splunk instance on your localhost and forward the parsed message there. Now the parsed log should appear in Splunk: As you can see, at this moment, the message is being parsed as a generic *nix:syslog sourcetype. To assign it to the proper index and sourcetype you will need an actual parser. So far we have ensured that the fields in the messages are properly recognized. Create a parser \u00b6 Your parser needs to be declared in package/etc/conf.d/conflib . The naming convention is app-type-vendor_product.conf . If there is a similar parser existing already you can use it as a reference. In the parser, make sure you assign the proper sourcetype, index, vendor, product, and template. The template tells how your message should be parsed before sending it to Splunk. The most basic configuration will only forward raw log with correct metadata. Here is an example: block parser app-syslog-vmware_cb-protect () { channel { rewrite { r_set_splunk_dest_default ( index ( \"epintel\" ) sourcetype ( 'vmware:cb:protect' ) vendor ( \"vmware\" ) product ( \"cb-protect\" ) template ( \"t_msg_only\" ) ) ; } ; } ; } ; application app-syslog-vmware_cb-protect [ sc4s-syslog ] { filter { message ( 'Carbon Black App Control event: ' type ( string ) flags ( prefix )) ; } ; parser { app-syslog-vmware_cb-protect () ; } ; } ; Now all messages that start with the string Carbon Black App Control event: will be routed to the proper index and assigned the given sourcetype: For more info about using message filtering go to sources documentation. If you wish to apply more transformations you will need to add the parser: block parser app-syslog-vmware_cb-protect () { channel { rewrite { r_set_splunk_dest_default ( index ( \"epintel\" ) sourcetype ( 'vmware:cb:protect' ) vendor ( \"vmware\" ) product ( \"cb-protect\" ) template ( \"t_kv_values\" ) ) ; } ; parser { csv-parser ( delimiters ( chars ( '' ) strings ( ': ' )) columns ( 'header' , 'message' ) prefix ( '.tmp.' ) flags ( greedy, drop-invalid )) ; kv-parser ( prefix ( \".values.\" ) pair-separator ( \" \" ) template ( '${.tmp.message}' ) ) ; } ; } ; } ; application app-syslog-vmware_cb-protect [ sc4s-syslog ] { filter { message ( 'Carbon Black App Control event: ' type ( string ) flags ( prefix )) ; } ; parser { app-syslog-vmware_cb-protect () ; } ; } ; In this case, we will extract all fields that are nested in the raw log message first by using csv-parser to split Carbon Black App Control event and the rest of message as a two separate fields named header and message . On top of that, we will use kv-parser to extract all key-value pairs in the message field. The best way to test your parser is to run a previously created test case. If you need more debugging, use docker ps to see running containers, and docker logs to see what\u2019s happening to the parsed message. Once you are content with the results, you can commit your changes and open pull request.","title":"Create a parser"},{"location":"gettingstarted/create-parser/#create-a-parser","text":"The following is a step-by-step guide for adding new parsers.","title":"Create a parser"},{"location":"gettingstarted/create-parser/#why-create-a-parser","text":"Splunk Connect for Syslog can offload Splunk Indexers by performing operations that normally would have been done during index time, including linebreaking, source/sourcetype setting, and timestamping. Creating a parser also reduces the need of using corresponding add-ons on indexers.","title":"Why create a parser?"},{"location":"gettingstarted/create-parser/#before-you-start","text":"Make sure you have read contribution standards . For more background information on how filters and parser work, and what suits you best, read about sources onboarding . Prepare your environment . Create a new branch in the repository where you will apply your changes.","title":"Before you start"},{"location":"gettingstarted/create-parser/#start-with-a-raw-log-message","text":"If you already have a raw log message, you can skip this step. Otherwise, you need to extract one to have something to work with. You can do this in multiple ways; here is a brief description of two of them:","title":"Start with a raw log message"},{"location":"gettingstarted/create-parser/#tcpdump","text":"You can use the tcpdump command to get incoming raw messages on a given port of your server. tcpdump -n -s 0 -S -i any -v port 8088 tcpdump: listening on any, link-type LINUX_SLL ( Linux cooked ) , capture size 262144 bytes 09 :54:26.051644 IP ( tos 0x0, ttl 64 , id 29465 , offset 0 , flags [ DF ] , proto UDP ( 17 ) , length 466 ) 10 .202.22.239.41151 > 10 .202.33.242.syslog: SYSLOG, length: 438 Facility local0 ( 16 ) , Severity info ( 6 ) Msg: 2022 -04-28T16:16:15.466731-04:00 NTNX-21SM6M510425-B-CVM audispd [ 32075 ] : node = ntnx-21sm6m510425-b-cvm type = SYSCALL msg = audit ( 1651176975 .464:2828209 ) : arch = c000003e syscall = 2 success = yes exit = 6 a0 = 7f2955ac932e a1 = 2 a2 = 3e8 a3 = 3 items = 1 ppid = 29680 pid = 4684 auid = 1000 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty =( none ) ses = 964698 comm = \u201csshd\u201d exe = \u201c/usr/sbin/sshd\u201d subj = system_u:system_r:sshd_t:s0-s0:c0.c1023 key = \u201clogins\u201d \\0 x0a","title":"tcpdump"},{"location":"gettingstarted/create-parser/#wireshark","text":"Or you can read the logs using Wireshark from the .pcap file. From Wireshark go to Statistics->Conversations, then click on \u2018Follow Stream\u2019. Once you get your stream of messages, copy one of them. NOTE: In UDP there usually will not be any message separators.","title":"Wireshark"},{"location":"gettingstarted/create-parser/#create-a-unit-test","text":"It is recommended to use the existing test case that is the most similar to your use case. The naming convention is test_vendor_product.py Afterwards, you need to make sure that your log is being parsed correctly by creating a test case. Assuming you have a raw message like this: < 14 >1 2022 -03-30T11:17:11.900862-04:00 host - - - - Carbon Black App Control event: text = \"File 'c:\\program files\\azure advanced threat protection sensor\\2.175.15073.51407\\winpcap\\x86\\packet.dll' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode.\" type = \"Policy Enforcement\" subtype = \"Execution block (unapproved file)\" hostname = \"CORP\\USER\" username = \"NT AUTHORITY\\SYSTEM\" date = \"3/30/2022 3:16:40 PM\" ip_address = \"10.0.0.3\" process = \"c:\\program files\\azure advanced threat protection sensor\\2.175.15073.51407\\microsoft.tri.sensor.updater.exe\" file_path = \"c:\\program files\\azure advanced threat protection sensor\\2.175.15073.51407\\winpcap\\x86\\packet.dll\" file_name = \"packet.dll\" file_hash = \"c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363\" policy = \"High Enforcement - Domain Controllers\" rule_name = \"Report read-only memory map operations on unapproved executables by .NET applications\" process_key = \"00000433-0000-23d8-01d8-44491b26f203\" server_version = \"8.5.4.3\" file_trust = \"-2\" file_threat = \"-2\" process_trust = \"-2\" process_threat = \"-2\" prevalence = \"50\" You need to: * make sure that the message is a valid python string, where escape characters are placed correctly. * anonymize the data. * rename functions. * update index, and sourcetype fields. * extract replace values with field names in test string. Here you can see proper test case for Vmware Carbonblack Protect device: # Copyright 2019 Splunk, Inc. # # Use of this source code is governed by a BSD-2-clause-style # license that can be found in the LICENSE-BSD2 file or at # https://opensource.org/licenses/BSD-2-Clause import shortuuid from jinja2 import Environment , select_autoescape from .sendmessage import sendsingle from .splunkutils import splunk_single from .timeutils import time_operations import datetime env = Environment ( autoescape = select_autoescape ( default_for_string = False )) # Below is a raw message # <14>1 2022-03-30T11:17:11.900862-04:00 host - - - - Carbon Black App Control event: text=\"File 'c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode.\" type=\"Policy Enforcement\" subtype=\"Execution block (unapproved file)\" hostname=\"CORP\\USER\" username=\"NT AUTHORITY\\SYSTEM\" date=\"3/30/2022 3:16:40 PM\" ip_address=\"0.0.0.0\" process=\"c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\microsoft.tri.sensor.updater.exe\" file_path=\"c:\\program files\\azure advanced threat protection sensor\\0.0.0.0\\winpcap\\x86\\packet.dll\" file_name=\"packet.dll\" file_hash=\"c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363\" policy=\"High Enforcement - Domain Controllers\" rule_name=\"Report read-only memory map operations on unapproved executables by .NET applications\" process_key=\"00000433-0000-23d8-01d8-44491b26f203\" server_version=\"0.0.0.0\" file_trust=\"-2\" file_threat=\"-2\" process_trust=\"-2\" process_threat=\"-2\" prevalence=\"50\" # Don't forget to rename the function def test_vmware_carbonblack_protect ( record_property , setup_splunk , setup_sc4s ): host = f \" { shortuuid . ShortUUID () . random ( length = 5 ) . lower () } - { shortuuid . ShortUUID () . random ( length = 5 ) . lower () } \" dt = datetime . datetime . now () iso , bsd , _ , _ , _ , _ , epoch = time_operations ( dt ) # Tune time functions for Checkpoint epoch = epoch [: - 3 ] mt = env . from_string ( # Extract mark, iso timestamp and host fields # Make sure all needed characters are escaped # If string contains single quotes wrap it in double qutes '{{ mark }} {{ iso }} {{ host }} - - - - Carbon Black App Control event: text=\"File \\' c: \\\\ program files \\\\ azure advanced threat protection sensor \\\\ 0.0.0.0 \\\\ winpcap \\\\ x86 \\\\ packet.dll \\' [c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363] would have blocked if the rule was not in Report Only mode.\" type=\"Policy Enforcement\" subtype=\"Execution block (unapproved file)\" hostname=\"CORP \\\\ USER\" username=\"NT AUTHORITY \\\\ SYSTEM\" date=\"3/30/2022 3:16:40 PM\" ip_address=\"0.0.0.0\" process=\"c: \\\\ program files \\\\ azure advanced threat protection sensor \\\\ 0.0.0.0 \\\\ microsoft.tri.sensor.updater.exe\" file_path=\"c: \\\\ program files \\\\ azure advanced threat protection sensor \\\\ 0.0.0.0 \\\\ winpcap \\\\ x86 \\\\ packet.dll\" file_name=\"packet.dll\" file_hash=\"c4e671bf409076a6bf0897e8a11e6f1366d4b21bf742c5e5e116059c9b571363\" policy=\"High Enforcement - Domain Controllers\" rule_name=\"Report read-only memory map operations on unapproved executables by .NET applications\" process_key=\"00000433-0000-23d8-01d8-44491b26f203\" server_version=\"0.0.0.0\" file_trust=\"-2\" file_threat=\"-2\" process_trust=\"-2\" process_threat=\"-2\" prevalence=\"50\"' ) message = mt . render ( mark = \"<134>1\" , host = host , bsd = bsd , iso = iso , epoch = epoch ) sendsingle ( message , setup_sc4s [ 0 ], setup_sc4s [ 1 ][ 514 ]) st = env . from_string ( # Make sure you changed index and sourcetype properly 'search _time={{ epoch }} index=epintel host=\"{{ host }}\" sourcetype=\"vmware:cb:protect\"' ) search = st . render ( epoch = epoch , bsd = bsd , host = host ) result_count , _ = splunk_single ( setup_splunk , search ) record_property ( \"host\" , host ) record_property ( \"resultCount\" , result_count ) record_property ( \"message\" , message ) assert result_count == 1 NOTE: It is a known issue that the test case will timeout when it starts. When it fails, just re-run it. Now run the test: poetry run pytest test/test_vendor_product.py This test will spin up a Splunk instance on your localhost and forward the parsed message there. Now the parsed log should appear in Splunk: As you can see, at this moment, the message is being parsed as a generic *nix:syslog sourcetype. To assign it to the proper index and sourcetype you will need an actual parser. So far we have ensured that the fields in the messages are properly recognized.","title":"Create a unit test"},{"location":"gettingstarted/create-parser/#create-a-parser_1","text":"Your parser needs to be declared in package/etc/conf.d/conflib . The naming convention is app-type-vendor_product.conf . If there is a similar parser existing already you can use it as a reference. In the parser, make sure you assign the proper sourcetype, index, vendor, product, and template. The template tells how your message should be parsed before sending it to Splunk. The most basic configuration will only forward raw log with correct metadata. Here is an example: block parser app-syslog-vmware_cb-protect () { channel { rewrite { r_set_splunk_dest_default ( index ( \"epintel\" ) sourcetype ( 'vmware:cb:protect' ) vendor ( \"vmware\" ) product ( \"cb-protect\" ) template ( \"t_msg_only\" ) ) ; } ; } ; } ; application app-syslog-vmware_cb-protect [ sc4s-syslog ] { filter { message ( 'Carbon Black App Control event: ' type ( string ) flags ( prefix )) ; } ; parser { app-syslog-vmware_cb-protect () ; } ; } ; Now all messages that start with the string Carbon Black App Control event: will be routed to the proper index and assigned the given sourcetype: For more info about using message filtering go to sources documentation. If you wish to apply more transformations you will need to add the parser: block parser app-syslog-vmware_cb-protect () { channel { rewrite { r_set_splunk_dest_default ( index ( \"epintel\" ) sourcetype ( 'vmware:cb:protect' ) vendor ( \"vmware\" ) product ( \"cb-protect\" ) template ( \"t_kv_values\" ) ) ; } ; parser { csv-parser ( delimiters ( chars ( '' ) strings ( ': ' )) columns ( 'header' , 'message' ) prefix ( '.tmp.' ) flags ( greedy, drop-invalid )) ; kv-parser ( prefix ( \".values.\" ) pair-separator ( \" \" ) template ( '${.tmp.message}' ) ) ; } ; } ; } ; application app-syslog-vmware_cb-protect [ sc4s-syslog ] { filter { message ( 'Carbon Black App Control event: ' type ( string ) flags ( prefix )) ; } ; parser { app-syslog-vmware_cb-protect () ; } ; } ; In this case, we will extract all fields that are nested in the raw log message first by using csv-parser to split Carbon Black App Control event and the rest of message as a two separate fields named header and message . On top of that, we will use kv-parser to extract all key-value pairs in the message field. The best way to test your parser is to run a previously created test case. If you need more debugging, use docker ps to see running containers, and docker logs to see what\u2019s happening to the parsed message. Once you are content with the results, you can commit your changes and open pull request.","title":"Create a parser"},{"location":"gettingstarted/docker-compose-MacOS/","text":"Install Docker Desktop for MacOS \u00b6 Refer to Installation SC4S Initial Configuration \u00b6 SC4S can be run with docker-compose or directly from the CLI with the simple docker run command. Both options are outlined below. Create a directory on the server for local configurations and disk buffering. This should be available to all administrators, for example: /opt/sc4s/ (Optional for docker-compose ) Create a docker-compose.yml file in the directory created above, based on the template below: IMPORTANT: Always use the latest compose file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the compose template file below (e.g. suggested mount points) are incorporated in production prior to relaunching via compose. version : \"3.7\" services : sc4s : deploy : replicas : 2 restart_policy : condition : on-failure image : ghcr.io/splunk/splunk-connect-for-syslog/container2:2 ports : - target : 514 published : 514 protocol : tcp - target : 514 published : 514 protocol : udp - target : 601 published : 601 protocol : tcp - target : 6514 published : 6514 protocol : tcp env_file : - /opt/sc4s/env_file volumes : - /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z - splunk-sc4s-var:/var/lib/syslog-ng # Uncomment the following line if local disk archiving is desired # - /opt/sc4s/archive:/var/lib/syslog-ng/archive:z # Map location of TLS custom TLS # - /opt/sc4s/tls:/etc/syslog-ng/tls:z volumes : splunk-sc4s-var : Set /opt/sc4s folder as shared in Docker (Settings -> Resources -> File Sharing) Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo docker volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in /var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. IMPORTANT: When creating the directories below, ensure the directories created match the volume mounts specified in the docker-compose.yml file (if used). Failure to do this will cause SC4S to abort at startup. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above. Dedicated (Unique) Listening Ports \u00b6 NOTE: Container networking differs on MacOS compared to that for linux. On Docker Desktop, there is no \u201chost\u201d networking driver, so NAT networking must be used. For this reason, each listening port on the container must be mapped to a listening port on the host. These port mappings are configured in the docker-compose.yml file or directly as a runtime option when run out of the CLI. Be sure to update the docker-compose.yml file or CLI arguments when adding listening ports for new data sources. Follow these steps to configure unique ports: Modify the /opt/sc4s/env_file file to include the port-specific environment variable(s). Refer to the \u201cSources\u201d documentation to identify the specific environment variables that are mapped to each data source vendor/technology. (Optional for docker-compose ) The docker compose file used to start the SC4S container needs to be modified as well to reflect the additional listening ports configured by the environment variable(s) added above. The docker compose file can be amended with additional target stanzas in the ports section of the file (after the default ports). For example, the following additional target and published lines provide for 21 additional technology-specific UDP and TCP ports: - target: 5000-5020 published: 5000-5020 protocol: tcp - target: 5000-5020 published: 5000-5020 protocol: udp Restart SC4S using the command in the \u201cStart/Restart SC4S\u201d section below. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration . Start/Restart SC4S \u00b6 You can use the following command to directly start SC4S if you are not using docker-compose . Be sure to map the listening ports ( -p arguments) according to your needs: /usr/bin/podman run -p 514:514 -p 514:514/udp -p 6514:6514 -p 5000-5020:5000-5020 -p 5000-5020:5000-5020/udp \\ --env-file=/opt/sc4s/env_file \\ --name SC4S \\ --rm splunk/scs:latest If you are using docker-compose , from the catalog where you created compose file execute: docker-compose up Otherwise use docker-compose with -f flag pointing to the compose file docker-compose up -f /path/to/compose/file/docker-compose.yml Stop SC4S \u00b6 If the container is run directly from the CLI, simply stop the container using the docker stop command. If using docker-compose , execute: docker-compose down or docker-compose down -f /path/to/compose/file/docker-compose.yml Verify Proper Operation \u00b6 SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information.","title":"Docker Desktop + Compose (MacOS)"},{"location":"gettingstarted/docker-compose-MacOS/#install-docker-desktop-for-macos","text":"Refer to Installation","title":"Install Docker Desktop for MacOS"},{"location":"gettingstarted/docker-compose-MacOS/#sc4s-initial-configuration","text":"SC4S can be run with docker-compose or directly from the CLI with the simple docker run command. Both options are outlined below. Create a directory on the server for local configurations and disk buffering. This should be available to all administrators, for example: /opt/sc4s/ (Optional for docker-compose ) Create a docker-compose.yml file in the directory created above, based on the template below: IMPORTANT: Always use the latest compose file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the compose template file below (e.g. suggested mount points) are incorporated in production prior to relaunching via compose. version : \"3.7\" services : sc4s : deploy : replicas : 2 restart_policy : condition : on-failure image : ghcr.io/splunk/splunk-connect-for-syslog/container2:2 ports : - target : 514 published : 514 protocol : tcp - target : 514 published : 514 protocol : udp - target : 601 published : 601 protocol : tcp - target : 6514 published : 6514 protocol : tcp env_file : - /opt/sc4s/env_file volumes : - /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z - splunk-sc4s-var:/var/lib/syslog-ng # Uncomment the following line if local disk archiving is desired # - /opt/sc4s/archive:/var/lib/syslog-ng/archive:z # Map location of TLS custom TLS # - /opt/sc4s/tls:/etc/syslog-ng/tls:z volumes : splunk-sc4s-var : Set /opt/sc4s folder as shared in Docker (Settings -> Resources -> File Sharing) Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo docker volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in /var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. IMPORTANT: When creating the directories below, ensure the directories created match the volume mounts specified in the docker-compose.yml file (if used). Failure to do this will cause SC4S to abort at startup. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above.","title":"SC4S Initial Configuration"},{"location":"gettingstarted/docker-compose-MacOS/#dedicated-unique-listening-ports","text":"NOTE: Container networking differs on MacOS compared to that for linux. On Docker Desktop, there is no \u201chost\u201d networking driver, so NAT networking must be used. For this reason, each listening port on the container must be mapped to a listening port on the host. These port mappings are configured in the docker-compose.yml file or directly as a runtime option when run out of the CLI. Be sure to update the docker-compose.yml file or CLI arguments when adding listening ports for new data sources. Follow these steps to configure unique ports: Modify the /opt/sc4s/env_file file to include the port-specific environment variable(s). Refer to the \u201cSources\u201d documentation to identify the specific environment variables that are mapped to each data source vendor/technology. (Optional for docker-compose ) The docker compose file used to start the SC4S container needs to be modified as well to reflect the additional listening ports configured by the environment variable(s) added above. The docker compose file can be amended with additional target stanzas in the ports section of the file (after the default ports). For example, the following additional target and published lines provide for 21 additional technology-specific UDP and TCP ports: - target: 5000-5020 published: 5000-5020 protocol: tcp - target: 5000-5020 published: 5000-5020 protocol: udp Restart SC4S using the command in the \u201cStart/Restart SC4S\u201d section below. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration .","title":"Dedicated (Unique) Listening Ports"},{"location":"gettingstarted/docker-compose-MacOS/#startrestart-sc4s","text":"You can use the following command to directly start SC4S if you are not using docker-compose . Be sure to map the listening ports ( -p arguments) according to your needs: /usr/bin/podman run -p 514:514 -p 514:514/udp -p 6514:6514 -p 5000-5020:5000-5020 -p 5000-5020:5000-5020/udp \\ --env-file=/opt/sc4s/env_file \\ --name SC4S \\ --rm splunk/scs:latest If you are using docker-compose , from the catalog where you created compose file execute: docker-compose up Otherwise use docker-compose with -f flag pointing to the compose file docker-compose up -f /path/to/compose/file/docker-compose.yml","title":"Start/Restart SC4S"},{"location":"gettingstarted/docker-compose-MacOS/#stop-sc4s","text":"If the container is run directly from the CLI, simply stop the container using the docker stop command. If using docker-compose , execute: docker-compose down or docker-compose down -f /path/to/compose/file/docker-compose.yml","title":"Stop SC4S"},{"location":"gettingstarted/docker-compose-MacOS/#verify-proper-operation","text":"SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information.","title":"Verify Proper Operation"},{"location":"gettingstarted/docker-compose/","text":"Install Docker Desktop \u00b6 Refer to Installation SC4S Initial Configuration \u00b6 SC4S can be run with docker-compose or directly from the CLI with the simple docker run command. Both options are outlined below. Create a directory on the server for local configurations and disk buffering. This should be available to all administrators, for example: /opt/sc4s/ (Optional for docker-compose ) Create a docker-compose.yml file in the directory created above, based on the template below: IMPORTANT: Always use the latest compose file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the compose template file below (e.g. suggested mount points) are incorporated in production prior to relaunching via compose. version : \"3.7\" services : sc4s : deploy : replicas : 2 restart_policy : condition : on-failure image : ghcr.io/splunk/splunk-connect-for-syslog/container2:2 ports : - target : 514 published : 514 protocol : tcp - target : 514 published : 514 protocol : udp - target : 601 published : 601 protocol : tcp - target : 6514 published : 6514 protocol : tcp env_file : - /opt/sc4s/env_file volumes : - /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z - splunk-sc4s-var:/var/lib/syslog-ng # Uncomment the following line if local disk archiving is desired # - /opt/sc4s/archive:/var/lib/syslog-ng/archive:z # Map location of TLS custom TLS # - /opt/sc4s/tls:/etc/syslog-ng/tls:z volumes : splunk-sc4s-var : Set /opt/sc4s folder as shared in Docker (Settings -> Resources -> File Sharing) Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo docker volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in /var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. IMPORTANT: When creating the directories below, ensure the directories created match the volume mounts specified in the docker-compose.yml file (if used). Failure to do this will cause SC4S to abort at startup. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration . Start/Restart SC4S \u00b6 You can use the following command to directly start SC4S if you are not using docker-compose . Be sure to map the listening ports ( -p arguments) according to your needs: /usr/bin/podman run -p 514 :514 -p 514 :514/udp -p 6514 :6514 -p 5000 -5020:5000-5020 -p 5000 -5020:5000-5020/udp \\ --env-file = /opt/sc4s/env_file \\ --name SC4S \\ --rm splunk/scs:latest If you are using docker compose , from the catalog where you created compose file execute: docker compose up Otherwise use docker compose with -f flag pointing to the compose file docker compose up -f /path/to/compose/file/docker-compose.yml Stop SC4S \u00b6 If the container is run directly from the CLI, simply stop the container using the docker stop command. If using docker compose , execute: docker compose down or docker compose down -f /path/to/compose/file/docker-compose.yml Verify Proper Operation \u00b6 SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information.","title":"Docker Compose"},{"location":"gettingstarted/docker-compose/#install-docker-desktop","text":"Refer to Installation","title":"Install Docker Desktop"},{"location":"gettingstarted/docker-compose/#sc4s-initial-configuration","text":"SC4S can be run with docker-compose or directly from the CLI with the simple docker run command. Both options are outlined below. Create a directory on the server for local configurations and disk buffering. This should be available to all administrators, for example: /opt/sc4s/ (Optional for docker-compose ) Create a docker-compose.yml file in the directory created above, based on the template below: IMPORTANT: Always use the latest compose file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the compose template file below (e.g. suggested mount points) are incorporated in production prior to relaunching via compose. version : \"3.7\" services : sc4s : deploy : replicas : 2 restart_policy : condition : on-failure image : ghcr.io/splunk/splunk-connect-for-syslog/container2:2 ports : - target : 514 published : 514 protocol : tcp - target : 514 published : 514 protocol : udp - target : 601 published : 601 protocol : tcp - target : 6514 published : 6514 protocol : tcp env_file : - /opt/sc4s/env_file volumes : - /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z - splunk-sc4s-var:/var/lib/syslog-ng # Uncomment the following line if local disk archiving is desired # - /opt/sc4s/archive:/var/lib/syslog-ng/archive:z # Map location of TLS custom TLS # - /opt/sc4s/tls:/etc/syslog-ng/tls:z volumes : splunk-sc4s-var : Set /opt/sc4s folder as shared in Docker (Settings -> Resources -> File Sharing) Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo docker volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in /var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. IMPORTANT: When creating the directories below, ensure the directories created match the volume mounts specified in the docker-compose.yml file (if used). Failure to do this will cause SC4S to abort at startup. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration .","title":"SC4S Initial Configuration"},{"location":"gettingstarted/docker-compose/#startrestart-sc4s","text":"You can use the following command to directly start SC4S if you are not using docker-compose . Be sure to map the listening ports ( -p arguments) according to your needs: /usr/bin/podman run -p 514 :514 -p 514 :514/udp -p 6514 :6514 -p 5000 -5020:5000-5020 -p 5000 -5020:5000-5020/udp \\ --env-file = /opt/sc4s/env_file \\ --name SC4S \\ --rm splunk/scs:latest If you are using docker compose , from the catalog where you created compose file execute: docker compose up Otherwise use docker compose with -f flag pointing to the compose file docker compose up -f /path/to/compose/file/docker-compose.yml","title":"Start/Restart SC4S"},{"location":"gettingstarted/docker-compose/#stop-sc4s","text":"If the container is run directly from the CLI, simply stop the container using the docker stop command. If using docker compose , execute: docker compose down or docker compose down -f /path/to/compose/file/docker-compose.yml","title":"Stop SC4S"},{"location":"gettingstarted/docker-compose/#verify-proper-operation","text":"SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information.","title":"Verify Proper Operation"},{"location":"gettingstarted/docker-podman-offline/","text":"Offline Container Installation \u00b6 Follow these instructions to \u201cstage\u201d SC4S by downloading the container so that it can be loaded \u201cout of band\u201d on a host machine, such as an airgapped system, without internet connectivity. Download container image \u201coci_container.tgz\u201d from our Github Page . The following example downloads v1.12; replace the URL with the latest release or pre-release version as desired. sudo wget https : // github . com / splunk / splunk - connect - for - syslog / releases / download / v1 . 12.0 / oci_container . tar . gz Distribute the container to the airgapped host machine using an appropriate file transfer utility. Execute the following command, using docker or podman as appropriate < podman or docker > load < oci_container . tar . gz Note the container ID of the resultant load Loaded image : docker . pkg . github . com / splunk / splunk - connect - for - syslog / ci : 90196 f77f7525bc55b3b966b5fa1ce74861c0250 Use the container ID to create a local label < podman or docker > tag docker . pkg . github . com / splunk / splunk - connect - for - syslog / ci : 90196 f77f7525bc55b3b966b5fa1ce74861c0250 sc4slocal : latest Use this local label sc4slocal:latest in the relevant unit or yaml file to launch SC4S (see the runtime options above) by setting the SC4S_IMAGE environment variable in the unit file (example below), or the relevant image: tag if using Docker Compose/Swarm. Using this label will cause the runtime to select the locally loaded image, and will not attempt to obtain the container image via the internet. Environment=\"SC4S_IMAGE=sc4slocal:latest\" Remove the entry ExecStartPre=/usr/bin/docker pull $SC4S_IMAGE from the relevant unit file when using systemd, as an external connection to pull the container is no longer needed (or available).","title":"Docker&Podman offline installation"},{"location":"gettingstarted/docker-podman-offline/#offline-container-installation","text":"Follow these instructions to \u201cstage\u201d SC4S by downloading the container so that it can be loaded \u201cout of band\u201d on a host machine, such as an airgapped system, without internet connectivity. Download container image \u201coci_container.tgz\u201d from our Github Page . The following example downloads v1.12; replace the URL with the latest release or pre-release version as desired. sudo wget https : // github . com / splunk / splunk - connect - for - syslog / releases / download / v1 . 12.0 / oci_container . tar . gz Distribute the container to the airgapped host machine using an appropriate file transfer utility. Execute the following command, using docker or podman as appropriate < podman or docker > load < oci_container . tar . gz Note the container ID of the resultant load Loaded image : docker . pkg . github . com / splunk / splunk - connect - for - syslog / ci : 90196 f77f7525bc55b3b966b5fa1ce74861c0250 Use the container ID to create a local label < podman or docker > tag docker . pkg . github . com / splunk / splunk - connect - for - syslog / ci : 90196 f77f7525bc55b3b966b5fa1ce74861c0250 sc4slocal : latest Use this local label sc4slocal:latest in the relevant unit or yaml file to launch SC4S (see the runtime options above) by setting the SC4S_IMAGE environment variable in the unit file (example below), or the relevant image: tag if using Docker Compose/Swarm. Using this label will cause the runtime to select the locally loaded image, and will not attempt to obtain the container image via the internet. Environment=\"SC4S_IMAGE=sc4slocal:latest\" Remove the entry ExecStartPre=/usr/bin/docker pull $SC4S_IMAGE from the relevant unit file when using systemd, as an external connection to pull the container is no longer needed (or available).","title":"Offline Container Installation"},{"location":"gettingstarted/docker-systemd-general/","text":"Install Docker CE \u00b6 Refer to relevant installation guides: CentOS Ubuntu Debian NOTE: READ FIRST (IPv4 forwarding) Initial Setup \u00b6 IMPORTANT: Always use the latest unit file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the template unit file below (e.g. suggested mount points) are incorporated in production prior to relaunching via systemd. Create the systemd unit file /lib/systemd/system/sc4s.service based on the following template: Unit file \u00b6 [Unit] Description = SC4S Container Wants = NetworkManager.service network-online.target docker.service After = NetworkManager.service network-online.target docker.service Requires = docker.service [Install] WantedBy = multi-user.target [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\" # Required mount point for syslog-ng persist data (including disk buffer) Environment = \"SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng\" # Optional mount point for local overrides and configurations; see notes in docs Environment = \"SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z\" # Optional mount point for local disk archive (EWMM output) files Environment = \"SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z\" # Map location of TLS custom TLS Environment = \"SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z\" TimeoutStartSec = 0 ExecStartPre = /usr/bin/docker pull $SC4S_IMAGE # Note: /usr/bin/bash will not be valid path for all OS # when startup fails on running bash check if the path is correct ExecStartPre = /usr/bin/bash -c \"/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)\" ExecStart = /usr/bin/docker run \\ -e \"SC4S_CONTAINER_HOST = ${SC4SHOST}\" \\ -v \"$SC4S_PERSIST_MOUNT\" \\ -v \"$SC4S_LOCAL_MOUNT\" \\ -v \"$SC4S_ARCHIVE_MOUNT\" \\ -v \"$SC4S_TLS_MOUNT\" \\ --env-file = /opt/sc4s/env_file \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE Restart = on-abnormal Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo docker volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in /var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration . Configure SC4S for systemd and start SC4S \u00b6 sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s Restart SC4S \u00b6 sudo systemctl restart sc4s If changes were made to the configuration Unit file above (e.g. to configure with dedicated ports), you must first stop SC4S and re-run the systemd configuration commands: sudo systemctl stop sc4s sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s Stop SC4S \u00b6 sudo systemctl stop sc4s Verify Proper Operation \u00b6 SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information.","title":"Docker CE + systemd"},{"location":"gettingstarted/docker-systemd-general/#install-docker-ce","text":"Refer to relevant installation guides: CentOS Ubuntu Debian NOTE: READ FIRST (IPv4 forwarding)","title":"Install Docker CE"},{"location":"gettingstarted/docker-systemd-general/#initial-setup","text":"IMPORTANT: Always use the latest unit file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the template unit file below (e.g. suggested mount points) are incorporated in production prior to relaunching via systemd. Create the systemd unit file /lib/systemd/system/sc4s.service based on the following template:","title":"Initial Setup"},{"location":"gettingstarted/docker-systemd-general/#unit-file","text":"[Unit] Description = SC4S Container Wants = NetworkManager.service network-online.target docker.service After = NetworkManager.service network-online.target docker.service Requires = docker.service [Install] WantedBy = multi-user.target [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\" # Required mount point for syslog-ng persist data (including disk buffer) Environment = \"SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng\" # Optional mount point for local overrides and configurations; see notes in docs Environment = \"SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z\" # Optional mount point for local disk archive (EWMM output) files Environment = \"SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z\" # Map location of TLS custom TLS Environment = \"SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z\" TimeoutStartSec = 0 ExecStartPre = /usr/bin/docker pull $SC4S_IMAGE # Note: /usr/bin/bash will not be valid path for all OS # when startup fails on running bash check if the path is correct ExecStartPre = /usr/bin/bash -c \"/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)\" ExecStart = /usr/bin/docker run \\ -e \"SC4S_CONTAINER_HOST = ${SC4SHOST}\" \\ -v \"$SC4S_PERSIST_MOUNT\" \\ -v \"$SC4S_LOCAL_MOUNT\" \\ -v \"$SC4S_ARCHIVE_MOUNT\" \\ -v \"$SC4S_TLS_MOUNT\" \\ --env-file = /opt/sc4s/env_file \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE Restart = on-abnormal Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo docker volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the docker volume created above. This volume is located in /var/lib/docker/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration .","title":"Unit file"},{"location":"gettingstarted/docker-systemd-general/#configure-sc4s-for-systemd-and-start-sc4s","text":"sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s","title":"Configure SC4S for systemd and start SC4S"},{"location":"gettingstarted/docker-systemd-general/#restart-sc4s","text":"sudo systemctl restart sc4s If changes were made to the configuration Unit file above (e.g. to configure with dedicated ports), you must first stop SC4S and re-run the systemd configuration commands: sudo systemctl stop sc4s sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s","title":"Restart SC4S"},{"location":"gettingstarted/docker-systemd-general/#stop-sc4s","text":"sudo systemctl stop sc4s","title":"Stop SC4S"},{"location":"gettingstarted/docker-systemd-general/#verify-proper-operation","text":"SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information.","title":"Verify Proper Operation"},{"location":"gettingstarted/getting-started-runtime-configuration/","text":"Implement a Container Runtime and SC4S \u00b6 Prerequisites \u00b6 Linux host with Docker (CE 19.x or greater) or Podman enabled, depending on runtime choice (below). A network load balancer (NLB) configured for round-robin. Note: Special consideration may be required when more advanced products are used. The optimal configuration of the load balancer will round-robin each http POST request (not each connection). The host linux OS receive buffer size should be tuned to match the sc4s default to avoid dropping events (packets) at the network level. The default receive buffer for sc4s is set to 16 MB for UDP traffic, which should be OK for most environments. To set the host OS kernel to match this, edit /etc/sysctl.conf using the following whole-byte values corresponding to 16 MB: net.core.rmem_default = 17039360 net.core.rmem_max = 17039360 and apply to the kernel: sysctl -p Ensure the kernel is not dropping packets by periodically monitoring the buffer with the command netstat -su | grep \"receive errors\" . NOTE: Failure to account for high-volume traffic (especially UDP) by tuning the kernel will result in message loss, which can be very unpredictable and difficult to detect. See this helpful discussion in the syslog-ng Professional Edition documentation regarding tuning syslog-ng in particular (via the SC4S_SOURCE_*_SO_RCVBUFF environment variable in sc4s) as well as overall host kernel tuning. The default values for receive kernel buffers in most distros is 2 MB, which has proven inadequate for many. IPv4 Forwarding \u00b6 In many distributions (e.g. CentOS provisioned in AWS), IPV4 forwarding is not enabled by default. This needs to be enabled for container networking to function properly. The following is an example to check and set this up; as usual this needs to be vetted with your enterprise security policy: To check: sudo sysctl net.ipv4.ip_forward To set: sudo sysctl net.ipv4.ip_forward=1 To ensure the change survives a reboot: sysctl settings are defined through files in /usr/lib/sysctl.d/ , /run/sysctl.d/ , and /etc/sysctl.d/ . To override only specific settings, you can either add a file with a lexically later name in /etc/sysctl.d/ and put following setting there: net.ipv4.ip_forward=1 or find this specific setting in one of existing configuration files (mentioned above) and set value to 1 . net.ipv4.ip_forward=1 Select a Container Runtime and SC4S Configuration \u00b6 Container Runtime and Orchestration Operating Systems MicroK8s Ubuntu with Microk8s Podman 1.7 & 1.9 + systemd RHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS Docker CE 19 (and greater) + systemd RHEL or CentOS >7.7 (best option), Debian or Ubuntu 18.04LTS Docker Desktop + Compose MacOS Docker Desktop + Compose RHEL or CentOS 8.1 & 8.2 (best option) Bring your own Environment RHEL or CentOS 8.1 & 8.2 (best option) Offline Container Installation RHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS Ansible+Docker Swarm RHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS Ansible+Podman RHEL 7.x/8.x or CentOS 7.x/8.x (best option), Debian or Ubuntu 20.10LTS(and higher) Ansible+Docker RHEL 7.x/8.x or CentOS 7.x/8.x (best option), Debian or Ubuntu 18.04LTS(and higher) Docker and Podman basic configurations \u00b6 To run properly sc4s you need to create directories: /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls /opt/sc4s/local will be used as a mount point for local overrides and configurations. The empty local directory created above will populate with defaults and examples at the first invocation of SC4S for local configurations and context overrides. Do not change the directory structure of the files that are laid down; change (or add) only individual files if desired. SC4S depends on the directory layout to read the local configurations properly. See the notes below for which files will be preserved on restarts. In the local/config/ directory there are four subdirectories that allow you to provide support for device types that are not provided out of the box in SC4S. To get you started, there is an example log path template ( lp-example.conf.tmpl ) and a filter ( example.conf ) in the log_paths and filters subdirectories, respectively. These should not be used directly, but copied as templates for your own log path development. They will get overwritten at each SC4S start. In the local/context directory, if you change the \u201cnon-example\u201d version of a file (e.g. splunk_metadata.csv ) the changes will be preserved on a restart. /opt/sc4s/archive will be used as a mount point for local storage of syslog events (if the optional mount is uncommented above). The events will be written in the syslog-ng EWMM format. See the \u201cconfiguration\u201d document for details on the directory structure the archive uses. /opt/sc4s/tls will be used as a mount point for custom TLS certificates (if the optional mount is uncommented above). IMPORTANT: When creating the directories above, ensure the directories created match the volume mounts specified in the sc4s.service unit file . Failure to do this will cause SC4S to abort at startup. Dedicated (Unique) Listening Ports \u00b6 For certain source technologies, categorization by message content is impossible due to the lack of a unique \u201cfingerprint\u201d in the data. In other cases, a unique listening port is required for certain devices due to network requirements in the enterprise. For collection of such sources, we provide a means of dedicating a unique listening port to a specific source. Follow this step to configure unique ports for one or more sources: Modify the /opt/sc4s/env_file file to include the port-specific environment variable(s). Refer to the \u201cSources\u201d documentation to identify the specific environment variables that are mapped to each data source vendor/technology. Modify index destinations for Splunk \u00b6 Log paths are preconfigured to utilize a convention of index destinations that are suitable for most customers. If changes need to be made to index destinations, navigate to the /opt/sc4s/local/context directory to start. Edit splunk_metadata.csv to review or change the index configuration as required for the data sources utilized in your environment. The key (1st column) in this file uses the syntax vendor_product . Simply replace the index value (the 3rd column) in the desired row with the index appropriate for your Splunk installation. The \u201cSources\u201d document details the specific vendor_product keys (rows) in this table that pertain to the individual data source filters that are included with SC4S. Other Splunk metadata (e.g. source and sourcetype) can be overridden via this file as well. This is an advanced topic, and further information is covered in the \u201cLog Path overrides\u201d section of the Configuration document. Configure source filtering by source IP or host name \u00b6 Legacy sources and non-standard-compliant sources require configuration by source IP or hostname as included in the event. The following steps apply to support such sources. To identify sources that require this step, refer to the \u201csources\u201d section of this documentation. See documentation for your vendor/product to determine if specific configuration is required Configure compliance index/metadata overrides \u00b6 In some cases, devices that have been properly sourcetyped need to be further categorized by compliance, geography, or other criterion. The two files compliance_meta_by_source.conf and compliance_meta_by_source.csv can be used for this purpose. These operate similarly to the files above, where the conf file specifies a filter to uniquely identify the messages that should be overridden, and the csv file lists one or more metadata items that can be overridden based on the filter name. This is an advanced topic, and further information is covered in the \u201cOverride index or metadata based on host, ip, or subnet\u201d section of the Configuration document.","title":"Runtime Configuration"},{"location":"gettingstarted/getting-started-runtime-configuration/#implement-a-container-runtime-and-sc4s","text":"","title":"Implement a Container Runtime and SC4S"},{"location":"gettingstarted/getting-started-runtime-configuration/#prerequisites","text":"Linux host with Docker (CE 19.x or greater) or Podman enabled, depending on runtime choice (below). A network load balancer (NLB) configured for round-robin. Note: Special consideration may be required when more advanced products are used. The optimal configuration of the load balancer will round-robin each http POST request (not each connection). The host linux OS receive buffer size should be tuned to match the sc4s default to avoid dropping events (packets) at the network level. The default receive buffer for sc4s is set to 16 MB for UDP traffic, which should be OK for most environments. To set the host OS kernel to match this, edit /etc/sysctl.conf using the following whole-byte values corresponding to 16 MB: net.core.rmem_default = 17039360 net.core.rmem_max = 17039360 and apply to the kernel: sysctl -p Ensure the kernel is not dropping packets by periodically monitoring the buffer with the command netstat -su | grep \"receive errors\" . NOTE: Failure to account for high-volume traffic (especially UDP) by tuning the kernel will result in message loss, which can be very unpredictable and difficult to detect. See this helpful discussion in the syslog-ng Professional Edition documentation regarding tuning syslog-ng in particular (via the SC4S_SOURCE_*_SO_RCVBUFF environment variable in sc4s) as well as overall host kernel tuning. The default values for receive kernel buffers in most distros is 2 MB, which has proven inadequate for many.","title":"Prerequisites"},{"location":"gettingstarted/getting-started-runtime-configuration/#ipv4-forwarding","text":"In many distributions (e.g. CentOS provisioned in AWS), IPV4 forwarding is not enabled by default. This needs to be enabled for container networking to function properly. The following is an example to check and set this up; as usual this needs to be vetted with your enterprise security policy: To check: sudo sysctl net.ipv4.ip_forward To set: sudo sysctl net.ipv4.ip_forward=1 To ensure the change survives a reboot: sysctl settings are defined through files in /usr/lib/sysctl.d/ , /run/sysctl.d/ , and /etc/sysctl.d/ . To override only specific settings, you can either add a file with a lexically later name in /etc/sysctl.d/ and put following setting there: net.ipv4.ip_forward=1 or find this specific setting in one of existing configuration files (mentioned above) and set value to 1 . net.ipv4.ip_forward=1","title":"IPv4 Forwarding"},{"location":"gettingstarted/getting-started-runtime-configuration/#select-a-container-runtime-and-sc4s-configuration","text":"Container Runtime and Orchestration Operating Systems MicroK8s Ubuntu with Microk8s Podman 1.7 & 1.9 + systemd RHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS Docker CE 19 (and greater) + systemd RHEL or CentOS >7.7 (best option), Debian or Ubuntu 18.04LTS Docker Desktop + Compose MacOS Docker Desktop + Compose RHEL or CentOS 8.1 & 8.2 (best option) Bring your own Environment RHEL or CentOS 8.1 & 8.2 (best option) Offline Container Installation RHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS Ansible+Docker Swarm RHEL 8.x or CentOS 8.x (best option), Debian or Ubuntu 18.04LTS Ansible+Podman RHEL 7.x/8.x or CentOS 7.x/8.x (best option), Debian or Ubuntu 20.10LTS(and higher) Ansible+Docker RHEL 7.x/8.x or CentOS 7.x/8.x (best option), Debian or Ubuntu 18.04LTS(and higher)","title":"Select a Container Runtime and SC4S Configuration"},{"location":"gettingstarted/getting-started-runtime-configuration/#docker-and-podman-basic-configurations","text":"To run properly sc4s you need to create directories: /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls /opt/sc4s/local will be used as a mount point for local overrides and configurations. The empty local directory created above will populate with defaults and examples at the first invocation of SC4S for local configurations and context overrides. Do not change the directory structure of the files that are laid down; change (or add) only individual files if desired. SC4S depends on the directory layout to read the local configurations properly. See the notes below for which files will be preserved on restarts. In the local/config/ directory there are four subdirectories that allow you to provide support for device types that are not provided out of the box in SC4S. To get you started, there is an example log path template ( lp-example.conf.tmpl ) and a filter ( example.conf ) in the log_paths and filters subdirectories, respectively. These should not be used directly, but copied as templates for your own log path development. They will get overwritten at each SC4S start. In the local/context directory, if you change the \u201cnon-example\u201d version of a file (e.g. splunk_metadata.csv ) the changes will be preserved on a restart. /opt/sc4s/archive will be used as a mount point for local storage of syslog events (if the optional mount is uncommented above). The events will be written in the syslog-ng EWMM format. See the \u201cconfiguration\u201d document for details on the directory structure the archive uses. /opt/sc4s/tls will be used as a mount point for custom TLS certificates (if the optional mount is uncommented above). IMPORTANT: When creating the directories above, ensure the directories created match the volume mounts specified in the sc4s.service unit file . Failure to do this will cause SC4S to abort at startup.","title":"Docker and Podman basic configurations"},{"location":"gettingstarted/getting-started-runtime-configuration/#dedicated-unique-listening-ports","text":"For certain source technologies, categorization by message content is impossible due to the lack of a unique \u201cfingerprint\u201d in the data. In other cases, a unique listening port is required for certain devices due to network requirements in the enterprise. For collection of such sources, we provide a means of dedicating a unique listening port to a specific source. Follow this step to configure unique ports for one or more sources: Modify the /opt/sc4s/env_file file to include the port-specific environment variable(s). Refer to the \u201cSources\u201d documentation to identify the specific environment variables that are mapped to each data source vendor/technology.","title":"Dedicated (Unique) Listening Ports"},{"location":"gettingstarted/getting-started-runtime-configuration/#modify-index-destinations-for-splunk","text":"Log paths are preconfigured to utilize a convention of index destinations that are suitable for most customers. If changes need to be made to index destinations, navigate to the /opt/sc4s/local/context directory to start. Edit splunk_metadata.csv to review or change the index configuration as required for the data sources utilized in your environment. The key (1st column) in this file uses the syntax vendor_product . Simply replace the index value (the 3rd column) in the desired row with the index appropriate for your Splunk installation. The \u201cSources\u201d document details the specific vendor_product keys (rows) in this table that pertain to the individual data source filters that are included with SC4S. Other Splunk metadata (e.g. source and sourcetype) can be overridden via this file as well. This is an advanced topic, and further information is covered in the \u201cLog Path overrides\u201d section of the Configuration document.","title":"Modify index destinations for Splunk"},{"location":"gettingstarted/getting-started-runtime-configuration/#configure-source-filtering-by-source-ip-or-host-name","text":"Legacy sources and non-standard-compliant sources require configuration by source IP or hostname as included in the event. The following steps apply to support such sources. To identify sources that require this step, refer to the \u201csources\u201d section of this documentation. See documentation for your vendor/product to determine if specific configuration is required","title":"Configure source filtering by source IP or host name"},{"location":"gettingstarted/getting-started-runtime-configuration/#configure-compliance-indexmetadata-overrides","text":"In some cases, devices that have been properly sourcetyped need to be further categorized by compliance, geography, or other criterion. The two files compliance_meta_by_source.conf and compliance_meta_by_source.csv can be used for this purpose. These operate similarly to the files above, where the conf file specifies a filter to uniquely identify the messages that should be overridden, and the csv file lists one or more metadata items that can be overridden based on the filter name. This is an advanced topic, and further information is covered in the \u201cOverride index or metadata based on host, ip, or subnet\u201d section of the Configuration document.","title":"Configure compliance index/metadata overrides"},{"location":"gettingstarted/getting-started-splunk-setup/","text":"Splunk setup \u00b6 Create Indexes \u00b6 SC4S is pre-configured to map each sourcetype to a typical index. For new installations, it is best practice to create them in Splunk when using the SC4S defaults. SC4S can be easily customized to use different indexes if desired. email epav epintel infraops netauth netdlp netdns netfw netids netlb netops netwaf netproxy netipam oswin oswinsec osnix print em_metrics (Optional opt-in for SC4S operational metrics; ensure this is created as a metrics index) Install Related Splunk Apps \u00b6 Install the following: IT Essentials Work Configure the Splunk HTTP Event Collector \u00b6 Set up the Splunk HTTP Event Collector with the HEC endpoints behind a load balancer (VIP) configured for https round robin WITHOUT sticky session. Alternatively, a list of HEC endpoint URLs can be configured in SC4S (native syslog-ng load balancing) if no load balancer is in place. In most scenarios the recommendation is to use an external load balancer, as that makes longer term maintenance simpler by eliminating the need to manually keep the list of HEC URLs specified in sc4s current. However, if a LB is not available, native load balancing can be used with 10 or fewer Indexers where HEC is used exclusively for syslog. In either case, it is strongly recommended that SC4S traffic be sent to HEC endpoints configured directly on the indexers rather than an intermediate tier of HWFs. - Create a HEC token that will be used by SC4S and ensure the token has access to place events in main, em_metrics, and all indexes used as event destinations. NOTE: It is recommended that the \u201cSelected Indexes\u201d on the token configuration page be left blank so that the token has access to all indexes, including the lastChanceIndex . If this list is populated, extreme care must be taken to keep it up to date, as an attempt to send data to an index not in this list will result in a 400 error from the HEC endpoint. Furthermore, the lastChanceIndex will not be consulted in the event the index specified in the event is not configured on Splunk. Keep in mind just one bad message will \u201ctaint\u201d the whole batch (by default 1000 events) and prevent the entire batch from being sent to Splunk. In case you are not using TLS on SC4S- turn off SSL on global settings for HEC in Splunk. Refer to Splunk Cloud or Splunk Enterprise for specific HEC configuration instructions based on your Splunk type.","title":"Splunk Setup"},{"location":"gettingstarted/getting-started-splunk-setup/#splunk-setup","text":"","title":"Splunk setup"},{"location":"gettingstarted/getting-started-splunk-setup/#create-indexes","text":"SC4S is pre-configured to map each sourcetype to a typical index. For new installations, it is best practice to create them in Splunk when using the SC4S defaults. SC4S can be easily customized to use different indexes if desired. email epav epintel infraops netauth netdlp netdns netfw netids netlb netops netwaf netproxy netipam oswin oswinsec osnix print em_metrics (Optional opt-in for SC4S operational metrics; ensure this is created as a metrics index)","title":"Create Indexes"},{"location":"gettingstarted/getting-started-splunk-setup/#install-related-splunk-apps","text":"Install the following: IT Essentials Work","title":"Install Related Splunk Apps"},{"location":"gettingstarted/getting-started-splunk-setup/#configure-the-splunk-http-event-collector","text":"Set up the Splunk HTTP Event Collector with the HEC endpoints behind a load balancer (VIP) configured for https round robin WITHOUT sticky session. Alternatively, a list of HEC endpoint URLs can be configured in SC4S (native syslog-ng load balancing) if no load balancer is in place. In most scenarios the recommendation is to use an external load balancer, as that makes longer term maintenance simpler by eliminating the need to manually keep the list of HEC URLs specified in sc4s current. However, if a LB is not available, native load balancing can be used with 10 or fewer Indexers where HEC is used exclusively for syslog. In either case, it is strongly recommended that SC4S traffic be sent to HEC endpoints configured directly on the indexers rather than an intermediate tier of HWFs. - Create a HEC token that will be used by SC4S and ensure the token has access to place events in main, em_metrics, and all indexes used as event destinations. NOTE: It is recommended that the \u201cSelected Indexes\u201d on the token configuration page be left blank so that the token has access to all indexes, including the lastChanceIndex . If this list is populated, extreme care must be taken to keep it up to date, as an attempt to send data to an index not in this list will result in a 400 error from the HEC endpoint. Furthermore, the lastChanceIndex will not be consulted in the event the index specified in the event is not configured on Splunk. Keep in mind just one bad message will \u201ctaint\u201d the whole batch (by default 1000 events) and prevent the entire batch from being sent to Splunk. In case you are not using TLS on SC4S- turn off SSL on global settings for HEC in Splunk. Refer to Splunk Cloud or Splunk Enterprise for specific HEC configuration instructions based on your Splunk type.","title":"Configure the Splunk HTTP Event Collector"},{"location":"gettingstarted/k8s-microk8s/","text":"Install MicroK8s \u00b6 The SC4S deployment model with Microk8s uses specific features of this distribution of k8s. While this may be reproducible with other distributions such an undertaking requires more advanced awareness and responsibility for the administrator. (metalLB) ensure source IP is preserved Bring any operating system (window/centos/rhel/ubuntu/debian) This configuration requires as least 2 IP addressed one for host and one for the internal load balancer. We suggest allocation of 3 ip addresses for the host and 5-10 addresses for later use FAQ \u00b6 Question: How is this deployment model supported? Answer: Similar to other deployment methods, Splunk supports the container itself and the procedural guidance for implementation but does not directly support or otherwise provide resolutions for issues within the runtime environment. Question: Why is this \u201cload balancer\u201d ok but others are not? Answer: While we are using a load balancer with one instance per host, the traffic is restricted to the entry node and one instance of sc4s will run per node. This limits the function of MetalLB to the same function as a Cluster Manager. Question: Is this a recommended deployment model? Answer: Yes, the single-server microk8s model is a recommended option. The use of clustering does have additional tradeoffs and should be carefully considered on a deployment-specific basis. #we need to have a normal install of kubectl because of operator scripts sudo snap install microk8s --classic --channel = 1 .24 # Basic setup of k8s sudo usermod -a -G microk8s $USER sudo chown -f -R $USER ~/.kube su - $USER microk8s status --wait-ready #Note when installing metallb you will be prompted for one or more IPs to used as entry points #Into the cluster if your plan to enable clustering this IP should not be assigned to the host (floats) #If you do not plan to cluster then this IP may be the same IP as the host #Note2: a single IP in cidr format is x.x.x.x/32 use CIDR or range syntax microk8s enable dns microk8s enable community microk8s enable metallb microk8s enable rbac microk8s enable storage microk8s enable openebs microk8s enable helm3 microk8s status --wait-ready Add SC4S Helm repo \u00b6 microk8s helm3 repo add splunk-connect-for-syslog https://splunk.github.io/splunk-connect-for-syslog microk8s helm3 repo update Create a config file \u00b6 Dependent on whether you want to store HEC token as a kubernetes secret create values.yaml file. If you wish to provide HEC token value in plaintext configure it as in example below: The HEC token can be configured either as a plane text or as a secret. As Plaintext Configuration: #values.yaml splunk : hec_url : \"https://xxx.xxx.xxx.xxx:8088/services/collector/event\" hec_token : \"00000000-0000-0000-0000-000000000000\" hec_verify_tls : \"yes\" As Secret Configuration: #values.yaml splunk : hec_url : \"https://xxx.xxx.xxx.xxx:8088/services/collector/event\" hec_verify_tls : \"yes\" Install SC4S \u00b6 microk8s helm3 install sc4s splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml HEC token as a kubernetes secret: export HEC_TOKEN = \"00000000-0000-0000-0000-000000000000\" # provide your token here! microk8s helm3 install sc4s --set splunk.hec_token = $HEC_TOKEN splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml Upgrade SC4S \u00b6 microk8s helm3 upgrade sc4s splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml Setup for HA with multiple nodes \u00b6 See https://microk8s.io/docs/high-availability Note: Three identically-sized nodes are required for HA #values.yaml replicaCount : 6 #2x node count splunk : hec_url : \"https://xxx.xxx.xxx.xxx:8088/services/collector/event\" hec_token : \"00000000-0000-0000-0000-000000000000\" hec_verify_tls : \"yes\" Upgrade sc4s to apply the new config Advanced Configuration \u00b6 Using helm based deployment precludes direct configuration of environment variables and context files but most configuration can be set via the values.yaml sc4s : # Certificate as a k8s Secret with tls.key and tls.crt fields # Ideally produced and managed by cert-manager.io existingCert : example-com-tls # vendor_product : - name : checkpoint ports : tcp : [ 9000 ] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000 udp : [ 9000 ] options : listen : old_host_rules : \"yes\" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes - name : infoblox ports : tcp : [ 9001 , 9002 ] tls : [ 9003 ] - name : fortinet ports : ietf_udp : - 9100 - 9101 context_files : splunk_metadata.csv : |- cisco_meraki,index,foo host.csv : |- 192.168.1.1,foo 192.168.1.2,moon config_files and context_files are variables used to specify configuration and context files that need to be passed to the splunk-connect-for-syslog. config_files : This variable contains a dictionary that maps the name of the configuration file to its content in the form of a YAML block scalar. context_file : This variable contains a dictionary that maps the name of the context files to its content in the form of a YAML block scalar. The context file named splunk_metadata.csv and host.csv are being passed with the values.yaml sc4s : # Certificate as a k8s Secret with tls.key and tls.crt fields # Ideally produced and managed by cert-manager.io # vendor_product : - name : checkpoint ports : tcp : [ 9000 ] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000 udp : [ 9000 ] options : listen : old_host_rules : \"yes\" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes - name : fortinet ports : ietf_udp : - 9100 - 9101 context_files : splunk_metadata.csv : |+ cisco_meraki,index,foo cisco_asa,index,bar config_files : app-workaround-cisco_asa.conf : |+ block parser app-postfilter-cisco_asa_metadata() { channel { rewrite { unset(value('fields.sc4s_recv_time')); }; }; }; application app-postfilter-cisco_asa_metadata[sc4s-postfilter] { filter { 'cisco' eq \"${fields.sc4s_vendor}\" and 'asa' eq \"${fields.sc4s_product}\" }; parser { app-postfilter-cisco_asa_metadata(); }; }; Resource Management \u00b6 Generally two instances will be provisioned per node adjust requests and limits to allow each instance to use about 40% of each node presuming no other workload is present resources : limits : cpu : 100m memory : 128Mi requests : cpu : 100m memory : 128Mi","title":"MicroK8s + Linux"},{"location":"gettingstarted/k8s-microk8s/#install-microk8s","text":"The SC4S deployment model with Microk8s uses specific features of this distribution of k8s. While this may be reproducible with other distributions such an undertaking requires more advanced awareness and responsibility for the administrator. (metalLB) ensure source IP is preserved Bring any operating system (window/centos/rhel/ubuntu/debian) This configuration requires as least 2 IP addressed one for host and one for the internal load balancer. We suggest allocation of 3 ip addresses for the host and 5-10 addresses for later use","title":"Install MicroK8s"},{"location":"gettingstarted/k8s-microk8s/#faq","text":"Question: How is this deployment model supported? Answer: Similar to other deployment methods, Splunk supports the container itself and the procedural guidance for implementation but does not directly support or otherwise provide resolutions for issues within the runtime environment. Question: Why is this \u201cload balancer\u201d ok but others are not? Answer: While we are using a load balancer with one instance per host, the traffic is restricted to the entry node and one instance of sc4s will run per node. This limits the function of MetalLB to the same function as a Cluster Manager. Question: Is this a recommended deployment model? Answer: Yes, the single-server microk8s model is a recommended option. The use of clustering does have additional tradeoffs and should be carefully considered on a deployment-specific basis. #we need to have a normal install of kubectl because of operator scripts sudo snap install microk8s --classic --channel = 1 .24 # Basic setup of k8s sudo usermod -a -G microk8s $USER sudo chown -f -R $USER ~/.kube su - $USER microk8s status --wait-ready #Note when installing metallb you will be prompted for one or more IPs to used as entry points #Into the cluster if your plan to enable clustering this IP should not be assigned to the host (floats) #If you do not plan to cluster then this IP may be the same IP as the host #Note2: a single IP in cidr format is x.x.x.x/32 use CIDR or range syntax microk8s enable dns microk8s enable community microk8s enable metallb microk8s enable rbac microk8s enable storage microk8s enable openebs microk8s enable helm3 microk8s status --wait-ready","title":"FAQ"},{"location":"gettingstarted/k8s-microk8s/#add-sc4s-helm-repo","text":"microk8s helm3 repo add splunk-connect-for-syslog https://splunk.github.io/splunk-connect-for-syslog microk8s helm3 repo update","title":"Add SC4S Helm repo"},{"location":"gettingstarted/k8s-microk8s/#create-a-config-file","text":"Dependent on whether you want to store HEC token as a kubernetes secret create values.yaml file. If you wish to provide HEC token value in plaintext configure it as in example below: The HEC token can be configured either as a plane text or as a secret. As Plaintext Configuration: #values.yaml splunk : hec_url : \"https://xxx.xxx.xxx.xxx:8088/services/collector/event\" hec_token : \"00000000-0000-0000-0000-000000000000\" hec_verify_tls : \"yes\" As Secret Configuration: #values.yaml splunk : hec_url : \"https://xxx.xxx.xxx.xxx:8088/services/collector/event\" hec_verify_tls : \"yes\"","title":"Create a config file"},{"location":"gettingstarted/k8s-microk8s/#install-sc4s","text":"microk8s helm3 install sc4s splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml HEC token as a kubernetes secret: export HEC_TOKEN = \"00000000-0000-0000-0000-000000000000\" # provide your token here! microk8s helm3 install sc4s --set splunk.hec_token = $HEC_TOKEN splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml","title":"Install SC4S"},{"location":"gettingstarted/k8s-microk8s/#upgrade-sc4s","text":"microk8s helm3 upgrade sc4s splunk-connect-for-syslog/splunk-connect-for-syslog -f values.yaml","title":"Upgrade SC4S"},{"location":"gettingstarted/k8s-microk8s/#setup-for-ha-with-multiple-nodes","text":"See https://microk8s.io/docs/high-availability Note: Three identically-sized nodes are required for HA #values.yaml replicaCount : 6 #2x node count splunk : hec_url : \"https://xxx.xxx.xxx.xxx:8088/services/collector/event\" hec_token : \"00000000-0000-0000-0000-000000000000\" hec_verify_tls : \"yes\" Upgrade sc4s to apply the new config","title":"Setup for HA with multiple nodes"},{"location":"gettingstarted/k8s-microk8s/#advanced-configuration","text":"Using helm based deployment precludes direct configuration of environment variables and context files but most configuration can be set via the values.yaml sc4s : # Certificate as a k8s Secret with tls.key and tls.crt fields # Ideally produced and managed by cert-manager.io existingCert : example-com-tls # vendor_product : - name : checkpoint ports : tcp : [ 9000 ] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000 udp : [ 9000 ] options : listen : old_host_rules : \"yes\" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes - name : infoblox ports : tcp : [ 9001 , 9002 ] tls : [ 9003 ] - name : fortinet ports : ietf_udp : - 9100 - 9101 context_files : splunk_metadata.csv : |- cisco_meraki,index,foo host.csv : |- 192.168.1.1,foo 192.168.1.2,moon config_files and context_files are variables used to specify configuration and context files that need to be passed to the splunk-connect-for-syslog. config_files : This variable contains a dictionary that maps the name of the configuration file to its content in the form of a YAML block scalar. context_file : This variable contains a dictionary that maps the name of the context files to its content in the form of a YAML block scalar. The context file named splunk_metadata.csv and host.csv are being passed with the values.yaml sc4s : # Certificate as a k8s Secret with tls.key and tls.crt fields # Ideally produced and managed by cert-manager.io # vendor_product : - name : checkpoint ports : tcp : [ 9000 ] #Same as SC4S_LISTEN_CHECKPOINT_TCP_PORT=9000 udp : [ 9000 ] options : listen : old_host_rules : \"yes\" #Same as SC4S_LISTEN_CHECKPOINT_OLD_HOST_RULES=yes - name : fortinet ports : ietf_udp : - 9100 - 9101 context_files : splunk_metadata.csv : |+ cisco_meraki,index,foo cisco_asa,index,bar config_files : app-workaround-cisco_asa.conf : |+ block parser app-postfilter-cisco_asa_metadata() { channel { rewrite { unset(value('fields.sc4s_recv_time')); }; }; }; application app-postfilter-cisco_asa_metadata[sc4s-postfilter] { filter { 'cisco' eq \"${fields.sc4s_vendor}\" and 'asa' eq \"${fields.sc4s_product}\" }; parser { app-postfilter-cisco_asa_metadata(); }; };","title":"Advanced Configuration"},{"location":"gettingstarted/k8s-microk8s/#resource-management","text":"Generally two instances will be provisioned per node adjust requests and limits to allow each instance to use about 40% of each node presuming no other workload is present resources : limits : cpu : 100m memory : 128Mi requests : cpu : 100m memory : 128Mi","title":"Resource Management"},{"location":"gettingstarted/podman-systemd-general/","text":"Install podman \u00b6 Refer to Installation NOTE: READ FIRST (IPv4 forwarding) Initial Setup \u00b6 IMPORTANT: Always use the latest unit file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the template unit file below (e.g. suggested mount points) are incorporated in production prior to relaunching via systemd. Create the systemd unit file /lib/systemd/system/sc4s.service based on the following template: Unit file \u00b6 [Unit] Description = SC4S Container Wants = NetworkManager.service network-online.target After = NetworkManager.service network-online.target [Install] WantedBy = multi-user.target [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\" # Required mount point for syslog-ng persist data (including disk buffer) Environment = \"SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng\" # Optional mount point for local overrides and configurations; see notes in docs Environment = \"SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z\" # Optional mount point for local disk archive (EWMM output) files Environment = \"SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z\" # Map location of TLS custom TLS Environment = \"SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z\" TimeoutStartSec = 0 ExecStartPre = /usr/bin/podman pull $SC4S_IMAGE # Note: /usr/bin/bash will not be valid path for all OS # when startup fails on running bash check if the path is correct ExecStartPre = /usr/bin/bash -c \"/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)\" ExecStart = /usr/bin/podman run \\ -e \"SC4S_CONTAINER_HOST = ${SC4SHOST}\" \\ -v \"$SC4S_PERSIST_MOUNT\" \\ -v \"$SC4S_LOCAL_MOUNT\" \\ -v \"$SC4S_ARCHIVE_MOUNT\" \\ -v \"$SC4S_TLS_MOUNT\" \\ --env-file = /opt/sc4s/env_file \\ --health-cmd = \"/healthcheck.sh\" \\ --health-interval = 10s --health-retries=6 --health-timeout=6s \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE Restart = on-abnormal Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo podman volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the podman volume created above. This volume is located in /var/lib/containers/storage/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration . Configure SC4S for systemd and start SC4S \u00b6 sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s Restart SC4S \u00b6 sudo systemctl restart sc4s If changes were made to the configuration Unit file above (e.g. to configure with dedicated ports), you must first stop SC4S and re-run the systemd configuration commands: sudo systemctl stop sc4s sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s Stop SC4S \u00b6 sudo systemctl stop sc4s Verify Proper Operation \u00b6 SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information. SC4S non-root operation \u00b6 NOTE: \u00b6 Using non-root prevents the use of standard ports 514 and 601 many device can not alter their destination port this is not a valid configuration for general use, and may only be appropriate for cases where accepting syslog from the public internet can not be avoided. Prequisites \u00b6 Podman and slirp4netns installed. Increase number of user namespaces \u00b6 With user that has sudo privileges: $ echo \u201cuser.max_user_namespaces = 28633 \u201d > /etc/sysctl.d/userns.conf $ sysctl -p /etc/sysctl.d/userns.conf Prepare sc4s user \u00b6 Create a non-root user in which to run SC4S and prepare podman for non-root operation: sudo useradd -m -d /home/sc4s -s /bin/bash sc4s sudo passwd sc4s # type password here sudo su - sc4s mkdir -p /home/sc4s/local mkdir -p /home/sc4s/archive mkdir -p /home/sc4s/tls podman system migrate Next login as different user and login back again as sc4s user not using su command. For example: ssh sc4s@localhost (using su will not set needed env variables). Create unit file in changed location (with changes) \u00b6 Create unit file under ~/.config/systemd/user/sc4s.service with following content: [Unit] User = sc4s Description = SC4S Container Wants = NetworkManager.service network-online.target After = NetworkManager.service network-online.target [Install] WantedBy = multi-user.target [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container2:2\" # Required mount point for syslog-ng persist data (including disk buffer) Environment = \"SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng\" # Optional mount point for local overrides and configurations; see notes in docs Environment = \"SC4S_LOCAL_MOUNT=/home/sc4s/local:/etc/syslog-ng/conf.d/local:z\" # Optional mount point for local disk archive (EWMM output) files Environment = \"SC4S_ARCHIVE_MOUNT=/home/sc4s/archive:/var/lib/syslog-ng/archive:z\" # Map location of TLS custom TLS Environment = \"SC4S_TLS_MOUNT=/home/sc4s/tls:/etc/syslog-ng/tls:z\" TimeoutStartSec = 0 ExecStartPre = /usr/bin/podman pull $SC4S_IMAGE # Note: /usr/bin/bash will not be valid path for all OS # when startup fails on running bash check if the path is correct ExecStartPre = /usr/bin/bash -c \"/usr/bin/systemctl --user set-environment SC4SHOST=$(hostname -s)\" ExecStart = /usr/bin/podman run -p 2514:514 -p 2514:514/udp -p 6514:6514 \\ -e \"SC4S_CONTAINER_HOST = ${SC4SHOST}\" \\ -v \"$SC4S_PERSIST_MOUNT\" \\ -v \"$SC4S_LOCAL_MOUNT\" \\ -v \"$SC4S_ARCHIVE_MOUNT\" \\ -v \"$SC4S_TLS_MOUNT\" \\ --env-file = /opt/sc4s/env_file \\ --health-cmd = \"/healthcheck.sh\" \\ --health-interval = 10s --health-retries=6 --health-timeout=6s \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE Restart = on-abnormal Create env file \u00b6 Create env_file at /home/sc4s/env_file . SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = http : // xxx . xxx . xxx . xxx : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no SC4S_LISTEN_DEFAULT_TCP_PORT = 8514 SC4S_LISTEN_DEFAULT_UDP_PORT = 8514 SC4S_LISTEN_DEFAULT_RFC5426_PORT = 8601 SC4S_LISTEN_DEFAULT_RFC6587_PORT = 8601 Run service \u00b6 To run service as non root user run systemctl command wit --user flag: systemctl -- user daemon - reload systemctl -- user enable sc4s systemctl -- user start sc4s The remainder of the setup can be followed directly from the main setup instructions.","title":"Podman + systemd"},{"location":"gettingstarted/podman-systemd-general/#install-podman","text":"Refer to Installation NOTE: READ FIRST (IPv4 forwarding)","title":"Install podman"},{"location":"gettingstarted/podman-systemd-general/#initial-setup","text":"IMPORTANT: Always use the latest unit file (below) with the current release. By default, the latest container is automatically downloaded at each restart. Therefore, make it a habit to check back here regularly to be sure any changes that may have been made to the template unit file below (e.g. suggested mount points) are incorporated in production prior to relaunching via systemd. Create the systemd unit file /lib/systemd/system/sc4s.service based on the following template:","title":"Initial Setup"},{"location":"gettingstarted/podman-systemd-general/#unit-file","text":"[Unit] Description = SC4S Container Wants = NetworkManager.service network-online.target After = NetworkManager.service network-online.target [Install] WantedBy = multi-user.target [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest\" # Required mount point for syslog-ng persist data (including disk buffer) Environment = \"SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng\" # Optional mount point for local overrides and configurations; see notes in docs Environment = \"SC4S_LOCAL_MOUNT=/opt/sc4s/local:/etc/syslog-ng/conf.d/local:z\" # Optional mount point for local disk archive (EWMM output) files Environment = \"SC4S_ARCHIVE_MOUNT=/opt/sc4s/archive:/var/lib/syslog-ng/archive:z\" # Map location of TLS custom TLS Environment = \"SC4S_TLS_MOUNT=/opt/sc4s/tls:/etc/syslog-ng/tls:z\" TimeoutStartSec = 0 ExecStartPre = /usr/bin/podman pull $SC4S_IMAGE # Note: /usr/bin/bash will not be valid path for all OS # when startup fails on running bash check if the path is correct ExecStartPre = /usr/bin/bash -c \"/usr/bin/systemctl set-environment SC4SHOST=$(hostname -s)\" ExecStart = /usr/bin/podman run \\ -e \"SC4S_CONTAINER_HOST = ${SC4SHOST}\" \\ -v \"$SC4S_PERSIST_MOUNT\" \\ -v \"$SC4S_LOCAL_MOUNT\" \\ -v \"$SC4S_ARCHIVE_MOUNT\" \\ -v \"$SC4S_TLS_MOUNT\" \\ --env-file = /opt/sc4s/env_file \\ --health-cmd = \"/healthcheck.sh\" \\ --health-interval = 10s --health-retries=6 --health-timeout=6s \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE Restart = on-abnormal Execute the following command to create a local volume that will contain the disk buffer files in the event of a communication failure to the upstream destination(s). This will also be used to keep track of the state of syslog-ng between restarts, and in particular the state of the disk buffer. This is a required step. sudo podman volume create splunk - sc4s - var NOTE: Be sure to account for disk space requirements for the podman volume created above. This volume is located in /var/lib/containers/storage/volumes/ and could grow significantly if there is an extended outage to the SC4S destinations (typically HEC endpoints). See the \u201cSC4S Disk Buffer Configuration\u201d section on the Configuration page for more info. Create subdirectories /opt/sc4s/local /opt/sc4s/archive /opt/sc4s/tls Create a file named /opt/sc4s/env_file and add the following environment variables and values: SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = https : // your . splunk . instance : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx - xxxx - xxxx - xxxx - xxxxxxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no Update SC4S_DEST_SPLUNK_HEC_DEFAULT_URL and SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN to reflect the correct values for your environment. Do not configure HEC Acknowledgement when deploying the HEC token on the Splunk side; the underlying syslog-ng http destination does not support this feature. Moreover, HEC Ack would significantly degrade performance for streaming data such as syslog. The default number of SC4S_DEST_SPLUNK_HEC_WORKERS is 10. Consult the community if you feel the number of workers (threads) should deviate from this. NOTE: Splunk Connect for Syslog defaults to secure configurations. If you are not using trusted SSL certificates, be sure to uncomment the last line in the example above. For more information about configuration refer to Docker and Podman basic configurations and detailed configuration .","title":"Unit file"},{"location":"gettingstarted/podman-systemd-general/#configure-sc4s-for-systemd-and-start-sc4s","text":"sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s","title":"Configure SC4S for systemd and start SC4S"},{"location":"gettingstarted/podman-systemd-general/#restart-sc4s","text":"sudo systemctl restart sc4s If changes were made to the configuration Unit file above (e.g. to configure with dedicated ports), you must first stop SC4S and re-run the systemd configuration commands: sudo systemctl stop sc4s sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s","title":"Restart SC4S"},{"location":"gettingstarted/podman-systemd-general/#stop-sc4s","text":"sudo systemctl stop sc4s","title":"Stop SC4S"},{"location":"gettingstarted/podman-systemd-general/#verify-proper-operation","text":"SC4S has a number of \u201cpreflight\u201d checks to ensure that the container starts properly and that the syntax of the underlying syslog-ng configuration is correct. After this step completes, to verify SC4S is properly communicating with Splunk, execute the following search in Splunk: index = * sourcetype=sc4s:events \"starting up\" This should yield an event similar to the following: syslog-ng starting up; version = '3.28.1' When the startup process proceeds normally (without syntax errors). If you do not see this, follow the steps below before proceeding to deeper-level troubleshooting: Check to see that the URL, token, and TLS/SSL settings are correct, and that the appropriate firewall ports are open (8088 or 443). Check to see that the proper indexes are created in Splunk, and that the token has access to them. Ensure the proper operation of the load balancer if used. Lastly, execute the following command to check the sc4s startup process running in the container. docker logs SC4S You should see events similar to those below in the output: syslog-ng checking config sc4s version = v1.36.0 starting goss starting syslog-ng If you do not see the output above, proceed to the \u201cTroubleshoot sc4s server\u201d and \u201cTroubleshoot resources\u201d sections for more detailed information.","title":"Verify Proper Operation"},{"location":"gettingstarted/podman-systemd-general/#sc4s-non-root-operation","text":"","title":"SC4S non-root operation"},{"location":"gettingstarted/podman-systemd-general/#note","text":"Using non-root prevents the use of standard ports 514 and 601 many device can not alter their destination port this is not a valid configuration for general use, and may only be appropriate for cases where accepting syslog from the public internet can not be avoided.","title":"NOTE:"},{"location":"gettingstarted/podman-systemd-general/#prequisites","text":"Podman and slirp4netns installed.","title":"Prequisites"},{"location":"gettingstarted/podman-systemd-general/#increase-number-of-user-namespaces","text":"With user that has sudo privileges: $ echo \u201cuser.max_user_namespaces = 28633 \u201d > /etc/sysctl.d/userns.conf $ sysctl -p /etc/sysctl.d/userns.conf","title":"Increase number of user namespaces"},{"location":"gettingstarted/podman-systemd-general/#prepare-sc4s-user","text":"Create a non-root user in which to run SC4S and prepare podman for non-root operation: sudo useradd -m -d /home/sc4s -s /bin/bash sc4s sudo passwd sc4s # type password here sudo su - sc4s mkdir -p /home/sc4s/local mkdir -p /home/sc4s/archive mkdir -p /home/sc4s/tls podman system migrate Next login as different user and login back again as sc4s user not using su command. For example: ssh sc4s@localhost (using su will not set needed env variables).","title":"Prepare sc4s user"},{"location":"gettingstarted/podman-systemd-general/#create-unit-file-in-changed-location-with-changes","text":"Create unit file under ~/.config/systemd/user/sc4s.service with following content: [Unit] User = sc4s Description = SC4S Container Wants = NetworkManager.service network-online.target After = NetworkManager.service network-online.target [Install] WantedBy = multi-user.target [Service] Environment = \"SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container2:2\" # Required mount point for syslog-ng persist data (including disk buffer) Environment = \"SC4S_PERSIST_MOUNT=splunk-sc4s-var:/var/lib/syslog-ng\" # Optional mount point for local overrides and configurations; see notes in docs Environment = \"SC4S_LOCAL_MOUNT=/home/sc4s/local:/etc/syslog-ng/conf.d/local:z\" # Optional mount point for local disk archive (EWMM output) files Environment = \"SC4S_ARCHIVE_MOUNT=/home/sc4s/archive:/var/lib/syslog-ng/archive:z\" # Map location of TLS custom TLS Environment = \"SC4S_TLS_MOUNT=/home/sc4s/tls:/etc/syslog-ng/tls:z\" TimeoutStartSec = 0 ExecStartPre = /usr/bin/podman pull $SC4S_IMAGE # Note: /usr/bin/bash will not be valid path for all OS # when startup fails on running bash check if the path is correct ExecStartPre = /usr/bin/bash -c \"/usr/bin/systemctl --user set-environment SC4SHOST=$(hostname -s)\" ExecStart = /usr/bin/podman run -p 2514:514 -p 2514:514/udp -p 6514:6514 \\ -e \"SC4S_CONTAINER_HOST = ${SC4SHOST}\" \\ -v \"$SC4S_PERSIST_MOUNT\" \\ -v \"$SC4S_LOCAL_MOUNT\" \\ -v \"$SC4S_ARCHIVE_MOUNT\" \\ -v \"$SC4S_TLS_MOUNT\" \\ --env-file = /opt/sc4s/env_file \\ --health-cmd = \"/healthcheck.sh\" \\ --health-interval = 10s --health-retries=6 --health-timeout=6s \\ --network host \\ --name SC4S \\ --rm $SC4S_IMAGE Restart = on-abnormal","title":"Create unit file in changed location (with changes)"},{"location":"gettingstarted/podman-systemd-general/#create-env-file","text":"Create env_file at /home/sc4s/env_file . SC4S_DEST_SPLUNK_HEC_DEFAULT_URL = http : // xxx . xxx . xxx . xxx : 8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN = xxxxxxxx # Uncomment the following line if using untrusted SSL certificates # SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY = no SC4S_LISTEN_DEFAULT_TCP_PORT = 8514 SC4S_LISTEN_DEFAULT_UDP_PORT = 8514 SC4S_LISTEN_DEFAULT_RFC5426_PORT = 8601 SC4S_LISTEN_DEFAULT_RFC6587_PORT = 8601","title":"Create env file"},{"location":"gettingstarted/podman-systemd-general/#run-service","text":"To run service as non root user run systemctl command wit --user flag: systemctl -- user daemon - reload systemctl -- user enable sc4s systemctl -- user start sc4s The remainder of the setup can be followed directly from the main setup instructions.","title":"Run service"},{"location":"gettingstarted/quickstart_guide/","text":"Quickstart Guide \u00b6 Splunk setup \u00b6 Create the following default indexes that are used by SC4S email epav netauth netdlp netdns netfw netids netops netwaf netproxy netipam oswinsec osnix em_metrics (Optional opt-in for SC4S operational metrics; ensure this is created as a metrics index) Create a HEC token for SC4S. When filling out the form for the token, it is recommended that the \u201cSelected Indexes\u201d pane be left blank and that a lastChanceIndex be created so that all data received by SC4S will land somewhere in Splunk. SC4S setup (using RHEL 7.6) \u00b6 Set the host OS kernel to match the default receive buffer of sc4s which is set to 16MB Add following to /etc/sysctl.conf net.core.rmem_default = 17039360 net.core.rmem_max = 17039360 Apply to the kernel sysctl -p Ensure the kernel is not dropping packets netstat -su | grep \"receive errors\" Create the systemd unit file /lib/systemd/system/sc4s.service . Copy and paste from the SC4S sample unit file (Docker) or SC4S sample unit file (Podman) . Install podman or docker sudo yum -y install podman or sudo yum install docker-engine -y Create a podman/docker local volume that will contain the disk buffer files and other SC4S state files (choose one in the command below) sudo podman|docker volume create splunk-sc4s-var Create directories used as a mount point for local overrides and configurations mkdir /opt/sc4s/local mkdir /opt/sc4s/archive mkdir /opt/sc4s/tls Create the environment file /opt/sc4s/env_file and replace the HEC_URL and HEC_TOKEN as appropriate SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx #Uncomment the following line if using untrusted SSL certificates #SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no Configure SC4S for systemd and start SC4S sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s Check podman/docker logs for errors (choose one in command below) sudo podman|docker logs SC4S Search on Splunk for successful installation of SC4S index=* sourcetype=sc4s:events \"starting up\" Send sample data to default udp port 514 of SC4S host echo \u201cHello SC4S\u201d > /dev/udp//514","title":"Quickstart Guide"},{"location":"gettingstarted/quickstart_guide/#quickstart-guide","text":"","title":"Quickstart Guide"},{"location":"gettingstarted/quickstart_guide/#splunk-setup","text":"Create the following default indexes that are used by SC4S email epav netauth netdlp netdns netfw netids netops netwaf netproxy netipam oswinsec osnix em_metrics (Optional opt-in for SC4S operational metrics; ensure this is created as a metrics index) Create a HEC token for SC4S. When filling out the form for the token, it is recommended that the \u201cSelected Indexes\u201d pane be left blank and that a lastChanceIndex be created so that all data received by SC4S will land somewhere in Splunk.","title":"Splunk setup"},{"location":"gettingstarted/quickstart_guide/#sc4s-setup-using-rhel-76","text":"Set the host OS kernel to match the default receive buffer of sc4s which is set to 16MB Add following to /etc/sysctl.conf net.core.rmem_default = 17039360 net.core.rmem_max = 17039360 Apply to the kernel sysctl -p Ensure the kernel is not dropping packets netstat -su | grep \"receive errors\" Create the systemd unit file /lib/systemd/system/sc4s.service . Copy and paste from the SC4S sample unit file (Docker) or SC4S sample unit file (Podman) . Install podman or docker sudo yum -y install podman or sudo yum install docker-engine -y Create a podman/docker local volume that will contain the disk buffer files and other SC4S state files (choose one in the command below) sudo podman|docker volume create splunk-sc4s-var Create directories used as a mount point for local overrides and configurations mkdir /opt/sc4s/local mkdir /opt/sc4s/archive mkdir /opt/sc4s/tls Create the environment file /opt/sc4s/env_file and replace the HEC_URL and HEC_TOKEN as appropriate SC4S_DEST_SPLUNK_HEC_DEFAULT_URL=https://your.splunk.instance:8088 SC4S_DEST_SPLUNK_HEC_DEFAULT_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx #Uncomment the following line if using untrusted SSL certificates #SC4S_DEST_SPLUNK_HEC_DEFAULT_TLS_VERIFY=no Configure SC4S for systemd and start SC4S sudo systemctl daemon-reload sudo systemctl enable sc4s sudo systemctl start sc4s Check podman/docker logs for errors (choose one in command below) sudo podman|docker logs SC4S Search on Splunk for successful installation of SC4S index=* sourcetype=sc4s:events \"starting up\" Send sample data to default udp port 514 of SC4S host echo \u201cHello SC4S\u201d > /dev/udp//514","title":"SC4S setup (using RHEL 7.6)"},{"location":"sources/","text":"Introduction \u00b6 When using Splunk Connect for Syslog to onboard a data source, the syslog-ng \u201capp-parser\u201d performs the operations that are traditionally performed at index-time by the corresponding Technical Add-on installed there. These index-time operations include linebreaking, source/sourcetype setting and timestamping. For this reason, if a data source is exclusively onboarded using SC4S then you will not need to install its corresponding Add-On on the indexers. You must, however, install the Add-on on the search head(s) for the user communities interested in this data source. SC4S is designed to process \u201csyslog\u201d referring to IETF RFC standards 5424, legacy BSD syslog, RFC3164 (Not a standard document), and many \u201calmost\u201d syslog formats. When possible data sources are identified and processed based on characteristics of the event that make them unique as compared to other events for example. Cisco devices using IOS will include \u201d : %\u201d followed by a string. While Arista EOS devices will use a valid RFC3164 header with a value in the \u201cPROGRAM\u201d position with \u201c%\u201d as the first char in the \u201cMESSAGE\u201d portion. This allows two similar event structures to be processed correctly. When identification by message content alone is not possible for example the \u201csshd\u201d program field is commonly used across vendors additional \u201chint\u201d or guidance configuration allows SC4S to better classify events. The hints can be applied by definition of a specific port which will be used as a property of the event or by configuration of a host name/ip pattern. For example \u201cVMWARE VSPHERE\u201d products have a number of \u201cPROGRAM\u201d fields which can be used to identify vmware specific events in the syslog stream and these can be properly sourcetyped automatically however because \u201csshd\u201d is not unique it will be treated as generic \u201cos:nix\u201d events until further configuration is applied. The administrator can take one of two actions to refine the processing for vmware Define a specific port for vmware and reconfigure sources to use the defined port \u201cSC4S_LISTEN_VMWARE_VSPHERE_TCP=9000\u201d. Any events arriving on port 9000 will now have a metadata field attached \u201c.netsource.sc4s_vendor_product=VMWARE_VSPHERE\u201d Define a \u201capp-parser\u201d to apply the metadata field by using a syslog-ng filter to apply the metadata field. Supporting previously unknown sources \u00b6 Many log sources can be supported using one of the flexible options available without specific code known as app-parsers. New supported sources are added regularly. Please submit an issue with a description of the vend/product. Configuration information an a compressed pcap (.zip) from a non-production environment to request support for a new source. Many sources can be self supported. While we encourage sharing new sources via the github project to promote consistency and develop best-practices there is no requirement to engage in the community. Sources that are compliant with RFC 5424,RFC 5425, RFC 5426, or RFC 6587 can be onboarded as simple sources Sources \u201ccompatible\u201d with RFC3164 Note incorrect use of the syslog version, or \u201ccreative\u201d formats in the time stamp or other fields may prevent use as simple sources Common Event Format CEF Also known as ArcSight format Log Extended Format LEEF Almost Syslog \u00b6 Sources sending legacy non conformant 3164 like streams can be assisted by the creation of an \u201cAlmost Syslog\u201d Parser. In an such a parser the goal is to process the syslog header allowing other parsers to correctly parse and handle the event. The following example is take from a currently supported format where the source product used epoch in the time stamp field. #Example event #<134>1 1563249630.774247467 devicename security_event ids_alerted signature=1:28423:1 # In the example note the vendor incorrectly included \"1\" following PRI defined in RFC5424 as indicating a compliant message # The parser must remove the 1 before properly parsing # The epoch time is captured by regex # The epoch time is converted back into an RFC3306 date and provided to the parser block parser syslog_epoch - parser () { channel { filter { message ( ' ^ ( \\ < \\ d + \\ > )( ?: 1 ( ?= )) ? ? ( \\ d { 10 , 13 }( ?: \\ . \\ d + ) ? ) (. * ) ' , flags ( store - matches )); }; parser { date - parser ( format ( ' % s . % f ' , ' % s ' ) template ( \"$2\" ) ); }; parser { syslog - parser ( flags ( assume - utf8 , expect - hostname , guess - timezone ) template ( \"$1 $S_ISODATE $3\" ) ); }; rewrite ( set_rfc3164_epoch ); }; }; application syslog_epoch [ sc4s - almost - syslog ] { parser { syslog_epoch - parser (); }; }; Standard Syslog using message parsing \u00b6 Syslog data conforming to RFC3164 or complying with RFC standards mentioned above can be processed with an app-parser allowing the use of the default port rather than requiring custom ports the following example take from a currently supported source uses the value of \u201cprogram\u201d to identify the source as this program value is unique. Care must be taken to write filter conditions strictly enough to not conflict with similar sources block parser alcatel_switch - parser () { channel { rewrite { r_set_splunk_dest_default ( index ( ' netops ' ) sourcetype ( ' alcatel : switch ' ) vendor ( ' alcatel ' ) product ( ' switch ' ) template ( ' t_hdr_msg ' ) ); }; }; }; application alcatel_switch [ sc4s - syslog ] { filter { program ( ' swlogd ' type ( string ) flags ( prefix )); }; parser { alcatel_switch - parser (); }; }; Standard Syslog vendor product by source \u00b6 In some cases standard syslog is also generic and can not be disambiguated from other sources by message content alone. When this happens and only a single source type is desired the \u201csimple\u201d option above is valid but requires managing a port. The following example allows use of a named port OR the vendor product by source configuration. block parser dell_poweredge_cmc - parser () { channel { rewrite { r_set_splunk_dest_default ( index ( ' infraops ' ) sourcetype ( ' dell : poweredge : cmc : syslog ' ) vendor ( ' dell ' ) product ( ' poweredge ' ) class ( ' cmc ' ) ); }; }; }; application dell_poweredge_cmc [ sc4s - network - source ] { filter { ( \"${.netsource.sc4s_vendor_product}\" eq \"dell_poweredge_cmc\" or \"${SOURCE}\" eq \"s_DELL_POWEREDGE_CMC\" ) and \"${fields.sc4s_vendor_product}\" eq \"\" }; parser { dell_poweredge_cmc - parser (); }; }; Filtering events from output \u00b6 In some cases specific events may be considered \u201cnoise\u201d and functionality must be implemented to prevent forwarding of these events to Splunk In version 2.0.0 of SC4S a new feature was implemented to improve the ease of use and efficiency of this progress. The following example will \u201cnull_queue\u201d or drop cisco IOS device events at the debug level. Note Cisco does not use the PRI to indicate DEBUG a message filter is required. block parser cisco_ios_debug - postfilter () { channel { #In this case the outcome is drop the event other logic such as adding indexed fields or editing the message is possible rewrite ( r_set_dest_splunk_null_queue ); }; }; application cisco_ios_debug - postfilter [ sc4s - postfilter ] { filter { \"${fields.sc4s_vendor}\" eq \"cisco\" and \"${fields.sc4s_product}\" eq \"ios\" #Note regex reads as # start from first position # Any atleast 1 char that is not a `-` # constant '-7-' and message ( ' ^% [ ^ \\ - ] + -7 - ' ); }; parser { cisco_ios_debug - postfilter (); }; }; Another example to drop events based on \u201csrc\u201d and \u201caction\u201d values in message \u00b6 #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-checkpoint_drop block parser app - dest - rewrite - checkpoint_drop - d_fmt_hec_default () { channel { rewrite ( r_set_dest_splunk_null_queue ); }; }; application app - dest - rewrite - checkpoint_drop - d_fmt_hec_default [ sc4s - lp - dest - format - d_hec_fmt ] { filter { match ( ' checkpoint ' value ( ' fields . sc4s_vendor ' ) type ( string )) and match ( ' syslog ' value ( ' fields . sc4s_product ' ) type ( string )) and match ( ' Drop ' value ( ' . SDATA . sc4s @ 2620. action ' ) type ( string )) and match ( ' 12. ' value ( ' . SDATA . sc4s @ 2620. src ' ) type ( string ) flags ( prefix ) ); }; parser { app - dest - rewrite - checkpoint_drop - d_fmt_hec_default (); }; }; The SC4S \u201cfallback\u201d sourcetype \u00b6 If SC4S receives an event on port 514 which has no soup filter, that event will be given a \u201cfallback\u201d sourcetype. If you see events in Splunk with the fallback sourcetype, then you should figure out what source the events are from and determine why these events are not being sourcetyped correctly. The most common reason for events categorized as \u201cfallback\u201d is the lack of a SC4S filter for that source, and in some cases a misconfigured relay which alters the integrity of the message format. In most cases this means a new SC4S filter must be developed. In this situation you can either build a filter or file an issue with the community to request help. The \u201cfallback\u201d sourcetype is formatted in JSON to allow the administrator to see the constituent syslog-ng \u201cmacros\u201d (fields) that have been automatically parsed by the syslog-ng server An RFC3164 (legacy BSD syslog) \u201con the wire\u201d raw message is usually (but unfortunately not always) comprised of the following syslog-ng macros, in this order and spacing: <$PRI> $HOST $LEGACY_MSGHDR$MESSAGE These fields can be very useful in building a new filter for that sourcetype. In addition, the indexed field sc4s_syslog_format is helpful in determining if the incoming message is standard RFC3164. A value of anything other than rfc3164 or rfc5424_strict indicates a vendor perturbation of standard syslog, which will warrant more careful examination when building a filter. Splunk Connect for Syslog and Splunk metadata \u00b6 A key aspect of SC4S is to properly set Splunk metadata prior to the data arriving in Splunk (and before any TA processing takes place. The filters will apply the proper index, source, sourcetype, host, and timestamp metadata automatically by individual data source. Proper values for this metadata (including a recommended index) are included with all \u201cout-of-the-box\u201d log paths included with SC4S and are chosen to properly interface with the corresponding TA in Splunk. The administrator will need to ensure all recommended indexes be created to accept this data if the defaults are not changed. It is understood that default values will need to be changed in many installations. Each source documented in this section has a table entitled \u201cSourcetype and Index Configuration\u201d, which highlights the default index and sourcetype for each source. See the section \u201cSC4S metadata configuration\u201d in the \u201cConfiguration\u201d page for more information on how to override the default values in this table. Unique listening ports \u00b6 SC4S supports unique listening ports for each source technology/log path (e.g. Cisco ASA), which is useful when the device is sending data on a port different from the typical default syslog port (UDP port 514). In some cases, when the source device emits data that is not able to be distinguished from other device types, a unique port is sometimes required. The specific environment variables used for setting \u201cunique ports\u201d are outlined in each source document in this section. In most cases only one \u201cunique port\u201d is needed for each source. However, SC4S also supports multiple network listening ports per source, which can be useful for a narrow set of compliance use cases. When configuring a source port variable to enable multiple ports, use a comma-separated list with no spaces (e.g. SC4S_LISTEN_CISCO_ASA_UDP_PORT=5005,6005 ). Filtering by an extra product description \u00b6 Due to the fact that unique listening port feature differentiate vendor and product based on the first two underscore characters (\u2018_\u2019), it is possible to filter events by an extra string added to the product. For example in case of having several devices of the same type sending logs over different ports it is possible to route it to different indexes based only on port value while retaining proper vendor and product fields. In general, it follows convention: SC4S_LISTEN_ { VENDOR } _ { PRODUCT } _ { PROTOCOL } _PORT = { PORT VALUE 1 },{ PORT VALUE 2 }... But for special use cases it can be extended to: SC4S_LISTEN_ { VENDOR } _ { PRODUCT } _ { ADDITIONAL_STRING } _ { PROTOCOL } _PORT = { PORT VALUE },{ PORT VALUE 2 }... This feature removes the need for complex pre/post filters. Example: SC4S_LISTEN_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 001 _UDP_PORT = 18514 sets : vendor = < example vendor > product = < example product > tag = . source . s_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 001 SC4S_LISTEN_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 002 _UDP_PORT = 28514 sets : vendor = < example vendor > product = < example product > tag = . source . s_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 002","title":"Read First"},{"location":"sources/#introduction","text":"When using Splunk Connect for Syslog to onboard a data source, the syslog-ng \u201capp-parser\u201d performs the operations that are traditionally performed at index-time by the corresponding Technical Add-on installed there. These index-time operations include linebreaking, source/sourcetype setting and timestamping. For this reason, if a data source is exclusively onboarded using SC4S then you will not need to install its corresponding Add-On on the indexers. You must, however, install the Add-on on the search head(s) for the user communities interested in this data source. SC4S is designed to process \u201csyslog\u201d referring to IETF RFC standards 5424, legacy BSD syslog, RFC3164 (Not a standard document), and many \u201calmost\u201d syslog formats. When possible data sources are identified and processed based on characteristics of the event that make them unique as compared to other events for example. Cisco devices using IOS will include \u201d : %\u201d followed by a string. While Arista EOS devices will use a valid RFC3164 header with a value in the \u201cPROGRAM\u201d position with \u201c%\u201d as the first char in the \u201cMESSAGE\u201d portion. This allows two similar event structures to be processed correctly. When identification by message content alone is not possible for example the \u201csshd\u201d program field is commonly used across vendors additional \u201chint\u201d or guidance configuration allows SC4S to better classify events. The hints can be applied by definition of a specific port which will be used as a property of the event or by configuration of a host name/ip pattern. For example \u201cVMWARE VSPHERE\u201d products have a number of \u201cPROGRAM\u201d fields which can be used to identify vmware specific events in the syslog stream and these can be properly sourcetyped automatically however because \u201csshd\u201d is not unique it will be treated as generic \u201cos:nix\u201d events until further configuration is applied. The administrator can take one of two actions to refine the processing for vmware Define a specific port for vmware and reconfigure sources to use the defined port \u201cSC4S_LISTEN_VMWARE_VSPHERE_TCP=9000\u201d. Any events arriving on port 9000 will now have a metadata field attached \u201c.netsource.sc4s_vendor_product=VMWARE_VSPHERE\u201d Define a \u201capp-parser\u201d to apply the metadata field by using a syslog-ng filter to apply the metadata field.","title":"Introduction"},{"location":"sources/#supporting-previously-unknown-sources","text":"Many log sources can be supported using one of the flexible options available without specific code known as app-parsers. New supported sources are added regularly. Please submit an issue with a description of the vend/product. Configuration information an a compressed pcap (.zip) from a non-production environment to request support for a new source. Many sources can be self supported. While we encourage sharing new sources via the github project to promote consistency and develop best-practices there is no requirement to engage in the community. Sources that are compliant with RFC 5424,RFC 5425, RFC 5426, or RFC 6587 can be onboarded as simple sources Sources \u201ccompatible\u201d with RFC3164 Note incorrect use of the syslog version, or \u201ccreative\u201d formats in the time stamp or other fields may prevent use as simple sources Common Event Format CEF Also known as ArcSight format Log Extended Format LEEF","title":"Supporting previously unknown sources"},{"location":"sources/#almost-syslog","text":"Sources sending legacy non conformant 3164 like streams can be assisted by the creation of an \u201cAlmost Syslog\u201d Parser. In an such a parser the goal is to process the syslog header allowing other parsers to correctly parse and handle the event. The following example is take from a currently supported format where the source product used epoch in the time stamp field. #Example event #<134>1 1563249630.774247467 devicename security_event ids_alerted signature=1:28423:1 # In the example note the vendor incorrectly included \"1\" following PRI defined in RFC5424 as indicating a compliant message # The parser must remove the 1 before properly parsing # The epoch time is captured by regex # The epoch time is converted back into an RFC3306 date and provided to the parser block parser syslog_epoch - parser () { channel { filter { message ( ' ^ ( \\ < \\ d + \\ > )( ?: 1 ( ?= )) ? ? ( \\ d { 10 , 13 }( ?: \\ . \\ d + ) ? ) (. * ) ' , flags ( store - matches )); }; parser { date - parser ( format ( ' % s . % f ' , ' % s ' ) template ( \"$2\" ) ); }; parser { syslog - parser ( flags ( assume - utf8 , expect - hostname , guess - timezone ) template ( \"$1 $S_ISODATE $3\" ) ); }; rewrite ( set_rfc3164_epoch ); }; }; application syslog_epoch [ sc4s - almost - syslog ] { parser { syslog_epoch - parser (); }; };","title":"Almost Syslog"},{"location":"sources/#standard-syslog-using-message-parsing","text":"Syslog data conforming to RFC3164 or complying with RFC standards mentioned above can be processed with an app-parser allowing the use of the default port rather than requiring custom ports the following example take from a currently supported source uses the value of \u201cprogram\u201d to identify the source as this program value is unique. Care must be taken to write filter conditions strictly enough to not conflict with similar sources block parser alcatel_switch - parser () { channel { rewrite { r_set_splunk_dest_default ( index ( ' netops ' ) sourcetype ( ' alcatel : switch ' ) vendor ( ' alcatel ' ) product ( ' switch ' ) template ( ' t_hdr_msg ' ) ); }; }; }; application alcatel_switch [ sc4s - syslog ] { filter { program ( ' swlogd ' type ( string ) flags ( prefix )); }; parser { alcatel_switch - parser (); }; };","title":"Standard Syslog using message parsing"},{"location":"sources/#standard-syslog-vendor-product-by-source","text":"In some cases standard syslog is also generic and can not be disambiguated from other sources by message content alone. When this happens and only a single source type is desired the \u201csimple\u201d option above is valid but requires managing a port. The following example allows use of a named port OR the vendor product by source configuration. block parser dell_poweredge_cmc - parser () { channel { rewrite { r_set_splunk_dest_default ( index ( ' infraops ' ) sourcetype ( ' dell : poweredge : cmc : syslog ' ) vendor ( ' dell ' ) product ( ' poweredge ' ) class ( ' cmc ' ) ); }; }; }; application dell_poweredge_cmc [ sc4s - network - source ] { filter { ( \"${.netsource.sc4s_vendor_product}\" eq \"dell_poweredge_cmc\" or \"${SOURCE}\" eq \"s_DELL_POWEREDGE_CMC\" ) and \"${fields.sc4s_vendor_product}\" eq \"\" }; parser { dell_poweredge_cmc - parser (); }; };","title":"Standard Syslog vendor product by source"},{"location":"sources/#filtering-events-from-output","text":"In some cases specific events may be considered \u201cnoise\u201d and functionality must be implemented to prevent forwarding of these events to Splunk In version 2.0.0 of SC4S a new feature was implemented to improve the ease of use and efficiency of this progress. The following example will \u201cnull_queue\u201d or drop cisco IOS device events at the debug level. Note Cisco does not use the PRI to indicate DEBUG a message filter is required. block parser cisco_ios_debug - postfilter () { channel { #In this case the outcome is drop the event other logic such as adding indexed fields or editing the message is possible rewrite ( r_set_dest_splunk_null_queue ); }; }; application cisco_ios_debug - postfilter [ sc4s - postfilter ] { filter { \"${fields.sc4s_vendor}\" eq \"cisco\" and \"${fields.sc4s_product}\" eq \"ios\" #Note regex reads as # start from first position # Any atleast 1 char that is not a `-` # constant '-7-' and message ( ' ^% [ ^ \\ - ] + -7 - ' ); }; parser { cisco_ios_debug - postfilter (); }; };","title":"Filtering events from output"},{"location":"sources/#another-example-to-drop-events-based-on-src-and-action-values-in-message","text":"#filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-checkpoint_drop block parser app - dest - rewrite - checkpoint_drop - d_fmt_hec_default () { channel { rewrite ( r_set_dest_splunk_null_queue ); }; }; application app - dest - rewrite - checkpoint_drop - d_fmt_hec_default [ sc4s - lp - dest - format - d_hec_fmt ] { filter { match ( ' checkpoint ' value ( ' fields . sc4s_vendor ' ) type ( string )) and match ( ' syslog ' value ( ' fields . sc4s_product ' ) type ( string )) and match ( ' Drop ' value ( ' . SDATA . sc4s @ 2620. action ' ) type ( string )) and match ( ' 12. ' value ( ' . SDATA . sc4s @ 2620. src ' ) type ( string ) flags ( prefix ) ); }; parser { app - dest - rewrite - checkpoint_drop - d_fmt_hec_default (); }; };","title":"Another example to drop events based on \"src\" and \"action\" values in message"},{"location":"sources/#the-sc4s-fallback-sourcetype","text":"If SC4S receives an event on port 514 which has no soup filter, that event will be given a \u201cfallback\u201d sourcetype. If you see events in Splunk with the fallback sourcetype, then you should figure out what source the events are from and determine why these events are not being sourcetyped correctly. The most common reason for events categorized as \u201cfallback\u201d is the lack of a SC4S filter for that source, and in some cases a misconfigured relay which alters the integrity of the message format. In most cases this means a new SC4S filter must be developed. In this situation you can either build a filter or file an issue with the community to request help. The \u201cfallback\u201d sourcetype is formatted in JSON to allow the administrator to see the constituent syslog-ng \u201cmacros\u201d (fields) that have been automatically parsed by the syslog-ng server An RFC3164 (legacy BSD syslog) \u201con the wire\u201d raw message is usually (but unfortunately not always) comprised of the following syslog-ng macros, in this order and spacing: <$PRI> $HOST $LEGACY_MSGHDR$MESSAGE These fields can be very useful in building a new filter for that sourcetype. In addition, the indexed field sc4s_syslog_format is helpful in determining if the incoming message is standard RFC3164. A value of anything other than rfc3164 or rfc5424_strict indicates a vendor perturbation of standard syslog, which will warrant more careful examination when building a filter.","title":"The SC4S \"fallback\" sourcetype"},{"location":"sources/#splunk-connect-for-syslog-and-splunk-metadata","text":"A key aspect of SC4S is to properly set Splunk metadata prior to the data arriving in Splunk (and before any TA processing takes place. The filters will apply the proper index, source, sourcetype, host, and timestamp metadata automatically by individual data source. Proper values for this metadata (including a recommended index) are included with all \u201cout-of-the-box\u201d log paths included with SC4S and are chosen to properly interface with the corresponding TA in Splunk. The administrator will need to ensure all recommended indexes be created to accept this data if the defaults are not changed. It is understood that default values will need to be changed in many installations. Each source documented in this section has a table entitled \u201cSourcetype and Index Configuration\u201d, which highlights the default index and sourcetype for each source. See the section \u201cSC4S metadata configuration\u201d in the \u201cConfiguration\u201d page for more information on how to override the default values in this table.","title":"Splunk Connect for Syslog and Splunk metadata"},{"location":"sources/#unique-listening-ports","text":"SC4S supports unique listening ports for each source technology/log path (e.g. Cisco ASA), which is useful when the device is sending data on a port different from the typical default syslog port (UDP port 514). In some cases, when the source device emits data that is not able to be distinguished from other device types, a unique port is sometimes required. The specific environment variables used for setting \u201cunique ports\u201d are outlined in each source document in this section. In most cases only one \u201cunique port\u201d is needed for each source. However, SC4S also supports multiple network listening ports per source, which can be useful for a narrow set of compliance use cases. When configuring a source port variable to enable multiple ports, use a comma-separated list with no spaces (e.g. SC4S_LISTEN_CISCO_ASA_UDP_PORT=5005,6005 ).","title":"Unique listening ports"},{"location":"sources/#filtering-by-an-extra-product-description","text":"Due to the fact that unique listening port feature differentiate vendor and product based on the first two underscore characters (\u2018_\u2019), it is possible to filter events by an extra string added to the product. For example in case of having several devices of the same type sending logs over different ports it is possible to route it to different indexes based only on port value while retaining proper vendor and product fields. In general, it follows convention: SC4S_LISTEN_ { VENDOR } _ { PRODUCT } _ { PROTOCOL } _PORT = { PORT VALUE 1 },{ PORT VALUE 2 }... But for special use cases it can be extended to: SC4S_LISTEN_ { VENDOR } _ { PRODUCT } _ { ADDITIONAL_STRING } _ { PROTOCOL } _PORT = { PORT VALUE },{ PORT VALUE 2 }... This feature removes the need for complex pre/post filters. Example: SC4S_LISTEN_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 001 _UDP_PORT = 18514 sets : vendor = < example vendor > product = < example product > tag = . source . s_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 001 SC4S_LISTEN_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 002 _UDP_PORT = 28514 sets : vendor = < example vendor > product = < example product > tag = . source . s_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01 - 002","title":"Filtering by an extra product description"},{"location":"sources/base/cef/","text":"Common Event Format (CEF) \u00b6 Product - Various products that send CEF-format messages via syslog \u00b6 Each CEF product should have their own source entry in this documentation set. In a departure from normal configuration, all CEF products should use the \u201cCEF\u201d version of the unique port and archive environment variable settings (rather than a unique one per product), as the CEF log path handles all products sending events to SC4S in the CEF format. Examples of this include Arcsight, Imperva, and Cyberark. Therefore, the CEF environment variables for unique port, archive, etc. should be set only once . If your deployment has multiple CEF devices that send to more than one port, set the CEF unique port variable(s) as a comma-separated list. See Unique Listening Ports for details. The source documentation included below is a reference baseline for any product that sends data using the CEF log path. Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Product Manual https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm Splunk Metadata with CEF events \u00b6 The keys (first column) in splunk_metadata.csv for CEF data sources have a slightly different meaning than those for non-CEF ones. The typical vendor_product syntax is instead replaced by checks against specific columns of the CEF event \u2013 namely the first, second, and fourth columns following the leading CEF:0 (\u201ccolumn 0\u201d). These specific columns refer to the CEF device_vendor , device_product , and device_event_class , respectively. The third column, device_version , is not used for metadata assignment. SC4S sets metadata based on the first two columns, and (optionally) the fourth. While the key (first column) in the splunk_metadata file for non-CEF sources uses a \u201cvendor_product\u201d syntax that is arbitrary, the syntax for this key for CEF events is based on the actual contents of columns 1,2 and 4 from the CEF event, namely: device_vendor _ device_product _ device_class The final device_class portion is optional. Therefore, CEF entries in splunk_metadata can have a key representing the vendor and product, and others representing a vendor and product coupled with one or more additional classes. This allows for more granular metadata assignment (or overrides). Here is a snippet of a sample Imperva CEF event that includes a CEF device class entry (which is \u201cFirewall\u201d): Apr 19 10:29:53 3.3.3.3 CEF:0|Imperva Inc.|SecureSphere|12.0.0|Firewall|SSL Untraceable Connection|Medium| and the corresponding match in splunk_metadata.csv : Imperva Inc._SecureSphere_Firewall,sourcetype,imperva:waf:firewall:cef Default Sourcetype \u00b6 sourcetype notes cef Common sourcetype Default Source \u00b6 source notes Varies Varies Default Index Configuration \u00b6 key source index notes Vendor_Product Varies main none Filter type \u00b6 MSG Parse: This filter parses message content Options \u00b6 Variable default description SC4S_LISTEN_CEF_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_CEF_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_CEF_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_CEF no Enable archive to disk for this specific source SC4S_DEST_CEF_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Common Event Format (CEF)"},{"location":"sources/base/cef/#common-event-format-cef","text":"","title":"Common Event Format (CEF)"},{"location":"sources/base/cef/#product-various-products-that-send-cef-format-messages-via-syslog","text":"Each CEF product should have their own source entry in this documentation set. In a departure from normal configuration, all CEF products should use the \u201cCEF\u201d version of the unique port and archive environment variable settings (rather than a unique one per product), as the CEF log path handles all products sending events to SC4S in the CEF format. Examples of this include Arcsight, Imperva, and Cyberark. Therefore, the CEF environment variables for unique port, archive, etc. should be set only once . If your deployment has multiple CEF devices that send to more than one port, set the CEF unique port variable(s) as a comma-separated list. See Unique Listening Ports for details. The source documentation included below is a reference baseline for any product that sends data using the CEF log path. Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Product Manual https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm","title":"Product - Various products that send CEF-format messages via syslog"},{"location":"sources/base/cef/#splunk-metadata-with-cef-events","text":"The keys (first column) in splunk_metadata.csv for CEF data sources have a slightly different meaning than those for non-CEF ones. The typical vendor_product syntax is instead replaced by checks against specific columns of the CEF event \u2013 namely the first, second, and fourth columns following the leading CEF:0 (\u201ccolumn 0\u201d). These specific columns refer to the CEF device_vendor , device_product , and device_event_class , respectively. The third column, device_version , is not used for metadata assignment. SC4S sets metadata based on the first two columns, and (optionally) the fourth. While the key (first column) in the splunk_metadata file for non-CEF sources uses a \u201cvendor_product\u201d syntax that is arbitrary, the syntax for this key for CEF events is based on the actual contents of columns 1,2 and 4 from the CEF event, namely: device_vendor _ device_product _ device_class The final device_class portion is optional. Therefore, CEF entries in splunk_metadata can have a key representing the vendor and product, and others representing a vendor and product coupled with one or more additional classes. This allows for more granular metadata assignment (or overrides). Here is a snippet of a sample Imperva CEF event that includes a CEF device class entry (which is \u201cFirewall\u201d): Apr 19 10:29:53 3.3.3.3 CEF:0|Imperva Inc.|SecureSphere|12.0.0|Firewall|SSL Untraceable Connection|Medium| and the corresponding match in splunk_metadata.csv : Imperva Inc._SecureSphere_Firewall,sourcetype,imperva:waf:firewall:cef","title":"Splunk Metadata with CEF events"},{"location":"sources/base/cef/#default-sourcetype","text":"sourcetype notes cef Common sourcetype","title":"Default Sourcetype"},{"location":"sources/base/cef/#default-source","text":"source notes Varies Varies","title":"Default Source"},{"location":"sources/base/cef/#default-index-configuration","text":"key source index notes Vendor_Product Varies main none","title":"Default Index Configuration"},{"location":"sources/base/cef/#filter-type","text":"MSG Parse: This filter parses message content","title":"Filter type"},{"location":"sources/base/cef/#options","text":"Variable default description SC4S_LISTEN_CEF_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_CEF_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_CEF_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_CEF no Enable archive to disk for this specific source SC4S_DEST_CEF_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Options"},{"location":"sources/base/leef/","text":"Log Extended Event Format (LEEF) \u00b6 Product - Various products that send LEEF V1 and V2 format messages via syslog \u00b6 Each LEEF product should have their own source entry in this documentation set by vendor. In a departure from normal configuration, all LEEF products should use the \u201cLEEF\u201d version of the unique port and archive environment variable settings (rather than a unique one per product), as the LEEF log path handles all products sending events to SC4S in the LEEF format. Examples of this include QRadar itself as well as other legacy systems. Therefore, the LEEF environment variables for unique port, archive, etc. should be set only once . If your deployment has multiple LEEF devices that send to more than one port, set the LEEF unique port variable(s) as a comma-separated list. See Unique Listening Ports for details. The source documentation included below is a reference baseline for any product that sends data using the LEEF log path. Some vendors implement LEEF v2.0 format events incorrectly, omitting the required \u201ckey=value\u201d separator field from the LEEF header, thus forcing the consumer to assume the default tab \\t character. SC4S will correctly process this omission, but will not correctly process other non-compliant formats. The LEEF format allows for the inclusion of a field devTime containing the device timestamp and allows the sender to also specify the format of this timestamp in another field called devTimeFormat , which uses the Java Time format. SC4S uses syslog-ng strptime format which is not directly translatable to the Java Time format. Therefore, SC4S has provided support for the following common formats. If needed, additional time formats can be requested via an issue on github. '%s.%f', '%s', '%b %d %H:%M:%S.%f', '%b %d %H:%M:%S', '%b %d %Y %H:%M:%S.%f', '%b %e %Y %H:%M:%S', '%b %e %H:%M:%S.%f', '%b %e %H:%M:%S', '%b %e %Y %H:%M:%S.%f', '%b %e %Y %H:%M:%S' Ref Link Splunk Add-on LEEF None Product Manual https://www.ibm.com/support/knowledgecenter/SS42VS_DSM/com.ibm.dsm.doc/c_LEEF_Format_Guide_intro.html Splunk Metadata with LEEF events \u00b6 The keys (first column) in splunk_metadata.csv for LEEF data sources have a slightly different meaning than those for non-LEEF ones. The typical vendor_product syntax is instead replaced by checks against specific columns of the LEEF event \u2013 namely the first and second, columns following the leading LEEF:VERSION (\u201ccolumn 0\u201d). These specific columns refer to the LEEF device_vendor , and device_product , respectively. device_vendor _ device_product Here is a snippet of a sample LANCOPE event in LEEF 2.0 format: <111>Apr 19 10:29:53 3.3.3.3 LEEF:2.0|Lancope|StealthWatch|1.0|41|^|src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black and the corresponding match in splunk_metadata.csv : Lancope_StealthWatch,source,lancope:stealthwatch Default Sourcetype \u00b6 sourcetype notes LEEF:1 Common sourcetype for all LEEF v1 events LEEF:2: Common sourcetype for all LEEF v2 events separator is the printable literal or hex value of the separator used in the event Default Source \u00b6 source notes vendor : product Varies Default Index Configuration \u00b6 key source index notes Vendor_Product Varies main none Filter type \u00b6 MSG Parse: This filter parses message content Options \u00b6 Variable default description SC4S_LISTEN_LEEF_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_LEEF_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_LEEF_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_LEEF no Enable archive to disk for this specific source SC4S_DEST_LEEF_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Log Extended Event Format (LEEF)"},{"location":"sources/base/leef/#log-extended-event-format-leef","text":"","title":"Log Extended Event Format (LEEF)"},{"location":"sources/base/leef/#product-various-products-that-send-leef-v1-and-v2-format-messages-via-syslog","text":"Each LEEF product should have their own source entry in this documentation set by vendor. In a departure from normal configuration, all LEEF products should use the \u201cLEEF\u201d version of the unique port and archive environment variable settings (rather than a unique one per product), as the LEEF log path handles all products sending events to SC4S in the LEEF format. Examples of this include QRadar itself as well as other legacy systems. Therefore, the LEEF environment variables for unique port, archive, etc. should be set only once . If your deployment has multiple LEEF devices that send to more than one port, set the LEEF unique port variable(s) as a comma-separated list. See Unique Listening Ports for details. The source documentation included below is a reference baseline for any product that sends data using the LEEF log path. Some vendors implement LEEF v2.0 format events incorrectly, omitting the required \u201ckey=value\u201d separator field from the LEEF header, thus forcing the consumer to assume the default tab \\t character. SC4S will correctly process this omission, but will not correctly process other non-compliant formats. The LEEF format allows for the inclusion of a field devTime containing the device timestamp and allows the sender to also specify the format of this timestamp in another field called devTimeFormat , which uses the Java Time format. SC4S uses syslog-ng strptime format which is not directly translatable to the Java Time format. Therefore, SC4S has provided support for the following common formats. If needed, additional time formats can be requested via an issue on github. '%s.%f', '%s', '%b %d %H:%M:%S.%f', '%b %d %H:%M:%S', '%b %d %Y %H:%M:%S.%f', '%b %e %Y %H:%M:%S', '%b %e %H:%M:%S.%f', '%b %e %H:%M:%S', '%b %e %Y %H:%M:%S.%f', '%b %e %Y %H:%M:%S' Ref Link Splunk Add-on LEEF None Product Manual https://www.ibm.com/support/knowledgecenter/SS42VS_DSM/com.ibm.dsm.doc/c_LEEF_Format_Guide_intro.html","title":"Product - Various products that send LEEF V1 and V2 format messages via syslog"},{"location":"sources/base/leef/#splunk-metadata-with-leef-events","text":"The keys (first column) in splunk_metadata.csv for LEEF data sources have a slightly different meaning than those for non-LEEF ones. The typical vendor_product syntax is instead replaced by checks against specific columns of the LEEF event \u2013 namely the first and second, columns following the leading LEEF:VERSION (\u201ccolumn 0\u201d). These specific columns refer to the LEEF device_vendor , and device_product , respectively. device_vendor _ device_product Here is a snippet of a sample LANCOPE event in LEEF 2.0 format: <111>Apr 19 10:29:53 3.3.3.3 LEEF:2.0|Lancope|StealthWatch|1.0|41|^|src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black and the corresponding match in splunk_metadata.csv : Lancope_StealthWatch,source,lancope:stealthwatch","title":"Splunk Metadata with LEEF events"},{"location":"sources/base/leef/#default-sourcetype","text":"sourcetype notes LEEF:1 Common sourcetype for all LEEF v1 events LEEF:2: Common sourcetype for all LEEF v2 events separator is the printable literal or hex value of the separator used in the event","title":"Default Sourcetype"},{"location":"sources/base/leef/#default-source","text":"source notes vendor : product Varies","title":"Default Source"},{"location":"sources/base/leef/#default-index-configuration","text":"key source index notes Vendor_Product Varies main none","title":"Default Index Configuration"},{"location":"sources/base/leef/#filter-type","text":"MSG Parse: This filter parses message content","title":"Filter type"},{"location":"sources/base/leef/#options","text":"Variable default description SC4S_LISTEN_LEEF_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_LEEF_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_LEEF_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_LEEF no Enable archive to disk for this specific source SC4S_DEST_LEEF_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Options"},{"location":"sources/base/nix/","text":"Generic *NIX \u00b6 Many appliance vendor utilize Linux and BSD distributions as the foundation of the solution. When configured to log via syslog, these devices\u2019 OS logs (from a security perspective) can be monitored using the common Splunk Nix TA. Note: This is NOT a replacement for or alternative to the Splunk Universal forwarder on Linux and Unix. For general-purpose server applications, the Universal Forwarder offers more comprehensive collection of events and metrics appropriate for both security and operations use cases. Ref Link Splunk Add-on https://splunkbase.splunk.com/app/833/ Sourcetypes \u00b6 sourcetype notes nix:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes nix_syslog nix:syslog osnix none Filter type \u00b6 MSG Parse: This filter parses message content Setup and Configuration \u00b6 Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. Options \u00b6 Variable default description SC4S_ARCHIVE_NIX_SYSLOG no Enable archive to disk for this specific source SC4S_DEST_NIX_SYSLOG_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Generic *NIX"},{"location":"sources/base/nix/#generic-nix","text":"Many appliance vendor utilize Linux and BSD distributions as the foundation of the solution. When configured to log via syslog, these devices\u2019 OS logs (from a security perspective) can be monitored using the common Splunk Nix TA. Note: This is NOT a replacement for or alternative to the Splunk Universal forwarder on Linux and Unix. For general-purpose server applications, the Universal Forwarder offers more comprehensive collection of events and metrics appropriate for both security and operations use cases. Ref Link Splunk Add-on https://splunkbase.splunk.com/app/833/","title":"Generic *NIX"},{"location":"sources/base/nix/#sourcetypes","text":"sourcetype notes nix:syslog None","title":"Sourcetypes"},{"location":"sources/base/nix/#sourcetype-and-index-configuration","text":"key sourcetype index notes nix_syslog nix:syslog osnix none","title":"Sourcetype and Index Configuration"},{"location":"sources/base/nix/#filter-type","text":"MSG Parse: This filter parses message content","title":"Filter type"},{"location":"sources/base/nix/#setup-and-configuration","text":"Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source.","title":"Setup and Configuration"},{"location":"sources/base/nix/#options","text":"Variable default description SC4S_ARCHIVE_NIX_SYSLOG no Enable archive to disk for this specific source SC4S_DEST_NIX_SYSLOG_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Options"},{"location":"sources/base/simple/","text":"Simple Log path by port \u00b6 The SIMPLE source configuration allows configuration of a log path for SC4S using a single port to a single index/sourcetype combination to quickly onboard new sources that have not been formally supported in the product. Source data must use RFC5424 or a common variant of RFC3164 formatting. NOTE: This is an interim step that should be used only to quickly onboard well-formatted data that is being sent over a unique port. A dedicated log path should be developed for the data source to facilitate further parsing and enrichment, as well as allowing the potential sending of this data source over the default (514) listening port. Splunk Metadata with SIMPLE events \u00b6 The keys (first column) in splunk_metadata.csv for SIMPLE data sources is a user-created key using the vendor_product convention. For example, to on-board a new product first firewall using a source type of first:firewall and index netfw , add the following two lines to the configuration file as shown: first_firewall,index,netfw first_firewall,sourcetype,first:firewall Options \u00b6 For the variables below, replace VENDOR_PRODUCT with the key (converted to upper case) used in the splunk_metadata.csv . Based on the example above, to establish a tcp listener for first firewall we would use SC4S_LISTEN_SIMPLE_FIRST_FIREWALL_TCP_PORT . Variable default description SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_SIMPLE_VENDOR_PRODUCT no Enable archive to disk for this specific source SC4S_DEST_SIMPLE_VENDOR_PRODUCT_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source Important Notes \u00b6 SIMPLE data sources must use RFC5424 or a common variant of RFC3164 formatting. Each SIMPLE data source must listen on its own unique port list. Port overlap with other sources, either SIMPLE ones or those served by regular log paths, are not allowed and will cause an error at startup. The key(s) chosen for splunk_metadata.csv must be in the form vendor_product (lower case). These same keys can be used for a regular SC4S log path developed in the future. The SIMPLE environment variables must have a core of VENDOR_PRODUCT (upper case). Take care to remove the SIMPLE form of these LISTEN variables after a regular SC4S log path is developed for a given source. You can, of course, continue to listen for this source on the same unique ports after having developed the new log path, but use the SC4S_LISTEN___PORT form of the variable to ensure the newly developed log path will listen on the specified unique ports.","title":"Simple Log path by port"},{"location":"sources/base/simple/#simple-log-path-by-port","text":"The SIMPLE source configuration allows configuration of a log path for SC4S using a single port to a single index/sourcetype combination to quickly onboard new sources that have not been formally supported in the product. Source data must use RFC5424 or a common variant of RFC3164 formatting. NOTE: This is an interim step that should be used only to quickly onboard well-formatted data that is being sent over a unique port. A dedicated log path should be developed for the data source to facilitate further parsing and enrichment, as well as allowing the potential sending of this data source over the default (514) listening port.","title":"Simple Log path by port"},{"location":"sources/base/simple/#splunk-metadata-with-simple-events","text":"The keys (first column) in splunk_metadata.csv for SIMPLE data sources is a user-created key using the vendor_product convention. For example, to on-board a new product first firewall using a source type of first:firewall and index netfw , add the following two lines to the configuration file as shown: first_firewall,index,netfw first_firewall,sourcetype,first:firewall","title":"Splunk Metadata with SIMPLE events"},{"location":"sources/base/simple/#options","text":"For the variables below, replace VENDOR_PRODUCT with the key (converted to upper case) used in the splunk_metadata.csv . Based on the example above, to establish a tcp listener for first firewall we would use SC4S_LISTEN_SIMPLE_FIRST_FIREWALL_TCP_PORT . Variable default description SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_SIMPLE_VENDOR_PRODUCT no Enable archive to disk for this specific source SC4S_DEST_SIMPLE_VENDOR_PRODUCT_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Options"},{"location":"sources/base/simple/#important-notes","text":"SIMPLE data sources must use RFC5424 or a common variant of RFC3164 formatting. Each SIMPLE data source must listen on its own unique port list. Port overlap with other sources, either SIMPLE ones or those served by regular log paths, are not allowed and will cause an error at startup. The key(s) chosen for splunk_metadata.csv must be in the form vendor_product (lower case). These same keys can be used for a regular SC4S log path developed in the future. The SIMPLE environment variables must have a core of VENDOR_PRODUCT (upper case). Take care to remove the SIMPLE form of these LISTEN variables after a regular SC4S log path is developed for a given source. You can, of course, continue to listen for this source on the same unique ports after having developed the new log path, but use the SC4S_LISTEN___PORT form of the variable to ensure the newly developed log path will listen on the specified unique ports.","title":"Important Notes"},{"location":"sources/vendor/AVI/","text":"Common \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual https://avinetworks.com/docs/latest/syslog-formats/ Sourcetypes \u00b6 sourcetype notes avi:events None Sourcetype and Index Configuration \u00b6 key sourcetype index notes avi_vantage avi:events netops none","title":"Common"},{"location":"sources/vendor/AVI/#common","text":"","title":"Common"},{"location":"sources/vendor/AVI/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/AVI/#links","text":"Ref Link Splunk Add-on None Product Manual https://avinetworks.com/docs/latest/syslog-formats/","title":"Links"},{"location":"sources/vendor/AVI/#sourcetypes","text":"sourcetype notes avi:events None","title":"Sourcetypes"},{"location":"sources/vendor/AVI/#sourcetype-and-index-configuration","text":"key sourcetype index notes avi_vantage avi:events netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Alcatel/Switch/","text":"Switch \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes alcatel:switch None Sourcetype and Index Configuration \u00b6 key sourcetype index notes alcatel_switch alcatel:switch netops none","title":"Switch"},{"location":"sources/vendor/Alcatel/Switch/#switch","text":"","title":"Switch"},{"location":"sources/vendor/Alcatel/Switch/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Alcatel/Switch/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Alcatel/Switch/#sourcetypes","text":"sourcetype notes alcatel:switch None","title":"Sourcetypes"},{"location":"sources/vendor/Alcatel/Switch/#sourcetype-and-index-configuration","text":"key sourcetype index notes alcatel_switch alcatel:switch netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Alsid/Alsid/","text":"Alsid \u00b6 The product has been purchased and republished under a new product name by Tenable this configuration is obsolete. Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/5173/ Product Manual unknown Sourcetypes \u00b6 sourcetype notes alsid:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes alsid_syslog alsid:syslog oswinsec none","title":"Alsid"},{"location":"sources/vendor/Alsid/Alsid/#alsid","text":"The product has been purchased and republished under a new product name by Tenable this configuration is obsolete.","title":"Alsid"},{"location":"sources/vendor/Alsid/Alsid/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Alsid/Alsid/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/5173/ Product Manual unknown","title":"Links"},{"location":"sources/vendor/Alsid/Alsid/#sourcetypes","text":"sourcetype notes alsid:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Alsid/Alsid/#sourcetype-and-index-configuration","text":"key sourcetype index notes alsid_syslog alsid:syslog oswinsec none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Arista/","text":"EOS \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes arista:eos:* None Sourcetype and Index Configuration \u00b6 key sourcetype index notes arista_eos arista:eos netops none arista_eos_$PROCESSNAME arista:eosq netops The \u201cprocess\u201d field is used from the event","title":"EOS"},{"location":"sources/vendor/Arista/#eos","text":"","title":"EOS"},{"location":"sources/vendor/Arista/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Arista/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Arista/#sourcetypes","text":"sourcetype notes arista:eos:* None","title":"Sourcetypes"},{"location":"sources/vendor/Arista/#sourcetype-and-index-configuration","text":"key sourcetype index notes arista_eos arista:eos netops none arista_eos_$PROCESSNAME arista:eosq netops The \u201cprocess\u201d field is used from the event","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Aruba/ap/","text":"Access Points \u00b6 Key facts \u00b6 MSG Format based filter (Partial) Legacy BSD Format default port 514 Links \u00b6 Ref Link Sourcetypes \u00b6 sourcetype notes aruba:syslog Dynamically Created Index Configuration \u00b6 key index notes aruba_ap netops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-aruba_ap.conf #File name provided is a suggestion it must be globally unique application app - vps - test - aruba_ap [ sc4s - vps ] { filter { host ( \"aruba-ap-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' aruba ' ) product ( ' ap ' ) ); }; };","title":"Access Points"},{"location":"sources/vendor/Aruba/ap/#access-points","text":"","title":"Access Points"},{"location":"sources/vendor/Aruba/ap/#key-facts","text":"MSG Format based filter (Partial) Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Aruba/ap/#links","text":"Ref Link","title":"Links"},{"location":"sources/vendor/Aruba/ap/#sourcetypes","text":"sourcetype notes aruba:syslog Dynamically Created","title":"Sourcetypes"},{"location":"sources/vendor/Aruba/ap/#index-configuration","text":"key index notes aruba_ap netops none","title":"Index Configuration"},{"location":"sources/vendor/Aruba/ap/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-aruba_ap.conf #File name provided is a suggestion it must be globally unique application app - vps - test - aruba_ap [ sc4s - vps ] { filter { host ( \"aruba-ap-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' aruba ' ) product ( ' ap ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Aruba/clearpass/","text":"Clearpass \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Sourcetypes \u00b6 sourcetype notes aruba:clearpass Dynamically Created Index Configuration \u00b6 key index notes aruba_clearpass netops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-aruba_clearpass.conf #File name provided is a suggestion it must be globally unique application app - vps - test - aruba_clearpass [ sc4s - vps ] { filter { host ( \"aruba-cp-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' aruba ' ) product ( ' clearpass ' ) ); }; };","title":"Clearpass"},{"location":"sources/vendor/Aruba/clearpass/#clearpass","text":"","title":"Clearpass"},{"location":"sources/vendor/Aruba/clearpass/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Aruba/clearpass/#links","text":"Ref Link","title":"Links"},{"location":"sources/vendor/Aruba/clearpass/#sourcetypes","text":"sourcetype notes aruba:clearpass Dynamically Created","title":"Sourcetypes"},{"location":"sources/vendor/Aruba/clearpass/#index-configuration","text":"key index notes aruba_clearpass netops none","title":"Index Configuration"},{"location":"sources/vendor/Aruba/clearpass/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-aruba_clearpass.conf #File name provided is a suggestion it must be globally unique application app - vps - test - aruba_clearpass [ sc4s - vps ] { filter { host ( \"aruba-cp-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' aruba ' ) product ( ' clearpass ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Avaya/","text":"SIP Manager \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514/UDP Vendor source is not conformant to RFC3194 by improperly sending unescaped \\n Use of TCP will cause dataloss Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes avaya:avaya None Sourcetype and Index Configuration \u00b6 key sourcetype index notes avaya_sipmgr avaya:avaya main none","title":"SIP Manager"},{"location":"sources/vendor/Avaya/#sip-manager","text":"","title":"SIP Manager"},{"location":"sources/vendor/Avaya/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514/UDP Vendor source is not conformant to RFC3194 by improperly sending unescaped \\n Use of TCP will cause dataloss","title":"Key facts"},{"location":"sources/vendor/Avaya/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Avaya/#sourcetypes","text":"sourcetype notes avaya:avaya None","title":"Sourcetypes"},{"location":"sources/vendor/Avaya/#sourcetype-and-index-configuration","text":"key sourcetype index notes avaya_sipmgr avaya:avaya main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Barracuda/waf/","text":"WAF (Cloud) \u00b6 Key facts \u00b6 MSG Format based filter RFC 5424 Framed Links \u00b6 Ref Link Splunk Add-on None Product Manual https://campus.barracuda.com/product/WAAS/doc/79462622/log-export Sourcetypes \u00b6 sourcetype notes barracuda:tr none Sourcetype and Index Configuration \u00b6 key sourcetype index notes barracuda_waf barracuda:web:firewall netwaf None Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-barracuda_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - barracuda_syslog [ sc4s - vps ] { filter { netmask ( 169.254.100.1 / 24 ) or host ( \"barracuda\" type ( string ) flags ( ignore - case )) }; parser { p_set_netsource_fields ( vendor ( ' barracuda ' ) product ( ' syslog ' ) ) ; }; };","title":"WAF (Cloud)"},{"location":"sources/vendor/Barracuda/waf/#waf-cloud","text":"","title":"WAF (Cloud)"},{"location":"sources/vendor/Barracuda/waf/#key-facts","text":"MSG Format based filter RFC 5424 Framed","title":"Key facts"},{"location":"sources/vendor/Barracuda/waf/#links","text":"Ref Link Splunk Add-on None Product Manual https://campus.barracuda.com/product/WAAS/doc/79462622/log-export","title":"Links"},{"location":"sources/vendor/Barracuda/waf/#sourcetypes","text":"sourcetype notes barracuda:tr none","title":"Sourcetypes"},{"location":"sources/vendor/Barracuda/waf/#sourcetype-and-index-configuration","text":"key sourcetype index notes barracuda_waf barracuda:web:firewall netwaf None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Barracuda/waf/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-barracuda_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - barracuda_syslog [ sc4s - vps ] { filter { netmask ( 169.254.100.1 / 24 ) or host ( \"barracuda\" type ( string ) flags ( ignore - case )) }; parser { p_set_netsource_fields ( vendor ( ' barracuda ' ) product ( ' syslog ' ) ) ; }; };","title":"Parser Configuration"},{"location":"sources/vendor/Barracuda/waf_on_prem/","text":"Barracuda WAF (On Premises) \u00b6 Key facts \u00b6 RFC 5424 Framed with non-standard ISO timestamp: %Y-%m-%d %H:%M:%S.%f %z MSG Format based filter Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3776 Product Manual https://campus.barracuda.com/product/webapplicationfirewall/doc/92767349/exporting-log-formats/ Sourcetypes \u00b6 sourcetype notes barracuda:system program(\u201cSYS\u201d) barracuda:waf program(\u201cWF\u201d) barracuda:web program(\u201cTR\u201d) barracuda:audit program(\u201cAUDIT\u201d) barracuda:firewall program(\u201cNF\u201d) Sourcetype and Index Configuration \u00b6 key sourcetype index notes barracuda_system barracuda:system netwaf None barracuda_waf barracuda:waf netwaf None barracuda_web barracuda:web netwaf None barracuda_audit barracuda:audit netwaf None barracuda_firewall barracuda:firewall netwaf None","title":"Barracuda WAF (On Premises)"},{"location":"sources/vendor/Barracuda/waf_on_prem/#barracuda-waf-on-premises","text":"","title":"Barracuda WAF (On Premises)"},{"location":"sources/vendor/Barracuda/waf_on_prem/#key-facts","text":"RFC 5424 Framed with non-standard ISO timestamp: %Y-%m-%d %H:%M:%S.%f %z MSG Format based filter","title":"Key facts"},{"location":"sources/vendor/Barracuda/waf_on_prem/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3776 Product Manual https://campus.barracuda.com/product/webapplicationfirewall/doc/92767349/exporting-log-formats/","title":"Links"},{"location":"sources/vendor/Barracuda/waf_on_prem/#sourcetypes","text":"sourcetype notes barracuda:system program(\u201cSYS\u201d) barracuda:waf program(\u201cWF\u201d) barracuda:web program(\u201cTR\u201d) barracuda:audit program(\u201cAUDIT\u201d) barracuda:firewall program(\u201cNF\u201d)","title":"Sourcetypes"},{"location":"sources/vendor/Barracuda/waf_on_prem/#sourcetype-and-index-configuration","text":"key sourcetype index notes barracuda_system barracuda:system netwaf None barracuda_waf barracuda:waf netwaf None barracuda_web barracuda:web netwaf None barracuda_audit barracuda:audit netwaf None barracuda_firewall barracuda:firewall netwaf None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/BeyondTrust/sra/","text":"Secure Remote Access (Bomgar) \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes beyondtrust:sra None Sourcetype and Index Configuration \u00b6 key sourcetype index notes beyondtrust_sra beyondtrust:sra infraops none Options \u00b6 Variable default description SC4S_DEST_BEYONDTRUST_SRA_SPLUNK_HEC_FMT JSON Restructure data from vendor format to json for splunk destinations set to \u201cNONE\u201d for native format SC4S_DEST_BEYONDTRUST_SRA_SYSLOG_FMT SDATA Restructure data from vendor format to SDATA for SYSLOG destinations set to \u201cNONE\u201d for native ormat","title":"Secure Remote Access (Bomgar)"},{"location":"sources/vendor/BeyondTrust/sra/#secure-remote-access-bomgar","text":"","title":"Secure Remote Access (Bomgar)"},{"location":"sources/vendor/BeyondTrust/sra/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/BeyondTrust/sra/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/BeyondTrust/sra/#sourcetypes","text":"sourcetype notes beyondtrust:sra None","title":"Sourcetypes"},{"location":"sources/vendor/BeyondTrust/sra/#sourcetype-and-index-configuration","text":"key sourcetype index notes beyondtrust_sra beyondtrust:sra infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/BeyondTrust/sra/#options","text":"Variable default description SC4S_DEST_BEYONDTRUST_SRA_SPLUNK_HEC_FMT JSON Restructure data from vendor format to json for splunk destinations set to \u201cNONE\u201d for native format SC4S_DEST_BEYONDTRUST_SRA_SYSLOG_FMT SDATA Restructure data from vendor format to SDATA for SYSLOG destinations set to \u201cNONE\u201d for native ormat","title":"Options"},{"location":"sources/vendor/Broadcom/brightmail/","text":"Brightmail \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on TBD Product Manual https://support.symantec.com/us/en/article.howto38250.html Sourcetypes \u00b6 sourcetype notes symantec:smg Requires version TA 3.6 Sourcetype and Index Configuration \u00b6 key sourcetype index notes symantec_brightmail symantec:smg email none Options \u00b6 Variable default description SC4S_SOURCE_FF_SYMANTEC_BRIGHTMAIL_GROUPMSG yes Email processing events generated by the bmserver process will be grouped by host+program+pid+msg ID into a single event SC4S_DEST_SYMANTEC_BRIGHTMAIL_SPLUNK_HEC_FMT empty if \u201cJSON\u201d and GROUPMSG is enabled format the event in json SC4S_DEST_SYMANTEC_BRIGHTMAIL_SYSLOG_FMT empty if \u201cSDATA\u201d and GROUPMSG is enabled format the event in rfc5424 sdata","title":"Brightmail"},{"location":"sources/vendor/Broadcom/brightmail/#brightmail","text":"","title":"Brightmail"},{"location":"sources/vendor/Broadcom/brightmail/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Broadcom/brightmail/#links","text":"Ref Link Splunk Add-on TBD Product Manual https://support.symantec.com/us/en/article.howto38250.html","title":"Links"},{"location":"sources/vendor/Broadcom/brightmail/#sourcetypes","text":"sourcetype notes symantec:smg Requires version TA 3.6","title":"Sourcetypes"},{"location":"sources/vendor/Broadcom/brightmail/#sourcetype-and-index-configuration","text":"key sourcetype index notes symantec_brightmail symantec:smg email none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Broadcom/brightmail/#options","text":"Variable default description SC4S_SOURCE_FF_SYMANTEC_BRIGHTMAIL_GROUPMSG yes Email processing events generated by the bmserver process will be grouped by host+program+pid+msg ID into a single event SC4S_DEST_SYMANTEC_BRIGHTMAIL_SPLUNK_HEC_FMT empty if \u201cJSON\u201d and GROUPMSG is enabled format the event in json SC4S_DEST_SYMANTEC_BRIGHTMAIL_SYSLOG_FMT empty if \u201cSDATA\u201d and GROUPMSG is enabled format the event in rfc5424 sdata","title":"Options"},{"location":"sources/vendor/Broadcom/dlp/","text":"Symantec DLP \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on Symatec DLP https://splunkbase.splunk.com/app/3029/ Source doc https://knowledge.broadcom.com/external/article/159509/generating-syslog-messages-from-data-los.html Sourcetypes \u00b6 sourcetype notes symantec:dlp:syslog None Index Configuration \u00b6 key sourcetype index notes symantec_dlp symantec:dlp:syslog netdlp none Option 1: Correct Source syslog formats \u00b6 Syslog Alert Response \u00b6 Login to Symantec DLP and edit the Syslog Response rule. The default configuration will appear as follows $POLICY$^^$INCIDENT_ID$^^$SUBJECT$^^$SEVERITY$^^$MATCH_COUNT$^^$RULES$^^$SENDER$^^$RECIPIENTS$^^$BLOCKED$^^$FILE_NAME$^^$PARENT_PATH$^^$SCAN$^^$TARGET$^^$PROTOCOL$^^$INCIDENT_SNAPSHOT$ DO NOT replace the text prepend the following literal SymantecDLPAlert: Result note the space between \u2018:\u2019 and \u2018$\u2019 SymantecDLPAlert: $POLICY$^^$INCIDENT_ID$^^$SUBJECT$^^$SEVERITY$^^$MATCH_COUNT$^^$RULES$^^$SENDER$^^$RECIPIENTS$^^$BLOCKED$^^$FILE_NAME$^^$PARENT_PATH$^^$SCAN$^^$TARGET$^^$PROTOCOL$^^$INCIDENT_SNAPSHOT$ Syslog System events \u00b6 Navigate to the installed directory, for example :\\SymantecDLP\\Protect\\config directory on Windows or the /opt/SymantecDLP/Protect/config directory on Linux. Open the Manager.properties file. Comment out any uncommented line starting with systemevent.syslog.format Add the following line systemevent.syslog.format= {0.EN_US} SymantecDLP: {1.EN_US} - {2.EN_US} Restart symantec DLP Option 2: Manual Vendor Product by source Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-symantec_dlp.conf #File name provided is a suggestion it must be globally unique application app - vps - test - symantec_dlp [ sc4s - vps ] { filter { #netmask(169.254.100.1/24) #host(\"-esx-\") }; parser { p_set_netsource_fields ( vendor ( ' symantec ' ) product ( ' dlp ' ) ); }; };","title":"Symantec DLP"},{"location":"sources/vendor/Broadcom/dlp/#symantec-dlp","text":"","title":"Symantec DLP"},{"location":"sources/vendor/Broadcom/dlp/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Broadcom/dlp/#links","text":"Ref Link Splunk Add-on Symatec DLP https://splunkbase.splunk.com/app/3029/ Source doc https://knowledge.broadcom.com/external/article/159509/generating-syslog-messages-from-data-los.html","title":"Links"},{"location":"sources/vendor/Broadcom/dlp/#sourcetypes","text":"sourcetype notes symantec:dlp:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Broadcom/dlp/#index-configuration","text":"key sourcetype index notes symantec_dlp symantec:dlp:syslog netdlp none","title":"Index Configuration"},{"location":"sources/vendor/Broadcom/dlp/#option-1-correct-source-syslog-formats","text":"","title":"Option 1: Correct Source syslog formats"},{"location":"sources/vendor/Broadcom/dlp/#syslog-alert-response","text":"Login to Symantec DLP and edit the Syslog Response rule. The default configuration will appear as follows $POLICY$^^$INCIDENT_ID$^^$SUBJECT$^^$SEVERITY$^^$MATCH_COUNT$^^$RULES$^^$SENDER$^^$RECIPIENTS$^^$BLOCKED$^^$FILE_NAME$^^$PARENT_PATH$^^$SCAN$^^$TARGET$^^$PROTOCOL$^^$INCIDENT_SNAPSHOT$ DO NOT replace the text prepend the following literal SymantecDLPAlert: Result note the space between \u2018:\u2019 and \u2018$\u2019 SymantecDLPAlert: $POLICY$^^$INCIDENT_ID$^^$SUBJECT$^^$SEVERITY$^^$MATCH_COUNT$^^$RULES$^^$SENDER$^^$RECIPIENTS$^^$BLOCKED$^^$FILE_NAME$^^$PARENT_PATH$^^$SCAN$^^$TARGET$^^$PROTOCOL$^^$INCIDENT_SNAPSHOT$","title":"Syslog Alert Response"},{"location":"sources/vendor/Broadcom/dlp/#syslog-system-events","text":"Navigate to the installed directory, for example :\\SymantecDLP\\Protect\\config directory on Windows or the /opt/SymantecDLP/Protect/config directory on Linux. Open the Manager.properties file. Comment out any uncommented line starting with systemevent.syslog.format Add the following line systemevent.syslog.format= {0.EN_US} SymantecDLP: {1.EN_US} - {2.EN_US} Restart symantec DLP","title":"Syslog System events"},{"location":"sources/vendor/Broadcom/dlp/#option-2-manual-vendor-product-by-source-parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-symantec_dlp.conf #File name provided is a suggestion it must be globally unique application app - vps - test - symantec_dlp [ sc4s - vps ] { filter { #netmask(169.254.100.1/24) #host(\"-esx-\") }; parser { p_set_netsource_fields ( vendor ( ' symantec ' ) product ( ' dlp ' ) ); }; };","title":"Option 2: Manual Vendor Product by source Parser Configuration"},{"location":"sources/vendor/Broadcom/ep/","text":"Symantec Endpoint Protection (SEPM) \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 KNOWN DATA LOSS ISSUE - The implementation of the syslog output component causes a \u201cburst\u201d behavior when run on schedule this burst can be larger than the udp buffer size on the source and or destination (sc4s) there is no possible workaround and the use of the Splunk Universal Forwarder to monitor file based output is recommended. Product - Symantec Endpoint Protection \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2772/ Product Manual https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/symantec-security-software/endpoint-security-and-management/endpoint-protection/all/Monitoring-Reporting-and-Enforcing-Compliance/viewing-logs-v7522439-d37e464/exporting-data-to-a-syslog-server-v8442743-d15e1107.html Sourcetypes \u00b6 sourcetype notes symantec:ep:syslog Warning the syslog method of accepting EP logs has been reported to show high data loss and is not Supported by Splunk symantec:ep:admin:syslog none symantec:ep:agent:syslog none symantec:ep:agt:system:syslog none symantec:ep:behavior:syslog none symantec:ep:packet:syslog none symantec:ep:policy:syslog none symantec:ep:proactive:syslog none symantec:ep:risk:syslog none symantec:ep:scan:syslog none symantec:ep:scm:system:syslog none symantec:ep:security:syslog none symantec:ep:traffic:syslog none Index Configuration \u00b6 key index notes symantec_ep epav none","title":"Symantec Endpoint Protection (SEPM)"},{"location":"sources/vendor/Broadcom/ep/#symantec-endpoint-protection-sepm","text":"","title":"Symantec Endpoint Protection (SEPM)"},{"location":"sources/vendor/Broadcom/ep/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514 KNOWN DATA LOSS ISSUE - The implementation of the syslog output component causes a \u201cburst\u201d behavior when run on schedule this burst can be larger than the udp buffer size on the source and or destination (sc4s) there is no possible workaround and the use of the Splunk Universal Forwarder to monitor file based output is recommended.","title":"Key facts"},{"location":"sources/vendor/Broadcom/ep/#product-symantec-endpoint-protection","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2772/ Product Manual https://techdocs.broadcom.com/content/broadcom/techdocs/us/en/symantec-security-software/endpoint-security-and-management/endpoint-protection/all/Monitoring-Reporting-and-Enforcing-Compliance/viewing-logs-v7522439-d37e464/exporting-data-to-a-syslog-server-v8442743-d15e1107.html","title":"Product - Symantec Endpoint Protection"},{"location":"sources/vendor/Broadcom/ep/#sourcetypes","text":"sourcetype notes symantec:ep:syslog Warning the syslog method of accepting EP logs has been reported to show high data loss and is not Supported by Splunk symantec:ep:admin:syslog none symantec:ep:agent:syslog none symantec:ep:agt:system:syslog none symantec:ep:behavior:syslog none symantec:ep:packet:syslog none symantec:ep:policy:syslog none symantec:ep:proactive:syslog none symantec:ep:risk:syslog none symantec:ep:scan:syslog none symantec:ep:scm:system:syslog none symantec:ep:security:syslog none symantec:ep:traffic:syslog none","title":"Sourcetypes"},{"location":"sources/vendor/Broadcom/ep/#index-configuration","text":"key index notes symantec_ep epav none","title":"Index Configuration"},{"location":"sources/vendor/Broadcom/proxy/","text":"ProxySG/ASG \u00b6 Symantec now Broadcom ProxySG/ASG is formerly known as the \u201cBluecoat\u201d proxy Broadcom products are inclusive of products formerly marketed under Symantec and Bluecoat brands. Key facts \u00b6 MSG Format based filter The standard/default bluecoat syslog configurations are NOT supported a SC4S specific configuration is provided below RFC5424 without IETF Frame must use 514/TCP or 6514/TLS Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2758/ Product Manual https://support.symantec.com/us/en/article.tech242216.html Sourcetypes \u00b6 sourcetype notes bluecoat:proxysg:access:kv Requires version TA 3.6 bluecoat:proxysg:syslog Requires version TA 3.6 Sourcetype and Index Configuration \u00b6 key sourcetype index notes bluecoat_proxy bluecoat:proxysg:syslog netops none bluecoat_proxy_splunkkv bluecoat:proxysg:access:kv netproxy none Setup and Configuration \u00b6 Refer to the Splunk TA documentation for the specific customer format required for proxy configuration Select TCP or SSL transport option Ensure the format of the event is customized as follows < 111 > 1 $ ( date ) T $ ( x - bluecoat - hour - utc ) :$ ( x - bluecoat - minute - utc ) :$ ( x - bluecoat - second - utc ) Z $ ( s - computername ) ProxySG - splunk_format - c - ip = $ ( c - ip ) rs - Content - Type = $ ( quot ) $ ( rs ( Content - Type )) $ ( quot ) cs - auth - groups = $ ( cs - auth - groups ) cs - bytes = $ ( cs - bytes ) cs - categories = $ ( cs - categories ) cs - host = $ ( cs - host ) cs - ip = $ ( cs - ip ) cs - method = $ ( cs - method ) cs - uri - port = $ ( cs - uri - port ) cs - uri - scheme = $ ( cs - uri - scheme ) cs - User - Agent = $ ( quot ) $ ( cs ( User - Agent )) $ ( quot ) cs - username = $ ( cs - username ) dnslookup - time = $ ( dnslookup - time ) duration = $ ( duration ) rs - status = $ ( rs - status ) rs - version = $ ( rs - version ) s - action = $ ( s - action ) s - ip = $ ( s - ip ) service . name = $ ( service . name ) service . group = $ ( service . group ) s - supplier - ip = $ ( s - supplier - ip ) s - supplier - name = $ ( s - supplier - name ) sc - bytes = $ ( sc - bytes ) sc - filter - result = $ ( sc - filter - result ) sc - status = $ ( sc - status ) time - taken = $ ( time - taken ) x - exception - id = $ ( x - exception - id ) x - virus - id = $ ( x - virus - id ) c - url = $ ( quot ) $ ( url ) $ ( quot ) cs - Referer = $ ( quot ) $ ( cs ( Referer )) $ ( quot ) c - cpu = $ ( c - cpu ) connect - time = $ ( connect - time ) cs - auth - groups = $ ( cs - auth - groups ) cs - headerlength = $ ( cs - headerlength ) cs - threat - risk = $ ( cs - threat - risk ) r - ip = $ ( r - ip ) r - supplier - ip = $ ( r - supplier - ip ) rs - time - taken = $ ( rs - time - taken ) rs - server = $ ( rs ( server )) s - connect - type = $ ( s - connect - type ) s - icap - status = $ ( s - icap - status ) s - sitename = $ ( s - sitename ) s - source - port = $ ( s - source - port ) s - supplier - country = $ ( s - supplier - country ) sc - Content - Encoding = $ ( sc ( Content - Encoding )) sr - Accept - Encoding = $ ( sr ( Accept - Encoding )) x - auth - credential - type = $ ( x - auth - credential - type ) x - cookie - date = $ ( x - cookie - date ) x - cs - certificate - subject = $ ( x - cs - certificate - subject ) x - cs - connection - negotiated - cipher = $ ( x - cs - connection - negotiated - cipher ) x - cs - connection - negotiated - cipher - size = $ ( x - cs - connection - negotiated - cipher - size ) x - cs - connection - negotiated - ssl - version = $ ( x - cs - connection - negotiated - ssl - version ) x - cs - ocsp - error = $ ( x - cs - ocsp - error ) x - cs - Referer - uri = $ ( x - cs ( Referer ) - uri ) x - cs - Referer - uri - address = $ ( x - cs ( Referer ) - uri - address ) x - cs - Referer - uri - extension = $ ( x - cs ( Referer ) - uri - extension ) x - cs - Referer - uri - host = $ ( x - cs ( Referer ) - uri - host ) x - cs - Referer - uri - hostname = $ ( x - cs ( Referer ) - uri - hostname ) x - cs - Referer - uri - path = $ ( x - cs ( Referer ) - uri - path ) x - cs - Referer - uri - pathquery = $ ( x - cs ( Referer ) - uri - pathquery ) x - cs - Referer - uri - port = $ ( x - cs ( Referer ) - uri - port ) x - cs - Referer - uri - query = $ ( x - cs ( Referer ) - uri - query ) x - cs - Referer - uri - scheme = $ ( x - cs ( Referer ) - uri - scheme ) x - cs - Referer - uri - stem = $ ( x - cs ( Referer ) - uri - stem ) x - exception - category = $ ( x - exception - category ) x - exception - category - review - message = $ ( x - exception - category - review - message ) x - exception - company - name = $ ( x - exception - company - name ) x - exception - contact = $ ( x - exception - contact ) x - exception - details = $ ( x - exception - details ) x - exception - header = $ ( x - exception - header ) x - exception - help = $ ( x - exception - help ) x - exception - last - error = $ ( x - exception - last - error ) x - exception - reason = $ ( x - exception - reason ) x - exception - sourcefile = $ ( x - exception - sourcefile ) x - exception - sourceline = $ ( x - exception - sourceline ) x - exception - summary = $ ( x - exception - summary ) x - icap - error - code = $ ( x - icap - error - code ) x - rs - certificate - hostname = $ ( x - rs - certificate - hostname ) x - rs - certificate - hostname - category = $ ( x - rs - certificate - hostname - category ) x - rs - certificate - observed - errors = $ ( x - rs - certificate - observed - errors ) x - rs - certificate - subject = $ ( x - rs - certificate - subject ) x - rs - certificate - validate - status = $ ( x - rs - certificate - validate - status ) x - rs - connection - negotiated - cipher = $ ( x - rs - connection - negotiated - cipher ) x - rs - connection - negotiated - cipher - size = $ ( x - rs - connection - negotiated - cipher - size ) x - rs - connection - negotiated - ssl - version = $ ( x - rs - connection - negotiated - ssl - version ) x - rs - ocsp - error = $ ( x - rs - ocsp - error ) cs - uri - extension = $ ( cs - uri - extension ) cs - uri - path = $ ( cs - uri - path ) cs - uri - query = $ ( quot ) $ ( cs - uri - query ) $ ( quot ) c - uri - pathquery = $ ( c - uri - pathquery )","title":"ProxySG/ASG"},{"location":"sources/vendor/Broadcom/proxy/#proxysgasg","text":"Symantec now Broadcom ProxySG/ASG is formerly known as the \u201cBluecoat\u201d proxy Broadcom products are inclusive of products formerly marketed under Symantec and Bluecoat brands.","title":"ProxySG/ASG"},{"location":"sources/vendor/Broadcom/proxy/#key-facts","text":"MSG Format based filter The standard/default bluecoat syslog configurations are NOT supported a SC4S specific configuration is provided below RFC5424 without IETF Frame must use 514/TCP or 6514/TLS","title":"Key facts"},{"location":"sources/vendor/Broadcom/proxy/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2758/ Product Manual https://support.symantec.com/us/en/article.tech242216.html","title":"Links"},{"location":"sources/vendor/Broadcom/proxy/#sourcetypes","text":"sourcetype notes bluecoat:proxysg:access:kv Requires version TA 3.6 bluecoat:proxysg:syslog Requires version TA 3.6","title":"Sourcetypes"},{"location":"sources/vendor/Broadcom/proxy/#sourcetype-and-index-configuration","text":"key sourcetype index notes bluecoat_proxy bluecoat:proxysg:syslog netops none bluecoat_proxy_splunkkv bluecoat:proxysg:access:kv netproxy none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Broadcom/proxy/#setup-and-configuration","text":"Refer to the Splunk TA documentation for the specific customer format required for proxy configuration Select TCP or SSL transport option Ensure the format of the event is customized as follows < 111 > 1 $ ( date ) T $ ( x - bluecoat - hour - utc ) :$ ( x - bluecoat - minute - utc ) :$ ( x - bluecoat - second - utc ) Z $ ( s - computername ) ProxySG - splunk_format - c - ip = $ ( c - ip ) rs - Content - Type = $ ( quot ) $ ( rs ( Content - Type )) $ ( quot ) cs - auth - groups = $ ( cs - auth - groups ) cs - bytes = $ ( cs - bytes ) cs - categories = $ ( cs - categories ) cs - host = $ ( cs - host ) cs - ip = $ ( cs - ip ) cs - method = $ ( cs - method ) cs - uri - port = $ ( cs - uri - port ) cs - uri - scheme = $ ( cs - uri - scheme ) cs - User - Agent = $ ( quot ) $ ( cs ( User - Agent )) $ ( quot ) cs - username = $ ( cs - username ) dnslookup - time = $ ( dnslookup - time ) duration = $ ( duration ) rs - status = $ ( rs - status ) rs - version = $ ( rs - version ) s - action = $ ( s - action ) s - ip = $ ( s - ip ) service . name = $ ( service . name ) service . group = $ ( service . group ) s - supplier - ip = $ ( s - supplier - ip ) s - supplier - name = $ ( s - supplier - name ) sc - bytes = $ ( sc - bytes ) sc - filter - result = $ ( sc - filter - result ) sc - status = $ ( sc - status ) time - taken = $ ( time - taken ) x - exception - id = $ ( x - exception - id ) x - virus - id = $ ( x - virus - id ) c - url = $ ( quot ) $ ( url ) $ ( quot ) cs - Referer = $ ( quot ) $ ( cs ( Referer )) $ ( quot ) c - cpu = $ ( c - cpu ) connect - time = $ ( connect - time ) cs - auth - groups = $ ( cs - auth - groups ) cs - headerlength = $ ( cs - headerlength ) cs - threat - risk = $ ( cs - threat - risk ) r - ip = $ ( r - ip ) r - supplier - ip = $ ( r - supplier - ip ) rs - time - taken = $ ( rs - time - taken ) rs - server = $ ( rs ( server )) s - connect - type = $ ( s - connect - type ) s - icap - status = $ ( s - icap - status ) s - sitename = $ ( s - sitename ) s - source - port = $ ( s - source - port ) s - supplier - country = $ ( s - supplier - country ) sc - Content - Encoding = $ ( sc ( Content - Encoding )) sr - Accept - Encoding = $ ( sr ( Accept - Encoding )) x - auth - credential - type = $ ( x - auth - credential - type ) x - cookie - date = $ ( x - cookie - date ) x - cs - certificate - subject = $ ( x - cs - certificate - subject ) x - cs - connection - negotiated - cipher = $ ( x - cs - connection - negotiated - cipher ) x - cs - connection - negotiated - cipher - size = $ ( x - cs - connection - negotiated - cipher - size ) x - cs - connection - negotiated - ssl - version = $ ( x - cs - connection - negotiated - ssl - version ) x - cs - ocsp - error = $ ( x - cs - ocsp - error ) x - cs - Referer - uri = $ ( x - cs ( Referer ) - uri ) x - cs - Referer - uri - address = $ ( x - cs ( Referer ) - uri - address ) x - cs - Referer - uri - extension = $ ( x - cs ( Referer ) - uri - extension ) x - cs - Referer - uri - host = $ ( x - cs ( Referer ) - uri - host ) x - cs - Referer - uri - hostname = $ ( x - cs ( Referer ) - uri - hostname ) x - cs - Referer - uri - path = $ ( x - cs ( Referer ) - uri - path ) x - cs - Referer - uri - pathquery = $ ( x - cs ( Referer ) - uri - pathquery ) x - cs - Referer - uri - port = $ ( x - cs ( Referer ) - uri - port ) x - cs - Referer - uri - query = $ ( x - cs ( Referer ) - uri - query ) x - cs - Referer - uri - scheme = $ ( x - cs ( Referer ) - uri - scheme ) x - cs - Referer - uri - stem = $ ( x - cs ( Referer ) - uri - stem ) x - exception - category = $ ( x - exception - category ) x - exception - category - review - message = $ ( x - exception - category - review - message ) x - exception - company - name = $ ( x - exception - company - name ) x - exception - contact = $ ( x - exception - contact ) x - exception - details = $ ( x - exception - details ) x - exception - header = $ ( x - exception - header ) x - exception - help = $ ( x - exception - help ) x - exception - last - error = $ ( x - exception - last - error ) x - exception - reason = $ ( x - exception - reason ) x - exception - sourcefile = $ ( x - exception - sourcefile ) x - exception - sourceline = $ ( x - exception - sourceline ) x - exception - summary = $ ( x - exception - summary ) x - icap - error - code = $ ( x - icap - error - code ) x - rs - certificate - hostname = $ ( x - rs - certificate - hostname ) x - rs - certificate - hostname - category = $ ( x - rs - certificate - hostname - category ) x - rs - certificate - observed - errors = $ ( x - rs - certificate - observed - errors ) x - rs - certificate - subject = $ ( x - rs - certificate - subject ) x - rs - certificate - validate - status = $ ( x - rs - certificate - validate - status ) x - rs - connection - negotiated - cipher = $ ( x - rs - connection - negotiated - cipher ) x - rs - connection - negotiated - cipher - size = $ ( x - rs - connection - negotiated - cipher - size ) x - rs - connection - negotiated - ssl - version = $ ( x - rs - connection - negotiated - ssl - version ) x - rs - ocsp - error = $ ( x - rs - ocsp - error ) cs - uri - extension = $ ( cs - uri - extension ) cs - uri - path = $ ( cs - uri - path ) cs - uri - query = $ ( quot ) $ ( cs - uri - query ) $ ( quot ) c - uri - pathquery = $ ( c - uri - pathquery )","title":"Setup and Configuration"},{"location":"sources/vendor/Broadcom/sslva/","text":"SSL Visibility Appliance \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual https://knowledge.broadcom.com/external/article/168879/when-sending-session-logs-from-ssl-visib.html Sourcetypes \u00b6 sourcetype notes broadcom:sslva none Index Configuration \u00b6 key index notes broadcom_sslva netproxy none","title":"SSL Visibility Appliance"},{"location":"sources/vendor/Broadcom/sslva/#ssl-visibility-appliance","text":"","title":"SSL Visibility Appliance"},{"location":"sources/vendor/Broadcom/sslva/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Broadcom/sslva/#links","text":"Ref Link Splunk Add-on None Product Manual https://knowledge.broadcom.com/external/article/168879/when-sending-session-logs-from-ssl-visib.html","title":"Links"},{"location":"sources/vendor/Broadcom/sslva/#sourcetypes","text":"sourcetype notes broadcom:sslva none","title":"Sourcetypes"},{"location":"sources/vendor/Broadcom/sslva/#index-configuration","text":"key index notes broadcom_sslva netproxy none","title":"Index Configuration"},{"location":"sources/vendor/Brocade/switch/","text":"Switch \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Product - Switches \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes brocade:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes brocade_syslog brocade:syslog netops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app_parsers/app-vps-brocade_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - test - brocade_syslog [ sc4s - vps ] { filter { host ( \"^test_brocade-\" ) }; parser { p_set_netsource_fields ( vendor ( ' brocade ' ) product ( ' syslog ' ) ); }; };","title":"Switch"},{"location":"sources/vendor/Brocade/switch/#switch","text":"","title":"Switch"},{"location":"sources/vendor/Brocade/switch/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Brocade/switch/#product-switches","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Product - Switches"},{"location":"sources/vendor/Brocade/switch/#sourcetypes","text":"sourcetype notes brocade:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Brocade/switch/#sourcetype-and-index-configuration","text":"key sourcetype index notes brocade_syslog brocade:syslog netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Brocade/switch/#parser-configuration","text":"#/opt/sc4s/local/config/app_parsers/app-vps-brocade_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - test - brocade_syslog [ sc4s - vps ] { filter { host ( \"^test_brocade-\" ) }; parser { p_set_netsource_fields ( vendor ( ' brocade ' ) product ( ' syslog ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Buffalo/","text":"Terastation \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes buffalo:terastation None Sourcetype and Index Configuration \u00b6 key sourcetype index notes buffalo_terastation buffalo:terastation infraops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-buffalo_terastation.conf #File name provided is a suggestion it must be globally unique application app - vps - test - buffalo_terastation [ sc4s - vps ] { filter { host ( \"^test_buffalo_terastation-\" ) }; parser { p_set_netsource_fields ( vendor ( ' buffalo ' ) product ( ' terastation ' ) ); }; };","title":"Terastation"},{"location":"sources/vendor/Buffalo/#terastation","text":"","title":"Terastation"},{"location":"sources/vendor/Buffalo/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Buffalo/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Buffalo/#sourcetypes","text":"sourcetype notes buffalo:terastation None","title":"Sourcetypes"},{"location":"sources/vendor/Buffalo/#sourcetype-and-index-configuration","text":"key sourcetype index notes buffalo_terastation buffalo:terastation infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Buffalo/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-buffalo_terastation.conf #File name provided is a suggestion it must be globally unique application app - vps - test - buffalo_terastation [ sc4s - vps ] { filter { host ( \"^test_buffalo_terastation-\" ) }; parser { p_set_netsource_fields ( vendor ( ' buffalo ' ) product ( ' terastation ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Checkpoint/firewallos/","text":"Firewall OS \u00b6 Firewall OS format is by devices supporting a direct Syslog output Links \u00b6 Ref Link Splunk Add-on na Product Manual unknown Sourcetypes \u00b6 sourcetype notes cp_log:fw:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes checkpoint_fw cp_log:fw:syslog netops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-checkpoint_fw.conf #File name provided is a suggestion it must be globally unique application app - vps - test - checkpoint_fw [ sc4s - vps ] { filter { host ( \"^checkpoint_fw-\" ) }; parser { p_set_netsource_fields ( vendor ( ' checkpoint ' ) product ( ' fw ' ) ); }; };","title":"Firewall OS"},{"location":"sources/vendor/Checkpoint/firewallos/#firewall-os","text":"Firewall OS format is by devices supporting a direct Syslog output","title":"Firewall OS"},{"location":"sources/vendor/Checkpoint/firewallos/#links","text":"Ref Link Splunk Add-on na Product Manual unknown","title":"Links"},{"location":"sources/vendor/Checkpoint/firewallos/#sourcetypes","text":"sourcetype notes cp_log:fw:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Checkpoint/firewallos/#sourcetype-and-index-configuration","text":"key sourcetype index notes checkpoint_fw cp_log:fw:syslog netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Checkpoint/firewallos/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-checkpoint_fw.conf #File name provided is a suggestion it must be globally unique application app - vps - test - checkpoint_fw [ sc4s - vps ] { filter { host ( \"^checkpoint_fw-\" ) }; parser { p_set_netsource_fields ( vendor ( ' checkpoint ' ) product ( ' fw ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Checkpoint/logexporter_5424/","text":"Log Exporter (Syslog) \u00b6 Key Facts \u00b6 As of 2/1/2022 The Log Exporter configuration provided by CheckPoint is defective and produces invalid data the configuration below is REQUIRED MSG Format based filter RFC5424 without frame use port 514 TCP Ref Link Splunk Add-on Product Manual https://sc1.checkpoint.com/documents/App_for_Splunk/html_frameset.htm Sourcetypes \u00b6 sourcetype notes cp_log:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes checkpoint_syslog cp_log:syslog netops none Source and Index Configuration \u00b6 Checkpoint Software blades with CIM mapping have been sub-grouped into sources to allow routing to appropriate indexes. All other source meta data is left at default key source index notes checkpoint_syslog_dlp dlp netdlp none checkpoint_syslog_email email email none checkpoint_syslog_firewall firewall netfw none checkpoint_syslog_sessions sessions netops none checkpoint_syslog_web web netproxy none checkpoint_syslog_audit audit netops none checkpoint_syslog_endpoint endpoint netops none checkpoint_syslog_network network netops checkpoint_syslog_ids ids netids checkpoint_syslog_ids_malware ids_malware netids Source Configuration \u00b6 Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. To configure the valid syslog format in Checkpoint, follow the steps below Go to the cp terminal Enter expert command for login in expert mode Enter cd $EXPORTERDIR In this directory check targets if it\u2019s empty then configure a new target for the logs with help of below command cp_log_export add name target-server target-port protocol <(udp|tcp)> format <(syslog)|(cef)|(splunk)(generic)> Then navigate to conf directory Execute cp SyslogFormatDefinition.xml SplunkRecommendedFormatDefinition.xml Open SplunkRecommendedFormatDefinition.xml in edit mode and modify the start_message_body,fields_separator,field_value_separator as shown below. [sc4s@2620 = Copy SplunkRecommendedFormatDefinition.xml into $EXPORTERDIR/targets/ /conf Navigate to the configuration file $EXPORTERDIR/targets/ /targetConfiguration.xml and open it in edit mode. Add the reference to the SplunkRecommendedFormatDefinition.xml under the key . For example, if $EXPORTERDIR=/opt/CPrt-R81/log_exporter, the absolute path will become: /opt/CPrt-R81/log_exporter/targets/ /conf/SplunkRecommendedFormatDefinition.xml Restart cp_log_exporter by executing the command cp_log_export restart name Warning: Make sure if you migrating to different format, the earlier format is disabled or else it would lead to data duplication.","title":"Log Exporter (Syslog)"},{"location":"sources/vendor/Checkpoint/logexporter_5424/#log-exporter-syslog","text":"","title":"Log Exporter (Syslog)"},{"location":"sources/vendor/Checkpoint/logexporter_5424/#key-facts","text":"As of 2/1/2022 The Log Exporter configuration provided by CheckPoint is defective and produces invalid data the configuration below is REQUIRED MSG Format based filter RFC5424 without frame use port 514 TCP Ref Link Splunk Add-on Product Manual https://sc1.checkpoint.com/documents/App_for_Splunk/html_frameset.htm","title":"Key Facts"},{"location":"sources/vendor/Checkpoint/logexporter_5424/#sourcetypes","text":"sourcetype notes cp_log:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Checkpoint/logexporter_5424/#sourcetype-and-index-configuration","text":"key sourcetype index notes checkpoint_syslog cp_log:syslog netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Checkpoint/logexporter_5424/#source-and-index-configuration","text":"Checkpoint Software blades with CIM mapping have been sub-grouped into sources to allow routing to appropriate indexes. All other source meta data is left at default key source index notes checkpoint_syslog_dlp dlp netdlp none checkpoint_syslog_email email email none checkpoint_syslog_firewall firewall netfw none checkpoint_syslog_sessions sessions netops none checkpoint_syslog_web web netproxy none checkpoint_syslog_audit audit netops none checkpoint_syslog_endpoint endpoint netops none checkpoint_syslog_network network netops checkpoint_syslog_ids ids netids checkpoint_syslog_ids_malware ids_malware netids","title":"Source and Index Configuration"},{"location":"sources/vendor/Checkpoint/logexporter_5424/#source-configuration","text":"Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. To configure the valid syslog format in Checkpoint, follow the steps below Go to the cp terminal Enter expert command for login in expert mode Enter cd $EXPORTERDIR In this directory check targets if it\u2019s empty then configure a new target for the logs with help of below command cp_log_export add name target-server target-port protocol <(udp|tcp)> format <(syslog)|(cef)|(splunk)(generic)> Then navigate to conf directory Execute cp SyslogFormatDefinition.xml SplunkRecommendedFormatDefinition.xml Open SplunkRecommendedFormatDefinition.xml in edit mode and modify the start_message_body,fields_separator,field_value_separator as shown below. [sc4s@2620 = Copy SplunkRecommendedFormatDefinition.xml into $EXPORTERDIR/targets/ /conf Navigate to the configuration file $EXPORTERDIR/targets/ /targetConfiguration.xml and open it in edit mode. Add the reference to the SplunkRecommendedFormatDefinition.xml under the key . For example, if $EXPORTERDIR=/opt/CPrt-R81/log_exporter, the absolute path will become: /opt/CPrt-R81/log_exporter/targets/ /conf/SplunkRecommendedFormatDefinition.xml Restart cp_log_exporter by executing the command cp_log_export restart name Warning: Make sure if you migrating to different format, the earlier format is disabled or else it would lead to data duplication.","title":"Source Configuration"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/","text":"Log Exporter (Splunk) \u00b6 The \u201cSplunk Format\u201d is legacy and should not be used for new deployments see Log Exporter (Syslog) Key Facts \u00b6 Format is not conformant to RFC3164 avoid use MSG Format based filter Legacy BSD Format default port 514 The Splunk host field will be derived as follows using the first match Use the hostname field Use the first CN component of origin_sic_name/originsicname If host is not set from CN use the hostname field If host is not set use the BSD syslog header host If the host is in the format -v_ use bladename for host Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4293/ Product Manual https://sc1.checkpoint.com/documents/App_for_Splunk/html_frameset.htm Sourcetypes \u00b6 sourcetype notes cp_log None Sourcetype and Index Configuration \u00b6 key sourcetype index notes checkpoint_splunk cp_log netops none Source and Index Configuration \u00b6 Checkpoint Software blades with CIM mapping have been sub-grouped into sources to allow routing to appropriate indexes. All other source meta data is left at default key source index notes checkpoint_splunk_dlp dlp netdlp none checkpoint_splunk_email email email none checkpoint_splunk_firewall firewall netfw none checkpoint_splunk_os program:${program} netops none checkpoint_splunk_sessions sessions netops none checkpoint_splunk_web web netproxy none checkpoint_splunk_audit audit netops none checkpoint_splunk_endpoint endpoint netops none checkpoint_splunk_network network netops checkpoint_splunk_ids ids netids checkpoint_splunk_ids_malware ids_malware netids Options \u00b6 Variable default description SC4S_LISTEN_CHECKPOINT_SPLUNK_NOISE_CONTROL no Suppress any duplicate product+loguid pairs processed within 2 seconds of the last matching event SC4S_LISTEN_CHECKPOINT_SPLUNK_OLD_HOST_RULES empty string when set to yes reverts host name selection order to originsicname\u2013>origin_sic_name\u2013>hostname","title":"Log Exporter (Splunk)"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/#log-exporter-splunk","text":"The \u201cSplunk Format\u201d is legacy and should not be used for new deployments see Log Exporter (Syslog)","title":"Log Exporter (Splunk)"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/#key-facts","text":"Format is not conformant to RFC3164 avoid use MSG Format based filter Legacy BSD Format default port 514 The Splunk host field will be derived as follows using the first match Use the hostname field Use the first CN component of origin_sic_name/originsicname If host is not set from CN use the hostname field If host is not set use the BSD syslog header host If the host is in the format -v_ use bladename for host","title":"Key Facts"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4293/ Product Manual https://sc1.checkpoint.com/documents/App_for_Splunk/html_frameset.htm","title":"Links"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/#sourcetypes","text":"sourcetype notes cp_log None","title":"Sourcetypes"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/#sourcetype-and-index-configuration","text":"key sourcetype index notes checkpoint_splunk cp_log netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/#source-and-index-configuration","text":"Checkpoint Software blades with CIM mapping have been sub-grouped into sources to allow routing to appropriate indexes. All other source meta data is left at default key source index notes checkpoint_splunk_dlp dlp netdlp none checkpoint_splunk_email email email none checkpoint_splunk_firewall firewall netfw none checkpoint_splunk_os program:${program} netops none checkpoint_splunk_sessions sessions netops none checkpoint_splunk_web web netproxy none checkpoint_splunk_audit audit netops none checkpoint_splunk_endpoint endpoint netops none checkpoint_splunk_network network netops checkpoint_splunk_ids ids netids checkpoint_splunk_ids_malware ids_malware netids","title":"Source and Index Configuration"},{"location":"sources/vendor/Checkpoint/logexporter_legacy/#options","text":"Variable default description SC4S_LISTEN_CHECKPOINT_SPLUNK_NOISE_CONTROL no Suppress any duplicate product+loguid pairs processed within 2 seconds of the last matching event SC4S_LISTEN_CHECKPOINT_SPLUNK_OLD_HOST_RULES empty string when set to yes reverts host name selection order to originsicname\u2013>origin_sic_name\u2013>hostname","title":"Options"},{"location":"sources/vendor/Cisco/cisco_ace/","text":"Application Control Engine (ACE) \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Sourcetypes \u00b6 sourcetype notes cisco:ace None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_ace cisco:ace netops none","title":"Application Control Engine (ACE)"},{"location":"sources/vendor/Cisco/cisco_ace/#application-control-engine-ace","text":"","title":"Application Control Engine (ACE)"},{"location":"sources/vendor/Cisco/cisco_ace/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_ace/#links","text":"Ref Link Splunk Add-on None","title":"Links"},{"location":"sources/vendor/Cisco/cisco_ace/#sourcetypes","text":"sourcetype notes cisco:ace None","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_ace/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_ace cisco:ace netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_acs/","text":"Cisco Access Control System (ACS) \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1811/ Product Manual https://community.cisco.com/t5/security-documents/acs-5-x-configuring-the-external-syslog-server/ta-p/3143143 Sourcetypes \u00b6 sourcetype notes cisco:acs Aggregation used Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_acs cisco:acs netauth None Splunk Setup and Configuration \u00b6 Replace the following extract using Splunk local configuration. Impacts version 1.5.0 of the addond EXTRACT-AA-signature = CSCOacs_(?\\S+):? # Note the value of this config is empty to disable EXTRACT-AA-syslog_message = EXTRACT-acs_message_header2 = ^CSCOacs_\\S+\\s+(?\\S+)\\s+(?\\d+)\\s+(?\\d+)\\s+(?.*)","title":"Cisco Access Control System (ACS)"},{"location":"sources/vendor/Cisco/cisco_acs/#cisco-access-control-system-acs","text":"","title":"Cisco Access Control System (ACS)"},{"location":"sources/vendor/Cisco/cisco_acs/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1811/ Product Manual https://community.cisco.com/t5/security-documents/acs-5-x-configuring-the-external-syslog-server/ta-p/3143143","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_acs/#sourcetypes","text":"sourcetype notes cisco:acs Aggregation used","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_acs/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_acs cisco:acs netauth None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_acs/#splunk-setup-and-configuration","text":"Replace the following extract using Splunk local configuration. Impacts version 1.5.0 of the addond EXTRACT-AA-signature = CSCOacs_(?\\S+):? # Note the value of this config is empty to disable EXTRACT-AA-syslog_message = EXTRACT-acs_message_header2 = ^CSCOacs_\\S+\\s+(?\\S+)\\s+(?\\d+)\\s+(?\\d+)\\s+(?.*)","title":"Splunk Setup and Configuration"},{"location":"sources/vendor/Cisco/cisco_asa/","text":"ASA/FTD (Firepower) \u00b6 Key facts \u00b6 Note Splunk \u201cASA\u201d TA is also used for FTD appliances MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on for ASA (No long supports FWSM and PIX) https://splunkbase.splunk.com/app/1620/ Cisco eStreamer for Splunk https://splunkbase.splunk.com/app/1629/ Product Manual https://www.cisco.com/c/en/us/support/docs/security/pix-500-series-security-appliances/63884-config-asa-00.html Sourcetypes \u00b6 sourcetype notes cisco:asa cisco FTD Firepower will also use this source type except those noted below cisco:ftd cisco FTD Firepower will also use this source type except those noted below cisco:fwsm Splunk has cisco:pix cisco PIX will also use this source type except those noted below cisco:firepower:syslog FTD Unified events see https://www.cisco.com/c/en/us/td/docs/security/firepower/Syslogs/b_fptd_syslog_guide.pdf Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_asa cisco:asa netfw none cisco_fwsm cisco:fwsm netfw none cisco_pix cisco:pix netfw none cisco_firepower cisco:firepower:syslog netids none cisco_ftd cisco:ftd netfw none Source Setup and Configuration \u00b6 Follow vendor configuration steps per Product Manual above ensure: Log Level is 6 \u201cInformational\u201d Protocol is TCP/IP permit-hostdown is on device-id is hostname and included timestamp is included","title":"ASA/FTD (Firepower)"},{"location":"sources/vendor/Cisco/cisco_asa/#asaftd-firepower","text":"","title":"ASA/FTD (Firepower)"},{"location":"sources/vendor/Cisco/cisco_asa/#key-facts","text":"Note Splunk \u201cASA\u201d TA is also used for FTD appliances MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_asa/#links","text":"Ref Link Splunk Add-on for ASA (No long supports FWSM and PIX) https://splunkbase.splunk.com/app/1620/ Cisco eStreamer for Splunk https://splunkbase.splunk.com/app/1629/ Product Manual https://www.cisco.com/c/en/us/support/docs/security/pix-500-series-security-appliances/63884-config-asa-00.html","title":"Links"},{"location":"sources/vendor/Cisco/cisco_asa/#sourcetypes","text":"sourcetype notes cisco:asa cisco FTD Firepower will also use this source type except those noted below cisco:ftd cisco FTD Firepower will also use this source type except those noted below cisco:fwsm Splunk has cisco:pix cisco PIX will also use this source type except those noted below cisco:firepower:syslog FTD Unified events see https://www.cisco.com/c/en/us/td/docs/security/firepower/Syslogs/b_fptd_syslog_guide.pdf","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_asa/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_asa cisco:asa netfw none cisco_fwsm cisco:fwsm netfw none cisco_pix cisco:pix netfw none cisco_firepower cisco:firepower:syslog netids none cisco_ftd cisco:ftd netfw none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_asa/#source-setup-and-configuration","text":"Follow vendor configuration steps per Product Manual above ensure: Log Level is 6 \u201cInformational\u201d Protocol is TCP/IP permit-hostdown is on device-id is hostname and included timestamp is included","title":"Source Setup and Configuration"},{"location":"sources/vendor/Cisco/cisco_dna/","text":"Digital Network Area(DNA) \u00b6 Key facts \u00b6 MSG Format based filter rfc5424 default port 514 Links \u00b6 Ref Link Splunk Add-on na Product Manual multiple Sourcetypes \u00b6 sourcetype notes cisco:dna None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_dna cisco:dna netops None SC4S Options \u00b6 Variable default description SC4S_SOURCE_CISCO_DNA_FIXHOST yes Current firmware incorrectly sends the value of the syslog server host name (destination) in the host field if this is ever corrected this value will need to be set back to no we suggest using yes","title":"Digital Network Area(DNA)"},{"location":"sources/vendor/Cisco/cisco_dna/#digital-network-areadna","text":"","title":"Digital Network Area(DNA)"},{"location":"sources/vendor/Cisco/cisco_dna/#key-facts","text":"MSG Format based filter rfc5424 default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_dna/#links","text":"Ref Link Splunk Add-on na Product Manual multiple","title":"Links"},{"location":"sources/vendor/Cisco/cisco_dna/#sourcetypes","text":"sourcetype notes cisco:dna None","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_dna/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_dna cisco:dna netops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_dna/#sc4s-options","text":"Variable default description SC4S_SOURCE_CISCO_DNA_FIXHOST yes Current firmware incorrectly sends the value of the syslog server host name (destination) in the host field if this is ever corrected this value will need to be set back to no we suggest using yes","title":"SC4S Options"},{"location":"sources/vendor/Cisco/cisco_esa/","text":"Email Security Appliance (ESA) \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1761/ Product Manual https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0.pdf ESA Log Configuration \u00b6 If feasible for you, you can use following log configuration on the ESA. The log name configured on the ESA can then be parsed easily by sc4s. ESA Log Name ESA Log Type sc4s_gui_logs HTTP Logs sc4s_mail_logs IronPort Text Mail Logs sc4s_amp AMP Engine Logs sc4s_audit_logs Audit Logs sc4s_antispam Anti-Spam Logs sc4s_content_scanner Content Scanner Logs sc4s_error_logs IronPort Text Mail Logs (Loglevel: Critical) sc4s_system_logs System Logs Sourcetypes \u00b6 sourcetype notes cisco:esa:http The HTTP logs of Cisco IronPort ESA record information about the secure HTTP services enabled on the interface. cisco:esa:textmail Text mail logs of Cisco IronPort ESA record email information and status. cisco:esa:amp Advanced Malware Protection (AMP) of Cisco IronPort ESA records malware detection and blocking, continuous analysis, and retrospective alerting details. cisco:esa:authentication These logs record successful user logins and unsuccessful login attempts. cisco:esa:cef The Consolidated Event Logs summarizes each message event in a single log line. cisco:esa:error_logs Error logs of Cisco IronPort ESA records error that occurred for ESA configurations or internal issues. cisco:esa:content_scanner Content scanner logs of Cisco IronPort ESA scans messages that contain password-protected attachments for malicious activity and data privacy. cisco:esa:antispam Anti-spam logs record the status of the anti-spam scanning feature of your system, including the status on receiving updates of the latest anti-spam rules. Also, any logs related to the Context Adaptive Scanning Engine are logged here. cisco:esa:system_logs System logs record the boot information, virtual appliance license expiration alerts, DNS status information, and comments users typed using commit command. Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_esa cisco:esa:http email None cisco_esa cisco:esa:textmail email None cisco_esa cisco:esa:amp email None cisco_esa cisco:esa:authentication email None cisco_esa cisco:esa:cef email None cisco_esa cisco:esa:error_logs email None cisco_esa cisco:esa:content_scanner email None cisco_esa cisco:esa:antispam email None cisco_esa cisco:esa:system_logs email None Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-cisco_esa.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_esa [ sc4s - vps ] { filter { host ( \"^esa-\" ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' esa ' ) ); }; };","title":"Email Security Appliance (ESA)"},{"location":"sources/vendor/Cisco/cisco_esa/#email-security-appliance-esa","text":"","title":"Email Security Appliance (ESA)"},{"location":"sources/vendor/Cisco/cisco_esa/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_esa/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1761/ Product Manual https://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0.pdf","title":"Links"},{"location":"sources/vendor/Cisco/cisco_esa/#esa-log-configuration","text":"If feasible for you, you can use following log configuration on the ESA. The log name configured on the ESA can then be parsed easily by sc4s. ESA Log Name ESA Log Type sc4s_gui_logs HTTP Logs sc4s_mail_logs IronPort Text Mail Logs sc4s_amp AMP Engine Logs sc4s_audit_logs Audit Logs sc4s_antispam Anti-Spam Logs sc4s_content_scanner Content Scanner Logs sc4s_error_logs IronPort Text Mail Logs (Loglevel: Critical) sc4s_system_logs System Logs","title":"ESA Log Configuration"},{"location":"sources/vendor/Cisco/cisco_esa/#sourcetypes","text":"sourcetype notes cisco:esa:http The HTTP logs of Cisco IronPort ESA record information about the secure HTTP services enabled on the interface. cisco:esa:textmail Text mail logs of Cisco IronPort ESA record email information and status. cisco:esa:amp Advanced Malware Protection (AMP) of Cisco IronPort ESA records malware detection and blocking, continuous analysis, and retrospective alerting details. cisco:esa:authentication These logs record successful user logins and unsuccessful login attempts. cisco:esa:cef The Consolidated Event Logs summarizes each message event in a single log line. cisco:esa:error_logs Error logs of Cisco IronPort ESA records error that occurred for ESA configurations or internal issues. cisco:esa:content_scanner Content scanner logs of Cisco IronPort ESA scans messages that contain password-protected attachments for malicious activity and data privacy. cisco:esa:antispam Anti-spam logs record the status of the anti-spam scanning feature of your system, including the status on receiving updates of the latest anti-spam rules. Also, any logs related to the Context Adaptive Scanning Engine are logged here. cisco:esa:system_logs System logs record the boot information, virtual appliance license expiration alerts, DNS status information, and comments users typed using commit command.","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_esa/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_esa cisco:esa:http email None cisco_esa cisco:esa:textmail email None cisco_esa cisco:esa:amp email None cisco_esa cisco:esa:authentication email None cisco_esa cisco:esa:cef email None cisco_esa cisco:esa:error_logs email None cisco_esa cisco:esa:content_scanner email None cisco_esa cisco:esa:antispam email None cisco_esa cisco:esa:system_logs email None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_esa/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-cisco_esa.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_esa [ sc4s - vps ] { filter { host ( \"^esa-\" ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' esa ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Cisco/cisco_imc/","text":"Cisco Integrated Management Controller (IMC) \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Ref Link Splunk Add-on na Product Manual multiple Sourcetypes \u00b6 sourcetype notes cisco:ucm None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_cimc cisco:infraops infraops None","title":"Cisco Integrated Management Controller (IMC)"},{"location":"sources/vendor/Cisco/cisco_imc/#cisco-integrated-management-controller-imc","text":"","title":"Cisco Integrated Management Controller (IMC)"},{"location":"sources/vendor/Cisco/cisco_imc/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514 Ref Link Splunk Add-on na Product Manual multiple","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_imc/#sourcetypes","text":"sourcetype notes cisco:ucm None","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_imc/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_cimc cisco:infraops infraops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_ios/","text":"Cisco Networking (IOS and Compatible) \u00b6 Cisco Network Products of multiple types share common logging characteristics the following types are known to be compatible: Cisco AireOS (AP & WLC) Cisco APIC/ACI Cisco IOS Cisco IOS-XR Cisco IOS-XE Cisco NX-OS Cisco FX-OS Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1467/ IOS Manual https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960/software/release/12-2_55_se/configuration/guide/scg_2960/swlog.html NX-OS Manual https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/6-x/system_management/configuration/guide/b_Cisco_Nexus_9000_Series_NX-OS_System_Management_Configuration_Guide/sm_5syslog.html Cisco ACI https://community.cisco.com/legacyfs/online/attachments/document/technote-aci-syslog_external-v1.pdf Cisco WLC & AP https://www.cisco.com/c/en/us/support/docs/wireless/4100-series-wireless-lan-controllers/107252-WLC-Syslog-Server.html#anc8 Sourcetypes \u00b6 sourcetype notes cisco:ios This source type is also used for NX-OS, ACI and WLC product lines Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_ios cisco:ios netops none Filter type \u00b6 Cisco IOS products can be identified by message parsing alone Cisco WLC, and ACI products must be identified by host or ip assignment update the filter f_cisco_ios as required Setup and Configuration \u00b6 IOS Follow vendor configuration steps per Product Manual above ensure: Ensure a reliable NTP server is set and synced Log Level is 6 \u201cInformational\u201d Protocol is TCP/IP permit-hostdown is on device-id is hostname and included timestamp is included NX-OS Follow vendor configuration steps per Product Manual above ensure: Ensure a reliable NTP server is set and synced Log Level is 6 \u201cInformational\u201d user may select alternate levels by module based on use cases Protocol is TCP/IP device-id is hostname and included timestamp is included and millisecond accuracy selected ACI Logging configuration of the ACI product often varies by use case. Ensure NTP sync is configured and active Ensure proper host names are configured WLC Ensure NTP sync is configured and active Ensure proper host names are configured For security use cases per AP logging is required If you want to send raw logs to splunk (without any drop) then only use this feature Please set following property in env_file: SC4S_ENABLE_CISCO_IOS_RAW_MSG=yes Restart SC4S and it will send entire message without any drop. NOTE: Please use this feature only when there is a special need to get entire raw message. This is not supported by splunk.","title":"Cisco Networking (IOS and Compatible)"},{"location":"sources/vendor/Cisco/cisco_ios/#cisco-networking-ios-and-compatible","text":"Cisco Network Products of multiple types share common logging characteristics the following types are known to be compatible: Cisco AireOS (AP & WLC) Cisco APIC/ACI Cisco IOS Cisco IOS-XR Cisco IOS-XE Cisco NX-OS Cisco FX-OS","title":"Cisco Networking (IOS and Compatible)"},{"location":"sources/vendor/Cisco/cisco_ios/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_ios/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1467/ IOS Manual https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960/software/release/12-2_55_se/configuration/guide/scg_2960/swlog.html NX-OS Manual https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/6-x/system_management/configuration/guide/b_Cisco_Nexus_9000_Series_NX-OS_System_Management_Configuration_Guide/sm_5syslog.html Cisco ACI https://community.cisco.com/legacyfs/online/attachments/document/technote-aci-syslog_external-v1.pdf Cisco WLC & AP https://www.cisco.com/c/en/us/support/docs/wireless/4100-series-wireless-lan-controllers/107252-WLC-Syslog-Server.html#anc8","title":"Links"},{"location":"sources/vendor/Cisco/cisco_ios/#sourcetypes","text":"sourcetype notes cisco:ios This source type is also used for NX-OS, ACI and WLC product lines","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_ios/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_ios cisco:ios netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_ios/#filter-type","text":"Cisco IOS products can be identified by message parsing alone Cisco WLC, and ACI products must be identified by host or ip assignment update the filter f_cisco_ios as required","title":"Filter type"},{"location":"sources/vendor/Cisco/cisco_ios/#setup-and-configuration","text":"IOS Follow vendor configuration steps per Product Manual above ensure: Ensure a reliable NTP server is set and synced Log Level is 6 \u201cInformational\u201d Protocol is TCP/IP permit-hostdown is on device-id is hostname and included timestamp is included NX-OS Follow vendor configuration steps per Product Manual above ensure: Ensure a reliable NTP server is set and synced Log Level is 6 \u201cInformational\u201d user may select alternate levels by module based on use cases Protocol is TCP/IP device-id is hostname and included timestamp is included and millisecond accuracy selected ACI Logging configuration of the ACI product often varies by use case. Ensure NTP sync is configured and active Ensure proper host names are configured WLC Ensure NTP sync is configured and active Ensure proper host names are configured For security use cases per AP logging is required If you want to send raw logs to splunk (without any drop) then only use this feature Please set following property in env_file: SC4S_ENABLE_CISCO_IOS_RAW_MSG=yes Restart SC4S and it will send entire message without any drop. NOTE: Please use this feature only when there is a special need to get entire raw message. This is not supported by splunk.","title":"Setup and Configuration"},{"location":"sources/vendor/Cisco/cisco_ise/","text":"Cisco Identity Services Engine (ISE) \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1915/ Product Manual https://www.cisco.com/c/en/us/td/docs/security/ise/syslog/Cisco_ISE_Syslogs/m_IntrotoSyslogs.html Sourcetypes \u00b6 sourcetype notes cisco:ise:syslog Aggregation used Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_ise cisco:ise:syslog netauth None","title":"Cisco ise"},{"location":"sources/vendor/Cisco/cisco_ise/#cisco-identity-services-engine-ise","text":"","title":"Cisco Identity Services Engine (ISE)"},{"location":"sources/vendor/Cisco/cisco_ise/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_ise/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1915/ Product Manual https://www.cisco.com/c/en/us/td/docs/security/ise/syslog/Cisco_ISE_Syslogs/m_IntrotoSyslogs.html","title":"Links"},{"location":"sources/vendor/Cisco/cisco_ise/#sourcetypes","text":"sourcetype notes cisco:ise:syslog Aggregation used","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_ise/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_ise cisco:ise:syslog netauth None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_meraki/","text":"Meraki (MR, MS, MX) \u00b6 Key facts \u00b6 In most cases, Cisco Meraki logs are general and require vendor product by source configuration. For distinctive log messages, filters are based on the appliance name and program value. Distinctive log messages \u00b6 See samples in the vendor documentation . The two conjuncted conditions are required: Program: (events|urls|firewall|cellular_firewall|vpn_firewall|ids-alerts|flows) Appliance name: Sourcetype Distinct element meraki:accesspoints host('MR' type(string) flags(ignore-case,prefix)) meraki:securityappliances host('MX' type(string) flags(ignore-case,prefix)) meraki:switches host('MS' type(string) flags(ignore-case,prefix)) Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/5580 Product Manual https://documentation.meraki.com/zGeneral_Administration/Monitoring_and_Reporting/Syslog_Server_Overview_and_Configuration https://documentation.meraki.com/General_Administration/Monitoring_and_Reporting/Syslog_Event_Types_and_Log_Samples Sourcetypes \u00b6 sourcetype notes meraki:accesspoints MR meraki:securityappliances MX meraki:switches MS meraki vendor product by source configuration Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_meraki_accesspoints meraki:accesspoints netfw Filtered on the message format cisco_meraki_securityappliances meraki:securityappliances netfw Filtered on the message format cisco_meraki_switches meraki:switches netfw Filtered on the message format cisco_meraki meraki netfw Filtered on vendor product by source configuration Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-cisco_meraki.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_meraki [ sc4s - vps ] { filter { host ( \"^testcm-\" ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' meraki ' ) ); }; };","title":"Cisco meraki"},{"location":"sources/vendor/Cisco/cisco_meraki/#meraki-mr-ms-mx","text":"","title":"Meraki (MR, MS, MX)"},{"location":"sources/vendor/Cisco/cisco_meraki/#key-facts","text":"In most cases, Cisco Meraki logs are general and require vendor product by source configuration. For distinctive log messages, filters are based on the appliance name and program value.","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_meraki/#distinctive-log-messages","text":"See samples in the vendor documentation . The two conjuncted conditions are required: Program: (events|urls|firewall|cellular_firewall|vpn_firewall|ids-alerts|flows) Appliance name: Sourcetype Distinct element meraki:accesspoints host('MR' type(string) flags(ignore-case,prefix)) meraki:securityappliances host('MX' type(string) flags(ignore-case,prefix)) meraki:switches host('MS' type(string) flags(ignore-case,prefix))","title":"Distinctive log messages"},{"location":"sources/vendor/Cisco/cisco_meraki/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/5580 Product Manual https://documentation.meraki.com/zGeneral_Administration/Monitoring_and_Reporting/Syslog_Server_Overview_and_Configuration https://documentation.meraki.com/General_Administration/Monitoring_and_Reporting/Syslog_Event_Types_and_Log_Samples","title":"Links"},{"location":"sources/vendor/Cisco/cisco_meraki/#sourcetypes","text":"sourcetype notes meraki:accesspoints MR meraki:securityappliances MX meraki:switches MS meraki vendor product by source configuration","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_meraki/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_meraki_accesspoints meraki:accesspoints netfw Filtered on the message format cisco_meraki_securityappliances meraki:securityappliances netfw Filtered on the message format cisco_meraki_switches meraki:switches netfw Filtered on the message format cisco_meraki meraki netfw Filtered on vendor product by source configuration","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_meraki/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-cisco_meraki.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_meraki [ sc4s - vps ] { filter { host ( \"^testcm-\" ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' meraki ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Cisco/cisco_mm/","text":"Meeting Management \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on na Product Manual multiple Sourcetypes \u00b6 sourcetype notes cisco:mm:system:* final component take from the program field of the message header cisco:mm:audit Requires setup of vendor product by source see below Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_mm_system cisco:mm:system:* netops None cisco_mm_audit cisco:mm:audit netops None Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-cisco_mm.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_mm [ sc4s - vps ] { filter { host ( ' ^ test - cmm - ' ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' mm ' ) ); }; };","title":"Meeting Management"},{"location":"sources/vendor/Cisco/cisco_mm/#meeting-management","text":"","title":"Meeting Management"},{"location":"sources/vendor/Cisco/cisco_mm/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_mm/#links","text":"Ref Link Splunk Add-on na Product Manual multiple","title":"Links"},{"location":"sources/vendor/Cisco/cisco_mm/#sourcetypes","text":"sourcetype notes cisco:mm:system:* final component take from the program field of the message header cisco:mm:audit Requires setup of vendor product by source see below","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_mm/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_mm_system cisco:mm:system:* netops None cisco_mm_audit cisco:mm:audit netops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_mm/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-cisco_mm.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_mm [ sc4s - vps ] { filter { host ( ' ^ test - cmm - ' ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' mm ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Cisco/cisco_ms/","text":"Meeting Server \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on na Product Manual multiple Sourcetypes \u00b6 sourcetype notes cisco:ms None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_ms cisco:ms netops None Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-cisco_ms.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_ms [ sc4s - vps ] { filter { host ( ' ^ test - cms - ' ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' ms ' ) ); }; };","title":"Meeting Server"},{"location":"sources/vendor/Cisco/cisco_ms/#meeting-server","text":"","title":"Meeting Server"},{"location":"sources/vendor/Cisco/cisco_ms/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_ms/#links","text":"Ref Link Splunk Add-on na Product Manual multiple","title":"Links"},{"location":"sources/vendor/Cisco/cisco_ms/#sourcetypes","text":"sourcetype notes cisco:ms None","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_ms/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_ms cisco:ms netops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_ms/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-cisco_ms.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_ms [ sc4s - vps ] { filter { host ( ' ^ test - cms - ' ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' ms ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Cisco/cisco_tvcs/","text":"TelePresence Video Communication Server (TVCS) \u00b6 Links \u00b6 Ref Link Product Manual https://www.cisco.com/c/en/us/products/unified-communications/telepresence-video-communication-server-vcs/index.html Sourcetypes \u00b6 sourcetype notes cisco:vcs none Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_tvcs cisco:tvcs main none","title":"TelePresence Video Communication Server (TVCS)"},{"location":"sources/vendor/Cisco/cisco_tvcs/#telepresence-video-communication-server-tvcs","text":"","title":"TelePresence Video Communication Server (TVCS)"},{"location":"sources/vendor/Cisco/cisco_tvcs/#links","text":"Ref Link Product Manual https://www.cisco.com/c/en/us/products/unified-communications/telepresence-video-communication-server-vcs/index.html","title":"Links"},{"location":"sources/vendor/Cisco/cisco_tvcs/#sourcetypes","text":"sourcetype notes cisco:vcs none","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_tvcs/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_tvcs cisco:tvcs main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_ucm/","text":"Unified Communications Manager (UCM) \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on na Product Manual multiple Sourcetypes \u00b6 sourcetype notes cisco:ucm None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_ucm cisco:ucm ucm None","title":"Unified Communications Manager (UCM)"},{"location":"sources/vendor/Cisco/cisco_ucm/#unified-communications-manager-ucm","text":"","title":"Unified Communications Manager (UCM)"},{"location":"sources/vendor/Cisco/cisco_ucm/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_ucm/#links","text":"Ref Link Splunk Add-on na Product Manual multiple","title":"Links"},{"location":"sources/vendor/Cisco/cisco_ucm/#sourcetypes","text":"sourcetype notes cisco:ucm None","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_ucm/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_ucm cisco:ucm ucm None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_ucshx/","text":"Unified Computing System (UCS) \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on na Product Manual multiple Sourcetypes \u00b6 sourcetype notes cisco:ucs None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_ucs cisco:ucs infraops None","title":"Unified Computing System (UCS)"},{"location":"sources/vendor/Cisco/cisco_ucshx/#unified-computing-system-ucs","text":"","title":"Unified Computing System (UCS)"},{"location":"sources/vendor/Cisco/cisco_ucshx/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_ucshx/#links","text":"Ref Link Splunk Add-on na Product Manual multiple","title":"Links"},{"location":"sources/vendor/Cisco/cisco_ucshx/#sourcetypes","text":"sourcetype notes cisco:ucs None","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_ucshx/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_ucs cisco:ucs infraops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_viptela/","text":"Viptela \u00b6 Key facts \u00b6 MSG Format based filter Links \u00b6 Ref Link Splunk Add-on na Product Manual multiple Sourcetypes \u00b6 sourcetype notes cisco:viptela None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_viptela cisco:viptela netops None","title":"Viptela"},{"location":"sources/vendor/Cisco/cisco_viptela/#viptela","text":"","title":"Viptela"},{"location":"sources/vendor/Cisco/cisco_viptela/#key-facts","text":"MSG Format based filter","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_viptela/#links","text":"Ref Link Splunk Add-on na Product Manual multiple","title":"Links"},{"location":"sources/vendor/Cisco/cisco_viptela/#sourcetypes","text":"sourcetype notes cisco:viptela None","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_viptela/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_viptela cisco:viptela netops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_wsa/","text":"Web Security Appliance (WSA) \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1747/ Product Manual https://www.cisco.com/c/en/us/td/docs/security/wsa/wsa11-7/user_guide/b_WSA_UserGuide_11_7.html Sourcetypes \u00b6 | cisco:wsa:l4tm | The L4TM logs of Cisco IronPort WSA record sites added to the L4TM block and allow lists. | | cisco:wsa:squid | The access logs of Cisco IronPort WSA version prior to 11.7 record Web Proxy client history in squid. | | cisco:wsa:squid:new | The access logs of Cisco IronPort WSA version since 11.7 record Web Proxy client history in squid. | | cisco:wsa:w3c:recommended | The access logs of Cisco IronPort WSA version since 12.5 record Web Proxy client history in W3C. | Sourcetype and Index Configuration \u00b6 key sourcetype index notes cisco_wsa cisco:wsa:l4tm netproxy None cisco_wsa cisco:wsa:squid netproxy None cisco_wsa cisco:wsa:squid:new netproxy None cisco_wsa cisco:wsa:w3c:recommended netproxy None Filter type \u00b6 IP, Netmask or Host Source Setup and Configuration \u00b6 Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. WSA Follow vendor configuration steps per Product Manual. Ensure host and timestamp are included. Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-cisco_wsa.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_wsa [ sc4s - vps ] { filter { host ( \"^wsa-\" ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' wsa ' ) ); }; };","title":"Web Security Appliance (WSA)"},{"location":"sources/vendor/Cisco/cisco_wsa/#web-security-appliance-wsa","text":"","title":"Web Security Appliance (WSA)"},{"location":"sources/vendor/Cisco/cisco_wsa/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cisco/cisco_wsa/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1747/ Product Manual https://www.cisco.com/c/en/us/td/docs/security/wsa/wsa11-7/user_guide/b_WSA_UserGuide_11_7.html","title":"Links"},{"location":"sources/vendor/Cisco/cisco_wsa/#sourcetypes","text":"| cisco:wsa:l4tm | The L4TM logs of Cisco IronPort WSA record sites added to the L4TM block and allow lists. | | cisco:wsa:squid | The access logs of Cisco IronPort WSA version prior to 11.7 record Web Proxy client history in squid. | | cisco:wsa:squid:new | The access logs of Cisco IronPort WSA version since 11.7 record Web Proxy client history in squid. | | cisco:wsa:w3c:recommended | The access logs of Cisco IronPort WSA version since 12.5 record Web Proxy client history in W3C. |","title":"Sourcetypes"},{"location":"sources/vendor/Cisco/cisco_wsa/#sourcetype-and-index-configuration","text":"key sourcetype index notes cisco_wsa cisco:wsa:l4tm netproxy None cisco_wsa cisco:wsa:squid netproxy None cisco_wsa cisco:wsa:squid:new netproxy None cisco_wsa cisco:wsa:w3c:recommended netproxy None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Cisco/cisco_wsa/#filter-type","text":"IP, Netmask or Host","title":"Filter type"},{"location":"sources/vendor/Cisco/cisco_wsa/#source-setup-and-configuration","text":"Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. WSA Follow vendor configuration steps per Product Manual. Ensure host and timestamp are included.","title":"Source Setup and Configuration"},{"location":"sources/vendor/Cisco/cisco_wsa/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-cisco_wsa.conf #File name provided is a suggestion it must be globally unique application app - vps - test - cisco_wsa [ sc4s - vps ] { filter { host ( \"^wsa-\" ) }; parser { p_set_netsource_fields ( vendor ( ' cisco ' ) product ( ' wsa ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Citrix/netscaler/","text":"Netscaler ADC/SDX \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2770/ Product Manual https://docs.citrix.com/en-us/citrix-adc/12-1/system/audit-logging/configuring-audit-logging.html Sourcetypes \u00b6 sourcetype notes citrix:netscaler:syslog None citrix:netscaler:appfw None citrix:netscaler:appfw:cef None Sourcetype and Index Configuration \u00b6 key sourcetype index notes citrix_netscaler citrix:netscaler:syslog netfw none citrix_netscaler citrix:netscaler:appfw netfw none citrix_netscaler citrix:netscaler:appfw:cef netfw none Source Setup and Configuration \u00b6 Follow vendor configuration steps per Product Manual above. Ensure the data format selected is \u201cDDMMYYYY\u201d","title":"Netscaler ADC/SDX"},{"location":"sources/vendor/Citrix/netscaler/#netscaler-adcsdx","text":"","title":"Netscaler ADC/SDX"},{"location":"sources/vendor/Citrix/netscaler/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Citrix/netscaler/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2770/ Product Manual https://docs.citrix.com/en-us/citrix-adc/12-1/system/audit-logging/configuring-audit-logging.html","title":"Links"},{"location":"sources/vendor/Citrix/netscaler/#sourcetypes","text":"sourcetype notes citrix:netscaler:syslog None citrix:netscaler:appfw None citrix:netscaler:appfw:cef None","title":"Sourcetypes"},{"location":"sources/vendor/Citrix/netscaler/#sourcetype-and-index-configuration","text":"key sourcetype index notes citrix_netscaler citrix:netscaler:syslog netfw none citrix_netscaler citrix:netscaler:appfw netfw none citrix_netscaler citrix:netscaler:appfw:cef netfw none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Citrix/netscaler/#source-setup-and-configuration","text":"Follow vendor configuration steps per Product Manual above. Ensure the data format selected is \u201cDDMMYYYY\u201d","title":"Source Setup and Configuration"},{"location":"sources/vendor/Clearswift/","text":"WAF (Cloud) \u00b6 Key facts \u00b6 MSG Format based filter RFC 5424 Framed Links \u00b6 Ref Link Splunk Add-on None Product Manual https://clearswifthelp.clearswift.com/SEG/472/en/Content/Sections/SystemsCenter/SYCLogList.htm Sourcetypes \u00b6 sourcetype notes clearswift:${PROGRAM} none Sourcetype and Index Configuration \u00b6 key sourcetype index notes clearswift clearswift:${PROGRAM} email None Parser Configuration \u00b6 ```c /opt/sc4s/local/config/app-parsers/app-vps-clearswift.conf \u00b6 File name provided is a suggestion it must be globally unique \u00b6 application app-vps-clearswift[sc4s-vps] { filter { host(\u201ctest-clearswift-\u201d type(string) flags(prefix)) }; parser { p_set_netsource_fields( vendor(\u2018clearswift\u2019) product(\u2018clearswift\u2019) ); }; };","title":"WAF (Cloud)"},{"location":"sources/vendor/Clearswift/#waf-cloud","text":"","title":"WAF (Cloud)"},{"location":"sources/vendor/Clearswift/#key-facts","text":"MSG Format based filter RFC 5424 Framed","title":"Key facts"},{"location":"sources/vendor/Clearswift/#links","text":"Ref Link Splunk Add-on None Product Manual https://clearswifthelp.clearswift.com/SEG/472/en/Content/Sections/SystemsCenter/SYCLogList.htm","title":"Links"},{"location":"sources/vendor/Clearswift/#sourcetypes","text":"sourcetype notes clearswift:${PROGRAM} none","title":"Sourcetypes"},{"location":"sources/vendor/Clearswift/#sourcetype-and-index-configuration","text":"key sourcetype index notes clearswift clearswift:${PROGRAM} email None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Clearswift/#parser-configuration","text":"```c","title":"Parser Configuration"},{"location":"sources/vendor/Clearswift/#optsc4slocalconfigapp-parsersapp-vps-clearswiftconf","text":"","title":"/opt/sc4s/local/config/app-parsers/app-vps-clearswift.conf"},{"location":"sources/vendor/Clearswift/#file-name-provided-is-a-suggestion-it-must-be-globally-unique","text":"application app-vps-clearswift[sc4s-vps] { filter { host(\u201ctest-clearswift-\u201d type(string) flags(prefix)) }; parser { p_set_netsource_fields( vendor(\u2018clearswift\u2019) product(\u2018clearswift\u2019) ); }; };","title":"File name provided is a suggestion it must be globally unique"},{"location":"sources/vendor/Cohesity/cluster/","text":"Cluster \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes cohesity:cluster:audit None cohesity:cluster:dataprotection None Sourcetype and Index Configuration \u00b6 key sourcetype index notes cohesity_cluster_audit cohesity:cluster:audit infraops none cohesity_cluster_dataprotection cohesity:cluster:dataprotection infraops none","title":"Cluster"},{"location":"sources/vendor/Cohesity/cluster/#cluster","text":"","title":"Cluster"},{"location":"sources/vendor/Cohesity/cluster/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cohesity/cluster/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Cohesity/cluster/#sourcetypes","text":"sourcetype notes cohesity:cluster:audit None cohesity:cluster:dataprotection None","title":"Sourcetypes"},{"location":"sources/vendor/Cohesity/cluster/#sourcetype-and-index-configuration","text":"key sourcetype index notes cohesity_cluster_audit cohesity:cluster:audit infraops none cohesity_cluster_dataprotection cohesity:cluster:dataprotection infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/CyberArk/epv/","text":"Vendor - CyberArk \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Product - EPV \u00b6 Ref Link Splunk Add-on CyberArk https://splunkbase.splunk.com/app/2891/ Add-on Manual https://docs.splunk.com/Documentation/AddOns/latest/CyberArk/About Sourcetypes \u00b6 sourcetype notes cyberark:epv:cef None Index Configuration \u00b6 key sourcetype index notes CyberArk_Vault cyberark:epv:cef netauth none","title":"Vendor - CyberArk"},{"location":"sources/vendor/CyberArk/epv/#vendor-cyberark","text":"","title":"Vendor - CyberArk"},{"location":"sources/vendor/CyberArk/epv/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/CyberArk/epv/#product-epv","text":"Ref Link Splunk Add-on CyberArk https://splunkbase.splunk.com/app/2891/ Add-on Manual https://docs.splunk.com/Documentation/AddOns/latest/CyberArk/About","title":"Product - EPV"},{"location":"sources/vendor/CyberArk/epv/#sourcetypes","text":"sourcetype notes cyberark:epv:cef None","title":"Sourcetypes"},{"location":"sources/vendor/CyberArk/epv/#index-configuration","text":"key sourcetype index notes CyberArk_Vault cyberark:epv:cef netauth none","title":"Index Configuration"},{"location":"sources/vendor/CyberArk/pta/","text":"PTA \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on CyberArk https://splunkbase.splunk.com/app/2891/ Add-on Manual https://docs.splunk.com/Documentation/AddOns/latest/CyberArk/About Product Manual https://docs.cyberark.com/PAS/Latest/en/Content/PTA/CEF-Based-Format-Definition.htm Sourcetypes \u00b6 sourcetype notes cyberark:pta:cef None Index Configuration \u00b6 key sourcetype index notes CyberArk_PTA cyberark:pta:cef main none","title":"PTA"},{"location":"sources/vendor/CyberArk/pta/#pta","text":"","title":"PTA"},{"location":"sources/vendor/CyberArk/pta/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/CyberArk/pta/#links","text":"Ref Link Splunk Add-on CyberArk https://splunkbase.splunk.com/app/2891/ Add-on Manual https://docs.splunk.com/Documentation/AddOns/latest/CyberArk/About Product Manual https://docs.cyberark.com/PAS/Latest/en/Content/PTA/CEF-Based-Format-Definition.htm","title":"Links"},{"location":"sources/vendor/CyberArk/pta/#sourcetypes","text":"sourcetype notes cyberark:pta:cef None","title":"Sourcetypes"},{"location":"sources/vendor/CyberArk/pta/#index-configuration","text":"key sourcetype index notes CyberArk_PTA cyberark:pta:cef main none","title":"Index Configuration"},{"location":"sources/vendor/Cylance/protect/","text":"Protect \u00b6 Key facts \u00b6 MSG Format based filter None conformant legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on CyberArk https://splunkbase.splunk.com/app/3709/ Sourcetypes \u00b6 sourcetype notes syslog_protect Catchall syslog_threat_classification None syslog_audit_log None syslog_exploit None syslog_app_control None syslog_threat None syslog_device None syslog_device_control None syslog_script_control None syslog_optics None Index Configuration \u00b6 key sourcetype index notes cylance_protect syslog_protect epintel none cylance_protect_auditlog syslog_audit_log epintel none cylance_protect_threatclassification syslog_threat_classification epintel none cylance_protect_exploitattempt syslog_exploit epintel none cylance_protect_appcontrol syslog_app_control epintel none cylance_protect_threat syslog_threat epintel none cylance_protect_device syslog_device epintel none cylance_protect_devicecontrol syslog_device_control epintel none cylance_protect_scriptcontrol syslog_protect epintel none cylance_protect_scriptcontrol syslog_script_control epintel none cylance_protect_optics syslog_optics epintel none","title":"Protect"},{"location":"sources/vendor/Cylance/protect/#protect","text":"","title":"Protect"},{"location":"sources/vendor/Cylance/protect/#key-facts","text":"MSG Format based filter None conformant legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Cylance/protect/#links","text":"Ref Link Splunk Add-on CyberArk https://splunkbase.splunk.com/app/3709/","title":"Links"},{"location":"sources/vendor/Cylance/protect/#sourcetypes","text":"sourcetype notes syslog_protect Catchall syslog_threat_classification None syslog_audit_log None syslog_exploit None syslog_app_control None syslog_threat None syslog_device None syslog_device_control None syslog_script_control None syslog_optics None","title":"Sourcetypes"},{"location":"sources/vendor/Cylance/protect/#index-configuration","text":"key sourcetype index notes cylance_protect syslog_protect epintel none cylance_protect_auditlog syslog_audit_log epintel none cylance_protect_threatclassification syslog_threat_classification epintel none cylance_protect_exploitattempt syslog_exploit epintel none cylance_protect_appcontrol syslog_app_control epintel none cylance_protect_threat syslog_threat epintel none cylance_protect_device syslog_device epintel none cylance_protect_devicecontrol syslog_device_control epintel none cylance_protect_scriptcontrol syslog_protect epintel none cylance_protect_scriptcontrol syslog_script_control epintel none cylance_protect_optics syslog_optics epintel none","title":"Index Configuration"},{"location":"sources/vendor/DARKTRACE/darktrace/","text":"Darktrace \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes darktrace none darktrace:audit none Sourcetype and Index Configuration \u00b6 key sourcetype index notes darktrace_syslog darktrace netids None darktrace_audit darktrace_audit netids None","title":"Darktrace"},{"location":"sources/vendor/DARKTRACE/darktrace/#darktrace","text":"","title":"Darktrace"},{"location":"sources/vendor/DARKTRACE/darktrace/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/DARKTRACE/darktrace/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/DARKTRACE/darktrace/#sourcetypes","text":"sourcetype notes darktrace none darktrace:audit none","title":"Sourcetypes"},{"location":"sources/vendor/DARKTRACE/darktrace/#sourcetype-and-index-configuration","text":"key sourcetype index notes darktrace_syslog darktrace netids None darktrace_audit darktrace_audit netids None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Dell/cmc/","text":"CMC (VRTX) \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on na Add-on Manual https://www.dell.com/support/manuals/en-us/dell-chassis-management-controller-v3.10-dell-poweredge-vrtx/cmcvrtx31ug/overview?guid=guid-84595265-d37c-4765-8890-90f629737b17 Sourcetypes \u00b6 sourcetype notes dell:poweredge:cmc:syslog None Index Configuration \u00b6 key sourcetype index notes dell_poweredge_cmc dell:poweredge:cmc:syslog infraops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-dell_cmc.conf #File name provided is a suggestion it must be globally unique application app - vps - test - dell_cmc [ sc4s - vps ] { filter { host ( \"test-dell-cmc-\" type ( string ) flags ( prefix )) }; parser { p_set_netsource_fields ( vendor ( ' dell ' ) product ( ' poweredge_cmc ' ) ); }; };","title":"CMC (VRTX)"},{"location":"sources/vendor/Dell/cmc/#cmc-vrtx","text":"","title":"CMC (VRTX)"},{"location":"sources/vendor/Dell/cmc/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Dell/cmc/#links","text":"Ref Link Splunk Add-on na Add-on Manual https://www.dell.com/support/manuals/en-us/dell-chassis-management-controller-v3.10-dell-poweredge-vrtx/cmcvrtx31ug/overview?guid=guid-84595265-d37c-4765-8890-90f629737b17","title":"Links"},{"location":"sources/vendor/Dell/cmc/#sourcetypes","text":"sourcetype notes dell:poweredge:cmc:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Dell/cmc/#index-configuration","text":"key sourcetype index notes dell_poweredge_cmc dell:poweredge:cmc:syslog infraops none","title":"Index Configuration"},{"location":"sources/vendor/Dell/cmc/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-dell_cmc.conf #File name provided is a suggestion it must be globally unique application app - vps - test - dell_cmc [ sc4s - vps ] { filter { host ( \"test-dell-cmc-\" type ( string ) flags ( prefix )) }; parser { p_set_netsource_fields ( vendor ( ' dell ' ) product ( ' poweredge_cmc ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Dell/emc_powerswitchn/","text":"EMC Powerswitch N Series \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes dell:emc:powerswitch:n None nix:syslog Non conforming messages Sourcetype and Index Configuration \u00b6 key sourcetype index notes dellemc_powerswitch_n all netops none","title":"EMC Powerswitch N Series"},{"location":"sources/vendor/Dell/emc_powerswitchn/#emc-powerswitch-n-series","text":"","title":"EMC Powerswitch N Series"},{"location":"sources/vendor/Dell/emc_powerswitchn/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Dell/emc_powerswitchn/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Dell/emc_powerswitchn/#sourcetypes","text":"sourcetype notes dell:emc:powerswitch:n None nix:syslog Non conforming messages","title":"Sourcetypes"},{"location":"sources/vendor/Dell/emc_powerswitchn/#sourcetype-and-index-configuration","text":"key sourcetype index notes dellemc_powerswitch_n all netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Dell/idrac/","text":"iDrac \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on na Add-on Manual https://www.dell.com/support/manuals/en-au/dell-opnmang-sw-v8.1/eemi_13g_v1.2-v1/introduction?guid=guid-8f22a1a9-ac01-43d1-a9d2-390ca6708d5e&lang=en-us Sourcetypes \u00b6 sourcetype notes dell:poweredge:idrac:syslog None Index Configuration \u00b6 key sourcetype index notes dell_poweredge_idrac dell:poweredge:idrac:syslog infraops none","title":"iDrac"},{"location":"sources/vendor/Dell/idrac/#idrac","text":"","title":"iDrac"},{"location":"sources/vendor/Dell/idrac/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Dell/idrac/#links","text":"Ref Link Splunk Add-on na Add-on Manual https://www.dell.com/support/manuals/en-au/dell-opnmang-sw-v8.1/eemi_13g_v1.2-v1/introduction?guid=guid-8f22a1a9-ac01-43d1-a9d2-390ca6708d5e&lang=en-us","title":"Links"},{"location":"sources/vendor/Dell/idrac/#sourcetypes","text":"sourcetype notes dell:poweredge:idrac:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Dell/idrac/#index-configuration","text":"key sourcetype index notes dell_poweredge_idrac dell:poweredge:idrac:syslog infraops none","title":"Index Configuration"},{"location":"sources/vendor/Dell/rsa_secureid/","text":"RSA SecureID \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2958/ Product Manual https://docs.splunk.com/Documentation/AddOns/released/RSASecurID/Aboutthisaddon Sourcetypes \u00b6 sourcetype notes rsa:securid:syslog Catchall; used if a more specific source type can not be identified rsa:securid:admin:syslog None rsa:securid:runtime:syslog None nix:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes dell-rsa_secureid all netauth none dell-rsa_secureid_trace rsa:securid:trace netauth none dell-rsa_secureid nix:syslog osnix uses os_nix key of not configured bye host/ip/port Parser Configuration \u00b6 #/opt/sc4s/local/config/app_parsers/app-vps-dell_rsa_secureid.conf #File name provided is a suggestion it must be globally unique application app - vps - test - dell_rsa_secureid [ sc4s - vps ] { filter { host ( \"test_rsasecureid*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' dell ' ) product ( ' rsa_secureid ' ) ); }; };","title":"RSA SecureID"},{"location":"sources/vendor/Dell/rsa_secureid/#rsa-secureid","text":"","title":"RSA SecureID"},{"location":"sources/vendor/Dell/rsa_secureid/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Dell/rsa_secureid/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2958/ Product Manual https://docs.splunk.com/Documentation/AddOns/released/RSASecurID/Aboutthisaddon","title":"Links"},{"location":"sources/vendor/Dell/rsa_secureid/#sourcetypes","text":"sourcetype notes rsa:securid:syslog Catchall; used if a more specific source type can not be identified rsa:securid:admin:syslog None rsa:securid:runtime:syslog None nix:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Dell/rsa_secureid/#sourcetype-and-index-configuration","text":"key sourcetype index notes dell-rsa_secureid all netauth none dell-rsa_secureid_trace rsa:securid:trace netauth none dell-rsa_secureid nix:syslog osnix uses os_nix key of not configured bye host/ip/port","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Dell/rsa_secureid/#parser-configuration","text":"#/opt/sc4s/local/config/app_parsers/app-vps-dell_rsa_secureid.conf #File name provided is a suggestion it must be globally unique application app - vps - test - dell_rsa_secureid [ sc4s - vps ] { filter { host ( \"test_rsasecureid*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' dell ' ) product ( ' rsa_secureid ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Dell/sonicwall/","text":"Sonicwall \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/6203/ Sourcetypes \u00b6 sourcetype notes dell:sonicwall None Index Configuration \u00b6 key sourcetype index notes dell_sonicwall-firewall dell:sonicwall netfw none Options \u00b6 Variable default description SC4S_DEST_DELL_SONICWALL-FIREWALL_SPLUNK_HEC_FMT JSON Restructure data from vendor format to json for splunk destinations set to \u201cNONE\u201d for native format SC4S_DEST_DELL_SONICWALL-FIREWALL_SYSLOG_FMT SDATA Restructure data from vendor format to SDATA for SYSLOG destinations set to \u201cNONE\u201d for native format Note: \u00b6 The sourcetype has been changed in version 2.35.0 making it compliant with corresponding TA.","title":"Sonicwall"},{"location":"sources/vendor/Dell/sonicwall/#sonicwall","text":"","title":"Sonicwall"},{"location":"sources/vendor/Dell/sonicwall/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Dell/sonicwall/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/6203/","title":"Links"},{"location":"sources/vendor/Dell/sonicwall/#sourcetypes","text":"sourcetype notes dell:sonicwall None","title":"Sourcetypes"},{"location":"sources/vendor/Dell/sonicwall/#index-configuration","text":"key sourcetype index notes dell_sonicwall-firewall dell:sonicwall netfw none","title":"Index Configuration"},{"location":"sources/vendor/Dell/sonicwall/#options","text":"Variable default description SC4S_DEST_DELL_SONICWALL-FIREWALL_SPLUNK_HEC_FMT JSON Restructure data from vendor format to json for splunk destinations set to \u201cNONE\u201d for native format SC4S_DEST_DELL_SONICWALL-FIREWALL_SYSLOG_FMT SDATA Restructure data from vendor format to SDATA for SYSLOG destinations set to \u201cNONE\u201d for native format","title":"Options"},{"location":"sources/vendor/Dell/sonicwall/#note","text":"The sourcetype has been changed in version 2.35.0 making it compliant with corresponding TA.","title":"Note:"},{"location":"sources/vendor/F5/bigip/","text":"BigIP \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Needs host to be defined in log header similarly like in this issue. Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2680/ Product Manual unknown Sourcetypes \u00b6 sourcetype notes f5:bigip:syslog None f5:bigip:irule None f5:bigip:ltm:http:irule None f5:bigip:gtm:dns:request:irule None f5:bigip:gtm:dns:response:irule None f5:bigip:ltm:failed:irule None f5:bigip:asm:syslog None f5:bigip:apm:syslog None nix:syslog None f5:bigip:ltm:access_json User defined configuration via irule producing a RFC5424 syslog event with json content within the message field <111>1 2020-05-28T22:48:15Z foo.example.com F5 - access_json - {\"event_type\":\"HTTP_REQUEST\", \"src_ip\":\"10.66.98.41\"} This source type requires a customer specific Splunk Add-on for utility value Index Configuration \u00b6 key index notes f5_bigip netops none f5_bigip_irule netops none f5_bigip_asm netwaf none f5_bigip_apm netops none f5_bigip_nix netops if f_f5_bigip is not set the index osnix will be used f5_bigip_access_json netops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-f5_bigip.conf #File name provided is a suggestion it must be globally unique application app - vps - test - f5_bigip [ sc4s - vps ] { filter { \"${HOST}\" eq \"f5_bigip\" }; parser { p_set_netsource_fields ( vendor ( ' f5 ' ) product ( ' bigip ' ) ); }; };","title":"BigIP"},{"location":"sources/vendor/F5/bigip/#bigip","text":"","title":"BigIP"},{"location":"sources/vendor/F5/bigip/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514 Needs host to be defined in log header similarly like in this issue.","title":"Key facts"},{"location":"sources/vendor/F5/bigip/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2680/ Product Manual unknown","title":"Links"},{"location":"sources/vendor/F5/bigip/#sourcetypes","text":"sourcetype notes f5:bigip:syslog None f5:bigip:irule None f5:bigip:ltm:http:irule None f5:bigip:gtm:dns:request:irule None f5:bigip:gtm:dns:response:irule None f5:bigip:ltm:failed:irule None f5:bigip:asm:syslog None f5:bigip:apm:syslog None nix:syslog None f5:bigip:ltm:access_json User defined configuration via irule producing a RFC5424 syslog event with json content within the message field <111>1 2020-05-28T22:48:15Z foo.example.com F5 - access_json - {\"event_type\":\"HTTP_REQUEST\", \"src_ip\":\"10.66.98.41\"} This source type requires a customer specific Splunk Add-on for utility value","title":"Sourcetypes"},{"location":"sources/vendor/F5/bigip/#index-configuration","text":"key index notes f5_bigip netops none f5_bigip_irule netops none f5_bigip_asm netwaf none f5_bigip_apm netops none f5_bigip_nix netops if f_f5_bigip is not set the index osnix will be used f5_bigip_access_json netops none","title":"Index Configuration"},{"location":"sources/vendor/F5/bigip/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-f5_bigip.conf #File name provided is a suggestion it must be globally unique application app - vps - test - f5_bigip [ sc4s - vps ] { filter { \"${HOST}\" eq \"f5_bigip\" }; parser { p_set_netsource_fields ( vendor ( ' f5 ' ) product ( ' bigip ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/FireEye/cms/","text":"CMS \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/ Sourcetypes \u00b6 sourcetype notes fe_cef_syslog Index Configuration \u00b6 key sourcetype index notes FireEye_CMS fe_cef_syslog fireeye","title":"CMS"},{"location":"sources/vendor/FireEye/cms/#cms","text":"","title":"CMS"},{"location":"sources/vendor/FireEye/cms/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/FireEye/cms/#links","text":"Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/","title":"Links"},{"location":"sources/vendor/FireEye/cms/#sourcetypes","text":"sourcetype notes fe_cef_syslog","title":"Sourcetypes"},{"location":"sources/vendor/FireEye/cms/#index-configuration","text":"key sourcetype index notes FireEye_CMS fe_cef_syslog fireeye","title":"Index Configuration"},{"location":"sources/vendor/FireEye/emps/","text":"eMPS \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/ Sourcetypes \u00b6 sourcetype notes fe_cef_syslog Index Configuration \u00b6 key sourcetype index notes FireEye_eMPS fe_cef_syslog fireeye","title":"eMPS"},{"location":"sources/vendor/FireEye/emps/#emps","text":"","title":"eMPS"},{"location":"sources/vendor/FireEye/emps/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/FireEye/emps/#links","text":"Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/","title":"Links"},{"location":"sources/vendor/FireEye/emps/#sourcetypes","text":"sourcetype notes fe_cef_syslog","title":"Sourcetypes"},{"location":"sources/vendor/FireEye/emps/#index-configuration","text":"key sourcetype index notes FireEye_eMPS fe_cef_syslog fireeye","title":"Index Configuration"},{"location":"sources/vendor/FireEye/etp/","text":"etp \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/ Sourcetypes \u00b6 sourcetype notes fe_etp source does not provide host name constant \u201cetp.fireeye.com\u201d is use regardless of region Index Configuration \u00b6 key sourcetype index notes FireEye_ETP fe_etp fireeye","title":"etp"},{"location":"sources/vendor/FireEye/etp/#etp","text":"","title":"etp"},{"location":"sources/vendor/FireEye/etp/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/FireEye/etp/#links","text":"Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/","title":"Links"},{"location":"sources/vendor/FireEye/etp/#sourcetypes","text":"sourcetype notes fe_etp source does not provide host name constant \u201cetp.fireeye.com\u201d is use regardless of region","title":"Sourcetypes"},{"location":"sources/vendor/FireEye/etp/#index-configuration","text":"key sourcetype index notes FireEye_ETP fe_etp fireeye","title":"Index Configuration"},{"location":"sources/vendor/FireEye/hx/","text":"hx \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/ Sourcetypes \u00b6 sourcetype notes hx_cef_syslog Index Configuration \u00b6 key sourcetype index notes fireeye_hx hx_cef_syslog fireeye","title":"hx"},{"location":"sources/vendor/FireEye/hx/#hx","text":"","title":"hx"},{"location":"sources/vendor/FireEye/hx/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/FireEye/hx/#links","text":"Ref Link Technology Add-On for FireEye https://splunkbase.splunk.com/app/1904/","title":"Links"},{"location":"sources/vendor/FireEye/hx/#sourcetypes","text":"sourcetype notes hx_cef_syslog","title":"Sourcetypes"},{"location":"sources/vendor/FireEye/hx/#index-configuration","text":"key sourcetype index notes fireeye_hx hx_cef_syslog fireeye","title":"Index Configuration"},{"location":"sources/vendor/Forcepoint/","text":"Email Security \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Product Manual none Sourcetypes \u00b6 sourcetype notes forcepoint:email:kv None Sourcetype and Index Configuration \u00b6 key sourcetype index notes forcepoint_email forcepoint:email:kv email none","title":"Email Security"},{"location":"sources/vendor/Forcepoint/#email-security","text":"","title":"Email Security"},{"location":"sources/vendor/Forcepoint/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Forcepoint/#links","text":"Ref Link Splunk Add-on none Product Manual none","title":"Links"},{"location":"sources/vendor/Forcepoint/#sourcetypes","text":"sourcetype notes forcepoint:email:kv None","title":"Sourcetypes"},{"location":"sources/vendor/Forcepoint/#sourcetype-and-index-configuration","text":"key sourcetype index notes forcepoint_email forcepoint:email:kv email none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Forcepoint/webprotect/","text":"Webprotect (Websense) \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2966/ Product Manual http://www.websense.com/content/support/library/web/v85/siem/siem.pdf Sourcetypes \u00b6 sourcetype notes websense:cg:kv None Sourcetype and Index Configuration \u00b6 key sourcetype index notes forcepoint_webprotect websense:cg:kv netproxy none forcepoint_ websense:cg:kv netproxy if the log is in format of vendor=Forcepoint product= , the key will will be forcepoint_random","title":"Webprotect (Websense)"},{"location":"sources/vendor/Forcepoint/webprotect/#webprotect-websense","text":"","title":"Webprotect (Websense)"},{"location":"sources/vendor/Forcepoint/webprotect/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Forcepoint/webprotect/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2966/ Product Manual http://www.websense.com/content/support/library/web/v85/siem/siem.pdf","title":"Links"},{"location":"sources/vendor/Forcepoint/webprotect/#sourcetypes","text":"sourcetype notes websense:cg:kv None","title":"Sourcetypes"},{"location":"sources/vendor/Forcepoint/webprotect/#sourcetype-and-index-configuration","text":"key sourcetype index notes forcepoint_webprotect websense:cg:kv netproxy none forcepoint_ websense:cg:kv netproxy if the log is in format of vendor=Forcepoint product= , the key will will be forcepoint_random","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Fortinet/fortimail/","text":"FortiWMail \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3249 Sourcetypes \u00b6 sourcetype notes fml: type value is determined from the message Sourcetype and Index Configuration \u00b6 key sourcetype index notes fortinet_fortimail_ fml: email type value is determined from the message","title":"FortiWMail"},{"location":"sources/vendor/Fortinet/fortimail/#fortiwmail","text":"","title":"FortiWMail"},{"location":"sources/vendor/Fortinet/fortimail/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Fortinet/fortimail/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3249","title":"Links"},{"location":"sources/vendor/Fortinet/fortimail/#sourcetypes","text":"sourcetype notes fml: type value is determined from the message","title":"Sourcetypes"},{"location":"sources/vendor/Fortinet/fortimail/#sourcetype-and-index-configuration","text":"key sourcetype index notes fortinet_fortimail_ fml: email type value is determined from the message","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Fortinet/fortios/","text":"Fortios \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2846/ Product Manual https://docs.fortinet.com/product/fortigate/6.2 Sourcetypes \u00b6 sourcetype notes fgt_log Catch-all sourcetype; not used by the TA fgt_traffic None fgt_utm None fgt_event None Sourcetype and Index Configuration \u00b6 key sourcetype index notes fortinet_fortios_traffic fgt_traffic netfw none fortinet_fortios_utm fgt_utm netfw none fortinet_fortios_event fgt_event netops none fortinet_fortios_log fgt_log netops none Source Setup and Configuration \u00b6 Refer to the admin manual for specific details of configuration to send Reliable syslog using RFC 3195 format, a typical logging configuration will include the following features. config log memory filter set forward - traffic enable set local - traffic enable set sniffer - traffic disable set anomaly enable set voip disable set multicast - traffic enable set dns enable end config system global set cli - audit - log enable end config log setting set neighbor - event enable end Options \u00b6 Variable default description SC4S_OPTION_FORTINET_SOURCETYPE_PREFIX fgt Notice starting with version 1.6 of the fortinet add-on and app the sourcetype required changes from fgt_* to fortinet_* this is a breaking change to use the new sourcetype set this variable to fortigate in the env_file","title":"Fortios"},{"location":"sources/vendor/Fortinet/fortios/#fortios","text":"","title":"Fortios"},{"location":"sources/vendor/Fortinet/fortios/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Fortinet/fortios/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2846/ Product Manual https://docs.fortinet.com/product/fortigate/6.2","title":"Links"},{"location":"sources/vendor/Fortinet/fortios/#sourcetypes","text":"sourcetype notes fgt_log Catch-all sourcetype; not used by the TA fgt_traffic None fgt_utm None fgt_event None","title":"Sourcetypes"},{"location":"sources/vendor/Fortinet/fortios/#sourcetype-and-index-configuration","text":"key sourcetype index notes fortinet_fortios_traffic fgt_traffic netfw none fortinet_fortios_utm fgt_utm netfw none fortinet_fortios_event fgt_event netops none fortinet_fortios_log fgt_log netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Fortinet/fortios/#source-setup-and-configuration","text":"Refer to the admin manual for specific details of configuration to send Reliable syslog using RFC 3195 format, a typical logging configuration will include the following features. config log memory filter set forward - traffic enable set local - traffic enable set sniffer - traffic disable set anomaly enable set voip disable set multicast - traffic enable set dns enable end config system global set cli - audit - log enable end config log setting set neighbor - event enable end","title":"Source Setup and Configuration"},{"location":"sources/vendor/Fortinet/fortios/#options","text":"Variable default description SC4S_OPTION_FORTINET_SOURCETYPE_PREFIX fgt Notice starting with version 1.6 of the fortinet add-on and app the sourcetype required changes from fgt_* to fortinet_* this is a breaking change to use the new sourcetype set this variable to fortigate in the env_file","title":"Options"},{"location":"sources/vendor/Fortinet/fortiweb/","text":"FortiWeb \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4679/ Product Manual https://docs.fortinet.com/product/fortiweb/6.3 Sourcetypes \u00b6 sourcetype notes fgt_log Catch-all sourcetype; not used by the TA fwb_traffic None fwb_attack None fwb_event None Sourcetype and Index Configuration \u00b6 key sourcetype index notes fortinet_fortiweb_traffic fwb_traffic netfw none fortinet_fortiweb_attack fwb_attack netids none fortinet_fortiweb_event fwb_event netops none fortinet_fortiweb_log fwb_log netops none Source Setup and Configuration \u00b6 Refer to the admin manual for specific details of configuration to send Reliable syslog using RFC 3195 format, a typical logging configuration will include the following features. config log syslog - policy edit splunk config syslog - server - list edit 1 set server x . x . x . x set port 514 ( Example . Should be the same as default or dedicated port selected for sc4s ) end end config log syslogd set policy splunk set status enable end","title":"FortiWeb"},{"location":"sources/vendor/Fortinet/fortiweb/#fortiweb","text":"","title":"FortiWeb"},{"location":"sources/vendor/Fortinet/fortiweb/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Fortinet/fortiweb/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4679/ Product Manual https://docs.fortinet.com/product/fortiweb/6.3","title":"Links"},{"location":"sources/vendor/Fortinet/fortiweb/#sourcetypes","text":"sourcetype notes fgt_log Catch-all sourcetype; not used by the TA fwb_traffic None fwb_attack None fwb_event None","title":"Sourcetypes"},{"location":"sources/vendor/Fortinet/fortiweb/#sourcetype-and-index-configuration","text":"key sourcetype index notes fortinet_fortiweb_traffic fwb_traffic netfw none fortinet_fortiweb_attack fwb_attack netids none fortinet_fortiweb_event fwb_event netops none fortinet_fortiweb_log fwb_log netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Fortinet/fortiweb/#source-setup-and-configuration","text":"Refer to the admin manual for specific details of configuration to send Reliable syslog using RFC 3195 format, a typical logging configuration will include the following features. config log syslog - policy edit splunk config syslog - server - list edit 1 set server x . x . x . x set port 514 ( Example . Should be the same as default or dedicated port selected for sc4s ) end end config log syslogd set policy splunk set status enable end","title":"Source Setup and Configuration"},{"location":"sources/vendor/GitHub/","text":"Enterprise Server \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on Product Manual Sourcetypes \u00b6 sourcetype notes github:enterprise:audit The audit logs of GitHub Enterprise server have information about audites actions performed by github user. Sourcetype and Index Configuration \u00b6 key sourcetype index notes github_ent github:enterprise:audit gitops None","title":"Enterprise Server"},{"location":"sources/vendor/GitHub/#enterprise-server","text":"","title":"Enterprise Server"},{"location":"sources/vendor/GitHub/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/GitHub/#links","text":"Ref Link Splunk Add-on Product Manual","title":"Links"},{"location":"sources/vendor/GitHub/#sourcetypes","text":"sourcetype notes github:enterprise:audit The audit logs of GitHub Enterprise server have information about audites actions performed by github user.","title":"Sourcetypes"},{"location":"sources/vendor/GitHub/#sourcetype-and-index-configuration","text":"key sourcetype index notes github_ent github:enterprise:audit gitops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/HAProxy/syslog/","text":"HAProxy \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3135/ Sourcetypes \u00b6 sourcetype notes haproxy:tcp Default syslog format haproxy:splunk:http Splunk\u2019s documented custom format. Note: detection is based on client_ip prefix in message Index Configuration \u00b6 key index notes haproxy_syslog netlb none","title":"HAProxy"},{"location":"sources/vendor/HAProxy/syslog/#haproxy","text":"","title":"HAProxy"},{"location":"sources/vendor/HAProxy/syslog/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/HAProxy/syslog/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3135/","title":"Links"},{"location":"sources/vendor/HAProxy/syslog/#sourcetypes","text":"sourcetype notes haproxy:tcp Default syslog format haproxy:splunk:http Splunk\u2019s documented custom format. Note: detection is based on client_ip prefix in message","title":"Sourcetypes"},{"location":"sources/vendor/HAProxy/syslog/#index-configuration","text":"key index notes haproxy_syslog netlb none","title":"Index Configuration"},{"location":"sources/vendor/HPe/ilo/","text":"ILO (4+) \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Sourcetypes \u00b6 sourcetype notes hpe:ilo none Index Configuration \u00b6 key index notes hpe_ilo infraops none","title":"ILO (4+)"},{"location":"sources/vendor/HPe/ilo/#ilo-4","text":"","title":"ILO (4+)"},{"location":"sources/vendor/HPe/ilo/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/HPe/ilo/#links","text":"","title":"Links"},{"location":"sources/vendor/HPe/ilo/#sourcetypes","text":"sourcetype notes hpe:ilo none","title":"Sourcetypes"},{"location":"sources/vendor/HPe/ilo/#index-configuration","text":"key index notes hpe_ilo infraops none","title":"Index Configuration"},{"location":"sources/vendor/HPe/jedirect/","text":"JetDirect \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Sourcetypes \u00b6 sourcetype notes hpe:jetdirect none Index Configuration \u00b6 key index notes hpe_jetdirect print none","title":"Jedirect"},{"location":"sources/vendor/HPe/jedirect/#jetdirect","text":"","title":"JetDirect"},{"location":"sources/vendor/HPe/jedirect/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/HPe/jedirect/#links","text":"Ref Link","title":"Links"},{"location":"sources/vendor/HPe/jedirect/#sourcetypes","text":"sourcetype notes hpe:jetdirect none","title":"Sourcetypes"},{"location":"sources/vendor/HPe/jedirect/#index-configuration","text":"key index notes hpe_jetdirect print none","title":"Index Configuration"},{"location":"sources/vendor/HPe/procurve/","text":"Procurve Switch \u00b6 HP Procurve switches have multiple log formats used. Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Switch https://support.hpe.com/hpesc/public/docDisplay?docId=a00091844en_us Switch (A Series) (Flex) https://techhub.hpe.com/eginfolib/networking/docs/switches/12500/5998-4870_nmm_cg/content/378584395.htm Sourcetypes \u00b6 sourcetype notes hpe:procurve none Index Configuration \u00b6 key index notes hpe_procurve netops none","title":"Procurve Switch"},{"location":"sources/vendor/HPe/procurve/#procurve-switch","text":"HP Procurve switches have multiple log formats used.","title":"Procurve Switch"},{"location":"sources/vendor/HPe/procurve/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/HPe/procurve/#links","text":"Ref Link Switch https://support.hpe.com/hpesc/public/docDisplay?docId=a00091844en_us Switch (A Series) (Flex) https://techhub.hpe.com/eginfolib/networking/docs/switches/12500/5998-4870_nmm_cg/content/378584395.htm","title":"Links"},{"location":"sources/vendor/HPe/procurve/#sourcetypes","text":"sourcetype notes hpe:procurve none","title":"Sourcetypes"},{"location":"sources/vendor/HPe/procurve/#index-configuration","text":"key index notes hpe_procurve netops none","title":"Index Configuration"},{"location":"sources/vendor/IBM/datapower/","text":"Data power \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4662/ Sourcetypes \u00b6 sourcetype notes ibm:datapower:syslog Common sourcetype ibm:datapower:* * is taken from the event sourcetype Index Configuration \u00b6 key source index notes ibm_datapower na inifraops none Parser Configuration \u00b6 Parser configuration is conditional only required if additional events are produced by the device that do not match the default configuration. #/opt/sc4s/local/config/app-parsers/app-vps-ibm_datapower.conf #File name provided is a suggestion it must be globally unique application app - vps - test - ibm_datapower [ sc4s - vps ] { filter { host ( \"^test-ibmdp-\" ) }; parser { p_set_netsource_fields ( vendor ( ' ibm ' ) product ( ' datapower ' ) ); }; };","title":"Data power"},{"location":"sources/vendor/IBM/datapower/#data-power","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4662/","title":"Data power"},{"location":"sources/vendor/IBM/datapower/#sourcetypes","text":"sourcetype notes ibm:datapower:syslog Common sourcetype ibm:datapower:* * is taken from the event sourcetype","title":"Sourcetypes"},{"location":"sources/vendor/IBM/datapower/#index-configuration","text":"key source index notes ibm_datapower na inifraops none","title":"Index Configuration"},{"location":"sources/vendor/IBM/datapower/#parser-configuration","text":"Parser configuration is conditional only required if additional events are produced by the device that do not match the default configuration. #/opt/sc4s/local/config/app-parsers/app-vps-ibm_datapower.conf #File name provided is a suggestion it must be globally unique application app - vps - test - ibm_datapower [ sc4s - vps ] { filter { host ( \"^test-ibmdp-\" ) }; parser { p_set_netsource_fields ( vendor ( ' ibm ' ) product ( ' datapower ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/ISC/bind/","text":"bind \u00b6 This source type is often re-implemented by specific add-ons such as infoblox or bluecat if a more specific source type is desired see that source documentation for instructions Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2876/ Sourcetypes \u00b6 sourcetype notes isc:bind none Index Configuration \u00b6 key index notes isc_bind isc:bind none","title":"bind"},{"location":"sources/vendor/ISC/bind/#bind","text":"This source type is often re-implemented by specific add-ons such as infoblox or bluecat if a more specific source type is desired see that source documentation for instructions","title":"bind"},{"location":"sources/vendor/ISC/bind/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/ISC/bind/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2876/","title":"Links"},{"location":"sources/vendor/ISC/bind/#sourcetypes","text":"sourcetype notes isc:bind none","title":"Sourcetypes"},{"location":"sources/vendor/ISC/bind/#index-configuration","text":"key index notes isc_bind isc:bind none","title":"Index Configuration"},{"location":"sources/vendor/ISC/dhcpd/","text":"dhcpd \u00b6 This source type is often re-implemented by specific add-ons such as infoblox or bluecat if a more specific source type is desired see that source documentation for instructions Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3010/ Sourcetypes \u00b6 sourcetype notes isc:dhcp none Index Configuration \u00b6 key index notes isc_dhcp isc:dhcp none Filter type \u00b6 MSG Parse: This filter parses message content Options \u00b6 None Verification \u00b6 An active site will generate frequent events use the following search to check for new events Verify timestamp, and host values match as expected index= (sourcetype=isc:dhcp\")","title":"dhcpd"},{"location":"sources/vendor/ISC/dhcpd/#dhcpd","text":"This source type is often re-implemented by specific add-ons such as infoblox or bluecat if a more specific source type is desired see that source documentation for instructions","title":"dhcpd"},{"location":"sources/vendor/ISC/dhcpd/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/ISC/dhcpd/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3010/","title":"Links"},{"location":"sources/vendor/ISC/dhcpd/#sourcetypes","text":"sourcetype notes isc:dhcp none","title":"Sourcetypes"},{"location":"sources/vendor/ISC/dhcpd/#index-configuration","text":"key index notes isc_dhcp isc:dhcp none","title":"Index Configuration"},{"location":"sources/vendor/ISC/dhcpd/#filter-type","text":"MSG Parse: This filter parses message content","title":"Filter type"},{"location":"sources/vendor/ISC/dhcpd/#options","text":"None","title":"Options"},{"location":"sources/vendor/ISC/dhcpd/#verification","text":"An active site will generate frequent events use the following search to check for new events Verify timestamp, and host values match as expected index= (sourcetype=isc:dhcp\")","title":"Verification"},{"location":"sources/vendor/Imperva/incapusla/","text":"Incapsula \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Splunk Add-on Source Specific https://bitbucket.org/SPLServices/ta-cef-imperva-incapsula/downloads/ Product Manual https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm Sourcetypes \u00b6 sourcetype notes cef Common sourcetype Source \u00b6 sourcetype notes Imperva:Incapsula Common sourcetype Index Configuration \u00b6 key source index notes Incapsula_SIEMintegration Imperva:Incapsula netwaf none","title":"Incapsula"},{"location":"sources/vendor/Imperva/incapusla/#incapsula","text":"","title":"Incapsula"},{"location":"sources/vendor/Imperva/incapusla/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Imperva/incapusla/#links","text":"Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Splunk Add-on Source Specific https://bitbucket.org/SPLServices/ta-cef-imperva-incapsula/downloads/ Product Manual https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm","title":"Links"},{"location":"sources/vendor/Imperva/incapusla/#sourcetypes","text":"sourcetype notes cef Common sourcetype","title":"Sourcetypes"},{"location":"sources/vendor/Imperva/incapusla/#source","text":"sourcetype notes Imperva:Incapsula Common sourcetype","title":"Source"},{"location":"sources/vendor/Imperva/incapusla/#index-configuration","text":"key source index notes Incapsula_SIEMintegration Imperva:Incapsula netwaf none","title":"Index Configuration"},{"location":"sources/vendor/Imperva/waf/","text":"On-Premises WAF (SecureSphere WAF) \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2874/ Product Manual https://community.microfocus.com/dcvta86296/attachments/dcvta86296/partner-documentation-h-o/22/2/Imperva_SecureSphere_11_5_CEF_Config_Guide_2018.pdf Sourcetypes \u00b6 sourcetype notes imperva:waf none imperva:waf:firewall:cef none imperva:waf:security:cef none Index Configuration \u00b6 key index notes Imperva Inc._SecureSphere netwaf none","title":"On-Premises WAF (SecureSphere WAF)"},{"location":"sources/vendor/Imperva/waf/#on-premises-waf-securesphere-waf","text":"","title":"On-Premises WAF (SecureSphere WAF)"},{"location":"sources/vendor/Imperva/waf/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Imperva/waf/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2874/ Product Manual https://community.microfocus.com/dcvta86296/attachments/dcvta86296/partner-documentation-h-o/22/2/Imperva_SecureSphere_11_5_CEF_Config_Guide_2018.pdf","title":"Links"},{"location":"sources/vendor/Imperva/waf/#sourcetypes","text":"sourcetype notes imperva:waf none imperva:waf:firewall:cef none imperva:waf:security:cef none","title":"Sourcetypes"},{"location":"sources/vendor/Imperva/waf/#index-configuration","text":"key index notes Imperva Inc._SecureSphere netwaf none","title":"Index Configuration"},{"location":"sources/vendor/InfoBlox/","text":"NIOS \u00b6 Warning: Despite the TA indication this data source is CIM compliant all versions of NIOS including the most recent available as of 2019-12-17 do not support the DNS data model correctly. For DNS security use cases use Splunk Stream instead. Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2934/ Product Manual https://docs.infoblox.com/display/ILP/NIOS?preview=/8945695/43728387/NIOS_8.4_Admin_Guide.pdf Sourcetypes \u00b6 sourcetype notes infoblox:dns None infoblox:dhcp None infoblox:threat None nix:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes infoblox_nios_dns infoblox:dns netdns none infoblox_nios_dhcp infoblox:dhcp netipam none infoblox_nios_threat infoblox:threatprotect netids none infoblox_nios_audit infoblox:audit netops none infoblox_nios_fallback infoblox:port netops none Options \u00b6 Variable default description SC4S_LISTEN_INFOBLOX_NIOS_UDP_PORT empty Vendor specific port SC4S_LISTEN_INFOBLOX_NIOS_TCP_PORT empty Vendor specific port Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-infoblox_nios.conf #File name provided is a suggestion it must be globally unique application app - vps - test - infoblox_nios [ sc4s - vps ] { filter { host ( \"infoblox-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' infoblox ' ) product ( ' nios ' ) ); }; };","title":"NIOS"},{"location":"sources/vendor/InfoBlox/#nios","text":"Warning: Despite the TA indication this data source is CIM compliant all versions of NIOS including the most recent available as of 2019-12-17 do not support the DNS data model correctly. For DNS security use cases use Splunk Stream instead.","title":"NIOS"},{"location":"sources/vendor/InfoBlox/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/InfoBlox/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2934/ Product Manual https://docs.infoblox.com/display/ILP/NIOS?preview=/8945695/43728387/NIOS_8.4_Admin_Guide.pdf","title":"Links"},{"location":"sources/vendor/InfoBlox/#sourcetypes","text":"sourcetype notes infoblox:dns None infoblox:dhcp None infoblox:threat None nix:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/InfoBlox/#sourcetype-and-index-configuration","text":"key sourcetype index notes infoblox_nios_dns infoblox:dns netdns none infoblox_nios_dhcp infoblox:dhcp netipam none infoblox_nios_threat infoblox:threatprotect netids none infoblox_nios_audit infoblox:audit netops none infoblox_nios_fallback infoblox:port netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/InfoBlox/#options","text":"Variable default description SC4S_LISTEN_INFOBLOX_NIOS_UDP_PORT empty Vendor specific port SC4S_LISTEN_INFOBLOX_NIOS_TCP_PORT empty Vendor specific port","title":"Options"},{"location":"sources/vendor/InfoBlox/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-infoblox_nios.conf #File name provided is a suggestion it must be globally unique application app - vps - test - infoblox_nios [ sc4s - vps ] { filter { host ( \"infoblox-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' infoblox ' ) product ( ' nios ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Juniper/junos/","text":"JunOS \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2847/ JunOS TechLibrary https://www.juniper.net/documentation/en_US/junos/topics/example/syslog-messages-configuring-qfx-series.html Sourcetypes \u00b6 sourcetype notes juniper:junos:firewall None juniper:junos:firewall:structured None juniper:junos:idp None juniper:junos:idp:structured None juniper:junos:aamw:structured None juniper:junos:secintel:structured None juniper:junos:snmp None Sourcetype and Index Configuration \u00b6 key sourcetype index notes juniper_junos_legacy juniper:legacy netops none juniper_junos_flow juniper:junos:firewall netfw none juniper_junos_utm juniper:junos:firewall netfw none juniper_junos_firewall juniper:junos:firewall netfw none juniper_junos_ids juniper:junos:firewall netids none juniper_junos_idp juniper:junos:idp netids none juniper_junos_snmp juniper:junos:snmp netops none juniper_junos_structured_fw juniper:junos:firewall:structured netfw none juniper_junos_structured_ids juniper:junos:firewall:structured netids none juniper_junos_structured_utm juniper:junos:firewall:structured netfw none juniper_junos_structured_idp juniper:junos:idp:structured netids none juniper_junos_structured_aamw juniper:junos:aamw:structured netfw none juniper_junos_structured_secintel juniper:junos:secintel:structured netfw none","title":"JunOS"},{"location":"sources/vendor/Juniper/junos/#junos","text":"","title":"JunOS"},{"location":"sources/vendor/Juniper/junos/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Juniper/junos/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2847/ JunOS TechLibrary https://www.juniper.net/documentation/en_US/junos/topics/example/syslog-messages-configuring-qfx-series.html","title":"Links"},{"location":"sources/vendor/Juniper/junos/#sourcetypes","text":"sourcetype notes juniper:junos:firewall None juniper:junos:firewall:structured None juniper:junos:idp None juniper:junos:idp:structured None juniper:junos:aamw:structured None juniper:junos:secintel:structured None juniper:junos:snmp None","title":"Sourcetypes"},{"location":"sources/vendor/Juniper/junos/#sourcetype-and-index-configuration","text":"key sourcetype index notes juniper_junos_legacy juniper:legacy netops none juniper_junos_flow juniper:junos:firewall netfw none juniper_junos_utm juniper:junos:firewall netfw none juniper_junos_firewall juniper:junos:firewall netfw none juniper_junos_ids juniper:junos:firewall netids none juniper_junos_idp juniper:junos:idp netids none juniper_junos_snmp juniper:junos:snmp netops none juniper_junos_structured_fw juniper:junos:firewall:structured netfw none juniper_junos_structured_ids juniper:junos:firewall:structured netids none juniper_junos_structured_utm juniper:junos:firewall:structured netfw none juniper_junos_structured_idp juniper:junos:idp:structured netids none juniper_junos_structured_aamw juniper:junos:aamw:structured netfw none juniper_junos_structured_secintel juniper:junos:secintel:structured netfw none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Juniper/netscreen/","text":"Netscreen \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2847/ Netscreen Manual http://kb.juniper.net/InfoCenter/index?page=content&id=KB4759 Sourcetypes \u00b6 sourcetype notes netscreen:firewall None Sourcetype and Index Configuration \u00b6 key sourcetype index notes juniper_netscreen netscreen:firewall netfw none","title":"Netscreen"},{"location":"sources/vendor/Juniper/netscreen/#netscreen","text":"","title":"Netscreen"},{"location":"sources/vendor/Juniper/netscreen/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Juniper/netscreen/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2847/ Netscreen Manual http://kb.juniper.net/InfoCenter/index?page=content&id=KB4759","title":"Links"},{"location":"sources/vendor/Juniper/netscreen/#sourcetypes","text":"sourcetype notes netscreen:firewall None","title":"Sourcetypes"},{"location":"sources/vendor/Juniper/netscreen/#sourcetype-and-index-configuration","text":"key sourcetype index notes juniper_netscreen netscreen:firewall netfw none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Kaspersky/es/","text":"Enterprise Security RFC5424 \u00b6 Key facts \u00b6 MSG Format based filter RFC5424 Links \u00b6 Ref Link Splunk Add-on non Sourcetypes \u00b6 sourcetype notes kaspersky:syslog:es Where PROGRAM starts with KES kaspersky:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes kaspersky_syslog kaspersky:syslog epav none kaspersky_syslog_es kaspersky:syslog:es epav none","title":"Enterprise Security RFC5424"},{"location":"sources/vendor/Kaspersky/es/#enterprise-security-rfc5424","text":"","title":"Enterprise Security RFC5424"},{"location":"sources/vendor/Kaspersky/es/#key-facts","text":"MSG Format based filter RFC5424","title":"Key facts"},{"location":"sources/vendor/Kaspersky/es/#links","text":"Ref Link Splunk Add-on non","title":"Links"},{"location":"sources/vendor/Kaspersky/es/#sourcetypes","text":"sourcetype notes kaspersky:syslog:es Where PROGRAM starts with KES kaspersky:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Kaspersky/es/#sourcetype-and-index-configuration","text":"key sourcetype index notes kaspersky_syslog kaspersky:syslog epav none kaspersky_syslog_es kaspersky:syslog:es epav none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Kaspersky/es_cef/","text":"Enterprise Security CEF \u00b6 The TA link provided has commented out the CEF support as of 2022-03-18 manual edits are required Key facts \u00b6 MSG Format based filter RFC5424 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4656/ Sourcetypes \u00b6 sourcetype notes kaspersky:cef kaspersky:klaud kaspersky:klsrv kaspersky:gnrl kaspersky:klnag kaspersky:klprci kaspersky:klbl Sourcetype and Index Configuration \u00b6 key sourcetype index notes KasperskyLab_SecurityCenter all epav none","title":"Enterprise Security CEF"},{"location":"sources/vendor/Kaspersky/es_cef/#enterprise-security-cef","text":"The TA link provided has commented out the CEF support as of 2022-03-18 manual edits are required","title":"Enterprise Security CEF"},{"location":"sources/vendor/Kaspersky/es_cef/#key-facts","text":"MSG Format based filter RFC5424","title":"Key facts"},{"location":"sources/vendor/Kaspersky/es_cef/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4656/","title":"Links"},{"location":"sources/vendor/Kaspersky/es_cef/#sourcetypes","text":"sourcetype notes kaspersky:cef kaspersky:klaud kaspersky:klsrv kaspersky:gnrl kaspersky:klnag kaspersky:klprci kaspersky:klbl","title":"Sourcetypes"},{"location":"sources/vendor/Kaspersky/es_cef/#sourcetype-and-index-configuration","text":"key sourcetype index notes KasperskyLab_SecurityCenter all epav none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Kaspersky/es_leef/","text":"Enterprise Security Leef \u00b6 Leef format has not been tested samples needed Key facts \u00b6 MSG Format based filter Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4656/ Sourcetypes \u00b6 sourcetype notes kaspersky:cef kaspersky:klaud kaspersky:klsrv kaspersky:gnrl kaspersky:klnag kaspersky:klprci kaspersky:klbl Sourcetype and Index Configuration \u00b6 key sourcetype index notes KasperskyLab_SecurityCenter all epav none","title":"Enterprise Security Leef"},{"location":"sources/vendor/Kaspersky/es_leef/#enterprise-security-leef","text":"Leef format has not been tested samples needed","title":"Enterprise Security Leef"},{"location":"sources/vendor/Kaspersky/es_leef/#key-facts","text":"MSG Format based filter","title":"Key facts"},{"location":"sources/vendor/Kaspersky/es_leef/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4656/","title":"Links"},{"location":"sources/vendor/Kaspersky/es_leef/#sourcetypes","text":"sourcetype notes kaspersky:cef kaspersky:klaud kaspersky:klsrv kaspersky:gnrl kaspersky:klnag kaspersky:klprci kaspersky:klbl","title":"Sourcetypes"},{"location":"sources/vendor/Kaspersky/es_leef/#sourcetype-and-index-configuration","text":"key sourcetype index notes KasperskyLab_SecurityCenter all epav none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Liveaction/liveaction_livenx/","text":"Liveaction - livenx \u00b6 Key facts \u00b6 Default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual None Sourcetypes \u00b6 sourcetype notes liveaction:livenx none Sourcetype and Index Configuration \u00b6 key sourcetype index notes liveaction_livenx liveaction:livenx netops None","title":"Liveaction - livenx"},{"location":"sources/vendor/Liveaction/liveaction_livenx/#liveaction-livenx","text":"","title":"Liveaction - livenx"},{"location":"sources/vendor/Liveaction/liveaction_livenx/#key-facts","text":"Default port 514","title":"Key facts"},{"location":"sources/vendor/Liveaction/liveaction_livenx/#links","text":"Ref Link Splunk Add-on None Product Manual None","title":"Links"},{"location":"sources/vendor/Liveaction/liveaction_livenx/#sourcetypes","text":"sourcetype notes liveaction:livenx none","title":"Sourcetypes"},{"location":"sources/vendor/Liveaction/liveaction_livenx/#sourcetype-and-index-configuration","text":"key sourcetype index notes liveaction_livenx liveaction:livenx netops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/McAfee/epo/","text":"EPO \u00b6 Key facts \u00b6 MSG Format based filter Source requires use of TLS legacy BSD port 6514 TLS Certificate must be trusted by EPO instance Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/5085/ Product Manual https://kc.mcafee.com/corporate/index?page=content&id=KB87927 Sourcetypes \u00b6 sourcetype notes mcafee:epo:syslog none Source \u00b6 source notes policy_auditor_vulnerability_assessment Policy Auditor Vulnerability Assessment events mcafee_agent McAfee Agent events mcafee_endpoint_security McAfee Endpoint Security events Index Configuration \u00b6 key index notes mcafee_epo epav none Filter type \u00b6 MSG Parse: This filter parses message content Options \u00b6 Variable default description SC4S_LISTEN_MCAFEE_EPO_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_MCAFEE_EPO no Enable archive to disk for this specific source SC4S_DEST_MCAFEE_EPO_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source SC4S_SOURCE_TLS_ENABLE no This must be set to yes so that SC4S listens for encrypted syslog from ePO Additional setup \u00b6 You must create a certificate for the SC4S server to receive encrypted syslog from ePO. A self-signed certificate is fine. Generate a self-signed certificate on the SC4S host: openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /opt/sc4s/tls/server.key -out /opt/sc4s/tls/server.pem Uncomment the following line in /lib/systemd/system/sc4s.service to allow the docker container to use the certificate: Environment=\"SC4S_TLS_DIR=-v :/etc/syslog-ng/tls:z\" Troubleshooting \u00b6 from the command line of the SC4S host, run this: openssl s_client -connect localhost:6514 The message: socket : Bad file descriptor connect : errno = 9 indicates that SC4S is not listening for encrypted syslog. Note that a netstat may show the port open, but it is not accepting encrypted traffic as configured. It may take several minutes for the syslog option to be available in the registered servers dropdown.","title":"EPO"},{"location":"sources/vendor/McAfee/epo/#epo","text":"","title":"EPO"},{"location":"sources/vendor/McAfee/epo/#key-facts","text":"MSG Format based filter Source requires use of TLS legacy BSD port 6514 TLS Certificate must be trusted by EPO instance","title":"Key facts"},{"location":"sources/vendor/McAfee/epo/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/5085/ Product Manual https://kc.mcafee.com/corporate/index?page=content&id=KB87927","title":"Links"},{"location":"sources/vendor/McAfee/epo/#sourcetypes","text":"sourcetype notes mcafee:epo:syslog none","title":"Sourcetypes"},{"location":"sources/vendor/McAfee/epo/#source","text":"source notes policy_auditor_vulnerability_assessment Policy Auditor Vulnerability Assessment events mcafee_agent McAfee Agent events mcafee_endpoint_security McAfee Endpoint Security events","title":"Source"},{"location":"sources/vendor/McAfee/epo/#index-configuration","text":"key index notes mcafee_epo epav none","title":"Index Configuration"},{"location":"sources/vendor/McAfee/epo/#filter-type","text":"MSG Parse: This filter parses message content","title":"Filter type"},{"location":"sources/vendor/McAfee/epo/#options","text":"Variable default description SC4S_LISTEN_MCAFEE_EPO_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_MCAFEE_EPO no Enable archive to disk for this specific source SC4S_DEST_MCAFEE_EPO_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source SC4S_SOURCE_TLS_ENABLE no This must be set to yes so that SC4S listens for encrypted syslog from ePO","title":"Options"},{"location":"sources/vendor/McAfee/epo/#additional-setup","text":"You must create a certificate for the SC4S server to receive encrypted syslog from ePO. A self-signed certificate is fine. Generate a self-signed certificate on the SC4S host: openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /opt/sc4s/tls/server.key -out /opt/sc4s/tls/server.pem Uncomment the following line in /lib/systemd/system/sc4s.service to allow the docker container to use the certificate: Environment=\"SC4S_TLS_DIR=-v :/etc/syslog-ng/tls:z\"","title":"Additional setup"},{"location":"sources/vendor/McAfee/epo/#troubleshooting","text":"from the command line of the SC4S host, run this: openssl s_client -connect localhost:6514 The message: socket : Bad file descriptor connect : errno = 9 indicates that SC4S is not listening for encrypted syslog. Note that a netstat may show the port open, but it is not accepting encrypted traffic as configured. It may take several minutes for the syslog option to be available in the registered servers dropdown.","title":"Troubleshooting"},{"location":"sources/vendor/McAfee/nsp/","text":"Network Security Platform \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Product Manual https://docs.mcafee.com/bundle/network-security-platform-10.1.x-product-guide/page/GUID-373C1CA6-EC0E-49E1-8858-749D1AA2716A.html Sourcetypes \u00b6 sourcetype notes mcafee:nsp none Source \u00b6 source notes mcafee:nsp:alert Alert/Attack Events mcafee:nsp:audit Audit Event or User Activity Events mcafee:nsp:fault Fault Events mcafee:nsp:firewall Firewall Events Index Configuration \u00b6 key index notes mcafee_nsp netids none","title":"Network Security Platform"},{"location":"sources/vendor/McAfee/nsp/#network-security-platform","text":"","title":"Network Security Platform"},{"location":"sources/vendor/McAfee/nsp/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/McAfee/nsp/#links","text":"Ref Link Product Manual https://docs.mcafee.com/bundle/network-security-platform-10.1.x-product-guide/page/GUID-373C1CA6-EC0E-49E1-8858-749D1AA2716A.html","title":"Links"},{"location":"sources/vendor/McAfee/nsp/#sourcetypes","text":"sourcetype notes mcafee:nsp none","title":"Sourcetypes"},{"location":"sources/vendor/McAfee/nsp/#source","text":"source notes mcafee:nsp:alert Alert/Attack Events mcafee:nsp:audit Audit Event or User Activity Events mcafee:nsp:fault Fault Events mcafee:nsp:firewall Firewall Events","title":"Source"},{"location":"sources/vendor/McAfee/nsp/#index-configuration","text":"key index notes mcafee_nsp netids none","title":"Index Configuration"},{"location":"sources/vendor/McAfee/wg/","text":"Web Gateway \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3009/ Product Manual https://kc.mcafee.com/corporate/index?page=content&id=KB77988&actp=RSS Sourcetypes \u00b6 sourcetype notes mcafee:wg:kv none Index Configuration \u00b6 key index notes mcafee_wg netproxy none","title":"Wg"},{"location":"sources/vendor/McAfee/wg/#web-gateway","text":"","title":"Web Gateway"},{"location":"sources/vendor/McAfee/wg/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/McAfee/wg/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3009/ Product Manual https://kc.mcafee.com/corporate/index?page=content&id=KB77988&actp=RSS","title":"Links"},{"location":"sources/vendor/McAfee/wg/#sourcetypes","text":"sourcetype notes mcafee:wg:kv none","title":"Sourcetypes"},{"location":"sources/vendor/McAfee/wg/#index-configuration","text":"key index notes mcafee_wg netproxy none","title":"Index Configuration"},{"location":"sources/vendor/Microfocus/arcsight/","text":"Arcsight Internal Agent \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on CEF https://github.com/splunk/splunk-add-on-for-cef/downloads/ Sourcetypes \u00b6 sourcetype notes cef Common sourcetype Source \u00b6 source notes ArcSight:ArcSight Internal logs Index Configuration \u00b6 key source index notes ArcSight_ArcSight ArcSight:ArcSight main none","title":"Arcsight Internal Agent"},{"location":"sources/vendor/Microfocus/arcsight/#arcsight-internal-agent","text":"","title":"Arcsight Internal Agent"},{"location":"sources/vendor/Microfocus/arcsight/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Microfocus/arcsight/#links","text":"Ref Link Splunk Add-on CEF https://github.com/splunk/splunk-add-on-for-cef/downloads/","title":"Links"},{"location":"sources/vendor/Microfocus/arcsight/#sourcetypes","text":"sourcetype notes cef Common sourcetype","title":"Sourcetypes"},{"location":"sources/vendor/Microfocus/arcsight/#source","text":"source notes ArcSight:ArcSight Internal logs","title":"Source"},{"location":"sources/vendor/Microfocus/arcsight/#index-configuration","text":"key source index notes ArcSight_ArcSight ArcSight:ArcSight main none","title":"Index Configuration"},{"location":"sources/vendor/Microfocus/windows/","text":"Arcsight Microsoft Windows (CEF) \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-microsoft-windows-for-splunk/downloads/ Product Manual https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm Sourcetypes \u00b6 sourcetype notes cef Common sourcetype Source \u00b6 source notes CEFEventLog:System or Application Event Windows Application and System Event Logs CEFEventLog:Microsoft Windows Windows Security Event Logs Index Configuration \u00b6 key source index notes Microsoft_System or Application Event CEFEventLog:System or Application Event oswin none Microsoft_Microsoft Windows CEFEventLog:Microsoft Windows oswinsec none","title":"Arcsight Microsoft Windows (CEF)"},{"location":"sources/vendor/Microfocus/windows/#arcsight-microsoft-windows-cef","text":"","title":"Arcsight Microsoft Windows (CEF)"},{"location":"sources/vendor/Microfocus/windows/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Microfocus/windows/#links","text":"Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-microsoft-windows-for-splunk/downloads/ Product Manual https://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm","title":"Links"},{"location":"sources/vendor/Microfocus/windows/#sourcetypes","text":"sourcetype notes cef Common sourcetype","title":"Sourcetypes"},{"location":"sources/vendor/Microfocus/windows/#source","text":"source notes CEFEventLog:System or Application Event Windows Application and System Event Logs CEFEventLog:Microsoft Windows Windows Security Event Logs","title":"Source"},{"location":"sources/vendor/Microfocus/windows/#index-configuration","text":"key source index notes Microsoft_System or Application Event CEFEventLog:System or Application Event oswin none Microsoft_Microsoft Windows CEFEventLog:Microsoft Windows oswinsec none","title":"Index Configuration"},{"location":"sources/vendor/Microsoft/","text":"Cloud App Security (MCAS) \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Splunk Add-on Source Specific none Product Manual https://docs.microsoft.com/en-us/cloud-app-security/siem Sourcetypes \u00b6 sourcetype notes cef Common sourcetype Source \u00b6 source notes microsoft:cas Common sourcetype Index Configuration \u00b6 key source index notes MCAS_SIEM_Agent microsoft:cas main none","title":"Cloud App Security (MCAS)"},{"location":"sources/vendor/Microsoft/#cloud-app-security-mcas","text":"","title":"Cloud App Security (MCAS)"},{"location":"sources/vendor/Microsoft/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Microsoft/#links","text":"Ref Link Splunk Add-on CEF https://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/ Splunk Add-on Source Specific none Product Manual https://docs.microsoft.com/en-us/cloud-app-security/siem","title":"Links"},{"location":"sources/vendor/Microsoft/#sourcetypes","text":"sourcetype notes cef Common sourcetype","title":"Sourcetypes"},{"location":"sources/vendor/Microsoft/#source","text":"source notes microsoft:cas Common sourcetype","title":"Source"},{"location":"sources/vendor/Microsoft/#index-configuration","text":"key source index notes MCAS_SIEM_Agent microsoft:cas main none","title":"Index Configuration"},{"location":"sources/vendor/Mikrotik/routeros/","text":"RouterOS \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 RouterOS will send ISC Bind and ISC DHCPD events Links \u00b6 Sourcetypes \u00b6 sourcetype notes routeros none Index Configuration \u00b6 key index notes mikrotik_routeros netops none mikrotik_routeros_fw netfw Used for events with forward: Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-mikrotik_routeros.conf #File name provided is a suggestion it must be globally unique application app - vps - test - mikrotik_routeros [ sc4s - vps ] { filter { host ( \"test-mrtros-\" type ( string ) flags ( prefix )) }; parser { p_set_netsource_fields ( vendor ( ' mikrotik ' ) product ( ' routeros ' ) ); }; };","title":"RouterOS"},{"location":"sources/vendor/Mikrotik/routeros/#routeros","text":"","title":"RouterOS"},{"location":"sources/vendor/Mikrotik/routeros/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514 RouterOS will send ISC Bind and ISC DHCPD events","title":"Key facts"},{"location":"sources/vendor/Mikrotik/routeros/#links","text":"","title":"Links"},{"location":"sources/vendor/Mikrotik/routeros/#sourcetypes","text":"sourcetype notes routeros none","title":"Sourcetypes"},{"location":"sources/vendor/Mikrotik/routeros/#index-configuration","text":"key index notes mikrotik_routeros netops none mikrotik_routeros_fw netfw Used for events with forward:","title":"Index Configuration"},{"location":"sources/vendor/Mikrotik/routeros/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-mikrotik_routeros.conf #File name provided is a suggestion it must be globally unique application app - vps - test - mikrotik_routeros [ sc4s - vps ] { filter { host ( \"test-mrtros-\" type ( string ) flags ( prefix )) }; parser { p_set_netsource_fields ( vendor ( ' mikrotik ' ) product ( ' routeros ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/NetApp/ontap/","text":"OnTap \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3418/ Product Manual unknown Sourcetypes \u00b6 sourcetype notes netapp:ems None Sourcetype and Index Configuration \u00b6 key sourcetype index notes netapp_ontap netapp:ems infraops none","title":"OnTap"},{"location":"sources/vendor/NetApp/ontap/#ontap","text":"","title":"OnTap"},{"location":"sources/vendor/NetApp/ontap/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/NetApp/ontap/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3418/ Product Manual unknown","title":"Links"},{"location":"sources/vendor/NetApp/ontap/#sourcetypes","text":"sourcetype notes netapp:ems None","title":"Sourcetypes"},{"location":"sources/vendor/NetApp/ontap/#sourcetype-and-index-configuration","text":"key sourcetype index notes netapp_ontap netapp:ems infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/NetApp/storage-grid/","text":"StorageGRID \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Community requested parser Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3895/ Product Manual unknown Sourcetypes \u00b6 sourcetype notes grid:auditlog None grid:rest:api None Sourcetype and Index Configuration \u00b6 key sourcetype index notes netapp_grid grid:auditlog infraops none netapp_grid grid:rest:api infraops none","title":"StorageGRID"},{"location":"sources/vendor/NetApp/storage-grid/#storagegrid","text":"","title":"StorageGRID"},{"location":"sources/vendor/NetApp/storage-grid/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514 Community requested parser","title":"Key facts"},{"location":"sources/vendor/NetApp/storage-grid/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3895/ Product Manual unknown","title":"Links"},{"location":"sources/vendor/NetApp/storage-grid/#sourcetypes","text":"sourcetype notes grid:auditlog None grid:rest:api None","title":"Sourcetypes"},{"location":"sources/vendor/NetApp/storage-grid/#sourcetype-and-index-configuration","text":"key sourcetype index notes netapp_grid grid:auditlog infraops none netapp_grid grid:rest:api infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/NetScout/arbor_edge/","text":"DatAdvantage \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link TA https://github.com/arbor/TA_netscout_aed Sourcetypes \u00b6 sourcetype notes netscout:aed Index Configuration \u00b6 key sourcetype index notes NETSCOUT_Arbor Edge Defense netscout:aed netids NETSCOUT_Arbor Networks APS netscout:aed netids","title":"DatAdvantage"},{"location":"sources/vendor/NetScout/arbor_edge/#datadvantage","text":"","title":"DatAdvantage"},{"location":"sources/vendor/NetScout/arbor_edge/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/NetScout/arbor_edge/#links","text":"Ref Link TA https://github.com/arbor/TA_netscout_aed","title":"Links"},{"location":"sources/vendor/NetScout/arbor_edge/#sourcetypes","text":"sourcetype notes netscout:aed","title":"Sourcetypes"},{"location":"sources/vendor/NetScout/arbor_edge/#index-configuration","text":"key sourcetype index notes NETSCOUT_Arbor Edge Defense netscout:aed netids NETSCOUT_Arbor Networks APS netscout:aed netids","title":"Index Configuration"},{"location":"sources/vendor/Netmotion/mobilityserver/","text":"Mobility Server \u00b6 Key facts \u00b6 MSG Format based filter Links \u00b6 Ref Link Splunk Add-on none Product Manual unknown Sourcetypes \u00b6 sourcetype notes netmotion:mobilityserver:* The third segment of the source type is constructed from the sdid field of the syslog sdata Sourcetype and Index Configuration \u00b6 key sourcetype index notes netmotion_mobility-server_* netmotion:mobilityserver:* netops none","title":"Mobility Server"},{"location":"sources/vendor/Netmotion/mobilityserver/#mobility-server","text":"","title":"Mobility Server"},{"location":"sources/vendor/Netmotion/mobilityserver/#key-facts","text":"MSG Format based filter","title":"Key facts"},{"location":"sources/vendor/Netmotion/mobilityserver/#links","text":"Ref Link Splunk Add-on none Product Manual unknown","title":"Links"},{"location":"sources/vendor/Netmotion/mobilityserver/#sourcetypes","text":"sourcetype notes netmotion:mobilityserver:* The third segment of the source type is constructed from the sdid field of the syslog sdata","title":"Sourcetypes"},{"location":"sources/vendor/Netmotion/mobilityserver/#sourcetype-and-index-configuration","text":"key sourcetype index notes netmotion_mobility-server_* netmotion:mobilityserver:* netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Netmotion/reporting/","text":"Reporting \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Product Manual unknown Sourcetypes \u00b6 sourcetype notes netmotion:reporting None Sourcetype and Index Configuration \u00b6 key sourcetype index notes netmotion_reporting netmotion:reporting netops none","title":"Reporting"},{"location":"sources/vendor/Netmotion/reporting/#reporting","text":"","title":"Reporting"},{"location":"sources/vendor/Netmotion/reporting/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Netmotion/reporting/#links","text":"Ref Link Splunk Add-on none Product Manual unknown","title":"Links"},{"location":"sources/vendor/Netmotion/reporting/#sourcetypes","text":"sourcetype notes netmotion:reporting None","title":"Sourcetypes"},{"location":"sources/vendor/Netmotion/reporting/#sourcetype-and-index-configuration","text":"key sourcetype index notes netmotion_reporting netmotion:reporting netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Novell/netiq/","text":"NetIQ \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes novell:netiq none Sourcetype and Index Configuration \u00b6 key sourcetype index notes novell_netiq novell_netiq netauth None","title":"NetIQ"},{"location":"sources/vendor/Novell/netiq/#netiq","text":"","title":"NetIQ"},{"location":"sources/vendor/Novell/netiq/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Novell/netiq/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Novell/netiq/#sourcetypes","text":"sourcetype notes novell:netiq none","title":"Sourcetypes"},{"location":"sources/vendor/Novell/netiq/#sourcetype-and-index-configuration","text":"key sourcetype index notes novell_netiq novell_netiq netauth None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Nutanix/cvm/","text":"Nutanix_CVM_Audit \u00b6 Key facts \u00b6 MSG Format based filter Community requested filter Only CVM log supported Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes nutanix:syslog CVM logs nutanix:syslog:audit CVM system audit logs Considering the message host format is default ntnx-xxxx-cvm Sourcetype and Index Configuration \u00b6 key sourcetype index notes nutanix_syslog nutanix:syslog infraops none nutanix_syslog_audit nutanix:syslog:audit infraops none","title":"Nutanix_CVM_Audit"},{"location":"sources/vendor/Nutanix/cvm/#nutanix_cvm_audit","text":"","title":"Nutanix_CVM_Audit"},{"location":"sources/vendor/Nutanix/cvm/#key-facts","text":"MSG Format based filter Community requested filter Only CVM log supported","title":"Key facts"},{"location":"sources/vendor/Nutanix/cvm/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Nutanix/cvm/#sourcetypes","text":"sourcetype notes nutanix:syslog CVM logs nutanix:syslog:audit CVM system audit logs Considering the message host format is default ntnx-xxxx-cvm","title":"Sourcetypes"},{"location":"sources/vendor/Nutanix/cvm/#sourcetype-and-index-configuration","text":"key sourcetype index notes nutanix_syslog nutanix:syslog infraops none nutanix_syslog_audit nutanix:syslog:audit infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Ossec/ossec/","text":"Ossec \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2808/ Product Manual https://www.ossec.net/docs/index.html Sourcetypes \u00b6 sourcetype notes ossec The add-on supports data from the following sources: File Integrity Management (FIM) data, FTP data, su data, ssh data, Windows data, including audit and logon information Sourcetype and Index Configuration \u00b6 key sourcetype index notes ossec_ossec ossec main None","title":"Ossec"},{"location":"sources/vendor/Ossec/ossec/#ossec","text":"","title":"Ossec"},{"location":"sources/vendor/Ossec/ossec/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Ossec/ossec/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2808/ Product Manual https://www.ossec.net/docs/index.html","title":"Links"},{"location":"sources/vendor/Ossec/ossec/#sourcetypes","text":"sourcetype notes ossec The add-on supports data from the following sources: File Integrity Management (FIM) data, FTP data, su data, ssh data, Windows data, including audit and logon information","title":"Sourcetypes"},{"location":"sources/vendor/Ossec/ossec/#sourcetype-and-index-configuration","text":"key sourcetype index notes ossec_ossec ossec main None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/PaloaltoNetworks/cortexxdr/","text":"Cortext \u00b6 Key facts \u00b6 MSG Format based filter Cortex requires TLS and uses IETF Framed SYSLOG default port is 6587 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2757/ Sourcetypes \u00b6 sourcetype notes pan:* pan:xsoar none Index Configuration \u00b6 key index notes Palo Alto Networks_Palo Alto Networks Cortex XSOAR epintel none","title":"Cortext"},{"location":"sources/vendor/PaloaltoNetworks/cortexxdr/#cortext","text":"","title":"Cortext"},{"location":"sources/vendor/PaloaltoNetworks/cortexxdr/#key-facts","text":"MSG Format based filter Cortex requires TLS and uses IETF Framed SYSLOG default port is 6587 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2757/","title":"Key facts"},{"location":"sources/vendor/PaloaltoNetworks/cortexxdr/#sourcetypes","text":"sourcetype notes pan:* pan:xsoar none","title":"Sourcetypes"},{"location":"sources/vendor/PaloaltoNetworks/cortexxdr/#index-configuration","text":"key index notes Palo Alto Networks_Palo Alto Networks Cortex XSOAR epintel none","title":"Index Configuration"},{"location":"sources/vendor/PaloaltoNetworks/panos/","text":"panos \u00b6 Key facts \u00b6 MSG Format based filter from NGFW, PANORAMA OR CORTEX data lake Legacy BSD Format default port 514 used by default. \u201cDefault TCP/UDP\u201d is 30% slower than preferred IETF Framed IMPORTANT IETF Framed syslog must use port 601 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2757/ Product Manual https://docs.paloaltonetworks.com/pan-os/9-0/pan-os-admin/monitoring/use-syslog-for-monitoring/configure-syslog-monitoring.html Sourcetypes \u00b6 sourcetype notes pan:log None pan:pan_globalprotect none pan:traffic None pan:threat None pan:system None pan:config None pan:hipmatch None pan:correlation None pan:userid None Sourcetype and Index Configuration \u00b6 key sourcetype index notes pan_panos_log pan:log netops none pan_panos_globalprotect pan:pan_globalprotect netfw none pan_panos_traffic pan:traffic netfw none pan_panos_threat pan:threat netproxy none pan_panos_system pan:system netops none pan_panos_config pan:config netops none pan_panos_hipmatch pan:hipmatch netops none pan_panos_correlation pan:correlation netops none pan_panos_userid pan:userid netauth none Filter type \u00b6 MSG Parse: This filter parses message content Setup and Configuration \u00b6 Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. Refer to the admin manual for specific details of configuration Select TCP or SSL transport option Select IETF Format Ensure the format of the event is not customized Options \u00b6 Variable default description SC4S_LISTEN_PULSE_PAN_PANOS_RFC6587_PORT empty string Enable a TCP using IETF Framing (RFC6587) port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_PAN_PANOS_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_PAN_PANOS no Enable archive to disk for this specific source SC4S_DEST_PAN_PANOS_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source Verification \u00b6 An active firewall will generate frequent events. Use the following search to validate events are present per source device index= sourcetype=pan:*| stats count by host","title":"panos"},{"location":"sources/vendor/PaloaltoNetworks/panos/#panos","text":"","title":"panos"},{"location":"sources/vendor/PaloaltoNetworks/panos/#key-facts","text":"MSG Format based filter from NGFW, PANORAMA OR CORTEX data lake Legacy BSD Format default port 514 used by default. \u201cDefault TCP/UDP\u201d is 30% slower than preferred IETF Framed IMPORTANT IETF Framed syslog must use port 601","title":"Key facts"},{"location":"sources/vendor/PaloaltoNetworks/panos/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2757/ Product Manual https://docs.paloaltonetworks.com/pan-os/9-0/pan-os-admin/monitoring/use-syslog-for-monitoring/configure-syslog-monitoring.html","title":"Links"},{"location":"sources/vendor/PaloaltoNetworks/panos/#sourcetypes","text":"sourcetype notes pan:log None pan:pan_globalprotect none pan:traffic None pan:threat None pan:system None pan:config None pan:hipmatch None pan:correlation None pan:userid None","title":"Sourcetypes"},{"location":"sources/vendor/PaloaltoNetworks/panos/#sourcetype-and-index-configuration","text":"key sourcetype index notes pan_panos_log pan:log netops none pan_panos_globalprotect pan:pan_globalprotect netfw none pan_panos_traffic pan:traffic netfw none pan_panos_threat pan:threat netproxy none pan_panos_system pan:system netops none pan_panos_config pan:config netops none pan_panos_hipmatch pan:hipmatch netops none pan_panos_correlation pan:correlation netops none pan_panos_userid pan:userid netauth none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/PaloaltoNetworks/panos/#filter-type","text":"MSG Parse: This filter parses message content","title":"Filter type"},{"location":"sources/vendor/PaloaltoNetworks/panos/#setup-and-configuration","text":"Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. Refer to the admin manual for specific details of configuration Select TCP or SSL transport option Select IETF Format Ensure the format of the event is not customized","title":"Setup and Configuration"},{"location":"sources/vendor/PaloaltoNetworks/panos/#options","text":"Variable default description SC4S_LISTEN_PULSE_PAN_PANOS_RFC6587_PORT empty string Enable a TCP using IETF Framing (RFC6587) port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_PAN_PANOS_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_ARCHIVE_PAN_PANOS no Enable archive to disk for this specific source SC4S_DEST_PAN_PANOS_HEC no When Splunk HEC is disabled globally set to yes to enable this specific source","title":"Options"},{"location":"sources/vendor/PaloaltoNetworks/panos/#verification","text":"An active firewall will generate frequent events. Use the following search to validate events are present per source device index= sourcetype=pan:*| stats count by host","title":"Verification"},{"location":"sources/vendor/PaloaltoNetworks/traps/","text":"TRAPS \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2757/ Sourcetypes \u00b6 sourcetype notes pan:traps4 none Index Configuration \u00b6 key index notes Palo Alto Networks_Traps Agent epintel none","title":"Traps"},{"location":"sources/vendor/PaloaltoNetworks/traps/#traps","text":"","title":"TRAPS"},{"location":"sources/vendor/PaloaltoNetworks/traps/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/PaloaltoNetworks/traps/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/2757/","title":"Links"},{"location":"sources/vendor/PaloaltoNetworks/traps/#sourcetypes","text":"sourcetype notes pan:traps4 none","title":"Sourcetypes"},{"location":"sources/vendor/PaloaltoNetworks/traps/#index-configuration","text":"key index notes Palo Alto Networks_Traps Agent epintel none","title":"Index Configuration"},{"location":"sources/vendor/Pfsense/firewall/","text":"Firewall \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1527/ Product Manual https://docs.netgate.com/pfsense/en/latest/monitoring/copying-logs-to-a-remote-host-with-syslog.html?highlight=syslog Sourcetypes \u00b6 sourcetype notes pfsense:filterlog None pfsense:* All programs other than filterlog Sourcetype and Index Configuration \u00b6 key sourcetype index notes pfsense pfsense netops none pfsense_filterlog pfsense:filterlog netfw none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-pfsense_firewall.conf #File name provided is a suggestion it must be globally unique application app - vps - test - pfsense_firewall [ sc4s - vps ] { filter { \"${HOST}\" eq \"pfsense_firewall\" }; parser { p_set_netsource_fields ( vendor ( ' pfsense ' ) product ( ' firewall ' ) ); }; };","title":"Firewall"},{"location":"sources/vendor/Pfsense/firewall/#firewall","text":"","title":"Firewall"},{"location":"sources/vendor/Pfsense/firewall/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Pfsense/firewall/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/1527/ Product Manual https://docs.netgate.com/pfsense/en/latest/monitoring/copying-logs-to-a-remote-host-with-syslog.html?highlight=syslog","title":"Links"},{"location":"sources/vendor/Pfsense/firewall/#sourcetypes","text":"sourcetype notes pfsense:filterlog None pfsense:* All programs other than filterlog","title":"Sourcetypes"},{"location":"sources/vendor/Pfsense/firewall/#sourcetype-and-index-configuration","text":"key sourcetype index notes pfsense pfsense netops none pfsense_filterlog pfsense:filterlog netfw none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Pfsense/firewall/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-pfsense_firewall.conf #File name provided is a suggestion it must be globally unique application app - vps - test - pfsense_firewall [ sc4s - vps ] { filter { \"${HOST}\" eq \"pfsense_firewall\" }; parser { p_set_netsource_fields ( vendor ( ' pfsense ' ) product ( ' firewall ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Polycom/rprm/","text":"RPRM \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Product Manual unknown Sourcetypes \u00b6 sourcetype notes polycom:rprm:syslog Sourcetype and Index Configuration \u00b6 key sourcetype index notes polycom_rprm polycom:rprm:syslog netops none","title":"RPRM"},{"location":"sources/vendor/Polycom/rprm/#rprm","text":"","title":"RPRM"},{"location":"sources/vendor/Polycom/rprm/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Polycom/rprm/#links","text":"Ref Link Splunk Add-on none Product Manual unknown","title":"Links"},{"location":"sources/vendor/Polycom/rprm/#sourcetypes","text":"sourcetype notes polycom:rprm:syslog","title":"Sourcetypes"},{"location":"sources/vendor/Polycom/rprm/#sourcetype-and-index-configuration","text":"key sourcetype index notes polycom_rprm polycom:rprm:syslog netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Proofpoint/","text":"Proofpoint Protection Server \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 NOTE: This filter will simply parse the syslog message itself, and will not perform the (required) re-assembly of related messages to create meaningful final output. This will require follow-on processing in Splunk. Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3080/ Product Manual https://proofpointcommunities.force.com/community/s/article/Remote-Syslog-Forwarding Sourcetypes \u00b6 sourcetype notes pps_filter_log pps_mail_log This sourcetype will conflict with sendmail itself, so will require that the PPS send syslog on a dedicated port or be uniquely identifiable with a hostname glob or CIDR block if this sourcetype is desired for PPS. Sourcetype and Index Configuration \u00b6 key sourcetype index notes proofpoint_pps_filter pps_filter_log email none proofpoint_pps_sendmail pps_mail_log email none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-proofpoint_pps.conf #File name provided is a suggestion it must be globally unique application app - vps - test - proofpoint_pps [ sc4s - vps ] { filter { host ( \"pps-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' proofpoint ' ) product ( ' pps ' ) ); }; };","title":"Proofpoint Protection Server"},{"location":"sources/vendor/Proofpoint/#proofpoint-protection-server","text":"","title":"Proofpoint Protection Server"},{"location":"sources/vendor/Proofpoint/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514 NOTE: This filter will simply parse the syslog message itself, and will not perform the (required) re-assembly of related messages to create meaningful final output. This will require follow-on processing in Splunk.","title":"Key facts"},{"location":"sources/vendor/Proofpoint/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3080/ Product Manual https://proofpointcommunities.force.com/community/s/article/Remote-Syslog-Forwarding","title":"Links"},{"location":"sources/vendor/Proofpoint/#sourcetypes","text":"sourcetype notes pps_filter_log pps_mail_log This sourcetype will conflict with sendmail itself, so will require that the PPS send syslog on a dedicated port or be uniquely identifiable with a hostname glob or CIDR block if this sourcetype is desired for PPS.","title":"Sourcetypes"},{"location":"sources/vendor/Proofpoint/#sourcetype-and-index-configuration","text":"key sourcetype index notes proofpoint_pps_filter pps_filter_log email none proofpoint_pps_sendmail pps_mail_log email none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Proofpoint/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-proofpoint_pps.conf #File name provided is a suggestion it must be globally unique application app - vps - test - proofpoint_pps [ sc4s - vps ] { filter { host ( \"pps-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' proofpoint ' ) product ( ' pps ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Pulse/connectsecure/","text":"Pulse \u00b6 Key facts \u00b6 Requires vendor product by source configuration IETF Frames use port 601/tcp or 6587/TLS Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3852/ JunOS TechLibrary https://docs.pulsesecure.net/WebHelp/Content/PCS/PCS_AdminGuide_8.2/Configuring%20Syslog.htm Sourcetypes \u00b6 sourcetype notes pulse:connectsecure None pulse:connectsecure:web None Sourcetype and Index Configuration \u00b6 key sourcetype index notes pulse_connect_secure pulse:connectsecure netfw none pulse_connect_secure_web pulse:connectsecure:web netproxy none","title":"Pulse"},{"location":"sources/vendor/Pulse/connectsecure/#pulse","text":"","title":"Pulse"},{"location":"sources/vendor/Pulse/connectsecure/#key-facts","text":"Requires vendor product by source configuration IETF Frames use port 601/tcp or 6587/TLS","title":"Key facts"},{"location":"sources/vendor/Pulse/connectsecure/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3852/ JunOS TechLibrary https://docs.pulsesecure.net/WebHelp/Content/PCS/PCS_AdminGuide_8.2/Configuring%20Syslog.htm","title":"Links"},{"location":"sources/vendor/Pulse/connectsecure/#sourcetypes","text":"sourcetype notes pulse:connectsecure None pulse:connectsecure:web None","title":"Sourcetypes"},{"location":"sources/vendor/Pulse/connectsecure/#sourcetype-and-index-configuration","text":"key sourcetype index notes pulse_connect_secure pulse:connectsecure netfw none pulse_connect_secure_web pulse:connectsecure:web netproxy none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/PureStorage/array/","text":"Array \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None note TA published on Splunk base does not include syslog extractions Product Manual Sourcetypes \u00b6 sourcetype notes purestorage:array purestorage:array:${class} This type is generated from the message Sourcetype and Index Configuration \u00b6 key sourcetype index notes purestorage_array purestorage:array infraops None purestorage_array_${class} purestorage:array:class infraops class is extracted as the string following \u201cpurity.\u201d","title":"Array"},{"location":"sources/vendor/PureStorage/array/#array","text":"","title":"Array"},{"location":"sources/vendor/PureStorage/array/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/PureStorage/array/#links","text":"Ref Link Splunk Add-on None note TA published on Splunk base does not include syslog extractions Product Manual","title":"Links"},{"location":"sources/vendor/PureStorage/array/#sourcetypes","text":"sourcetype notes purestorage:array purestorage:array:${class} This type is generated from the message","title":"Sourcetypes"},{"location":"sources/vendor/PureStorage/array/#sourcetype-and-index-configuration","text":"key sourcetype index notes purestorage_array purestorage:array infraops None purestorage_array_${class} purestorage:array:class infraops class is extracted as the string following \u201cpurity.\u201d","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Qumulo/storage/","text":"Storage \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Sourcetypes \u00b6 sourcetype notes qumulo:storage None Sourcetype and Index Configuration \u00b6 key sourcetype index notes qumulo_storage qumulo:storage infraops none","title":"Storage"},{"location":"sources/vendor/Qumulo/storage/#storage","text":"","title":"Storage"},{"location":"sources/vendor/Qumulo/storage/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Qumulo/storage/#links","text":"Ref Link Splunk Add-on none","title":"Links"},{"location":"sources/vendor/Qumulo/storage/#sourcetypes","text":"sourcetype notes qumulo:storage None","title":"Sourcetypes"},{"location":"sources/vendor/Qumulo/storage/#sourcetype-and-index-configuration","text":"key sourcetype index notes qumulo_storage qumulo:storage infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Radware/defensepro/","text":"DefensePro \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on Note this add-on does not provide functional extractions https://splunkbase.splunk.com/app/4480/ Product Manual https://www.radware.com/products/defensepro/ Sourcetypes \u00b6 sourcetype notes radware:defensepro Note some events do not contain host Sourcetype and Index Configuration \u00b6 key sourcetype index notes radware_defensepro radware:defensepro netops none","title":"DefensePro"},{"location":"sources/vendor/Radware/defensepro/#defensepro","text":"","title":"DefensePro"},{"location":"sources/vendor/Radware/defensepro/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Radware/defensepro/#links","text":"Ref Link Splunk Add-on Note this add-on does not provide functional extractions https://splunkbase.splunk.com/app/4480/ Product Manual https://www.radware.com/products/defensepro/","title":"Links"},{"location":"sources/vendor/Radware/defensepro/#sourcetypes","text":"sourcetype notes radware:defensepro Note some events do not contain host","title":"Sourcetypes"},{"location":"sources/vendor/Radware/defensepro/#sourcetype-and-index-configuration","text":"key sourcetype index notes radware_defensepro radware:defensepro netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Raritan/dsx/","text":"DSX \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Product Manual https://www.raritan.com/products/kvm-serial/serial-console-servers/serial-over-ip-console-server Sourcetypes \u00b6 sourcetype notes raritan:dsx Note events do not contain host Sourcetype and Index Configuration \u00b6 key sourcetype index notes raritan_dsx raritan:dsx infraops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-raritan_dsx.conf #File name provided is a suggestion it must be globally unique application app - vps - test - raritan_dsx [ sc4s - vps ] { filter { host ( \"raritan_dsx*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' raritan ' ) product ( ' dsx ' ) ); }; };","title":"DSX"},{"location":"sources/vendor/Raritan/dsx/#dsx","text":"","title":"DSX"},{"location":"sources/vendor/Raritan/dsx/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Raritan/dsx/#links","text":"Ref Link Splunk Add-on none Product Manual https://www.raritan.com/products/kvm-serial/serial-console-servers/serial-over-ip-console-server","title":"Links"},{"location":"sources/vendor/Raritan/dsx/#sourcetypes","text":"sourcetype notes raritan:dsx Note events do not contain host","title":"Sourcetypes"},{"location":"sources/vendor/Raritan/dsx/#sourcetype-and-index-configuration","text":"key sourcetype index notes raritan_dsx raritan:dsx infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Raritan/dsx/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-raritan_dsx.conf #File name provided is a suggestion it must be globally unique application app - vps - test - raritan_dsx [ sc4s - vps ] { filter { host ( \"raritan_dsx*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' raritan ' ) product ( ' dsx ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Ricoh/mfp/","text":"MFP \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes ricoh:mfp None Sourcetype and Index Configuration \u00b6 key sourcetype index notes ricoh_syslog ricoh:mfp printer none SC4S Options \u00b6 Variable default description SC4S_SOURCE_RICOH_SYSLOG_FIXHOST yes Current firmware incorrectly sends the value of HOST in the program field if this is ever corrected this value will need to be set back to no we suggest using yes","title":"MFP"},{"location":"sources/vendor/Ricoh/mfp/#mfp","text":"","title":"MFP"},{"location":"sources/vendor/Ricoh/mfp/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Ricoh/mfp/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Ricoh/mfp/#sourcetypes","text":"sourcetype notes ricoh:mfp None","title":"Sourcetypes"},{"location":"sources/vendor/Ricoh/mfp/#sourcetype-and-index-configuration","text":"key sourcetype index notes ricoh_syslog ricoh:mfp printer none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Ricoh/mfp/#sc4s-options","text":"Variable default description SC4S_SOURCE_RICOH_SYSLOG_FIXHOST yes Current firmware incorrectly sends the value of HOST in the program field if this is ever corrected this value will need to be set back to no we suggest using yes","title":"SC4S Options"},{"location":"sources/vendor/Riverbed/","text":"Syslog \u00b6 Used when more specific steelhead or steelconnect can not be identified Key facts \u00b6 MSG Format based filter RFC5424 or Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes riverbed:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes riverbed_syslog riverbed:syslog netops none riverbed_syslog_nix_syslog nix:syslog osnix none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-riverbed_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - riverbed_syslog [ sc4s - vps ] { filter { host (....) }; parser { p_set_netsource_fields ( vendor ( ' riverbed ' ) product ( ' syslog ' ) ); }; };","title":"Syslog"},{"location":"sources/vendor/Riverbed/#syslog","text":"Used when more specific steelhead or steelconnect can not be identified","title":"Syslog"},{"location":"sources/vendor/Riverbed/#key-facts","text":"MSG Format based filter RFC5424 or Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Riverbed/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Riverbed/#sourcetypes","text":"sourcetype notes riverbed:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Riverbed/#sourcetype-and-index-configuration","text":"key sourcetype index notes riverbed_syslog riverbed:syslog netops none riverbed_syslog_nix_syslog nix:syslog osnix none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Riverbed/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-riverbed_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - riverbed_syslog [ sc4s - vps ] { filter { host (....) }; parser { p_set_netsource_fields ( vendor ( ' riverbed ' ) product ( ' syslog ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Riverbed/steelconnect/","text":"Steelconnect \u00b6 Key facts \u00b6 MSG Format based filter RFC5424 or Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes riverbed:steelconnect None Sourcetype and Index Configuration \u00b6 key sourcetype index notes riverbed_syslog_steelconnect riverbed:steelconnect netops none","title":"Steelconnect"},{"location":"sources/vendor/Riverbed/steelconnect/#steelconnect","text":"","title":"Steelconnect"},{"location":"sources/vendor/Riverbed/steelconnect/#key-facts","text":"MSG Format based filter RFC5424 or Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Riverbed/steelconnect/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Riverbed/steelconnect/#sourcetypes","text":"sourcetype notes riverbed:steelconnect None","title":"Sourcetypes"},{"location":"sources/vendor/Riverbed/steelconnect/#sourcetype-and-index-configuration","text":"key sourcetype index notes riverbed_syslog_steelconnect riverbed:steelconnect netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Riverbed/steelhead/","text":"SteelHead \u00b6 Key facts \u00b6 Partial MSG Format based filter RFC5424 or Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes riverbed:steelhead None Sourcetype and Index Configuration \u00b6 key sourcetype index notes riverbed_syslog_steelhead riverbed:steelhead netops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-riverbed_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - riverbed_syslog [ sc4s - vps ] { filter { host (....) }; parser { p_set_netsource_fields ( vendor ( ' riverbed ' ) product ( ' syslog ' ) ); }; };","title":"SteelHead"},{"location":"sources/vendor/Riverbed/steelhead/#steelhead","text":"","title":"SteelHead"},{"location":"sources/vendor/Riverbed/steelhead/#key-facts","text":"Partial MSG Format based filter RFC5424 or Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Riverbed/steelhead/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Riverbed/steelhead/#sourcetypes","text":"sourcetype notes riverbed:steelhead None","title":"Sourcetypes"},{"location":"sources/vendor/Riverbed/steelhead/#sourcetype-and-index-configuration","text":"key sourcetype index notes riverbed_syslog_steelhead riverbed:steelhead netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Riverbed/steelhead/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-riverbed_syslog.conf #File name provided is a suggestion it must be globally unique application app - vps - riverbed_syslog [ sc4s - vps ] { filter { host (....) }; parser { p_set_netsource_fields ( vendor ( ' riverbed ' ) product ( ' syslog ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Ruckus/SmartZone/","text":"Smart Zone \u00b6 Some events may not match the source format please report issues if found Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes ruckus:smartzone None Sourcetype and Index Configuration \u00b6 key sourcetype index notes ruckus_smartzone ruckus:smartzone netops none","title":"Smart Zone"},{"location":"sources/vendor/Ruckus/SmartZone/#smart-zone","text":"Some events may not match the source format please report issues if found","title":"Smart Zone"},{"location":"sources/vendor/Ruckus/SmartZone/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Ruckus/SmartZone/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Ruckus/SmartZone/#sourcetypes","text":"sourcetype notes ruckus:smartzone None","title":"Sourcetypes"},{"location":"sources/vendor/Ruckus/SmartZone/#sourcetype-and-index-configuration","text":"key sourcetype index notes ruckus_smartzone ruckus:smartzone netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Schneider/apc/","text":"APC Power systems \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Product Manual multiple Sourcetypes \u00b6 sourcetype notes apc:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes schneider_apc apc:syslog main none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-schneider_apc.conf #File name provided is a suggestion it must be globally unique application app - vps - test - schneider_apc [ sc4s - vps ] { filter { host ( \"test_apc-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' schneider ' ) product ( ' apc ' ) ); }; };","title":"APC Power systems"},{"location":"sources/vendor/Schneider/apc/#apc-power-systems","text":"","title":"APC Power systems"},{"location":"sources/vendor/Schneider/apc/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Schneider/apc/#links","text":"Ref Link Splunk Add-on none Product Manual multiple","title":"Links"},{"location":"sources/vendor/Schneider/apc/#sourcetypes","text":"sourcetype notes apc:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Schneider/apc/#sourcetype-and-index-configuration","text":"key sourcetype index notes schneider_apc apc:syslog main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Schneider/apc/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-schneider_apc.conf #File name provided is a suggestion it must be globally unique application app - vps - test - schneider_apc [ sc4s - vps ] { filter { host ( \"test_apc-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' schneider ' ) product ( ' apc ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/SecureAuthIdP/secureauth_idp/","text":"SecureAuth IdP \u00b6 Key facts \u00b6 MSG Format based filter RFC 5424 Framed Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3008 Sourcetypes \u00b6 sourcetype notes secureauth:idp none Sourcetype and Index Configuration \u00b6 key sourcetype index notes secureauth_idp secureauth:idp netops None","title":"SecureAuth IdP"},{"location":"sources/vendor/SecureAuthIdP/secureauth_idp/#secureauth-idp","text":"","title":"SecureAuth IdP"},{"location":"sources/vendor/SecureAuthIdP/secureauth_idp/#key-facts","text":"MSG Format based filter RFC 5424 Framed","title":"Key facts"},{"location":"sources/vendor/SecureAuthIdP/secureauth_idp/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3008","title":"Links"},{"location":"sources/vendor/SecureAuthIdP/secureauth_idp/#sourcetypes","text":"sourcetype notes secureauth:idp none","title":"Sourcetypes"},{"location":"sources/vendor/SecureAuthIdP/secureauth_idp/#sourcetype-and-index-configuration","text":"key sourcetype index notes secureauth_idp secureauth:idp netops None","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Solace/evenbroker/","text":"EventBroker \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes solace:eventbroker None Sourcetype and Index Configuration \u00b6 key sourcetype index notes solace_eventbroker solace:eventbroker main none","title":"EventBroker"},{"location":"sources/vendor/Solace/evenbroker/#eventbroker","text":"","title":"EventBroker"},{"location":"sources/vendor/Solace/evenbroker/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Solace/evenbroker/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Solace/evenbroker/#sourcetypes","text":"sourcetype notes solace:eventbroker None","title":"Sourcetypes"},{"location":"sources/vendor/Solace/evenbroker/#sourcetype-and-index-configuration","text":"key sourcetype index notes solace_eventbroker solace:eventbroker main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Sophos/Firewall/","text":"Web Appliance \u00b6 Key facts \u00b6 Community requested filter Default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/6187/ Product Manual unknown Sourcetypes \u00b6 sourcetype notes sophos:xg:atp None sophos:xg:anti_spam None sophos:xg:anti_virus None sophos:xg:content_filtering None sophos:xg:event None sophos:xg:firewall None sophos:xg:ssl None sophos:xg:sandbox None sophos:xg:system_health None sophos:xg:heartbeat None sophos:xg:waf None sophos:xg:wireless_protection None sophos:xg:idp None Sourcetype and Index Configuration \u00b6 key sourcetype index notes sophos_xg_atp sophos:xg:atp netdlp none sophos_xg_anti_spam sophos:xg:anti_spam netdlp none sophos_xg_anti_virus sophos:xg:anti_virus netdlp none sophos_xg_content_filtering sophos:xg:content_filtering netdlp none sophos_xg_event sophos:xg:event netdlp none sophos_xg_firewall sophos:xg:firewall netdlp none sophos_xg_ssl sophos:xg:ssl netdlp none sophos_xg_sandbox sophos:xg:sandbox netdlp none sophos_xg_system_health sophos:xg:system_health netdlp none sophos_xg_heartbeat sophos:xg:heartbeat netdlp none sophos_xg_waf sophos:xg:waf netdlp none sophos_xg_wireless_protection sophos:xg:wireless_protection netdlp none sophos_xg_idp sophos:xg:idp netdlp none","title":"Web Appliance"},{"location":"sources/vendor/Sophos/Firewall/#web-appliance","text":"","title":"Web Appliance"},{"location":"sources/vendor/Sophos/Firewall/#key-facts","text":"Community requested filter Default port 514","title":"Key facts"},{"location":"sources/vendor/Sophos/Firewall/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/6187/ Product Manual unknown","title":"Links"},{"location":"sources/vendor/Sophos/Firewall/#sourcetypes","text":"sourcetype notes sophos:xg:atp None sophos:xg:anti_spam None sophos:xg:anti_virus None sophos:xg:content_filtering None sophos:xg:event None sophos:xg:firewall None sophos:xg:ssl None sophos:xg:sandbox None sophos:xg:system_health None sophos:xg:heartbeat None sophos:xg:waf None sophos:xg:wireless_protection None sophos:xg:idp None","title":"Sourcetypes"},{"location":"sources/vendor/Sophos/Firewall/#sourcetype-and-index-configuration","text":"key sourcetype index notes sophos_xg_atp sophos:xg:atp netdlp none sophos_xg_anti_spam sophos:xg:anti_spam netdlp none sophos_xg_anti_virus sophos:xg:anti_virus netdlp none sophos_xg_content_filtering sophos:xg:content_filtering netdlp none sophos_xg_event sophos:xg:event netdlp none sophos_xg_firewall sophos:xg:firewall netdlp none sophos_xg_ssl sophos:xg:ssl netdlp none sophos_xg_sandbox sophos:xg:sandbox netdlp none sophos_xg_system_health sophos:xg:system_health netdlp none sophos_xg_heartbeat sophos:xg:heartbeat netdlp none sophos_xg_waf sophos:xg:waf netdlp none sophos_xg_wireless_protection sophos:xg:wireless_protection netdlp none sophos_xg_idp sophos:xg:idp netdlp none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Sophos/webappliance/","text":"Web Appliance \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes sophos:webappliance None Sourcetype and Index Configuration \u00b6 key sourcetype index notes sophos_webappliance sophos:webappliance netproxy none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-sophos_webappliance.conf #File name provided is a suggestion it must be globally unique application app - vps - test - sophos_webappliance [ sc4s - vps ] { filter { host ( \"test-sophos-webapp-\" type ( string ) flags ( prefix )) }; parser { p_set_netsource_fields ( vendor ( ' sophos ' ) product ( ' webappliance ' ) ); }; };","title":"Web Appliance"},{"location":"sources/vendor/Sophos/webappliance/#web-appliance","text":"","title":"Web Appliance"},{"location":"sources/vendor/Sophos/webappliance/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Sophos/webappliance/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Sophos/webappliance/#sourcetypes","text":"sourcetype notes sophos:webappliance None","title":"Sourcetypes"},{"location":"sources/vendor/Sophos/webappliance/#sourcetype-and-index-configuration","text":"key sourcetype index notes sophos_webappliance sophos:webappliance netproxy none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Sophos/webappliance/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-sophos_webappliance.conf #File name provided is a suggestion it must be globally unique application app - vps - test - sophos_webappliance [ sc4s - vps ] { filter { host ( \"test-sophos-webapp-\" type ( string ) flags ( prefix )) }; parser { p_set_netsource_fields ( vendor ( ' sophos ' ) product ( ' webappliance ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Spectracom/","text":"NTP Appliance \u00b6 Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes spectracom:ntp None nix:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes spectracom_ntp spectracom:ntp netops none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-spectracom_ntp.conf #File name provided is a suggestion it must be globally unique application app - vps - test - spectracom_ntp [ sc4s - vps ] { filter { netmask ( 169.254.100.1 / 24 ) }; parser { p_set_netsource_fields ( vendor ( ' spectracom ' ) product ( ' ntp ' ) ); }; };","title":"NTP Appliance"},{"location":"sources/vendor/Spectracom/#ntp-appliance","text":"","title":"NTP Appliance"},{"location":"sources/vendor/Spectracom/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Spectracom/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Spectracom/#sourcetypes","text":"sourcetype notes spectracom:ntp None nix:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Spectracom/#sourcetype-and-index-configuration","text":"key sourcetype index notes spectracom_ntp spectracom:ntp netops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Spectracom/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-spectracom_ntp.conf #File name provided is a suggestion it must be globally unique application app - vps - test - spectracom_ntp [ sc4s - vps ] { filter { netmask ( 169.254.100.1 / 24 ) }; parser { p_set_netsource_fields ( vendor ( ' spectracom ' ) product ( ' ntp ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/Splunk/heavyforwarder/","text":"Splunk Heavy Forwarder \u00b6 In certain network architectures such as those using data diodes or those networks requiring \u201cin the clear\u201d inspection at network egress SC4S can be used to accept specially formatted output from Splunk as RFC5424 syslog. Key facts \u00b6 RFC 5424 using port 601 (Framed) Links \u00b6 Ref Link Splunk Add-on None Product Manual unknown Sourcetypes \u00b6 sourcetype notes spectracom:ntp None nix:syslog None Sourcetype and Index Configuration \u00b6 Index Source and Sourcetype will be used as determined by the Source/HWF Splunk Configuration \u00b6 Splunk MUST have props and transforms applied (Typically via add-ons) This configuration will consume all output presuming no S2S is allowed no Splunk destination will be used outputs.conf \u00b6 #Because audit trail is protected and we can't transform it we can not use default we must use tcp_routing [tcpout] defaultGroup = NoForwarding [tcpout:nexthop] server = localhost:9000 sendCookedData = false props.conf \u00b6 [default] ADD_EXTRA_TIME_FIELDS = none ANNOTATE_PUNCT = false SHOULD_LINEMERGE = false TRANSFORMS-zza-syslog = syslog_canforward, metadata_meta, metadata_source, metadata_sourcetype, metadata_index, metadata_host, metadata_subsecond, metadata_time, syslog_prefix, syslog_drop_zero # The following applies for TCP destinations where the IETF frame is required TRANSFORMS-zzz-syslog = syslog_octal, syslog_octal_append # Comment out the above and uncomment the following for udp #TRANSFORMS-zzz-syslog-udp = syslog_octal, syslog_octal_append, syslog_drop_zero [audittrail] # We can't transform this source type its protected TRANSFORMS-zza-syslog = TRANSFORMS-zzz-syslog = transforms.conf \u00b6 syslog_canforward] REGEX = ^.(?!audit) DEST_KEY = _TCP_ROUTING FORMAT = nexthop [metadata_meta] SOURCE_KEY = _meta REGEX = (?ims)(.*) FORMAT = ~~~SM~~~$1~~~EM~~~$0 DEST_KEY = _raw [metadata_source] SOURCE_KEY = MetaData:Source REGEX = ^source::(.*)$ FORMAT = s=\"$1\"] $0 DEST_KEY = _raw [metadata_sourcetype] SOURCE_KEY = MetaData:Sourcetype REGEX = ^sourcetype::(.*)$ FORMAT = st=\"$1\" $0 DEST_KEY = _raw [metadata_index] SOURCE_KEY = _MetaData:Index REGEX = (.*) FORMAT = i=\"$1\" $0 DEST_KEY = _raw [metadata_host] SOURCE_KEY = MetaData:Host REGEX = ^host::(.*)$ FORMAT = \" h=\"$1\" $0 DEST_KEY = _raw [syslog_prefix] SOURCE_KEY = _time REGEX = (.*) FORMAT = <1>1 - - SPLUNK - COOKED [fields@274489 $0 DEST_KEY = _raw [metadata_time] SOURCE_KEY = _time REGEX = (.*) FORMAT = t=\"$1$0 DEST_KEY = _raw [metadata_subsecond] SOURCE_KEY = _meta REGEX = \\_subsecond\\:\\:(\\.\\d+) FORMAT = $1 $0 DEST_KEY = _raw [syslog_octal] INGEST_EVAL = mlen=length(_raw)+1 [syslog_octal_append] INGEST_EVAL = _raw=mlen + \" \" + _raw [syslog_drop_zero] INGEST_EVAL = queue=if(mlen<10,\"nullQueue\",queue)","title":"Splunk Heavy Forwarder"},{"location":"sources/vendor/Splunk/heavyforwarder/#splunk-heavy-forwarder","text":"In certain network architectures such as those using data diodes or those networks requiring \u201cin the clear\u201d inspection at network egress SC4S can be used to accept specially formatted output from Splunk as RFC5424 syslog.","title":"Splunk Heavy Forwarder"},{"location":"sources/vendor/Splunk/heavyforwarder/#key-facts","text":"RFC 5424 using port 601 (Framed)","title":"Key facts"},{"location":"sources/vendor/Splunk/heavyforwarder/#links","text":"Ref Link Splunk Add-on None Product Manual unknown","title":"Links"},{"location":"sources/vendor/Splunk/heavyforwarder/#sourcetypes","text":"sourcetype notes spectracom:ntp None nix:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Splunk/heavyforwarder/#sourcetype-and-index-configuration","text":"Index Source and Sourcetype will be used as determined by the Source/HWF","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Splunk/heavyforwarder/#splunk-configuration","text":"Splunk MUST have props and transforms applied (Typically via add-ons) This configuration will consume all output presuming no S2S is allowed no Splunk destination will be used","title":"Splunk Configuration"},{"location":"sources/vendor/Splunk/heavyforwarder/#outputsconf","text":"#Because audit trail is protected and we can't transform it we can not use default we must use tcp_routing [tcpout] defaultGroup = NoForwarding [tcpout:nexthop] server = localhost:9000 sendCookedData = false","title":"outputs.conf"},{"location":"sources/vendor/Splunk/heavyforwarder/#propsconf","text":"[default] ADD_EXTRA_TIME_FIELDS = none ANNOTATE_PUNCT = false SHOULD_LINEMERGE = false TRANSFORMS-zza-syslog = syslog_canforward, metadata_meta, metadata_source, metadata_sourcetype, metadata_index, metadata_host, metadata_subsecond, metadata_time, syslog_prefix, syslog_drop_zero # The following applies for TCP destinations where the IETF frame is required TRANSFORMS-zzz-syslog = syslog_octal, syslog_octal_append # Comment out the above and uncomment the following for udp #TRANSFORMS-zzz-syslog-udp = syslog_octal, syslog_octal_append, syslog_drop_zero [audittrail] # We can't transform this source type its protected TRANSFORMS-zza-syslog = TRANSFORMS-zzz-syslog =","title":"props.conf"},{"location":"sources/vendor/Splunk/heavyforwarder/#transformsconf","text":"syslog_canforward] REGEX = ^.(?!audit) DEST_KEY = _TCP_ROUTING FORMAT = nexthop [metadata_meta] SOURCE_KEY = _meta REGEX = (?ims)(.*) FORMAT = ~~~SM~~~$1~~~EM~~~$0 DEST_KEY = _raw [metadata_source] SOURCE_KEY = MetaData:Source REGEX = ^source::(.*)$ FORMAT = s=\"$1\"] $0 DEST_KEY = _raw [metadata_sourcetype] SOURCE_KEY = MetaData:Sourcetype REGEX = ^sourcetype::(.*)$ FORMAT = st=\"$1\" $0 DEST_KEY = _raw [metadata_index] SOURCE_KEY = _MetaData:Index REGEX = (.*) FORMAT = i=\"$1\" $0 DEST_KEY = _raw [metadata_host] SOURCE_KEY = MetaData:Host REGEX = ^host::(.*)$ FORMAT = \" h=\"$1\" $0 DEST_KEY = _raw [syslog_prefix] SOURCE_KEY = _time REGEX = (.*) FORMAT = <1>1 - - SPLUNK - COOKED [fields@274489 $0 DEST_KEY = _raw [metadata_time] SOURCE_KEY = _time REGEX = (.*) FORMAT = t=\"$1$0 DEST_KEY = _raw [metadata_subsecond] SOURCE_KEY = _meta REGEX = \\_subsecond\\:\\:(\\.\\d+) FORMAT = $1 $0 DEST_KEY = _raw [syslog_octal] INGEST_EVAL = mlen=length(_raw)+1 [syslog_octal_append] INGEST_EVAL = _raw=mlen + \" \" + _raw [syslog_drop_zero] INGEST_EVAL = queue=if(mlen<10,\"nullQueue\",queue)","title":"transforms.conf"},{"location":"sources/vendor/Splunk/sc4s/","text":"Splunk Connect for Syslog (SC4S) \u00b6 Key facts \u00b6 Internal events Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4740/ Product Manual https://splunk-connect-for-syslog.readthedocs.io/en/latest/ Sourcetypes \u00b6 sourcetype notes sc4s:events Internal events from the SC4S container and underlying syslog-ng process sc4s:metrics syslog-ng operational metrics that will be delivered directly to a metrics index in Splunk Sourcetype and Index Configuration \u00b6 key sourcetype index notes splunk_sc4s_events all main none splunk_sc4s_metrics all em_metrics none splunk_sc4s_fallback all main none Filter type \u00b6 SC4S events and metrics are generated automatically and no specific ports or filters need to be configured for the collection of this data. Setup and Configuration \u00b6 The default index used for sc4s metrics will be \u201c_metrics\u201d Metrics data is collected by default as traditional events; use of Splunk Metrics is enabled by an opt-in set by the variable SC4S_DEST_SPLUNK_SC4S_METRICS_HEC . See the \u201cOptions\u201d section below for details. Options \u00b6 Variable default description SC4S_DEST_SPLUNK_SC4S_METRICS_HEC multi2 event produce metrics as plain text events; single produce metrics using Splunk Enterprise 7.3 single metrics format; multi produce metrics using Splunk Enterprise >8.1 multi metric format multi2 produces improved (reduced resource consumption) multi metric format SC4S_SOURCE_MARK_MESSAGE_NULLQUEUE yes (yes Verification \u00b6 SC4S will generate versioning events at startup. These startup events can be used to validate HEC is set up properly on the Splunk side. index= sourcetype=sc4s:events | stats count by host Metrics can be observed via the \u201cAnalytics\u2013>Metrics\u201d navigation in the Search and Reporting app in Splunk. NOTE: The presentation of metrics is undergoing active development; the delivery of metrics is currently considered an experimental feature.","title":"Splunk Connect for Syslog (SC4S)"},{"location":"sources/vendor/Splunk/sc4s/#splunk-connect-for-syslog-sc4s","text":"","title":"Splunk Connect for Syslog (SC4S)"},{"location":"sources/vendor/Splunk/sc4s/#key-facts","text":"Internal events","title":"Key facts"},{"location":"sources/vendor/Splunk/sc4s/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4740/ Product Manual https://splunk-connect-for-syslog.readthedocs.io/en/latest/","title":"Links"},{"location":"sources/vendor/Splunk/sc4s/#sourcetypes","text":"sourcetype notes sc4s:events Internal events from the SC4S container and underlying syslog-ng process sc4s:metrics syslog-ng operational metrics that will be delivered directly to a metrics index in Splunk","title":"Sourcetypes"},{"location":"sources/vendor/Splunk/sc4s/#sourcetype-and-index-configuration","text":"key sourcetype index notes splunk_sc4s_events all main none splunk_sc4s_metrics all em_metrics none splunk_sc4s_fallback all main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Splunk/sc4s/#filter-type","text":"SC4S events and metrics are generated automatically and no specific ports or filters need to be configured for the collection of this data.","title":"Filter type"},{"location":"sources/vendor/Splunk/sc4s/#setup-and-configuration","text":"The default index used for sc4s metrics will be \u201c_metrics\u201d Metrics data is collected by default as traditional events; use of Splunk Metrics is enabled by an opt-in set by the variable SC4S_DEST_SPLUNK_SC4S_METRICS_HEC . See the \u201cOptions\u201d section below for details.","title":"Setup and Configuration"},{"location":"sources/vendor/Splunk/sc4s/#options","text":"Variable default description SC4S_DEST_SPLUNK_SC4S_METRICS_HEC multi2 event produce metrics as plain text events; single produce metrics using Splunk Enterprise 7.3 single metrics format; multi produce metrics using Splunk Enterprise >8.1 multi metric format multi2 produces improved (reduced resource consumption) multi metric format SC4S_SOURCE_MARK_MESSAGE_NULLQUEUE yes (yes","title":"Options"},{"location":"sources/vendor/Splunk/sc4s/#verification","text":"SC4S will generate versioning events at startup. These startup events can be used to validate HEC is set up properly on the Splunk side. index= sourcetype=sc4s:events | stats count by host Metrics can be observed via the \u201cAnalytics\u2013>Metrics\u201d navigation in the Search and Reporting app in Splunk. NOTE: The presentation of metrics is undergoing active development; the delivery of metrics is currently considered an experimental feature.","title":"Verification"},{"location":"sources/vendor/StealthWatch/StealthIntercept/","text":"Stealth Intercept \u00b6 Key facts \u00b6 Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4609/ Product Manual unknown Sourcetypes \u00b6 sourcetype notes StealthINTERCEPT None StealthINTERCEPT:alerts SC4S Format Shifts to JSON override template to t_msg_hdr for original raw Sourcetype and Index Configuration \u00b6 key sourcetype index notes stealthbits_stealthintercept StealthINTERCEPT netids none stealthbits_stealthintercept_alerts StealthINTERCEPT:alerts netids Note TA does not support this source type","title":"Stealth Intercept"},{"location":"sources/vendor/StealthWatch/StealthIntercept/#stealth-intercept","text":"","title":"Stealth Intercept"},{"location":"sources/vendor/StealthWatch/StealthIntercept/#key-facts","text":"Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/StealthWatch/StealthIntercept/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4609/ Product Manual unknown","title":"Links"},{"location":"sources/vendor/StealthWatch/StealthIntercept/#sourcetypes","text":"sourcetype notes StealthINTERCEPT None StealthINTERCEPT:alerts SC4S Format Shifts to JSON override template to t_msg_hdr for original raw","title":"Sourcetypes"},{"location":"sources/vendor/StealthWatch/StealthIntercept/#sourcetype-and-index-configuration","text":"key sourcetype index notes stealthbits_stealthintercept StealthINTERCEPT netids none stealthbits_stealthintercept_alerts StealthINTERCEPT:alerts netids Note TA does not support this source type","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Tanium/platform/","text":"Platform \u00b6 This source requires a TLS connection; in most cases enabling TLS and using the default port 6514 is adequate. The source is understood to require a valid certificate. Key facts \u00b6 MSG Format based filter Requires TLS and uses IETF Frames use port 6587 after TLS Configuration Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4439/ Sourcetypes \u00b6 sourcetype notes tanium none Index Configuration \u00b6 key index notes tanium_syslog epintel none","title":"Platform"},{"location":"sources/vendor/Tanium/platform/#platform","text":"This source requires a TLS connection; in most cases enabling TLS and using the default port 6514 is adequate. The source is understood to require a valid certificate.","title":"Platform"},{"location":"sources/vendor/Tanium/platform/#key-facts","text":"MSG Format based filter Requires TLS and uses IETF Frames use port 6587 after TLS Configuration","title":"Key facts"},{"location":"sources/vendor/Tanium/platform/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4439/","title":"Links"},{"location":"sources/vendor/Tanium/platform/#sourcetypes","text":"sourcetype notes tanium none","title":"Sourcetypes"},{"location":"sources/vendor/Tanium/platform/#index-configuration","text":"key index notes tanium_syslog epintel none","title":"Index Configuration"},{"location":"sources/vendor/Tenable/ad/","text":"ad \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4060/ Product Manual Sourcetypes \u00b6 sourcetype notes tenable:ad:alerts None Sourcetype and Index Configuration \u00b6 key sourcetype index notes tenable_ad tenable:ad:alerts oswinsec none","title":"ad"},{"location":"sources/vendor/Tenable/ad/#ad","text":"","title":"ad"},{"location":"sources/vendor/Tenable/ad/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Tenable/ad/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4060/ Product Manual","title":"Links"},{"location":"sources/vendor/Tenable/ad/#sourcetypes","text":"sourcetype notes tenable:ad:alerts None","title":"Sourcetypes"},{"location":"sources/vendor/Tenable/ad/#sourcetype-and-index-configuration","text":"key sourcetype index notes tenable_ad tenable:ad:alerts oswinsec none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Tenable/nnm/","text":"nnm \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4060/ Product Manual https://docs.tenable.com/integrations/Splunk/Content/Splunk2/ProcessWorkflow.htm Sourcetypes \u00b6 sourcetype notes tenable:nnm:vuln None Sourcetype and Index Configuration \u00b6 key sourcetype index notes tenable_nnm tenable:nnm:vuln netfw none","title":"nnm"},{"location":"sources/vendor/Tenable/nnm/#nnm","text":"","title":"nnm"},{"location":"sources/vendor/Tenable/nnm/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Tenable/nnm/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4060/ Product Manual https://docs.tenable.com/integrations/Splunk/Content/Splunk2/ProcessWorkflow.htm","title":"Links"},{"location":"sources/vendor/Tenable/nnm/#sourcetypes","text":"sourcetype notes tenable:nnm:vuln None","title":"Sourcetypes"},{"location":"sources/vendor/Tenable/nnm/#sourcetype-and-index-configuration","text":"key sourcetype index notes tenable_nnm tenable:nnm:vuln netfw none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Thycotic/secretserver/","text":"Secret Server \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4060/ Product Manual Sourcetypes \u00b6 sourcetype notes thycotic:syslog None Sourcetype and Index Configuration \u00b6 key sourcetype index notes Thycotic Software_Secret Server thycotic:syslog netauth none","title":"Secret Server"},{"location":"sources/vendor/Thycotic/secretserver/#secret-server","text":"","title":"Secret Server"},{"location":"sources/vendor/Thycotic/secretserver/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Thycotic/secretserver/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4060/ Product Manual","title":"Links"},{"location":"sources/vendor/Thycotic/secretserver/#sourcetypes","text":"sourcetype notes thycotic:syslog None","title":"Sourcetypes"},{"location":"sources/vendor/Thycotic/secretserver/#sourcetype-and-index-configuration","text":"key sourcetype index notes Thycotic Software_Secret Server thycotic:syslog netauth none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Tintri/syslog/","text":"Syslog \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Sourcetypes \u00b6 sourcetype notes tintri none Index Configuration \u00b6 key index notes tintri_syslog infraops none","title":"Syslog"},{"location":"sources/vendor/Tintri/syslog/#syslog","text":"","title":"Syslog"},{"location":"sources/vendor/Tintri/syslog/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Tintri/syslog/#links","text":"Ref Link Splunk Add-on None","title":"Links"},{"location":"sources/vendor/Tintri/syslog/#sourcetypes","text":"sourcetype notes tintri none","title":"Sourcetypes"},{"location":"sources/vendor/Tintri/syslog/#index-configuration","text":"key index notes tintri_syslog infraops none","title":"Index Configuration"},{"location":"sources/vendor/Trend/deepsecurity/","text":"Deep Security \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on CEF https://splunkbase.splunk.com/app/1936/ Sourcetypes \u00b6 sourcetype notes deepsecurity-system_events deepsecurity-intrusion_prevention deepsecurity-integrity_monitoring deepsecurity-log_inspection deepsecurity-web_reputation deepsecurity-firewall deepsecurity-antimalware deepsecurity-app_control Index Configuration \u00b6 key sourcetype index notes Trend Micro_Deep Security Agent deepsecurity epintel Used only if a correct source type is not matched Trend Micro_Deep Security Agent_intrusion prevention deepsecurity-intrusion_prevention epintel Trend Micro_Deep Security Agent_integrity monitoring deepsecurity-integrity_monitoring epintel Trend Micro_Deep Security Agent_log inspection deepsecurity-log_inspection epintel Trend Micro_Deep Security Agent_web reputation deepsecurity-web_reputation epintel Trend Micro_Deep Security Agent_firewall deepsecurity-firewall epintel Trend Micro_Deep Security Agent_antimalware deepsecurity-antimalware epintel Trend Micro_Deep Security Agent_app control deepsecurity-app_control epintel Trend Micro_Deep Security Manager deepsecurity-system_events epintel","title":"Deep Security"},{"location":"sources/vendor/Trend/deepsecurity/#deep-security","text":"","title":"Deep Security"},{"location":"sources/vendor/Trend/deepsecurity/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Trend/deepsecurity/#links","text":"Ref Link Splunk Add-on CEF https://splunkbase.splunk.com/app/1936/","title":"Links"},{"location":"sources/vendor/Trend/deepsecurity/#sourcetypes","text":"sourcetype notes deepsecurity-system_events deepsecurity-intrusion_prevention deepsecurity-integrity_monitoring deepsecurity-log_inspection deepsecurity-web_reputation deepsecurity-firewall deepsecurity-antimalware deepsecurity-app_control","title":"Sourcetypes"},{"location":"sources/vendor/Trend/deepsecurity/#index-configuration","text":"key sourcetype index notes Trend Micro_Deep Security Agent deepsecurity epintel Used only if a correct source type is not matched Trend Micro_Deep Security Agent_intrusion prevention deepsecurity-intrusion_prevention epintel Trend Micro_Deep Security Agent_integrity monitoring deepsecurity-integrity_monitoring epintel Trend Micro_Deep Security Agent_log inspection deepsecurity-log_inspection epintel Trend Micro_Deep Security Agent_web reputation deepsecurity-web_reputation epintel Trend Micro_Deep Security Agent_firewall deepsecurity-firewall epintel Trend Micro_Deep Security Agent_antimalware deepsecurity-antimalware epintel Trend Micro_Deep Security Agent_app control deepsecurity-app_control epintel Trend Micro_Deep Security Manager deepsecurity-system_events epintel","title":"Index Configuration"},{"location":"sources/vendor/Ubiquiti/unifi/","text":"Unifi \u00b6 All Ubiquity Unfi firewalls, switches, and access points share a common syslog configuration via the NMS. Login to NMS Navigate to settings Navigate to Site Enable Remote syslog server Enter hostname and port Key facts \u00b6 Requires vendor product by source configuration Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4107/ Product Manual https://https://help.ubnt.com/ Sourcetypes \u00b6 sourcetype notes ubnt Used when no sub source type is required by add on ubnt:fw USG events ubnt:threat USG IDS events ubnt:switch Unifi Switches ubnt:wireless Access Point logs Sourcetype and Index Configuration \u00b6 key sourcetype index notes ubiquiti_unifi ubnt netops none ubiquiti_unifi_fw ubnt:fw netfw none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-ubiquiti_unifi_fw.conf #File name provided is a suggestion it must be globally unique application app - vps - test - ubiquiti_unifi_fw [ sc4s - vps ] { filter { host ( \"usg-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' ubiquiti ' ) product ( ' unifi ' ) ); }; };","title":"Unifi"},{"location":"sources/vendor/Ubiquiti/unifi/#unifi","text":"All Ubiquity Unfi firewalls, switches, and access points share a common syslog configuration via the NMS. Login to NMS Navigate to settings Navigate to Site Enable Remote syslog server Enter hostname and port","title":"Unifi"},{"location":"sources/vendor/Ubiquiti/unifi/#key-facts","text":"Requires vendor product by source configuration Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Ubiquiti/unifi/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/4107/ Product Manual https://https://help.ubnt.com/","title":"Links"},{"location":"sources/vendor/Ubiquiti/unifi/#sourcetypes","text":"sourcetype notes ubnt Used when no sub source type is required by add on ubnt:fw USG events ubnt:threat USG IDS events ubnt:switch Unifi Switches ubnt:wireless Access Point logs","title":"Sourcetypes"},{"location":"sources/vendor/Ubiquiti/unifi/#sourcetype-and-index-configuration","text":"key sourcetype index notes ubiquiti_unifi ubnt netops none ubiquiti_unifi_fw ubnt:fw netfw none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Ubiquiti/unifi/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-ubiquiti_unifi_fw.conf #File name provided is a suggestion it must be globally unique application app - vps - test - ubiquiti_unifi_fw [ sc4s - vps ] { filter { host ( \"usg-*\" type ( glob )) }; parser { p_set_netsource_fields ( vendor ( ' ubiquiti ' ) product ( ' unifi ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/VMWare/airwatch/","text":"Airwatch \u00b6 AirWatch is a product used for enterprise mobility management (EMM) software and standalone management systems for content, applications and email. Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Product Manual https://docs.vmware.com/en/VMware-Workspace-ONE/index.html Sourcetypes \u00b6 sourcetype notes vmware:airwatch None Index Configuration \u00b6 key index notes vmware_airwatch epintel none","title":"Airwatch"},{"location":"sources/vendor/VMWare/airwatch/#airwatch","text":"AirWatch is a product used for enterprise mobility management (EMM) software and standalone management systems for content, applications and email.","title":"Airwatch"},{"location":"sources/vendor/VMWare/airwatch/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/VMWare/airwatch/#links","text":"Ref Link Product Manual https://docs.vmware.com/en/VMware-Workspace-ONE/index.html","title":"Links"},{"location":"sources/vendor/VMWare/airwatch/#sourcetypes","text":"sourcetype notes vmware:airwatch None","title":"Sourcetypes"},{"location":"sources/vendor/VMWare/airwatch/#index-configuration","text":"key index notes vmware_airwatch epintel none","title":"Index Configuration"},{"location":"sources/vendor/VMWare/carbonblack/","text":"Carbon Black Protection \u00b6 RFC 5424 Format \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Sourcetypes \u00b6 sourcetype notes vmware:cb:protect Common sourcetype Source \u00b6 source notes carbonblack:protection:cef Note this method of onboarding is not recommended for a more complete experience utilize the json format supported by he product with hec or s3 Index Configuration \u00b6 key source index notes vmware_cb-protect carbonblack:protection:cef epintel none Legacy CEF Format \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on none Sourcetypes \u00b6 sourcetype notes cef Common sourcetype Source \u00b6 source notes carbonblack:protection:cef Note this method of onboarding is not recommended for a more complete experience utilize the json format supported by he product with hec or s3 Index Configuration \u00b6 key source index notes Carbon Black_Protection carbonblack:protection:cef epintel none","title":"Carbon Black Protection"},{"location":"sources/vendor/VMWare/carbonblack/#carbon-black-protection","text":"","title":"Carbon Black Protection"},{"location":"sources/vendor/VMWare/carbonblack/#rfc-5424-format","text":"","title":"RFC 5424 Format"},{"location":"sources/vendor/VMWare/carbonblack/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/VMWare/carbonblack/#links","text":"Ref Link Splunk Add-on none","title":"Links"},{"location":"sources/vendor/VMWare/carbonblack/#sourcetypes","text":"sourcetype notes vmware:cb:protect Common sourcetype","title":"Sourcetypes"},{"location":"sources/vendor/VMWare/carbonblack/#source","text":"source notes carbonblack:protection:cef Note this method of onboarding is not recommended for a more complete experience utilize the json format supported by he product with hec or s3","title":"Source"},{"location":"sources/vendor/VMWare/carbonblack/#index-configuration","text":"key source index notes vmware_cb-protect carbonblack:protection:cef epintel none","title":"Index Configuration"},{"location":"sources/vendor/VMWare/carbonblack/#legacy-cef-format","text":"","title":"Legacy CEF Format"},{"location":"sources/vendor/VMWare/carbonblack/#key-facts_1","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/VMWare/carbonblack/#links_1","text":"Ref Link Splunk Add-on none","title":"Links"},{"location":"sources/vendor/VMWare/carbonblack/#sourcetypes_1","text":"sourcetype notes cef Common sourcetype","title":"Sourcetypes"},{"location":"sources/vendor/VMWare/carbonblack/#source_1","text":"source notes carbonblack:protection:cef Note this method of onboarding is not recommended for a more complete experience utilize the json format supported by he product with hec or s3","title":"Source"},{"location":"sources/vendor/VMWare/carbonblack/#index-configuration_1","text":"key source index notes Carbon Black_Protection carbonblack:protection:cef epintel none","title":"Index Configuration"},{"location":"sources/vendor/VMWare/horizonview/","text":"Horizon View \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on None Manual unknown Sourcetypes \u00b6 sourcetype notes vmware:horizon None nix:syslog When used with a default port this will follow the generic NIX configuration when using a dedicated port, IP or host rules events will follow the index configuration for vmware nsx Sourcetype and Index Configuration \u00b6 key sourcetype index notes vmware_horizon vmware:horizon main none","title":"Horizon View"},{"location":"sources/vendor/VMWare/horizonview/#horizon-view","text":"","title":"Horizon View"},{"location":"sources/vendor/VMWare/horizonview/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/VMWare/horizonview/#links","text":"Ref Link Splunk Add-on None Manual unknown","title":"Links"},{"location":"sources/vendor/VMWare/horizonview/#sourcetypes","text":"sourcetype notes vmware:horizon None nix:syslog When used with a default port this will follow the generic NIX configuration when using a dedicated port, IP or host rules events will follow the index configuration for vmware nsx","title":"Sourcetypes"},{"location":"sources/vendor/VMWare/horizonview/#sourcetype-and-index-configuration","text":"key sourcetype index notes vmware_horizon vmware:horizon main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/VMWare/vsphere/","text":"Product - vSphere - ESX NSX (Controller, Manager, Edge) \u00b6 Vmware vsphere product line has multiple old and known issues in syslog output. GUID values sent in place of time stamp Improper time stamp in all RFC5424 events No PRI No syslog header for some split events mismatch syslog header for some split events (segment 1 contains header remaining segments contain no header) WARNING use of a load balancer with udp will cause \u201ccorrupt\u201d event behavior due to out of order message processing caused by the load balancer Ref Link Splunk Add-on ESX https://splunkbase.splunk.com/app/5603/ Splunk Add-on Vcenter https://splunkbase.splunk.com/app/5601/ Splunk Add-on nxs none Splunk Add-on vsan none Sourcetypes \u00b6 sourcetype notes vmware:esxlog:${PROGRAM} None vmware:nsxlog:${PROGRAM} None vmware:vclog:${PROGRAM} None nix:syslog When used with a default port, this will follow the generic NIX configuration. When using a dedicated port, IP or host rules events will follow the index configuration for vmware nsx Sourcetype and Index Configuration \u00b6 key sourcetype index notes vmware_vsphere_esx vmware:esxlog:${PROGRAM} infraops none vmware_vsphere_nsx vmware:nxlog:${PROGRAM} infraops none vmware_vsphere_nsxfw vmware:nxlog:dfwpktlogs infraops none vmware_vsphere_vc vmware:vclog:${PROGRAM} infraops none Filter type \u00b6 MSG Parse: This filter parses message content when using the default configuration. SC4S will normalize the structure of vmware events from multiple incorrectly formed varients to rfc5424 format to improve parsing Setup and Configuration \u00b6 Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. Refer to the Splunk TA documentation for the specific customer format required for proxy configuration Select TCP or SSL transport option Ensure the format of the event is customized per Splunk documentation Options \u00b6 Variable default description SC4S_LISTEN_VMWARE_VSPHERE_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_VMWARE_VSPHERE_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_VMWARE_VSPHERE_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG empty string empty/yes groups known instances of improperly split events set \u201cyes\u201d to return to enable Verification \u00b6 An active proxy will generate frequent events. Use the following search to validate events are present per source device index= sourcetype=\"vmware:vsphere:*\" | stats count by host Automatic Parser Configuration \u00b6 Enable the following options in the env_file #Do not enable with a SNAT load balancer SC4S_USE_NAME_CACHE = yes #Combine known split events into a single event for Splunk SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG = yes #Learn vendor product from recognized events and apply to generic events #for example after the first vpxd event sshd will utilize vps \"vmware_vsphere_nix_syslog\" rather than \"nix_syslog\" SC4S_USE_VPS_CACHE = yes Manual Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-vmware_vsphere.conf #File name provided is a suggestion it must be globally unique application app - vps - test - vmware_vsphere [ sc4s - vps ] { filter { #netmask(169.254.100.1/24) #host(\"-esx-\") }; parser { p_set_netsource_fields ( vendor ( ' vmware ' ) product ( ' vsphere ' ) ); }; };","title":"Vsphere"},{"location":"sources/vendor/VMWare/vsphere/#product-vsphere-esx-nsx-controller-manager-edge","text":"Vmware vsphere product line has multiple old and known issues in syslog output. GUID values sent in place of time stamp Improper time stamp in all RFC5424 events No PRI No syslog header for some split events mismatch syslog header for some split events (segment 1 contains header remaining segments contain no header) WARNING use of a load balancer with udp will cause \u201ccorrupt\u201d event behavior due to out of order message processing caused by the load balancer Ref Link Splunk Add-on ESX https://splunkbase.splunk.com/app/5603/ Splunk Add-on Vcenter https://splunkbase.splunk.com/app/5601/ Splunk Add-on nxs none Splunk Add-on vsan none","title":"Product - vSphere - ESX NSX (Controller, Manager, Edge)"},{"location":"sources/vendor/VMWare/vsphere/#sourcetypes","text":"sourcetype notes vmware:esxlog:${PROGRAM} None vmware:nsxlog:${PROGRAM} None vmware:vclog:${PROGRAM} None nix:syslog When used with a default port, this will follow the generic NIX configuration. When using a dedicated port, IP or host rules events will follow the index configuration for vmware nsx","title":"Sourcetypes"},{"location":"sources/vendor/VMWare/vsphere/#sourcetype-and-index-configuration","text":"key sourcetype index notes vmware_vsphere_esx vmware:esxlog:${PROGRAM} infraops none vmware_vsphere_nsx vmware:nxlog:${PROGRAM} infraops none vmware_vsphere_nsxfw vmware:nxlog:dfwpktlogs infraops none vmware_vsphere_vc vmware:vclog:${PROGRAM} infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/VMWare/vsphere/#filter-type","text":"MSG Parse: This filter parses message content when using the default configuration. SC4S will normalize the structure of vmware events from multiple incorrectly formed varients to rfc5424 format to improve parsing","title":"Filter type"},{"location":"sources/vendor/VMWare/vsphere/#setup-and-configuration","text":"Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. Refer to the Splunk TA documentation for the specific customer format required for proxy configuration Select TCP or SSL transport option Ensure the format of the event is customized per Splunk documentation","title":"Setup and Configuration"},{"location":"sources/vendor/VMWare/vsphere/#options","text":"Variable default description SC4S_LISTEN_VMWARE_VSPHERE_TCP_PORT empty string Enable a TCP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_VMWARE_VSPHERE_UDP_PORT empty string Enable a UDP port for this specific vendor product using a comma-separated list of port numbers SC4S_LISTEN_VMWARE_VSPHERE_TLS_PORT empty string Enable a TLS port for this specific vendor product using a comma-separated list of port numbers SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG empty string empty/yes groups known instances of improperly split events set \u201cyes\u201d to return to enable","title":"Options"},{"location":"sources/vendor/VMWare/vsphere/#verification","text":"An active proxy will generate frequent events. Use the following search to validate events are present per source device index= sourcetype=\"vmware:vsphere:*\" | stats count by host","title":"Verification"},{"location":"sources/vendor/VMWare/vsphere/#automatic-parser-configuration","text":"Enable the following options in the env_file #Do not enable with a SNAT load balancer SC4S_USE_NAME_CACHE = yes #Combine known split events into a single event for Splunk SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG = yes #Learn vendor product from recognized events and apply to generic events #for example after the first vpxd event sshd will utilize vps \"vmware_vsphere_nix_syslog\" rather than \"nix_syslog\" SC4S_USE_VPS_CACHE = yes","title":"Automatic Parser Configuration"},{"location":"sources/vendor/VMWare/vsphere/#manual-parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-vmware_vsphere.conf #File name provided is a suggestion it must be globally unique application app - vps - test - vmware_vsphere [ sc4s - vps ] { filter { #netmask(169.254.100.1/24) #host(\"-esx-\") }; parser { p_set_netsource_fields ( vendor ( ' vmware ' ) product ( ' vsphere ' ) ); }; };","title":"Manual Parser Configuration"},{"location":"sources/vendor/Varonis/datadvantage/","text":"DatAdvantage \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Technology Add-On for Varonis https://splunkbase.splunk.com/app/4256/ Sourcetypes \u00b6 sourcetype notes varonis:ta Index Configuration \u00b6 key sourcetype index notes Varonis Inc._DatAdvantage varonis:ta main","title":"DatAdvantage"},{"location":"sources/vendor/Varonis/datadvantage/#datadvantage","text":"","title":"DatAdvantage"},{"location":"sources/vendor/Varonis/datadvantage/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Varonis/datadvantage/#links","text":"Ref Link Technology Add-On for Varonis https://splunkbase.splunk.com/app/4256/","title":"Links"},{"location":"sources/vendor/Varonis/datadvantage/#sourcetypes","text":"sourcetype notes varonis:ta","title":"Sourcetypes"},{"location":"sources/vendor/Varonis/datadvantage/#index-configuration","text":"key sourcetype index notes Varonis Inc._DatAdvantage varonis:ta main","title":"Index Configuration"},{"location":"sources/vendor/Vectra/cognito/","text":"Cognito \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Technology Add-On for Vectra Cognito https://splunkbase.splunk.com/app/4408/ Sourcetypes \u00b6 sourcetype notes vectra:cognito:detect vectra:cognito:accountdetect vectra:cognito:accountscoring vectra:cognito:audit vectra:cognito:campaigns vectra:cognito:health vectra:cognito:hostscoring vectra:cognito:accountlockdown Index Configuration \u00b6 key sourcetype index notes Vectra Networks_X Series vectra:cognito:detect main Vectra Networks_X Series_accountdetect vectra:cognito:accountdetect main Vectra Networks_X Series_asc vectra:cognito:accountscoring main Vectra Networks_X Series_audit vectra:cognito:audit main Vectra Networks_X Series_campaigns vectra:cognito:campaigns main Vectra Networks_X Series_health vectra:cognito:health main Vectra Networks_X Series_hsc vectra:cognito:hostscoring main Vectra Networks_X Series_lockdown vectra:cognito:accountlockdown main","title":"Cognito"},{"location":"sources/vendor/Vectra/cognito/#cognito","text":"","title":"Cognito"},{"location":"sources/vendor/Vectra/cognito/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Vectra/cognito/#links","text":"Ref Link Technology Add-On for Vectra Cognito https://splunkbase.splunk.com/app/4408/","title":"Links"},{"location":"sources/vendor/Vectra/cognito/#sourcetypes","text":"sourcetype notes vectra:cognito:detect vectra:cognito:accountdetect vectra:cognito:accountscoring vectra:cognito:audit vectra:cognito:campaigns vectra:cognito:health vectra:cognito:hostscoring vectra:cognito:accountlockdown","title":"Sourcetypes"},{"location":"sources/vendor/Vectra/cognito/#index-configuration","text":"key sourcetype index notes Vectra Networks_X Series vectra:cognito:detect main Vectra Networks_X Series_accountdetect vectra:cognito:accountdetect main Vectra Networks_X Series_asc vectra:cognito:accountscoring main Vectra Networks_X Series_audit vectra:cognito:audit main Vectra Networks_X Series_campaigns vectra:cognito:campaigns main Vectra Networks_X Series_health vectra:cognito:health main Vectra Networks_X Series_hsc vectra:cognito:hostscoring main Vectra Networks_X Series_lockdown vectra:cognito:accountlockdown main","title":"Index Configuration"},{"location":"sources/vendor/Wallix/bastion/","text":"Bastion \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3661/ Sourcetypes \u00b6 sourcetype notes WB:syslog note this sourcetype includes program:rdproxy all other data will be treated as nix Sourcetype and Index Configuration \u00b6 key sourcetype index notes wallix_bastion infraops main none Parser Configuration \u00b6 #/opt/sc4s/local/config/app-parsers/app-vps-wallix_bastion.conf #File name provided is a suggestion it must be globally unique application app - vps - test - wallix_bastion [ sc4s - vps ] { filter { host ( ' ^ wasb ' ) }; parser { p_set_netsource_fields ( vendor ( ' wallix ' ) product ( ' bastion ' ) ); }; };","title":"Bastion"},{"location":"sources/vendor/Wallix/bastion/#bastion","text":"","title":"Bastion"},{"location":"sources/vendor/Wallix/bastion/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Wallix/bastion/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3661/","title":"Links"},{"location":"sources/vendor/Wallix/bastion/#sourcetypes","text":"sourcetype notes WB:syslog note this sourcetype includes program:rdproxy all other data will be treated as nix","title":"Sourcetypes"},{"location":"sources/vendor/Wallix/bastion/#sourcetype-and-index-configuration","text":"key sourcetype index notes wallix_bastion infraops main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Wallix/bastion/#parser-configuration","text":"#/opt/sc4s/local/config/app-parsers/app-vps-wallix_bastion.conf #File name provided is a suggestion it must be globally unique application app - vps - test - wallix_bastion [ sc4s - vps ] { filter { host ( ' ^ wasb ' ) }; parser { p_set_netsource_fields ( vendor ( ' wallix ' ) product ( ' bastion ' ) ); }; };","title":"Parser Configuration"},{"location":"sources/vendor/XYPro/mergedaudit/","text":"Merged Audit \u00b6 XY Pro merged audit also called XYGate or XMA is the defacto solution for syslog from HP Nonstop Server (Tandem) Key facts \u00b6 Legacy BSD Format default port 514 CEF Format Links \u00b6 Ref Link Splunk Add-on None Product Manual https://xypro.com/products/hpe-software-from-xypro/ Sourcetypes \u00b6 sourcetype notes cef None Sourcetype and Index Configuration \u00b6 key sourcetype index notes XYPRO_NONSTOP cef infraops none","title":"Merged Audit"},{"location":"sources/vendor/XYPro/mergedaudit/#merged-audit","text":"XY Pro merged audit also called XYGate or XMA is the defacto solution for syslog from HP Nonstop Server (Tandem)","title":"Merged Audit"},{"location":"sources/vendor/XYPro/mergedaudit/#key-facts","text":"Legacy BSD Format default port 514 CEF Format","title":"Key facts"},{"location":"sources/vendor/XYPro/mergedaudit/#links","text":"Ref Link Splunk Add-on None Product Manual https://xypro.com/products/hpe-software-from-xypro/","title":"Links"},{"location":"sources/vendor/XYPro/mergedaudit/#sourcetypes","text":"sourcetype notes cef None","title":"Sourcetypes"},{"location":"sources/vendor/XYPro/mergedaudit/#sourcetype-and-index-configuration","text":"key sourcetype index notes XYPRO_NONSTOP cef infraops none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Zscaler/lss/","text":"LSS \u00b6 The ZScaler product manual includes and extensive section of configuration for multiple Splunk TCP input ports around page 26. When using SC4S these ports are not required and should not be used. Simply configure all outputs from the LSS to utilize the IP or host name of the SC4S instance and port 514 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3865/ Product Manual https://community.zscaler.com/t/zscaler-splunk-app-design-and-installation-documentation/4728 Sourcetypes \u00b6 sourcetype notes zscaler_lss-app None zscaler_lss-auth None zscaler_lss-bba None zscaler_lss-connector None Sourcetype and Index Configuration \u00b6 key sourcetype index notes zscaler_lss zscalerlss_zpa-app netproxy none zscaler_lss zscalerlss_zpa_auth netproxy none zscaler_lss zscalerlss_zpa_auth netproxy none zscaler_lss zscalerlss_zpa_connector netproxy none","title":"LSS"},{"location":"sources/vendor/Zscaler/lss/#lss","text":"The ZScaler product manual includes and extensive section of configuration for multiple Splunk TCP input ports around page 26. When using SC4S these ports are not required and should not be used. Simply configure all outputs from the LSS to utilize the IP or host name of the SC4S instance and port 514","title":"LSS"},{"location":"sources/vendor/Zscaler/lss/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Zscaler/lss/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3865/ Product Manual https://community.zscaler.com/t/zscaler-splunk-app-design-and-installation-documentation/4728","title":"Links"},{"location":"sources/vendor/Zscaler/lss/#sourcetypes","text":"sourcetype notes zscaler_lss-app None zscaler_lss-auth None zscaler_lss-bba None zscaler_lss-connector None","title":"Sourcetypes"},{"location":"sources/vendor/Zscaler/lss/#sourcetype-and-index-configuration","text":"key sourcetype index notes zscaler_lss zscalerlss_zpa-app netproxy none zscaler_lss zscalerlss_zpa_auth netproxy none zscaler_lss zscalerlss_zpa_auth netproxy none zscaler_lss zscalerlss_zpa_connector netproxy none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Zscaler/nss/","text":"NSS \u00b6 The ZScaler product manual includes and extensive section of configuration for multiple Splunk TCP input ports around page 26. When using SC4S these ports are not required and should not be used. Simply configure all outputs from the NSS to utilize the IP or host name of the SC4S instance and port 514 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3865/ Product Manual https://community.zscaler.com/t/zscaler-splunk-app-design-and-installation-documentation/4728 Sourcetypes \u00b6 sourcetype notes zscaler_nss_alerts Requires format customization add \\tvendor=Zscaler\\tproduct=alerts immediately prior to the \\n in the NSS Alert Web format. See Zscaler manual for more info. zscaler_nss_dns Requires format customization add \\tvendor=Zscaler\\tproduct=dns immediately prior to the \\n in the NSS DNS format. See Zscaler manual for more info. zscaler_nss_web None zscaler_nss_fw Requires format customization add \\tvendor=Zscaler\\tproduct=fw immediately prior to the \\n in the Firewall format. See Zscaler manual for more info. Sourcetype and Index Configuration \u00b6 key sourcetype index notes zscaler_nss_alerts zscalernss-alerts main none zscaler_nss_dns zscalernss-dns netdns none zscaler_nss_fw zscalernss-fw netfw none zscaler_nss_web zscalernss-web netproxy none zscaler_nss_tunnel zscalernss-tunnel netops none zscaler_zia_audit zscalernss-zia-audit netops none zscaler_zia_sandbox zscalernss-zia-sandbox main none Filter type \u00b6 MSG Parse: This filter parses message content Setup and Configuration \u00b6 Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. Refer to the Splunk TA documentation for the specific customer format required for proxy configuration Select TCP or SSL transport option Ensure the format of the event is customized per Splunk documentation","title":"NSS"},{"location":"sources/vendor/Zscaler/nss/#nss","text":"The ZScaler product manual includes and extensive section of configuration for multiple Splunk TCP input ports around page 26. When using SC4S these ports are not required and should not be used. Simply configure all outputs from the NSS to utilize the IP or host name of the SC4S instance and port 514","title":"NSS"},{"location":"sources/vendor/Zscaler/nss/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/Zscaler/nss/#links","text":"Ref Link Splunk Add-on https://splunkbase.splunk.com/app/3865/ Product Manual https://community.zscaler.com/t/zscaler-splunk-app-design-and-installation-documentation/4728","title":"Links"},{"location":"sources/vendor/Zscaler/nss/#sourcetypes","text":"sourcetype notes zscaler_nss_alerts Requires format customization add \\tvendor=Zscaler\\tproduct=alerts immediately prior to the \\n in the NSS Alert Web format. See Zscaler manual for more info. zscaler_nss_dns Requires format customization add \\tvendor=Zscaler\\tproduct=dns immediately prior to the \\n in the NSS DNS format. See Zscaler manual for more info. zscaler_nss_web None zscaler_nss_fw Requires format customization add \\tvendor=Zscaler\\tproduct=fw immediately prior to the \\n in the Firewall format. See Zscaler manual for more info.","title":"Sourcetypes"},{"location":"sources/vendor/Zscaler/nss/#sourcetype-and-index-configuration","text":"key sourcetype index notes zscaler_nss_alerts zscalernss-alerts main none zscaler_nss_dns zscalernss-dns netdns none zscaler_nss_fw zscalernss-fw netfw none zscaler_nss_web zscalernss-web netproxy none zscaler_nss_tunnel zscalernss-tunnel netops none zscaler_zia_audit zscalernss-zia-audit netops none zscaler_zia_sandbox zscalernss-zia-sandbox main none","title":"Sourcetype and Index Configuration"},{"location":"sources/vendor/Zscaler/nss/#filter-type","text":"MSG Parse: This filter parses message content","title":"Filter type"},{"location":"sources/vendor/Zscaler/nss/#setup-and-configuration","text":"Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer. Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source. Refer to the Splunk TA documentation for the specific customer format required for proxy configuration Select TCP or SSL transport option Ensure the format of the event is customized per Splunk documentation","title":"Setup and Configuration"},{"location":"sources/vendor/a10networks/vthunder/","text":"a10networks vthunder \u00b6 Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link A10 Networks SSL Insight App https://splunkbase.splunk.com/app/3937 A10 Networks Application Firewall App https://splunkbase.splunk.com/app/3920 A10 Networks L4 Firewall App https://splunkbase.splunk.com/app/3910 Sourcetypes \u00b6 sourcetype notes a10networks:vThunder:cef CEF a10networks:vThunder:syslog Syslog Source \u00b6 source notes a10networks:vThunder None Index Configuration \u00b6 key source index notes a10networks_vThunder a10networks:vThunder netwaf, netops none","title":"a10networks vthunder"},{"location":"sources/vendor/a10networks/vthunder/#a10networks-vthunder","text":"","title":"a10networks vthunder"},{"location":"sources/vendor/a10networks/vthunder/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/a10networks/vthunder/#links","text":"Ref Link A10 Networks SSL Insight App https://splunkbase.splunk.com/app/3937 A10 Networks Application Firewall App https://splunkbase.splunk.com/app/3920 A10 Networks L4 Firewall App https://splunkbase.splunk.com/app/3910","title":"Links"},{"location":"sources/vendor/a10networks/vthunder/#sourcetypes","text":"sourcetype notes a10networks:vThunder:cef CEF a10networks:vThunder:syslog Syslog","title":"Sourcetypes"},{"location":"sources/vendor/a10networks/vthunder/#source","text":"source notes a10networks:vThunder None","title":"Source"},{"location":"sources/vendor/a10networks/vthunder/#index-configuration","text":"key source index notes a10networks_vThunder a10networks:vThunder netwaf, netops none","title":"Index Configuration"},{"location":"sources/vendor/syslog-ng/loggen/","text":"loggen \u00b6 Loggen is a tool used to load test syslog implementations. Key facts \u00b6 MSG Format based filter Legacy BSD Format default port 514 Links \u00b6 Ref Link Product Manual https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.26/administration-guide/96#loggen.1 Sourcetypes \u00b6 sourcetype notes syslogng:loggen By default, loggen uses the legacy BSD-syslog message format. BSD example: loggen --inet --dgram --number 1 RFC5424 example: loggen --inet --dgram -PF --number 1 Refer to above manual link for more examples. Index Configuration \u00b6 key index notes syslogng_loggen main none","title":"loggen"},{"location":"sources/vendor/syslog-ng/loggen/#loggen","text":"Loggen is a tool used to load test syslog implementations.","title":"loggen"},{"location":"sources/vendor/syslog-ng/loggen/#key-facts","text":"MSG Format based filter Legacy BSD Format default port 514","title":"Key facts"},{"location":"sources/vendor/syslog-ng/loggen/#links","text":"Ref Link Product Manual https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.26/administration-guide/96#loggen.1","title":"Links"},{"location":"sources/vendor/syslog-ng/loggen/#sourcetypes","text":"sourcetype notes syslogng:loggen By default, loggen uses the legacy BSD-syslog message format. BSD example: loggen --inet --dgram --number 1 RFC5424 example: loggen --inet --dgram -PF --number 1 Refer to above manual link for more examples.","title":"Sourcetypes"},{"location":"sources/vendor/syslog-ng/loggen/#index-configuration","text":"key index notes syslogng_loggen main none","title":"Index Configuration"},{"location":"troubleshooting/troubleshoot_SC4S_server/","text":"SC4S Server Startup and Operational Validation \u00b6 The following sections will guide the administrator to the most commons solutions to startup and operational issues with SC4S. In general, if you are just starting out with SC4S and wish to simply run with the \u201cstock\u201d configuration, startup out of systemd is recommended. If, on the other hand, you are in the depths of a custom configuration of SC4S with significant modifications (such as multiple unique ports for sources, hostname/CIDR block configuration for sources, new log paths, etc.) then it is best to start SC4S with the container runtime command ( podman or docker ) directly from the command line (below). When you are satisfied with the operation, a transition to systemd can then be made. systemd Errors During SC4S Startup \u00b6 Most issues that occur with startup and operation of sc4s typically involve syntax errors or duplicate listening ports. If you are running out of systemd, you may see this at startup: [ root@sc4s syslog-ng ] # systemctl start sc4s Job for sc4s.service failed because the control process exited with error code. See \"systemctl status sc4s.service\" and \"journalctl -xe\" for details. Follow the checks below to resolve the issue: Is the SC4S container running? \u00b6 There may be nothing untoward after starting with systemd, but the container is not running at all after checking with podman logs SC4S or podman ps . A more informative command than journalctl -xe is the following, journalctl -b -u sc4s | tail -100 which will print the last 100 lines of the system journal in far more detail, which should be sufficient to see the specific failure (syntax or runtime) and guide you in troubleshooting why the container exited unexpectedly. Does the SC4S container start (and run) properly outside of the systemd service environment? \u00b6 As an alternative to launching via systemd during the initial installation phase, you may wish to test the container startup outside of the systemd startup environment. This alternative should be considered required when undergoing heavy troubleshooting or log path development (e.g. when SC4S_DEBUG_CONTAINER is set to \u201cyes\u201d). The following command will launch the container directly from the CLI. This command assumes the local mounted directories are set up as shown in the \u201cgetting started\u201d examples; adjust for your local requirements: /usr/bin/podman run \\ -v splunk-sc4s-var:/var/lib/syslog-ng \\ -v /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z \\ -v /opt/sc4s/archive:/var/lib/syslog-ng/archive:z \\ -v /opt/sc4s/tls:/etc/syslog-ng/tls:z \\ --env-file = /opt/sc4s/env_file \\ --network host \\ --name SC4S \\ --rm splunk/scs:latest If you are using docker, substitute \u201cdocker\u201d for \u201cpodman\u201d for the container runtime command above. Is the container still running (when systemd thinks it\u2019s not)? \u00b6 In some instances, (particularly when SC4S_DEBUG_CONTAINER=yes ) an SC4S container might not shut down completely when starting/stopping out of systemd, and systemd will attempt to start a new container when one is already running with the SC4S name. You will see this type of output when viewing the journal after a failed start caused by this condition, or a similar message when the container is run directly from the CLI: Jul 15 18:45:20 sra-sc4s-alln01-02 podman[11187]: Error: error creating container storage: the container name \"SC4S\" is already in use by \"894357502b2a7142d097ea3ca1468d1cb4fbc69959a9817a1bbe145a09d37fb9\". You have to remove that container... Jul 15 18:45:20 sra-sc4s-alln01-02 systemd[1]: sc4s.service: Main process exited, code=exited, status=125/n/a To rectify this, simply execute podman rm -f SC4S SC4S should then start normally. NOTE: This symptom will recur if SC4S_DEBUG_CONTAINER is set to \u201cyes\u201d. Do not attempt to use systemd when this variable is set; use the CLI podman or docker commands directly to start/stop SC4S. HEC/token connection errors (AKA \u201cNo data in Splunk\u201d) \u00b6 SC4S performs basic HEC connectivity and index checks at startup. These indicate general connection issues and indexes that may not be accessible and/or configured on the Splunk side. To check the container logs which contain the results of these tests, run: /usr/bin/ logs SC4S and note the output. You will see entries similar to these: SC4S_ENV_CHECK_HEC : Splunk HEC connection test successful ; checking indexes ... SC4S_ENV_CHECK_INDEX : Checking email { \"text\" : \"Incorrect index\" , \"code\" : 7 , \"invalid-event-number\" : 1 } SC4S_ENV_CHECK_INDEX : Checking epav { \"text\" : \"Incorrect index\" , \"code\" : 7 , \"invalid-event-number\" : 1 } SC4S_ENV_CHECK_INDEX : Checking main { \"text\" : \"Success\" , \"code\" : 0 } Note the specifics of the indexes that are not configured correctly, and rectify in the Splunk configuration. If this is not addressed properly, you may see output similar to the below when data flows into sc4s: Mar 16 19 : 00 : 06 b817af4e89da syslog-ng [ 1 ] : Server returned with a 4XX ( client errors ) status code , which means we are not authorized or the URL is not found .; url = 'https://splunk-instance.com:8088/services/collector/event' , status_code = '400' , driver = 'd_hec#0' , location = '/opt/syslog-ng/etc/conf.d/destinations/splunk_hec.conf:2:5' Mar 16 19 : 00 : 06 b817af4e89da syslog-ng [ 1 ] : Server disconnected while preparing messages for sending , trying again ; driver = 'd_hec#0' , location = '/opt/syslog-ng/etc/conf.d/destinations/splunk_hec.conf:2:5' , worker_index = '4' , time_reopen = '10' , batch_size = '1000' This is an indication that the standard d_hec destination in syslog-ng (which is the route to Splunk) is being rejected by the HEC endpoint. A 400 error (not 404) is normally caused by an index that has not been created on the Splunk side. This can present a serious problem, as just one bad index will \u201ctaint\u201d the entire batch (in this case, 1000 events) and prevent any of them from being sent to Splunk. It is imperative that the container logs be free of these kinds of errors in production. You can use the alternate HEC debug destination (below) to help debug this condition by sending direct \u201ccurl\u201d commands to the HEC endpoint outside of the SC4S setting. SC4S Local Disk Resource Considerations \u00b6 Check the HEC connection to Splunk. If the connection is down for a long period of time, the local disk buffer used for backup will exhaust local disk resources. The size of the local disk buffer is configured in the env_file: Disk buffer configuration Check the env_file to see if SC4S_DEST_GLOBAL_ALTERNATES is set to d_hec_debug , d_archive or other file-based destination; all of these will consume significant local disk space. d_hec_debug and d_archive are organized by sourcetype; the du -sh * command can be used in each subdirectory to find the culprit. Try rebuilding sc4s volume podman volume rm splunk - sc4s - var podman volume create splunk - sc4s - var Try pruning containers podman system prune [--all] SC4S/kernel UDP Input Buffer Settings \u00b6 SC4S has a setting that requests a certain buffer size when configuring the UDP sockets. The kernel must have its parameters set to at least the same size (or greater) than the syslog-ng config is requesting, or the following will occur in the SC4S logs: /usr/bin/ logs SC4S Note the output. The following warning message is not a failure condition unless we are reaching the upper limit of hardware performance. The kernel refused to set the receive buffer (SO_RCVBUF) to the requested size, you probably need to adjust buffer related kernel parameters; so_rcvbuf='1703936', so_rcvbuf_set='425984' Make changes to /etc/sysctl.conf. Changing receive buffer values here to 16 MB: net.core.rmem_default = 17039360 net.core.rmem_max = 17039360 Run following commands for changes to be affected. sysctl -p restart SC4S SC4S TLS Listener Validation \u00b6 To verify the correct configuration of the TLS server use the following command. Replace the IP, FQDN, and port as appropriate: run -ti drwetter/testssl.sh --severity MEDIUM --ip 127 .0.0.1 selfsigned.example.com:6510 Timezone mismatch in events \u00b6 By default, SC4S resolves the timezone to GMT. If customer have a preference to use local TZ then set the user TZ preference in Splunk during search time rather than at index time. Timezone config documentation Dealing with non RFC-5424 compliant sources \u00b6 If a data source you are trying to ingest claims it is RFC-5424 compliant but you are getting an \u201cError processing log message:\u201d from SC4S, the message violates the standard in some way. Unfortunately multiple vendors claim RFC-5424 compliance without fully testing that they are. In this case, the underlying syslog-ng process will send an error event, with the location of the error in the original event highlighted with >@< to indicate where the error occurred. Here is an example error message: { [ - ] ISODATE : 2020 -05-04 T21 : 21 : 59.001 + 00 : 00 MESSAGE : Error processing log message : < 14 > 1 2020 -05-04 T21 : 21 : 58.117351 + 00 : 00 arcata - pks - cluster -1 pod . log / cf - workloads / logspinner - testing -6446 b8ef - - [ kubernetes @47450 cloudfoundry . org / process_type = \"web\" cloudfoundry . org / rootfs - version = \"v75.0.0\" cloudfoundry . org / version = \"eae53cc3-148d-4395-985c-8fef0606b9e3\" controller - revision - hash = \"logspinner-testing-6446b8ef05-7db777754c\" cloudfoundry . org / app_guid = \"f71634fe-34a4-4f89-adac-3e523f61a401\" cloudfoundry . org / source_type = \"APP\" security . istio . io / tlsMode = \"istio\" statefulset . kubernetes . io / pod - n > @ < ame = \"logspinner-testing-6446b8ef05-0\" cloudfoundry . org / guid = \"f71634fe-34a4-4f89-adac-3e523f61a401\" namespace_name = \"cf-workloads\" object_name = \"logspinner-testing-6446b8ef05-0\" container_name = \"opi\" vm_id = \"vm-e34452a3-771e-4994-666e-bfbc7eb77489\" ] Duration 10.00299412 s TotalSent 10 Rate 0.999701 PID : 33 PRI : < 43 > PROGRAM : syslog - ng } In this example the error can be seen in the snippet statefulset.kubernetes.io/pod-n>@ logs SC4S and note the output. You will see entries similar to these: SC4S_ENV_CHECK_HEC : Splunk HEC connection test successful ; checking indexes ... SC4S_ENV_CHECK_INDEX : Checking email { \"text\" : \"Incorrect index\" , \"code\" : 7 , \"invalid-event-number\" : 1 } SC4S_ENV_CHECK_INDEX : Checking epav { \"text\" : \"Incorrect index\" , \"code\" : 7 , \"invalid-event-number\" : 1 } SC4S_ENV_CHECK_INDEX : Checking main { \"text\" : \"Success\" , \"code\" : 0 } Note the specifics of the indexes that are not configured correctly, and rectify in the Splunk configuration. If this is not addressed properly, you may see output similar to the below when data flows into sc4s: Mar 16 19 : 00 : 06 b817af4e89da syslog-ng [ 1 ] : Server returned with a 4XX ( client errors ) status code , which means we are not authorized or the URL is not found .; url = 'https://splunk-instance.com:8088/services/collector/event' , status_code = '400' , driver = 'd_hec#0' , location = '/opt/syslog-ng/etc/conf.d/destinations/splunk_hec.conf:2:5' Mar 16 19 : 00 : 06 b817af4e89da syslog-ng [ 1 ] : Server disconnected while preparing messages for sending , trying again ; driver = 'd_hec#0' , location = '/opt/syslog-ng/etc/conf.d/destinations/splunk_hec.conf:2:5' , worker_index = '4' , time_reopen = '10' , batch_size = '1000' This is an indication that the standard d_hec destination in syslog-ng (which is the route to Splunk) is being rejected by the HEC endpoint. A 400 error (not 404) is normally caused by an index that has not been created on the Splunk side. This can present a serious problem, as just one bad index will \u201ctaint\u201d the entire batch (in this case, 1000 events) and prevent any of them from being sent to Splunk. It is imperative that the container logs be free of these kinds of errors in production. You can use the alternate HEC debug destination (below) to help debug this condition by sending direct \u201ccurl\u201d commands to the HEC endpoint outside of the SC4S setting.","title":"HEC/token connection errors (AKA \u201cNo data in Splunk\u201d)"},{"location":"troubleshooting/troubleshoot_SC4S_server/#sc4s-local-disk-resource-considerations","text":"Check the HEC connection to Splunk. If the connection is down for a long period of time, the local disk buffer used for backup will exhaust local disk resources. The size of the local disk buffer is configured in the env_file: Disk buffer configuration Check the env_file to see if SC4S_DEST_GLOBAL_ALTERNATES is set to d_hec_debug , d_archive or other file-based destination; all of these will consume significant local disk space. d_hec_debug and d_archive are organized by sourcetype; the du -sh * command can be used in each subdirectory to find the culprit. Try rebuilding sc4s volume podman volume rm splunk - sc4s - var podman volume create splunk - sc4s - var Try pruning containers podman system prune [--all]","title":"SC4S Local Disk Resource Considerations"},{"location":"troubleshooting/troubleshoot_SC4S_server/#sc4skernel-udp-input-buffer-settings","text":"SC4S has a setting that requests a certain buffer size when configuring the UDP sockets. The kernel must have its parameters set to at least the same size (or greater) than the syslog-ng config is requesting, or the following will occur in the SC4S logs: /usr/bin/ logs SC4S Note the output. The following warning message is not a failure condition unless we are reaching the upper limit of hardware performance. The kernel refused to set the receive buffer (SO_RCVBUF) to the requested size, you probably need to adjust buffer related kernel parameters; so_rcvbuf='1703936', so_rcvbuf_set='425984' Make changes to /etc/sysctl.conf. Changing receive buffer values here to 16 MB: net.core.rmem_default = 17039360 net.core.rmem_max = 17039360 Run following commands for changes to be affected. sysctl -p restart SC4S","title":"SC4S/kernel UDP Input Buffer Settings"},{"location":"troubleshooting/troubleshoot_SC4S_server/#sc4s-tls-listener-validation","text":"To verify the correct configuration of the TLS server use the following command. Replace the IP, FQDN, and port as appropriate: run -ti drwetter/testssl.sh --severity MEDIUM --ip 127 .0.0.1 selfsigned.example.com:6510","title":"SC4S TLS Listener Validation"},{"location":"troubleshooting/troubleshoot_SC4S_server/#timezone-mismatch-in-events","text":"By default, SC4S resolves the timezone to GMT. If customer have a preference to use local TZ then set the user TZ preference in Splunk during search time rather than at index time. Timezone config documentation","title":"Timezone mismatch in events"},{"location":"troubleshooting/troubleshoot_SC4S_server/#dealing-with-non-rfc-5424-compliant-sources","text":"If a data source you are trying to ingest claims it is RFC-5424 compliant but you are getting an \u201cError processing log message:\u201d from SC4S, the message violates the standard in some way. Unfortunately multiple vendors claim RFC-5424 compliance without fully testing that they are. In this case, the underlying syslog-ng process will send an error event, with the location of the error in the original event highlighted with >@< to indicate where the error occurred. Here is an example error message: { [ - ] ISODATE : 2020 -05-04 T21 : 21 : 59.001 + 00 : 00 MESSAGE : Error processing log message : < 14 > 1 2020 -05-04 T21 : 21 : 58.117351 + 00 : 00 arcata - pks - cluster -1 pod . log / cf - workloads / logspinner - testing -6446 b8ef - - [ kubernetes @47450 cloudfoundry . org / process_type = \"web\" cloudfoundry . org / rootfs - version = \"v75.0.0\" cloudfoundry . org / version = \"eae53cc3-148d-4395-985c-8fef0606b9e3\" controller - revision - hash = \"logspinner-testing-6446b8ef05-7db777754c\" cloudfoundry . org / app_guid = \"f71634fe-34a4-4f89-adac-3e523f61a401\" cloudfoundry . org / source_type = \"APP\" security . istio . io / tlsMode = \"istio\" statefulset . kubernetes . io / pod - n > @ < ame = \"logspinner-testing-6446b8ef05-0\" cloudfoundry . org / guid = \"f71634fe-34a4-4f89-adac-3e523f61a401\" namespace_name = \"cf-workloads\" object_name = \"logspinner-testing-6446b8ef05-0\" container_name = \"opi\" vm_id = \"vm-e34452a3-771e-4994-666e-bfbc7eb77489\" ] Duration 10.00299412 s TotalSent 10 Rate 0.999701 PID : 33 PRI : < 43 > PROGRAM : syslog - ng } In this example the error can be seen in the snippet statefulset.kubernetes.io/pod-n>@ Test Commands \u00b6 Checking SC4S port using \u201cnc\u201d. Run this command where SC4S is hosted and check for data in Splunk for success and failure echo '' |nc Obtaining \u201cOn-the-wire\u201d Raw Events \u00b6 In almost all cases during development or troubleshooting, you will need to obtain samples of the messages exactly as they are received by SC4S. These \u201craw\u201d events contain the full syslog message (including the preamble) and differs from those that appear in Splunk after processing by sc4s and/or Splunk. This is the only way to determine if SC4S parsers and filters are operating correctly, as raw messages are needed for \u201cplayback\u201d when testing. In addition, the community supporting SC4S will always first ask for raw samples (kind of like the way Splunk support always asks for \u201cdiags\u201d) before any development or troubleshooting exercise. Here are some options for obtaining raw logs for one or more sourcetypes: Run tcpdump on the collection interface and display the results in ASCII. You will see events of the form < 165 > 1 2007 -02 -15 T09 : 17 : 15.719 Z router1 mgd 3046 UI_DBASE_LOGOUT_EVENT [ junos @2636.1.1.1.2.18 username = \"user\" ] User ' user ' exiting configuration mode buried in the packet contents. Set the variable SC4S_SOURCE_STORE_RAWMSG=yes in env_file and restart sc4s. This will store the raw message in a syslog-ng macro called RAWMSG and will be displayed in Splunk for all fallback messages. For most other sourcetypes, the RAWMSG is not displayed, but can be surfaced by changing the output template to one of the JSON variants (t_JSON_3164 or t_JSON_5424 depending on RFC message type). See SC4S metadata configuration for more details. ** IMPORTANT! Be sure to turn off the RAWMSG variable when you are finished, as it doubles the memory and disk requirements of sc4s. Do not use RAWMSG in production! Lastly, you can enable the alternate destination d_rawmsg for one or more sourcetypes. This destination will write the raw messages to the container directory /var/syslog-ng/archive/rawmsg/ (which is typically mapped locally to /opt/sc4s/archive ). Within this directory, the logs are organized by host and time. This method can be useful when raw samples are needed for events that partially parse (or parse into the wrong sourcetype) and the output template is not JSON (see above). \u201cexec\u201d into the container (advanced) \u00b6 You can confirm how the templating process created the actual syslog-ng config files that are in use by \u201cexec\u2019ing in\u201d to the container and navigating the syslog-ng config filesystem directly. To do this, run /usr/bin/podman exec -it SC4S /bin/bash and navigate to /opt/syslog-ng/etc/ to see the actual config files in use. If you are adept with container operations and syslog-ng itself, you can modify files directly and reload syslog-ng with the command kill -1 1 in the container. You can also run the /entrypoint.sh script by hand (or a subset of it, such as everything but syslog-ng) and have complete control over the templating and underlying syslog-ng process. This is an advanced topic and further help can be obtained via the github issue tracker and Slack channels. Keeping a failed container running (even more advanced) \u00b6 When debugging a configuration syntax issue at startup, it is often helpful to keep the container running after a syslog-ng startup failure. In order to facilitate troubleshooting and make \u201con the fly\u201d syslog-ng configuration changes from within a running container, the container can be forced to remain running when syslog-ng fails to start (which normally terminates the container). This can be enabled by adding SC4S_DEBUG_CONTAINER=yes to the env_file . Use this capability in conjunction with \u201cexec-ing\u201d into the container described above. NOTE: Do not attempt to enable the debug container mode while running out of systemd. Run the container manually from the CLI, as podman or docker commands will be required to start, stop, and optionally clean up cruft left behind by the debug process. Only when SC4S_DEBUG_CONTAINER is set to \u201cno\u201d (or completely unset) should systemd startup processing resume. Fix timezone \u00b6 Mismatch in TZ can occur if SC4S and logHost are not in same TZ. This is commonly occurring problem. To fix it one must create a filter using sc4s-lp-dest-format-d_hec_fmt . Example: #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-fix_tz_something.conf block parser app - dest - rewrite - checkpoint_drop - d_fmt_hec_default () { channel { rewrite { fix - time - zone ( \"EST5EDT\" ); }; }; }; application app - dest - rewrite - fix_tz_something - d_fmt_hec_default [ sc4s - lp - dest - format - d_hec_fmt ] { filter { match ( ' checkpoint ' value ( ' fields . sc4s_vendor ' ) type ( string )) <- this has to be customized and match ( ' syslog ' value ( ' fields . sc4s_product ' ) type ( string )) <- this has to be customized and match ( ' Drop ' value ( ' . SDATA . sc4s @2620. action ' ) type ( string )) <- this has to be customized and match ( ' 12. ' value ( ' . SDATA . sc4s @2620. src ' ) type ( string ) flags ( prefix ) ); <- this has to be customized }; parser { app - dest - rewrite - fix_tz_something - d_fmt_hec_default (); }; }; Or create a post-filter if destport, container, proto are not available in indexed fields: #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-fix_tz_something.conf block parser app - dest - rewrite - fortinet_fortios - d_fmt_hec_default () { channel { rewrite { fix - time - zone ( \"EST5EDT\" ); }; }; }; application app - dest - rewrite - device - d_fmt_hec_default [ sc4s - postfilter ] { filter { match ( \"xxxx\" , value ( \"fields.sc4s_destport\" ) type ( glob )); <- this has to be customized }; parser { app - dest - rewrite - fortinet_fortios - d_fmt_hec_default (); }; }; Note that filter match statement should be aligned to your data! Parser accepts timezone in formats: \u201cAmerica/New York\u201d or \u201cEST5EDT\u201d (though not short form like \u201cEST\u201d only). Cyberark logs known issue \u00b6 When the data is received on the indexers all the events are merged together into one. Please check the below link for configuration on cyberark side https://cyberark-customers.force.com/s/article/00004289 SC4S events dropping issue when another interface used to receive logs \u00b6 When second / another interface used to receive syslog traffic, RPF (Reverse Path Forwarding filtering) in RHEL (configured as default configuration) was dropping the events. Need to add static route for source device to point back dedicated syslog interface. Reference: https://access.redhat.com/solutions/53031 SC4S events not ingested in splunk from other VM \u00b6 When data is transmitted through an echo message from the same instance, it is successfully sending data to splunk. However, when the echo is sent from a different instance, the data does not appear in splunk and no errors are reported in the logs. To resolve this issue, it is essential to check whether an internal firewall is enabled. If an internal firewall is active, it\u2019s important to verify whether the default port 514 or the port which you have used is blocked or not. Here are some commands to check and enable, if not enabled: #To list all the firewall ports sudo firewall - cmd -- list - all #to enable 514 if its not enabled sudo firewall - cmd -- zone = public -- permanent -- add - port = 514 / udp sudo firewall - cmd -- reload","title":"SC4S Logging and Troubleshooting Resources"},{"location":"troubleshooting/troubleshoot_resources/#sc4s-logging-and-troubleshooting-resources","text":"","title":"SC4S Logging and Troubleshooting Resources"},{"location":"troubleshooting/troubleshoot_resources/#helpful-linux-and-container-commands","text":"","title":"Helpful Linux and Container Commands"},{"location":"troubleshooting/troubleshoot_resources/#linux-service-systemd-commands","text":"Check service status systemctl status sc4s Start service systemctl start service Stop service systemctl stop service Restart service systemctl restart service Enabling service at boot systemctl enable sc4s Query the system journal journalctl -b -u sc4s","title":"Linux service (systemd) commands"},{"location":"troubleshooting/troubleshoot_resources/#container-commands","text":"NOTE: All container commands below can be run with either runtime ( podman or docker ). Container logs sudo podman logs SC4S Exec into SC4S container podman exec -it SC4S bash Rebuilding SC4S volume podman volume rm splunk - sc4s - var podman volume create splunk - sc4s - var Pull an image or a repository from a registry podman pull splunk:scs:latest Remove unused data podman system prune Load an image from a tar archive or STDIN podman load ","title":"Container Commands"},{"location":"troubleshooting/troubleshoot_resources/#test-commands","text":"Checking SC4S port using \u201cnc\u201d. Run this command where SC4S is hosted and check for data in Splunk for success and failure echo '' |nc ","title":"Test Commands"},{"location":"troubleshooting/troubleshoot_resources/#obtaining-on-the-wire-raw-events","text":"In almost all cases during development or troubleshooting, you will need to obtain samples of the messages exactly as they are received by SC4S. These \u201craw\u201d events contain the full syslog message (including the preamble) and differs from those that appear in Splunk after processing by sc4s and/or Splunk. This is the only way to determine if SC4S parsers and filters are operating correctly, as raw messages are needed for \u201cplayback\u201d when testing. In addition, the community supporting SC4S will always first ask for raw samples (kind of like the way Splunk support always asks for \u201cdiags\u201d) before any development or troubleshooting exercise. Here are some options for obtaining raw logs for one or more sourcetypes: Run tcpdump on the collection interface and display the results in ASCII. You will see events of the form < 165 > 1 2007 -02 -15 T09 : 17 : 15.719 Z router1 mgd 3046 UI_DBASE_LOGOUT_EVENT [ junos @2636.1.1.1.2.18 username = \"user\" ] User ' user ' exiting configuration mode buried in the packet contents. Set the variable SC4S_SOURCE_STORE_RAWMSG=yes in env_file and restart sc4s. This will store the raw message in a syslog-ng macro called RAWMSG and will be displayed in Splunk for all fallback messages. For most other sourcetypes, the RAWMSG is not displayed, but can be surfaced by changing the output template to one of the JSON variants (t_JSON_3164 or t_JSON_5424 depending on RFC message type). See SC4S metadata configuration for more details. ** IMPORTANT! Be sure to turn off the RAWMSG variable when you are finished, as it doubles the memory and disk requirements of sc4s. Do not use RAWMSG in production! Lastly, you can enable the alternate destination d_rawmsg for one or more sourcetypes. This destination will write the raw messages to the container directory /var/syslog-ng/archive/rawmsg/ (which is typically mapped locally to /opt/sc4s/archive ). Within this directory, the logs are organized by host and time. This method can be useful when raw samples are needed for events that partially parse (or parse into the wrong sourcetype) and the output template is not JSON (see above).","title":"Obtaining \"On-the-wire\" Raw Events"},{"location":"troubleshooting/troubleshoot_resources/#exec-into-the-container-advanced","text":"You can confirm how the templating process created the actual syslog-ng config files that are in use by \u201cexec\u2019ing in\u201d to the container and navigating the syslog-ng config filesystem directly. To do this, run /usr/bin/podman exec -it SC4S /bin/bash and navigate to /opt/syslog-ng/etc/ to see the actual config files in use. If you are adept with container operations and syslog-ng itself, you can modify files directly and reload syslog-ng with the command kill -1 1 in the container. You can also run the /entrypoint.sh script by hand (or a subset of it, such as everything but syslog-ng) and have complete control over the templating and underlying syslog-ng process. This is an advanced topic and further help can be obtained via the github issue tracker and Slack channels.","title":"\"exec\" into the container (advanced)"},{"location":"troubleshooting/troubleshoot_resources/#keeping-a-failed-container-running-even-more-advanced","text":"When debugging a configuration syntax issue at startup, it is often helpful to keep the container running after a syslog-ng startup failure. In order to facilitate troubleshooting and make \u201con the fly\u201d syslog-ng configuration changes from within a running container, the container can be forced to remain running when syslog-ng fails to start (which normally terminates the container). This can be enabled by adding SC4S_DEBUG_CONTAINER=yes to the env_file . Use this capability in conjunction with \u201cexec-ing\u201d into the container described above. NOTE: Do not attempt to enable the debug container mode while running out of systemd. Run the container manually from the CLI, as podman or docker commands will be required to start, stop, and optionally clean up cruft left behind by the debug process. Only when SC4S_DEBUG_CONTAINER is set to \u201cno\u201d (or completely unset) should systemd startup processing resume.","title":"Keeping a failed container running (even more advanced)"},{"location":"troubleshooting/troubleshoot_resources/#fix-timezone","text":"Mismatch in TZ can occur if SC4S and logHost are not in same TZ. This is commonly occurring problem. To fix it one must create a filter using sc4s-lp-dest-format-d_hec_fmt . Example: #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-fix_tz_something.conf block parser app - dest - rewrite - checkpoint_drop - d_fmt_hec_default () { channel { rewrite { fix - time - zone ( \"EST5EDT\" ); }; }; }; application app - dest - rewrite - fix_tz_something - d_fmt_hec_default [ sc4s - lp - dest - format - d_hec_fmt ] { filter { match ( ' checkpoint ' value ( ' fields . sc4s_vendor ' ) type ( string )) <- this has to be customized and match ( ' syslog ' value ( ' fields . sc4s_product ' ) type ( string )) <- this has to be customized and match ( ' Drop ' value ( ' . SDATA . sc4s @2620. action ' ) type ( string )) <- this has to be customized and match ( ' 12. ' value ( ' . SDATA . sc4s @2620. src ' ) type ( string ) flags ( prefix ) ); <- this has to be customized }; parser { app - dest - rewrite - fix_tz_something - d_fmt_hec_default (); }; }; Or create a post-filter if destport, container, proto are not available in indexed fields: #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-fix_tz_something.conf block parser app - dest - rewrite - fortinet_fortios - d_fmt_hec_default () { channel { rewrite { fix - time - zone ( \"EST5EDT\" ); }; }; }; application app - dest - rewrite - device - d_fmt_hec_default [ sc4s - postfilter ] { filter { match ( \"xxxx\" , value ( \"fields.sc4s_destport\" ) type ( glob )); <- this has to be customized }; parser { app - dest - rewrite - fortinet_fortios - d_fmt_hec_default (); }; }; Note that filter match statement should be aligned to your data! Parser accepts timezone in formats: \u201cAmerica/New York\u201d or \u201cEST5EDT\u201d (though not short form like \u201cEST\u201d only).","title":"Fix timezone"},{"location":"troubleshooting/troubleshoot_resources/#cyberark-logs-known-issue","text":"When the data is received on the indexers all the events are merged together into one. Please check the below link for configuration on cyberark side https://cyberark-customers.force.com/s/article/00004289","title":"Cyberark logs known issue"},{"location":"troubleshooting/troubleshoot_resources/#sc4s-events-dropping-issue-when-another-interface-used-to-receive-logs","text":"When second / another interface used to receive syslog traffic, RPF (Reverse Path Forwarding filtering) in RHEL (configured as default configuration) was dropping the events. Need to add static route for source device to point back dedicated syslog interface. Reference: https://access.redhat.com/solutions/53031","title":"SC4S events dropping issue when another interface used to receive logs"},{"location":"troubleshooting/troubleshoot_resources/#sc4s-events-not-ingested-in-splunk-from-other-vm","text":"When data is transmitted through an echo message from the same instance, it is successfully sending data to splunk. However, when the echo is sent from a different instance, the data does not appear in splunk and no errors are reported in the logs. To resolve this issue, it is essential to check whether an internal firewall is enabled. If an internal firewall is active, it\u2019s important to verify whether the default port 514 or the port which you have used is blocked or not. Here are some commands to check and enable, if not enabled: #To list all the firewall ports sudo firewall - cmd -- list - all #to enable 514 if its not enabled sudo firewall - cmd -- zone = public -- permanent -- add - port = 514 / udp sudo firewall - cmd -- reload","title":"SC4S events not ingested in splunk from other VM"}]} \ No newline at end of file diff --git a/3.4.1/sitemap.xml b/3.4.1/sitemap.xml new file mode 100644 index 0000000000..ccb69ff050 --- /dev/null +++ b/3.4.1/sitemap.xml @@ -0,0 +1,848 @@ + + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + + None + 2023-09-06 + daily + + \ No newline at end of file diff --git a/3.4.1/sitemap.xml.gz b/3.4.1/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..5607b5fcd92dada59c432c804f0b66c7ffe8881d GIT binary patch literal 289 zcmb2|=HPf~^CN}ne{p6>YHnhIUPW#W!`rjodCdkQtq&{18g1CESB98QEKHLvyQ0U? z$n24z9Uv{YtENUYcM=4+pA#4oAahox&ix{|eW_fw@`f?2_Drru6D9b>;EfBQz~ zHFu+V?!9`wt!{-%@5Vyw&DE#Q+L@pCemZe&R%v+awfSoGg}zt$?Zehj+P&hxM*)?= WhyTa(+kZT%W87*lJ^fP<0|NkiIF0ZC literal 0 HcmV?d00001 diff --git a/3.4.1/sources/base/cef/index.html b/3.4.1/sources/base/cef/index.html new file mode 100644 index 0000000000..86aea400a9 --- /dev/null +++ b/3.4.1/sources/base/cef/index.html @@ -0,0 +1,5699 @@ + + + + + + + + + + + + + + + + Common Event Format (CEF) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    Common Event Format (CEF)

    +

    Product - Various products that send CEF-format messages via syslog

    +

    Each CEF product should have their own source entry in this documentation set. In a departure +from normal configuration, all CEF products should use the “CEF” version of the unique port and +archive environment variable settings (rather than a unique one per product), as the CEF log path +handles all products sending events to SC4S in the CEF format. Examples of this include Arcsight, +Imperva, and Cyberark. Therefore, the CEF environment variables for unique port, archive, etc. +should be set only once.

    +

    If your deployment has multiple CEF devices that send to more than one port, +set the CEF unique port variable(s) as a comma-separated list. See Unique Listening Ports +for details.

    +

    The source documentation included below is a reference baseline for any product that sends data +using the CEF log path.

    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CEFhttps://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/
    Product Manualhttps://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm
    +

    Splunk Metadata with CEF events

    +

    The keys (first column) in splunk_metadata.csv for CEF data sources have a slightly different meaning than those for non-CEF ones. +The typical vendor_product syntax is instead replaced by checks against specific columns of the CEF event – namely the first, +second, and fourth columns following the leading CEF:0 (“column 0”). These specific columns refer to the CEF device_vendor, +device_product, and device_event_class, respectively. The third column, device_version, is not used for metadata assignment.

    +

    SC4S sets metadata based on the first two columns, and (optionally) the fourth. While the key (first column) in the +splunk_metadata file for non-CEF sources uses a “vendor_product” syntax that is arbitrary, the syntax for this key for CEF +events is based on the actual contents of columns 1,2 and 4 from the CEF event, namely:

    +

    device_vendor_device_product_device_class

    +

    The final device_class portion is optional. Therefore, CEF entries in splunk_metadata can have a key representing the vendor and +product, and others representing a vendor and product coupled with one or more additional classes. This allows for more granular +metadata assignment (or overrides).

    +

    Here is a snippet of a sample Imperva CEF event that includes a CEF device class entry (which is “Firewall”):

    +
    Apr 19 10:29:53 3.3.3.3 CEF:0|Imperva Inc.|SecureSphere|12.0.0|Firewall|SSL Untraceable Connection|Medium|
    +
    + +

    and the corresponding match in splunk_metadata.csv:

    +
    Imperva Inc._SecureSphere_Firewall,sourcetype,imperva:waf:firewall:cef
    +
    + +

    Default Sourcetype

    + + + + + + + + + + + + + +
    sourcetypenotes
    cefCommon sourcetype
    +

    Default Source

    + + + + + + + + + + + + + +
    sourcenotes
    VariesVaries
    +

    Default Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    Vendor_ProductVariesmainnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content

    +

    Options

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_CEF_UDP_PORTempty stringEnable a UDP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_CEF_TCP_PORTempty stringEnable a TCP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_CEF_TLS_PORTempty stringEnable a TLS port for this specific vendor product using a comma-separated list of port numbers
    SC4S_ARCHIVE_CEFnoEnable archive to disk for this specific source
    SC4S_DEST_CEF_HECnoWhen Splunk HEC is disabled globally set to yes to enable this specific source
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/base/leef/index.html b/3.4.1/sources/base/leef/index.html new file mode 100644 index 0000000000..2c1fc6389e --- /dev/null +++ b/3.4.1/sources/base/leef/index.html @@ -0,0 +1,5717 @@ + + + + + + + + + + + + + + + + Log Extended Event Format (LEEF) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    Log Extended Event Format (LEEF)

    +

    Product - Various products that send LEEF V1 and V2 format messages via syslog

    +

    Each LEEF product should have their own source entry in this documentation set by vendor. In a departure +from normal configuration, all LEEF products should use the “LEEF” version of the unique port and +archive environment variable settings (rather than a unique one per product), as the LEEF log path +handles all products sending events to SC4S in the LEEF format. Examples of this include QRadar itself +as well as other legacy systems. Therefore, the LEEF environment variables for unique port, archive, etc. +should be set only once.

    +

    If your deployment has multiple LEEF devices that send to more than one port, +set the LEEF unique port variable(s) as a comma-separated list. See Unique Listening Ports +for details.

    +

    The source documentation included below is a reference baseline for any product that sends data +using the LEEF log path.

    +

    Some vendors implement LEEF v2.0 format events incorrectly, omitting the required “key=value” separator field +from the LEEF header, thus forcing the consumer to assume the default tab \t character. +SC4S will correctly process this omission, but will not correctly process other non-compliant formats.

    +

    The LEEF format allows for the inclusion of a field devTime containing the device timestamp and allows the sender to +also specify the format of this timestamp in another field called devTimeFormat, which uses the Java Time format. +SC4S uses syslog-ng strptime format which is not directly translatable to the Java Time format. Therefore, SC4S has +provided support for the following common formats. If needed, additional time formats can be requested via an issue on +github.

    +
        '%s.%f',
    +    '%s',
    +    '%b %d %H:%M:%S.%f',
    +    '%b %d %H:%M:%S',
    +    '%b %d %Y %H:%M:%S.%f',
    +    '%b %e %Y %H:%M:%S',
    +    '%b %e %H:%M:%S.%f',
    +    '%b %e %H:%M:%S',
    +    '%b %e %Y %H:%M:%S.%f',
    +    '%b %e %Y %H:%M:%S'  
    +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on LEEFNone
    Product Manualhttps://www.ibm.com/support/knowledgecenter/SS42VS_DSM/com.ibm.dsm.doc/c_LEEF_Format_Guide_intro.html
    +

    Splunk Metadata with LEEF events

    +

    The keys (first column) in splunk_metadata.csv for LEEF data sources have a slightly different meaning than those for non-LEEF ones. +The typical vendor_product syntax is instead replaced by checks against specific columns of the LEEF event – namely the first and +second, columns following the leading LEEF:VERSION (“column 0”). These specific columns refer to the LEEF device_vendor, +and device_product, respectively.

    +

    device_vendor_device_product

    +

    Here is a snippet of a sample LANCOPE event in LEEF 2.0 format:

    +
    <111>Apr 19 10:29:53 3.3.3.3 LEEF:2.0|Lancope|StealthWatch|1.0|41|^|src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black
    +
    + +

    and the corresponding match in splunk_metadata.csv:

    +
    Lancope_StealthWatch,source,lancope:stealthwatch
    +
    + +

    Default Sourcetype

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    LEEF:1Common sourcetype for all LEEF v1 events
    LEEF:2:<separator>Common sourcetype for all LEEF v2 events separator is the printable literal or hex value of the separator used in the event
    +

    Default Source

    + + + + + + + + + + + + + +
    sourcenotes
    vendor:productVaries
    +

    Default Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    Vendor_ProductVariesmainnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content

    +

    Options

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_LEEF_UDP_PORTempty stringEnable a UDP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_LEEF_TCP_PORTempty stringEnable a TCP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_LEEF_TLS_PORTempty stringEnable a TLS port for this specific vendor product using a comma-separated list of port numbers
    SC4S_ARCHIVE_LEEFnoEnable archive to disk for this specific source
    SC4S_DEST_LEEF_HECnoWhen Splunk HEC is disabled globally set to yes to enable this specific source
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/base/nix/index.html b/3.4.1/sources/base/nix/index.html new file mode 100644 index 0000000000..b9a9e43231 --- /dev/null +++ b/3.4.1/sources/base/nix/index.html @@ -0,0 +1,5615 @@ + + + + + + + + + + + + + + + + Generic *NIX - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Generic *NIX

    +

    Many appliance vendor utilize Linux and BSD distributions as the foundation of the solution. When configured to log via +syslog, these devices’ OS logs (from a security perspective) can be monitored using the common Splunk Nix TA.

    +

    Note: This is NOT a replacement for or alternative to the Splunk Universal forwarder on Linux and Unix. For general-purpose +server applications, the Universal Forwarder offers more comprehensive collection of events and metrics appropriate for both +security and operations use cases.

    + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/833/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    nix:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    nix_syslognix:syslogosnixnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content

    +

    Setup and Configuration

    +
      +
    • Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer.
    • +
    • Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source.
    • +
    +

    Options

    + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_ARCHIVE_NIX_SYSLOGnoEnable archive to disk for this specific source
    SC4S_DEST_NIX_SYSLOG_HECnoWhen Splunk HEC is disabled globally set to yes to enable this specific source
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/base/simple/index.html b/3.4.1/sources/base/simple/index.html new file mode 100644 index 0000000000..a7894ea5fa --- /dev/null +++ b/3.4.1/sources/base/simple/index.html @@ -0,0 +1,5573 @@ + + + + + + + + + + + + + + + + Simple Log path by port - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Simple Log path by port

    +

    The SIMPLE source configuration allows configuration of a log path for SC4S using a single port +to a single index/sourcetype combination to quickly onboard new sources that have not been formally +supported in the product. Source data must use RFC5424 or a common variant of RFC3164 formatting.

    +
      +
    • NOTE: This is an interim step that should be used only to quickly onboard well-formatted data that is being sent over a +unique port. A dedicated log path should be developed for the data source to facilitate further parsing and enrichment, as +well as allowing the potential sending of this data source over the default (514) listening port.
    • +
    +

    Splunk Metadata with SIMPLE events

    +

    The keys (first column) in splunk_metadata.csv for SIMPLE data sources is a user-created key using the vendor_product convention. +For example, to on-board a new product first firewall using a source type of first:firewall and index netfw, add the following +two lines to the configuration file as shown:

    +
    first_firewall,index,netfw
    +first_firewall,sourcetype,first:firewall
    +
    + +

    Options

    +

    For the variables below, replace VENDOR_PRODUCT with the key (converted to upper case) used in the splunk_metadata.csv. +Based on the example above, to establish a tcp listener for first firewall we would use SC4S_LISTEN_SIMPLE_FIRST_FIREWALL_TCP_PORT.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_UDP_PORTempty stringEnable a UDP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_TCP_PORTempty stringEnable a TCP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_SIMPLE_VENDOR_PRODUCT_TLS_PORTempty stringEnable a TLS port for this specific vendor product using a comma-separated list of port numbers
    SC4S_ARCHIVE_SIMPLE_VENDOR_PRODUCTnoEnable archive to disk for this specific source
    SC4S_DEST_SIMPLE_VENDOR_PRODUCT_HECnoWhen Splunk HEC is disabled globally set to yes to enable this specific source
    +

    Important Notes

    +
      +
    • SIMPLE data sources must use RFC5424 or a common variant of RFC3164 formatting.
    • +
    • Each SIMPLE data source must listen on its own unique port list. Port overlap with other +sources, either SIMPLE ones or those served by regular log paths, are not allowed and will cause an error at startup.
    • +
    • The key(s) chosen for splunk_metadata.csv must be in the form vendor_product (lower case).
    • +
    • These same keys can be used for a regular SC4S log path developed in the future.
    • +
    • The SIMPLE environment variables must have a core of VENDOR_PRODUCT (upper case).
    • +
    • Take care to remove the SIMPLE form of these LISTEN variables after a regular SC4S log path is developed for +a given source. You can, of course, continue to listen for this source on the same unique ports after having developed +the new log path, but use the SC4S_LISTEN_<VENDOR_PRODUCT>_<protocol>_PORT form of the variable to ensure the newly +developed log path will listen on the specified unique ports.
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/index.html b/3.4.1/sources/index.html new file mode 100644 index 0000000000..e9ad8c9a4d --- /dev/null +++ b/3.4.1/sources/index.html @@ -0,0 +1,5830 @@ + + + + + + + + + + + + + + + + Read First - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    Introduction

    +

    When using Splunk Connect for Syslog to onboard a data source, the syslog-ng “app-parser” performs the operations that are traditionally performed at index-time by the corresponding Technical Add-on installed there. These index-time operations include linebreaking, source/sourcetype setting and timestamping. For this reason, if a data source is exclusively onboarded using SC4S then you will not need to install its corresponding Add-On on the indexers. You must, however, install the Add-on on the search head(s) for the user communities interested in this data source.

    +

    SC4S is designed to process “syslog” referring to IETF RFC standards 5424, legacy BSD syslog, RFC3164 (Not a standard document), and many “almost” syslog formats.

    +

    When possible data sources are identified and processed based on characteristics of the event that make them unique as compared to other events for example. Cisco devices using IOS will include ” : %” followed by a string. While Arista EOS devices will use a valid RFC3164 header with a value in the “PROGRAM” position with “%” as the first char in the “MESSAGE” portion. This allows two similar event structures to be processed correctly.

    +

    When identification by message content alone is not possible for example the “sshd” program field is commonly used across vendors additional “hint” or guidance configuration allows SC4S to better classify events. The hints can be applied by +definition of a specific port which will be used as a property of the event or by configuration of a host name/ip pattern. For example “VMWARE VSPHERE” products have a number of “PROGRAM” fields which can be used to identify vmware specific events in the syslog stream and these can be properly sourcetyped automatically however because “sshd” is not unique it will be treated as generic “os:nix” events until further configuration is applied. The administrator can take one of two actions to refine the processing for vmware

    +
      +
    • Define a specific port for vmware and reconfigure sources to use the defined port “SC4S_LISTEN_VMWARE_VSPHERE_TCP=9000”. Any events arriving on port 9000 will now have a metadata field attached “.netsource.sc4s_vendor_product=VMWARE_VSPHERE”
    • +
    • Define a “app-parser” to apply the metadata field by using a syslog-ng filter to apply the metadata field.
    • +
    +

    Supporting previously unknown sources

    +

    Many log sources can be supported using one of the flexible options available without specific code known as app-parsers.

    +

    New supported sources are added regularly. Please submit an issue with a description of the vend/product. Configuration information an a compressed pcap (.zip) from a non-production environment to request support for a new source.

    +

    Many sources can be self supported. While we encourage sharing new sources via the github project to promote consistency and develop best-practices there is no requirement to engage in the community.

    +
      +
    • Sources that are compliant with RFC 5424,RFC 5425, RFC 5426, or RFC 6587 can be onboarded as simple sources
    • +
    • Sources “compatible” with RFC3164 Note incorrect use of the syslog version, or “creative” formats in the time stamp or other fields may prevent use as simple sources
    • +
    • Common Event Format CEF Also known as ArcSight format
    • +
    • Log Extended Format LEEF
    • +
    +

    Almost Syslog

    +

    Sources sending legacy non conformant 3164 like streams can be assisted by the creation of an “Almost Syslog” Parser. In an such a parser the goal is to process the syslog header allowing other parsers +to correctly parse and handle the event. The following example is take from a currently supported format where the source product used epoch in the time stamp field.

    +
        #Example event
    +    #<134>1 1563249630.774247467 devicename security_event ids_alerted signature=1:28423:1 
    +    # In the example note the vendor incorrectly included "1" following PRI defined in RFC5424 as indicating a compliant message
    +    # The parser must remove the 1 before properly parsing
    +    # The epoch time is captured by regex
    +    # The epoch time is converted back into an RFC3306 date and provided to the parser
    +    block parser syslog_epoch-parser() {    
    +    channel {
    +            filter { 
    +                message('^(\<\d+\>)(?:1(?= ))? ?(\d{10,13}(?:\.\d+)?) (.*)', flags(store-matches));
    +            };  
    +            parser {             
    +                date-parser(
    +                    format('%s.%f', '%s')
    +                    template("$2")
    +                );
    +            };
    +            parser {
    +                syslog-parser(
    +
    +                    flags(assume-utf8, expect-hostname, guess-timezone)
    +                    template("$1 $S_ISODATE $3")
    +                    );
    +            };
    +            rewrite(set_rfc3164_epoch);                       
    +
    +    };
    +    };
    +    application syslog_epoch[sc4s-almost-syslog] {
    +        parser { syslog_epoch-parser(); };   
    +    };
    +
    + +

    Standard Syslog using message parsing

    +

    Syslog data conforming to RFC3164 or complying with RFC standards mentioned above can be processed with an app-parser allowing the use of the default port +rather than requiring custom ports the following example take from a currently supported source uses the value of “program” to identify the source as this program value is +unique. Care must be taken to write filter conditions strictly enough to not conflict with similar sources

    +
    block parser alcatel_switch-parser() {    
    + channel {
    +        rewrite {
    +            r_set_splunk_dest_default(
    +                index('netops')
    +                sourcetype('alcatel:switch')
    +                vendor('alcatel')
    +                product('switch')
    +                template('t_hdr_msg')
    +            );              
    +        };       
    +
    +
    +   };
    +};
    +application alcatel_switch[sc4s-syslog] {
    + filter { 
    +        program('swlogd' type(string) flags(prefix));
    +    }; 
    +    parser { alcatel_switch-parser(); };   
    +};
    +
    + +

    Standard Syslog vendor product by source

    +

    In some cases standard syslog is also generic and can not be disambiguated from other sources by message content alone. +When this happens and only a single source type is desired the “simple” option above is valid but requires managing a port. +The following example allows use of a named port OR the vendor product by source configuration.

    +
    block parser dell_poweredge_cmc-parser() {    
    + channel {
    +
    +        rewrite {
    +            r_set_splunk_dest_default(
    +                index('infraops')
    +                sourcetype('dell:poweredge:cmc:syslog')
    +                vendor('dell')
    +                product('poweredge')
    +                class('cmc')
    +            );              
    +        };       
    +   };
    +};
    +application dell_poweredge_cmc[sc4s-network-source] {
    + filter { 
    +        ("${.netsource.sc4s_vendor_product}" eq "dell_poweredge_cmc"
    +        or "${SOURCE}" eq "s_DELL_POWEREDGE_CMC")
    +         and "${fields.sc4s_vendor_product}" eq ""
    +    };    
    +
    +    parser { dell_poweredge_cmc-parser(); };   
    +};
    +
    + +

    Filtering events from output

    +

    In some cases specific events may be considered “noise” and functionality must be implemented to prevent forwarding of these events to Splunk +In version 2.0.0 of SC4S a new feature was implemented to improve the ease of use and efficiency of this progress.

    +

    The following example will “null_queue” or drop cisco IOS device events at the debug level. Note Cisco does not use the PRI to indicate DEBUG a message filter is required.

    +
    block parser cisco_ios_debug-postfilter() {
    +    channel {
    +        #In this case the outcome is drop the event other logic such as adding indexed fields or editing the message is possible
    +        rewrite(r_set_dest_splunk_null_queue);
    +   };
    +};
    +application cisco_ios_debug-postfilter[sc4s-postfilter] {
    + filter {
    +        "${fields.sc4s_vendor}" eq "cisco" and
    +        "${fields.sc4s_product}" eq "ios"
    +        #Note regex reads as
    +        # start from first position
    +        # Any atleast 1 char that is not a `-`
    +        # constant '-7-'
    +        and message('^%[^\-]+-7-');
    +    };
    +    parser { cisco_ios_debug-postfilter(); };
    +};
    +
    + +

    Another example to drop events based on “src” and “action” values in message

    +
    #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-checkpoint_drop
    +
    +block parser app-dest-rewrite-checkpoint_drop-d_fmt_hec_default() {    
    +    channel {
    +        rewrite(r_set_dest_splunk_null_queue);
    +    };
    +};
    +
    +application app-dest-rewrite-checkpoint_drop-d_fmt_hec_default[sc4s-lp-dest-format-d_hec_fmt] {
    +    filter {
    +        match('checkpoint' value('fields.sc4s_vendor') type(string))
    +        and match('syslog' value('fields.sc4s_product') type(string))
    +
    +        and match('Drop' value('.SDATA.sc4s@2620.action') type(string))
    +        and match('12.' value('.SDATA.sc4s@2620.src') type(string) flags(prefix) );
    +
    +    };    
    +    parser { app-dest-rewrite-checkpoint_drop-d_fmt_hec_default(); };   
    +};
    +
    + +

    The SC4S “fallback” sourcetype

    +

    If SC4S receives an event on port 514 which has no soup filter, that event will be given a “fallback” sourcetype. If you see events in Splunk with the fallback sourcetype, then you should figure out what source the events are from and determine why these events are not being sourcetyped correctly. The most common reason for events categorized as “fallback” is the lack of a SC4S filter for that source, and in some cases a misconfigured relay which alters the integrity of the message format. In most cases this means a new SC4S filter must be developed. In this situation you can either build a filter or file an issue with the community to request help.

    +

    The “fallback” sourcetype is formatted in JSON to allow the administrator to see the constituent syslog-ng “macros” (fields) that have been automatically parsed by the syslog-ng server An RFC3164 (legacy BSD syslog) “on the wire” raw message is usually (but unfortunately not always) comprised of the following syslog-ng macros, in this order and spacing:

    +
    <$PRI> $HOST $LEGACY_MSGHDR$MESSAGE
    +
    + +

    These fields can be very useful in building a new filter for that sourcetype. In addition, the indexed field sc4s_syslog_format is helpful in determining if the incoming message is standard RFC3164. A value of anything other than rfc3164 or rfc5424_strict indicates a vendor perturbation of standard syslog, which will warrant more careful examination when building a filter.

    +

    Splunk Connect for Syslog and Splunk metadata

    +

    A key aspect of SC4S is to properly set Splunk metadata prior to the data arriving in Splunk (and before any TA processing takes place. The filters will apply the proper index, source, sourcetype, host, and timestamp metadata automatically by individual data source. Proper values for this metadata (including a recommended index) are included with all “out-of-the-box” log paths included with SC4S and are chosen to properly interface with the corresponding TA in Splunk. The administrator will need to ensure all recommended indexes be created to accept this data if the defaults are not changed.

    +

    It is understood that default values will need to be changed in many installations. Each source documented in this section has a table entitled “Sourcetype and Index Configuration”, which highlights the default index and sourcetype for each source. See the section “SC4S metadata configuration” in the “Configuration” page for more information on how to override the default values in this table.

    +

    Unique listening ports

    +

    SC4S supports unique listening ports for each source technology/log path (e.g. Cisco ASA), which is useful when the device is +sending data on a port different from the typical default syslog port (UDP port 514). In some cases, when the source device emits data that +is not able to be distinguished from other device types, a unique port is sometimes required. The specific environment variables used for +setting “unique ports” are outlined in each source document in this section.

    +

    In most cases only one “unique port” is needed for each source. However, SC4S also supports multiple network listening ports per source, +which can be useful for a narrow set of compliance use cases. When configuring a source port variable to enable multiple ports, use a +comma-separated list with no spaces (e.g. SC4S_LISTEN_CISCO_ASA_UDP_PORT=5005,6005).

    +

    Filtering by an extra product description

    +

    Due to the fact that unique listening port feature differentiate vendor and product based on the first two underscore characters (‘_’), it is possible +to filter events by an extra string added to the product. +For example in case of having several devices of the same type sending logs over different ports it is possible to route it to different indexes based only on port value while retaining proper +vendor and product fields. +In general, it follows convention:

    +
    SC4S_LISTEN_{VENDOR}_{PRODUCT}_{PROTOCOL}_PORT={PORT VALUE 1},{PORT VALUE 2}...
    +
    + +

    But for special use cases it can be extended to:

    +
    SC4S_LISTEN_{VENDOR}_{PRODUCT}_{ADDITIONAL_STRING}_{PROTOCOL}_PORT={PORT VALUE},{PORT VALUE 2}...
    +
    + +

    This feature removes the need for complex pre/post filters.

    +

    Example:

    +
    SC4S_LISTEN_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01-001_UDP_PORT=18514
    +
    +sets:
    +vendor = < example vendor >
    +product = < example product >
    +tag = .source.s_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01-001
    +
    + +
    SC4S_LISTEN_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01-002_UDP_PORT=28514
    +
    +sets:
    +vendor = < example vendor >
    +product = < example product >
    +tag = .source.s_EAMPLEVENDOR_EXAMPLEPRODUCT_GROUP01-002
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/AVI/index.html b/3.4.1/sources/vendor/AVI/index.html new file mode 100644 index 0000000000..3343bca6c5 --- /dev/null +++ b/3.4.1/sources/vendor/AVI/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Common - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Common

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualhttps://avinetworks.com/docs/latest/syslog-formats/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    avi:eventsNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    avi_vantageavi:eventsnetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Alcatel/Switch/index.html b/3.4.1/sources/vendor/Alcatel/Switch/index.html new file mode 100644 index 0000000000..78640ebc5b --- /dev/null +++ b/3.4.1/sources/vendor/Alcatel/Switch/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Switch - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Switch

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    alcatel:switchNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    alcatel_switchalcatel:switchnetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Alsid/Alsid/index.html b/3.4.1/sources/vendor/Alsid/Alsid/index.html new file mode 100644 index 0000000000..1c50374b49 --- /dev/null +++ b/3.4.1/sources/vendor/Alsid/Alsid/index.html @@ -0,0 +1,5569 @@ + + + + + + + + + + + + + + + + Alsid - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Alsid

    +

    The product has been purchased and republished under a new product name by Tenable this configuration +is obsolete.

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/5173/
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    alsid:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    alsid_syslogalsid:syslogoswinsecnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Arista/index.html b/3.4.1/sources/vendor/Arista/index.html new file mode 100644 index 0000000000..df3f7ae5ec --- /dev/null +++ b/3.4.1/sources/vendor/Arista/index.html @@ -0,0 +1,5573 @@ + + + + + + + + + + + + + + + + EOS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    EOS

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    arista:eos:*None
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    arista_eosarista:eosnetopsnone
    arista_eos_$PROCESSNAMEarista:eosqnetopsThe “process” field is used from the event
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Aruba/ap/index.html b/3.4.1/sources/vendor/Aruba/ap/index.html new file mode 100644 index 0000000000..25dbe12471 --- /dev/null +++ b/3.4.1/sources/vendor/Aruba/ap/index.html @@ -0,0 +1,5603 @@ + + + + + + + + + + + + + + + + Access Points - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Access Points

    +

    Key facts

    +
      +
    • MSG Format based filter (Partial)
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    aruba:syslogDynamically Created
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    aruba_apnetopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-aruba_ap.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-aruba_ap[sc4s-vps] {
    + filter { 
    +        host("aruba-ap-*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('aruba')
    +            product('ap')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Aruba/clearpass/index.html b/3.4.1/sources/vendor/Aruba/clearpass/index.html new file mode 100644 index 0000000000..46d20017ee --- /dev/null +++ b/3.4.1/sources/vendor/Aruba/clearpass/index.html @@ -0,0 +1,5603 @@ + + + + + + + + + + + + + + + + Clearpass - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Clearpass

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    aruba:clearpassDynamically Created
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    aruba_clearpassnetopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-aruba_clearpass.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-aruba_clearpass[sc4s-vps] {
    + filter { 
    +        host("aruba-cp-*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('aruba')
    +            product('clearpass')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Avaya/index.html b/3.4.1/sources/vendor/Avaya/index.html new file mode 100644 index 0000000000..a64fcdf6e1 --- /dev/null +++ b/3.4.1/sources/vendor/Avaya/index.html @@ -0,0 +1,5568 @@ + + + + + + + + + + + + + + + + SIP Manager - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    SIP Manager

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514/UDP
    • +
    • Vendor source is not conformant to RFC3194 by improperly sending unescaped \n Use of TCP will cause dataloss
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    avaya:avayaNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    avaya_sipmgravaya:avayamainnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Barracuda/waf/index.html b/3.4.1/sources/vendor/Barracuda/waf/index.html new file mode 100644 index 0000000000..51a85f6d93 --- /dev/null +++ b/3.4.1/sources/vendor/Barracuda/waf/index.html @@ -0,0 +1,5598 @@ + + + + + + + + + + + + + + + + WAF (Cloud) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    WAF (Cloud)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • RFC 5424 Framed
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualhttps://campus.barracuda.com/product/WAAS/doc/79462622/log-export
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    barracuda:trnone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    barracuda_wafbarracuda:web:firewallnetwafNone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-barracuda_syslog.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-barracuda_syslog[sc4s-vps] {
    + filter {      
    +        netmask(169.254.100.1/24)
    +        or host("barracuda" type(string) flags(ignore-case))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('barracuda')
    +            product('syslog')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Barracuda/waf_on_prem/index.html b/3.4.1/sources/vendor/Barracuda/waf_on_prem/index.html new file mode 100644 index 0000000000..ca8f8fc79e --- /dev/null +++ b/3.4.1/sources/vendor/Barracuda/waf_on_prem/index.html @@ -0,0 +1,5607 @@ + + + + + + + + + + + + + + + + Barracuda WAF (On Premises) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Barracuda WAF (On Premises)

    +

    Key facts

    +
      +
    • RFC 5424 Framed with non-standard ISO timestamp: %Y-%m-%d %H:%M:%S.%f %z
    • +
    • MSG Format based filter
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3776
    Product Manualhttps://campus.barracuda.com/product/webapplicationfirewall/doc/92767349/exporting-log-formats/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    barracuda:systemprogram(“SYS”)
    barracuda:wafprogram(“WF”)
    barracuda:webprogram(“TR”)
    barracuda:auditprogram(“AUDIT”)
    barracuda:firewallprogram(“NF”)
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    barracuda_systembarracuda:systemnetwafNone
    barracuda_wafbarracuda:wafnetwafNone
    barracuda_webbarracuda:webnetwafNone
    barracuda_auditbarracuda:auditnetwafNone
    barracuda_firewallbarracuda:firewallnetwafNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/BeyondTrust/sra/index.html b/3.4.1/sources/vendor/BeyondTrust/sra/index.html new file mode 100644 index 0000000000..156a444456 --- /dev/null +++ b/3.4.1/sources/vendor/BeyondTrust/sra/index.html @@ -0,0 +1,5603 @@ + + + + + + + + + + + + + + + + Secure Remote Access (Bomgar) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Secure Remote Access (Bomgar)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    beyondtrust:sraNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    beyondtrust_srabeyondtrust:srainfraopsnone
    +

    Options

    + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_DEST_BEYONDTRUST_SRA_SPLUNK_HEC_FMTJSONRestructure data from vendor format to json for splunk destinations set to “NONE” for native format
    SC4S_DEST_BEYONDTRUST_SRA_SYSLOG_FMTSDATARestructure data from vendor format to SDATA for SYSLOG destinations set to “NONE” for native ormat
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Broadcom/brightmail/index.html b/3.4.1/sources/vendor/Broadcom/brightmail/index.html new file mode 100644 index 0000000000..08ffb5ecca --- /dev/null +++ b/3.4.1/sources/vendor/Broadcom/brightmail/index.html @@ -0,0 +1,5608 @@ + + + + + + + + + + + + + + + + Brightmail - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Brightmail

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onTBD
    Product Manualhttps://support.symantec.com/us/en/article.howto38250.html
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    symantec:smgRequires version TA 3.6
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    symantec_brightmailsymantec:smgemailnone
    +

    Options

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_SOURCE_FF_SYMANTEC_BRIGHTMAIL_GROUPMSGyesEmail processing events generated by the bmserver process will be grouped by host+program+pid+msg ID into a single event
    SC4S_DEST_SYMANTEC_BRIGHTMAIL_SPLUNK_HEC_FMTemptyif “JSON” and GROUPMSG is enabled format the event in json
    SC4S_DEST_SYMANTEC_BRIGHTMAIL_SYSLOG_FMTemptyif “SDATA” and GROUPMSG is enabled format the event in rfc5424 sdata
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Broadcom/dlp/index.html b/3.4.1/sources/vendor/Broadcom/dlp/index.html new file mode 100644 index 0000000000..eee73ccf51 --- /dev/null +++ b/3.4.1/sources/vendor/Broadcom/dlp/index.html @@ -0,0 +1,5674 @@ + + + + + + + + + + + + + + + + Symantec DLP - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    Symantec DLP

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on Symatec DLPhttps://splunkbase.splunk.com/app/3029/
    Source dochttps://knowledge.broadcom.com/external/article/159509/generating-syslog-messages-from-data-los.html
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    symantec:dlp:syslogNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    symantec_dlpsymantec:dlp:syslognetdlpnone
    +

    Option 1: Correct Source syslog formats

    +

    Syslog Alert Response

    +

    Login to Symantec DLP and edit the Syslog Response rule. The default configuration will appear as follows

    +
    $POLICY$^^$INCIDENT_ID$^^$SUBJECT$^^$SEVERITY$^^$MATCH_COUNT$^^$RULES$^^$SENDER$^^$RECIPIENTS$^^$BLOCKED$^^$FILE_NAME$^^$PARENT_PATH$^^$SCAN$^^$TARGET$^^$PROTOCOL$^^$INCIDENT_SNAPSHOT$
    +
    + +

    DO NOT replace the text prepend the following literal

    +
    SymantecDLPAlert: 
    +
    + +

    Result note the space between ‘:’ and ‘$’

    +
    SymantecDLPAlert: $POLICY$^^$INCIDENT_ID$^^$SUBJECT$^^$SEVERITY$^^$MATCH_COUNT$^^$RULES$^^$SENDER$^^$RECIPIENTS$^^$BLOCKED$^^$FILE_NAME$^^$PARENT_PATH$^^$SCAN$^^$TARGET$^^$PROTOCOL$^^$INCIDENT_SNAPSHOT$
    +
    + +

    Syslog System events

    +
      +
    • Navigate to the installed directory, for example <drive>:\SymantecDLP\Protect\config directory on Windows or the /opt/SymantecDLP/Protect/config directory on Linux.
    • +
    • Open the Manager.properties file.
    • +
    • Comment out any uncommented line starting with systemevent.syslog.format
    • +
    • Add the following line systemevent.syslog.format= {0.EN_US} SymantecDLP: {1.EN_US} - {2.EN_US}
    • +
    • Restart symantec DLP
    • +
    +

    Option 2: Manual Vendor Product by source Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-symantec_dlp.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-symantec_dlp[sc4s-vps] {
    + filter {      
    +        #netmask(169.254.100.1/24)
    +        #host("-esx-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('symantec')
    +            product('dlp')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Broadcom/ep/index.html b/3.4.1/sources/vendor/Broadcom/ep/index.html new file mode 100644 index 0000000000..6b57f9c3ee --- /dev/null +++ b/3.4.1/sources/vendor/Broadcom/ep/index.html @@ -0,0 +1,5614 @@ + + + + + + + + + + + + + + + + Symantec Endpoint Protection (SEPM) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Symantec Endpoint Protection (SEPM)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    • KNOWN DATA LOSS ISSUE - The implementation of the syslog output component causes a “burst” behavior when run on schedule this burst can be larger than the udp buffer size on the source and or destination (sc4s) there is no possible workaround and the use of the Splunk Universal Forwarder to monitor file based output is recommended.
    • +
    +

    Product - Symantec Endpoint Protection

    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2772/
    Product Manualhttps://techdocs.broadcom.com/content/broadcom/techdocs/us/en/symantec-security-software/endpoint-security-and-management/endpoint-protection/all/Monitoring-Reporting-and-Enforcing-Compliance/viewing-logs-v7522439-d37e464/exporting-data-to-a-syslog-server-v8442743-d15e1107.html
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    symantec:ep:syslogWarning the syslog method of accepting EP logs has been reported to show high data loss and is not Supported by Splunk
    symantec:ep:admin:syslognone
    symantec:ep:agent:syslognone
    symantec:ep:agt:system:syslognone
    symantec:ep:behavior:syslognone
    symantec:ep:packet:syslognone
    symantec:ep:policy:syslognone
    symantec:ep:proactive:syslognone
    symantec:ep:risk:syslognone
    symantec:ep:scan:syslognone
    symantec:ep:scm:system:syslognone
    symantec:ep:security:syslognone
    symantec:ep:traffic:syslognone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    symantec_epepavnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Broadcom/proxy/index.html b/3.4.1/sources/vendor/Broadcom/proxy/index.html new file mode 100644 index 0000000000..b11dcf432e --- /dev/null +++ b/3.4.1/sources/vendor/Broadcom/proxy/index.html @@ -0,0 +1,5604 @@ + + + + + + + + + + + + + + + + ProxySG/ASG - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    ProxySG/ASG

    +

    Symantec now Broadcom ProxySG/ASG is formerly known as the “Bluecoat” proxy

    +

    Broadcom products are inclusive of products formerly marketed under Symantec and Bluecoat brands.

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • The standard/default bluecoat syslog configurations are NOT supported a SC4S specific configuration is provided below
    • +
    • RFC5424 without IETF Frame must use 514/TCP or 6514/TLS
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2758/
    Product Manualhttps://support.symantec.com/us/en/article.tech242216.html
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    bluecoat:proxysg:access:kvRequires version TA 3.6
    bluecoat:proxysg:syslogRequires version TA 3.6
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    bluecoat_proxybluecoat:proxysg:syslognetopsnone
    bluecoat_proxy_splunkkvbluecoat:proxysg:access:kvnetproxynone
    +

    Setup and Configuration

    +
      +
    • Refer to the Splunk TA documentation for the specific customer format required for proxy configuration
        +
      • Select TCP or SSL transport option
      • +
      • Ensure the format of the event is customized as follows
      • +
      +
    • +
    +
    <111>1 $(date)T$(x-bluecoat-hour-utc):$(x-bluecoat-minute-utc):$(x-bluecoat-second-utc)Z $(s-computername) ProxySG - splunk_format - c-ip=$(c-ip) rs-Content-Type=$(quot)$(rs(Content-Type))$(quot)  cs-auth-groups=$(cs-auth-groups) cs-bytes=$(cs-bytes) cs-categories=$(cs-categories) cs-host=$(cs-host) cs-ip=$(cs-ip) cs-method=$(cs-method) cs-uri-port=$(cs-uri-port) cs-uri-scheme=$(cs-uri-scheme) cs-User-Agent=$(quot)$(cs(User-Agent))$(quot) cs-username=$(cs-username) dnslookup-time=$(dnslookup-time) duration=$(duration) rs-status=$(rs-status) rs-version=$(rs-version) s-action=$(s-action) s-ip=$(s-ip) service.name=$(service.name) service.group=$(service.group) s-supplier-ip=$(s-supplier-ip) s-supplier-name=$(s-supplier-name) sc-bytes=$(sc-bytes) sc-filter-result=$(sc-filter-result) sc-status=$(sc-status) time-taken=$(time-taken) x-exception-id=$(x-exception-id) x-virus-id=$(x-virus-id) c-url=$(quot)$(url)$(quot) cs-Referer=$(quot)$(cs(Referer))$(quot) c-cpu=$(c-cpu) connect-time=$(connect-time) cs-auth-groups=$(cs-auth-groups) cs-headerlength=$(cs-headerlength) cs-threat-risk=$(cs-threat-risk) r-ip=$(r-ip) r-supplier-ip=$(r-supplier-ip) rs-time-taken=$(rs-time-taken) rs-server=$(rs(server)) s-connect-type=$(s-connect-type) s-icap-status=$(s-icap-status) s-sitename=$(s-sitename) s-source-port=$(s-source-port) s-supplier-country=$(s-supplier-country) sc-Content-Encoding=$(sc(Content-Encoding)) sr-Accept-Encoding=$(sr(Accept-Encoding)) x-auth-credential-type=$(x-auth-credential-type) x-cookie-date=$(x-cookie-date) x-cs-certificate-subject=$(x-cs-certificate-subject) x-cs-connection-negotiated-cipher=$(x-cs-connection-negotiated-cipher) x-cs-connection-negotiated-cipher-size=$(x-cs-connection-negotiated-cipher-size) x-cs-connection-negotiated-ssl-version=$(x-cs-connection-negotiated-ssl-version) x-cs-ocsp-error=$(x-cs-ocsp-error) x-cs-Referer-uri=$(x-cs(Referer)-uri) x-cs-Referer-uri-address=$(x-cs(Referer)-uri-address) x-cs-Referer-uri-extension=$(x-cs(Referer)-uri-extension) x-cs-Referer-uri-host=$(x-cs(Referer)-uri-host) x-cs-Referer-uri-hostname=$(x-cs(Referer)-uri-hostname) x-cs-Referer-uri-path=$(x-cs(Referer)-uri-path) x-cs-Referer-uri-pathquery=$(x-cs(Referer)-uri-pathquery) x-cs-Referer-uri-port=$(x-cs(Referer)-uri-port) x-cs-Referer-uri-query=$(x-cs(Referer)-uri-query) x-cs-Referer-uri-scheme=$(x-cs(Referer)-uri-scheme) x-cs-Referer-uri-stem=$(x-cs(Referer)-uri-stem) x-exception-category=$(x-exception-category) x-exception-category-review-message=$(x-exception-category-review-message) x-exception-company-name=$(x-exception-company-name) x-exception-contact=$(x-exception-contact) x-exception-details=$(x-exception-details) x-exception-header=$(x-exception-header) x-exception-help=$(x-exception-help) x-exception-last-error=$(x-exception-last-error) x-exception-reason=$(x-exception-reason) x-exception-sourcefile=$(x-exception-sourcefile) x-exception-sourceline=$(x-exception-sourceline) x-exception-summary=$(x-exception-summary) x-icap-error-code=$(x-icap-error-code) x-rs-certificate-hostname=$(x-rs-certificate-hostname) x-rs-certificate-hostname-category=$(x-rs-certificate-hostname-category) x-rs-certificate-observed-errors=$(x-rs-certificate-observed-errors) x-rs-certificate-subject=$(x-rs-certificate-subject) x-rs-certificate-validate-status=$(x-rs-certificate-validate-status) x-rs-connection-negotiated-cipher=$(x-rs-connection-negotiated-cipher) x-rs-connection-negotiated-cipher-size=$(x-rs-connection-negotiated-cipher-size) x-rs-connection-negotiated-ssl-version=$(x-rs-connection-negotiated-ssl-version) x-rs-ocsp-error=$(x-rs-ocsp-error) cs-uri-extension=$(cs-uri-extension) cs-uri-path=$(cs-uri-path) cs-uri-query=$(quot)$(cs-uri-query)$(quot) c-uri-pathquery=$(c-uri-pathquery)
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Broadcom/sslva/index.html b/3.4.1/sources/vendor/Broadcom/sslva/index.html new file mode 100644 index 0000000000..2eb70c8be4 --- /dev/null +++ b/3.4.1/sources/vendor/Broadcom/sslva/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + SSL Visibility Appliance - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Brocade/switch/index.html b/3.4.1/sources/vendor/Brocade/switch/index.html new file mode 100644 index 0000000000..0437eaebda --- /dev/null +++ b/3.4.1/sources/vendor/Brocade/switch/index.html @@ -0,0 +1,5597 @@ + + + + + + + + + + + + + + + + Switch - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Switch

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    +

    Product - Switches

    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    brocade:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    brocade_syslogbrocade:syslognetopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app_parsers/app-vps-brocade_syslog.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-brocade_syslog[sc4s-vps] {
    + filter { 
    +        host("^test_brocade-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('brocade')
    +            product('syslog')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Buffalo/index.html b/3.4.1/sources/vendor/Buffalo/index.html new file mode 100644 index 0000000000..0b38b279ab --- /dev/null +++ b/3.4.1/sources/vendor/Buffalo/index.html @@ -0,0 +1,5597 @@ + + + + + + + + + + + + + + + + Terastation - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Terastation

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    buffalo:terastationNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    buffalo_terastationbuffalo:terastationinfraopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-buffalo_terastation.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-buffalo_terastation[sc4s-vps] {
    + filter { 
    +        host("^test_buffalo_terastation-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('buffalo')
    +            product('terastation')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Checkpoint/firewallos/index.html b/3.4.1/sources/vendor/Checkpoint/firewallos/index.html new file mode 100644 index 0000000000..e411a0ca6d --- /dev/null +++ b/3.4.1/sources/vendor/Checkpoint/firewallos/index.html @@ -0,0 +1,5579 @@ + + + + + + + + + + + + + + + + Firewall OS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Firewall OS

    +

    Firewall OS format is by devices supporting a direct Syslog output

    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cp_log:fw:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    checkpoint_fwcp_log:fw:syslognetopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-checkpoint_fw.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-checkpoint_fw[sc4s-vps] {
    + filter { 
    +        host("^checkpoint_fw-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('checkpoint')
    +            product('fw')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Checkpoint/logexporter_5424/index.html b/3.4.1/sources/vendor/Checkpoint/logexporter_5424/index.html new file mode 100644 index 0000000000..be32c22466 --- /dev/null +++ b/3.4.1/sources/vendor/Checkpoint/logexporter_5424/index.html @@ -0,0 +1,5695 @@ + + + + + + + + + + + + + + + + Log Exporter (Syslog) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Log Exporter (Syslog)

    +

    Key Facts

    +
      +
    • As of 2/1/2022 The Log Exporter configuration provided by CheckPoint is defective and produces invalid data the configuration below is REQUIRED
    • +
    • MSG Format based filter
    • +
    • RFC5424 without frame use port 514 TCP
    • +
    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on
    Product Manualhttps://sc1.checkpoint.com/documents/App_for_Splunk/html_frameset.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cp_log:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    checkpoint_syslogcp_log:syslognetopsnone
    +

    Source and Index Configuration

    +

    Checkpoint Software blades with CIM mapping have been sub-grouped into sources +to allow routing to appropriate indexes. All other source meta data is left at default

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    checkpoint_syslog_dlpdlpnetdlpnone
    checkpoint_syslog_emailemailemailnone
    checkpoint_syslog_firewallfirewallnetfwnone
    checkpoint_syslog_sessionssessionsnetopsnone
    checkpoint_syslog_webwebnetproxynone
    checkpoint_syslog_auditauditnetopsnone
    checkpoint_syslog_endpointendpointnetopsnone
    checkpoint_syslog_networknetworknetops
    checkpoint_syslog_idsidsnetids
    checkpoint_syslog_ids_malwareids_malwarenetids
    +

    Source Configuration

    +
      +
    • Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer.
    • +
    • Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source.
    • +
    • To configure the valid syslog format in Checkpoint, follow the steps below
    • +
    • Go to the cp terminal
    • +
    • Enter expert command for login in expert mode
    • +
    • Enter cd $EXPORTERDIR
    • +
    • In this directory check targets if it’s empty then configure a new target for the logs with help of below command
    • +
    • cp_log_export add name target-server target-port protocol <(udp|tcp)> format <(syslog)|(cef)|(splunk)(generic)>
    • +
    • Then navigate to conf directory
    • +
    • Execute cp SyslogFormatDefinition.xml SplunkRecommendedFormatDefinition.xml
    • +
    • Open SplunkRecommendedFormatDefinition.xml in edit mode and modify the start_message_body,fields_separator,field_value_separator as shown below.
    • +
    +
    <start_message_body>[sc4s@2620 </start_message_body>
    +
    + +
    <fields_separator> </fields_separator>
    +
    + +
    <field_value_separator>=</field_value_separator>
    +
    + +
      +
    • Copy SplunkRecommendedFormatDefinition.xml into $EXPORTERDIR/targets//conf
    • +
    • Navigate to the configuration file $EXPORTERDIR/targets//targetConfiguration.xml and open it in edit mode.
    • +
    • Add the reference to the SplunkRecommendedFormatDefinition.xml under the key . For example, if $EXPORTERDIR=/opt/CPrt-R81/log_exporter, the absolute path will become:
    • +
    +
    <formatHeaderFile>/opt/CPrt-R81/log_exporter/targets/<your_log_exporter>/conf/SplunkRecommendedFormatDefinition.xml</formatHeaderFile>
    +
    + +
      +
    • +

      Restart cp_log_exporter by executing the command cp_log_export restart name

      +
    • +
    • +

      Warning: Make sure if you migrating to different format, the earlier format is disabled or else it would lead to data duplication.

      +
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Checkpoint/logexporter_legacy/index.html b/3.4.1/sources/vendor/Checkpoint/logexporter_legacy/index.html new file mode 100644 index 0000000000..bd64137ac0 --- /dev/null +++ b/3.4.1/sources/vendor/Checkpoint/logexporter_legacy/index.html @@ -0,0 +1,5708 @@ + + + + + + + + + + + + + + + + Log Exporter (Splunk) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Log Exporter (Splunk)

    +

    The “Splunk Format” is legacy and should not be used for new deployments see Log Exporter (Syslog)

    +

    Key Facts

    +
      +
    • Format is not conformant to RFC3164 avoid use
    • +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    +

    The Splunk host field will be derived as follows using the first match

    +
      +
    • Use the hostname field
    • +
    • Use the first CN component of origin_sic_name/originsicname
    • +
    • If host is not set from CN use the hostname field
    • +
    • If host is not set use the BSD syslog header host
    • +
    +

    If the host is in the format <host>-v_<bladename> use bladename for host

    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4293/
    Product Manualhttps://sc1.checkpoint.com/documents/App_for_Splunk/html_frameset.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cp_logNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    checkpoint_splunkcp_lognetopsnone
    +

    Source and Index Configuration

    +

    Checkpoint Software blades with CIM mapping have been sub-grouped into sources +to allow routing to appropriate indexes. All other source meta data is left at default

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    checkpoint_splunk_dlpdlpnetdlpnone
    checkpoint_splunk_emailemailemailnone
    checkpoint_splunk_firewallfirewallnetfwnone
    checkpoint_splunk_osprogram:${program}netopsnone
    checkpoint_splunk_sessionssessionsnetopsnone
    checkpoint_splunk_webwebnetproxynone
    checkpoint_splunk_auditauditnetopsnone
    checkpoint_splunk_endpointendpointnetopsnone
    checkpoint_splunk_networknetworknetops
    checkpoint_splunk_idsidsnetids
    checkpoint_splunk_ids_malwareids_malwarenetids
    +

    Options

    + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_CHECKPOINT_SPLUNK_NOISE_CONTROLnoSuppress any duplicate product+loguid pairs processed within 2 seconds of the last matching event
    SC4S_LISTEN_CHECKPOINT_SPLUNK_OLD_HOST_RULESempty stringwhen set to yes reverts host name selection order to originsicname–>origin_sic_name–>hostname
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_ace/index.html b/3.4.1/sources/vendor/Cisco/cisco_ace/index.html new file mode 100644 index 0000000000..cfe78d0ba1 --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_ace/index.html @@ -0,0 +1,5563 @@ + + + + + + + + + + + + + + + + Application Control Engine (ACE) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Application Control Engine (ACE)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:aceNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_acecisco:acenetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_acs/index.html b/3.4.1/sources/vendor/Cisco/cisco_acs/index.html new file mode 100644 index 0000000000..e29541e60c --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_acs/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + Cisco Access Control System (ACS) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cisco Access Control System (ACS)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/1811/
    Product Manualhttps://community.cisco.com/t5/security-documents/acs-5-x-configuring-the-external-syslog-server/ta-p/3143143
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:acsAggregation used
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_acscisco:acsnetauthNone
    +

    Splunk Setup and Configuration

    +
      +
    • Replace the following extract using Splunk local configuration. Impacts version 1.5.0 of the addond
    • +
    +
    EXTRACT-AA-signature = CSCOacs_(?<signature>\S+):?
    +# Note the value of this config is empty to disable
    +EXTRACT-AA-syslog_message = 
    +EXTRACT-acs_message_header2 = ^CSCOacs_\S+\s+(?<log_session_id>\S+)\s+(?<total_segments>\d+)\s+(?<segment_number>\d+)\s+(?<acs_message>.*)
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_asa/index.html b/3.4.1/sources/vendor/Cisco/cisco_asa/index.html new file mode 100644 index 0000000000..7d22fe1d57 --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_asa/index.html @@ -0,0 +1,5579 @@ + + + + + + + + + + + + + + + + ASA/FTD (Firepower) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    ASA/FTD (Firepower)

    +

    Key facts

    +
      +
    • Note Splunk “ASA” TA is also used for FTD appliances
    • +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    +

    Links

    + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on for ASA (No long supports FWSM and PIX)https://splunkbase.splunk.com/app/1620/
    Cisco eStreamer for Splunkhttps://splunkbase.splunk.com/app/1629/
    Product Manualhttps://www.cisco.com/c/en/us/support/docs/security/pix-500-series-security-appliances/63884-config-asa-00.html
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:asacisco FTD Firepower will also use this source type except those noted below
    cisco:ftdcisco FTD Firepower will also use this source type except those noted below
    cisco:fwsmSplunk has
    cisco:pixcisco PIX will also use this source type except those noted below
    cisco:firepower:syslogFTD Unified events see https://www.cisco.com/c/en/us/td/docs/security/firepower/Syslogs/b_fptd_syslog_guide.pdf
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_asacisco:asanetfwnone
    cisco_fwsmcisco:fwsmnetfwnone
    cisco_pixcisco:pixnetfwnone
    cisco_firepowercisco:firepower:syslognetidsnone
    cisco_ftdcisco:ftdnetfwnone
    +

    Source Setup and Configuration

    +
      +
    • Follow vendor configuration steps per Product Manual above ensure:
    • +
    • Log Level is 6 “Informational”
    • +
    • Protocol is TCP/IP
    • +
    • permit-hostdown is on
    • +
    • device-id is hostname and included
    • +
    • timestamp is included
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_dna/index.html b/3.4.1/sources/vendor/Cisco/cisco_dna/index.html new file mode 100644 index 0000000000..385efc768c --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_dna/index.html @@ -0,0 +1,5598 @@ + + + + + + + + + + + + + + + + Digital Network Area(DNA) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Digital Network Area(DNA)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • rfc5424 default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:dnaNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_dnacisco:dnanetopsNone
    +

    SC4S Options

    + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_SOURCE_CISCO_DNA_FIXHOSTyesCurrent firmware incorrectly sends the value of the syslog server host name (destination) in the host field if this is ever corrected this value will need to be set back to no we suggest using yes
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_esa/index.html b/3.4.1/sources/vendor/Cisco/cisco_esa/index.html new file mode 100644 index 0000000000..cad4ccba58 --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_esa/index.html @@ -0,0 +1,5740 @@ + + + + + + + + + + + + + + + + Email Security Appliance (ESA) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Email Security Appliance (ESA)

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/1761/
    Product Manualhttps://www.cisco.com/c/en/us/td/docs/security/esa/esa14-0/user_guide/b_ESA_Admin_Guide_14-0.pdf
    +

    ESA Log Configuration

    +

    If feasible for you, you can use following log configuration on the ESA. +The log name configured on the ESA can then be parsed easily by sc4s.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ESA Log NameESA Log Type
    sc4s_gui_logsHTTP Logs
    sc4s_mail_logsIronPort Text Mail Logs
    sc4s_ampAMP Engine Logs
    sc4s_audit_logsAudit Logs
    sc4s_antispamAnti-Spam Logs
    sc4s_content_scannerContent Scanner Logs
    sc4s_error_logsIronPort Text Mail Logs (Loglevel: Critical)
    sc4s_system_logsSystem Logs
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:esa:httpThe HTTP logs of Cisco IronPort ESA record information about the secure HTTP services enabled on the interface.
    cisco:esa:textmailText mail logs of Cisco IronPort ESA record email information and status.
    cisco:esa:ampAdvanced Malware Protection (AMP) of Cisco IronPort ESA records malware detection and blocking, continuous analysis, and retrospective alerting details.
    cisco:esa:authenticationThese logs record successful user logins and unsuccessful login attempts.
    cisco:esa:cefThe Consolidated Event Logs summarizes each message event in a single log line.
    cisco:esa:error_logsError logs of Cisco IronPort ESA records error that occurred for ESA configurations or internal issues.
    cisco:esa:content_scannerContent scanner logs of Cisco IronPort ESA scans messages that contain password-protected attachments for
    malicious activity and data privacy.
    cisco:esa:antispamAnti-spam logs record the status of the anti-spam scanning feature of your system, including the status on receiving updates of the latest anti-spam rules. Also, any logs related to the Context Adaptive Scanning Engine are logged here.
    cisco:esa:system_logsSystem logs record the boot information, virtual appliance license expiration alerts, DNS status information, and comments users typed using commit command.
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_esacisco:esa:httpemailNone
    cisco_esacisco:esa:textmailemailNone
    cisco_esacisco:esa:ampemailNone
    cisco_esacisco:esa:authenticationemailNone
    cisco_esacisco:esa:cefemailNone
    cisco_esacisco:esa:error_logsemailNone
    cisco_esacisco:esa:content_scanneremailNone
    cisco_esacisco:esa:antispamemailNone
    cisco_esacisco:esa:system_logsemailNone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-cisco_esa.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-cisco_esa[sc4s-vps] {
    + filter { 
    +        host("^esa-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('cisco')
    +            product('esa')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_imc/index.html b/3.4.1/sources/vendor/Cisco/cisco_imc/index.html new file mode 100644 index 0000000000..46260bafab --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_imc/index.html @@ -0,0 +1,5552 @@ + + + + + + + + + + + + + + + + Cisco Integrated Management Controller (IMC) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cisco Integrated Management Controller (IMC)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:ucmNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_cimccisco:infraopsinfraopsNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_ios/index.html b/3.4.1/sources/vendor/Cisco/cisco_ios/index.html new file mode 100644 index 0000000000..8caa9b2fb0 --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_ios/index.html @@ -0,0 +1,5666 @@ + + + + + + + + + + + + + + + + Cisco Networking (IOS and Compatible) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cisco Networking (IOS and Compatible)

    +

    Cisco Network Products of multiple types share common logging characteristics the following types are known to be compatible:

    +
      +
    • Cisco AireOS (AP & WLC)
    • +
    • Cisco APIC/ACI
    • +
    • Cisco IOS
    • +
    • Cisco IOS-XR
    • +
    • Cisco IOS-XE
    • +
    • Cisco NX-OS
    • +
    • Cisco FX-OS
    • +
    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/1467/
    IOS Manualhttps://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst2960/software/release/12-2_55_se/configuration/guide/scg_2960/swlog.html
    NX-OS Manualhttps://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus9000/sw/6-x/system_management/configuration/guide/b_Cisco_Nexus_9000_Series_NX-OS_System_Management_Configuration_Guide/sm_5syslog.html
    Cisco ACIhttps://community.cisco.com/legacyfs/online/attachments/document/technote-aci-syslog_external-v1.pdf
    Cisco WLC & APhttps://www.cisco.com/c/en/us/support/docs/wireless/4100-series-wireless-lan-controllers/107252-WLC-Syslog-Server.html#anc8
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:iosThis source type is also used for NX-OS, ACI and WLC product lines
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_ioscisco:iosnetopsnone
    +

    Filter type

    +
      +
    • Cisco IOS products can be identified by message parsing alone
    • +
    • Cisco WLC, and ACI products must be identified by host or ip assignment update the filter f_cisco_ios as required
    • +
    +

    Setup and Configuration

    +
      +
    • IOS Follow vendor configuration steps per Product Manual above ensure:
    • +
    • Ensure a reliable NTP server is set and synced
    • +
    • Log Level is 6 “Informational”
    • +
    • Protocol is TCP/IP
    • +
    • permit-hostdown is on
    • +
    • device-id is hostname and included
    • +
    • timestamp is included
    • +
    • NX-OS Follow vendor configuration steps per Product Manual above ensure:
    • +
    • Ensure a reliable NTP server is set and synced
    • +
    • Log Level is 6 “Informational” user may select alternate levels by module based on use cases
    • +
    • Protocol is TCP/IP
    • +
    • device-id is hostname and included
    • +
    • timestamp is included and millisecond accuracy selected
    • +
    • ACI Logging configuration of the ACI product often varies by use case.
    • +
    • Ensure NTP sync is configured and active
    • +
    • Ensure proper host names are configured
    • +
    • WLC
    • +
    • Ensure NTP sync is configured and active
    • +
    • Ensure proper host names are configured
    • +
    • For security use cases per AP logging is required
    • +
    +

    If you want to send raw logs to splunk (without any drop) then only use this feature +Please set following property in env_file:

    +
    SC4S_ENABLE_CISCO_IOS_RAW_MSG=yes
    +
    + +

    Restart SC4S and it will send entire message without any drop.

    +
      +
    • NOTE: Please use this feature only when there is a special need to get entire raw message. This is not supported by splunk.
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_ise/index.html b/3.4.1/sources/vendor/Cisco/cisco_ise/index.html new file mode 100644 index 0000000000..b5c57095cd --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_ise/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + Cisco ise - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cisco ise

    + +

    Cisco Identity Services Engine (ISE)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/1915/
    Product Manualhttps://www.cisco.com/c/en/us/td/docs/security/ise/syslog/Cisco_ISE_Syslogs/m_IntrotoSyslogs.html
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:ise:syslogAggregation used
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_isecisco:ise:syslognetauthNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_meraki/index.html b/3.4.1/sources/vendor/Cisco/cisco_meraki/index.html new file mode 100644 index 0000000000..4eea36978f --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_meraki/index.html @@ -0,0 +1,5684 @@ + + + + + + + + + + + + + + + + Cisco meraki - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cisco meraki

    + +

    Meraki (MR, MS, MX)

    +

    Key facts

    +
      +
    • In most cases, Cisco Meraki logs are general and require vendor product by source configuration.
    • +
    • For distinctive log messages, filters are based on the appliance name and program value.
    • +
    +

    Distinctive log messages

    +

    See samples in the vendor documentation.

    +

    The two conjuncted conditions are required:

    +
      +
    1. +

      Program: (events|urls|firewall|cellular_firewall|vpn_firewall|ids-alerts|flows)

      +
    2. +
    3. +

      Appliance name:

      +
    4. +
    + + + + + + + + + + + + + + + + + + + + + +
    SourcetypeDistinct element
    meraki:accesspointshost('MR' type(string) flags(ignore-case,prefix))
    meraki:securityapplianceshost('MX' type(string) flags(ignore-case,prefix))
    meraki:switcheshost('MS' type(string) flags(ignore-case,prefix))
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/5580
    Product Manualhttps://documentation.meraki.com/zGeneral_Administration/Monitoring_and_Reporting/Syslog_Server_Overview_and_Configuration https://documentation.meraki.com/General_Administration/Monitoring_and_Reporting/Syslog_Event_Types_and_Log_Samples
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    meraki:accesspointsMR
    meraki:securityappliancesMX
    meraki:switchesMS
    merakivendor product by source configuration
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_meraki_accesspointsmeraki:accesspointsnetfwFiltered on the message format
    cisco_meraki_securityappliancesmeraki:securityappliancesnetfwFiltered on the message format
    cisco_meraki_switchesmeraki:switchesnetfwFiltered on the message format
    cisco_merakimerakinetfwFiltered on vendor product by source configuration
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-cisco_meraki.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-cisco_meraki[sc4s-vps] {
    + filter { 
    +        host("^testcm-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('cisco')
    +            product('meraki')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_mm/index.html b/3.4.1/sources/vendor/Cisco/cisco_mm/index.html new file mode 100644 index 0000000000..11f551b560 --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_mm/index.html @@ -0,0 +1,5607 @@ + + + + + + + + + + + + + + + + Meeting Management - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Meeting Management

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:mm:system:*final component take from the program field of the message header
    cisco:mm:auditRequires setup of vendor product by source see below
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_mm_systemcisco:mm:system:*netopsNone
    cisco_mm_auditcisco:mm:auditnetopsNone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-cisco_mm.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-cisco_mm[sc4s-vps] {
    + filter { 
    +        host('^test-cmm-')
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('cisco')
    +            product('mm')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_ms/index.html b/3.4.1/sources/vendor/Cisco/cisco_ms/index.html new file mode 100644 index 0000000000..a90555056d --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_ms/index.html @@ -0,0 +1,5597 @@ + + + + + + + + + + + + + + + + Meeting Server - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Meeting Server

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:msNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_mscisco:msnetopsNone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-cisco_ms.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-cisco_ms[sc4s-vps] {
    + filter { 
    +        host('^test-cms-')
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('cisco')
    +            product('ms')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_tvcs/index.html b/3.4.1/sources/vendor/Cisco/cisco_tvcs/index.html new file mode 100644 index 0000000000..463fcfaf48 --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_tvcs/index.html @@ -0,0 +1,5544 @@ + + + + + + + + + + + + + + + + TelePresence Video Communication Server (TVCS) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_ucm/index.html b/3.4.1/sources/vendor/Cisco/cisco_ucm/index.html new file mode 100644 index 0000000000..a091174ab3 --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_ucm/index.html @@ -0,0 +1,5525 @@ + + + + + + + + + + + + + + + + Unified Communications Manager (UCM) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Unified Communications Manager (UCM)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    +

    Links

    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:ucmNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_ucmcisco:ucmucmNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_ucshx/index.html b/3.4.1/sources/vendor/Cisco/cisco_ucshx/index.html new file mode 100644 index 0000000000..9e43e0ce6e --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_ucshx/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Unified Computing System (UCS) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Unified Computing System (UCS)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:ucsNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_ucscisco:ucsinfraopsNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_viptela/index.html b/3.4.1/sources/vendor/Cisco/cisco_viptela/index.html new file mode 100644 index 0000000000..93b2491a6f --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_viptela/index.html @@ -0,0 +1,5524 @@ + + + + + + + + + + + + + + + + Viptela - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Viptela

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    +

    Links

    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cisco:viptelaNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_viptelacisco:viptelanetopsNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cisco/cisco_wsa/index.html b/3.4.1/sources/vendor/Cisco/cisco_wsa/index.html new file mode 100644 index 0000000000..455659566e --- /dev/null +++ b/3.4.1/sources/vendor/Cisco/cisco_wsa/index.html @@ -0,0 +1,5653 @@ + + + + + + + + + + + + + + + + Web Security Appliance (WSA) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Web Security Appliance (WSA)

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/1747/
    Product Manualhttps://www.cisco.com/c/en/us/td/docs/security/wsa/wsa11-7/user_guide/b_WSA_UserGuide_11_7.html
    +

    Sourcetypes

    +

    | cisco:wsa:l4tm | The L4TM logs of Cisco IronPort WSA record sites added to the L4TM block and allow lists. | +| cisco:wsa:squid | The access logs of Cisco IronPort WSA version prior to 11.7 record Web Proxy client history in squid. | +| cisco:wsa:squid:new | The access logs of Cisco IronPort WSA version since 11.7 record Web Proxy client history in squid. | +| cisco:wsa:w3c:recommended | The access logs of Cisco IronPort WSA version since 12.5 record Web Proxy client history in W3C. |

    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cisco_wsacisco:wsa:l4tmnetproxyNone
    cisco_wsacisco:wsa:squidnetproxyNone
    cisco_wsacisco:wsa:squid:newnetproxyNone
    cisco_wsacisco:wsa:w3c:recommendednetproxyNone
    +

    Filter type

    +

    IP, Netmask or Host

    +

    Source Setup and Configuration

    +
      +
    • Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer.
    • +
    • WSA Follow vendor configuration steps per Product Manual.
    • +
    • Ensure host and timestamp are included.
    • +
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-cisco_wsa.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-cisco_wsa[sc4s-vps] {
    + filter { 
    +        host("^wsa-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('cisco')
    +            product('wsa')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Citrix/netscaler/index.html b/3.4.1/sources/vendor/Citrix/netscaler/index.html new file mode 100644 index 0000000000..c97d7ed1ea --- /dev/null +++ b/3.4.1/sources/vendor/Citrix/netscaler/index.html @@ -0,0 +1,5605 @@ + + + + + + + + + + + + + + + + Netscaler ADC/SDX - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Netscaler ADC/SDX

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2770/
    Product Manualhttps://docs.citrix.com/en-us/citrix-adc/12-1/system/audit-logging/configuring-audit-logging.html
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    citrix:netscaler:syslogNone
    citrix:netscaler:appfwNone
    citrix:netscaler:appfw:cefNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    citrix_netscalercitrix:netscaler:syslognetfwnone
    citrix_netscalercitrix:netscaler:appfwnetfwnone
    citrix_netscalercitrix:netscaler:appfw:cefnetfwnone
    +

    Source Setup and Configuration

    +
      +
    • Follow vendor configuration steps per Product Manual above. Ensure the data format selected is “DDMMYYYY”
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Clearswift/index.html b/3.4.1/sources/vendor/Clearswift/index.html new file mode 100644 index 0000000000..56c2d613e8 --- /dev/null +++ b/3.4.1/sources/vendor/Clearswift/index.html @@ -0,0 +1,5596 @@ + + + + + + + + + + + + + + + + WAF (Cloud) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    WAF (Cloud)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • RFC 5424 Framed
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualhttps://clearswifthelp.clearswift.com/SEG/472/en/Content/Sections/SystemsCenter/SYCLogList.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    clearswift:${PROGRAM}none
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    clearswiftclearswift:${PROGRAM}emailNone
    +

    Parser Configuration

    +

    ```c

    +

    /opt/sc4s/local/config/app-parsers/app-vps-clearswift.conf

    +

    File name provided is a suggestion it must be globally unique

    +

    application app-vps-clearswift[sc4s-vps] { + filter { + host(“test-clearswift-” type(string) flags(prefix)) + }; + parser { + p_set_netsource_fields( + vendor(‘clearswift’) + product(‘clearswift’) + ); + }; +};

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cohesity/cluster/index.html b/3.4.1/sources/vendor/Cohesity/cluster/index.html new file mode 100644 index 0000000000..a8186df42f --- /dev/null +++ b/3.4.1/sources/vendor/Cohesity/cluster/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + Cluster - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cluster

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    cohesity:cluster:auditNone
    cohesity:cluster:dataprotectionNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cohesity_cluster_auditcohesity:cluster:auditinfraopsnone
    cohesity_cluster_dataprotectioncohesity:cluster:dataprotectioninfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/CyberArk/epv/index.html b/3.4.1/sources/vendor/CyberArk/epv/index.html new file mode 100644 index 0000000000..d12f3969f4 --- /dev/null +++ b/3.4.1/sources/vendor/CyberArk/epv/index.html @@ -0,0 +1,5579 @@ + + + + + + + + + + + + + + + + Vendor - CyberArk - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Vendor - CyberArk

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    +

    Product - EPV

    + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CyberArkhttps://splunkbase.splunk.com/app/2891/
    Add-on Manualhttps://docs.splunk.com/Documentation/AddOns/latest/CyberArk/About
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cyberark:epv:cefNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    CyberArk_Vaultcyberark:epv:cefnetauthnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/CyberArk/pta/index.html b/3.4.1/sources/vendor/CyberArk/pta/index.html new file mode 100644 index 0000000000..cf2a10ce04 --- /dev/null +++ b/3.4.1/sources/vendor/CyberArk/pta/index.html @@ -0,0 +1,5583 @@ + + + + + + + + + + + + + + + + PTA - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    PTA

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CyberArkhttps://splunkbase.splunk.com/app/2891/
    Add-on Manualhttps://docs.splunk.com/Documentation/AddOns/latest/CyberArk/About
    Product Manualhttps://docs.cyberark.com/PAS/Latest/en/Content/PTA/CEF-Based-Format-Definition.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cyberark:pta:cefNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    CyberArk_PTAcyberark:pta:cefmainnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Cylance/protect/index.html b/3.4.1/sources/vendor/Cylance/protect/index.html new file mode 100644 index 0000000000..ac8e13b533 --- /dev/null +++ b/3.4.1/sources/vendor/Cylance/protect/index.html @@ -0,0 +1,5671 @@ + + + + + + + + + + + + + + + + Protect - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Protect

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • None conformant legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CyberArkhttps://splunkbase.splunk.com/app/3709/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    syslog_protectCatchall
    syslog_threat_classificationNone
    syslog_audit_logNone
    syslog_exploitNone
    syslog_app_controlNone
    syslog_threatNone
    syslog_deviceNone
    syslog_device_controlNone
    syslog_script_controlNone
    syslog_opticsNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    cylance_protectsyslog_protectepintelnone
    cylance_protect_auditlogsyslog_audit_logepintelnone
    cylance_protect_threatclassificationsyslog_threat_classificationepintelnone
    cylance_protect_exploitattemptsyslog_exploitepintelnone
    cylance_protect_appcontrolsyslog_app_controlepintelnone
    cylance_protect_threatsyslog_threatepintelnone
    cylance_protect_devicesyslog_deviceepintelnone
    cylance_protect_devicecontrolsyslog_device_controlepintelnone
    cylance_protect_scriptcontrolsyslog_protectepintelnone
    cylance_protect_scriptcontrolsyslog_script_controlepintelnone
    cylance_protect_opticssyslog_opticsepintelnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/DARKTRACE/darktrace/index.html b/3.4.1/sources/vendor/DARKTRACE/darktrace/index.html new file mode 100644 index 0000000000..94138ef3ca --- /dev/null +++ b/3.4.1/sources/vendor/DARKTRACE/darktrace/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + Darktrace - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Darktrace

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    darktracenone
    darktrace:auditnone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    darktrace_syslogdarktracenetidsNone
    darktrace_auditdarktrace_auditnetidsNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Dell/cmc/index.html b/3.4.1/sources/vendor/Dell/cmc/index.html new file mode 100644 index 0000000000..0b9bbcc7b4 --- /dev/null +++ b/3.4.1/sources/vendor/Dell/cmc/index.html @@ -0,0 +1,5609 @@ + + + + + + + + + + + + + + + + CMC (VRTX) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    CMC (VRTX)

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Add-on Manualhttps://www.dell.com/support/manuals/en-us/dell-chassis-management-controller-v3.10-dell-poweredge-vrtx/cmcvrtx31ug/overview?guid=guid-84595265-d37c-4765-8890-90f629737b17
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    dell:poweredge:cmc:syslogNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    dell_poweredge_cmcdell:poweredge:cmc:sysloginfraopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-dell_cmc.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-dell_cmc[sc4s-vps] {
    + filter { 
    +        host("test-dell-cmc-" type(string) flags(prefix))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('dell')
    +            product('poweredge_cmc')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Dell/emc_powerswitchn/index.html b/3.4.1/sources/vendor/Dell/emc_powerswitchn/index.html new file mode 100644 index 0000000000..3e7d4952fd --- /dev/null +++ b/3.4.1/sources/vendor/Dell/emc_powerswitchn/index.html @@ -0,0 +1,5571 @@ + + + + + + + + + + + + + + + + EMC Powerswitch N Series - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    EMC Powerswitch N Series

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    dell:emc:powerswitch:nNone
    nix:syslogNon conforming messages
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    dellemc_powerswitch_nallnetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Dell/idrac/index.html b/3.4.1/sources/vendor/Dell/idrac/index.html new file mode 100644 index 0000000000..3bdeb2b745 --- /dev/null +++ b/3.4.1/sources/vendor/Dell/idrac/index.html @@ -0,0 +1,5579 @@ + + + + + + + + + + + + + + + + iDrac - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    iDrac

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onna
    Add-on Manualhttps://www.dell.com/support/manuals/en-au/dell-opnmang-sw-v8.1/eemi_13g_v1.2-v1/introduction?guid=guid-8f22a1a9-ac01-43d1-a9d2-390ca6708d5e&lang=en-us
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    dell:poweredge:idrac:syslogNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    dell_poweredge_idracdell:poweredge:idrac:sysloginfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Dell/rsa_secureid/index.html b/3.4.1/sources/vendor/Dell/rsa_secureid/index.html new file mode 100644 index 0000000000..4154f8760d --- /dev/null +++ b/3.4.1/sources/vendor/Dell/rsa_secureid/index.html @@ -0,0 +1,5621 @@ + + + + + + + + + + + + + + + + RSA SecureID - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    RSA SecureID

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2958/
    Product Manualhttps://docs.splunk.com/Documentation/AddOns/released/RSASecurID/Aboutthisaddon
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    rsa:securid:syslogCatchall; used if a more specific source type can not be identified
    rsa:securid:admin:syslogNone
    rsa:securid:runtime:syslogNone
    nix:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    dell-rsa_secureidallnetauthnone
    dell-rsa_secureid_tracersa:securid:tracenetauthnone
    dell-rsa_secureidnix:syslogosnixuses os_nix key of not configured bye host/ip/port
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app_parsers/app-vps-dell_rsa_secureid.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-dell_rsa_secureid[sc4s-vps] {
    + filter { 
    +        host("test_rsasecureid*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('dell')
    +            product('rsa_secureid')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Dell/sonicwall/index.html b/3.4.1/sources/vendor/Dell/sonicwall/index.html new file mode 100644 index 0000000000..b34a93d98c --- /dev/null +++ b/3.4.1/sources/vendor/Dell/sonicwall/index.html @@ -0,0 +1,5627 @@ + + + + + + + + + + + + + + + + Sonicwall - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Sonicwall

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/6203/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    dell:sonicwallNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    dell_sonicwall-firewalldell:sonicwallnetfwnone
    +

    Options

    + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_DEST_DELL_SONICWALL-FIREWALL_SPLUNK_HEC_FMTJSONRestructure data from vendor format to json for splunk destinations set to “NONE” for native format
    SC4S_DEST_DELL_SONICWALL-FIREWALL_SYSLOG_FMTSDATARestructure data from vendor format to SDATA for SYSLOG destinations set to “NONE” for native format
    +

    Note:

    +

    The sourcetype has been changed in version 2.35.0 making it compliant with corresponding TA.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/F5/bigip/index.html b/3.4.1/sources/vendor/F5/bigip/index.html new file mode 100644 index 0000000000..fd9825aef2 --- /dev/null +++ b/3.4.1/sources/vendor/F5/bigip/index.html @@ -0,0 +1,5669 @@ + + + + + + + + + + + + + + + + BigIP - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    BigIP

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    • Needs host to be defined in log header similarly like in this issue.
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2680/
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    f5:bigip:syslogNone
    f5:bigip:iruleNone
    f5:bigip:ltm:http:iruleNone
    f5:bigip:gtm:dns:request:iruleNone
    f5:bigip:gtm:dns:response:iruleNone
    f5:bigip:ltm:failed:iruleNone
    f5:bigip:asm:syslogNone
    f5:bigip:apm:syslogNone
    nix:syslogNone
    f5:bigip:ltm:access_jsonUser defined configuration via irule producing a RFC5424 syslog event with json content within the message field <111>1 2020-05-28T22:48:15Z foo.example.com F5 - access_json - {"event_type":"HTTP_REQUEST", "src_ip":"10.66.98.41"} This source type requires a customer specific Splunk Add-on for utility value
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keyindexnotes
    f5_bigipnetopsnone
    f5_bigip_irulenetopsnone
    f5_bigip_asmnetwafnone
    f5_bigip_apmnetopsnone
    f5_bigip_nixnetopsif f_f5_bigip is not set the index osnix will be used
    f5_bigip_access_jsonnetopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-f5_bigip.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-f5_bigip[sc4s-vps] {
    + filter { 
    +        "${HOST}" eq "f5_bigip"
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('f5')
    +            product('bigip')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/FireEye/cms/index.html b/3.4.1/sources/vendor/FireEye/cms/index.html new file mode 100644 index 0000000000..5b9cc5e6bc --- /dev/null +++ b/3.4.1/sources/vendor/FireEye/cms/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + CMS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    CMS

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Technology Add-On for FireEyehttps://splunkbase.splunk.com/app/1904/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    fe_cef_syslog
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    FireEye_CMSfe_cef_syslogfireeye
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/FireEye/emps/index.html b/3.4.1/sources/vendor/FireEye/emps/index.html new file mode 100644 index 0000000000..4ed1ed7e5a --- /dev/null +++ b/3.4.1/sources/vendor/FireEye/emps/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + eMPS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    eMPS

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Technology Add-On for FireEyehttps://splunkbase.splunk.com/app/1904/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    fe_cef_syslog
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    FireEye_eMPSfe_cef_syslogfireeye
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/FireEye/etp/index.html b/3.4.1/sources/vendor/FireEye/etp/index.html new file mode 100644 index 0000000000..113d93525d --- /dev/null +++ b/3.4.1/sources/vendor/FireEye/etp/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + etp - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    etp

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Technology Add-On for FireEyehttps://splunkbase.splunk.com/app/1904/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    fe_etpsource does not provide host name constant “etp.fireeye.com” is use regardless of region
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    FireEye_ETPfe_etpfireeye
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/FireEye/hx/index.html b/3.4.1/sources/vendor/FireEye/hx/index.html new file mode 100644 index 0000000000..7d4696fc1f --- /dev/null +++ b/3.4.1/sources/vendor/FireEye/hx/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + hx - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    hx

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Technology Add-On for FireEyehttps://splunkbase.splunk.com/app/1904/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    hx_cef_syslog
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    fireeye_hxhx_cef_syslogfireeye
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Forcepoint/index.html b/3.4.1/sources/vendor/Forcepoint/index.html new file mode 100644 index 0000000000..d5719d57b7 --- /dev/null +++ b/3.4.1/sources/vendor/Forcepoint/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Email Security - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Email Security

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    Product Manualnone
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    forcepoint:email:kvNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    forcepoint_emailforcepoint:email:kvemailnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Forcepoint/webprotect/index.html b/3.4.1/sources/vendor/Forcepoint/webprotect/index.html new file mode 100644 index 0000000000..7302ac0fa4 --- /dev/null +++ b/3.4.1/sources/vendor/Forcepoint/webprotect/index.html @@ -0,0 +1,5573 @@ + + + + + + + + + + + + + + + + Webprotect (Websense) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Webprotect (Websense)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2966/
    Product Manualhttp://www.websense.com/content/support/library/web/v85/siem/siem.pdf
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    websense:cg:kvNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    forcepoint_webprotectwebsense:cg:kvnetproxynone
    forcepoint_websense:cg:kvnetproxyif the log is in format of vendor=Forcepoint product= , the key will will be forcepoint_random
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Fortinet/FortiGate_event.png b/3.4.1/sources/vendor/Fortinet/FortiGate_event.png new file mode 100644 index 0000000000000000000000000000000000000000..291a49414a61ccf14c940ecd91bc5af4d6d225cf GIT binary patch literal 128246 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 Q1|aZs^>bP0l+eTl08&2-s{jB1 literal 0 HcmV?d00001 diff --git a/3.4.1/sources/vendor/Fortinet/FortiGate_traffic.png b/3.4.1/sources/vendor/Fortinet/FortiGate_traffic.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4ebb96a322e7a12a6b98e4920050fe108304cd GIT binary patch literal 155361 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

    CZE=3ULs8)4N@NMXJF3T=>TH+rB~3lsvl! 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≠^bBR5;baxXdL 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 U+fo_N1b%L)Xk0J2W*&U--@|SaFVnq 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%0Dv!b?X2 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 literal 0 HcmV?d00001 diff --git a/3.4.1/sources/vendor/Fortinet/fortimail/index.html b/3.4.1/sources/vendor/Fortinet/fortimail/index.html new file mode 100644 index 0000000000..6b178986e3 --- /dev/null +++ b/3.4.1/sources/vendor/Fortinet/fortimail/index.html @@ -0,0 +1,5563 @@ + + + + + + + + + + + + + + + + FortiWMail - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    FortiWMail

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3249
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    fml:type value is determined from the message
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    fortinet_fortimail_fml:emailtype value is determined from the message
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Fortinet/fortios/index.html b/3.4.1/sources/vendor/Fortinet/fortios/index.html new file mode 100644 index 0000000000..2782746935 --- /dev/null +++ b/3.4.1/sources/vendor/Fortinet/fortios/index.html @@ -0,0 +1,5677 @@ + + + + + + + + + + + + + + + + Fortios - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Fortios

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2846/
    Product Manualhttps://docs.fortinet.com/product/fortigate/6.2
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    fgt_logCatch-all sourcetype; not used by the TA
    fgt_trafficNone
    fgt_utmNone
    fgt_eventNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    fortinet_fortios_trafficfgt_trafficnetfwnone
    fortinet_fortios_utmfgt_utmnetfwnone
    fortinet_fortios_eventfgt_eventnetopsnone
    fortinet_fortios_logfgt_lognetopsnone
    +

    Source Setup and Configuration

    +
      +
    • Refer to the admin manual for specific details of configuration to send Reliable syslog using RFC 3195 format, a typical logging configuration will include the following features.
    • +
    +
    config log memory filter
    +
    +set forward-traffic enable
    +
    +set local-traffic enable
    +
    +set sniffer-traffic disable
    +
    +set anomaly enable
    +
    +set voip disable
    +
    +set multicast-traffic enable
    +
    +set dns enable
    +
    +end
    +
    +config system global
    +
    +set cli-audit-log enable
    +
    +end
    +
    +config log setting
    +
    +set neighbor-event enable
    +
    +end
    +
    + +

    Options

    + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_OPTION_FORTINET_SOURCETYPE_PREFIXfgtNotice starting with version 1.6 of the fortinet add-on and app the sourcetype required changes from fgt_* to fortinet_* this is a breaking change to use the new sourcetype set this variable to fortigate in the env_file
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Fortinet/fortiweb/index.html b/3.4.1/sources/vendor/Fortinet/fortiweb/index.html new file mode 100644 index 0000000000..39404fe19d --- /dev/null +++ b/3.4.1/sources/vendor/Fortinet/fortiweb/index.html @@ -0,0 +1,5639 @@ + + + + + + + + + + + + + + + + FortiWeb - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    FortiWeb

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4679/
    Product Manualhttps://docs.fortinet.com/product/fortiweb/6.3
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    fgt_logCatch-all sourcetype; not used by the TA
    fwb_trafficNone
    fwb_attackNone
    fwb_eventNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    fortinet_fortiweb_trafficfwb_trafficnetfwnone
    fortinet_fortiweb_attackfwb_attacknetidsnone
    fortinet_fortiweb_eventfwb_eventnetopsnone
    fortinet_fortiweb_logfwb_lognetopsnone
    +

    Source Setup and Configuration

    +
      +
    • Refer to the admin manual for specific details of configuration to send Reliable syslog using RFC 3195 format, a typical logging configuration will include the following features.
    • +
    +
    config log syslog-policy
    +
    +edit splunk  
    +
    +config syslog-server-list 
    +
    +edit 1
    +
    +set server x.x.x.x
    +
    +set port 514 (Example. Should be the same as default or dedicated port selected for sc4s)   
    +
    +end
    +
    +end
    +
    +config log syslogd
    +
    +set policy splunk
    +
    +set status enable
    +
    +end
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/GitHub/index.html b/3.4.1/sources/vendor/GitHub/index.html new file mode 100644 index 0000000000..1b6f323e54 --- /dev/null +++ b/3.4.1/sources/vendor/GitHub/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Enterprise Server - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Enterprise Server

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on
    Product Manual
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    github:enterprise:auditThe audit logs of GitHub Enterprise server have information about audites actions performed by github user.
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    github_entgithub:enterprise:auditgitopsNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/HAProxy/syslog/index.html b/3.4.1/sources/vendor/HAProxy/syslog/index.html new file mode 100644 index 0000000000..f132116b1b --- /dev/null +++ b/3.4.1/sources/vendor/HAProxy/syslog/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + HAProxy - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    HAProxy

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3135/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    haproxy:tcpDefault syslog format
    haproxy:splunk:httpSplunk’s documented custom format. Note: detection is based on client_ip prefix in message
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    haproxy_syslognetlbnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/HPe/ilo/index.html b/3.4.1/sources/vendor/HPe/ilo/index.html new file mode 100644 index 0000000000..dbc77916b3 --- /dev/null +++ b/3.4.1/sources/vendor/HPe/ilo/index.html @@ -0,0 +1,5559 @@ + + + + + + + + + + + + + + + + ILO (4+) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    ILO (4+)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    hpe:ilonone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    hpe_iloinfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/HPe/jedirect/index.html b/3.4.1/sources/vendor/HPe/jedirect/index.html new file mode 100644 index 0000000000..71cb49d6ba --- /dev/null +++ b/3.4.1/sources/vendor/HPe/jedirect/index.html @@ -0,0 +1,5583 @@ + + + + + + + + + + + + + + + + Jedirect - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Jedirect

    + +

    JetDirect

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    hpe:jetdirectnone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    hpe_jetdirectprintnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/HPe/procurve/index.html b/3.4.1/sources/vendor/HPe/procurve/index.html new file mode 100644 index 0000000000..1f7c214e80 --- /dev/null +++ b/3.4.1/sources/vendor/HPe/procurve/index.html @@ -0,0 +1,5578 @@ + + + + + + + + + + + + + + + + Procurve Switch - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Procurve Switch

    +

    HP Procurve switches have multiple log formats used.

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Switchhttps://support.hpe.com/hpesc/public/docDisplay?docId=a00091844en_us
    Switch (A Series) (Flex)https://techhub.hpe.com/eginfolib/networking/docs/switches/12500/5998-4870_nmm_cg/content/378584395.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    hpe:procurvenone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    hpe_procurvenetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/IBM/datapower/index.html b/3.4.1/sources/vendor/IBM/datapower/index.html new file mode 100644 index 0000000000..e5eb593a63 --- /dev/null +++ b/3.4.1/sources/vendor/IBM/datapower/index.html @@ -0,0 +1,5580 @@ + + + + + + + + + + + + + + + + Data power - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Data power

    + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4662/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    ibm:datapower:syslogCommon sourcetype
    ibm:datapower:** is taken from the event sourcetype
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    ibm_datapowernainifraopsnone
    +

    Parser Configuration

    +

    Parser configuration is conditional only required if additional events are produced by the device that do not match the default configuration.

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-ibm_datapower.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-ibm_datapower[sc4s-vps] {
    + filter { 
    +        host("^test-ibmdp-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('ibm')
    +            product('datapower')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/ISC/bind/index.html b/3.4.1/sources/vendor/ISC/bind/index.html new file mode 100644 index 0000000000..51a2cebe63 --- /dev/null +++ b/3.4.1/sources/vendor/ISC/bind/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + bind - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    bind

    +

    This source type is often re-implemented by specific add-ons such as infoblox or bluecat if a more specific source type is desired +see that source documentation for instructions

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2876/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    isc:bindnone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    isc_bindisc:bindnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/ISC/dhcpd/index.html b/3.4.1/sources/vendor/ISC/dhcpd/index.html new file mode 100644 index 0000000000..e135c31bcc --- /dev/null +++ b/3.4.1/sources/vendor/ISC/dhcpd/index.html @@ -0,0 +1,5638 @@ + + + + + + + + + + + + + + + + dhcpd - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    dhcpd

    +

    This source type is often re-implemented by specific add-ons such as infoblox or bluecat if a more specific source type is desired +see that source documentation for instructions

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3010/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    isc:dhcpnone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    isc_dhcpisc:dhcpnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content

    +

    Options

    +

    None

    +

    Verification

    +

    An active site will generate frequent events use the following search to check for new events

    +

    Verify timestamp, and host values match as expected

    +
    index=<asconfigured> (sourcetype=isc:dhcp")
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Imperva/incapusla/index.html b/3.4.1/sources/vendor/Imperva/incapusla/index.html new file mode 100644 index 0000000000..692799c8f8 --- /dev/null +++ b/3.4.1/sources/vendor/Imperva/incapusla/index.html @@ -0,0 +1,5612 @@ + + + + + + + + + + + + + + + + Incapsula - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Incapsula

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CEFhttps://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/
    Splunk Add-on Source Specifichttps://bitbucket.org/SPLServices/ta-cef-imperva-incapsula/downloads/
    Product Manualhttps://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cefCommon sourcetype
    +

    Source

    + + + + + + + + + + + + + +
    sourcetypenotes
    Imperva:IncapsulaCommon sourcetype
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    Incapsula_SIEMintegrationImperva:Incapsulanetwafnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Imperva/waf/index.html b/3.4.1/sources/vendor/Imperva/waf/index.html new file mode 100644 index 0000000000..d8a824161b --- /dev/null +++ b/3.4.1/sources/vendor/Imperva/waf/index.html @@ -0,0 +1,5585 @@ + + + + + + + + + + + + + + + + On-Premises WAF (SecureSphere WAF) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    On-Premises WAF (SecureSphere WAF)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2874/
    Product Manualhttps://community.microfocus.com/dcvta86296/attachments/dcvta86296/partner-documentation-h-o/22/2/Imperva_SecureSphere_11_5_CEF_Config_Guide_2018.pdf
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    imperva:wafnone
    imperva:waf:firewall:cefnone
    imperva:waf:security:cefnone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    Imperva Inc._SecureSpherenetwafnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/InfoBlox/index.html b/3.4.1/sources/vendor/InfoBlox/index.html new file mode 100644 index 0000000000..afaa0df246 --- /dev/null +++ b/3.4.1/sources/vendor/InfoBlox/index.html @@ -0,0 +1,5670 @@ + + + + + + + + + + + + + + + + NIOS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    NIOS

    +

    Warning: Despite the TA indication this data source is CIM compliant all versions of NIOS including the most recent available as of 2019-12-17 do not support the DNS data model correctly. For DNS security use cases use Splunk Stream instead.

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2934/
    Product Manualhttps://docs.infoblox.com/display/ILP/NIOS?preview=/8945695/43728387/NIOS_8.4_Admin_Guide.pdf
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    infoblox:dnsNone
    infoblox:dhcpNone
    infoblox:threatNone
    nix:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    infoblox_nios_dnsinfoblox:dnsnetdnsnone
    infoblox_nios_dhcpinfoblox:dhcpnetipamnone
    infoblox_nios_threatinfoblox:threatprotectnetidsnone
    infoblox_nios_auditinfoblox:auditnetopsnone
    infoblox_nios_fallbackinfoblox:portnetopsnone
    +

    Options

    + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_INFOBLOX_NIOS_UDP_PORTemptyVendor specific port
    SC4S_LISTEN_INFOBLOX_NIOS_TCP_PORTemptyVendor specific port
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-infoblox_nios.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-infoblox_nios[sc4s-vps] {
    + filter { 
    +        host("infoblox-*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('infoblox')
    +            product('nios')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Juniper/junos/index.html b/3.4.1/sources/vendor/Juniper/junos/index.html new file mode 100644 index 0000000000..92aa36e5f7 --- /dev/null +++ b/3.4.1/sources/vendor/Juniper/junos/index.html @@ -0,0 +1,5663 @@ + + + + + + + + + + + + + + + + JunOS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    JunOS

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2847/
    JunOS TechLibraryhttps://www.juniper.net/documentation/en_US/junos/topics/example/syslog-messages-configuring-qfx-series.html
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    juniper:junos:firewallNone
    juniper:junos:firewall:structuredNone
    juniper:junos:idpNone
    juniper:junos:idp:structuredNone
    juniper:junos:aamw:structuredNone
    juniper:junos:secintel:structuredNone
    juniper:junos:snmpNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    juniper_junos_legacyjuniper:legacynetopsnone
    juniper_junos_flowjuniper:junos:firewallnetfwnone
    juniper_junos_utmjuniper:junos:firewallnetfwnone
    juniper_junos_firewalljuniper:junos:firewallnetfwnone
    juniper_junos_idsjuniper:junos:firewallnetidsnone
    juniper_junos_idpjuniper:junos:idpnetidsnone
    juniper_junos_snmpjuniper:junos:snmpnetopsnone
    juniper_junos_structured_fwjuniper:junos:firewall:structurednetfwnone
    juniper_junos_structured_idsjuniper:junos:firewall:structurednetidsnone
    juniper_junos_structured_utmjuniper:junos:firewall:structurednetfwnone
    juniper_junos_structured_idpjuniper:junos:idp:structurednetidsnone
    juniper_junos_structured_aamwjuniper:junos:aamw:structurednetfwnone
    juniper_junos_structured_secinteljuniper:junos:secintel:structurednetfwnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Juniper/netscreen/index.html b/3.4.1/sources/vendor/Juniper/netscreen/index.html new file mode 100644 index 0000000000..0c491f753a --- /dev/null +++ b/3.4.1/sources/vendor/Juniper/netscreen/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + Netscreen - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Netscreen

    + +

    Netscreen

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2847/
    Netscreen Manualhttp://kb.juniper.net/InfoCenter/index?page=content&id=KB4759
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    netscreen:firewallNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    juniper_netscreennetscreen:firewallnetfwnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Kaspersky/es/index.html b/3.4.1/sources/vendor/Kaspersky/es/index.html new file mode 100644 index 0000000000..de371acffc --- /dev/null +++ b/3.4.1/sources/vendor/Kaspersky/es/index.html @@ -0,0 +1,5573 @@ + + + + + + + + + + + + + + + + Enterprise Security RFC5424 - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Enterprise Security RFC5424

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • RFC5424
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnon
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    kaspersky:syslog:esWhere PROGRAM starts with KES
    kaspersky:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    kaspersky_syslogkaspersky:syslogepavnone
    kaspersky_syslog_eskaspersky:syslog:esepavnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Kaspersky/es_cef/index.html b/3.4.1/sources/vendor/Kaspersky/es_cef/index.html new file mode 100644 index 0000000000..a90ae628a4 --- /dev/null +++ b/3.4.1/sources/vendor/Kaspersky/es_cef/index.html @@ -0,0 +1,5589 @@ + + + + + + + + + + + + + + + + Enterprise Security CEF - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Enterprise Security CEF

    +

    The TA link provided has commented out the CEF support as of 2022-03-18 +manual edits are required

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • RFC5424
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4656/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    kaspersky:cef
    kaspersky:klaud
    kaspersky:klsrv
    kaspersky:gnrl
    kaspersky:klnag
    kaspersky:klprci
    kaspersky:klbl
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    KasperskyLab_SecurityCenterallepavnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Kaspersky/es_leef/index.html b/3.4.1/sources/vendor/Kaspersky/es_leef/index.html new file mode 100644 index 0000000000..c87c6f4e60 --- /dev/null +++ b/3.4.1/sources/vendor/Kaspersky/es_leef/index.html @@ -0,0 +1,5587 @@ + + + + + + + + + + + + + + + + Enterprise Security Leef - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Enterprise Security Leef

    +

    Leef format has not been tested samples needed

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4656/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    kaspersky:cef
    kaspersky:klaud
    kaspersky:klsrv
    kaspersky:gnrl
    kaspersky:klnag
    kaspersky:klprci
    kaspersky:klbl
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    KasperskyLab_SecurityCenterallepavnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Liveaction/liveaction_livenx/index.html b/3.4.1/sources/vendor/Liveaction/liveaction_livenx/index.html new file mode 100644 index 0000000000..c7351e67ba --- /dev/null +++ b/3.4.1/sources/vendor/Liveaction/liveaction_livenx/index.html @@ -0,0 +1,5566 @@ + + + + + + + + + + + + + + + + Liveaction - livenx - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Liveaction - livenx

    +

    Key facts

    +
      +
    • Default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product ManualNone
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    liveaction:livenxnone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    liveaction_livenxliveaction:livenxnetopsNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/McAfee/epo/index.html b/3.4.1/sources/vendor/McAfee/epo/index.html new file mode 100644 index 0000000000..6d3168f1b5 --- /dev/null +++ b/3.4.1/sources/vendor/McAfee/epo/index.html @@ -0,0 +1,5731 @@ + + + + + + + + + + + + + + + + EPO - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    EPO

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Source requires use of TLS legacy BSD port 6514
    • +
    • TLS Certificate must be trusted by EPO instance
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/5085/
    Product Manualhttps://kc.mcafee.com/corporate/index?page=content&id=KB87927
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    mcafee:epo:syslognone
    +

    Source

    + + + + + + + + + + + + + + + + + + + + + +
    sourcenotes
    policy_auditor_vulnerability_assessmentPolicy Auditor Vulnerability Assessment events
    mcafee_agentMcAfee Agent events
    mcafee_endpoint_securityMcAfee Endpoint Security events
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    mcafee_epoepavnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content

    +

    Options

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_MCAFEE_EPO_TLS_PORTempty stringEnable a TLS port for this specific vendor product using a comma-separated list of port numbers
    SC4S_ARCHIVE_MCAFEE_EPOnoEnable archive to disk for this specific source
    SC4S_DEST_MCAFEE_EPO_HECnoWhen Splunk HEC is disabled globally set to yes to enable this specific source
    SC4S_SOURCE_TLS_ENABLEnoThis must be set to yes so that SC4S listens for encrypted syslog from ePO
    +

    Additional setup

    +

    You must create a certificate for the SC4S server to receive encrypted syslog from ePO. A self-signed certificate is fine. Generate a self-signed certificate on the SC4S host:

    +

    openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /opt/sc4s/tls/server.key -out /opt/sc4s/tls/server.pem

    +

    Uncomment the following line in /lib/systemd/system/sc4s.service to allow the docker container to use the certificate:

    +

    Environment="SC4S_TLS_DIR=-v :/etc/syslog-ng/tls:z"

    +

    Troubleshooting

    +

    from the command line of the SC4S host, run this: openssl s_client -connect localhost:6514

    +

    The message:

    +
    socket: Bad file descriptor
    +connect:errno=9
    +
    + +

    indicates that SC4S is not listening for encrypted syslog. Note that a netstat may show the port open, but it is not accepting encrypted traffic as configured.

    +

    It may take several minutes for the syslog option to be available in the registered servers dropdown.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/McAfee/nsp/index.html b/3.4.1/sources/vendor/McAfee/nsp/index.html new file mode 100644 index 0000000000..59fb8651fe --- /dev/null +++ b/3.4.1/sources/vendor/McAfee/nsp/index.html @@ -0,0 +1,5614 @@ + + + + + + + + + + + + + + + + Network Security Platform - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Network Security Platform

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Product Manualhttps://docs.mcafee.com/bundle/network-security-platform-10.1.x-product-guide/page/GUID-373C1CA6-EC0E-49E1-8858-749D1AA2716A.html
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    mcafee:nspnone
    +

    Source

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcenotes
    mcafee:nsp:alertAlert/Attack Events
    mcafee:nsp:auditAudit Event or User Activity Events
    mcafee:nsp:faultFault Events
    mcafee:nsp:firewallFirewall Events
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    mcafee_nspnetidsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/McAfee/wg/index.html b/3.4.1/sources/vendor/McAfee/wg/index.html new file mode 100644 index 0000000000..36fe10e754 --- /dev/null +++ b/3.4.1/sources/vendor/McAfee/wg/index.html @@ -0,0 +1,5587 @@ + + + + + + + + + + + + + + + + Wg - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Microfocus/arcsight/index.html b/3.4.1/sources/vendor/Microfocus/arcsight/index.html new file mode 100644 index 0000000000..03fbaf9cbf --- /dev/null +++ b/3.4.1/sources/vendor/Microfocus/arcsight/index.html @@ -0,0 +1,5604 @@ + + + + + + + + + + + + + + + + Arcsight Internal Agent - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Arcsight Internal Agent

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CEFhttps://github.com/splunk/splunk-add-on-for-cef/downloads/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cefCommon sourcetype
    +

    Source

    + + + + + + + + + + + + + +
    sourcenotes
    ArcSight:ArcSightInternal logs
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    ArcSight_ArcSightArcSight:ArcSightmainnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Microfocus/windows/index.html b/3.4.1/sources/vendor/Microfocus/windows/index.html new file mode 100644 index 0000000000..3f1c3a88da --- /dev/null +++ b/3.4.1/sources/vendor/Microfocus/windows/index.html @@ -0,0 +1,5622 @@ + + + + + + + + + + + + + + + + Arcsight Microsoft Windows (CEF) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Arcsight Microsoft Windows (CEF)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CEFhttps://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/
    Splunk Add-on CEFhttps://bitbucket.org/SPLServices/ta-cef-microsoft-windows-for-splunk/downloads/
    Product Manualhttps://docs.imperva.com/bundle/cloud-application-security/page/more/log-configuration.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cefCommon sourcetype
    +

    Source

    + + + + + + + + + + + + + + + + + +
    sourcenotes
    CEFEventLog:System or Application EventWindows Application and System Event Logs
    CEFEventLog:Microsoft WindowsWindows Security Event Logs
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    Microsoft_System or Application EventCEFEventLog:System or Application Eventoswinnone
    Microsoft_Microsoft WindowsCEFEventLog:Microsoft Windowsoswinsecnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Microsoft/index.html b/3.4.1/sources/vendor/Microsoft/index.html new file mode 100644 index 0000000000..7f19fe42d5 --- /dev/null +++ b/3.4.1/sources/vendor/Microsoft/index.html @@ -0,0 +1,5612 @@ + + + + + + + + + + + + + + + + Cloud App Security (MCAS) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cloud App Security (MCAS)

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CEFhttps://bitbucket.org/SPLServices/ta-cef-for-splunk/downloads/
    Splunk Add-on Source Specificnone
    Product Manualhttps://docs.microsoft.com/en-us/cloud-app-security/siem
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cefCommon sourcetype
    +

    Source

    + + + + + + + + + + + + + +
    sourcenotes
    microsoft:casCommon sourcetype
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    MCAS_SIEM_Agentmicrosoft:casmainnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Mikrotik/routeros/index.html b/3.4.1/sources/vendor/Mikrotik/routeros/index.html new file mode 100644 index 0000000000..b49060c6c0 --- /dev/null +++ b/3.4.1/sources/vendor/Mikrotik/routeros/index.html @@ -0,0 +1,5595 @@ + + + + + + + + + + + + + + + + RouterOS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    RouterOS

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    • RouterOS will send ISC Bind and ISC DHCPD events
    • +
    + +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    routerosnone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + + + + +
    keyindexnotes
    mikrotik_routerosnetopsnone
    mikrotik_routeros_fwnetfwUsed for events with forward:
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-mikrotik_routeros.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-mikrotik_routeros[sc4s-vps] {
    + filter { 
    +        host("test-mrtros-" type(string) flags(prefix))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('mikrotik')
    +            product('routeros')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/NetApp/ontap/index.html b/3.4.1/sources/vendor/NetApp/ontap/index.html new file mode 100644 index 0000000000..8346888d0f --- /dev/null +++ b/3.4.1/sources/vendor/NetApp/ontap/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + OnTap - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    OnTap

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3418/
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    netapp:emsNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    netapp_ontapnetapp:emsinfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/NetApp/storage-grid/index.html b/3.4.1/sources/vendor/NetApp/storage-grid/index.html new file mode 100644 index 0000000000..c636803248 --- /dev/null +++ b/3.4.1/sources/vendor/NetApp/storage-grid/index.html @@ -0,0 +1,5578 @@ + + + + + + + + + + + + + + + + StorageGRID - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    StorageGRID

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    • Community requested parser
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3895/
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    grid:auditlogNone
    grid:rest:apiNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    netapp_gridgrid:auditloginfraopsnone
    netapp_gridgrid:rest:apiinfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/NetScout/arbor_edge/index.html b/3.4.1/sources/vendor/NetScout/arbor_edge/index.html new file mode 100644 index 0000000000..3d246c5b6f --- /dev/null +++ b/3.4.1/sources/vendor/NetScout/arbor_edge/index.html @@ -0,0 +1,5581 @@ + + + + + + + + + + + + + + + + DatAdvantage - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    DatAdvantage

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    TAhttps://github.com/arbor/TA_netscout_aed
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    netscout:aed
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    NETSCOUT_Arbor Edge Defensenetscout:aednetids
    NETSCOUT_Arbor Networks APSnetscout:aednetids
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Netmotion/mobilityserver/index.html b/3.4.1/sources/vendor/Netmotion/mobilityserver/index.html new file mode 100644 index 0000000000..375b77efd0 --- /dev/null +++ b/3.4.1/sources/vendor/Netmotion/mobilityserver/index.html @@ -0,0 +1,5566 @@ + + + + + + + + + + + + + + + + Mobility Server - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Mobility Server

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    netmotion:mobilityserver:*The third segment of the source type is constructed from the sdid field of the syslog sdata
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    netmotion_mobility-server_*netmotion:mobilityserver:*netopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Netmotion/reporting/index.html b/3.4.1/sources/vendor/Netmotion/reporting/index.html new file mode 100644 index 0000000000..6dc7ec06dd --- /dev/null +++ b/3.4.1/sources/vendor/Netmotion/reporting/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Reporting - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Reporting

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    netmotion:reportingNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    netmotion_reportingnetmotion:reportingnetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Novell/netiq/index.html b/3.4.1/sources/vendor/Novell/netiq/index.html new file mode 100644 index 0000000000..878bda44b9 --- /dev/null +++ b/3.4.1/sources/vendor/Novell/netiq/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + NetIQ - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    NetIQ

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    novell:netiqnone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    novell_netiqnovell_netiqnetauthNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Nutanix/cvm/index.html b/3.4.1/sources/vendor/Nutanix/cvm/index.html new file mode 100644 index 0000000000..d9ce9c5297 --- /dev/null +++ b/3.4.1/sources/vendor/Nutanix/cvm/index.html @@ -0,0 +1,5578 @@ + + + + + + + + + + + + + + + + Nutanix_CVM_Audit - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Nutanix_CVM_Audit

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Community requested filter
    • +
    • Only CVM log supported
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    nutanix:syslogCVM logs
    nutanix:syslog:auditCVM system audit logs Considering the message host format is default ntnx-xxxx-cvm
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    nutanix_syslognutanix:sysloginfraopsnone
    nutanix_syslog_auditnutanix:syslog:auditinfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Ossec/ossec/index.html b/3.4.1/sources/vendor/Ossec/ossec/index.html new file mode 100644 index 0000000000..165b75cb66 --- /dev/null +++ b/3.4.1/sources/vendor/Ossec/ossec/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Ossec - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Ossec

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2808/
    Product Manualhttps://www.ossec.net/docs/index.html
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    ossecThe add-on supports data from the following sources: File Integrity Management (FIM) data, FTP data, su data, ssh data, Windows data, including audit and logon information
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    ossec_ossecossecmainNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/PaloaltoNetworks/cortexxdr/index.html b/3.4.1/sources/vendor/PaloaltoNetworks/cortexxdr/index.html new file mode 100644 index 0000000000..b225647211 --- /dev/null +++ b/3.4.1/sources/vendor/PaloaltoNetworks/cortexxdr/index.html @@ -0,0 +1,5562 @@ + + + + + + + + + + + + + + + + Cortext - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cortext

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Cortex requires TLS and uses IETF Framed SYSLOG default port is 6587
    • +
    + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2757/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    pan:*
    pan:xsoarnone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    Palo Alto Networks_Palo Alto Networks Cortex XSOARepintelnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/PaloaltoNetworks/panos/index.html b/3.4.1/sources/vendor/PaloaltoNetworks/panos/index.html new file mode 100644 index 0000000000..4e9000ef76 --- /dev/null +++ b/3.4.1/sources/vendor/PaloaltoNetworks/panos/index.html @@ -0,0 +1,5775 @@ + + + + + + + + + + + + + + + + panos - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    panos

    +

    Key facts

    +
      +
    • MSG Format based filter from NGFW, PANORAMA OR CORTEX data lake
    • +
    • Legacy BSD Format default port 514 used by default. “Default TCP/UDP” is 30% slower than preferred IETF Framed
    • +
    • IMPORTANT IETF Framed syslog must use port 601
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2757/
    Product Manualhttps://docs.paloaltonetworks.com/pan-os/9-0/pan-os-admin/monitoring/use-syslog-for-monitoring/configure-syslog-monitoring.html
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    pan:logNone
    pan:pan_globalprotectnone
    pan:trafficNone
    pan:threatNone
    pan:systemNone
    pan:configNone
    pan:hipmatchNone
    pan:correlationNone
    pan:useridNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    pan_panos_logpan:lognetopsnone
    pan_panos_globalprotectpan:pan_globalprotectnetfwnone
    pan_panos_trafficpan:trafficnetfwnone
    pan_panos_threatpan:threatnetproxynone
    pan_panos_systempan:systemnetopsnone
    pan_panos_configpan:confignetopsnone
    pan_panos_hipmatchpan:hipmatchnetopsnone
    pan_panos_correlationpan:correlationnetopsnone
    pan_panos_useridpan:useridnetauthnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content

    +

    Setup and Configuration

    +
      +
    • Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer.
    • +
    • Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source.
    • +
    • Refer to the admin manual for specific details of configuration
    • +
    • Select TCP or SSL transport option
    • +
    • Select IETF Format
    • +
    • Ensure the format of the event is not customized
    • +
    +

    Options

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_PULSE_PAN_PANOS_RFC6587_PORTempty stringEnable a TCP using IETF Framing (RFC6587) port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_PAN_PANOS_TCP_PORTempty stringEnable a TCP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_ARCHIVE_PAN_PANOSnoEnable archive to disk for this specific source
    SC4S_DEST_PAN_PANOS_HECnoWhen Splunk HEC is disabled globally set to yes to enable this specific source
    +

    Verification

    +

    An active firewall will generate frequent events. Use the following search to validate events are present per source device

    +
    index=<asconfigured> sourcetype=pan:*| stats count by host
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/PaloaltoNetworks/traps/index.html b/3.4.1/sources/vendor/PaloaltoNetworks/traps/index.html new file mode 100644 index 0000000000..804164ada2 --- /dev/null +++ b/3.4.1/sources/vendor/PaloaltoNetworks/traps/index.html @@ -0,0 +1,5583 @@ + + + + + + + + + + + + + + + + Traps - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Traps

    + +

    TRAPS

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/2757/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    pan:traps4none
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    Palo Alto Networks_Traps Agentepintelnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Pfsense/firewall/index.html b/3.4.1/sources/vendor/Pfsense/firewall/index.html new file mode 100644 index 0000000000..d71d22fd03 --- /dev/null +++ b/3.4.1/sources/vendor/Pfsense/firewall/index.html @@ -0,0 +1,5607 @@ + + + + + + + + + + + + + + + + Firewall - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Firewall

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/1527/
    Product Manualhttps://docs.netgate.com/pfsense/en/latest/monitoring/copying-logs-to-a-remote-host-with-syslog.html?highlight=syslog
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    pfsense:filterlogNone
    pfsense:*All programs other than filterlog
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    pfsensepfsensenetopsnone
    pfsense_filterlogpfsense:filterlognetfwnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-pfsense_firewall.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-pfsense_firewall[sc4s-vps] {
    + filter { 
    +        "${HOST}" eq "pfsense_firewall"
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('pfsense')
    +            product('firewall')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Polycom/rprm/index.html b/3.4.1/sources/vendor/Polycom/rprm/index.html new file mode 100644 index 0000000000..3c052fd8b7 --- /dev/null +++ b/3.4.1/sources/vendor/Polycom/rprm/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + RPRM - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    RPRM

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    polycom:rprm:syslog
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    polycom_rprmpolycom:rprm:syslognetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Proofpoint/index.html b/3.4.1/sources/vendor/Proofpoint/index.html new file mode 100644 index 0000000000..6882deab4c --- /dev/null +++ b/3.4.1/sources/vendor/Proofpoint/index.html @@ -0,0 +1,5609 @@ + + + + + + + + + + + + + + + + Proofpoint Protection Server - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Proofpoint Protection Server

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    • NOTE: This filter will simply parse the syslog message itself, and will not perform the (required) re-assembly of related +messages to create meaningful final output. This will require follow-on processing in Splunk.
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3080/
    Product Manualhttps://proofpointcommunities.force.com/community/s/article/Remote-Syslog-Forwarding
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    pps_filter_log
    pps_mail_logThis sourcetype will conflict with sendmail itself, so will require that the PPS send syslog on a dedicated port or be uniquely identifiable with a hostname glob or CIDR block if this sourcetype is desired for PPS.
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    proofpoint_pps_filterpps_filter_logemailnone
    proofpoint_pps_sendmailpps_mail_logemailnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-proofpoint_pps.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-proofpoint_pps[sc4s-vps] {
    + filter { 
    +        host("pps-*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('proofpoint')
    +            product('pps')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Pulse/connectsecure/index.html b/3.4.1/sources/vendor/Pulse/connectsecure/index.html new file mode 100644 index 0000000000..d1372ad84a --- /dev/null +++ b/3.4.1/sources/vendor/Pulse/connectsecure/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + Pulse - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Pulse

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • IETF Frames use port 601/tcp or 6587/TLS
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3852/
    JunOS TechLibraryhttps://docs.pulsesecure.net/WebHelp/Content/PCS/PCS_AdminGuide_8.2/Configuring%20Syslog.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    pulse:connectsecureNone
    pulse:connectsecure:webNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    pulse_connect_securepulse:connectsecurenetfwnone
    pulse_connect_secure_webpulse:connectsecure:webnetproxynone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/PureStorage/array/index.html b/3.4.1/sources/vendor/PureStorage/array/index.html new file mode 100644 index 0000000000..552e336ff2 --- /dev/null +++ b/3.4.1/sources/vendor/PureStorage/array/index.html @@ -0,0 +1,5577 @@ + + + + + + + + + + + + + + + + Array - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Array

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone note TA published on Splunk base does not include syslog extractions
    Product Manual
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    purestorage:array
    purestorage:array:${class}This type is generated from the message
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    purestorage_arraypurestorage:arrayinfraopsNone
    purestorage_array_${class}purestorage:array:classinfraopsclass is extracted as the string following “purity.”
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Qumulo/storage/index.html b/3.4.1/sources/vendor/Qumulo/storage/index.html new file mode 100644 index 0000000000..ac4859c569 --- /dev/null +++ b/3.4.1/sources/vendor/Qumulo/storage/index.html @@ -0,0 +1,5563 @@ + + + + + + + + + + + + + + + + Storage - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Storage

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    qumulo:storageNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    qumulo_storagequmulo:storageinfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Radware/defensepro/index.html b/3.4.1/sources/vendor/Radware/defensepro/index.html new file mode 100644 index 0000000000..6f3fdb0a1c --- /dev/null +++ b/3.4.1/sources/vendor/Radware/defensepro/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + DefensePro - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    DefensePro

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNote this add-on does not provide functional extractions https://splunkbase.splunk.com/app/4480/
    Product Manualhttps://www.radware.com/products/defensepro/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    radware:defenseproNote some events do not contain host
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    radware_defenseproradware:defensepronetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Raritan/dsx/index.html b/3.4.1/sources/vendor/Raritan/dsx/index.html new file mode 100644 index 0000000000..0204a7b01b --- /dev/null +++ b/3.4.1/sources/vendor/Raritan/dsx/index.html @@ -0,0 +1,5597 @@ + + + + + + + + + + + + + + + + DSX - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    DSX

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    Product Manualhttps://www.raritan.com/products/kvm-serial/serial-console-servers/serial-over-ip-console-server
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    raritan:dsxNote events do not contain host
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    raritan_dsxraritan:dsxinfraopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-raritan_dsx.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-raritan_dsx[sc4s-vps] {
    + filter { 
    +        host("raritan_dsx*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('raritan')
    +            product('dsx')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Ricoh/mfp/index.html b/3.4.1/sources/vendor/Ricoh/mfp/index.html new file mode 100644 index 0000000000..da22e70da8 --- /dev/null +++ b/3.4.1/sources/vendor/Ricoh/mfp/index.html @@ -0,0 +1,5598 @@ + + + + + + + + + + + + + + + + MFP - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    MFP

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    ricoh:mfpNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    ricoh_syslogricoh:mfpprinternone
    +

    SC4S Options

    + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_SOURCE_RICOH_SYSLOG_FIXHOSTyesCurrent firmware incorrectly sends the value of HOST in the program field if this is ever corrected this value will need to be set back to no we suggest using yes
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Riverbed/index.html b/3.4.1/sources/vendor/Riverbed/index.html new file mode 100644 index 0000000000..21e307b235 --- /dev/null +++ b/3.4.1/sources/vendor/Riverbed/index.html @@ -0,0 +1,5604 @@ + + + + + + + + + + + + + + + + Syslog - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Syslog

    +

    Used when more specific steelhead or steelconnect can not be identified

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • RFC5424 or Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    riverbed:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    riverbed_syslogriverbed:syslognetopsnone
    riverbed_syslog_nix_syslognix:syslogosnixnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-riverbed_syslog.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-riverbed_syslog[sc4s-vps] {
    + filter {      
    +        host(....)
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('riverbed')
    +            product('syslog')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Riverbed/steelconnect/index.html b/3.4.1/sources/vendor/Riverbed/steelconnect/index.html new file mode 100644 index 0000000000..341519de3b --- /dev/null +++ b/3.4.1/sources/vendor/Riverbed/steelconnect/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Steelconnect - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Steelconnect

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • RFC5424 or Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    riverbed:steelconnectNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    riverbed_syslog_steelconnectriverbed:steelconnectnetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Riverbed/steelhead/index.html b/3.4.1/sources/vendor/Riverbed/steelhead/index.html new file mode 100644 index 0000000000..ddba2e3fe0 --- /dev/null +++ b/3.4.1/sources/vendor/Riverbed/steelhead/index.html @@ -0,0 +1,5597 @@ + + + + + + + + + + + + + + + + SteelHead - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    SteelHead

    +

    Key facts

    +
      +
    • Partial MSG Format based filter
    • +
    • RFC5424 or Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    riverbed:steelheadNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    riverbed_syslog_steelheadriverbed:steelheadnetopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-riverbed_syslog.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-riverbed_syslog[sc4s-vps] {
    + filter {      
    +        host(....)
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('riverbed')
    +            product('syslog')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Ruckus/SmartZone/index.html b/3.4.1/sources/vendor/Ruckus/SmartZone/index.html new file mode 100644 index 0000000000..839e798cdd --- /dev/null +++ b/3.4.1/sources/vendor/Ruckus/SmartZone/index.html @@ -0,0 +1,5568 @@ + + + + + + + + + + + + + + + + Smart Zone - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Smart Zone

    +

    Some events may not match the source format please report issues if found

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    ruckus:smartzoneNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    ruckus_smartzoneruckus:smartzonenetopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Schneider/apc/index.html b/3.4.1/sources/vendor/Schneider/apc/index.html new file mode 100644 index 0000000000..4e71f542fb --- /dev/null +++ b/3.4.1/sources/vendor/Schneider/apc/index.html @@ -0,0 +1,5597 @@ + + + + + + + + + + + + + + + + APC Power systems - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    APC Power systems

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    Product Manualmultiple
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    apc:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    schneider_apcapc:syslogmainnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-schneider_apc.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-schneider_apc[sc4s-vps] {
    + filter { 
    +        host("test_apc-*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('schneider')
    +            product('apc')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/SecureAuthIdP/secureauth_idp/index.html b/3.4.1/sources/vendor/SecureAuthIdP/secureauth_idp/index.html new file mode 100644 index 0000000000..745a5ee4e4 --- /dev/null +++ b/3.4.1/sources/vendor/SecureAuthIdP/secureauth_idp/index.html @@ -0,0 +1,5563 @@ + + + + + + + + + + + + + + + + SecureAuth IdP - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    SecureAuth IdP

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • RFC 5424 Framed
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3008
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    secureauth:idpnone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    secureauth_idpsecureauth:idpnetopsNone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Solace/evenbroker/index.html b/3.4.1/sources/vendor/Solace/evenbroker/index.html new file mode 100644 index 0000000000..beb416e0fd --- /dev/null +++ b/3.4.1/sources/vendor/Solace/evenbroker/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + EventBroker - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    EventBroker

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    solace:eventbrokerNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    solace_eventbrokersolace:eventbrokermainnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Sophos/Firewall/index.html b/3.4.1/sources/vendor/Sophos/Firewall/index.html new file mode 100644 index 0000000000..5c7f6cd1f0 --- /dev/null +++ b/3.4.1/sources/vendor/Sophos/Firewall/index.html @@ -0,0 +1,5687 @@ + + + + + + + + + + + + + + + + Web Appliance - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Web Appliance

    +

    Key facts

    +
      +
    • Community requested filter
    • +
    • Default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/6187/
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    sophos:xg:atpNone
    sophos:xg:anti_spamNone
    sophos:xg:anti_virusNone
    sophos:xg:content_filteringNone
    sophos:xg:eventNone
    sophos:xg:firewallNone
    sophos:xg:sslNone
    sophos:xg:sandboxNone
    sophos:xg:system_healthNone
    sophos:xg:heartbeatNone
    sophos:xg:wafNone
    sophos:xg:wireless_protectionNone
    sophos:xg:idpNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    sophos_xg_atpsophos:xg:atpnetdlpnone
    sophos_xg_anti_spamsophos:xg:anti_spamnetdlpnone
    sophos_xg_anti_virussophos:xg:anti_virusnetdlpnone
    sophos_xg_content_filteringsophos:xg:content_filteringnetdlpnone
    sophos_xg_eventsophos:xg:eventnetdlpnone
    sophos_xg_firewallsophos:xg:firewallnetdlpnone
    sophos_xg_sslsophos:xg:sslnetdlpnone
    sophos_xg_sandboxsophos:xg:sandboxnetdlpnone
    sophos_xg_system_healthsophos:xg:system_healthnetdlpnone
    sophos_xg_heartbeatsophos:xg:heartbeatnetdlpnone
    sophos_xg_wafsophos:xg:wafnetdlpnone
    sophos_xg_wireless_protectionsophos:xg:wireless_protectionnetdlpnone
    sophos_xg_idpsophos:xg:idpnetdlpnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Sophos/webappliance/index.html b/3.4.1/sources/vendor/Sophos/webappliance/index.html new file mode 100644 index 0000000000..f17ba7ce70 --- /dev/null +++ b/3.4.1/sources/vendor/Sophos/webappliance/index.html @@ -0,0 +1,5597 @@ + + + + + + + + + + + + + + + + Web Appliance - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Web Appliance

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    sophos:webapplianceNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    sophos_webappliancesophos:webappliancenetproxynone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-sophos_webappliance.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-sophos_webappliance[sc4s-vps] {
    + filter { 
    +        host("test-sophos-webapp-" type(string) flags(prefix))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('sophos')
    +            product('webappliance')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Spectracom/index.html b/3.4.1/sources/vendor/Spectracom/index.html new file mode 100644 index 0000000000..861c7be6f6 --- /dev/null +++ b/3.4.1/sources/vendor/Spectracom/index.html @@ -0,0 +1,5601 @@ + + + + + + + + + + + + + + + + NTP Appliance - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    NTP Appliance

    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    spectracom:ntpNone
    nix:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    spectracom_ntpspectracom:ntpnetopsnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-spectracom_ntp.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-spectracom_ntp[sc4s-vps] {
    + filter { 
    +        netmask(169.254.100.1/24)
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('spectracom')
    +            product('ntp')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Splunk/heavyforwarder/index.html b/3.4.1/sources/vendor/Splunk/heavyforwarder/index.html new file mode 100644 index 0000000000..ecf8d6e580 --- /dev/null +++ b/3.4.1/sources/vendor/Splunk/heavyforwarder/index.html @@ -0,0 +1,5730 @@ + + + + + + + + + + + + + + + + Splunk Heavy Forwarder - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Splunk Heavy Forwarder

    +

    In certain network architectures such as those using data diodes or those networks requiring “in the clear” inspection at network egress +SC4S can be used to accept specially formatted output from Splunk as RFC5424 syslog.

    +

    Key facts

    +
      +
    • RFC 5424 using port 601 (Framed)
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    spectracom:ntpNone
    nix:syslogNone
    +

    Sourcetype and Index Configuration

    +

    Index Source and Sourcetype will be used as determined by the Source/HWF

    +

    Splunk Configuration

    +
      +
    • Splunk MUST have props and transforms applied (Typically via add-ons)
    • +
    • This configuration will consume all output presuming no S2S is allowed no Splunk destination will be used
    • +
    +

    outputs.conf

    +
    #Because audit trail is protected and we can't transform it we can not use default we must use tcp_routing
    +[tcpout]
    +defaultGroup = NoForwarding
    +
    +[tcpout:nexthop]
    +server = localhost:9000
    +sendCookedData = false
    +
    + +

    props.conf

    +
    [default]
    +ADD_EXTRA_TIME_FIELDS = none
    +ANNOTATE_PUNCT = false
    +SHOULD_LINEMERGE = false
    +TRANSFORMS-zza-syslog = syslog_canforward, metadata_meta,  metadata_source, metadata_sourcetype, metadata_index, metadata_host, metadata_subsecond, metadata_time, syslog_prefix, syslog_drop_zero
    +# The following applies for TCP destinations where the IETF frame is required
    +TRANSFORMS-zzz-syslog = syslog_octal, syslog_octal_append
    +# Comment out the above and uncomment the following for udp
    +#TRANSFORMS-zzz-syslog-udp = syslog_octal, syslog_octal_append, syslog_drop_zero
    +
    +[audittrail]
    +# We can't transform this source type its protected
    +TRANSFORMS-zza-syslog =
    +TRANSFORMS-zzz-syslog =
    +
    + +

    transforms.conf

    +
    syslog_canforward]
    +REGEX = ^.(?!audit)
    +DEST_KEY = _TCP_ROUTING
    +FORMAT = nexthop
    +
    +[metadata_meta]
    +SOURCE_KEY = _meta
    +REGEX = (?ims)(.*)
    +FORMAT = ~~~SM~~~$1~~~EM~~~$0 
    +DEST_KEY = _raw
    +
    +[metadata_source]
    +SOURCE_KEY = MetaData:Source
    +REGEX = ^source::(.*)$
    +FORMAT = s="$1"] $0
    +DEST_KEY = _raw
    +
    +[metadata_sourcetype]
    +SOURCE_KEY = MetaData:Sourcetype
    +REGEX = ^sourcetype::(.*)$
    +FORMAT = st="$1" $0
    +DEST_KEY = _raw
    +
    +[metadata_index]
    +SOURCE_KEY = _MetaData:Index
    +REGEX = (.*)
    +FORMAT = i="$1" $0
    +DEST_KEY = _raw
    +
    +[metadata_host]
    +SOURCE_KEY = MetaData:Host
    +REGEX = ^host::(.*)$
    +FORMAT = " h="$1" $0
    +DEST_KEY = _raw
    +
    +[syslog_prefix]
    +SOURCE_KEY = _time
    +REGEX = (.*)
    +FORMAT = <1>1 - - SPLUNK - COOKED [fields@274489 $0
    +DEST_KEY = _raw
    +
    +[metadata_time]
    +SOURCE_KEY = _time
    +REGEX = (.*)
    +FORMAT =  t="$1$0
    +DEST_KEY = _raw
    +
    +[metadata_subsecond]
    +SOURCE_KEY = _meta
    +REGEX = \_subsecond\:\:(\.\d+)
    +FORMAT = $1 $0
    +DEST_KEY = _raw
    +
    +[syslog_octal]
    +INGEST_EVAL= mlen=length(_raw)+1
    +
    +[syslog_octal_append]
    +INGEST_EVAL = _raw=mlen + " " + _raw
    +
    +[syslog_drop_zero]
    +INGEST_EVAL = queue=if(mlen<10,"nullQueue",queue)
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Splunk/sc4s/index.html b/3.4.1/sources/vendor/Splunk/sc4s/index.html new file mode 100644 index 0000000000..b2dc72e3ff --- /dev/null +++ b/3.4.1/sources/vendor/Splunk/sc4s/index.html @@ -0,0 +1,5701 @@ + + + + + + + + + + + + + + + + Splunk Connect for Syslog (SC4S) - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Splunk Connect for Syslog (SC4S)

    +

    Key facts

    +
      +
    • Internal events
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4740/
    Product Manualhttps://splunk-connect-for-syslog.readthedocs.io/en/latest/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    sc4s:eventsInternal events from the SC4S container and underlying syslog-ng process
    sc4s:metricssyslog-ng operational metrics that will be delivered directly to a metrics index in Splunk
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    splunk_sc4s_eventsallmainnone
    splunk_sc4s_metricsallem_metricsnone
    splunk_sc4s_fallbackallmainnone
    +

    Filter type

    +

    SC4S events and metrics are generated automatically and no specific ports or filters need to be configured for the collection of this data.

    +

    Setup and Configuration

    +
      +
    • The default index used for sc4s metrics will be “_metrics”
    • +
    • Metrics data is collected by default as traditional events; use of Splunk Metrics is enabled by an opt-in set by the variable SC4S_DEST_SPLUNK_SC4S_METRICS_HEC. See the “Options” +section below for details.
    • +
    +

    Options

    + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_DEST_SPLUNK_SC4S_METRICS_HECmulti2event produce metrics as plain text events; single produce metrics using Splunk Enterprise 7.3 single metrics format; multi produce metrics using Splunk Enterprise >8.1 multi metric format multi2 produces improved (reduced resource consumption) multi metric format
    SC4S_SOURCE_MARK_MESSAGE_NULLQUEUEyes(yes
    +

    Verification

    +

    SC4S will generate versioning events at startup. These startup events can be used to validate HEC is set up properly on the Splunk side.

    +
    index=<asconfigured> sourcetype=sc4s:events | stats count by host
    +
    + +

    Metrics can be observed via the “Analytics–>Metrics” navigation in the Search and Reporting app in Splunk.

    +
      +
    • NOTE: The presentation of metrics is undergoing active development; the delivery of metrics is currently considered an experimental feature.
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/StealthWatch/StealthIntercept/index.html b/3.4.1/sources/vendor/StealthWatch/StealthIntercept/index.html new file mode 100644 index 0000000000..551b65c4b8 --- /dev/null +++ b/3.4.1/sources/vendor/StealthWatch/StealthIntercept/index.html @@ -0,0 +1,5576 @@ + + + + + + + + + + + + + + + + Stealth Intercept - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Stealth Intercept

    +

    Key facts

    +
      +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4609/
    Product Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    StealthINTERCEPTNone
    StealthINTERCEPT:alertsSC4S Format Shifts to JSON override template to t_msg_hdr for original raw
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    stealthbits_stealthinterceptStealthINTERCEPTnetidsnone
    stealthbits_stealthintercept_alertsStealthINTERCEPT:alertsnetidsNote TA does not support this source type
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Tanium/platform/index.html b/3.4.1/sources/vendor/Tanium/platform/index.html new file mode 100644 index 0000000000..2275485b03 --- /dev/null +++ b/3.4.1/sources/vendor/Tanium/platform/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + Platform - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Platform

    +

    This source requires a TLS connection; in most cases enabling TLS and using the default port 6514 is adequate. +The source is understood to require a valid certificate.

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Requires TLS and uses IETF Frames use port 6587 after TLS Configuration
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4439/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    taniumnone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    tanium_syslogepintelnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Tenable/ad/index.html b/3.4.1/sources/vendor/Tenable/ad/index.html new file mode 100644 index 0000000000..2db6cec718 --- /dev/null +++ b/3.4.1/sources/vendor/Tenable/ad/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + ad - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    ad

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4060/
    Product Manual
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    tenable:ad:alertsNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    tenable_adtenable:ad:alertsoswinsecnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Tenable/nnm/index.html b/3.4.1/sources/vendor/Tenable/nnm/index.html new file mode 100644 index 0000000000..4068917fe8 --- /dev/null +++ b/3.4.1/sources/vendor/Tenable/nnm/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + nnm - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    nnm

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4060/
    Product Manualhttps://docs.tenable.com/integrations/Splunk/Content/Splunk2/ProcessWorkflow.htm
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    tenable:nnm:vulnNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    tenable_nnmtenable:nnm:vulnnetfwnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Thycotic/secretserver/index.html b/3.4.1/sources/vendor/Thycotic/secretserver/index.html new file mode 100644 index 0000000000..a6aafe4625 --- /dev/null +++ b/3.4.1/sources/vendor/Thycotic/secretserver/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Secret Server - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Secret Server

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4060/
    Product Manual
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    thycotic:syslogNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    Thycotic Software_Secret Serverthycotic:syslognetauthnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Tintri/syslog/index.html b/3.4.1/sources/vendor/Tintri/syslog/index.html new file mode 100644 index 0000000000..78340bd7b7 --- /dev/null +++ b/3.4.1/sources/vendor/Tintri/syslog/index.html @@ -0,0 +1,5573 @@ + + + + + + + + + + + + + + + + Syslog - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Syslog

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    tintrinone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    tintri_sysloginfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Trend/deepsecurity/index.html b/3.4.1/sources/vendor/Trend/deepsecurity/index.html new file mode 100644 index 0000000000..bb0e422303 --- /dev/null +++ b/3.4.1/sources/vendor/Trend/deepsecurity/index.html @@ -0,0 +1,5651 @@ + + + + + + + + + + + + + + + + Deep Security - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Deep Security

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on CEFhttps://splunkbase.splunk.com/app/1936/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    deepsecurity-system_events
    deepsecurity-intrusion_prevention
    deepsecurity-integrity_monitoring
    deepsecurity-log_inspection
    deepsecurity-web_reputation
    deepsecurity-firewall
    deepsecurity-antimalware
    deepsecurity-app_control
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    Trend Micro_Deep Security AgentdeepsecurityepintelUsed only if a correct source type is not matched
    Trend Micro_Deep Security Agent_intrusion preventiondeepsecurity-intrusion_preventionepintel
    Trend Micro_Deep Security Agent_integrity monitoringdeepsecurity-integrity_monitoringepintel
    Trend Micro_Deep Security Agent_log inspectiondeepsecurity-log_inspectionepintel
    Trend Micro_Deep Security Agent_web reputationdeepsecurity-web_reputationepintel
    Trend Micro_Deep Security Agent_firewalldeepsecurity-firewallepintel
    Trend Micro_Deep Security Agent_antimalwaredeepsecurity-antimalwareepintel
    Trend Micro_Deep Security Agent_app controldeepsecurity-app_controlepintel
    Trend Micro_Deep Security Managerdeepsecurity-system_eventsepintel
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Ubiquiti/unifi/index.html b/3.4.1/sources/vendor/Ubiquiti/unifi/index.html new file mode 100644 index 0000000000..6e43563c60 --- /dev/null +++ b/3.4.1/sources/vendor/Ubiquiti/unifi/index.html @@ -0,0 +1,5627 @@ + + + + + + + + + + + + + + + + Unifi - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Unifi

    +

    All Ubiquity Unfi firewalls, switches, and access points share a common syslog configuration via the NMS.

    +
      +
    • Login to NMS
    • +
    • Navigate to settings
    • +
    • Navigate to Site
    • +
    • Enable Remote syslog server
    • +
    • Enter hostname and port
    • +
    +

    Key facts

    +
      +
    • Requires vendor product by source configuration
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/4107/
    Product Manualhttps://https://help.ubnt.com/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    ubntUsed when no sub source type is required by add on
    ubnt:fwUSG events
    ubnt:threatUSG IDS events
    ubnt:switchUnifi Switches
    ubnt:wirelessAccess Point logs
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    ubiquiti_unifiubntnetopsnone
    ubiquiti_unifi_fwubnt:fwnetfwnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-ubiquiti_unifi_fw.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-ubiquiti_unifi_fw[sc4s-vps] {
    + filter { 
    +        host("usg-*" type(glob))
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('ubiquiti')
    +            product('unifi')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/VMWare/airwatch/index.html b/3.4.1/sources/vendor/VMWare/airwatch/index.html new file mode 100644 index 0000000000..dead7d7905 --- /dev/null +++ b/3.4.1/sources/vendor/VMWare/airwatch/index.html @@ -0,0 +1,5574 @@ + + + + + + + + + + + + + + + + Airwatch - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Airwatch

    +

    AirWatch is a product used for enterprise mobility management (EMM) software and standalone management systems for content, applications and email.

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Product Manualhttps://docs.vmware.com/en/VMware-Workspace-ONE/index.html
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    vmware:airwatchNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    vmware_airwatchepintelnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/VMWare/carbonblack/index.html b/3.4.1/sources/vendor/VMWare/carbonblack/index.html new file mode 100644 index 0000000000..700edf33cd --- /dev/null +++ b/3.4.1/sources/vendor/VMWare/carbonblack/index.html @@ -0,0 +1,5785 @@ + + + + + + + + + + + + + + + + Carbon Black Protection - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Carbon Black Protection

    +

    RFC 5424 Format

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    vmware:cb:protectCommon sourcetype
    +

    Source

    + + + + + + + + + + + + + +
    sourcenotes
    carbonblack:protection:cefNote this method of onboarding is not recommended for a more complete experience utilize the json format supported by he product with hec or s3
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    vmware_cb-protectcarbonblack:protection:cefepintelnone
    +

    Legacy CEF Format

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onnone
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cefCommon sourcetype
    +

    Source

    + + + + + + + + + + + + + +
    sourcenotes
    carbonblack:protection:cefNote this method of onboarding is not recommended for a more complete experience utilize the json format supported by he product with hec or s3
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    Carbon Black_Protectioncarbonblack:protection:cefepintelnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/VMWare/horizonview/index.html b/3.4.1/sources/vendor/VMWare/horizonview/index.html new file mode 100644 index 0000000000..43beb358a2 --- /dev/null +++ b/3.4.1/sources/vendor/VMWare/horizonview/index.html @@ -0,0 +1,5571 @@ + + + + + + + + + + + + + + + + Horizon View - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Horizon View

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Manualunknown
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    vmware:horizonNone
    nix:syslogWhen used with a default port this will follow the generic NIX configuration when using a dedicated port, IP or host rules events will follow the index configuration for vmware nsx
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    vmware_horizonvmware:horizonmainnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/VMWare/vsphere/index.html b/3.4.1/sources/vendor/VMWare/vsphere/index.html new file mode 100644 index 0000000000..c630a864af --- /dev/null +++ b/3.4.1/sources/vendor/VMWare/vsphere/index.html @@ -0,0 +1,5773 @@ + + + + + + + + + + + + + + + + Vsphere - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    Vsphere

    + +

    Product - vSphere - ESX NSX (Controller, Manager, Edge)

    +

    Vmware vsphere product line has multiple old and known issues in syslog output.

    +
      +
    • GUID values sent in place of time stamp
    • +
    • Improper time stamp in all RFC5424 events
    • +
    • No PRI
    • +
    • No syslog header for some split events
    • +
    • mismatch syslog header for some split events (segment 1 contains header remaining segments contain no header)
    • +
    +

    WARNING use of a load balancer with udp will cause “corrupt” event behavior due to out of order message processing caused by the load balancer

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-on ESXhttps://splunkbase.splunk.com/app/5603/
    Splunk Add-on Vcenterhttps://splunkbase.splunk.com/app/5601/
    Splunk Add-on nxsnone
    Splunk Add-on vsannone
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    vmware:esxlog:${PROGRAM}None
    vmware:nsxlog:${PROGRAM}None
    vmware:vclog:${PROGRAM}None
    nix:syslogWhen used with a default port, this will follow the generic NIX configuration. When using a dedicated port, IP or host rules events will follow the index configuration for vmware nsx
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    vmware_vsphere_esxvmware:esxlog:${PROGRAM}infraopsnone
    vmware_vsphere_nsxvmware:nxlog:${PROGRAM}infraopsnone
    vmware_vsphere_nsxfwvmware:nxlog:dfwpktlogsinfraopsnone
    vmware_vsphere_vcvmware:vclog:${PROGRAM}infraopsnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content when using the default configuration. +SC4S will normalize the structure of vmware events from multiple incorrectly formed varients to rfc5424 format to improve parsing

    +

    Setup and Configuration

    +
      +
    • Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source.
    • +
    • Refer to the Splunk TA documentation for the specific customer format required for proxy configuration
    • +
    • Select TCP or SSL transport option
    • +
    • Ensure the format of the event is customized per Splunk documentation
    • +
    +

    Options

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Variabledefaultdescription
    SC4S_LISTEN_VMWARE_VSPHERE_TCP_PORTempty stringEnable a TCP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_VMWARE_VSPHERE_UDP_PORTempty stringEnable a UDP port for this specific vendor product using a comma-separated list of port numbers
    SC4S_LISTEN_VMWARE_VSPHERE_TLS_PORTempty stringEnable a TLS port for this specific vendor product using a comma-separated list of port numbers
    SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSGempty stringempty/yes groups known instances of improperly split events set “yes” to return to enable
    +

    Verification

    +

    An active proxy will generate frequent events. Use the following search to validate events are present per source device

    +
    index=<asconfigured> sourcetype="vmware:vsphere:*" | stats count by host
    +
    + +

    Automatic Parser Configuration

    +

    Enable the following options in the env_file

    +
    #Do not enable with a SNAT load balancer
    +SC4S_USE_NAME_CACHE=yes
    +#Combine known split events into a single event for Splunk
    +SC4S_SOURCE_VMWARE_VSPHERE_GROUPMSG=yes
    +#Learn vendor product from recognized events and apply to generic events
    +#for example after the first vpxd event sshd will utilize vps "vmware_vsphere_nix_syslog" rather than "nix_syslog"
    +SC4S_USE_VPS_CACHE=yes
    +
    + +

    Manual Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-vmware_vsphere.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-vmware_vsphere[sc4s-vps] {
    + filter {      
    +        #netmask(169.254.100.1/24)
    +        #host("-esx-")
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('vmware')
    +            product('vsphere')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Varonis/datadvantage/index.html b/3.4.1/sources/vendor/Varonis/datadvantage/index.html new file mode 100644 index 0000000000..7d2a13c64f --- /dev/null +++ b/3.4.1/sources/vendor/Varonis/datadvantage/index.html @@ -0,0 +1,5575 @@ + + + + + + + + + + + + + + + + DatAdvantage - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    DatAdvantage

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Technology Add-On for Varonishttps://splunkbase.splunk.com/app/4256/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    varonis:ta
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    Varonis Inc._DatAdvantagevaronis:tamain
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Vectra/cognito/index.html b/3.4.1/sources/vendor/Vectra/cognito/index.html new file mode 100644 index 0000000000..458d6aa8fc --- /dev/null +++ b/3.4.1/sources/vendor/Vectra/cognito/index.html @@ -0,0 +1,5645 @@ + + + + + + + + + + + + + + + + Cognito - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Cognito

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Technology Add-On for Vectra Cognitohttps://splunkbase.splunk.com/app/4408/
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    vectra:cognito:detect
    vectra:cognito:accountdetect
    vectra:cognito:accountscoring
    vectra:cognito:audit
    vectra:cognito:campaigns
    vectra:cognito:health
    vectra:cognito:hostscoring
    vectra:cognito:accountlockdown
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    Vectra Networks_X Seriesvectra:cognito:detectmain
    Vectra Networks_X Series_accountdetectvectra:cognito:accountdetectmain
    Vectra Networks_X Series_ascvectra:cognito:accountscoringmain
    Vectra Networks_X Series_auditvectra:cognito:auditmain
    Vectra Networks_X Series_campaignsvectra:cognito:campaignsmain
    Vectra Networks_X Series_healthvectra:cognito:healthmain
    Vectra Networks_X Series_hscvectra:cognito:hostscoringmain
    Vectra Networks_X Series_lockdownvectra:cognito:accountlockdownmain
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Wallix/bastion/index.html b/3.4.1/sources/vendor/Wallix/bastion/index.html new file mode 100644 index 0000000000..f2c3a87b22 --- /dev/null +++ b/3.4.1/sources/vendor/Wallix/bastion/index.html @@ -0,0 +1,5593 @@ + + + + + + + + + + + + + + + + Bastion - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Bastion

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3661/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    WB:syslognote this sourcetype includes program:rdproxy all other data will be treated as nix
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    wallix_bastioninfraopsmainnone
    +

    Parser Configuration

    +
    #/opt/sc4s/local/config/app-parsers/app-vps-wallix_bastion.conf
    +#File name provided is a suggestion it must be globally unique
    +
    +application app-vps-test-wallix_bastion[sc4s-vps] {
    + filter { 
    +        host('^wasb')
    +    }; 
    +    parser { 
    +        p_set_netsource_fields(
    +            vendor('wallix')
    +            product('bastion')
    +        ); 
    +    };   
    +};
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/XYPro/mergedaudit/index.html b/3.4.1/sources/vendor/XYPro/mergedaudit/index.html new file mode 100644 index 0000000000..864bbd0d23 --- /dev/null +++ b/3.4.1/sources/vendor/XYPro/mergedaudit/index.html @@ -0,0 +1,5567 @@ + + + + + + + + + + + + + + + + Merged Audit - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Merged Audit

    +

    XY Pro merged audit also called XYGate or XMA is the defacto solution for syslog from HP Nonstop Server (Tandem)

    +

    Key facts

    +
      +
    • Legacy BSD Format default port 514 CEF Format
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onNone
    Product Manualhttps://xypro.com/products/hpe-software-from-xypro/
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    cefNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    XYPRO_NONSTOPcefinfraopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Zscaler/lss/index.html b/3.4.1/sources/vendor/Zscaler/lss/index.html new file mode 100644 index 0000000000..e91b9dfda6 --- /dev/null +++ b/3.4.1/sources/vendor/Zscaler/lss/index.html @@ -0,0 +1,5600 @@ + + + + + + + + + + + + + + + + LSS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    LSS

    +

    The ZScaler product manual includes and extensive section of configuration for multiple Splunk TCP input ports around page +26. When using SC4S these ports are not required and should not be used. Simply configure all outputs from the LSS to utilize +the IP or host name of the SC4S instance and port 514

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3865/
    Product Manualhttps://community.zscaler.com/t/zscaler-splunk-app-design-and-installation-documentation/4728
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    zscaler_lss-appNone
    zscaler_lss-authNone
    zscaler_lss-bbaNone
    zscaler_lss-connectorNone
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    zscaler_lsszscalerlss_zpa-appnetproxynone
    zscaler_lsszscalerlss_zpa_authnetproxynone
    zscaler_lsszscalerlss_zpa_authnetproxynone
    zscaler_lsszscalerlss_zpa_connectornetproxynone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/Zscaler/nss/index.html b/3.4.1/sources/vendor/Zscaler/nss/index.html new file mode 100644 index 0000000000..a9bde2d309 --- /dev/null +++ b/3.4.1/sources/vendor/Zscaler/nss/index.html @@ -0,0 +1,5668 @@ + + + + + + + + + + + + + + + + NSS - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    NSS

    +

    The ZScaler product manual includes and extensive section of configuration for multiple Splunk TCP input ports around page +26. When using SC4S these ports are not required and should not be used. Simply configure all outputs from the NSS to utilize +the IP or host name of the SC4S instance and port 514

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + +
    RefLink
    Splunk Add-onhttps://splunkbase.splunk.com/app/3865/
    Product Manualhttps://community.zscaler.com/t/zscaler-splunk-app-design-and-installation-documentation/4728
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    zscaler_nss_alertsRequires format customization add \tvendor=Zscaler\tproduct=alerts immediately prior to the \n in the NSS Alert Web format. See Zscaler manual for more info.
    zscaler_nss_dnsRequires format customization add \tvendor=Zscaler\tproduct=dns immediately prior to the \n in the NSS DNS format. See Zscaler manual for more info.
    zscaler_nss_webNone
    zscaler_nss_fwRequires format customization add \tvendor=Zscaler\tproduct=fw immediately prior to the \n in the Firewall format. See Zscaler manual for more info.
    +

    Sourcetype and Index Configuration

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keysourcetypeindexnotes
    zscaler_nss_alertszscalernss-alertsmainnone
    zscaler_nss_dnszscalernss-dnsnetdnsnone
    zscaler_nss_fwzscalernss-fwnetfwnone
    zscaler_nss_webzscalernss-webnetproxynone
    zscaler_nss_tunnelzscalernss-tunnelnetopsnone
    zscaler_zia_auditzscalernss-zia-auditnetopsnone
    zscaler_zia_sandboxzscalernss-zia-sandboxmainnone
    +

    Filter type

    +

    MSG Parse: This filter parses message content

    +

    Setup and Configuration

    +
      +
    • Install the Splunk Add-on on the search head(s) for the user communities interested in this data source. If SC4S is exclusively used the addon is not required on the indexer.
    • +
    • Review and update the splunk_metadata.csv file and set the index and sourcetype as required for the data source.
    • +
    • Refer to the Splunk TA documentation for the specific customer format required for proxy configuration
    • +
    • Select TCP or SSL transport option
    • +
    • Ensure the format of the event is customized per Splunk documentation
    • +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/a10networks/vthunder/index.html b/3.4.1/sources/vendor/a10networks/vthunder/index.html new file mode 100644 index 0000000000..460146bfef --- /dev/null +++ b/3.4.1/sources/vendor/a10networks/vthunder/index.html @@ -0,0 +1,5616 @@ + + + + + + + + + + + + + + + + a10networks vthunder - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    a10networks vthunder

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + + + + + + + + + +
    RefLink
    A10 Networks SSL Insight Apphttps://splunkbase.splunk.com/app/3937
    A10 Networks Application Firewall Apphttps://splunkbase.splunk.com/app/3920
    A10 Networks L4 Firewall Apphttps://splunkbase.splunk.com/app/3910
    +

    Sourcetypes

    + + + + + + + + + + + + + + + + + +
    sourcetypenotes
    a10networks:vThunder:cefCEF
    a10networks:vThunder:syslogSyslog
    +

    Source

    + + + + + + + + + + + + + +
    sourcenotes
    a10networks:vThunderNone
    +

    Index Configuration

    + + + + + + + + + + + + + + + + + +
    keysourceindexnotes
    a10networks_vThundera10networks:vThundernetwaf, netopsnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/sources/vendor/syslog-ng/loggen/index.html b/3.4.1/sources/vendor/syslog-ng/loggen/index.html new file mode 100644 index 0000000000..8f250679d2 --- /dev/null +++ b/3.4.1/sources/vendor/syslog-ng/loggen/index.html @@ -0,0 +1,5574 @@ + + + + + + + + + + + + + + + + loggen - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    loggen

    +

    Loggen is a tool used to load test syslog implementations.

    +

    Key facts

    +
      +
    • MSG Format based filter
    • +
    • Legacy BSD Format default port 514
    • +
    + + + + + + + + + + + + + + +
    RefLink
    Product Manualhttps://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.26/administration-guide/96#loggen.1
    +

    Sourcetypes

    + + + + + + + + + + + + + +
    sourcetypenotes
    syslogng:loggenBy default, loggen uses the legacy BSD-syslog message format.
    BSD example:
    loggen --inet --dgram --number 1 <ip> <port>
    RFC5424 example:
    loggen --inet --dgram -PF --number 1 <ip> <port>
    Refer to above manual link for more examples.
    +

    Index Configuration

    + + + + + + + + + + + + + + + +
    keyindexnotes
    syslogng_loggenmainnone
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/throughput.png b/3.4.1/throughput.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0d0179430d31db787be4ce70087b5d172d17d6 GIT binary patch literal 29010 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 UcW)>q;az%ax3q5-UAGSYKbFpo)&Kwi literal 0 HcmV?d00001 diff --git a/3.4.1/troubleshooting/troubleshoot_SC4S_server/index.html b/3.4.1/troubleshooting/troubleshoot_SC4S_server/index.html new file mode 100644 index 0000000000..fbda7bafe7 --- /dev/null +++ b/3.4.1/troubleshooting/troubleshoot_SC4S_server/index.html @@ -0,0 +1,5966 @@ + + + + + + + + + + + + + + + + SC4S Startup and Validation - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    SC4S Server Startup and Operational Validation

    +

    The following sections will guide the administrator to the most commons solutions to startup and +operational issues with SC4S. In general, if you are just starting out with SC4S and wish to +simply run with the “stock” configuration, startup out of systemd is recommended. If, on the other +hand, you are in the depths of a custom configuration of SC4S with significant modifications (such +as multiple unique ports for sources, hostname/CIDR block configuration for sources, new log paths, +etc.) then it is best to start SC4S with the container runtime command (podman or docker) +directly from the command line (below). When you are satisfied with the operation, a transition to +systemd can then be made.

    +

    systemd Errors During SC4S Startup

    +

    Most issues that occur with startup and operation of sc4s typically involve syntax errors or duplicate listening ports. If you are +running out of systemd, you may see this at startup:

    +
    [root@sc4s syslog-ng]# systemctl start sc4s
    +Job for sc4s.service failed because the control process exited with error code. See "systemctl status sc4s.service" and "journalctl -xe" for details.
    +
    + +

    Follow the checks below to resolve the issue:

    +

    Is the SC4S container running?

    +

    There may be nothing untoward after starting with systemd, but the container is not running at all +after checking with podman logs SC4S or podman ps. A more informative command than journalctl -xe is the following,

    +
    journalctl -b -u sc4s | tail -100
    +
    + +

    which will print the last 100 lines of the system journal in far more detail, which should be sufficient to see the specific failure +(syntax or runtime) and guide you in troubleshooting why the container exited unexpectedly.

    +

    Does the SC4S container start (and run) properly outside of the systemd service environment?

    +

    As an alternative to launching via systemd during the initial installation phase, you may wish to test the container startup outside of the +systemd startup environment. This alternative should be considered required when undergoing heavy troubleshooting or log path development (e.g. +when SC4S_DEBUG_CONTAINER is set to “yes”). The following command will launch the container directly from the CLI. +This command assumes the local mounted directories are set up as shown in the “getting started” examples; adjust for your local requirements:

    +
    /usr/bin/podman run \
    +    -v splunk-sc4s-var:/var/lib/syslog-ng \
    +    -v /opt/sc4s/local:/etc/syslog-ng/conf.d/local:z \
    +    -v /opt/sc4s/archive:/var/lib/syslog-ng/archive:z \
    +    -v /opt/sc4s/tls:/etc/syslog-ng/tls:z \
    +    --env-file=/opt/sc4s/env_file \
    +    --network host \
    +    --name SC4S \
    +    --rm splunk/scs:latest
    +
    + +

    If you are using docker, substitute “docker” for “podman” for the container runtime command above.

    +

    Is the container still running (when systemd thinks it’s not)?

    +

    In some instances, (particularly when SC4S_DEBUG_CONTAINER=yes) an SC4S container might not shut down completely when starting/stopping +out of systemd, and systemd will attempt to start a new container when one is already running with the SC4S name. +You will see this type of output when viewing the journal after a failed start caused by this condition, or a similar message when the container +is run directly from the CLI:

    +
    Jul 15 18:45:20 sra-sc4s-alln01-02 podman[11187]: Error: error creating container storage: the container name "SC4S" is already in use by "894357502b2a7142d097ea3ca1468d1cb4fbc69959a9817a1bbe145a09d37fb9". You have to remove that container...
    +Jul 15 18:45:20 sra-sc4s-alln01-02 systemd[1]: sc4s.service: Main process exited, code=exited, status=125/n/a
    +
    + +

    To rectify this, simply execute

    +
    podman rm -f SC4S
    +
    + +

    SC4S should then start normally.

    +
      +
    • NOTE: This symptom will recur if SC4S_DEBUG_CONTAINER is set to “yes”. Do not attempt to use systemd when this variable is set; use the +CLI podman or docker commands directly to start/stop SC4S.
    • +
    +

    HEC/token connection errors (AKA “No data in Splunk”)

    +

    SC4S performs basic HEC connectivity and index checks at startup. These indicate general connection issues and indexes that may not be +accessible and/or configured on the Splunk side. To check the container logs which contain the results of these tests, run:

    +
    /usr/bin/<podman|docker> logs SC4S
    +
    + +

    and note the output. You will see entries similar to these:

    +
    SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful; checking indexes...
    +
    +SC4S_ENV_CHECK_INDEX: Checking email {"text":"Incorrect index","code":7,"invalid-event-number":1}
    +SC4S_ENV_CHECK_INDEX: Checking epav {"text":"Incorrect index","code":7,"invalid-event-number":1}
    +SC4S_ENV_CHECK_INDEX: Checking main {"text":"Success","code":0}
    +
    + +

    Note the specifics of the indexes that are not configured correctly, and rectify in the Splunk configuration. If this is not addressed +properly, you may see output similar to the below when data flows into sc4s:

    +
    Mar 16 19:00:06 b817af4e89da syslog-ng[1]: Server returned with a 4XX (client errors) status code, which means we are not authorized or the URL is not found.; url='https://splunk-instance.com:8088/services/collector/event', status_code='400', driver='d_hec#0', location='/opt/syslog-ng/etc/conf.d/destinations/splunk_hec.conf:2:5'
    +Mar 16 19:00:06 b817af4e89da syslog-ng[1]: Server disconnected while preparing messages for sending, trying again; driver='d_hec#0', location='/opt/syslog-ng/etc/conf.d/destinations/splunk_hec.conf:2:5', worker_index='4', time_reopen='10', batch_size='1000'
    +
    + +

    This is an indication that the standard d_hec destination in syslog-ng (which is the route to Splunk) is being rejected by the HEC endpoint. +A 400 error (not 404) is normally caused by an index that has not been created on the Splunk side. This can present a serious problem, as +just one bad index will “taint” the entire batch (in this case, 1000 events) and prevent any of them from being sent to Splunk. It is +imperative that the container logs be free of these kinds of errors in production. You can use the alternate HEC debug destination (below) +to help debug this condition by sending direct “curl” commands to the HEC endpoint outside of the SC4S setting.

    +

    SC4S Local Disk Resource Considerations

    +
      +
    • +

      Check the HEC connection to Splunk. If the connection is down for a long period of time, the local disk buffer used for backup will exhaust local +disk resources. The size of the local disk buffer is configured in the env_file: Disk buffer configuration

      +
    • +
    • +

      Check the env_file to see if SC4S_DEST_GLOBAL_ALTERNATES is set to d_hec_debug,d_archive or other file-based destination; all of these will +consume significant local disk space.

      +
    • +
    +

    d_hec_debug and d_archive are organized by sourcetype; the du -sh * command can be used in each subdirectory to find the culprit.

    +
      +
    • Try rebuilding sc4s volume
    • +
    +
    podman volume rm splunk-sc4s-var
    +podman volume create splunk-sc4s-var
    +
    + +
      +
    • Try pruning containers
    • +
    +
    podman system prune [--all]
    +
    + +

    SC4S/kernel UDP Input Buffer Settings

    +

    SC4S has a setting that requests a certain buffer size when configuring the UDP sockets. The kernel must have its parameters set to at least the +same size (or greater) than the syslog-ng config is requesting, or the following will occur in the SC4S logs:

    +
    /usr/bin/<podman|docker> logs SC4S
    +
    + +

    Note the output. The following warning message is not a failure condition unless we are reaching the upper limit of hardware performance.

    +
    The kernel refused to set the receive buffer (SO_RCVBUF) to the requested size, you probably need to adjust buffer related kernel parameters; so_rcvbuf='1703936', so_rcvbuf_set='425984'
    +
    + +

    Make changes to /etc/sysctl.conf. Changing receive buffer values here to 16 MB:

    +
    net.core.rmem_default = 17039360
    +net.core.rmem_max = 17039360 
    +
    + +

    Run following commands for changes to be affected.

    +
    sysctl -p restart SC4S 
    +
    + +

    SC4S TLS Listener Validation

    +

    To verify the correct configuration of the TLS server use the following command. Replace the IP, FQDN, +and port as appropriate:

    +
    <podman|docker> run -ti drwetter/testssl.sh --severity MEDIUM --ip 127.0.0.1 selfsigned.example.com:6510
    +
    + +

    Timezone mismatch in events

    +

    By default, SC4S resolves the timezone to GMT. If customer have a preference to use local TZ then set the user TZ preference in Splunk during search time rather than at index time. +Timezone config documentation

    +

    Dealing with non RFC-5424 compliant sources

    +

    If a data source you are trying to ingest claims it is RFC-5424 compliant but you are getting an “Error processing log message:” from SC4S, +the message violates the standard in some way. Unfortunately multiple vendors claim RFC-5424 compliance without fully testing that they are. +In this case, the underlying syslog-ng process will send an error event, with the location of the error in the original event highlighted with +>@< to indicate where the error occurred. Here is an example error message:

    +
    { [-]
    +   ISODATE: 2020-05-04T21:21:59.001+00:00
    +   MESSAGE: Error processing log message: <14>1 2020-05-04T21:21:58.117351+00:00 arcata-pks-cluster-1 pod.log/cf-workloads/logspinner-testing-6446b8ef - - [kubernetes@47450 cloudfoundry.org/process_type="web" cloudfoundry.org/rootfs-version="v75.0.0" cloudfoundry.org/version="eae53cc3-148d-4395-985c-8fef0606b9e3" controller-revision-hash="logspinner-testing-6446b8ef05-7db777754c" cloudfoundry.org/app_guid="f71634fe-34a4-4f89-adac-3e523f61a401" cloudfoundry.org/source_type="APP" security.istio.io/tlsMode="istio" statefulset.kubernetes.io/pod-n>@<ame="logspinner-testing-6446b8ef05-0" cloudfoundry.org/guid="f71634fe-34a4-4f89-adac-3e523f61a401" namespace_name="cf-workloads" object_name="logspinner-testing-6446b8ef05-0" container_name="opi" vm_id="vm-e34452a3-771e-4994-666e-bfbc7eb77489"] Duration 10.00299412s TotalSent 10 Rate 0.999701 
    +   PID: 33
    +   PRI: <43>
    +   PROGRAM: syslog-ng
    +}
    +
    + +

    In this example the error can be seen in the snippet statefulset.kubernetes.io/pod-n>@<ame. Looking at the spec for RFC5424, it states that +the “SD-NAME” (the left-hand side of the name=value pairs) cannot be longer than 32 printable ASCII characters. In this message, the indicated +name exceeds that. Unfortunately, this is a spec violation on the part of the vendor. Ideally the vendor would address this violation so their +logs would be RFC-5424 compliant. Alternatively, an exception could be added to the SC4S filter log path (or an alternative (workaround) log +path created) for the data source if the vendor can’t/won’t fix the defect.

    +

    In this example, the reason RAWMSG is not shown in the fields above is because this error message is coming from syslog-ng itself – +not the filter/log path. In messages of the type Error processing log message: where the PROGRAM is shown as syslog-ng, that is the +clue your incoming message is not RFC-5424 compliant (though it’s often close, as is the case here).

    +

    In BYOE the metrics/internal processing message are abusing the terminal , how to fix this?

    +

    In BYOE, when we try to start sc4s service , the terminal is getting abused from the internal and metrics log +Example of the issue is Github Terminal abuse issue

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_SEND_METRICS_TERMINAL=no
    +
    + +

    Restart SC4S and it will not send any more metrics data to Terminal.

    +
      +
    • NOTE: This symptom will recur if SC4S_DEBUG_CONTAINER is set to “yes”. Do not attempt to use systemd when this variable is set; use the +CLI podman or docker commands directly to start/stop SC4S.
    • +
    +

    SC4S dropping invalid events

    +

    Sometimes you notice you are missing some CEF logs which are not RFC compliant but logs are important, how to fix this?

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_DISABLE_DROP_INVALID_CEF=yes
    +
    + +

    Restart SC4S and it will not drop any invalid CEF format.

    +

    If you notice you are missing some VMWARE CB-PROTECT logs which are not RFC compliant but logs are important, how to fix this?

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_DISABLE_DROP_INVALID_VMWARE_CB_PROTECT=yes
    +
    + +

    Restart SC4S and it will not drop any invalid VMWARE CB-PROTECT format.

    +

    If you notice you are missing some CISCO IOS logs which are not RFC compliant but logs are important, how to fix this?

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_DISABLE_DROP_INVALID_CISCO=yes
    +
    + +

    Restart SC4S and it will not drop any invalid CISCO IOS format.

    +

    If you notice you are missing some VMWARE VSPHERE logs which are not RFC compliant but logs are important, how to fix this?

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_DISABLE_DROP_INVALID_VMWARE_VSPHERE=yes
    +
    + +

    Restart SC4S and it will not drop any invalid VMWARE VSPHERE format.

    +

    If you notice you are missing some RAW BSD logs which are not RFC compliant but logs are important, how to fix this?

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_DISABLE_DROP_INVALID_RAW_BSD=yes
    +
    + +

    Restart SC4S and it will not drop any invalid RAW BSD format.

    +

    If you notice you are missing some RAW XML logs which are not RFC compliant but logs are important, how to fix this?

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_DISABLE_DROP_INVALID_XML=yes
    +
    + +

    Restart SC4S and it will not drop any invalid RAW XML format.

    +

    If you notice you are missing some HPE JETDIRECT logs which are not RFC compliant but logs are important, how to fix this?

    +

    To rectify this, Please set following property in env_file

    +
    SC4S_DISABLE_DROP_INVALID_HPE=yes
    +
    + +

    Restart SC4S and it will not drop any invalid HPE JETDIRECT format.

    +

    NOTE: Please use only in this case of exception and this is splunk-unsupported feature. Also this setting might impact SC4S performance.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/troubleshooting/troubleshoot_resources/index.html b/3.4.1/troubleshooting/troubleshoot_resources/index.html new file mode 100644 index 0000000000..8823876669 --- /dev/null +++ b/3.4.1/troubleshooting/troubleshoot_resources/index.html @@ -0,0 +1,5760 @@ + + + + + + + + + + + + + + + + SC4S Logging and Troubleshooting Resources - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + + + + + +
    +
    + + + + +

    SC4S Logging and Troubleshooting Resources

    +

    Helpful Linux and Container Commands

    +

    Linux service (systemd) commands

    +
      +
    • Check service status systemctl status sc4s
    • +
    • Start service systemctl start service
    • +
    • Stop service systemctl stop service
    • +
    • Restart service systemctl restart service
    • +
    • Enabling service at boot systemctl enable sc4s
    • +
    • Query the system journal journalctl -b -u sc4s
    • +
    +

    Container Commands

    +
      +
    • +

      NOTE: All container commands below can be run with either runtime (podman or docker).

      +
    • +
    • +

      Container logs sudo podman logs SC4S

      +
    • +
    • Exec into SC4S container podman exec -it SC4S bash
    • +
    • Rebuilding SC4S volume
    • +
    +
    podman volume rm splunk-sc4s-var
    +podman volume create splunk-sc4s-var
    +
    + +
      +
    • Pull an image or a repository from a registry podman pull splunk:scs:latest
    • +
    • Remove unused data podman system prune
    • +
    • Load an image from a tar archive or STDIN podman load <tar>
    • +
    +

    Test Commands

    +

    Checking SC4S port using “nc”. Run this command where SC4S is hosted and check for data in Splunk for success and failure

    +
    echo '<raw_sample>' |nc <host> <port>
    +
    + +

    Obtaining “On-the-wire” Raw Events

    +

    In almost all cases during development or troubleshooting, you will need to obtain samples of the messages exactly as they are received by +SC4S. These “raw” events contain the full syslog message (including the <PRI> preamble) and differs from those that appear in Splunk after +processing by sc4s and/or Splunk. This is the only way to determine if SC4S parsers and filters are operating correctly, as raw messages are +needed for “playback” when testing. In addition, the community supporting SC4S will always first ask for raw samples (kind of like the way +Splunk support always asks for “diags”) before any development or troubleshooting exercise.

    +

    Here are some options for obtaining raw logs for one or more sourcetypes:

    +
      +
    • Run tcpdump on the collection interface and display the results in ASCII. You will see events of the form
    • +
    +
    <165>1 2007-02-15T09:17:15.719Z router1 mgd 3046 UI_DBASE_LOGOUT_EVENT [junos@2636.1.1.1.2.18 username="user"] User 'user' exiting configuration mode
    +
    + +

    buried in the packet contents.

    +
      +
    • Set the variable SC4S_SOURCE_STORE_RAWMSG=yes in env_file and restart sc4s. This will store the raw message in a syslog-ng macro called +RAWMSG and will be displayed in Splunk for all fallback messages. For most other sourcetypes, the RAWMSG is not displayed, but can be +surfaced by changing the output template to one of the JSON variants (t_JSON_3164 or t_JSON_5424 depending on RFC message type). See +SC4S metadata configuration for +more details.
    • +
    +

    ** IMPORTANT! Be sure to turn off the RAWMSG variable when you are finished, as it doubles the memory and disk requirements of sc4s. Do not +use RAWMSG in production!

    +
      +
    • Lastly, you can enable the alternate destination d_rawmsg for one or more sourcetypes. This destination will write the raw messages to the +container directory /var/syslog-ng/archive/rawmsg/<sourcetype> (which is typically mapped locally to /opt/sc4s/archive). +Within this directory, the logs are organized by host and time. This method can be useful when raw samples are needed for events that +partially parse (or parse into the wrong sourcetype) and the output template is not JSON (see above).
    • +
    +

    “exec” into the container (advanced)

    +

    You can confirm how the templating process created the actual syslog-ng config files that are in use by “exec’ing in” to the container +and navigating the syslog-ng config filesystem directly. To do this, run

    +
    /usr/bin/podman exec -it SC4S /bin/bash
    +
    + +

    and navigate to /opt/syslog-ng/etc/ to see the actual config files in use. If you are adept with container operations and syslog-ng +itself, you can modify files directly and reload syslog-ng with the command kill -1 1 in the container. +You can also run the /entrypoint.sh script by hand (or a subset of it, such as everything +but syslog-ng) and have complete control over the templating and underlying syslog-ng process. +This is an advanced topic and further help can be obtained via the github issue tracker and Slack channels.

    +

    Keeping a failed container running (even more advanced)

    +

    When debugging a configuration syntax issue at startup, it is often helpful to keep the container running after a syslog-ng startup failure. +In order to facilitate troubleshooting and make “on the fly” syslog-ng configuration changes from within a running container, the container +can be forced to remain running when syslog-ng fails to start (which normally terminates the container). This can be enabled by adding +SC4S_DEBUG_CONTAINER=yes to the env_file. Use this capability in conjunction with “exec-ing” into the container described above.

    +
      +
    • NOTE: Do not attempt to enable the debug container mode while running out of systemd. Run the container manually from the CLI, as +podman or docker commands will be required to start, stop, and optionally clean up cruft left behind by the debug process. +Only when SC4S_DEBUG_CONTAINER is set to “no” (or completely unset) should systemd startup processing resume.
    • +
    +

    Fix timezone

    +

    Mismatch in TZ can occur if SC4S and logHost are not in same TZ. This is commonly occurring problem. To fix it one must +create a filter using sc4s-lp-dest-format-d_hec_fmt. Example:

    +
    #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-fix_tz_something.conf
    +
    +block parser app-dest-rewrite-checkpoint_drop-d_fmt_hec_default() {    
    +    channel {
    +            rewrite { fix-time-zone("EST5EDT"); };
    +    };
    +};
    +application app-dest-rewrite-fix_tz_something-d_fmt_hec_default[sc4s-lp-dest-format-d_hec_fmt] {
    +    filter {
    +        match('checkpoint' value('fields.sc4s_vendor') type(string))                 <- this has to be customized
    +        and match('syslog' value('fields.sc4s_product') type(string))                <- this has to be customized
    +        and match('Drop' value('.SDATA.sc4s@2620.action') type(string))              <- this has to be customized
    +        and match('12.' value('.SDATA.sc4s@2620.src') type(string) flags(prefix) );  <- this has to be customized
    +
    +    };    
    +    parser { app-dest-rewrite-fix_tz_something-d_fmt_hec_default(); };   
    +};
    +
    + +

    Or create a post-filter if destport, container, proto are not available in indexed fields:

    +
    #filename: /opt/sc4s/local/config/app_parsers/rewriters/app-dest-rewrite-fix_tz_something.conf
    +
    +block parser app-dest-rewrite-fortinet_fortios-d_fmt_hec_default() {
    +    channel {
    +            rewrite {
    +                  fix-time-zone("EST5EDT");
    +            };
    +    };
    +};
    +
    +application app-dest-rewrite-device-d_fmt_hec_default[sc4s-postfilter] {
    +    filter {
    +         match("xxxx", value("fields.sc4s_destport") type(glob));  <- this has to be customized
    +    };
    +    parser { app-dest-rewrite-fortinet_fortios-d_fmt_hec_default(); };
    +};
    +
    + +

    Note that filter match statement should be aligned to your data! +Parser accepts timezone in formats: “America/New York” or “EST5EDT” (though not short form like “EST” only).

    +

    Cyberark logs known issue

    +

    When the data is received on the indexers all the events are merged together into one. Please check the below link for configuration on cyberark side +https://cyberark-customers.force.com/s/article/00004289

    +

    SC4S events dropping issue when another interface used to receive logs

    +

    When second / another interface used to receive syslog traffic, RPF (Reverse Path Forwarding filtering) in RHEL (configured as default configuration) was dropping the events.

    +

    Need to add static route for source device to point back dedicated syslog interface. +Reference: https://access.redhat.com/solutions/53031

    +

    SC4S events not ingested in splunk from other VM

    +

    When data is transmitted through an echo message from the same instance, it is successfully sending data to splunk. However, when the echo is sent from a different instance, the data does not appear in splunk and no errors are reported in the logs. +To resolve this issue, it is essential to check whether an internal firewall is enabled. If an internal firewall is active, it’s important to verify whether the default port 514 or the port which you have used is blocked or not. +Here are some commands to check and enable, if not enabled:

    +
    #To list all the firewall ports
    +sudo firewall-cmd --list-all
    +#to enable 514 if its not enabled
    +sudo firewall-cmd --zone=public --permanent --add-port=514/udp
    +sudo firewall-cmd  --reload
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/upgrade/index.html b/3.4.1/upgrade/index.html new file mode 100644 index 0000000000..24fce8f423 --- /dev/null +++ b/3.4.1/upgrade/index.html @@ -0,0 +1,5588 @@ + + + + + + + + + + + + + + + + Upgrading SC4S - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Upgrading Splunk Connect for Syslog

    +

    Splunk Connect for Syslog is updated regularly using a CI/CD development process. The notes below outline significant changes that +must be taken into account prior and after an upgrade. Ensure to follow specific instructions below to ensure a smooth +transition to a new version of SC4S in production.

    +

    Upgrade process

    +

    Check the current version of SC4S by running sudo <docker or podman> logs SC4S. For the latest version, use the +latest tag for the SC4S image in the sc4s.service unit file:

    +
    [Service]
    +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest"
    +
    + +

    Restart the service +sudo systemctl restart sc4s

    +

    Using the “3” version is recommended, but a specific version can be set in the unit file if desired:

    +
    [Service]
    +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:3.0.0"
    +
    + +

    See the release information for more detail.

    +

    Upgrade Notes

    +

    Version 3 does not introduce any breaking change. To upgrade to version 3 review service file and change container reference from container2 to container3. +For a step by step guide see here. +Need up migrating legacy “log paths” or v1 app-parsers for v2. Open an issue with the original config attached and a compressed pcap of sample data for testing and we will evaluate inclusion of the source in an upcoming release.

    +

    Upgrade from <2.23.0

    +
      +
    • Vmware vsphere fix esx and vcenter sourcetype for TA compatibility
    • +
    +

    Upgrade from <2

    +
      +
    • Before upgrading to 2.x review sc4s.service and manually update differences compared to current doc
    • +
    • EXPERIMENTAL SNMP Trap feature has been removed migrate to Splunk Connect for SNMP
    • +
    • Legacy “gomplate” log path template support was deprecated in 1.x and has been removed in 2.x log paths must be migrated to app-parser style config prior to upgrade
    • +
    • Check env_file for “MICROFOCUS_ARCSIGHT” variables and replace with CEF variables see source doc
    • +
    • Remove old style “CISCO_*_LEGACY” from env_file and replace per docs
    • +
    • New images will no longer be published to docker.io please review current getting started docs and update the sc4s.service file accordingly
    • +
    • Internal metrics will now use “multi” format by default if using unsupported versions of Splunk <8.1 see configuration doc to revert to “event” or “single” format.
    • +
    • Internal metrics will now use the _metrics index by default update vendor_product key ‘sc4s_metrics’ to change the index
    • +
    • Deprecated use of vendor_product_by_source for null queue or dropping events see See Filtering events from output this use will be removed in v3
    • +
    • Deprecated use of vendor_product_by_source for identification of source by host/ip see new app-parser syntax documented per applicable product
    • +
    • Deprecated use of SPLUNK_HEC_ALT_DESTS this variable is no longer used and will be ignored
    • +
    • Deprecated use of SC4S_DEST_GLOBAL_ALTERNATES this variable will be removed in future major versions see Destinations section in configuration
    • +
    • Corrected Vendor/Product keys BREAKING Please see source doc pages and revise configuration as part of upgrade
    • +
    • Zscaler (multiple changes)
    • +
    • dell_emc_powerswitch_n
    • +
    • F5_BIGIP
    • +
    • INFOBLOX
    • +
    • Dell RSA SecureID
    • +
    • ubiquiti
    • +
    • SC4S will now use “splunk as the vendor value, “sc4s” as the product
    • +
    • Fireye HX
    • +
    • Juniper
    • +
    • ossec
    • +
    • Palo Alto Networks
    • +
    • Pulse Connect
    • +
    • ricoh
    • +
    • tanium
    • +
    • tintri
    • +
    • Vmware esx,vcenter,nsx,horizon
    • +
    • Wallix Bastion
    • +
    • Internal Changes
    • +
    • .dest_key field is no longer used
    • +
    • sc4s_vendor_product is read only and will be removed
    • +
    • sc4s_vendor new contains “vendor” portion of vendor_product
    • +
    • sc4s_vendor_product new contains “product” portion of vendor product
    • +
    • sc4s_class new contains additional data previously concatenated to vendor_product
    • +
    • removed meta_key
    • +
    • Custom “app-parsers” Critical Change
    • +
    +
    #Current app parsers contain one or more lines
    +vendor_product('value_here')
    +#This must change to failure to make this change will prevent sc4s from starting
    +vendor('value')
    +product('here')
    +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/3.4.1/v3_upgrade/index.html b/3.4.1/v3_upgrade/index.html new file mode 100644 index 0000000000..609c465385 --- /dev/null +++ b/3.4.1/v3_upgrade/index.html @@ -0,0 +1,5453 @@ + + + + + + + + + + + + + + + + Upgrading Splunk Connect for Syslog v2 -> v3 - Splunk Connect for Syslog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + +

    Upgrading Splunk Connect for Syslog v2 -> v3

    +

    Upgrade process (for version newer than 2.3.0)

    +

    In general the upgrade process consists of three steps: +- change of container version +- restart of service +- validation +NOTE: Version 3 of SC4S is using alpine linux distribution as base image in opposition to previous versions which used UBI (Red Hat) image.

    +

    Docker/Podman

    +

    Update container image version

    +

    In the service file: /lib/systemd/system/sc4s.service container image reference should be updated to version 3 with latest tag:

    +
    [Service]
    +Environment="SC4S_IMAGE=ghcr.io/splunk/splunk-connect-for-syslog/container3:latest"
    +
    + +

    Restart sc4s service

    +

    Restart the service: +sudo systemctl restart sc4s

    +

    Validate

    +

    After the above command is executed successfully, the following information with the version becomes visible in the container logs: +sudo podman logs SC4S for podman or sudo docker logs SC4S for docker. +Expected output:

    +
    SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:fallback...
    +SC4S_ENV_CHECK_HEC: Splunk HEC connection test successful to index=main for sourcetype=sc4s:events...
    +syslog-ng checking config
    +sc4s version=3.0.0
    +starting goss
    +starting syslog-ng 
    +
    + +

    If you are upgrading from version lower than 2.3.0 please refer to this guide.

    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/versions.json b/versions.json index 9c83cf5da2..ee745076a6 100644 --- a/versions.json +++ b/versions.json @@ -1 +1 @@ -[{"version": "2161", "title": "2161", "aliases": []}, {"version": "2158", "title": "2158", "aliases": []}, {"version": "2157", "title": "2157", "aliases": []}, {"version": "2156", "title": "2156", "aliases": []}, {"version": "2154", "title": "2154", "aliases": []}, {"version": "2153", "title": "2153", "aliases": []}, {"version": "2152", "title": "2152", "aliases": []}, {"version": "2151", "title": "2151", "aliases": []}, {"version": "2150", "title": "2150", "aliases": []}, {"version": "2146", "title": "2146", "aliases": []}, {"version": "2145", "title": "2145", "aliases": []}, {"version": "2143", "title": "2143", "aliases": []}, {"version": "2141", "title": "2141", "aliases": []}, {"version": "2138", "title": "2138", "aliases": []}, {"version": "2137", "title": "2137", "aliases": []}, {"version": "2135", "title": "2135", "aliases": []}, {"version": "2133", "title": "2133", "aliases": []}, {"version": "2131", "title": "2131", "aliases": []}, {"version": "2129", "title": "2129", "aliases": []}, {"version": "2126", "title": "2126", "aliases": []}, {"version": "2125", "title": "2125", "aliases": []}, {"version": "2124", "title": "2124", "aliases": []}, {"version": "2123", "title": "2123", "aliases": []}, {"version": "2122", "title": "2122", "aliases": []}, {"version": "2121", "title": "2121", "aliases": []}, {"version": "2120", "title": "2120", "aliases": []}, {"version": "2119", "title": "2119", "aliases": []}, {"version": "2118", "title": "2118", "aliases": []}, {"version": "2117", "title": "2117", "aliases": []}, {"version": "2115", "title": "2115", "aliases": []}, {"version": "2112", "title": "2112", "aliases": []}, {"version": "2111", "title": "2111", "aliases": []}, {"version": "2109", "title": "2109", "aliases": []}, {"version": "2105", "title": "2105", "aliases": []}, {"version": "2104", "title": "2104", "aliases": []}, {"version": "2103", "title": "2103", "aliases": []}, {"version": "2102", "title": "2102", "aliases": []}, {"version": "2101", "title": "2101", "aliases": []}, {"version": "2100", "title": "2100", "aliases": []}, {"version": "2099", "title": "2099", "aliases": []}, {"version": "2097", "title": "2097", "aliases": []}, {"version": "2096", "title": "2096", "aliases": []}, {"version": "2095", "title": "2095", "aliases": []}, {"version": "2093", "title": "2093", "aliases": []}, {"version": "2092", "title": "2092", "aliases": []}, {"version": "2089", "title": "2089", "aliases": []}, {"version": "2087", "title": "2087", "aliases": []}, {"version": "2086", "title": "2086", "aliases": []}, {"version": "2082", "title": "2082", "aliases": []}, {"version": "2079", "title": "2079", "aliases": []}, {"version": "2078", "title": "2078", "aliases": []}, {"version": "2077", "title": "2077", "aliases": []}, {"version": "2072", "title": "2072", "aliases": []}, {"version": "2071", "title": "2071", "aliases": []}, {"version": "2070", "title": "2070", "aliases": []}, {"version": "2069", "title": "2069", "aliases": []}, {"version": "2068", "title": "2068", "aliases": []}, {"version": "2067", "title": "2067", "aliases": []}, {"version": "2065", "title": "2065", "aliases": []}, {"version": "2064", "title": "2064", "aliases": []}, {"version": "2063", "title": "2063", "aliases": []}, {"version": "2062", "title": "2062", "aliases": []}, {"version": "2061", "title": "2061", "aliases": []}, {"version": "2060", "title": "2060", "aliases": []}, {"version": "2059", "title": "2059", "aliases": []}, {"version": "2057", "title": "2057", "aliases": []}, {"version": "2054", "title": "2054", "aliases": []}, {"version": "2053", "title": "2053", "aliases": []}, {"version": "2052", "title": "2052", "aliases": []}, {"version": "2051", "title": "2051", "aliases": []}, {"version": "2050", "title": "2050", "aliases": []}, {"version": "2048", "title": "2048", "aliases": []}, {"version": "2046", "title": "2046", "aliases": []}, {"version": "2044", "title": "2044", "aliases": []}, {"version": "2043", "title": "2043", "aliases": []}, {"version": "2041", "title": "2041", "aliases": []}, {"version": "2039", "title": "2039", "aliases": []}, {"version": "2036", "title": "2036", "aliases": []}, {"version": "2034", "title": "2034", "aliases": []}, {"version": "2032", "title": "2032", "aliases": []}, {"version": "2030", "title": "2030", "aliases": []}, {"version": "2023", "title": "2023", "aliases": []}, {"version": "2021", "title": "2021", "aliases": []}, {"version": "2020", "title": "2020", "aliases": []}, {"version": "2013", "title": "2013", "aliases": []}, {"version": "2009", "title": "2009", "aliases": []}, {"version": "2007", "title": "2007", "aliases": []}, {"version": "1994", "title": "1994", "aliases": []}, {"version": "1992", "title": "1992", "aliases": []}, {"version": "1991", "title": "1991", "aliases": []}, {"version": "1988", "title": "1988", "aliases": []}, {"version": "1986", "title": "1986", "aliases": []}, {"version": "1985", "title": "1985", "aliases": []}, {"version": "1984", "title": "1984", "aliases": []}, {"version": "1983", "title": "1983", "aliases": []}, {"version": "1982", "title": "1982", "aliases": []}, {"version": "1981", "title": "1981", "aliases": []}, {"version": "1980", "title": "1980", "aliases": []}, {"version": "1978", "title": "1978", "aliases": []}, {"version": "1977", "title": "1977", "aliases": []}, {"version": "1973", "title": "1973", "aliases": []}, {"version": "1971", "title": "1971", "aliases": []}, {"version": "1968", "title": "1968", "aliases": []}, {"version": "1964", "title": "1964", "aliases": []}, {"version": "1961", "title": "1961", "aliases": []}, {"version": "1960", "title": "1960", "aliases": []}, {"version": "1950", "title": "1950", "aliases": []}, {"version": "1945", "title": "1945", "aliases": []}, {"version": "1943", "title": "1943", "aliases": []}, {"version": "1942", "title": "1942", "aliases": []}, {"version": "1940", "title": "1940", "aliases": []}, {"version": "1937", "title": "1937", "aliases": []}, {"version": "1930", "title": "1930", "aliases": []}, {"version": "1927", "title": "1927", "aliases": []}, {"version": "1925", "title": "1925", "aliases": []}, {"version": "1919", "title": "1919", "aliases": []}, {"version": "1913", "title": "1913", "aliases": []}, {"version": "1912", "title": "1912", "aliases": []}, {"version": "1910", "title": "1910", "aliases": []}, {"version": "1894", "title": "1894", "aliases": []}, {"version": "1890", "title": "1890", "aliases": []}, {"version": "1885", "title": "1885", "aliases": []}, {"version": "1884", "title": "1884", "aliases": []}, {"version": "1880", "title": "1880", "aliases": []}, {"version": "1879", "title": "1879", "aliases": []}, {"version": "1876", "title": "1876", "aliases": []}, {"version": "1874", "title": "1874", "aliases": []}, {"version": "1871", "title": "1871", "aliases": []}, {"version": "1870", "title": "1870", "aliases": []}, {"version": "1864", "title": "1864", "aliases": []}, {"version": "1862", "title": "1862", "aliases": []}, {"version": "1857", "title": "1857", "aliases": []}, {"version": "1856", "title": "1856", "aliases": []}, {"version": "1855", "title": "1855", "aliases": []}, {"version": "1852", "title": "1852", "aliases": []}, {"version": "1851", "title": "1851", "aliases": []}, {"version": "1850", "title": "1850", "aliases": []}, {"version": "1847", "title": "1847", "aliases": []}, {"version": "1846", "title": "1846", "aliases": []}, {"version": "1845", "title": "1845", "aliases": []}, {"version": "1841", "title": "1841", "aliases": []}, {"version": "1840", "title": "1840", "aliases": []}, {"version": "1829", "title": "1829", "aliases": []}, {"version": "1828", "title": "1828", "aliases": []}, {"version": "1827", "title": "1827", "aliases": []}, {"version": "1821", "title": "1821", "aliases": []}, {"version": "1817", "title": "1817", "aliases": []}, {"version": "1816", "title": "1816", "aliases": []}, {"version": "1815", "title": "1815", "aliases": []}, {"version": "1813", "title": "1813", "aliases": []}, {"version": "1812", "title": "1812", "aliases": []}, {"version": "1808", "title": "1808", "aliases": []}, {"version": "1805", "title": "1805", "aliases": []}, {"version": "1801", "title": "1801", "aliases": []}, {"version": "1797", "title": "1797", "aliases": []}, {"version": "1795", "title": "1795", "aliases": []}, {"version": "1794", "title": "1794", "aliases": []}, {"version": "1788", "title": "1788", "aliases": []}, {"version": "1783", "title": "1783", "aliases": []}, {"version": "1782", "title": "1782", "aliases": []}, {"version": "1781", "title": "1781", "aliases": []}, {"version": "1776", "title": "1776", "aliases": []}, {"version": "1775", "title": "1775", "aliases": []}, {"version": "1773", "title": "1773", "aliases": []}, {"version": "1772", "title": "1772", "aliases": []}, {"version": "1770", "title": "1770", "aliases": []}, {"version": "1762", "title": "1762", "aliases": []}, {"version": "1759", "title": "1759", "aliases": []}, {"version": "1756", "title": "1756", "aliases": []}, {"version": "1752", "title": "1752", "aliases": []}, {"version": "1747", "title": "1747", "aliases": []}, {"version": "1746", "title": "1746", "aliases": []}, {"version": "1745", "title": "1745", "aliases": []}, {"version": "1743", "title": "1743", "aliases": []}, {"version": "1741", "title": "1741", "aliases": []}, {"version": "1740", "title": "1740", "aliases": []}, {"version": "1739", "title": "1739", "aliases": []}, {"version": "1736", "title": "1736", "aliases": []}, {"version": "1735", "title": "1735", "aliases": []}, {"version": "1733", "title": "1733", "aliases": []}, {"version": "1730", "title": "1730", "aliases": []}, {"version": "1729", "title": "1729", "aliases": []}, {"version": "1723", "title": "1723", "aliases": []}, {"version": "1720", "title": "1720", "aliases": []}, {"version": "1710", "title": "1710", "aliases": []}, {"version": "1709", "title": "1709", "aliases": []}, {"version": "1704", "title": "1704", "aliases": []}, {"version": "1703", "title": "1703", "aliases": []}, {"version": "1695", "title": "1695", "aliases": []}, {"version": "1694", "title": "1694", "aliases": []}, {"version": "1690", "title": "1690", "aliases": []}, {"version": "1686", "title": "1686", "aliases": []}, {"version": "1683", "title": "1683", "aliases": []}, {"version": "1680", "title": "1680", "aliases": []}, {"version": "1678", "title": "1678", "aliases": []}, {"version": "1677", "title": "1677", "aliases": []}, {"version": "1668", "title": "1668", "aliases": []}, {"version": "1667", "title": "1667", "aliases": []}, {"version": "1661", "title": "1661", "aliases": []}, {"version": "1658", "title": "1658", "aliases": []}, {"version": "1656", "title": "1656", "aliases": []}, {"version": "1653", "title": "1653", "aliases": []}, {"version": "1648", "title": "1648", "aliases": []}, {"version": "1646", "title": "1646", "aliases": []}, {"version": "1643", "title": "1643", "aliases": []}, {"version": "1641", "title": "1641", "aliases": []}, {"version": "1637", "title": "1637", "aliases": []}, {"version": "1635", "title": "1635", "aliases": []}, {"version": "1633", "title": "1633", "aliases": []}, {"version": "1632", "title": "1632", "aliases": []}, {"version": "1631", "title": "1631", "aliases": []}, {"version": "1630", "title": "1630", "aliases": []}, {"version": "1628", "title": "1628", "aliases": []}, {"version": "1627", "title": "1627", "aliases": []}, {"version": "1626", "title": "1626", "aliases": []}, {"version": "1625", "title": "1625", "aliases": []}, {"version": "1624", "title": "1624", "aliases": []}, {"version": "1622", "title": "1622", "aliases": []}, {"version": "1620", "title": "1620", "aliases": []}, {"version": "1618", "title": "1618", "aliases": []}, {"version": "1616", "title": "1616", "aliases": []}, {"version": "1614", "title": "1614", "aliases": []}, {"version": "1612", "title": "1612", "aliases": []}, {"version": "1609", "title": "1609", "aliases": []}, {"version": "1606", "title": "1606", "aliases": []}, {"version": "1602", "title": "1602", "aliases": []}, {"version": "1600", "title": "1600", "aliases": []}, {"version": "1599", "title": "1599", "aliases": []}, {"version": "1598", "title": "1598", "aliases": []}, {"version": "1597", "title": "1597", "aliases": []}, {"version": "1593", "title": "1593", "aliases": []}, {"version": "1590", "title": "1590", "aliases": []}, {"version": "1588", "title": "1588", "aliases": []}, {"version": "1587", "title": "1587", "aliases": []}, {"version": "1585", "title": "1585", "aliases": []}, {"version": "1583", "title": "1583", "aliases": []}, {"version": "1580", "title": "1580", "aliases": []}, {"version": "1577", "title": "1577", "aliases": []}, {"version": "1575", "title": "1575", "aliases": []}, {"version": "1573", "title": "1573", "aliases": []}, {"version": "1572", "title": "1572", "aliases": []}, {"version": "1570", "title": "1570", "aliases": []}, {"version": "1568", "title": "1568", "aliases": []}, {"version": "1567", "title": "1567", "aliases": []}, {"version": "1566", "title": "1566", "aliases": []}, {"version": "1565", "title": "1565", "aliases": []}, {"version": "1564", "title": "1564", "aliases": []}, {"version": "1563", "title": "1563", "aliases": []}, {"version": "1562", "title": "1562", "aliases": []}, {"version": "1560", "title": "1560", "aliases": []}, {"version": "1559", "title": "1559", "aliases": []}, {"version": "1558", "title": "1558", "aliases": []}, {"version": "1556", "title": "1556", "aliases": []}, {"version": "1555", "title": "1555", "aliases": []}, {"version": "1553", "title": "1553", "aliases": []}, {"version": "1552", "title": "1552", "aliases": []}, {"version": "1551", "title": "1551", "aliases": []}, {"version": "1548", "title": "1548", "aliases": []}, {"version": "1547", "title": "1547", "aliases": []}, {"version": "1546", "title": "1546", "aliases": []}, {"version": "1544", "title": "1544", "aliases": []}, {"version": "1543", "title": "1543", "aliases": []}, {"version": "1542", "title": "1542", "aliases": []}, {"version": "1540", "title": "1540", "aliases": []}, {"version": "1538", "title": "1538", "aliases": []}, {"version": "1537", "title": "1537", "aliases": []}, {"version": "1536", "title": "1536", "aliases": []}, {"version": "1535", "title": "1535", "aliases": []}, {"version": "1530", "title": "1530", "aliases": []}, {"version": "1529", "title": "1529", "aliases": []}, {"version": "1528", "title": "1528", "aliases": []}, {"version": "1523", "title": "1523", "aliases": []}, {"version": "1522", "title": "1522", "aliases": []}, {"version": "1519", "title": "1519", "aliases": []}, {"version": "1517", "title": "1517", "aliases": []}, {"version": "1516", "title": "1516", "aliases": []}, {"version": "1514", "title": "1514", "aliases": []}, {"version": "1513", "title": "1513", "aliases": []}, {"version": "1508", "title": "1508", "aliases": []}, {"version": "1507", "title": "1507", "aliases": []}, {"version": "1504", "title": "1504", "aliases": []}, {"version": "1503", "title": "1503", "aliases": []}, {"version": "1501", "title": "1501", "aliases": []}, {"version": "1500", "title": "1500", "aliases": []}, {"version": "1497", "title": "1497", "aliases": []}, {"version": "1496", "title": "1496", "aliases": []}, {"version": "1495", "title": "1495", "aliases": []}, {"version": "1489", "title": "1489", "aliases": []}, {"version": "1486", "title": "1486", "aliases": []}, {"version": "1485", "title": "1485", "aliases": []}, {"version": "1482", "title": "1482", "aliases": []}, {"version": "1481", "title": "1481", "aliases": []}, {"version": "1478", "title": "1478", "aliases": []}, {"version": "1475", "title": "1475", "aliases": []}, {"version": "1474", "title": "1474", "aliases": []}, {"version": "1473", "title": "1473", "aliases": []}, {"version": "1472", "title": "1472", "aliases": []}, {"version": "1471", "title": "1471", "aliases": []}, {"version": "1468", "title": "1468", "aliases": []}, {"version": "1467", "title": "1467", "aliases": []}, {"version": "1466", "title": "1466", "aliases": []}, {"version": "1465", "title": "1465", "aliases": []}, {"version": "1463", "title": "1463", "aliases": []}, {"version": "1462", "title": "1462", "aliases": []}, {"version": "1461", "title": "1461", "aliases": []}, {"version": "1460", "title": "1460", "aliases": []}, {"version": "1459", "title": "1459", "aliases": []}, {"version": "1450", "title": "1450", "aliases": []}, {"version": "1449", "title": "1449", "aliases": []}, {"version": "1448", "title": "1448", "aliases": []}, {"version": "1447", "title": "1447", "aliases": []}, {"version": "1446", "title": "1446", "aliases": []}, {"version": "1445", "title": "1445", "aliases": []}, {"version": "1441", "title": "1441", "aliases": []}, {"version": "1290", "title": "1290", "aliases": []}, {"version": "3.4.0", "title": "3.4.0", "aliases": []}, {"version": "3.3.0", "title": "3.3.0", "aliases": []}, {"version": "3.2.0", "title": "3.2.0", "aliases": []}, {"version": "3.1.5", "title": "3.1.5", "aliases": []}, {"version": "3.1.4", "title": "3.1.4", "aliases": []}, {"version": "3.1.3", "title": "3.1.3", "aliases": []}, {"version": "3.1.2", "title": "3.1.2", "aliases": []}, {"version": "3.1.1", "title": "3.1.1", "aliases": []}, {"version": "3.0.0", "title": "3.0.0", "aliases": []}, {"version": "2.49.7", "title": "2.49.7", "aliases": []}, {"version": "2.49.4", "title": "2.49.4", "aliases": []}, {"version": "2.49.3", "title": "2.49.3", "aliases": []}, {"version": "2.49.2", "title": "2.49.2", "aliases": []}, {"version": "2.49.1", "title": "2.49.1", "aliases": []}, {"version": "2.49.0", "title": "2.49.0", "aliases": []}, {"version": "2.48.2", "title": "2.48.2", "aliases": []}, {"version": "2.48.0", "title": "2.48.0", "aliases": []}, {"version": "2.47.0", "title": "2.47.0", "aliases": []}, {"version": "2.45.5", "title": "2.45.5", "aliases": []}, {"version": "2.45.4", "title": "2.45.4", "aliases": []}, {"version": "2.45.3", "title": "2.45.3", "aliases": []}, {"version": "2.45.2", "title": "2.45.2", "aliases": []}, {"version": "2.45.1", "title": "2.45.1", "aliases": []}, {"version": "2.45.0", "title": "2.45.0", "aliases": []}, {"version": "2.44.2", "title": "2.44.2", "aliases": []}, {"version": "2.44.0", "title": "2.44.0", "aliases": []}, {"version": "2.43.2", "title": "2.43.2", "aliases": []}, {"version": "2.42.1", "title": "2.42.1", "aliases": []}, {"version": "2.40.0", "title": "2.40.0", "aliases": []}, {"version": "2.39.0", "title": "2.39.0", "aliases": []}, {"version": "2.37.1", "title": "2.37.1", "aliases": []}, {"version": "2.37.0", "title": "2.37.0", "aliases": []}, {"version": "2.33.0", "title": "2.33.0", "aliases": []}, {"version": "2.32.7", "title": "2.32.7", "aliases": []}, {"version": "2.32.6", "title": "2.32.6", "aliases": []}, {"version": "2.32.5", "title": "2.32.5", "aliases": []}, {"version": "2.32.4", "title": "2.32.4", "aliases": []}, {"version": "2.32.2", "title": "2.32.2", "aliases": []}, {"version": "2.32.0", "title": "2.32.0", "aliases": []}, {"version": "2.31.2", "title": "2.31.2", "aliases": []}, {"version": "2.30.1", "title": "2.30.1", "aliases": []}, {"version": "2.30.0", "title": "2.30.0", "aliases": []}, {"version": "2.29.0", "title": "2.29.0", "aliases": []}, {"version": "2.28.4", "title": "2.28.4", "aliases": []}, {"version": "2.28.3", "title": "2.28.3", "aliases": []}, {"version": "2.28.2", "title": "2.28.2", "aliases": []}, {"version": "2.28.1", "title": "2.28.1", "aliases": []}, {"version": "2.26.5", "title": "2.26.5", "aliases": []}, {"version": "2.26.2", "title": "2.26.2", "aliases": []}, {"version": "2.26.1", "title": "2.26.1", "aliases": []}, {"version": "2.26.0", "title": "2.26.0", "aliases": []}, {"version": "2.23.0", "title": "2.23.0", "aliases": []}, {"version": "2.21.1", "title": "2.21.1", "aliases": []}, {"version": "2.21.0", "title": "2.21.0", "aliases": []}, {"version": "2.19.4", "title": "2.19.4", "aliases": []}, {"version": "2.19.1", "title": "2.19.1", "aliases": []}, {"version": "2.18.1", "title": "2.18.1", "aliases": []}, {"version": "2.17.0", "title": "2.17.0", "aliases": []}, {"version": "2.16.0", "title": "2.16.0", "aliases": []}, {"version": "2.12.1", "title": "2.12.1", "aliases": []}, {"version": "2.12.0", "title": "2.12.0", "aliases": []}, {"version": "2.9.1", "title": "2.9.1", "aliases": []}, {"version": "2.9.0", "title": "2.9.0", "aliases": []}, {"version": "2.8.1", "title": "2.8.1", "aliases": []}, {"version": "2.7.1", "title": "2.7.1", "aliases": []}, {"version": "2.7.0", "title": "2.7.0", "aliases": []}, {"version": "2.6.1", "title": "2.6.1", "aliases": []}, {"version": "2.2.2", "title": "2.2.2", "aliases": []}, {"version": "2.2.1", "title": "2.2.1", "aliases": []}, {"version": "2.1.0", "title": "2.1.0", "aliases": []}, {"version": "1.110.1", "title": "1.110.1", "aliases": []}, {"version": "1.110.0", "title": "1.110.0", "aliases": []}, {"version": "1.109.0", "title": "1.109.0", "aliases": []}, {"version": "1.105.0", "title": "1.105.0", "aliases": []}, {"version": "1.103.0", "title": "1.103.0", "aliases": []}, {"version": "1.100.5", "title": "1.100.5", "aliases": []}, {"version": "1.99.0", "title": "1.99.0", "aliases": []}, {"version": "1.98.0", "title": "1.98.0", "aliases": []}, {"version": "1.96.4", "title": "1.96.4", "aliases": []}, {"version": "1.96.3", "title": "1.96.3", "aliases": []}, {"version": "1.91.18", "title": "1.91.18", "aliases": []}, {"version": "1.91.12", "title": "1.91.12", "aliases": []}, {"version": "1.91.5", "title": "1.91.5", "aliases": []}, {"version": "1.91.1", "title": "1.91.1", "aliases": []}, {"version": "1.90.1", "title": "1.90.1", "aliases": []}, {"version": "1.87.0", "title": "1.87.0", "aliases": []}, {"version": "releases", "title": "releases", "aliases": []}, {"version": "next-major", "title": "next-major", "aliases": []}, {"version": "main", "title": "main", "aliases": ["latest"]}, {"version": "develop", "title": "develop", "aliases": []}] \ No newline at end of file +[{"version": "2161", "title": "2161", "aliases": []}, {"version": "2158", "title": "2158", "aliases": []}, {"version": "2157", "title": "2157", "aliases": []}, {"version": "2156", "title": "2156", "aliases": []}, {"version": "2154", "title": "2154", "aliases": []}, {"version": "2153", "title": "2153", "aliases": []}, {"version": "2152", "title": "2152", "aliases": []}, {"version": "2151", "title": "2151", "aliases": []}, {"version": "2150", "title": "2150", "aliases": []}, {"version": "2146", "title": "2146", "aliases": []}, {"version": "2145", "title": "2145", "aliases": []}, {"version": "2143", "title": "2143", "aliases": []}, {"version": "2141", "title": "2141", "aliases": []}, {"version": "2138", "title": "2138", "aliases": []}, {"version": "2137", "title": "2137", "aliases": []}, {"version": "2135", "title": "2135", "aliases": []}, {"version": "2133", "title": "2133", "aliases": []}, {"version": "2131", "title": "2131", "aliases": []}, {"version": "2129", "title": "2129", "aliases": []}, {"version": "2126", "title": "2126", "aliases": []}, {"version": "2125", "title": "2125", "aliases": []}, {"version": "2124", "title": "2124", "aliases": []}, {"version": "2123", "title": "2123", "aliases": []}, {"version": "2122", "title": "2122", "aliases": []}, {"version": "2121", "title": "2121", "aliases": []}, {"version": "2120", "title": "2120", "aliases": []}, {"version": "2119", "title": "2119", "aliases": []}, {"version": "2118", "title": "2118", "aliases": []}, {"version": "2117", "title": "2117", "aliases": []}, {"version": "2115", "title": "2115", "aliases": []}, {"version": "2112", "title": "2112", "aliases": []}, {"version": "2111", "title": "2111", "aliases": []}, {"version": "2109", "title": "2109", "aliases": []}, {"version": "2105", "title": "2105", "aliases": []}, {"version": "2104", "title": "2104", "aliases": []}, {"version": "2103", "title": "2103", "aliases": []}, {"version": "2102", "title": "2102", "aliases": []}, {"version": "2101", "title": "2101", "aliases": []}, {"version": "2100", "title": "2100", "aliases": []}, {"version": "2099", "title": "2099", "aliases": []}, {"version": "2097", "title": "2097", "aliases": []}, {"version": "2096", "title": "2096", "aliases": []}, {"version": "2095", "title": "2095", "aliases": []}, {"version": "2093", "title": "2093", "aliases": []}, {"version": "2092", "title": "2092", "aliases": []}, {"version": "2089", "title": "2089", "aliases": []}, {"version": "2087", "title": "2087", "aliases": []}, {"version": "2086", "title": "2086", "aliases": []}, {"version": "2082", "title": "2082", "aliases": []}, {"version": "2079", "title": "2079", "aliases": []}, {"version": "2078", "title": "2078", "aliases": []}, {"version": "2077", "title": "2077", "aliases": []}, {"version": "2072", "title": "2072", "aliases": []}, {"version": "2071", "title": "2071", "aliases": []}, {"version": "2070", "title": "2070", "aliases": []}, {"version": "2069", "title": "2069", "aliases": []}, {"version": "2068", "title": "2068", "aliases": []}, {"version": "2067", "title": "2067", "aliases": []}, {"version": "2065", "title": "2065", "aliases": []}, {"version": "2064", "title": "2064", "aliases": []}, {"version": "2063", "title": "2063", "aliases": []}, {"version": "2062", "title": "2062", "aliases": []}, {"version": "2061", "title": "2061", "aliases": []}, {"version": "2060", "title": "2060", "aliases": []}, {"version": "2059", "title": "2059", "aliases": []}, {"version": "2057", "title": "2057", "aliases": []}, {"version": "2054", "title": "2054", "aliases": []}, {"version": "2053", "title": "2053", "aliases": []}, {"version": "2052", "title": "2052", "aliases": []}, {"version": "2051", "title": "2051", "aliases": []}, {"version": "2050", "title": "2050", "aliases": []}, {"version": "2048", "title": "2048", "aliases": []}, {"version": "2046", "title": "2046", "aliases": []}, {"version": "2044", "title": "2044", "aliases": []}, {"version": "2043", "title": "2043", "aliases": []}, {"version": "2041", "title": "2041", "aliases": []}, {"version": "2039", "title": "2039", "aliases": []}, {"version": "2036", "title": "2036", "aliases": []}, {"version": "2034", "title": "2034", "aliases": []}, {"version": "2032", "title": "2032", "aliases": []}, {"version": "2030", "title": "2030", "aliases": []}, {"version": "2023", "title": "2023", "aliases": []}, {"version": "2021", "title": "2021", "aliases": []}, {"version": "2020", "title": "2020", "aliases": []}, {"version": "2013", "title": "2013", "aliases": []}, {"version": "2009", "title": "2009", "aliases": []}, {"version": "2007", "title": "2007", "aliases": []}, {"version": "1994", "title": "1994", "aliases": []}, {"version": "1992", "title": "1992", "aliases": []}, {"version": "1991", "title": "1991", "aliases": []}, {"version": "1988", "title": "1988", "aliases": []}, {"version": "1986", "title": "1986", "aliases": []}, {"version": "1985", "title": "1985", "aliases": []}, {"version": "1984", "title": "1984", "aliases": []}, {"version": "1983", "title": "1983", "aliases": []}, {"version": "1982", "title": "1982", "aliases": []}, {"version": "1981", "title": "1981", "aliases": []}, {"version": "1980", "title": "1980", "aliases": []}, {"version": "1978", "title": "1978", "aliases": []}, {"version": "1977", "title": "1977", "aliases": []}, {"version": "1973", "title": "1973", "aliases": []}, {"version": "1971", "title": "1971", "aliases": []}, {"version": "1968", "title": "1968", "aliases": []}, {"version": "1964", "title": "1964", "aliases": []}, {"version": "1961", "title": "1961", "aliases": []}, {"version": "1960", "title": "1960", "aliases": []}, {"version": "1950", "title": "1950", "aliases": []}, {"version": "1945", "title": "1945", "aliases": []}, {"version": "1943", "title": "1943", "aliases": []}, {"version": "1942", "title": "1942", "aliases": []}, {"version": "1940", "title": "1940", "aliases": []}, {"version": "1937", "title": "1937", "aliases": []}, {"version": "1930", "title": "1930", "aliases": []}, {"version": "1927", "title": "1927", "aliases": []}, {"version": "1925", "title": "1925", "aliases": []}, {"version": "1919", "title": "1919", "aliases": []}, {"version": "1913", "title": "1913", "aliases": []}, {"version": "1912", "title": "1912", "aliases": []}, {"version": "1910", "title": "1910", "aliases": []}, {"version": "1894", "title": "1894", "aliases": []}, {"version": "1890", "title": "1890", "aliases": []}, {"version": "1885", "title": "1885", "aliases": []}, {"version": "1884", "title": "1884", "aliases": []}, {"version": "1880", "title": "1880", "aliases": []}, {"version": "1879", "title": "1879", "aliases": []}, {"version": "1876", "title": "1876", "aliases": []}, {"version": "1874", "title": "1874", "aliases": []}, {"version": "1871", "title": "1871", "aliases": []}, {"version": "1870", "title": "1870", "aliases": []}, {"version": "1864", "title": "1864", "aliases": []}, {"version": "1862", "title": "1862", "aliases": []}, {"version": "1857", "title": "1857", "aliases": []}, {"version": "1856", "title": "1856", "aliases": []}, {"version": "1855", "title": "1855", "aliases": []}, {"version": "1852", "title": "1852", "aliases": []}, {"version": "1851", "title": "1851", "aliases": []}, {"version": "1850", "title": "1850", "aliases": []}, {"version": "1847", "title": "1847", "aliases": []}, {"version": "1846", "title": "1846", "aliases": []}, {"version": "1845", "title": "1845", "aliases": []}, {"version": "1841", "title": "1841", "aliases": []}, {"version": "1840", "title": "1840", "aliases": []}, {"version": "1829", "title": "1829", "aliases": []}, {"version": "1828", "title": "1828", "aliases": []}, {"version": "1827", "title": "1827", "aliases": []}, {"version": "1821", "title": "1821", "aliases": []}, {"version": "1817", "title": "1817", "aliases": []}, {"version": "1816", "title": "1816", "aliases": []}, {"version": "1815", "title": "1815", "aliases": []}, {"version": "1813", "title": "1813", "aliases": []}, {"version": "1812", "title": "1812", "aliases": []}, {"version": "1808", "title": "1808", "aliases": []}, {"version": "1805", "title": "1805", "aliases": []}, {"version": "1801", "title": "1801", "aliases": []}, {"version": "1797", "title": "1797", "aliases": []}, {"version": "1795", "title": "1795", "aliases": []}, {"version": "1794", "title": "1794", "aliases": []}, {"version": "1788", "title": "1788", "aliases": []}, {"version": "1783", "title": "1783", "aliases": []}, {"version": "1782", "title": "1782", "aliases": []}, {"version": "1781", "title": "1781", "aliases": []}, {"version": "1776", "title": "1776", "aliases": []}, {"version": "1775", "title": "1775", "aliases": []}, {"version": "1773", "title": "1773", "aliases": []}, {"version": "1772", "title": "1772", "aliases": []}, {"version": "1770", "title": "1770", "aliases": []}, {"version": "1762", "title": "1762", "aliases": []}, {"version": "1759", "title": "1759", "aliases": []}, {"version": "1756", "title": "1756", "aliases": []}, {"version": "1752", "title": "1752", "aliases": []}, {"version": "1747", "title": "1747", "aliases": []}, {"version": "1746", "title": "1746", "aliases": []}, {"version": "1745", "title": "1745", "aliases": []}, {"version": "1743", "title": "1743", "aliases": []}, {"version": "1741", "title": "1741", "aliases": []}, {"version": "1740", "title": "1740", "aliases": []}, {"version": "1739", "title": "1739", "aliases": []}, {"version": "1736", "title": "1736", "aliases": []}, {"version": "1735", "title": "1735", "aliases": []}, {"version": "1733", "title": "1733", "aliases": []}, {"version": "1730", "title": "1730", "aliases": []}, {"version": "1729", "title": "1729", "aliases": []}, {"version": "1723", "title": "1723", "aliases": []}, {"version": "1720", "title": "1720", "aliases": []}, {"version": "1710", "title": "1710", "aliases": []}, {"version": "1709", "title": "1709", "aliases": []}, {"version": "1704", "title": "1704", "aliases": []}, {"version": "1703", "title": "1703", "aliases": []}, {"version": "1695", "title": "1695", "aliases": []}, {"version": "1694", "title": "1694", "aliases": []}, {"version": "1690", "title": "1690", "aliases": []}, {"version": "1686", "title": "1686", "aliases": []}, {"version": "1683", "title": "1683", "aliases": []}, {"version": "1680", "title": "1680", "aliases": []}, {"version": "1678", "title": "1678", "aliases": []}, {"version": "1677", "title": "1677", "aliases": []}, {"version": "1668", "title": "1668", "aliases": []}, {"version": "1667", "title": "1667", "aliases": []}, {"version": "1661", "title": "1661", "aliases": []}, {"version": "1658", "title": "1658", "aliases": []}, {"version": "1656", "title": "1656", "aliases": []}, {"version": "1653", "title": "1653", "aliases": []}, {"version": "1648", "title": "1648", "aliases": []}, {"version": "1646", "title": "1646", "aliases": []}, {"version": "1643", "title": "1643", "aliases": []}, {"version": "1641", "title": "1641", "aliases": []}, {"version": "1637", "title": "1637", "aliases": []}, {"version": "1635", "title": "1635", "aliases": []}, {"version": "1633", "title": "1633", "aliases": []}, {"version": "1632", "title": "1632", "aliases": []}, {"version": "1631", "title": "1631", "aliases": []}, {"version": "1630", "title": "1630", "aliases": []}, {"version": "1628", "title": "1628", "aliases": []}, {"version": "1627", "title": "1627", "aliases": []}, {"version": "1626", "title": "1626", "aliases": []}, {"version": "1625", "title": "1625", "aliases": []}, {"version": "1624", "title": "1624", "aliases": []}, {"version": "1622", "title": "1622", "aliases": []}, {"version": "1620", "title": "1620", "aliases": []}, {"version": "1618", "title": "1618", "aliases": []}, {"version": "1616", "title": "1616", "aliases": []}, {"version": "1614", "title": "1614", "aliases": []}, {"version": "1612", "title": "1612", "aliases": []}, {"version": "1609", "title": "1609", "aliases": []}, {"version": "1606", "title": "1606", "aliases": []}, {"version": "1602", "title": "1602", "aliases": []}, {"version": "1600", "title": "1600", "aliases": []}, {"version": "1599", "title": "1599", "aliases": []}, {"version": "1598", "title": "1598", "aliases": []}, {"version": "1597", "title": "1597", "aliases": []}, {"version": "1593", "title": "1593", "aliases": []}, {"version": "1590", "title": "1590", "aliases": []}, {"version": "1588", "title": "1588", "aliases": []}, {"version": "1587", "title": "1587", "aliases": []}, {"version": "1585", "title": "1585", "aliases": []}, {"version": "1583", "title": "1583", "aliases": []}, {"version": "1580", "title": "1580", "aliases": []}, {"version": "1577", "title": "1577", "aliases": []}, {"version": "1575", "title": "1575", "aliases": []}, {"version": "1573", "title": "1573", "aliases": []}, {"version": "1572", "title": "1572", "aliases": []}, {"version": "1570", "title": "1570", "aliases": []}, {"version": "1568", "title": "1568", "aliases": []}, {"version": "1567", "title": "1567", "aliases": []}, {"version": "1566", "title": "1566", "aliases": []}, {"version": "1565", "title": "1565", "aliases": []}, {"version": "1564", "title": "1564", "aliases": []}, {"version": "1563", "title": "1563", "aliases": []}, {"version": "1562", "title": "1562", "aliases": []}, {"version": "1560", "title": "1560", "aliases": []}, {"version": "1559", "title": "1559", "aliases": []}, {"version": "1558", "title": "1558", "aliases": []}, {"version": "1556", "title": "1556", "aliases": []}, {"version": "1555", "title": "1555", "aliases": []}, {"version": "1553", "title": "1553", "aliases": []}, {"version": "1552", "title": "1552", "aliases": []}, {"version": "1551", "title": "1551", "aliases": []}, {"version": "1548", "title": "1548", "aliases": []}, {"version": "1547", "title": "1547", "aliases": []}, {"version": "1546", "title": "1546", "aliases": []}, {"version": "1544", "title": "1544", "aliases": []}, {"version": "1543", "title": "1543", "aliases": []}, {"version": "1542", "title": "1542", "aliases": []}, {"version": "1540", "title": "1540", "aliases": []}, {"version": "1538", "title": "1538", "aliases": []}, {"version": "1537", "title": "1537", "aliases": []}, {"version": "1536", "title": "1536", "aliases": []}, {"version": "1535", "title": "1535", "aliases": []}, {"version": "1530", "title": "1530", "aliases": []}, {"version": "1529", "title": "1529", "aliases": []}, {"version": "1528", "title": "1528", "aliases": []}, {"version": "1523", "title": "1523", "aliases": []}, {"version": "1522", "title": "1522", "aliases": []}, {"version": "1519", "title": "1519", "aliases": []}, {"version": "1517", "title": "1517", "aliases": []}, {"version": "1516", "title": "1516", "aliases": []}, {"version": "1514", "title": "1514", "aliases": []}, {"version": "1513", "title": "1513", "aliases": []}, {"version": "1508", "title": "1508", "aliases": []}, {"version": "1507", "title": "1507", "aliases": []}, {"version": "1504", "title": "1504", "aliases": []}, {"version": "1503", "title": "1503", "aliases": []}, {"version": "1501", "title": "1501", "aliases": []}, {"version": "1500", "title": "1500", "aliases": []}, {"version": "1497", "title": "1497", "aliases": []}, {"version": "1496", "title": "1496", "aliases": []}, {"version": "1495", "title": "1495", "aliases": []}, {"version": "1489", "title": "1489", "aliases": []}, {"version": "1486", "title": "1486", "aliases": []}, {"version": "1485", "title": "1485", "aliases": []}, {"version": "1482", "title": "1482", "aliases": []}, {"version": "1481", "title": "1481", "aliases": []}, {"version": "1478", "title": "1478", "aliases": []}, {"version": "1475", "title": "1475", "aliases": []}, {"version": "1474", "title": "1474", "aliases": []}, {"version": "1473", "title": "1473", "aliases": []}, {"version": "1472", "title": "1472", "aliases": []}, {"version": "1471", "title": "1471", "aliases": []}, {"version": "1468", "title": "1468", "aliases": []}, {"version": "1467", "title": "1467", "aliases": []}, {"version": "1466", "title": "1466", "aliases": []}, {"version": "1465", "title": "1465", "aliases": []}, {"version": "1463", "title": "1463", "aliases": []}, {"version": "1462", "title": "1462", "aliases": []}, {"version": "1461", "title": "1461", "aliases": []}, {"version": "1460", "title": "1460", "aliases": []}, {"version": "1459", "title": "1459", "aliases": []}, {"version": "1450", "title": "1450", "aliases": []}, {"version": "1449", "title": "1449", "aliases": []}, {"version": "1448", "title": "1448", "aliases": []}, {"version": "1447", "title": "1447", "aliases": []}, {"version": "1446", "title": "1446", "aliases": []}, {"version": "1445", "title": "1445", "aliases": []}, {"version": "1441", "title": "1441", "aliases": []}, {"version": "1290", "title": "1290", "aliases": []}, {"version": "3.4.1", "title": "3.4.1", "aliases": []}, {"version": "3.4.0", "title": "3.4.0", "aliases": []}, {"version": "3.3.0", "title": "3.3.0", "aliases": []}, {"version": "3.2.0", "title": "3.2.0", "aliases": []}, {"version": "3.1.5", "title": "3.1.5", "aliases": []}, {"version": "3.1.4", "title": "3.1.4", "aliases": []}, {"version": "3.1.3", "title": "3.1.3", "aliases": []}, {"version": "3.1.2", "title": "3.1.2", "aliases": []}, {"version": "3.1.1", "title": "3.1.1", "aliases": []}, {"version": "3.0.0", "title": "3.0.0", "aliases": []}, {"version": "2.49.7", "title": "2.49.7", "aliases": []}, {"version": "2.49.4", "title": "2.49.4", "aliases": []}, {"version": "2.49.3", "title": "2.49.3", "aliases": []}, {"version": "2.49.2", "title": "2.49.2", "aliases": []}, {"version": "2.49.1", "title": "2.49.1", "aliases": []}, {"version": "2.49.0", "title": "2.49.0", "aliases": []}, {"version": "2.48.2", "title": "2.48.2", "aliases": []}, {"version": "2.48.0", "title": "2.48.0", "aliases": []}, {"version": "2.47.0", "title": "2.47.0", "aliases": []}, {"version": "2.45.5", "title": "2.45.5", "aliases": []}, {"version": "2.45.4", "title": "2.45.4", "aliases": []}, {"version": "2.45.3", "title": "2.45.3", "aliases": []}, {"version": "2.45.2", "title": "2.45.2", "aliases": []}, {"version": "2.45.1", "title": "2.45.1", "aliases": []}, {"version": "2.45.0", "title": "2.45.0", "aliases": []}, {"version": "2.44.2", "title": "2.44.2", "aliases": []}, {"version": "2.44.0", "title": "2.44.0", "aliases": []}, {"version": "2.43.2", "title": "2.43.2", "aliases": []}, {"version": "2.42.1", "title": "2.42.1", "aliases": []}, {"version": "2.40.0", "title": "2.40.0", "aliases": []}, {"version": "2.39.0", "title": "2.39.0", "aliases": []}, {"version": "2.37.1", "title": "2.37.1", "aliases": []}, {"version": "2.37.0", "title": "2.37.0", "aliases": []}, {"version": "2.33.0", "title": "2.33.0", "aliases": []}, {"version": "2.32.7", "title": "2.32.7", "aliases": []}, {"version": "2.32.6", "title": "2.32.6", "aliases": []}, {"version": "2.32.5", "title": "2.32.5", "aliases": []}, {"version": "2.32.4", "title": "2.32.4", "aliases": []}, {"version": "2.32.2", "title": "2.32.2", "aliases": []}, {"version": "2.32.0", "title": "2.32.0", "aliases": []}, {"version": "2.31.2", "title": "2.31.2", "aliases": []}, {"version": "2.30.1", "title": "2.30.1", "aliases": []}, {"version": "2.30.0", "title": "2.30.0", "aliases": []}, {"version": "2.29.0", "title": "2.29.0", "aliases": []}, {"version": "2.28.4", "title": "2.28.4", "aliases": []}, {"version": "2.28.3", "title": "2.28.3", "aliases": []}, {"version": "2.28.2", "title": "2.28.2", "aliases": []}, {"version": "2.28.1", "title": "2.28.1", "aliases": []}, {"version": "2.26.5", "title": "2.26.5", "aliases": []}, {"version": "2.26.2", "title": "2.26.2", "aliases": []}, {"version": "2.26.1", "title": "2.26.1", "aliases": []}, {"version": "2.26.0", "title": "2.26.0", "aliases": []}, {"version": "2.23.0", "title": "2.23.0", "aliases": []}, {"version": "2.21.1", "title": "2.21.1", "aliases": []}, {"version": "2.21.0", "title": "2.21.0", "aliases": []}, {"version": "2.19.4", "title": "2.19.4", "aliases": []}, {"version": "2.19.1", "title": "2.19.1", "aliases": []}, {"version": "2.18.1", "title": "2.18.1", "aliases": []}, {"version": "2.17.0", "title": "2.17.0", "aliases": []}, {"version": "2.16.0", "title": "2.16.0", "aliases": []}, {"version": "2.12.1", "title": "2.12.1", "aliases": []}, {"version": "2.12.0", "title": "2.12.0", "aliases": []}, {"version": "2.9.1", "title": "2.9.1", "aliases": []}, {"version": "2.9.0", "title": "2.9.0", "aliases": []}, {"version": "2.8.1", "title": "2.8.1", "aliases": []}, {"version": "2.7.1", "title": "2.7.1", "aliases": []}, {"version": "2.7.0", "title": "2.7.0", "aliases": []}, {"version": "2.6.1", "title": "2.6.1", "aliases": []}, {"version": "2.2.2", "title": "2.2.2", "aliases": []}, {"version": "2.2.1", "title": "2.2.1", "aliases": []}, {"version": "2.1.0", "title": "2.1.0", "aliases": []}, {"version": "1.110.1", "title": "1.110.1", "aliases": []}, {"version": "1.110.0", "title": "1.110.0", "aliases": []}, {"version": "1.109.0", "title": "1.109.0", "aliases": []}, {"version": "1.105.0", "title": "1.105.0", "aliases": []}, {"version": "1.103.0", "title": "1.103.0", "aliases": []}, {"version": "1.100.5", "title": "1.100.5", "aliases": []}, {"version": "1.99.0", "title": "1.99.0", "aliases": []}, {"version": "1.98.0", "title": "1.98.0", "aliases": []}, {"version": "1.96.4", "title": "1.96.4", "aliases": []}, {"version": "1.96.3", "title": "1.96.3", "aliases": []}, {"version": "1.91.18", "title": "1.91.18", "aliases": []}, {"version": "1.91.12", "title": "1.91.12", "aliases": []}, {"version": "1.91.5", "title": "1.91.5", "aliases": []}, {"version": "1.91.1", "title": "1.91.1", "aliases": []}, {"version": "1.90.1", "title": "1.90.1", "aliases": []}, {"version": "1.87.0", "title": "1.87.0", "aliases": []}, {"version": "releases", "title": "releases", "aliases": []}, {"version": "next-major", "title": "next-major", "aliases": []}, {"version": "main", "title": "main", "aliases": ["latest"]}, {"version": "develop", "title": "develop", "aliases": []}] \ No newline at end of file

    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

    >z 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 WlTKNLpH!ovUMdQjurjE5;Qs(lPLwPF literal 0 HcmV?d00001 diff --git a/3.4.1/resources/images/ws_conv.png b/3.4.1/resources/images/ws_conv.png new file mode 100644 index 0000000000000000000000000000000000000000..cee3fb8f0843125c195ef55292198ccbb6a2394e GIT binary patch literal 1161392 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

  • +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